ALGORITMOS
Luis Alfredo Gómez Flores[a]
Resumen
Con el objetivo de facilitar el proceso de aprendizaje que permite desarrollar las habilidades lógico – matemáticas el presente ensayo reúne los elementos necesarios para entender el análisis y solución de diversos problemas desde su enfoque matemático haciendo uso de una metodología básica, conceptos básicos e importantes como asignaciones, constantes, variables y formatos propuestos para resolver problemas haciendo uso de algoritmos mediante las herramientas de desarrollo de como lo son los diagramas de flujo y pseudocódigo.
De igual manera se distinguen las etapas del proceso informático, así como los distintos tipos de algoritmos
Palabras clave: Algoritmo, identificador, verificación, operadores, expresiones, variable, constante, estructura secuencial, decisión, repetitiva, diagrama de flujo y pseudocódigo
Abstract
With object to facility the process of learning and allows to develop skills logic mathematic. The present test together elements necessary to understand the analysis and solution of various problems. From his mathematical approach to using a methodology basic, basic concepts and importants, as assingments, constant, variables, and formats proposed for answer problems, using of algorithm through tools of development of diagram of issue and pseudocodigo.
Similary distinguish stage of information process, issue different types of algorithm.
Keywords: Algorithm, Identifier, verification, operators, expressions, variable, constant, sequential structure, decision, repetitive, flowchart and pseudocode.
Introducción
“Todo el mundo en este país debería aprender a programar en un ordenador… porque te enseña a pensar.” Steve Jobs.
Frase que hace pensar que cualquier persona es capaz de todo, siempre que sepa pensar, a un nivel más abstracto todo el mundo debería saber cómo resolver problemas mediante un algoritmo.
Los seres humanos somos entes pensantes y con capacidades únicas en cada uno de nosotros, capacidades que como sociedad hemos agrupado en diversas ramas del conocimiento con la finalidad de transformar nuestra habilidad en una herramienta para alcanzar metas en nuestro entorno.
Según Gardner todos los seres humanos tenemos un tipo de inteligencia y un método de aprendizaje distinto, entre ellas, destaca la habilidad lógico-matemática, inteligencia considerada como la inteligencia en bruto, es aquella que como su nombre indica es la que vincula a la habilidad ante el razonamiento lógico y la resolución de problemas matemáticos.
Mediante un test de inteligencias múltiples, desarrollado por Gardner, se puede medir el nivel desarrollado de cada inteligencia y el resultado indica que habilidades se tienen más desarrolladas, sin embargo no indica que las habilidades o inteligencias no se pueden desarrollar.
Al explotar cada una de las inteligencias se vuelven en habilidades, por ejemplo un artista que tiene en el la inteligencia musical, en base a ensayos y a un estudio del arte musical logra convertir la inteligencia en una habilidad para apreciar y criticar música, es decir al explotar su inteligencia obtiene una habilidad.
Tener una inteligencia distinta no indica que no pueda desarrollarse una habilidad en otro campo, indica que costará más trabajo obtener la habilidad.
Objetivos
Desarrollar la inteligencia lógico-matemática en realidad no es una tarea difícil, es una tarea que requiere de retar al cerebro a pensar, de encontrar diversos caminos para resolver un problema y principalmente de elegir el indicado.
El presente ensayo reúne definiciones, metodología básica y ejercicios para la resolución de problemas mediante algoritmos.
Algoritmos
Definición
La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.
Un algoritmo es una serie de pasos organizados, que describe el proceso que se debe seguir, para dar solución a un problema específico. (Fadul, 2004).
Como tal pensar en un algoritmo, es pensar la forma en la que podemos resolver un problema paso a paso, si no se resuelve un paso del problema no se puede pasar al siguiente.
Características
Los algoritmos se caracterizan principalmente porque son:
- Precisos: La palabra preciso indica que se distingue con claridad, de igual manera un algoritmo es claro en cada uno de sus pasos.
- Definido: El algoritmo está delimitado, solo procesa la información y las operaciones que tiene, no realiza operaciones “fantasma”, si se realiza el algoritmo dos o más veces con los mismo datos siempre dará el mismo resultado.
- Finito: Refiriéndose esta característica a que un algoritmo siempre va a tener un fin, .
- mediante esta característica el algoritmo se culmina la estructura de un algoritmo.
Estructura
Los algoritmos son pilares en la informática así como del desarrollo de sistemas, por lo cual la siguiente estructura no es solo de los algoritmos, es como tal la estructura del tratamiento automático de la información también conocido como procesamiento de datos.
-
1. Entrada: En los procesos informáticos, la entrada representa todos los datos que necesita el algoritmo para ser procesados, es la alimentación necesaria para que se puedan procesar los datos, pueden ser datos que introduzca el usuario del algoritmo o bien que se obtengan de alguna otra fuente.
-
2. Proceso: Formalmente un proceso es "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados". (Stallings), es decir, un proceso es la ejecución paso a paso de las instrucciones, cabe mencionar que un proceso consiste en un conjunto de pasos y nunca un paso puede saltarse otro.
-
3. Salida: Son los resultados que se desean obtener en la ejecución del algoritmo, cabe mencionar que aquí debe obtenerse la o las respuestas que resuelvan la problemática planteada para resolver mediante el algoritmo.
Metodología para la descomposición de un algoritmo
Una metodología es un conjunto de métodos utilizados para la investigación científica, en este paradigma, la metodología es la que permite diseñar los algoritmos que servirán para resolver los problemas específicos.
-
1. Definición del problema: Citando a Einstein, “si tuviera una hora para salvar el mundo, se iba a gastar cincuenta y cinco minutos definiendo el problema, y sólo cinco minutos para encontrar la solución”, invertir tiempo en la definición del problema nos ayuda a no gastar tiempo replanteando el algoritmo. Este paso de la metodología debemos plantearnos la pregunta ¿Cuál es el problema en concreto?, visualizar la delimitación del problema, ¿Hasta dónde abarcará la solución del problema? y si es posible resolver el algoritmo o no, se sugiere documentar todo en un formato similar al siguiente
Tabla 1 Definición del Problema
Nombre del Problema |
Delimitación |
Resultado deseado |
- 2. Análisis: Una vez identificado y delimitado el problema, esta fase tiene el objetivo de dividir el problema en sus componentes y examinar de qué manera pueden unirse, en esta fase se deben contestar las siguientes preguntas:
- a. ¿Qué se necesita para resolver el problema?
- b. ¿Qué pasos son necesarios para resolver el problema?
- c. ¿Qué se debe obtener para resolver el problema?
Una vez resueltas estas preguntas, es muy útil escribirlas en papel o en un medio electrónico con la finalidad de consultarlas cuando en las siguientes fases de la metodología, se sugiere la siguiente tabla:
Tabla 2 Análisis del Problema
Datos de entrada
(¿Qué necesito para resolver el problema)
|
Proceso
(¿Qué pasos son necesarios para resolver el problema?)
|
Salida
(¿Qué se obtiene al resolver el problema)
|
- 3. Diseño: El eminente matemático Donald E. Knuth, expresa en su famosa obra: El arte de programar computadoras, lo siguiente: "El proceso de preparar programas para una computadora digital tiene un atractivo especial, no sólo porque puede ser recompensado económica y científicamente, sino también porque puede ser una experiencia estética como la poesía y la música." Haciendo uso de alternativas de solución como lo son diagramas de flujo y pseudocódigo se indican los pasos que deberá seguir el algoritmo para obtener la solución del problema.
- 4. Verificación: Definido como la acción de comprobar o examinar la verdad de algo, aplicado al tema actual, es la fase que nos permite saber si el algoritmo cumplió o no su objetivo, para realizar la comprobación se le dan variables de entrada al algoritmo y se observan los resultados que arroja, por otra parte y haciendo uso de papel y lápiz se realiza una prueba de escritorio que consiste en realizar las operaciones que el algoritmo debe realizar y se comprueban los resultados obtenidos del algoritmo contra los resultados obtenidos en la prueba de escritorio, en caso de que ambos coincidan, se concluye que el algoritmo funciona para resolver el problema planteado, en caso contrario se debe volver a la fase de definición del problema para buscar el error. Para esta fase se sugiere el siguiente formato:
Tabla 3 Verificación
Variables de entrada |
Operaciones Realizadas |
Resultado Obtenido |
|
|
|
Y responder la pregunta: ¿El resultado de la prueba de escritorio es el mismo que el arrojado por el algoritmo?, en caso de que la respuesta sea positiva, tendremos un algoritmo funcional.
Análisis del Problema
Como se mencionó anteriormente, esta fase tiene la finalidad de dividir el problema en sus componentes y examinar de qué manera pueden unirse, los componentes principales son:
- a. Identificadores: Al igual que en algebra, los algoritmos funcionan mediante valores que pueden ser introducidos por los usuarios o valores que pueden contener los procesos, esos valores deben ser nombrados de alguna manera con la finalidad de poder identificados y usarlos, en pocas palabras es el nombre que se la da a las variables y constantes que se usan en el algoritmo.
- b. Tipos de datos: Dicho mexicano dice, ”Hasta en los perros hay razas” de igual manera en la informática hasta en los valores (variables y constantes) hay tipos, a diferencia de la rama canina, la raza en este caso son tipos y los tipos de datos más comunes son:
- a. Numéricos: Son aquellos valores que solo pueden contener números, ya sean enteros, fraccionarios, positivos, negativos, reales o imaginarios con la finalidad de realizar operaciones aritméticas comunes.
- b. Alfanumericos: Es una secuencia de caracteres que pueden ser números, letras o signos, estos pueden ser nombres, direcciones y en comparación con los numéricos, no se pueden realizar operaciones aritméticas con estos.
- c. Lógicos: Son aquellos que solo pueden tener un valor, cierto o falso, ya que representan el resultado de una comparación de valores.
- c. Variables: Son valores que van cambiando durante la ejecución de los procesos del algoritmo, en estas variables se van a guardar las operaciones que el algoritmo realice para resolver el problema. Cada variable tiene un identificador, pues es el nombre con el que se encuentra y un tipo de dato, que indica que datos podrá guardar que pueden ser números, letras o valores cierto o falso.
- d. Constantes: Son datos que su valor no va a cambiar durante todo el desarrollo del algoritmo, las constantes pueden tener o no un identificador, pues estos valores pueden escribirse directamente al usar las operaciones o bien asignarle un identificador, las constantes también tienen un tipo de dato.
- e. Operadores y expresiones: Son símbolos que tienen una función predefinida (suma, resta, multiplicación etc.) y que recibe sus argumentos de manera infija (luzumisu, s.f.), los operadores más utilizados son:
- a. Aritméticos: Son los operadores que permiten realizar operaciones aritméticas y se enlistan en la siguiente tabla:
Operador |
Acción |
Ejemplo |
+ |
Suma |
X = 5 + 4 | x= 9 |
- |
Resta |
X = 10 – 3 | x=7 |
* |
Multiplicación |
X = 3 * 2 | x = 6 |
/ |
División |
X = 10 / 2 | x = 5 |
% |
División Modular |
X = 1 / 3 | x = .66 |
++ |
Incremento |
X = 1; X++ | x = 2 |
-- |
Decremento |
X = 1; X-- | x = 0 |
^ |
Potencia |
X = 2 ^ 3 | x = 8 |
Ilustración 1 Tabla de Operadores Aritméticos
- b. Relacionales: Estos operadores permiten evaluar la relación entre un par de operando (constantes o variables) y permiten devolver valores de cierto o falso.
Operador |
Acción |
> |
Mayor que |
>= |
Mayor o igual que |
< |
Menor que |
<= |
Menor o igual que |
== |
Igual / idéntico |
¡= |
Diferente / distinto |
Ilustración 2 Tabla de Operadores relacionales
- c. Lógicos: Son operadores que permiten conectar un par de propiedades, es decir, nos permiten obtener una respuesta lógica de la comparación de dos operaciones.
Operador |
Acción |
&& |
Conjunción, and, Y |
|| |
Disyunción, or, O |
! |
Negación, no |
Ilustración 3 Tabla de Operadores Lógicos
- i. Los operadores lógicos tienen un conjunto de reglas llamadas tablas de verdad, las cuales permiten obtener el valor lógico a partir de dos operaciones a continuación se muestran las tablas de verdad de AND, OR Y NOT
Operador |
Operador 2 |
Resultado |
T |
T |
T |
T |
F |
F |
F |
T |
F |
F |
F |
F |
Ilustración 4 Tabla de verdad de AND
Operador |
Operador 2 |
Resultado |
T |
T |
T |
T |
F |
T |
F |
T |
T |
F |
F |
F |
Ilustración 5 Tabla de verdad de OR
Operador |
Resultado |
T |
F |
F |
T |
Ilustración 6 Tabla de verdad de NOT
-
Las T significan “True” por su significado en ingles de Verdadero y F por “False” tomando el valor de falso.
Para poner más en contexto las operaciones lógicas, se muestra un ejemplo
(10 + 20) > (5 * 3) AND (10 -1) = 9 |
30 > 15 AND 9 = 9 |
T AND T |
True |
Ilustración 7 Ejemplo del uso de tablas de verdad
- d. Jerarquía de Operadores: Para realizar operaciones como la anterior, se debe seguir un orden para la realización de operaciones:
- Operadores Matemáticos
- Paréntesis
- Potencias y Raíces
- Multiplicaciones y Divisiones
- Sumas y restas
- Operadores Relacionales
- <,>,<=,>=,==,!=
- Operadores Lógicos
- Not
- AND , OR
|
Ilustración 8 Jerarquía de Operadores
Primero se realizan las operaciones que se encuentran ente paréntesis, si hay más de una operación dentro de un paréntesis de aplica el mismo criterio para realizar las operaciones en el orden indicado, posteriormente las potencias y raíces, multiplicaciones y divisiones, sumas y restas en ese orden, si un operador se encuentra dos veces, se realiza la operación que se encuentre primero de izquierda a derecha, posteriormente y también de izquierda a derecha se aplican los operadores relacionales y por último los operadores lógicos.
Diseño de Algoritmo (alternativas de solución)
Mediante las herramientas de diseño de algoritmos se pueden desarrollar los mismos, las alternativas de diseño de algoritmos son principalmente dos:
- Diagrama de flujo
- Representan de forma visual el flujo de los datos a través del tratamiento de información. Los diagramas de flujo describen que operaciones y en que secuencia se requieren para solucionar un problema dado
- Los diagramas de flujo se dibujan generalmente usando algunos símbolos estándares. Algunos símbolos estándares, que se requieren con frecuencia para diagramar programas de computadora se muestras a continuación
Ilustración 9 Elementos de un diagrama de flujo
- Reglas para la creación de Diagramas
- Los Diagramas de flujo deben escribirse de arriba hacia abajo, y/o de izquierda a derecha.
- Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica la dirección que fluye la información procesos, se deben de utilizar solamente líneas de flujo horizontal o verticales (nunca diagonales).
- Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del diagrama a un sitio distinto, se pudiera realizar utilizando los conectores. Se debe tener en cuenta que solo se van a utilizar conectores cuando sea estrictamente necesario.
- No deben quedar líneas de flujo sin conectar
- Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras.
- Todos los símbolos pueden tener más de una línea de entrada, a excepción del símbolo final.
- Solo los símbolos de decisión pueden y deben tener más de una línea de flujo de salida (unam.mx, s.f.).
- Pseudocódigo
- Es una técnica que sirve para escribir programas de computadora en lenguaje natural de tal manera que se facilite la comprensión, prueba y posterior codificación en un lenguaje de programación específico
- Ventajas de utilizar un Pseudocódigo a un Diagrama de Flujo
- Ocupa menos espacio en una hoja de papel.
- Permite representar en forma fácil operaciones repetitivas complejas.
- Es muy fácil pasar de pseudocódigo a un programa en algún lenguaje de programación.
- Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación.
- Prueba de escritorio: Todo algoritmo debe ser probado antes de ser ejecutado para tener la certeza de que lograremos el objetivo. La forma de probarlo es siguiente cada uno de los pasos que indica el algoritmo. A esto le llamaremos prueba de escritorio. En la prueba de escritorio, un algoritmo bien hecho siempre debe funcionar
- Al poner en marcha los pasos del algoritmo para determinar si logrará o no el objetivo, tal vez se tengan que hacer algunas modificaciones hasta logar el objetivo esperado. El algoritmo debe ser lo suficientemente detallado para que no exista duda alguna al ejecutarse. (Chehaibar, 2007).
Algoritmos secuenciales
En este tipo de estructura las instrucciones se realizan o se ejecutan una después de la otra y, por lo general, se espera que se proporcione uno o varios datos, los cuales son asignados a variables para que con ellos se produzcan los resultados que representen la solución del problema que se planteó.
Los algoritmos tienen como fin actuar sobre los datos proporcionados por el usuario, a los que se les aplican procesos con el fin de generar la información o un resultado (Delgado).
Actividad de retroalimentación
Se requiere de un algoritmo que calcule el sueldo semanal o mensual de un trabajador de construcción, al empleado le pagan $50 pesos la hora y cada día trabaja durante 8 horas.
Fase 1 Definición del Problema
Tabla 1 Definición del Problema
Nombre del Problema |
Sueldo de un trabajador |
Delimitación |
Obtener el sueldo semanal o mensual a partir del pago por horas y el número de horas trabajadas |
Resultado deseado |
Sueldo semanal del trabajador |
Fase 2 Análisis del Problema
Datos de entrada (¿Qué necesito para resolver el problema) |
Proceso (¿Qué pasos son necesarios para resolver el problema?) |
Salida (¿Qué se obtiene al resolver el problema) |
- Pago por hora
- Número de horas trabajadas en un día
- Número de días trabajados
|
Sueldo = (Pago por hora*Número de horas trabajadas en un día)*Número de días trabajados |
Sueldo Semanal |
Fase 3 Diseño del Algoritmo
Fase 4 Verificación
Variables de entrada |
Operaciones Realizadas |
Resultado Obtenido |
NumDiasTrab=7 |
Sueldo = (50*8)*7 |
2800 |
Conclusiones
El diseño de algoritmos es realmente un arte que ayuda al desarrollo de la inteligencia lógico matemática, el hecho de resolver problemas no solo de índole lógico matemática permite aclarar el panorama y elegir la mejor opción para resolver la problemática.
Las definiciones y metodología aquí mostrada, así como conceptos permiten entender todos los elementos de un algoritmo y que de esta forma se puedan diseñar los propios para resolver prácticamente cualquier problemática bien planteada.
Bibliografía
Chehaibar, C. Z. (2007). Fundamentos y prácticas de programacióin. Educaré.
Delgado, F. J. (s.f.). ALGORITMOS RESUELTOS CON DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO. Aguascalientes: UAA.
Fadul, A. O. (2004). Diseño Estructurado de Algoritmos. Colombia: Sincelejo.
luzumisu. (s.f.). luzumisu. Obtenido de luzumisu: http://luzumisu.over-blog.com/article-28322968.html
Stallings. (s.f.). Stalling. 5º edición.
unam.mx. (s.f.). UNAM. Obtenido de http://depa.fquim.unam.mx/amyd/archivero/Diagramasdeflujo_16845.pdf
[a] Profesor de Investigación de la Escuela Preparatoria Número 4
Compartir en: