PROGRAMACIÓN ESTRUCTURADA

Anuncio
JOSÉ ÁNGEL ACOSTA RODRÍGUEZ
INFORMÁTICA CURSO 2009/10
0101010100010101011101010101010100101001010100010010
1010101001100101011111010101010101001010100101010101
0011110101010101011110101010100110100101010100101010
1010010101010100111101010101010111101010101001101001
0101010010101010100101010101001111010101010101111010
1010100110100101010100101010101001010101010011110101
0101010111101010101001101001010101001010101010010101
0101001111010101010101111010101010011010010101010010
1010101001010101010011110101010101011110101010100110
1001010101001010101010010101010100111101010101010111
1010101010011010010101010010101010100101010101001111
0101010101011110101010100110100101010100101010101001
0101010100111101010101010111101010101001101001010101
TEORÍA DE ALGORITMOS
0010101010100101010101001111010101010101111011110101
0101001101001010101001010101010010101010100111100101
0101010111101111010101010011010010101010010101010100
1010101010011110101010101011110111101010101001101001
0101010010101010100101010101001111010101010101111011
PROGRAMACIÓN
ESTRUCTURADA
0101010100010101011101010101010100101001010100010010
1010101001100101011111010101010101001010100101010101
0011110101010101011110101010100110100101010100101010
1010010101010100111101010101010111101010101001101001
0101010010101010100101010101001111010101010101111010
• C. Böhm (IT 1923) & G. Jacopini (IT)
1010100110100101010100101010101001010101010011110101
– Structure Program Theorem: “Flow Diagrams, Turing Machines
and Languages with Only Two Formation Rules”, 1966:
0101010111101010101001101001010101001010101010010101
– Programación estructurada ⇔ cumple 3 condiciones
0101001111010101010101111010101010011010010101010010
• E. W. Dijkstra físico (NL, 1930/2002)
1010101001010101010011110101010101011110101010100110
– “Algoritmo de caminos mínimos”, 1959, Premio Turing 1972
1001010101001010101010010101010100111101010101010111
– “A Case against the GO TO Statement”, 1968, Editor cambió el
1010101010011010010101010010101010100101010101001111
título a “Go To Statement Considered Harmful”
0101010101011110101010100110100101010100101010101001
EWD215: http://www.cs.utexas.edu/users/EWD/
0101010100111101010101010111101010101001101001010101
– Programación estructurada ⇔ no tiene GOTO
0010101010100101010101001111010101010101111011110101
– GOTO ⇔ código espagueti
0101001101001010101001010101010010101010100111100101
• Jackson y Warnier, 1974. Técnicas de programación
0101010111101111010101010011010010101010010101010100
estructurada. Metodologías
1010101010011110101010101011110111101010101001101001
PROGRAMACIÓN ESTRUCTURADA
0101010010101010100101010101001111010101010101111011
Historia
0101010100010101011101010101010100101001010100010010
1010101001100101011111010101010101001010100101010101
0011110101010101011110101010100110100101010100101010
1010010101010100111101010101010111101010101001101001
0101010010101010100101010101001111010101010101111010
UNIVERSALIDAD
ALGORITMO
1010100110100101010100101010101001010101010011110101
0101010111101010101001101001010101001010101010010101
ELEMENTOS
0101001111010101010101111010101010011010010101010010
Y
PROBLEMA
N
1010101001010101010011110101010101011110101010100110
UCIÓ
OPERACIONES
SOL
E
R
1001010101001010101010010101010100111101010101010111
?
OBJETOS
1010101010011010010101010010101010100101010101001111
¿Quien?
0101010101011110101010100110100101010100101010101001
¿ Dónde estamos ?
0101010100111101010101010111101010101001101001010101
VARIABLES
PROGRAMA
N
0010101010100101010101001111010101010101111011110101
ACIÓ
CONSTANTES
IC
IF
…
COD
0101001101001010101001010101010010101010100111100101
0101010111101111010101010011010010101010010101010100
1010101010011110101010101011110111101010101001101001
PROGRAMACIÓN ESTRUCTURADA
0101010010101010100101010101001111010101010101111011
INGENIERÍA AERONÁUTICA
1
JOSÉ ÁNGEL ACOSTA RODRÍGUEZ
INFORMÁTICA CURSO 2009/10
0101010100010101011101010101010100101001010100010010
1010101001100101011111010101010101001010100101010101
0011110101010101011110101010100110100101010100101010
1010010101010100111101010101010111101010101001101001
0101010010101010100101010101001111010101010101111010
/ Cambios, localización, funcionamiento, …
1010100110100101010100101010101001010101010011110101
0101010111101010101001101001010101001010101010010101
GOTOs
0101001111010101010101111010101010011010010101010010
1010101001010101010011110101010101011110101010100110
1001010101001010101010010101010100111101010101010111
1010101010011010010101010010101010100101010101001111
0101010101011110101010100110100101010100101010101001
0101010100111101010101010111101010101001101001010101
0010101010100101010101001111010101010101111011110101
0101001101001010101001010101010010101010100111100101
0101010111101111010101010011010010101010010101010100
No estructurado
Estructurado
1010101010011110101010101011110111101010101001101001
PROGRAMACIÓN ESTRUCTURADA
0101010010101010100101010101001111010101010101111011
Motivación
0101010100010101011101010101010100101001010100010010
1010101001100101011111010101010101001010100101010101
0011110101010101011110101010100110100101010100101010
1010010101010100111101010101010111101010101001101001
0101010010101010100101010101001111010101010101111010
• Programas propios:
1010100110100101010100101010101001010101010011110101
– 1 sólo punto de entrada y
0101010111101010101001101001010101001010101010010101
salida
0101001111010101010101111010101010011010010101010010
– Al menos 1 camino va
1010101001010101010011110101010101011110101010100110
desde principio a fin
1001010101001010101010010101010100111101010101010111
– No posee bucles infinitos
1010101010011010010101010010101010100101010101001111
0101010101011110101010100110100101010100101010101001
• Análisis descendente
0101010100111101010101010111101010101001101001010101
• Th. Böhm & Jacopini:
0010101010100101010101001111010101010101111011110101
Secuencial
0101001101001010101001010101010010101010100111100101
Programa propio ⇔ Estructuras Selectiva
0101010111101111010101010011010010101010010101010100
Repetitiva
1010101010011110101010101011110111101010101001101001
PROGRAMACIÓN ESTRUCTURADA
0101010010101010100101010101001111010101010101111011
Programación estructurada
0101010100010101011101010101010100101001010100010010
1010101001100101011111010101010101001010100101010101
0011110101010101011110101010100110100101010100101010
1010010101010100111101010101010111101010101001101001
0101010010101010100101010101001111010101010101111010
• Acciones consecutivas
1010100110100101010100101010101001010101010011110101
0101010111101010101001101001010101001010101010010101
0101001111010101010101111010101010011010010101010010
1010101001010101010011110101010101011110101010100110
1001010101001010101010010101010100111101010101010111
1010101010011010010101010010101010100101010101001111
0101010101011110101010100110100101010100101010101001
• Ejemplo: suma
0101010100111101010101010111101010101001101001010101
– Lectura
0010101010100101010101001111010101010101111011110101
– Cálculo
0101001101001010101001010101010010101010100111100101
– Escritura
0101010111101111010101010011010010101010010101010100
1010101010011110101010101011110111101010101001101001
PROGRAMACIÓN ESTRUCTURADA
0101010010101010100101010101001111010101010101111011
Estructura Secuencial
INGENIERÍA AERONÁUTICA
2
JOSÉ ÁNGEL ACOSTA RODRÍGUEZ
INFORMÁTICA CURSO 2009/10
0101010100010101011101010101010100101001010100010010
1010101001100101011111010101010101001010100101010101
0011110101010101011110101010100110100101010100101010
1010010101010100111101010101010111101010101001101001
0101010010101010100101010101001111010101010101111010
• Se evalúa condición
1010100110100101010100101010101001010101010011110101
0101010111101010101001101001010101001010101010010101
0101001111010101010101111010101010011010010101010010
1010101001010101010011110101010101011110101010100110
1001010101001010101010010101010100111101010101010111
1010101010011010010101010010101010100101010101001111
0101010101011110101010100110100101010100101010101001
0101010100111101010101010111101010101001101001010101
• Tipos:
0010101010100101010101001111010101010101111011110101
– Simple
0101001101001010101001010101010010101010100111100101
0101010111101111010101010011010010101010010101010100
– Múltiple
1010101010011110101010101011110111101010101001101001
PROGRAMACIÓN ESTRUCTURADA
0101010010101010100101010101001111010101010101111011
Estructura Selectiva
0101010100010101011101010101010100101001010100010010
1010101001100101011111010101010101001010100101010101
0011110101010101011110101010100110100101010100101010
1010010101010100111101010101010111101010101001101001
0101010010101010100101010101001111010101010101111010
• Múltiple:
1010100110100101010100101010101001010101010011110101
0101010111101010101001101001010101001010101010010101
0101001111010101010101111010101010011010010101010010
1010101001010101010011110101010101011110101010100110
1001010101001010101010010101010100111101010101010111
1010101010011010010101010010101010100101010101001111
0101010101011110101010100110100101010100101010101001
0101010100111101010101010111101010101001101001010101
0010101010100101010101001111010101010101111011110101
0101001101001010101001010101010010101010100111100101
0101010111101111010101010011010010101010010101010100
1010101010011110101010101011110111101010101001101001
PROGRAMACIÓN ESTRUCTURADA
0101010010101010100101010101001111010101010101111011
Estructura Selectiva
0101010100010101011101010101010100101001010100010010
1010101001100101011111010101010101001010100101010101
0011110101010101011110101010100110100101010100101010
1010010101010100111101010101010111101010101001101001
0101010010101010100101010101001111010101010101111010
• Condición + iteración:
1010100110100101010100101010101001010101010011110101
0101010111101010101001101001010101001010101010010101
0101001111010101010101111010101010011010010101010010
1010101001010101010011110101010101011110101010100110
1001010101001010101010010101010100111101010101010111
1010101010011010010101010010101010100101010101001111
0101010101011110101010100110100101010100101010101001
0101010100111101010101010111101010101001101001010101
REPETIR … HASTA MIENTRAS … HACER
0010101010100101010101001111010101010101111011110101
•
Ejemplo: vector
0101001101001010101001010101010010101010100111100101
0101010111101111010101010011010010101010010101010100
1010101010011110101010101011110111101010101001101001
PROGRAMACIÓN ESTRUCTURADA
0101010010101010100101010101001111010101010101111011
Estructura Repetitiva
INGENIERÍA AERONÁUTICA
3
JOSÉ ÁNGEL ACOSTA RODRÍGUEZ
INFORMÁTICA CURSO 2009/10
0101010100010101011101010101010100101001010100010010
1010101001100101011111010101010101001010100101010101
0011110101010101011110101010100110100101010100101010
1010010101010100111101010101010111101010101001101001
0101010010101010100101010101001111010101010101111010
• Concepto de Iteración:
1010100110100101010100101010101001010101010011110101
– N ← 3, ⇒ N = 3
0101010111101010101001101001010101001010101010010101
– i ← 1, ⇒ i = 1
0101001111010101010101111010101010011010010101010010
– Bucle:
1010101001010101010011110101010101011110101010100110
1) Proceso:
1001010101001010101010010101010100111101010101010111
• i = 1, ⇒ v1 = 12, v = [ 1, ? ,?]
1010101010011010010101010010101010100101010101001111
2) Actualización:
0101010101011110101010100110100101010100101010101001
• i ←i+1 ⇒i =2
3) Condición
0101010100111101010101010111101010101001101001010101
• NO: i ≯ 3 ⇒ IR a 1)
0010101010100101010101001111010101010101111011110101
• SI: i > 3 ⇒ IR a 4)
0101001101001010101001010101010010101010100111100101
4) FIN
0101010111101111010101010011010010101010010101010100
1010101010011110101010101011110111101010101001101001
PROGRAMACIÓN ESTRUCTURADA
0101010010101010100101010101001111010101010101111011
Estructura Repetitiva
0101010100010101011101010101010100101001010100010010
1010101001100101011111010101010101001010100101010101
0011110101010101011110101010100110100101010100101010
1010010101010100111101010101010111101010101001101001
0101010010101010100101010101001111010101010101111010
• Concepto de Iteración:
1010100110100101010100101010101001010101010011110101
– N ← 3, ⇒ N = 3
0101010111101010101001101001010101001010101010010101
– i ← 1, ⇒ i = 1
0101001111010101010101111010101010011010010101010010
– Bucle:
1010101001010101010011110101010101011110101010100110
1) Proceso:
1001010101001010101010010101010100111101010101010111
• i = 2, ⇒ v2 = 22, v = [ 1, 4 ,?]
1010101010011010010101010010101010100101010101001111
2) Actualización:
0101010101011110101010100110100101010100101010101001
• i ←i+1 ⇒i =3
3) Condición
0101010100111101010101010111101010101001101001010101
• NO: i ≯ 3 ⇒ IR a 1)
0010101010100101010101001111010101010101111011110101
• SI: i > 3 ⇒ IR a 4)
0101001101001010101001010101010010101010100111100101
4) FIN
0101010111101111010101010011010010101010010101010100
1010101010011110101010101011110111101010101001101001
PROGRAMACIÓN ESTRUCTURADA
0101010010101010100101010101001111010101010101111011
Estructura Repetitiva
0101010100010101011101010101010100101001010100010010
1010101001100101011111010101010101001010100101010101
0011110101010101011110101010100110100101010100101010
1010010101010100111101010101010111101010101001101001
0101010010101010100101010101001111010101010101111010
• Concepto de Iteración:
1010100110100101010100101010101001010101010011110101
– N ← 3, ⇒ N = 3
0101010111101010101001101001010101001010101010010101
– i ← 1, ⇒ i = 1
0101001111010101010101111010101010011010010101010010
– Bucle:
1010101001010101010011110101010101011110101010100110
1) Proceso:
1001010101001010101010010101010100111101010101010111
• i = 3, ⇒ v3 = 32, v = [ 1, 4 ,9]
1010101010011010010101010010101010100101010101001111
2) Actualización:
0101010101011110101010100110100101010100101010101001
• i ←i+1 ⇒i =4
3) Condición
0101010100111101010101010111101010101001101001010101
• NO: i ≯ 3 ⇒ IR a 1)
0010101010100101010101001111010101010101111011110101
• SI: i > 3 ⇒ IR a 4)
0101001101001010101001010101010010101010100111100101
4) FIN
0101010111101111010101010011010010101010010101010100
1010101010011110101010101011110111101010101001101001
PROGRAMACIÓN ESTRUCTURADA
0101010010101010100101010101001111010101010101111011
Estructura Repetitiva
INGENIERÍA AERONÁUTICA
4
Descargar