Cómo escribir algoritmos? Por: Iván Cruz Aceves Algoritmos En tu rutina diaria realizas una gran diversidad de tareas, por ejemplo, bañarte, vestirte, desayunar, ir al trabajo o a la escuela, ir a comer, hasta las actividades que permiten te distraigas como ir al cine, Qué sucede cuando realizas estas acciones?, pasa algo en especial? Pese a que no lo veas o escribas, estas utilizando algoritmos de una manera inconsciente. Aunque no estés familiarizado con este término, lo has aplicado. En cuanto a una definición formal, se puede decir que un algoritmo es una secuencia de pasos lógicos que permiten obtener un resultado, resolver un problema o realizar una asignación. Entre las definiciones que existen de Algoritmo se pueden encontrar las siguientes: Un conjunto de pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema (Cairó, 2006, p. 2). Una serie ordenada de pasos precisos que produce un resultado y termina en un tiempo finito (Forouzan, 2003, p. 142). Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema (Real Academia Española, s.f., párr. 1). Como se menciona en su definición y se muestra en la Figura 1, un algoritmo es una secuencia de pasos lógicos que permitirán al usuario resolver un problema u obtener un resultado, para ello requiere de datos de entrada, procedimiento (pasos a seguir del algoritmo) y una salida. 1
Figura 1. Algoritmo. 2
Observemos el siguiente ejemplo. Fernando iba conduciendo cuando se le ponchó una llanta, por lo que se ha orillado para poder cambiarla; sin embargo, no tiene mucho conocimiento sobre cómo hacerlo y le marca a Juan, un amigo que tiene conocimientos sobre mecánica. Lo primero que le dice Juan es que revise si trae la herramienta necesaria que es Llave de cruz. Gato. Llave o dado, correspondiente al birlo de seguridad (en caso de tenerlo). Llanta de refacción. Ya que han verificado la herramienta, Juan inicia a darle las instrucciones a Fernando. 1. Estaciona el automóvil lejos del tráfico, aunque la llanta esté ponchada puedes moverlo. 2. Antes de bajar, pon el freno de mano y deja el automóvil con velocidad, si es manual puedes dejarlo en 1ª., si es automático puedes ponerlo en P (parking). 3. Afloja los tornillos de la llanta ponchada con la llave inglesa. 4. Ubica el gato mecánico en su sitio. 5. Levanta el gato hasta que la llanta ponchada gire libremente. 6. Quita los tornillos y la llanta ponchada. 7. Pon la llanta de repuesto y los tornillos. 8. Baja el gato hasta que se pueda quitar. 9. Saca el gato del sitio en el que lo pusiste. 10. Aprieta los tornillos con la llave inglesa. Fernando anota las instrucciones que le ha dado Juan y exitosamente cambia la llanta del automóvil. Analizando este ejemplo cuál es la entrada?, cuál es el procedimiento? y cuál es la salida? Se puede observar que la entrada es la herramienta necesaria para cambiar la llanta, pues sin ella Fernando no puede hacer esta acción. Ya que se cuenta con la herramienta sigue el procedimiento, que son la serie de pasos (instrucciones) que ha dado Fernando. Esta serie de pasos es el algoritmo. Si Fernando no sigue esas instrucciones, seguramente va a lastimarse o no va a poder cambiar la llanta. 3 Finalmente, la salida es el resultado, que en esta situación
Como puedes observar Juan ha realizado a Fernando un algoritmo y Fernando ha aplicado ese mismo para lograr el objetivo de cambiar la llanta. Esto mismo sucede en tu vida diaria. Aplicas algoritmos al bañarte, al comer, al ir al cine o al trabajar. Todas estas actividades te van a brindar un resultado. Además, es importante mencionar que los algoritmos pueden ser muy sencillos o complejos, ello dependerá en gran parte del procedimiento o actividad que vas a realizar. Características de un algoritmo Característica Nombre Inicio Ordenado Preciso Resultado Finito Definición Se le debe asignar un nombre que describa lo que hará el algoritmo, los nombres de los algoritmos se escriben generalmente en minúsculas, sin acentos, sin espacios y sin caracteres. Especifica el comienzo de un algoritmo. La serie de instrucciones o pasos debe ser una secuencia ordenada y definida. La serie de instrucciones o pasos debe definirse claramente. Siempre se debe arrojar un resultado. El algoritmo siempre debe terminar, en caso de que sea infinito no puede ser un algoritmo. Figura 2. Características de un algoritmo (Cairó, 2006, p. 4; Forouzan, 2003, p. 150). Debido a que el uso de algoritmos es un elemento indispensable para la programación, es necesario que al momento de desarrollarlos se haga de una manera más formal, por ello se han desarrollado y mencionado las características que debe tener un algoritmo. En consideración a lo anterior, es importante revisar los siguientes ejemplos Ejemplo 1. Algoritmo para sumar dos números. sumadosnumeros Inicia algoritmo. Entrada: número 1, número 2. 1. Suma número 1 y número 2. 2. Devuelve el resultado del paso 1. 4
Ejemplo 2. Algoritmo para multiplicar dos números multiplicadosnumeros Inicia algoritmo. Entrada: número 1, número 2. 1. Multiplica número 1 y número 2. 2. Devuelve el resultado del paso 1. Ejemplo 3. Algoritmo para calcular la superficie de un triángulo. superficietriangulo Inicia algoritmo. Entrada: base del triángulo, altura del triángulo. 1. Multiplicar base por altura. 2. Divide el resultado del paso 1 entre 2. 3. Devuelve el resultado del paso 2. Estructuras de control Como se ha mencionado, un algoritmo es una secuencia de pasos; sin embargo, para poder desarrollarlos de manera estructurada y lógica es necesario utilizar estructuras de control. El uso y combinación de las estructuras permitirán conformar el algoritmo, además de hacerlo más sencillo de comprender, modificar o depurar. Forouzan (2003) menciona las siguientes estructuras de control básicas: secuencia, decisión (selección) y repetición (p. 145). Estructura secuencial La estructura secuencia, llamada también secuencial, es una serie de instrucciones simples que llevan una sucesión. Estas instrucciones se encuentran en algoritmos y programas. 5
Figura 3. Estructura secuencial (Cairó, 2006, p. 4; Forouzan, 2003, p. 147). La estructura secuencial se encuentra en todos los algoritmos, por ejemplo: Se desea crear un algoritmo que determine el área y volumen de un cilindro, considerando que el radio y la altura la asignará el usuario. areavolumencilindro Inicia algoritmo Entrada: radio del cilindro, altura del cilindro. 1. Multiplicar por r2 por altura. 2. Multiplicar 2 por por radio por altura. 3. Devuelve el resultado del paso 1 y del paso 2. Como se puede observar, los pasos que se siguen en el algoritmo van en secuencia: paso 1, paso 2 y paso 3; por ello, se puede decir que esta estructura es secuencial. Además, es importante mencionar que todos los algoritmos contienen una estructura secuencial. La estructura secuencial se puede combinar con otras estructuras. Estructura de decisión La estructura de decisión, llamada también de selección, primeramente plantea una condición, si la condición es verdadera, entonces se sigue un conjunto de instrucciones; si la condición es falsa, entonces se sigue otro conjunto de instrucciones, tal y como se muestra en la figura 4. Estructura de decisión. 6
Figura 4. Estructura de una decisión (Cairó, 2006, p. 5; Forouzan, 2003, p. 147). Cabe mencionar que esta estructura puede combinarse con otras estructuras, como la estructura secuencial y la de repetición. A continuación, revisa el siguiente ejemplo en el que se muestra la forma en que funciona esta estructura. Se desea crear un algoritmo que por medio de una calificación numérica diga si el alumno ha aprobado/reprobado el curso. aprobadoreprobado Inicia algoritmo. Entrada: Un número. 1. Si (el número es mayor o igual que 70). entonces 1.1. Establece la calificación en aprobado si no 1.2. Establece la calificación en reprobado Termina la condición. 2. Devuelve la calificación. Este ejemplo es un algoritmo que nos dice que pasa si se cumple o no una condición; sin embargo, es importante mencionar que cuando se utiliza la estructura de decisión se hace en la siguiente notación If (condición es cierta). Then Conjunto de instrucciones Else 7
Conjunto de instrucciones. End if. Estructura de repetición La estructura de repetición, plantea inicialmente una condición, si esa condición se cumple entonces se realizará una serie de instrucciones, las cuales se repetirán siempre que la condición inicial se siga cumpliendo. En caso de que la condición ya no se cumpla, se saldrá de ese ciclo. Para comprender mejor el funcionamiento de esta estructura, observa la Figura 5. Estructura de una repetición, en ella se muestra de forma gráfica el funcionamiento de esta estructura. Figura 5. Estructura de una repetición (Forouzan, 2003, p. 147). Cabe mencionar que esta estructura puede combinarse con otras estructuras, como la estructura secuencial y la de decisión. A continuación, revisa el siguiente ejemplo en el que se muestra la forma en que funciona esta estructura. Se desea crear un algoritmo que sume una serie de números hasta que el producto de la suma sea mayor a 100. sumanumeros Inicia algoritmo. Entrada: Una lista de números. 8
1. Mientras (el resultado de la suma sea menor que 100). 1.1. Sumar el Resultado de la suma más el siguiente número. Termina la condición. 2. Devuelve el resultado de la suma. Este ejemplo es un algoritmo que nos dice que pasa mientras se cumpla una condición. En este caso, lo que hace es que si el resultado de la suma es menor a 100 sigue sumando números. En caso contrario, termina la condición y se devuelve el resultado de la suma. Es importante mencionar que cuando se utiliza la estructura de decisión se hace en la siguiente notación. while (condición es cierta). Conjunto de instrucciones. End while. Estructuras anidadas Estás estructuras, más que una serie de instrucciones o condiciones, en lo que consiste es en la combinación de las estructuras secuencial, de decisión y repetición, es decir, se puede utilizar la combinación de una estructura de decisión con una secuencial o una estructura de repetición con una secuencial y viceversa. En la figura 6. Estructuras anidadas, se muestra la forma en que se realiza la anidación de estructuras: Figura 6. Estructuras anidadas (Diagrama basado en las propuestas de Cairó, 2006, p. 4; y de Forouzan, 2003, p. 147). El uso de algoritmos es indispensable para realizar un programa, ya que sin ellos no podrían realizarse. 9
Además, es necesario estructurarlos de tal manera que nos permitan ir interactuando con la computadora. Es recomendable que en primera instancia sean realizados en papel, ello con la finalidad de comprender y desarrollar una estructura lógica, que permita resolver el problema o situación, a continuación se prueba el algoritmo por medio de una representación gráfica llamada diagramas de flujo. En el diagrama de flujo se va a observar (probar) el funcionamiento del algoritmo. En caso de que exista una falla, el algoritmo se puede modificar o perfeccionar las veces que sea necesario. Después de ello se escribe el algoritmo en pseudocódigo. Referencias Real Academia Española. [RAE]. (s.f.). Algoritmo. En Diccionario de la lengua española (22ª. ed.). [Versión en línea]. Recuperado 02 de octubre de 2012, de http://lema.rae.es/drae/?val=algoritmo Cairó, O. (2006). Fundamentos de programación. Piensa en C. México: Pearson Educación. [Versión en línea]. Recuperado el 02 de agosto de 2010, de la base de datos de Bibliotechnia de la Biblioteca Digital UVEG. Forouzan, Behrouz A. (2003). Introducción a la ciencia de la computación, de la manipulación de datos a la teoría de la computación. (L. Peralta, Trad.). México: Thomson Learning.