Informática I Software - Algoritmo Alejandro Furfaro Marzo 2011 Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Temario Alejandro Furfaro Software - Algoritmo 1 Introducción. 2 Algoritmo. 3 Estructuras de programación. 4 Programación estructurada 5 Conclusiones Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Primeros conceptos Protodefinición Cita Nº1 “La solución a cualquier problema de cómputo involucra una serie de acciones ejecutadas en un orden especı́fico” (Deitel) Cita Nº2 “Informalmente, un algoritmo es un procedimiento de cálculo bien definido que toma un cierto valor, o conjunto de valores, como entrada y produce un cierto valor, o conjunto de valores, como salida. Un algoritmo es, entonces, una secuencia de pasos computacionales que transforman la entrada en una salida.”(Cormen) Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Primeros conceptos Protodefinición Cita Nº1 “La solución a cualquier problema de cómputo involucra una serie de acciones ejecutadas en un orden especı́fico” (Deitel) Cita Nº2 “Informalmente, un algoritmo es un procedimiento de cálculo bien definido que toma un cierto valor, o conjunto de valores, como entrada y produce un cierto valor, o conjunto de valores, como salida. Un algoritmo es, entonces, una secuencia de pasos computacionales que transforman la entrada en una salida.”(Cormen) Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Primeros conceptos Protodefinición Cita Nº1 “La solución a cualquier problema de cómputo involucra una serie de acciones ejecutadas en un orden especı́fico” (Deitel) Cita Nº2 “Informalmente, un algoritmo es un procedimiento de cálculo bien definido que toma un cierto valor, o conjunto de valores, como entrada y produce un cierto valor, o conjunto de valores, como salida. Un algoritmo es, entonces, una secuencia de pasos computacionales que transforman la entrada en una salida.”(Cormen) Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Primeros conceptos Protodefinición Cita Nº1 “La solución a cualquier problema de cómputo involucra una serie de acciones ejecutadas en un orden especı́fico” (Deitel) Cita Nº2 “Informalmente, un algoritmo es un procedimiento de cálculo bien definido que toma un cierto valor, o conjunto de valores, como entrada y produce un cierto valor, o conjunto de valores, como salida. Un algoritmo es, entonces, una secuencia de pasos computacionales que transforman la entrada en una salida.”(Cormen) Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Primeros conceptos Protodefinición Cita Nº1 “La solución a cualquier problema de cómputo involucra una serie de acciones ejecutadas en un orden especı́fico” (Deitel) Cita Nº2 “Informalmente, un algoritmo es un procedimiento de cálculo bien definido que toma un cierto valor, o conjunto de valores, como entrada y produce un cierto valor, o conjunto de valores, como salida. Un algoritmo es, entonces, una secuencia de pasos computacionales que transforman la entrada en una salida.”(Cormen) Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Primeros conceptos Operaciones en un orden determinado Para resolver un problema mediante un algortimo se debe determinar 1 Acciones a ejecutar 2 El orden en que las acciones se deben ejecutar Alejandro Furfaro Software - Algoritmo Conclusiones Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Escribiendo Algoritmos ¿Como escribo un algoritmo si no sé aún nada de programación? Una forma es usando Pseudocódigo O sea, usando un lenguaje artificial, informal, dirı́amos... es casi como “escribir el algoritmo con nuestras palabras” Primer ejemplo... ¿Generan el mismo resultado? Ir a la Facultad (Opción 1) Ir a la Facultad (Opción 2) Levantarme de la cama Darme una ducha Vestirme Desayunar Caminar hasta la parada del micro Tomar el micro indicado Levantarme de la cama Darme una ducha Desayunar Caminar hasta la parada del micro Vestirme Tomar el micro indicado Es bastante poco probable que con el algoritmo de la opción 2 lleguemos a la Facultad Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Escribiendo Algoritmos ¿Como escribo un algoritmo si no sé aún nada de programación? Una forma es usando Pseudocódigo O sea, usando un lenguaje artificial, informal, dirı́amos... es casi como “escribir el algoritmo con nuestras palabras” Primer ejemplo... ¿Generan el mismo resultado? Ir a la Facultad (Opción 1) Ir a la Facultad (Opción 2) Levantarme de la cama Darme una ducha Vestirme Desayunar Caminar hasta la parada del micro Tomar el micro indicado Levantarme de la cama Darme una ducha Desayunar Caminar hasta la parada del micro Vestirme Tomar el micro indicado Es bastante poco probable que con el algoritmo de la opción 2 lleguemos a la Facultad Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Escribiendo Algoritmos ¿Como escribo un algoritmo si no sé aún nada de programación? Una forma es usando Pseudocódigo O sea, usando un lenguaje artificial, informal, dirı́amos... es casi como “escribir el algoritmo con nuestras palabras” Primer ejemplo... ¿Generan el mismo resultado? Ir a la Facultad (Opción 1) Ir a la Facultad (Opción 2) Levantarme de la cama Darme una ducha Vestirme Desayunar Caminar hasta la parada del micro Tomar el micro indicado Levantarme de la cama Darme una ducha Desayunar Caminar hasta la parada del micro Vestirme Tomar el micro indicado Es bastante poco probable que con el algoritmo de la opción 2 lleguemos a la Facultad Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Escribiendo Algoritmos ¿Como escribo un algoritmo si no sé aún nada de programación? Una forma es usando Pseudocódigo O sea, usando un lenguaje artificial, informal, dirı́amos... es casi como “escribir el algoritmo con nuestras palabras” Primer ejemplo... ¿Generan el mismo resultado? Ir a la Facultad (Opción 1) Ir a la Facultad (Opción 2) Levantarme de la cama Darme una ducha Vestirme Desayunar Caminar hasta la parada del micro Tomar el micro indicado Levantarme de la cama Darme una ducha Desayunar Caminar hasta la parada del micro Vestirme Tomar el micro indicado Es bastante poco probable que con el algoritmo de la opción 2 lleguemos a la Facultad Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Formalización de un algoritmo Erase una vez, 4 estrcuturas 1 Secuencia 2 Decisión (o selección) 3 Iteración 4 Salto Incondicional Alejandro Furfaro Software - Algoritmo Programación estructurada Conclusiones Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Formalización de un algoritmo Estructura de Secuencia Se llaman de este modo ya que no son otra cosa que órdenes que se ejecutan en secuencia respecto de la anterior. Se ejecutan una a continuación de la otra en el orden en que están escritas. El Algoritmo de ejemplo anterior no es otra cosa que una sucesión de estructuras de secuencia. Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Formalización de un algoritmo Estructura de Secuencia Se llaman de este modo ya que no son otra cosa que órdenes que se ejecutan en secuencia respecto de la anterior. Se ejecutan una a continuación de la otra en el orden en que están escritas. El Algoritmo de ejemplo anterior no es otra cosa que una sucesión de estructuras de secuencia. Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Formalización de un algoritmo Estructura de Decisión Permiten elegir entre diversos cursos de acción. Veamos nuevamente el algoritmo “Ir a trabajar” Ir a trabajar: Levantarme de la cama Darme una Ducha Vestirme Si estoy a tiempo Desayunar Caminar hasta la parada del micro Tomar el micro indicado Alejandro Furfaro Software - Algoritmo Conclusiones Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Formalización de un algoritmo Estructura de Decisión La estructura de Decisión evalúa una condición. En el caso anterior la condición contesta la pregunta: “¿estoy a tiempo?” Si la evaluación de la condición es verdadera (es decir, tengo tiempo suficiente), entonces ejecuta el bloque de instrucciones contenidas por la selección. En nuestro caso Desayunar. Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Formalización de un algoritmo Estructura de Decisión Una pequeña mejora al algoritmo “Ir a trabajar” Levantarme de la cama Darme una Ducha Vestirme Si estoy a tiempo Desayunar Sino Llevar dos manzanas para el camino Caminar hasta la parada del micro Tomar el micro indicado Alejandro Furfaro Software - Algoritmo Conclusiones Introducción Algoritmos Estcucturas de Programación Programación estructurada Formalización de un algoritmo Estructura de Decisión Correspondencia con el lenguaje formal Levantarme de la cama Darme una Ducha Vestirme if (estoy a tiempo) Desayunar else Llevar dos manzanas para el camino Caminar hasta la parada del micro Tomar el micro indicado Alejandro Furfaro Software - Algoritmo Conclusiones Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Formalización de un algoritmo Estructura de Iteración También denominada repetición. Indica que un bloque de acciones se repite mientras una condición evaluada resulte verdadera. Supongamos que en nuestro algoritmo deseamos aprovechar el tiempo si nos levantásemos mas temprano. . . Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Formalización de un algoritmo Algritmo con iteración Lee el diario “mientras” tenga tiempo Levantarme de la cama Darme una Ducha Vestirme Desayunar Mientras quede tiempo Leer el diario Caminar hasta la parada del micro Tomar el micro indicado Alejandro Furfaro Software - Algoritmo Programación estructurada Conclusiones Introducción Algoritmos Estcucturas de Programación Programación estructurada Formalización de un algoritmo Algritmo con iteración Correspondencia con el lenguaje formal Levantarme de la cama Darme una Ducha Vestirme Desayunar while (quede tiempo) Leer el diario Caminar hasta la parada del micro Tomar el micro indicado Alejandro Furfaro Software - Algoritmo Conclusiones Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Formalización de un algoritmo Salto incondicional Permite alterar el flujo de instrucciones de manera arbitraria. Incondicional implica que no se evalúa una condición por verdadero o falso para alterar la secuencia de nuestro algoritmo, sino que simplemente se la altera, sin mas. Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Antecedentes Inicios de la Industria del Software En la década del ’60 los requerimientos a las aplicaciones eran muy fuertes, y la “mala calidad” del código escrito impedı́a su evolución y su mantenimiento. Se trata de una industria muy joven que no habı́a aún desarrollado normas de calidad para la elaboración de código que sea mas fácilmente legible, escalable, y mantenible. Por entonces habı́a un consenso unánime tanto en ámbitos cientı́ficos como profesionales que la estructura de Salto Incondicional era la responsable del problema. Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Antecedentes 1er. Paradigma de Programación En 1965 Böhm y Jacopini, publicaron en ACM (Association of Computer Machinery) un trabajo en el que demostraron por método cientı́fico que cualquier algoritmo puede ser escrito utilizando las tres primeras estructuras de programación (dicho de otro modo prescindiendo de la estructura de Salto Condicional). Estas conclusiones provocaron la aparición del 1er. PARADIGMA de Programación conocido como Programación Estructurada. Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones Metodologı́a de resolución de Algoritmos Aproximación top-down Supongamos un problema de compejidad media: “Calcular el promedio de los valores de temperatura leı́dos desde un archivo” Dividamos esta tarea en una serie de tareas mas pequeñas... inicializar variables Ingresa los datos llevando la cuenta de los mismos. Calcula el promedio y presenta en pantalla el resultado Alejandro Furfaro Software - Algoritmo Introducción Algoritmos Estcucturas de Programación Programación estructurada Metodologı́a de resolución de Algoritmos Bajemos mas a detalle (top - down) Inicializa contador en 0 Inicializa total en 0 Abre el arcivo e inicializa su descriptor Mientras no alcance fin del archivo (EOF) Lee siguiente valor de temperatura Suma el valor a total Incrementa en 1 contador Si contador no es igual a 0 Divide total por contador Imprime el resultado en pantalla Sino Imprime en pantalla “No hay valores de temperatura almacenados” Alejandro Furfaro Software - Algoritmo Conclusiones Introducción Algoritmos Estcucturas de Programación Programación estructurada Metodologı́a de resolución de Algoritmos Bajemos mas a detalle (top - down) Inicializa contador en 0 Inicializa total en 0 Abre el arcivo e inicializa su descriptor Mientras no alcance fin del archivo (EOF) Lee siguiente valor de temperatura Suma el valor a total Incrementa en 1 contador Si contador no es igual a 0 Divide total por contador Imprime el resultado en pantalla Sino Imprime en pantalla “No hay valores de temperatura almacenados” Alejandro Furfaro Software - Algoritmo Conclusiones Introducción Algoritmos Estcucturas de Programación Programación estructurada Metodologı́a de resolución de Algoritmos Bajemos mas a detalle (top - down) Inicializa contador en 0 Inicializa total en 0 Abre el arcivo e inicializa su descriptor Mientras no alcance fin del archivo (EOF) Lee siguiente valor de temperatura Suma el valor a total Incrementa en 1 contador Si contador no es igual a 0 Divide total por contador Imprime el resultado en pantalla Sino Imprime en pantalla “No hay valores de temperatura almacenados” Alejandro Furfaro Software - Algoritmo Conclusiones Introducción Algoritmos Estcucturas de Programación Programación estructurada Conclusiones ¿Que aprendimos? Concepto de algoritmo como resultado de una ejecución de paos en un orden determinado Estructuras de programación como la forma de implementar un algoritmo Concepto de programación estructurada como la forma de arganizar un programa dividiéndolo en tareas, aplicando el desarrollo top - down Vimos que con pseudo código logramos explicitar nuestro algoritmo y dejarlo listo para escribirlo en el lenguaje de programación que mas preferamos. Alejandro Furfaro Software - Algoritmo