Está en la página 1de 27

PROGRAMACIN I Comunicacin entre mdulos.

Pasaje de parmetros

Teora Alejandro Hctor Gonzlez

Temas

Comunicacin entre mdulos: parmetros Tipos de parmetros en Pascal Ejemplos

Modularizacin - Comunicacin
CMO SE COMUNICAN LOS DATOS ENTRE MDULOS Y PROGRAMA?

VARIABLES GLOBALES

PARAMETROS

NO ACONSEJABLE. PUEDE TRAER EFECTOS COLATERALES. PERJUDICA LA

INDICAN DE MANERA EXPLCITA QU DATOS UTILIZAR EL MDULO

Modularizacin - Comunicacin
En teora cada mdulo lo podemos pensar como una caja negra con una funcin lgica bien definida (QU) que puede ser implementada internamente de muchos modos (CMO).
Qu hace el mdulo?
Cmo resuelve el problema el mdulo? Los parmetros ayudarn a conocer el qu hace

Modularizacin - Comunicacin
La comunicacin externa de un mdulo con el resto del sistema (puede no existir) es aconsejable que se produzca a travs de datos de entrada y datos de salida.

Modularizacin - Comunicacin
Tiene un Encabezado

No tienen comunicacin mediante parmetros en este caso Comunicacin

Modularizacin - Comunicacin
Parmetros por valor
La comunicacin puede ser en Pascal

Parmetros por referencia

Comunicacin Parmetros por valor


Un dato de entrada por valor es llamado parmetro IN y significa que el mdulo recibe (sobre una variable local) un valor proveniente de otro mdulo (o del programa principal). Con l puede realizar operaciones y/o clculos, pero no producir ningn cambio ni tampoco tendr incidencia fuera del mdulo.

Comunicacin Parmetros por valor


Program valor; Var val: integer; Procedure uno (x:integer); Begin x:= x+1; write (x); End; Begin val:=3; uno (val); write (val); End. 4 x

3
3 val

Comunicacin Parmetros por valor


Program valor; Var val: integer; Procedure uno (x:integer); Begin x:= x+1; write (x); End; Begin val:=3; uno (val); write (val); End.

Proc. uno x =4 x= 3
Prog. valor val= 3
Qu imprime?

Comunicacin Parmetros por valor


Program valor; Var El nombre de la variable es igual en el programa y en el procedimiento x: integer; Procedure uno (x:integer); Begin x:= x+1; write (x); End; Begin x:=3; uno (x); write (x); Qu imprime? End.

Proc. uno x =4 x= 3
Prog. valor x= 3

Comunicacin Parmetros por


referencia
La comunicacin por referencia significa que el mdulo recibe la direccin de memoria de una variable conocida en el punto de invocacin.

Comunicacin Parmetros por


referencia
dE

Dentro del mdulo se puede operar con el valor original contenido en esa direccin de memoria, y las modificaciones que se produzcan se reflejan en los dems mdulos que conocen la variable. En el encabezado del mdulo se distinguen por tener la palabra clave VAR.

Comunicacin Parmetros por


referencia
Program valor; Var val: integer; Procedure uno (VAR x:integer); Begin x:= x+1; write (x); End; Begin val:=3; uno (val); write (val); End. x

4
4 3 val

Comunicacin Parmetros por valor


Program valor; Var val: integer; Procedure uno (var x:integer); Begin x:= x+1; write (x); End; Begin val:=3; uno (val); write (val); End.

Proc. uno x=
Prog. valor
Qu imprime?

val= 3 4

Parmetros Conceptos importantes


El nmero y tipo de los parmetros o

argumentos utilizados en la invocacin a una

Funcin o un Procedimiento deben coincidir con


el nmero y tipo de parmetros del

encabezamiento del mdulo.

Parmetros Conceptos importantes


Program uno;

Var
x:integer; c: char; procedure j:char); ejemplo
Parmetros formales

begin x:= 98; c:=a; ejemplo (x,c); end;


Parmetros actuales o reales

(var

a:integer;

begin

Parmetros Conceptos importantes


Un parmetro por valor debiera ser tratado como una variable de la cul el Procedimiento o Funcin hace una copia y la utiliza localmente.
Algunos lenguajes permiten la modificacin local de un parmetro por valor, pero toda modificacin realizada queda en el mdulo en el cual el parmetro es utilizado.

Parmetros Conceptos importantes


Los parmetros por referencia operan directamente sobre la direccin de la variable original, en el contexto del mdulo que llama.

Esto significa que no requiere memoria local.

Parmetros Ejemplos
Program uno;

Var
x:integer; c: char; procedure j:char); ejemplo (var a:integer;

begin c:=a; ejemplo (15,c); end;

begin

Se puede?

Parmetros Ejemplos
Program uno;

Var
x:integer; c: char; procedure j:char); ejemplo (var a:integer;

begin x:=25; ejemplo (x,p); end;

begin

Se puede?

Parmetros Ejemplos
Program ejemplo; Var a,b, : Integer ; Procedure saber2 a:integer ); begin b:= b + 10 ; a: = a + 10 ; write ( a, b ); end ;
(b: integer; Var

13 12

{ comienza el programa principal } begin a := 2; b: = 3; saber2 ( a, b ); 2 13 write ( a, b); end.

Qu imprime? A PENSAR

Parmetros Ejemplos
Program demo ; Var a,b, : Integer ; Function sum1 ( x : Integer ) : Integer ; begin x := x + 1; a := a+1 sum1 := x; sum1:= a end; begin {comienza el programa} a := 10; b := sum1 (a); writeln ( a, +1=,b ); end.

Qu imprime?

Qu pasa si hacemos el siguiente reemplazo?

Parmetros Ejemplos
Program demo ; Var a,b, : Integer ; procedure sum1 ( var x : Integer ); begin a := a+1 x := x + 1; x:= a end; begin {comienza el programa} a := 10; sum1 (a); writeln ( a); end.

Qu imprime?

Qu pasa si hacemos el siguiente reemplazo?

Parmetros Ejemplos
Program demo ; Var a,can : Integer ; procedure sum1 ( var x :integer; b: integer ); begin b:= b + 1; x := b * 2; end; begin {comienza el programa} can := 10; sum1 (a,can); writeln ( a); end.

Qu imprime?

Parmetros Ejemplos
Program demo ; Var a,b,c : Integer ; procedure sum1 ( var c:integer ); begin b:= b + 1; a := b * 2; c:= a+ b + c; write (a,b,c); end;
a :integer; b: integer; var

begin {comienza el programa} a:= 7; b:=3; c:=4; sum( b,a,c); write (a,b,c); end.

Parmetros A resolver en grupo


Program premio; Var a,b,c : Integer; Procedure uno (var a:integer; var b;integer; c:integer);

begin b := 11; a:= b MOD 5; c:= (c + a) DIV 3; write (a,b,c) end;

begin {del programa principal} a := 10; b:= 3; c:=5; uno (c,a,b); write (a,b,c); end.

También podría gustarte