Software - Algoritmo

Anuncio
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
Descargar