Lenguaje de Diseño - Departamento de...

47
1 Lenguaje de Diseño Primer Cuatrimestre 2016

Transcript of Lenguaje de Diseño - Departamento de...

Page 1: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

1

Lenguaje de Diseño

Primer Cuatrimestre 2016

Page 2: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

2

Programación Modular

Programación Estructurada

Estructuras de Control

Secuencia

Condicional

Iteración

Programas fáciles de leer y modificar

Técnicas de Diseños Algoritmos Voraces

Programación

Dinámica

Algoritmos Exhaustivos

Dividir y Conquistar

Dividir a un problema en subproblemas más

simples Módulo Programación Modular

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 3: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

3

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

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 4: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

t1 - Dibujo la base. t2 - Dibujo el poste. t3 - Dibujo el triángulo inferior. t4 - Dibujo el triángulo superior.

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016 4

Lenguaje de Diseño: Modularización

1 2

3

2 t1 - Dibujo el triángulo. t2 - Dibujo la cola.

3 t1 - Dibujo el rectángulo. t2 - Dibujo el triángulo.

Page 5: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

5

Lenguaje de Diseño: Modularización

4

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.

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.

Ojo!! No esta la definicion de la sintaxis de subalg. Se podria hacer otro ejemplo de arreglos donde se invoca 2 veces al subalgoritmo

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 6: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

6

2 t1 - Dibujo el triángulo. t2 - Dibujo la cola.

3 t1 - Dibujo el rectángulo. t2 - Dibujo el triángulo. 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.

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.

1 t1 - Dibujo la base. t2 - Dibujo el poste. t3 - Dibujo el triángulo inferior. t4 - Dibujo el triángulo superior.

1 t1 - Dibujo la base. t2 - Dibujo el poste. t3 - Dibujo el triángulo inferior. t4 - Dibujo el triángulo superior.

2 t1 - Dibujo el triángulo. t2 - Dibujo la cola.

3 t1 - Dibujo el rectángulo. t2 - Dibujo el triángulo. 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.

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.

Lenguaje de Diseño: Modularización

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 7: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

7

1 2

3

5 4

Algoritmo de dibujo del triángulo

TRIAN

Lenguaje de Diseño: Modularización

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 8: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

8

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.

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

Lenguaje de Diseño: Modularización

Dividirlo en pequeños problemas

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 9: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

9

TRIAN es un algoritmo común al conjunto de problemas

TRIAN es un MÓDULO

1 2

3

5 4

TRIAN

Lenguaje de Diseño: Modularización

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 10: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

10

1 t1 - Dibujo la base. t2 - Dibujo el poste. t3 – TRIAN t4 - TRIAN

2 t1 – TRIAN t2 - Dibujo la cola.

3 t1 - Dibujo el rectángulo. t2 - TRIAN

4 t1 – TRIAN t2 – TRIAN t3 – TRIAN t4 – TRIAN t5 – TRIAN t6 – TRIAN t7 - Dibujo linea1. t8 - Dibujo linea2. t9 - Dibujo linea3.

Lenguaje de Diseño: Modularización

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 11: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

11

5 t1 - Dibujo rectángulo1. t2 - Dibujo rectángulo2. t3 - TRIAN t4 - TRIAN t5 - TRIAN t6 - TRIAN

Invocación

Lenguaje de Diseño: Modularización

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 12: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

12

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.

Lenguaje de Diseño: Modularización

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 13: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

13

Lenguaje de Diseño: Modularización

1 Invoca a TRIAN

Invoca a TRIAN

Sale de TRIAN

Sale de TRIAN

En Lenguaje de Diseño el concepto de Modularización se implementa con los SUBALGORITMOS  

¡ERROR!

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 14: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

14

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).

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

Lenguaje de Diseño: Subalgoritmos

Nota: el algori tmo FACTORIAL permite calcular el valor factorial para un número cualquiera N ingresado por el usuario.

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 15: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

15

ALGORITMO “Calculo Factoriales” COMENZAR FACTORIAL FACTORIAL FACTORIAL FIN

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

SUBALGORITMO “FACTORIAL” COMENZAR

Lenguaje de Diseño: Subalgoritmos

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 16: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

16

Lenguaje de Diseño: Subalgoritmos

“Calculo Factoriales”

FACTORIAL Pantalla Invocación Muestra

Retorno

Tres veces se invoca el módulo FACTORIAL, quien además de calcular el factorial lo muestra por pantalla

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 17: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

17

