MODULARIDAD
PROCEDIMIENTOS
FUNCIONES
INTRODUCCIÓN A LA PROGRAMACIÓN
DIVIDE Y VENCERÁS

Recordemos que cuando nos encontramos frente
a un gran problema, lo mejor que podemos hacer
para solucionarlo es dividirlo en pequeños
problemas.
Gran
problema
P1
P4
P2
P3
P5
DIVIDE Y VENCERÁS

Ahora tenemos que solucionar pequeños
problemas mucho más fáciles de resolver.
S1
P1
Sn
S2
P2
............
Pn
DIVIDE Y VENCERÁS

Finalmente debemos juntar los “pedazos” de
solución y obtendremos nuestro problema
resuelto.
DIVIDE Y VENCERÁS

Por ejemplo: Leer el radio de un círculo y calcular
e imprimir su superficie y longitud
P rog ram a P rin cip al
L ectu ra d el R ad io
C á lcu lo d e S u p erficie
C á lcu lo d e L on g itu d
V isu alizar R esu ltad os
La resolución de un problema comienza con
una descomposición modular
¿CÓMO MODULARIZAR EN PASCAL?

Disponemos de dos tipos de módulos:
Procedimientos:
Deben realizar una tarea específica.
Pueden recibir cero o más valores del programa que llama y
devolver cero o más valores a dicho programa llamador.
Se los invoca como una sentencia.
Funciones:
También realizan una tarea específica
Devuelven un valor a la unidad de programa que los referencia.
Se los invoca utilizando alguna sentencia que nos permita recibir el
valor devuelto.
¿CÓMO MODULARIZAR EN PASCAL?
Tanto procedimientos como funciones pueden ser:
•Estándar: vienen incorporados con el lenguaje.
Por ejemplo el procedimiento:
° ClrScr: borrar la pantalla.
O la función:
°Length(s:string):byte: devuelve la longitud de un String.
¿CÓMO MODULARIZAR EN PASCAL?
Los Procedimientos y Funciones también pueden ser:
•Definidos por el usuario:
Recordemos que es muy importante hacer que un
módulo, función o procedimiento, se dedique a realizar
una tarea específica
Declaración de un Procedimiento:
Formato 1:
Procedure nombreproc;
declaraciones locales y subprogramas
begin
cuerpo del procedimiento
end;
Declaración de un Procedimiento:
Formato 2:
Procedure nombreproc (lista parámetros formales);
declaraciones locales y subprogramas
begin
cuerpo del procedimiento
end;
Llamada al Procedimiento:
Program DemoProc;
Var
X, Y : integer;
procedure Resta;{nombre (cabecera) del procedimiento}
begin
X := X - 1;
{bloque del procedimento}
Y := Y - 1;
end;
begin
X := 5;
Y := 10;
Resta;
end.
{llamada al procedimiento}
Llamada al Procedimiento:
Program DemoProc2;
Var
X, Y, Q, W : integer;
procedure Resta (A : integer; var B : integer);
begin
A := A - 1;
B := B - 1;
end;
begin
X := 5;
Y := 10;
Q := 1;
W := 4;
Resta(X, Y);
Resta(Q, W)
end.
Lista de
parámetros
actuales
Lista de
parámetros
formales
Lista de parámetros formales
PARÁMETROS POR REFERENCIA
Cuando se pasa una variable a un procedimiento como parámetro por referencia, los
cambios que se efectúan sobre dicha variable dentro del procedimiento se mantienen,
incluso después de que haya finalizado el procedimiento. Los cambios producidos en
parámetros por referencia son permanentes, ya que Turbo Pascal no pasa al procedimiento
el valor de la variable sino la dirección de la memoria de la variable. Es decir, la variable
que hay dentro del procedimiento y la que se pasa al procedimiento como parámetro por
referencia comparten la misma dirección. Por tanto, un cambio en la primera se refleja en la
segunda.
PARÁMETROS POR VALOR
Los parámetros por valor son diferentes de los parámetros por referencia. Cuando se
pasa un parámetro por valor a un procedimiento se guarda en memoria una copia temporal
de la variable. Dentro del procedimiento sólo se utiliza la copia. Cuando se modifica el
valor del parámetro sólo afecta al almacenamiento temporal; la variable actual fuera del
procedimiento no se toca nunca.
¿Por valor o por referencia?
•Si modifico el parámetro dentro del módulo, me pregunto:
¿Debe salir modificado?
Por referencia
¿No debe salir modificado?
Por valor
Declaración de una función:
Formato:
function Nombre (p1,p2....):tipo
{declaraciones locales y subprogramas}
begin
<cuerpo de la Función>
Nombre:= valor de la función
end;
•p1,p2..lista de parámetros formales
•Tipo: tipo de dato del resultado que
devuelve la función
Ejemplo de una función:
Function Promedio (a,b: Real): Real; {Promedio de dos números reales}
Begin
Promedio:= (a+b)/2;
End;
Uso de funciones
Program Funciones1;
Var
X,Y,Z: Real;
Function Promedio (a,b: Real): Real;
Begin
Promedio:= (a+b)/2;
End;
Begin
X:= 5,89;
Y:= 9,23;
Z:= Promedio (X,Y);
Writeln (‘el promedio de ‘,X,’ e’,Y,’ es: ‘,Z);
Uso de funciones
Program Funciones2;
Var
X,Y,Z: Real;
Function Promedio (a,b: Real): Real;
Begin
Promedio:= (a+b)/2;
End;
Begin
x:= 5,89;
Y:= 9,23;
Writeln (‘el promedio de ‘,X,’ e’,Y,’ es: ‘, Promedio (X,Y));
End.
Ambito de las variables
Program Ejemplo
var
X : integer;
procedure A;
var
Ambito de
la variable
X
Y : integer;
procedure B;
var
Z : integer;
begin;
end;
begin
end;
begin { Ejemplo }
end.
Ambito
de la
variable
Z
Ambito de la
variable Y
Variables locales y globales
Según visto podemos definir un procedimiento dentro de otro.
Entonces:
•Las variables globales del programa pueden ser usadas en
cualquier procedimiento o función.
•Las variables definidas en un módulo pueden ser usadas por
cualquier módulo definido dentro de este módulo
Consideraciones especiales
Si utilizamos variables globales en los módulos corremos el riesgo
que en un módulo “A” se modifique una variable global que el
módulo “B” necesita sin modificar. Por tanto la “convivencia”
puede ser difícil.
POR ESO SE RECOMIENDA NO HACER USO DE
VARIABLES GLOBALES
Ventajas de utilizar módulos
•Facilita el diseño descendente
•Ahorra tiempo de programación
•Se pueden utilizar en otros programas
•Facilita la división de tareas en un equipo de programadores
•Integran librerías específicas
Descargar

MODULARIDAD