lenguaje de diseño - departamento de...

45
1 Lenguaje de Diseño Segundo Cuatrimestre 2019 Fund. De Informática – Int. a la Programación – Int. a la Computación

Upload: others

Post on 22-Apr-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

1

Lenguaje de Diseño

Segundo Cuatrimestre 2019

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

Page 2: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

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

Page 3: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

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

Page 4: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

4

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.

Ejercicio 10.4 Discuta y analice con sus compañeros lo que pasa con la canción de El viejo MacDonald tenía una granja: El viejo MacDonald tenía una granja, ¡ia, ia, io! Y en su granja tenía una vaca, ¡ia, ia, io!, con un muu por aquí, con un muu por allá, en todos lados muu muu. El viejo MacDonald tenía una granja, ¡ia, ia, io! El viejo MacDonald tenía una granja, ¡ia, ia, io! Y en su granja había un cerdito, ¡ia, ia, io!, con un oink por aquí, con un oink por allá, por todos lados oink oink. El viejo MacDonald tenía una granja, ¡ia, ia, io! El viejo MacDonald tenía una granja, ¡ia, ia, io! Y en su granja tenía un caballo, ¡ia, ia, io!, con un eee por aquí, con un eee por allá, por todos lados eee eee. El viejo MacDonald tenía una granja, ¡ia, ia, io! El viejo MacDonald tenía una granja, ¡ia, ia, io! Y en su granja había un gallito, ¡ia, ia, io!, con un quiquirí de aquí, un quiquirí de allá, por todos lados quiquirí. El viejo MacDonald tenía una granja, ¡ia, ia, io!

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.

Page 5: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

5

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.

Ejercicio 10.4 Discuta y analice con sus compañeros lo que pasa con la canción de El viejo MacDonald tenía una granja: El viejo MacDonald tenía una granja, ¡ia, ia, io! Y en su granja tenía una vaca, ¡ia, ia, io!, con un muu por aquí, con un muu por allá, en todos lados muu muu. El viejo MacDonald tenía una granja, ¡ia, ia, io! El viejo MacDonald tenía una granja, ¡ia, ia, io! Y en su granja había un cerdito, ¡ia, ia, io!, con un oink por aquí, con un oink por allá, por todos lados oink oink. El viejo MacDonald tenía una granja, ¡ia, ia, io! El viejo MacDonald tenía una granja, ¡ia, ia, io! Y en su granja tenía un caballo, ¡ia, ia, io!, con un eee por aquí, con un eee por allá, por todos lados eee eee. El viejo MacDonald tenía una granja, ¡ia, ia, io! El viejo MacDonald tenía una granja, ¡ia, ia, io! Y en su granja había un gallito, ¡ia, ia, io!, con un quiquirí de aquí, un quiquirí de allá, por todos lados quiquirí. El viejo MacDonald tenía una granja, ¡ia, ia, io!

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. <Nro> elefantes se balanceaban sobre la tela de una araña, como veían que resistía fueron a llamar a otro elefante.

Page 6: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

6

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

Dividirlo en pequeños problemas

Modularización

Page 7: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

Ventajas:

•  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

.

7

Programación Modular

Modularización

Page 8: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

8

Algunos criterios de Descomposición Modular

Modularización

•  Es importante un compromiso entre el tamaño de los módulos y la complejidad de la aplicación. Si un programa se descompone en muchas unidades, decrece la efectividad. Cuando el Nº de módulos aumenta, decrece el esfuerzo de realizarlos pero aumenta el esfuerzo de integración.

•  Independencia funcional: el módulo realiza una única tarea y se comunica lo menos posible con los módulos restantes.

•  Un módulo se debe dividir hasta conseguir un nivel mínimo de independencia funcional aceptable.

•  La Independencia funcional se puede medir según: la cohesión (mide la relación entre las partes del módulo que deben realizar una única función) y el acoplamiento (mide la relación con el resto de los módulos).

Page 9: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

9

Técnica de diseño: Top Down

Problema

Sub problema 1

Sub problema 2

Sub problema 3

T1 T2 T3

T11 T12 T13 T31 T32

T1

T11 T12

Modularización

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

Page 10: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

10

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 algoritmo Factorial permite calcular el valor factorial para un número cualquiera N ingresado por el usuario.

Page 11: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

11

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

Page 12: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

12

Lenguaje de Diseño: Subalgoritmos

“Calculo Factoriales”

FACTORIAL Pantalla Invocación

Retorno

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

Entrada

Page 13: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

13

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.

Page 14: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

14

Lenguaje de Diseño: Subalgoritmos

Calculo Factoriales

FACTORIAL Pantalla N Muestra

N�2

Pantalla Entrada

Page 15: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

15

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

Page 16: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

16