Inconveniente: - se debe ingresar el número toda vez que se invoca el subalgoritmo. -  alta probabilidad de cometer error en el ingreso.

Lenguaje de Diseño: Subalgoritmos

Se pretende: - ingresar el dato una única vez.

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 18: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

18

Lenguaje de Diseño: Subalgoritmos

Calculo Factoriales

FACTORIAL Pantalla N Muestra

N�2

Algoritmo

Subalgoritmo

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 19: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

19

ALGORITMO “Calculo Factoriales” COMENZAR N, AUX: entero LEER N AUX N FACTORIAL N AUX � 2 FACTORIAL N AUX � 3 FACTORIAL FIN

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

?

Lenguaje de Diseño: Subalgoritmos

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 20: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

ALGORITMO “Calculo Factoriales” COMENZAR N, AUX: entero LEER N AUX N FACTORIAL(N) N AUX � 2 FACTORIAL(N) N AUX � 3 FACTORIAL(N) FIN

20

Lenguaje de Diseño: Subalgoritmos

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 FINPARA ESCRIBIR FACT FIN

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 21: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

21

Lenguaje de Diseño: Subalgoritmos

Calculo Factoriales

FACTORIAL

Pantalla

Invocación

Muestra

Retorno

Es necesario que el módulo devuelva el resultado para que, desde el algoritmo se muestre por pantalla

Supongamos que se desea sacar del módulo FACTORIAL la tarea de mostrar por pantalla

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 22: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

22

ALGORITMO “Calculo Factoriales” COMENZAR N, AUX, FACT: entero LEER N AUX N FACTORIAL(N, FACT) ESCRIBIR FACT N AUX � 2 FACTORIAL(N, FACT) ESCRIBIR FACT N AUX � 3 FACTORIAL(N, FACT) ESCRIBIR FACT FIN

Lenguaje de Diseño: Subalgoritmos

Calculo Factoriales

FACTORIAL

Pantalla

Invocación

Muestra

Retorno

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 23: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

23

ALGORITMO “Calculo Factoriales” COMENZAR N, AUX, FACT: entero LEER N AUX N FACTORIAL(N, FACT) ESCRIBIR FACT N AUX � 2 FACTORIAL(N, FACT) ESCRIBIR FACT N AUX � 3 FACTORIAL(N, FACT) ESCRIBIR FACT FIN

Lenguaje de Diseño: Subalgoritmos

SUBALGORITMO “Factorial” (in NU:entero, out FA:entero) COMENZAR I: entero FA 1 PARA I DESDE 1 HASTA NU CON PASO 1 HACER

FA FA * I FINPARA FIN

¿Qué función cumple NU y FA?

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 24: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

ALGORITMO “Calculo Factoriales” COMENZAR N, AUX, FACT: entero LEER N AUX N FACTORIAL(N, FACT) ESCRIBIR FACT N AUX � 2 FACTORIAL(N, FACT) ESCRIBIR FACT N AUX � 3 FACTORIAL(N, FACT) ESCRIBIR FACT FIN

24

Lenguaje de Diseño: Subalgoritmos

Parámetros Actuales

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 25: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

25

Parámetros Formales

SUBALGORITMO “Factorial” (in NU:entero, out FA:entero) COMENZAR I: entero FA 1 PARA I DESDE 1 HASTA NU CON PASO 1 HACER

FA FA * I FINPARA FIN

Lenguaje de Diseño: Subalgoritmos

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 26: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

26

FACTORIAL( N, FACT )

SUBALGORITMO “Factorial” (in NU:entero, out FA:entero) Los parámetros Formales se definen:

4 in, son sólo parámetros de ingreso de datos. 4 out, solo parámetros de salida de datos. 4 in out, a través de ellos se ingresan los datos al subalgoritmo y el subalgoritmo devuelve información.

Lenguaje de Diseño: Subalgoritmos

Invocación

Definición

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 27: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

27

Restricciones: Si el parámetro formal fue definido

4 in, los parámetros actuales solo pueden ser constantes, variables, expresiones o valores de funciones. 4 out o in out, los parámetros actuales deben estar

definidos en el ámbito del algoritmo invocante pues es allí donde se debe retornar los resultados.

Lenguaje de Diseño: Subalgoritmos

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 28: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

28

Lenguaje de Diseño: Subalgoritmos - Ámbito

Ambito

para N, AUX, FACT

COMENZAR N, AUX, FACT: entero LEER N AUX N FACTORIAL(N, FACT) ESCRIBIR FACT N AUX � 2 FACTORIAL(N, FACT) ESCRIBIR FACT N AUX � 3 FACTORIAL(N, FACT) ESCRIBIR FACT FIN

