Publicado el 24 de Junio del 2018
945 visualizaciones desde el 24 de Junio del 2018
10,2 MB
48 paginas
Creado hace 8a (01/01/2017)
Lenguaje de Diseño
Tercera Parte
Resolución de Problemas y Algoritmos
Primer Cuatrimestre 2017
1
Programación Modular
Programación Estructurada
Programas fáciles de
leer y modificar
Estructuras de Control
Secuencia
Condicional
Iteración
Técnicas de Diseños
Dividir y Conquistar
Dividir a un problema
en subproblemas más
simples
Algoritmos
Exhaustivos
Algoritmos
Voraces
n
c i ó
a m a
r
g
a
á m i c
D i n
o
P r
Módulo
Programación Modular
2
Programación Modular
Enfoque de Diseño
y
Programación Modular Conviene
Cuando una tarea específica debe
ejecutarse varias veces
Cuando un problema es complejo y la
solución se divide o segmenta en módulos
donde cada uno ejecuta una tarea
específica
3
Programación Modular
La Tarara, sí;
la tarara, no;
La Tarara, niña,
que la he visto yo.
Lleva la Tarara
un vestido verde
lleno de volantes
y de cascabeles.
La Tarara, sí;
la tarara, no;
La Tarara, niña,
que la he visto yo
Luce mi Tarara
su cola de seda
sobre las retamas
y la hierbabuena.
La Tarara, sí;
la tarara, no;
La Tarara, niña,
que la he visto yo
Ay, Tarara loca.
Mueve, la cintura
para los muchachos
de las aceitunas.
La Tarara, sí;
la tarara, no;
La Tarara, niña,
que la he visto yo.
Estribillo
[Estribillo]
Lleva la Tarara
un vestido verde
lleno de volantes
y de cascabeles.
[Estribillo]
Luce mi Tarara
su cola de seda
sobre las retamas
y la hierbabuena
[Estribillo]
Ay, Tarara loca.
Mueve, la cintura
para los muchachos
de las aceitunas.
4
Programación Modular
Un elefante se balanceaba
sobre la tela de una araña,
como veía que resistía
fue a llamar a otro elefante.
Dos elefantes se balanceaban
sobre la tela de una araña,
como veían que resistía
fueron a llamar a otro elefante.
Tres elefantes se balanceaban
sobre la tela de una araña,
como veían que resistía
fueron a llamar a otro elefante.
Cuatro elefantes se balanceaban
sobre la tela de una araña,
como veían que resistía
fueron a llamar a otro elefante.
Un elefante se balanceaba
sobre la tela de una araña,
como veía que resistía
fue a llamar a otro elefante.
<Nro> elefantes se balanceaban
sobre la tela de una araña,
como veían que resistía
fueron a llamar a otro elefante.
5
Modularización
1
2
3
t1 - Dibujo la base.
t2 - Dibujo el poste.
t3 - Dibujo el triángulo inferior.
t4 - Dibujo el triángulo superior.
3 t1 - Dibujo el rectángulo.
t2 - Dibujo el triángulo.
2
t1 - Dibujo el triángulo.
t2 - Dibujo la cola.
6
Modularización
4
t1 - Dibujo triángulo1.
t2 - Dibujo triángulo2.
t3 - Dibujo triángulo3.
t4 - Dibujo triángulo4.
t5 - Dibujo triángulo5.
t6 - Dibujo triángulo6.
t7 - Dibujo linea1.
t8 - Dibujo linea2.
t9 - Dibujo linea3.
4
5
t1 - Dibujo rectángulo1.
t2 - Dibujo rectángulo2.
t3 - Dibujo triángulo1.
t4 - Dibujo triángulo2.
t5 - Dibujo triángulo3.
t6 - Dibujo triángulo4.
7
1
1
4
4
t1 - Dibujo la base.
t1 - Dibujo la base.
t2 - Dibujo el poste.
t2 - Dibujo el poste.
t3 - Dibujo el triángulo inferior.
t3 - Dibujo el triángulo inferior.
t4 - Dibujo el triángulo superior.
t4 - Dibujo el triángulo superior.
t1 - Dibujo triángulo1.
t1 - Dibujo triángulo1.
t2 - Dibujo triángulo2.
t2 - Dibujo triángulo2.
t3 - Dibujo triángulo3.
t3 - Dibujo triángulo3.
t4 - Dibujo triángulo4.
t4 - Dibujo triángulo4.
t5 - Dibujo triángulo5.
t5 - Dibujo triángulo5.
t6 - Dibujo triángulo6.
t6 - Dibujo triángulo6.
t7 - Dibujo linea1.
t7 - Dibujo linea1.
t8 - Dibujo linea2.
t8 - Dibujo linea2.
t9 - Dibujo linea3.
t9 - Dibujo linea3.
Modularización
2
2
3
3
5
5
t1 - Dibujo el triángulo.
t1 - Dibujo el triángulo.
t2 - Dibujo la cola.
t2 - Dibujo la cola.
t1 - Dibujo el rectángulo.
t1 - Dibujo el rectángulo.
t2 - Dibujo el triángulo.
t2 - Dibujo el triángulo.
t1 - Dibujo rectángulo1.
t1 - Dibujo rectángulo1.
t2 - Dibujo rectángulo2.
t2 - Dibujo rectángulo2.
t3 - Dibujo triángulo1.
t3 - Dibujo triángulo1.
t4 - Dibujo triángulo2.
t4 - Dibujo triángulo2.
t5 - Dibujo triángulo3.
t5 - Dibujo triángulo3.
t6 - Dibujo triángulo4.
t6 - Dibujo triángulo4.
8
1
2
4
Algoritmo de dibujo del triángulo
TRIAN
Modularización
3
5
9
Modularización
Descomposición del problema
suma (unión) de pequeños problemas
Se pretende:
4 que tengan una tarea específica.
4 sean totalmente independientes del resto.
Dividirlo en pequeños problemas
Puede suceder que dicho subproblema sea común a un conjunto de problemas de
mayor envergadura.
El algoritmo que lo resuelve debería ser el mismo cada vez que el
subproblema esté presente en un problema.
MODULARIZACIÓN DEL PROBLEMA
10
Modularización
Programación Modular
• Aumenta la legibilidad y comprensión del programa
• Reduce el tiempo de desarrollo, aprovechando módulos ya existentes
• Permite la resolución del problema por varios programadores a la vez
• Facilita la depuración del programa
• Facilita el mantenimiento
Ventajas:
.
Modularización
Problema
Técnica de diseño: Top Down
Sub problema
1
Sub problema
3
Sub problema
2
…
T1
T1
T3
T2
…
T11
T12
T13
T31
T32
T11
T12
Modularización
TRIAN es un algoritmo común al conjunto de problemas
TRIAN es un MÓDULO
1
2
TRIAN
3
4
5
13
1
t1 - Dibujo la base.
t2 - Dibujo el poste.
t3 – TRIAN
t4 - TRIAN
3
t1 - Dibujo el rectángulo.
t2 - TRIAN
Modularización
2
4
t1 – TRIAN
t2 - Dibujo la cola.
t1 – TRIAN
t2 – TRIAN
t3 – TRIAN
t4 – TRIAN
t5 – TRIAN
t6 – TRIAN
t7 - Dibujo linea1.
t8 - Dibujo linea2.
t9 - Dibujo linea3.
14
5
t1 - Dibujo rectángulo1.
t2 - Dibujo rectángulo2.
t3 - TRIAN
t4 - TRIAN
t5 - TRIAN
t6 - TRIAN
Modularización
Invocación
15
Modularización
Acciones Primitivas
Procesador
Programa Principal.
Solamente puede tener
12 órdenes
16
Modularización
17
Modularización
Ejercicio
18
Modularización
Consideraciones:
• - Se debe tener en cuenta el estado previo del ambiente
antes de la invocación del módulo.
• - Se debe tener en cuenta el estado del ambiente luego
de la ejecución del módulo.
Ejemplo:
- Se desea realizar la gráfica del farol con el uso del modulo TRIAN.
- Suponga la existencia de un módulo TRIAN que grafica un triángulo equilátero.
- orientación de la tortuga y recorrido que realiza para
la construcción del triángulo dentro del módulo.
19
Modularización
1
Invoca a TRIAN
Sale de TRIAN
Invoca a TRIAN
Sale de TRIAN
En Lenguaje de Diseño el concepto de Modularización se implementa con los
SUBALGORITMOS
20
Lenguaje de Diseño: Subalgoritmos
Ejemplo:
Dado un número n entero positivo, se desea calcular e imprimir el factorial de n,
n2 y de n3. Se debe tratar de utilizar el algoritmo para el calculo del factorial como
un módulo (subalgoritmo).
Nota:
el algoritmo Factorial permite
calcular el valor factorial para un
número cualquiera N ingresado
por el usuario.
ALGORITMO “Factorial”
COMENZAR
N, FACT, I: entero
LEER N
FACT 1
PARA I DESDE 1 HASTA N CON PASO 1 HACER
FACT
FACT * I
FINPARA
ESCRIBIR FACT
FIN
21
Lenguaje de Diseño: Subalgoritmos
SUBALGORITMO “FACTORIAL”
COMENZAR
N, FACT, I: entero
LEER N
FACT 1
PARA I DESDE 1 HASTA N CON PASO 1 HACER
FACT
FACT * I
FINPARA
ESCRIBIR FACT
FIN
ALGORITMO “Calculo Factoriales”
COMENZAR
FACTORIAL
FACTORIAL
FACTORIAL
FIN
22
Lenguaje de Diseño: Subalgoritmos
Invocación
FACTORIAL
Pantalla
Entrada
Retorno
“Calculo Factoriales”
Tres veces se invoca el módulo
FACTORIAL, quien además de
calcular el factorial lo muestra por
pantalla
23
Lenguaje de Diseño: Subalgoritmos
Inconveniente:
- se debe ingresar el número toda vez que se invoca el
subalgoritmo.
- alta probabilidad de cometer error en el ingreso.
Se pretende:
- ingresar el dato una única vez.
24
Lenguaje de Diseño: Subalgoritmos
Pantalla
Entrada
N
N2
FACTORIAL
Muestra
Pantalla
Calculo Factoriales
25
Lenguaje de Diseño: Subalgoritmos
ALGORITMO “Calculo Factoriales”
COMENZAR
N, AUX: entero
LEER N
AUX N
FACTORIAL
N
FACTORIAL
N
FACTORIAL
FIN
AUX 3
AUX 2
SUBALGORITMO “FACTORIAL”
COMENZAR
FACT, I: entero
FACT 1
PARA I DESDE 1 HASTA N CON PASO 1 HACER
FACT
FACT * I
FINPARA
ESCRIBIR FACT
FIN
?
26
Lenguaje de Diseño: Subalgoritmos
ALGORITMO “Calculo Factoriales”
COMENZAR
N, AUX: entero
LEER N
AUX N
FACTORIAL(N)
N
AUX 2
FACTORIAL(N)
N
AUX 3
FACTORIAL(N)
FIN
FINPARA
ESCRIBIR FACT
FIN
Es necesario poder “comunicarle” al subalgoritmo el valor
que necesita, en este caso el valor de N
SUBALGORITMO “FACTORIAL” (in NU:entero)
COMENZAR
FACT, I: entero
FACT 1
PARA I DESDE 1 HASTA NU CON PASO 1 HACER
FACT
FACT * I
27
Lenguaje de Diseño: Subalgoritmos
Supongamos que se desea sacar del módulo FACTORIAL la tarea de mostrar por pantalla
FACTORIAL
Invocación
Retorno
Muestra
Es necesario que el módulo
devuelva el resultado para que,
desde el algoritmo se muestre por
pantalla
Entrada
Calculo Factoriales
Pantalla
28
ALGORITMO “Calculo Factoriales”
COMENZAR
N, AUX, FACT: entero
LEER N
AUX N
FACTORIAL(N, FACT)
ESCRIBIR FACT
N
FACTORIAL(N, FACT)
ESCRIBIR FACT
N
FACTORIAL(N, FACT)
ESCRIBIR FACT
FIN
AUX 2
AUX 3
Calculo Factoriales
Lenguaje de
Comentarios de: Modularización: Subalgoritmos - Lenguaje de Diseño (0)
No hay comentarios