Algoritmo (III)
Definición (I)
Especificación rigurosa (debe expresarse en forma univoca) de la secuencia de pasos. instrucciones, a realizar sobre un autómata para alcanzar un resultado deseado en un tiempo finito. Esto ultimo supone que el algoritmo empieza y termina, en el caso de los que no son de tiempo finito (ej. Sistemas en tiempo real) deben ser de numero finito dif instrucciones.
En definitiva un algoritmo es una especificación ordenada de la solución a un problema de la vida real. Son el fundamento de la programación de computadores en el paradigma de programación imperativo.
Bajo este paradigma desarrollar un programa significa indicarle al computador, con precisión, sin ambigüedad y en un lenguaje que este pueda entender, todos y cada uno de los pasos que debe ejecutar para lograr el objetivo propuesto.
Previo a la traducción en un lenguaje de programación es necesario poder entender el problema, conocer las pre condiciones, establecer cual debe ser la pos condición, o aquello que debe ser cierto al finalizar la ejecución del algoritmo, en definitiva entender claramente Que es lo que se debe hacer para luego avanzar en Como hacerlo. Aquí debe utilizarse todas las herramientas al alcance de la mano para el desarrollo del algoritmo como paso previo a la solución del problema por el computador.
Existen varias técnicas para representar formalmente un algoritmo, una descriptiva llamada pseudocódigo, y otras gráficas como los diagrama de flujo, diagrama Nassi Sneiderman, Diagramas de Lindsay, diagramas de Jackson, entre otros, en este caso se presentara una notación algorítmica similar a la presentada por Piere Scholl en el texto Esquemas algorítmicos fundamentales:
Secuencia e iteración.
Definición (II)
Secuencia finita de instrucciones, reglas o pasos que describen en forma precisa las operaciones que una computadora debe realizar para llevar a cabo una tarea en tiempo finito [Knuth. 1968].
Descripción de un esquema de comportamiento expresado mediante un repertorio finito de acciones y de informaciones elementales, identificadas, bien comprendidas y
denomina léxico[Scholl, 1988].
• Esta formado por reglas, pasos e instrucciones.
• Las reglas especifican operaciones.
• La computadora es el agente ejecutor.
• La secuencia de reglas y la duración de la ejecución son finitas. Características de un algoritmo.
Un algoritmo debe tener al menos las siguientes características:
• Ser preciso: esto significa que las operaciones o pasos del algoritmo deben desarrollarse en un orden estricto, ya que el desarrollo de cada paso debe obedecer a un orden lógico.
• Ser definido: Ya que en el área de programación, el algoritmo es el paso previo fundamental para desarrollar un programa, es necesario tener en cuenta que el computador solo desarrollará las tareas programadas y con los datos suministrados; es decir, no puede improvisar y tampoco inventará o adivinará el dato que necesite para realizar un proceso. Por eso, el algoritmo debe estar plenamente definido; esto es, que cuantas veces se ejecute, el resultado depende estrictamente de los datos suministrados. Si se ejecuta con un mismo conjunto de datos de entrada, el resultado deberá ser siempre el mismo.
•Ser finito: esta característica implica que el número de pasos de un algoritmo, por grande y complicado que sea el problema que soluciona, debe ser limitado. Todo algoritmo, sin importar el número de pasos que incluya, debe llegar a un final. Para hacer evidente esta característica, en la representación de un algoritmo siempre se incluyen los pasos inicio y fin.
• Presentación formal: para que el algoritmo sea entendido por cualquier persona interesada es necesario que se exprese en alguna de las formas comúnmente aceptadas; pues, si se describe de cualquier forma puede no ser muy útil ya que solo lo entenderá quien lo diseñó. Las formas de presentación de algoritmos son: el pseudocódigo, diagrama de flujo y diagramas de Nassi/Schneiderman, entre otras. En esta publicación se propondrá una notación algorítmica y se darán las equivalencias entre la propuesta y las existentesy también con las sentencias de los lenguajes de programación, en particular Pascal y C.
• Corrección: el algoritmo debe ser correcto, es decir debe satisfacer la necesidad o solucionar el problema para el cual fue diseñado. Para garantizar que el algoritmo logre el objetivo, es necesario ponerlo a prueba; a esto se le llama verificación o prueba de escritorio.
• Eficiencia: hablar de eficiencia o complejidad de un algoritmo es evaluar los recursos de cómputo que requiere para almacenar datos y para ejecutar operaciones frente al beneficio que ofrece. En cuanto menos recursos requiere será más eficiente el algoritmo.
La vida cotidiana está llena de soluciones algorítmicas, algunas de ellas son tan comunes que no se requiere pensar en los pasos que incluye la solución. La mayoría de las actividades que se realizan diariamente están compuestas por tareas más simples que se ejecutan en un orden determinado, lo cual genera un algoritmo. Por ejemplo, son tareas comunes, realizar una llamada telefónica, buscar un número en el directorio telefónico, buscar un anuncio en las páginas amarillas del directorio, preparar café, regar las plantas, poner en funcionamiento un automóvil, cambiar una llanta, entre muchas otras.
continuara….