ALGORITMO “Calculo Factoriales”

Ámbito de una variable (en inglés scope: alcance) es el contexto o zona del programa en que la misma está definida y por lo tanto puede ser accedida y utilizada.

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 29: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

29

COMENZAR I: entero FA 1 PARA I DESDE 1 HASTA NU CON PASO 1 HACER

FA FA * I FINPARA FIN

Ámbito

sólo

para

NU, FA, I

SUBALGORITMO “Factorial” (in NU:entero, out FA:entero)

Lenguaje de Diseño: Subalgoritmos

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 30: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

30

Lenguaje de Diseño: Subalgoritmos

Formalmente:

< clase de parámetro > < nbre_par > : <tipo_de_dato_Vble>  

Donde la declaración de cada parámetro debe tener los siguiente datos:

in    out        in  out  

Entero  Real  Carácter  Lógico  Arreglo  de  …..  

SUBALGORITMO  “Factorial”  (in  N:entero,  out  FACT:entero)  

Ejemplos:

SUBALGORITMO “<Nombre_subalgoritmo>” (<lista de parámetros>) COMENZAR <cuerpo del subalgoritmo> FIN

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 31: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

31

Lenguaje de Diseño: Subalgoritmos

SUBALGORITMO  “Factorial”  (in  N:entero,  out  FACT:entero)  

Ejemplos:

SUBALGORITMO  “Factorial”  (in  N:entero,  out  FACT:entero)  

SUBALGORITMO  “Ordeno”  (inout  V:  arreglo  de  entero,  in  M,  N:  entero)  

SUBALGORITMO  “Mult”  (in  A:  real,  inout  B:  entero,  out  N:  real)  

¿Invocación?

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 32: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

32

Lenguaje de Diseño: Subalgoritmos

Ejemplo 2: ALGORITMO “GASTOS” COMENZAR li, ls, c: entero limite: entero suma: real ImpuestosB: arreglo [1..24] de real Cadena: arreglo [1 .. 25] de caracter li ← 1 ls ← 15 suma ← 0,0 ESCRIBIR “Ingrese codigo del impuesto (1-Gas, 2-Patente):” LEER c BUSCA (2, ImpuestosB, ls, suma) BUSCA (c, ImpuestosB, li, ls, suma + 2) BUSCA (c, ls, ImpuestosB, li, suma) BUSCA (suma, ImpuestosB, ls, x) FIN

SUBALGORITMO “BUSCA” (in cod: entero, in A: arreglo de real, in x: entero, in y: entero, inout z: entero)

COMENZAR j: entero . FIN

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 33: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

33

Lenguaje de Diseño: Subalgoritmos

Ejemplo3:

SUBALGORITMO “INGRESO” (< ¿Parámetros? >) COMENZAR .   ESCRIBIR “¿Cuantos caracteres ingresara?” LEER y PARA j DESDE x HASTA y CON PASO 1 HACER LEER A[j] FINPARA FIN

ALGORITMO “GASTOS” COMENZAR li, ls, c: entero limite: entero suma: real ImpuestosB: arreglo [1..24] de real Cadena: arreglo [1 .. 25] de caracter li ← 1 ls ← 15 suma ← 0,0 ESCRIBIR “Ingrese codigo del impuesto (1-Gas, 2-Patente):” LEER c ESCRIBIR “El total pagado del impuesto ” INGRESO (< ¿Parámetros actuales? >) ESCRIBIR “ Ingreso: ”, limite ,“ caracteres” FIN

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 34: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

34

Lenguaje de Diseño: Subalgoritmos

ALGORITMO “EJEMPLO 2” COMENZAR Cur_A: arreglo [1..30] de entero I, Valor: entero PARA I DESDE 1 HASTA 30 CON PASO 1 HACER ESCRIBIR “Ingrese Nota” LEER Cur_A [I] MIENTRAS (Cur_A[I] < 1 v Cur_A [I] > 10) HACER

ESCRIBIR “Ingrese Nota” LEER Cur_A [I]

FINMIENTRAS FINPARA ………. ………………….. FIN

Ejemplo 4: ¿Que hace esta parte del siguiente algoritmo?

Se ingresan 30 valores enteros en un arreglo l l a m a d o C u r _ A (supongamos un Curso A).

¿Como se debería modificar este algoritmo si además se desea cargar las notas del Curso B que tiene 45 alumnos?

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 35: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

