Post on 22-Apr-2020
transcript
1
Lenguaje de Diseño
Segundo Cuatrimestre 2019
Fund. De Informática – Int. a la Programación – Int. a la Computación
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
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
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.
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.
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
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
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).
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
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.
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
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
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.
14
Lenguaje de Diseño: Subalgoritmos
Calculo Factoriales
FACTORIAL Pantalla N Muestra
N�2
Pantalla Entrada
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
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
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
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
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
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?
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
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
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
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
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.
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
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
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
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)
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?
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 ?
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
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
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
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
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 )?
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 )
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
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
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
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?
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
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
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
45
FIN