Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase 2
Clase 2
2 Procedimientos y Funciones
TEMAS
de la
3 Comunicación entre módulos
CLASE
4 Ejercitación
1 Concepto de Modularización
Etapas de resolución de un problema por computadora
Problema del
Mundo Real
Análisis
Complejos
Modelo
Extensos Diseño
Modificables
Solución Implementación
Modularizada
Verificación
Metodología de diseño Top Down
Recepción
del Salida del Generación Generar listado
producto producto Informe de ofertas
Determinar
Actualizar lista
proveedor
del proveedor
del
correspondiente
Producto
Problema del
Mundo Real
Análisis
Modelo Diseño
Implementación
Solución
Modularizada
Módulos
Datos propios
s c r i bir
Datos compartidos o e
¿Cóm grama y
o
el Pr dulos?
ó
los m
En la etapa de implementación…
▪ Se debe elegir el lenguaje de programación para escribir los algoritmos de cada módulo y la declaración de sus datos
PROCEDIMIENTOS FUNCIONES
(PROCEDURE) (FUNCTION)
Tienen características comunes, pero ciertas particularidades determinan cual es el mas adecuado para implementar
un módulo particular
▪ Invocación
Conjunto de instrucciones que realiza una tarea específica y como resultado puede retornar
0, 1 o más valores.
Encabezamiento
Declaración de tipos internos
del módulo (opcional)
Declaración de variables
internas del módulo(opcional)
Sección de instrucciones
PROCEDURE
Conjunto de instrucciones que realiza una tarea específica y como resultado puede retornar
0, 1 o más valores.
Program uno;
………
End;
Begin
……
Calculo (parámetros actuales);
……
End.
PROCEDURE
Conjunto de instrucciones que realiza una tarea específica y como resultado puede retornar
0, 1 o más valores.
Program uno;
………
¿Qué ocurre
con el flujo de
procedure Calculo (Parámetros Formales);
control del
Type
programa?
….
Var
……
Begin
Encabezamiento
Declaración de tipos
(opcional)
Declaración de variables
(opcional)
Sección de instrucciones
Asignación
(obligatoria)
FUNCTION
Conjunto de instrucciones que realiza una tarea específica y como resultado retorna un
único valor de tipo simple.
Begin
…..
…..
write (cubo (parametro actual));
….
a:= cubo (4);
Luego de ejecutado el módulo, el flujo de ….
control retorna a la misma instrucción de if (cubo (parametro actual) > 100) then ….;
invocación del módulo
….
while (cubo (parametro actual) > 50) do
….
….
End.
Esquema general de un programa que utiliza módulos
tes
ns tan
program uno; co
de
ión
la rac
Const Dec s
a de t ipo
{Declaración de constantes del programa} Zon de
ión
rac s
e cla dida
de D e
acc dulos
a
Type Zon e s
abl los m
ó
a r i
{Declaración de tipos definidos} e v ama y
d r
a c ión prog
ar el
D ecl ión d
Var a de secc
n
Zo de la
{variables} des du l os
mó
l os
e
i ó n d s
Procedure Calculo (parámetros formales);
l a rac ed ida
…… e D
ec acc
d le s
Function EsPar (parámetros formales): Boolean; Zona ar iab ma
v ra
... de prog
ó n l
a raci ón de
l i
Dec secc
d e l a
Var a de
Zon o des
{variables} es
sol u t abl
c
s eje
ne
Begin {Sección del programa principal} u c cio
r
I nst
e
a d
…… Zon
End.
3 Comunicación entre módulos
Variables globales
Parámetros
Analicemos el alcance de Variables…
Program dos;
Variable
Var
s
a, b: integer; globales
Parámetr
procedure calculo(parámetros formales); os
var Variables
x: integer; Var b:integer;
Locales del ¿Dónde se pueden utilizar
Begin módulo a y b?
x:= 9; a:= 100; b:=0;
¿Dónde se puede utilizar
write (x);
x?
End;
Variable ¿Dónde se puede utilizar
Var Local del h?
h: char;
Begin program ¿Qué pasa si dentro de
a calculo se
a:= 80;
b:= a * 2; declara b: integer?
h:= ‘A’; ¿Qué pasa si dentro de
calculo(parámetros actuales); calculo se
End. declara b: char?
Variables globales, locales y parámetros
Procedure Function
Function tres (parámetros formales): tipo; c i
uno tres
var i: integer;
begin
Alcance i:= a+b;
uno (parámetros actuales);
de los tres:= (c+i)/100;
Teniendo en cuenta el alcance de las variables
end;
datos y la visibilidad de los módulos, analizar:
datos
Function seis (parámetros formales): tipo;
begin Teniendo en cuenta el alcance de las variables
a:= a+b; y la visibilidad de los módulos, analizar:
seis:= (a+c)/100;
end; ¿Qué invocaciones son válidas?
procedure calculo;
var x: integer; Variable
Begin
Local del Variables locales
módulo
x:= 9; a:= 100; (al módulo y al
write (x); programa)
End;
▪ Uso de memoria
Con este dato el módulo puede realizar operaciones y/o cálculos, pero fuera del
módulo ese dato NO reflejará cambios.
Program ejemplo1;
El módulo que recibe este parámetro puede operar con la información que se
encuentra en la dirección de memoria compartida y las modificaciones que se
produzcan se reflejarán en los demás módulos que conocen esa dirección de
memoria compartida.
Begin Begin
num:=9; num:=9;
uno (num); dos (num);
write (num); {2} write (num); {4}
End. End.
Un parámetro por valor debe ser tratado como una variable local del
módulo.
Variables
▪ Demasiadas variables en la sección de Se reduce significativamente la cantidad de
globales declaración variables globales
vs
Parámetros ▪ Falta de especificación del tipo de
comunicación entre los módulos Permite distinguir el tipo de comunicación
En resumen
abl es
d
men
eco Por valor
N o r
la !!
para nicación
u Por referencia
com
Cuando se invoca a un módulo se deben tener cuenta
las restricciones propias del lenguaje de
implementación. En Pascal:
Program ejemplo3;
Procedure Calcular (x, y: integer;
var suma, prod: integer);
begin
Deben coincidir en cantidad y tipo de dato. suma:= x + y;
Consideraciones Se relacionan 1 a 1 prod:= x * y;
generales end;
Ejercitación
icializada
lo ca l x no está in
bl e
r v a r q ue la varia
Obs e
Observar la
declaración
de la
variable loc
al c
Ejercitación ejemplo5 cuenta
calculo
24 b
a 5 b
b 2
ime en
a
r10
¿Qué imp cia
a
ten
cada sen
c 0
c ???
10
write?
a=5 a = 10
a = 24
b=2 b = 24
b = 10
c = ?? c=0
a = 24
b=2
c = 10
Ejercitación p rime en
¿Qu é i m
tencia
cada sen
write?
queimprime valores
c cant
???
0
¿Qué valores n aux
???
se imprimen? num 10
num1 ???
50 ???
num1 ???
a 25
???
a = ??? num = 10
c = ??? num1= ???
n = ??? aux= 25
num1= 50 cant= 0
a = 25
c=0
n = ???
num1= 50