Codificación aprenderaprogramar.com: CU00123A
ALGORITMOS, PSEUDOCÓDIGO Y DIAGRAMAS DE FLUJO: UNA INTRODUCCIÓN
El término algoritmo parece derivar del nombre de un matemático árabe llamado Mohamed ibn Musa al – Khuwarizmi, que vivió en Bagdad alrededor del año 830 de nuestra era, y que escribió un libro que contenía un sistema de numeración decimal y reglas de cálculo. Dicho libro sería utilizado con posterioridad impulsando la sustitución del uso del ábaco.
Modernamente, se ha usado el término algoritmo en referencia a cualquier procedimiento sistemático de cálculo, que da lugar a un resultado después de seguirse una serie de instrucciones precisas.
En el campo de la informática y la programación, se ha adoptado el término para describir cualquier serie de instrucciones precisas que dan lugar a un resultado. La relación con las matemáticas sigue siendo estrecha, aunque ha ganado peso la concepción como serie de instrucciones precisas, que no necesariamente implican cálculo. Así, podríamos hacernos una primera idea de qué es un algoritmo pensando en las instrucciones para montar un mueble desarmado, o en la preparación de un plato a partir de una receta de cocina. Veamos lo que sería un algoritmo para freír un huevo:
1. Inicio. 2. Poner a calentar aceite en una sartén. 3. Cuando el aceite humee ligeramente, romper el huevo y verterlo en el aceite. 4. Esperar que se solidifique el huevo. 5. Retirar el huevo del aceite, dejar que escurra y ponerlo en un plato. Apagar el fuego. 6. Fin. |
Hemos construido el algoritmo con algunas características como:
-
Se indica un inicio y un fin. No es estrictamente necesario, pero si tenemos muchos algoritmos, uno detrás de otro, nos servirá de ayuda para identificarlos.
-
Se ha subdividido el proceso en pasos. De momento, qué abarca el paso es criterio del autor del algoritmo.
-
Se numeran los pasos. Tampoco es estrictamente necesario, pero nos será útil al menos hasta que nos acostumbremos a escribir y leer algoritmos sin numeración.
-
Se ha tratado de precisar todos y cada uno de los pasos, definiendo lo mejor posible cada uno de ellos.
EJERCICIO
Realizar un algoritmo para cruzar una calle.
SOLUCIÓN
1. Inicio.
2. Buscar un paso de peatones.
3. Mirar a la derecha y comprobar que no vienen coches.
4. Mirar a la izquierda y comprobar que no vienen coches.
5. Comprobar que no hay obstáculos ni huecos para llegar al extremo opuesto.
6. Si hay un semáforo y está en rojo volver al punto 3.
7. Cruzar.
8. Fin.
En relación con este caso destacaremos lo siguiente:
· Obtener el algoritmo ha sido un proceso creativo: dos personas pueden pensar en distintas formas de cruzar una calle, en distintas formas de organizar los pasos o en distintas posibilidades (por ejemplo, que haya un guardia regulando el tráfico o que no haya paso de peatones). Para programar nos apoyaremos en la creación previa de algoritmos. Por tanto, programar implica creatividad.
· Se busca la economía: que las instrucciones sean las mínimas posibles, que haya el menor número de repeticiones. “Lo sencillo es bello”.
· Se busca la eficiencia: obtener el resultado deseado empleando poco tiempo y pocos recursos y estando preparados para resolver situaciones imprevistas.
· Pueden realizarse “saltos” entre los distintos pasos, pero el orden es supremo y nunca se pierde. Ramificaciones y saltos nunca obedecen al azar: siguen un orden. Un camino siempre se puede repetir si las condiciones iniciales son las mismas.
La idea de algoritmo está profundamente imbricada con la idea de programa informático. A veces diríamos que se confunden. Las normas aplicables a los algoritmos son normas aplicables a los programas.
Aprender a desarrollar algoritmos eficientes es aprender a programar
|
Volvamos sobre los conceptos de economía y eficiencia a través de un ejemplo. Trataremos de desarrollar un algoritmo para poner platos y cubiertos en una mesa de tres comensales.
Algoritmo “Poner mesa aprenderaprogramar.com”. Versión 1.
1. Inicio.
2. Colocar primer plato delante de una silla.
3. Colocar segundo plato delante de una silla.
4. Colocar tercer plato delante de una silla.
5. Colocar tenedor a la izquierda del primer plato.
6. Colocar tenedor a la izquierda del segundo plato.
7. Colocar tenedor a la izquierda del tercer plato.
8. Colocar cuchara a la derecha del primer plato.
9. Colocar cuchara a la derecha del segundo plato.
10. Colocar cuchara a la derecha del tercer plato.
11. Colocar cuchillo a la derecha de la primera cuchara.
12. Colocar cuchillo a la derecha de la segunda cuchara.
13. Colocar cuchillo a la derecha de la tercera cuchara.
14. Fin.
Algoritmo “Poner mesa aprenderaprogramar.com”. Versión 2.
1. Inicio.
2. Colocar tres platos, cada uno delante de una silla.
3. Colocar tres tenedores, cada uno a la izquierda de cada plato.
4. Colocar tres cucharas, cada una a la derecha de cada plato.
5. Colocar tres cuchillos, cada uno a la derecha de cada cuchara.
6. Fin.
Algoritmo “Poner mesa aprenderaprogramar.com”. Versión 3.
1. Inicio.
2. Para cada silla.
a. Colocar plato.
b. Colocar tenedor a la izquierda del plato.
c. Colocar cuchara a la derecha del plato.
d. Colocar cuchillo a la derecha de la cuchara.
3. Siguiente silla hasta completar la mesa.
4. Fin.
Algoritmo “Poner mesa aprenderaprogramar.com”. Versión 4.
1. Inicio.
2. Para cada silla.
a. Colocar plato con tenedor a la izquierda, cuchara a la derecha y cuchillo a la derecha de la cuchara.
3. Siguiente silla hasta completar la mesa.
4. Fin.
Algoritmo “Poner mesa aprenderaprogramar.com”. Versión 5.
1. Inicio.
2. Para cada silla.
a. Colocar platos y cubiertos.
3. Siguiente silla hasta completar la mesa.
4. Fin.
Algoritmo “Poner mesa aprenderaprogramar.com”. Versión 6.
1. Inicio
2. Colocar platos y cubiertos en la mesa.
3. Fin.
Vamos a utilizar este ejemplo para analizar cuestiones como economía del algoritmo, eficiencia del algoritmo y el lenguaje utilizado. Todavía no estamos utilizando ningún lenguaje de programación, sino un lenguaje más o menos libre al que denominamos pseudocódigo y del que seguiremos hablando en las próximas entregas del curso.
Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link: Ver curso completo.
Para hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.