Menús de configuración en el Panel de Administración

IkaroTech

Capítulo 1: Introducción a los Algoritmos



Concepto de Algoritmos

Un Algoritmo es una serie ordenada de instrucciones, pasos o procesos que llevan a la solución de un determinado problema. Los hay tan sencillos y cotidianos como seguir la receta del médico, abrir una puerta, lavarse las manos, etc; hasta los que conducen a la solución de problemas muy complejos.

Historia de los Algoritmos

La palabra algoritmo proviene del nombre del matemático llamado Abu Abdullah Muhammad bin Musa al-Khwarizmi (hay muchas variantes para el nombre al usar el alfabeto latin, tales como Al-Khorezmi, Al-Khwarizmi, Al-Khawarizmi, Al-Khawaritzmi o Al-Khowarizmi) que vivió entre los siglos VIII y IX.

Su trabajo consistió en preservar y difundir el conocimiento de la antigua Grecia y de la India. Sus libros eran de fácil comprensión, de ahí que su principal valor no fuera el de crear nuevos teoremas o nuevas corrientes de pensamiento, sino el de simplificar las matemáticas a un nivel lo suficientemente bajo para que pudiera ser comprendido por un amplio público. Cabe destacar cómo señaló las virtudes del sistema decimal indio (en contra de los sistemas tradicionales árabes) y cómo explicó que, mediante una especificación clara y concisa de cómo calcular sistemáticamente, se podrían definir algoritmos que fueran usados en dispositivos mecánicos similares a un ábaco en vez de las manos. También estudió la manera de reducir el numero de operaciones necesarias que formaban el cálculo.

Por esta razón, aunque no haya sido él el inventor del primer algoritmo, merece que este concepto esté asociado a su nombre. Al-Khorezmi fue sin duda el primer pensador algorítmico.

Ya en el siglo XIX, se produjo el primer algoritmo escrito para un computador. La autora fue Ada Byron, en cuyos escritos se detallaban la máquina analítica en 1842. Por ello que es considerada por muchos como la primera programadora aunque, desde Charles Babbage, nadie completó su máquina, por lo que el algoritmo nunca se implementó.

La idea de resolver un problema o de disponer de un algoritmo es bastante antigua, tal es así, que existía la errada creencia que no había problema que no se pudiera resolver y en base a ello, el matemático David Hilbert quiso descubrir un algoritmo para los algoritmos. Hoy en dia gracias a los trabajos de Kurt Gödel, Alonzo Church (calculo lamba), Alan Turing (maquina de turing), se sabe que dentro del universo de problemas, una pequeña parte es computable, luego que el objetivo que perseguia David Hilbert no era computable, es lo que se ha denominado como la computabilidad de los algoritmos.

Los Algoritmos deben ser:

Finitos: Debe acabar en algún momento.

Eficientes: Deben ocupar la mínima memoria y minimizar el tiempo de ejecución.

Legibles: El texto que lo describe debe ser claro, tal que permita entenderlo y leerlo fácilmente.

Modificables: Estarán diseñados de modo que sus posteriores modificaciones sean fáciles de realizar, incluso por programadores diferentes a sus propios autores.

Modulares: La filosofía utilizada para su diseño debe favorecer la división del problema en módulos pequeños.

Único punto de entrada, único punto de salida: A los algoritmos y a los módulos que lo integran se entra por un sólo punto, inicio, y se sale por un sólo punto también, fin.

  2.1.  Análisis del problema:

Haremos un estudio previo de la tarea a realizar. Si nos la dan verbalmente, haremos preguntas hasta tener claro lo que se ha de hacer, es decir, hasta obtener la escritura detallada de todas las especificaciones. Si la tarea nos la dan por escrito, podemos comenzar subrayando palabras o frases decisivas, escribiendo al margen ideas y dudas, o cualquier otra cosa que nos ayude a concretar especificaciones, además de realizar verbalmente todas las preguntas que den respuesta a nuestras dudas. Algunas preguntas elementales serán las siguientes: – ¿Cuáles serán los datos de entrada?. – ¿Qué datos se piden de salida?. – ¿Qué apariencia (formato) tendrán los datos?. – ¿Cuántas veces se deben repetir los procesos?. – ¿Hay que hacer suposiciones?. En caso afirmativo se hará un listado de ellas. – ¿Pueden aparecer condiciones especiales de error? – ¿Hemos resuelto algún problema parecido o sabemos que existe una solución para una tarea análoga?. Si la respuesta es afirmativa usemos esa solución, aunque hubiera que modificarla. – ¿Hay juegos de ensayo adecuados?. Búsquelos.