35

ALGORITMO “EJEMPLO 2” COMENZAR Cur_A: arreglo [1..30] de entero Cur_B: arreglo [1..45] de entero I, Valor: entero PARA I DESDE 1 HASTA 30 CON PASO 1 HACER ESCRIBIR “Ingrese Nota” LEER Cur_A [I] MIENTRAS (Cur_A[I] < 1 v Cur_A [I] > 10) HACER

ESCRIBIR “Ingrese Nota” LEER Cur_A [I]

FINMIENTRAS FINPARA

PARA I DESDE 1 HASTA 45 CON PASO 1 HACER ESCRIBIR “Ingrese Nota” LEER Cur_B [I] MIENTRAS (Cur_B[I] < 1 v Cur_B [I] > 10) HACER ESCRIBIR “Ingrese Nota” LEER Cur_B[I] FINMIENTRAS FINPARA …………. FIN

Lenguaje de Diseño: Subalgoritmos

¿ C o m o m o d i f i c a m o s e s t e algoritmo si además tenemos que cargar las notas del Curso C, D,……etc ?

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 36: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

36

¿Qué tienen en común estas dos porciones de código ? ALGORITMO “EJEMPLO 2” COMENZAR Cur_A: arreglo [1..30] de entero Cur_B: arreglo [1..45] de entero I, Valor: entero PARA I DESDE 1 HASTA 30 CON PASO 1 HACER

ESCRIBIR “Ingrese Nota” LEER Cur_A [I] MIENTRAS (Cur_A[I] < 1 v Cur_A [I] > 10) HACER ESCRIBIR “Ingrese Nota” LEER Cur_A [I] FINMIENTRAS

FINPARA

PARA I DESDE 1 HASTA 45 CON PASO 1 HACER ESCRIBIR “Ingrese Nota” LEER Cur_B [I] MIENTRAS (Cur_B[I] < 1 v Cur_B [I] > 10) HACER

ESCRIBIR “Ingrese Nota” LEER Cur_B[I]

FINMIENTRAS FINPARA ………………….. FIN

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 37: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

37

¿Qué tienen diferente estas dos porciones de código ? ALGORITMO “EJEMPLO 2” COMENZAR Cur_A: arreglo [1..30] de entero Cur_B: arreglo [1..45] de entero I, Valor: entero PARA I DESDE 1 HASTA 30 CON PASO 1 HACER

ESCRIBIR “Ingrese Nota” LEER Cur_A [I] MIENTRAS (Cur_A[I] < 1 v Cur_A [I] > 10) HACER ESCRIBIR “Ingrese Nota” LEER Cur_A [I] FINMIENTRAS

FINPARA

PARA I DESDE 1 HASTA 45 CON PASO 1 HACER ESCRIBIR “Ingrese Nota” LEER Cur_B [I] MIENTRAS (Cur_B[I] < 1 v Cur_B [I] > 10) HACER

ESCRIBIR “Ingrese Nota” LEER Cur_B[I]

FINMIENTRAS FINPARA ………….. FIN

Solución: definimos un subalgoritmo con la tarea que se repite y los datos que cambian lo comunicamos como parámetro

Page 38: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

38

ALGORITMO “EJEMPLO 2” COMENZAR Cur_A: arreglo [1..30] de entero Cur_B: arreglo [1..45] de entero I, Valor: entero

…………. ………………….. FIN

Llenado Llenado

(Cur_A, 1, 30 ) (Cur_B, 1, 45)

Definimos un Subalgoritmo que va a realizar el Llenado del Arreglo

Invocación

Lenguaje de Diseño: Subalgoritmos

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 39: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

39

(inout C: arreglo de entero, in M, N: entero) SUBALGORITMO “Llenado”

FIN

I: entero PARA I DESDE M HASTA N CON PASO 1 HACER ESCRIBIR “Ingrese Nota” LEER C[I] MIENTRAS (C[I] < 1 v C[I] > 10) HACER

ESCRIBIR “Ingrese Nota” LEER C[I]

FINMIENTRAS FINPARA

COMENZAR

Lenguaje de Diseño: Subalgoritmos

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 40: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

40

Lenguaje de Diseño: Subalgoritmos

ALGORITMO “EJEMPLO 2” COMENZAR Cur_A: arreglo [1..30] de entero Cur_B: arreglo [1..45] de entero I, Valor: entero

…………. ………………….. FIN

Llenado

Llenado

(Cur_A, 1, 30 )

(Cur_B, 1, 45 )

