Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facultad de ingeniería
Introducción a la informática
Clase 08
Modularización
P P1
P1 P2 P2 P5
Parámetro
Modulo o
Subrutina
Valor de
Retorno
Definición de módulo
Un módulo es una rutina, subrutina, subalgoritmo,
procedimiento o función que puede definirse dentro de
un algoritmo u otro módulo superior con el fin de ejecutar
una tarea específica y puede ser llamado o invocado
desde el algoritmo principal o desde un módulo superior
cuando sea necesario.
Diseño Top-Down: Comunicación
Nivel 0 P
Nivel 1 P1 P2
• Tipos de parámetros
• Parámetros Formales: aparecen en la
declaración de la subrutina.
P
A, B, C
P1 P2
A, D C, D, F
• En una asignación:
p := factorial(5)
• En una operación escribir:
writeln(factorial(5));
• En una expresión algebraica
y := 1 / factorial(x) - 1 / factorial(z);
• En una condición
if (y > factorial(x)) then …
if (primo(x)) then …
Procedimiento como una acción simple
Menu(OP)
Intercambiar(A,B)
LimpiarPantalla
Ejemplo
principal
nroletra(N) Separarador
Ejemplo: Módulos a diseñar
Módulo Descripción
El módulo tiene un parámetro formal (OP tipo numérico
menu(OP) entero) dónde recibe un valor indefinido y devuelve en el
parámetro un valor entre 1 y 4.
El módulo tiene un parámetro formal (N tipo numérico
entero) que recibe un valor indeterminado y devuelve en
ingresar(N)
N un valor validado en [0,9] y muestra el valor de N en
letras
El módulo tiene un parámetro formal (X tipo numérico
Mostrar(X) entero) que recibe un valor indeterminado y escribe el
valor del parámetro en letras entre dos separadores
El módulo tiene un parámetro formal (X de tipo numérico
entero) dónde recibe un valor numérico y devuelve en su
validar09(X)
identificador del módulo el valor lógico Verdadero si el
valor del parámetro X está en [0,9] o devuelve el valor
lógico Falso en caso contrario.
Ejemplo: Módulos a diseñar
Módulo Descripción
El módulo recibe en el parámetro formal(N tipo entero)
donde recibe un valor numérico y devuelve en su
nroletra(N)
identificador una cadena de caracteres que es el número
en letras.
El módulo tiene dos parámetros formales (A,B tipo entero)
donde recibe dos valores y devuelve los valores
cambiar(A,B)
intercambiados, el valor de A se asigna a B y el de B se
asigna a A.
Este módulo devuelve en su identificador el valor lógico
par(A) verdadero si el valor recibido en el parámetro formal A es
par o devuelve el valor lógico Falso en caso contrario.
Módulo que devuelve en su identificador un valor entero
resto(A,B) que es el resto de la división entera entre el parámetro A
dividido el parámetro B ambos de tipo entero.
separador Módulo sin parámetros que escribe asteriscos
Ejemplo: principal
program principal;
var
A,B,OP: integer;
begin
Repeat
menu(OP);
case OP of
1: begin
ingresar(A);
ingresar(B);
end;
2: if (par(A)) and (par(B)) then
begin
cambiar(A,B);
mostrar(A);
mostrar(B);
end;
3: writeln('Hasta la vista baby…‘);
else
writeln('error‘);
end;
until OP=3;
End.
Ejemplo: menu, ingresar
procedure menu(var OP: integer);
begin
writeln('1-Ingresar Datos de A, B y mostrar‘);
writeln('2-Cambiar A con B si son pares y mostrar‘);
writeln('3-Salir‘);
writeln('Elija una opcion‘);
readln(OP);
End; procedure ingresar(var N: integer);
begin
Repeat
writeln('ingrese un nro en [0,9]‘);
readln(N);
until validar09(N);
mostrar(N);
End;
Ejemplo: validar09, mostrar,separador
function validar09(X: integer):boolean;
var procedure mostrar(X: integer);
Aux: boolean; Begin
begin separador;
Aux := False; writeln(X, nroletra(X));
if (X>=0) and (X<=9) then separador;
Aux := true; End;
validar09 := Aux;
End;
procedure separador;
begin
writlen('**********************‘);
End;
Ejemplo function par(A: integer):boolean;
var
function nroLetra(N: integer):String; Aux: boolean;
var begin
cadena: string; Aux := False;
begin
case N of if resto(A,2)=0 then
0: cadena := 'cero‘; Aux := true;
1: cadena := 'uno‘; par := Aux;
2: cadena := 'dos‘; End;
3: cadena := 'tres‘;
4: cadena := 'cuatro‘;
5: cadena := 'cinco‘;
6: cadena := 'seis‘;
7: cadena := 'siete‘; function resto(A, B: integer):integer;
8: cadena := 'ocho‘; var
9: cadena := 'nueve‘; R: integer;
else begin
cadena := 'error‘; R := A–A/B*B;
end; resto := R;
nroLetra := cadena; End;
End;
Serie de Taylor del coseno x
• Función Potencia
• Función División
• Función Factorial
Cajero automático
Cajero
automático