1
Lenguaje de Diseño
Primer Cuatrimestre 2016
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
47
FIN