Cur_C: arreglo [1..30] de entero Cur_D: arreglo [1..30] de entero

Llenado Llenado

(Cur_C, 1, Valor )

(Cur_D, 1, 30 )

ESCRIBIR “Cuantos Alumnos tiene el Curso C” LEER Valor

Faltan controles!!!

¿Como modificamos este algoritmo si la cantidad de alumnos del Curso C varia ( nunca supera los 30 )?

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 41: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

41

Lenguaje de Diseño: Subalgoritmos

SUBALGORITMO “Llenado” (in out C: arreglo de entero, in M, N: entero)

FIN

I: entero PARA I DESDE M HASTA N CON PASO 1 HACER ESCRIBIR “Ingrese Nota” LEER C[I] MIENTRAS (C[I] < 1 v C[I] > 10) HACER

ESCRIBIR “Ingrese Nota” LEER C[I]

FINMIENTRAS FINPARA

COMENZAR

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 42: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

42

(in out C: arreglo de entero, in M, N: entero) SUBALGORITMO “Llenado”

FIN

PARA I DESDE M HASTA N CON PASO 1 HACER ESCRIBIR “Ingrese Nota” LEER C[I] MIENTRAS (C[I] < 1 v C[I] > 10) HACER ESCRIBIR “Ingrese Nota” LEER C[I] FINMIENTRAS FINPARA

I: entero COMENZAR

¿Como modificamos este algoritmo si vamos a cargar las notas a partir del alumno 10 hasta el 20 en el Curso D?

ALGORITMO “EJEMPLO 2” COMENZAR Cur_A: arreglo [1..30] de entero Cur_B: arreglo [1..45] de entero I, Valor: entero

FIN

Llenado

Llenado

(Cur_A, 1, 30 )

(Cur_B, 1, 45 )

Cur_C: arreglo [1..30] de entero Cur_D: arreglo [1..30] de entero

ESCRIBIR “Cuantos Alumnos tiene el Curso C” LEER Valor

Llenado Llenado

(Cur_C, 1, Valor ) (Cur_D, 10, 20 )

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 43: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

Ejemplo: Intercambiar el contenido de dos variables enteras . El algoritmo deberá ser diseñado como subalgoritmo denominado “Intercambio”.

43

Solución: - Intercambiar los contenidos mediante la ayuda de una variable auxiliar que almacene temporariamente el contenido de una de ellas. Ejemplo: estado inicial: 21 35 ?

A B Aux 1º acción: 21 35 21

A B Aux

2º acción: 35 35 21 A B Aux

3º acción: 35 21 21 A B Aux

Lenguaje de Diseño: Subalgoritmos

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 44: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

44

Objetos:

SUBALGORITMO “Intercambio” ( ) COMENZAR FIN

A - variable entera con el primer dato. B - variable entera con el segundo dato. AUX - variable auxiliar.

Lenguaje de Diseño: Subalgoritmos

¿Variables? ¿Parámetros?

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 45: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

45

SUBALGORITMO “Intercambio” ( A,B:entero ) COMENZAR AUX: entero AUX A A B B AUX FIN

Algoritmo Depurado:

Lenguaje de Diseño: Subalgoritmos

¿Clase de Parámetros?

inout

in    out        in  out  

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 46: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

46

Lenguaje de Diseño: Subalgoritmos Ejercicio: Analice el siguiente algoritmo. Se pide que defina (en forma completa) los parámetros formales, parámetros actuales y las definiciones de variables correspondientes para un buen funcionamiento del mismo SUBALGORITMO “Ingreso” ( ) COMENZAR ESCRIBIR “INGRESE LA CANTIDAD DE CARACTERES” LEER LS MIENTRAS LS <=0 v LS > 100 HACER ESCRIBIR “INGRESE CANTIDAD” LEER LS VECES VECES + 1 FINMIENTRAS I LI MIENTRAS I <= LS HACER ESCRIBIR “INGRESE CARACTER” LEER ARR[I] I I + 1 FINMIENTRAS FIN

ALGORITMO “FINAL” COMENZAR Acar: arreglo [1..100] de caracter LI, LS, ERROR: entero LI 1 Ingreso ( )

ESCRIBIR “Ingreso “, ERROR, “veces un valor incorrecto” FIN

Int. a la Computación-Int. a la Programación – Fund. De la Informática - 2016

Page 47: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/... · t 1 - Dibujo la base. t 2 - Dibujo el poste. t 3 - Dibujo el triángulo inferior.

47

FIN