Según su ámbito las declaraciones pueden ser: 4 Globales: Afectan a todo el programa. Se almacenan en una zona de memoria común, accesible desde cualquier punto del programa y se mantiene mientras dura el programa. 4Locales: Sólo pueden ser accedidas en el módulo donde han sido declaradas. Se almacenan en una zona de memoria que se reserva cuando se llama al módulo y se destruye cuando termina la ejecución del módulo.

Lenguaje de Diseño: Subalgoritmos

Visibilidad o ámbito de las variable

Visibilidad o Á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.

Lenguaje de Diseño SOLAMENTE reconoce variables locales

Page 17: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

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

17

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

Page 18: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

18

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

Entrada

Page 19: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

19

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

Retorno

Muestra

Entrada

Page 20: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

20

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?

Page 21: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

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

21

Lenguaje de Diseño: Subalgoritmos

Parámetros Actuales

Page 22: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

22

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

Page 23: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

23

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

Page 24: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

24

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

Page 25: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

25

Lenguaje de Diseño: Subalgoritmos AMBITO

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.

Page 26: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

26

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

Page 27: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

27

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:

inoutinout

EnteroRealCarácterLógicoArreglode…..

SUBALGORITMO“Factorial”(inN:entero,outFACT:entero)

Ejemplos:

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

Page 28: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

28

Lenguaje de Diseño: Subalgoritmos Ejercicio:

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

Donde:

inoutinout

EnteroRealCarácterLógicoArreglode…..

SUBALGORITMO“Factorial”(inN:entero,outFACT:entero)

Ejemplos:

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

Definir un subalgoritmo que determine si un caracter caulquiera es una vocal mayúscula o no

Page 29: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

29

Lenguaje de Diseño: Subalgoritmos

SUBALGORITMO“Factorial”(inN:entero,outFACT:entero)

Ejemplos:

SUBALGORITMO“Factorial”(inN:entero,outFACT:entero)

SUBALGORITMO“Ordeno”(inoutV:arreglodeentero,inM,N:entero)

SUBALGORITMO“Mult”(inA:real,inB:entero,outN:real)

Page 30: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

30

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 2: ¿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?

Page 31: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

31

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] REPETIR FINPARA …………. FIN

Lenguaje de Diseño: Subalgoritmos

¿ C ó 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 ?

Page 32: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

32

¿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

Page 33: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

33

¿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 34: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

34

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

Page 35: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

35

(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

Page 36: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

36

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

Page 37: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

37

(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] REPETIR 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 )

Page 38: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

38

(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]

FINMENTRAS FINPARA

COMENZAR

Lenguaje de Diseño: Subalgoritmos

Se puede generalizar un poco más

Page 39: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

39

Lenguaje de Diseño: Subalgoritmos

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

FIN

I: entero PARA I DESDE M HASTA N CON PASO P 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

Page 40: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

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

40

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

Page 41: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

41

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?

Page 42: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

42

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

inoutinout

Page 43: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

43

Leng

uaje

de

Dis

eño:

Sub

algo

ritm

os

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

Page 44: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

44

Leng

uaje

de

Dis

eño:

Sub

algo

ritm

os

SUBALGORITMO “INGRESO”(out ARR: arreglo de entero, in LI: entero, out LS: entero, out VECESC: entero, out VECESV: entero) COMENZAR I: ENTERO VECESV ß 0 ESCRIBIR “INGRESE LA CANTIDAD DE VALORES” LEER LS MIENTRAS LS <=0 v LS > 100 HACER ESCRIBIR “INGRESE NUEVAMENTE” LEER LS VECESC ß VECESC + 1 FINMIENTRAS MIENTRAS LI <= LS HACER ESCRIBIR “INGRESE EL VALOR” LEER ARR[LI] MIENTRAS ARR[LI] <=10 v ARR[LI] > 20 HACER ESCRIBIR “INGRESE NUEVAMENTE” LEER ARR[LI] VECESVß VECESV + 1 FINMIENTRAS LI ← LI+1 FINMIENTRAS FIN

ALGORITMO “FINAL”COMENZAR

Acar: arreglo [1..100] de entero LI, LS, ERRORC, ERRORV, I: entero LI ß 1 Ingreso (Acar, LI, LS, ERRORC, ERRORV) PARA I DESDE LI HASTA LS CON PASO 1 HACER

ESCRIBIR Acar [I] FINPARA ESCRIBIR “Ingreso”,LS, “Valores y cometio” ,ERRORC, “errores. Durante el ingreso de datos cometio”, ERRORESV, “errores”

FIN

Ejercicio: Analice el siguiente algoritmo y determine qué subalgoritmo se puede definir

Page 45: Lenguaje de Diseño - Departamento de Informáticadirinfo.unsl.edu.ar/servicios/abm/assets/uploads/...4 Un elefante se balanceaba sobre la tela de una araña, como veía que resistía

45

FIN