PASO DE PARAMETROS


Pasar un parámetro significa direccionar el valor de una variable del programa principal al procedimiento hay dos clases:

Paso de parámetros por REFERENCIA
Cuando se pasa una variable a un procedimiento como parámetro por referencia, los cambios que se efectúen sobre dicha variable dentro del procedimiento se mantienen incluso después de que este haya terminado, es decir los cambios afectan al programa principal.

Los cambios producidos POR PARAMETRO POR REFERENCIA son permanentes, pues TURBO PASCAL no pasa al procedimiento el valor de la variable sino la dirección de memoria de esta.

SintaxisPROCEDURE Nombre_procedimiento( VAR variable : tipo de dato)
BEGIN
{Bloque de instrucciones}
END;
Paso de parámetros por VALOR

La diferencia de pasar parámetros por referencia respecto a parámetros por valor radica en que en estos últimos se guarda en memoria una copia temporal de la variable, dentro del procedimiento solo se utiliza la copia, cuando se modifica el valor del parámetro solo afecta al almacenamiento temporal, la variable actual fuera del procedimiento nunca se toca.
SintaxisPROCEDURE Nombre_procedimiento(variable : tipo de dato)
BEGIN
{Bloque de instrucciones}
END;

Ejemplo:

program Ambos_procedimientos;
var Contador : integer;
Indice : integer;
procedure Imprime_Datos(estable : integer);
{Este es un procedimiento de PARAMETRO por VALOR}
begin
Writeln('Esta es la rutina : ',estable);
estable := 12;
end;
procedure Imprime_y_modifica(var cambia : integer);
{Este es un procedimiento de PARAMETRO por REFERENCIA}
begin
Writeln('Esta es el procedimiento de impresión y modificación ', Cambia);
Cambia := 35;
end;
begin (* Programa principal *)
for Contador := 1 to 3 do
begin
Indice := Contador;
Imprime_Datos(indice);
Writeln('Volvemos al procedimiento de impresión, Indice =',Indice);
Imprime_y_modifica(Indice);
Writeln('Volvemos al procedimiento de impresión, Indice =',Indice);
Imprime_datos(indice);
Writeln('Regresamos de nuevo a la impresión de nuevo y el valor del índice es =',Indice);
Writeln; {Imprimimos una linea en blanco}
end;{Final del ciclo for}
readln;{Se hace una espera hasta que se presiona la tecla ENTER}
end. (* Final del programa principal *)
Si deseas ver el resultado de este programa por favor codifícalo en TURBO PASCAL (suena como redundante, pero no falta el que lo meta en lenguaje C, y después ande diciendo que estos ejemplos no funcionan) y saca tus propias conclusiones.

0 comentarios:

Publicar un comentario