2.2  Escribir en pseudocódigo el programa principal:

Empezaremos dividiendo el problema en módulos más sencillos, hasta llegar a un nivel de detalle razonable utilizando nombres con significado para ellos. Si de momento no sabemos resolver alguno de estos módulos, no debemos preocuparnos pensemos que alguien nos lo resolverá o que mañana tendremos una idea genial para solucionarlo y sigamos adelante con nuestro diseño, tal vez tengamos la suerte de encontrarlo ya hecho. Recordemos que si los problemas son razonablemente pequeños, como ocurrirá en los primeros temas no será necesaria esta división en subtareas del problema.

2.3 Escribir en pseudocódigo los módulos restantes:

Escribiremos cada uno de los módulos, detallando la secuencia de instrucciones que deben realizar, en el caso de que los hubiera.

2.4 Lectura del pseudocódigo:

Recorrer el algoritmo escrito en pseudocódigo inspeccionando, reordenando, detectando y corrigiendo errores, revisando todo lo que sea necesario, incluso será posible que haya que planificar algún cambio. No hay que tener miedo a empezar de nuevo si fuera necesario.

2.5 Seguir la traza:

Haremos la prueba del algoritmo siguiendo la traza con los datos elegidos como juego de ensayo. Observaremos los resultados minuciosamente, tratando de detectar y corregir los errores si estos resultados no son los esperados.

2.6 Documentación:

Una vez diseñado y bien estructurado un algoritmo, la siguiente actividad a desarrollar, sumamente importante en programación, es producir programas bien documentados, para que se cumplan los objetivos básicos, que los programas sean legibles, comprensibles y fácilmente modificables. La documentación incluye descripciones, comentarios, especificaciones, incluso un breve manual de uso si el algoritmo es suficientemente extenso. Tenemos dos tipos de documentación en el desarrollo de algoritmos bien diseñados: a) Documentación externa: Incluye la escritura de información que es exterior al cuerpo del algoritmo. Puede incluir, además de todas las especificaciones detalladas, una explicación extensa del desarrollo del algoritmo y de las modificaciones sufridas. Deben añadirse igualmente descripciones detalladas del problema, de los módulos que lo componen, adjuntando un diagrama jerárquico del diseño descendente y por último un manual de usuario donde se explicará al cliente (o al profesor en su defecto) como debe usarse el programa. Esta documentación debe adjuntarse sólo en el caso de que los algoritmos sean suficientemente grandes, lo que se consideran aplicaciones informáticas de cierta envergadura, divididas en varios programas. b) Documentación interna: Incluye la escritura de información que se suministra con el cuerpo del algoritmo. Estará formada por comentarios, código autodocumentado e impresión agradable del texto del pseudocódigo.

  1. Analizar los datos de entrada (variables y sus tipos)
    2. Procesos (flujo de datos de entrada y salida)
    3. Datos de salida (Resultados a obtener y datos auxiliares)
    4. Todo algoritmo empieza por la palabra inicio (el Inicio define el punto de arranque o partida)
    5. Dejar una sangría siempre y comenzar debajo de la o. (todo algoritmo debe ser ordenado y tabulado)
    6. Declaración de variables (identifica los valores a utilizar y sus tipos)
    7. Todo data de entrada debe de estar acompañado de un mensaje de salida (los mensajes de salida se dan con la instrucción escribir entre comillas, y las entradas con la instrucción lea o leer entre paréntesis)
    8. Realizar los procesos
    9. Se debe mostrar la respuesta (la respuesta se muestra a través de la impresión de la variable resultado)
    10. Todo algoritmo termina con la palabra fin. (El fin determina la finalización del algoritmo y el fin del proceso)

Herramientas para construcción de algoritmos

Descargar DFD

Descargar PSEINT


Entornos de Desarrollo Integrado (IDE)

Descargar Netbeans

Descargar Visual Studio Express

Ver todo Añadir una nota
Tu
Agregue su comentario
IkaroTech © 2016. Todos los derechos reservados.