La Web del Programador: Comunidad de Programadores
 
    Pregunta:  5685 - DIFERENCIA ENTRE VARIABLES DE PROCEDIMIENTOS
Autor:  samuel martin del rio
En turbo psacal 7.0 cuando declaramos los procedimientos ,los colocamos:
PROCEDURE(variables1:tipo_variable;VAR variables2:tipo_variables2);
VAR variables3:tipo_variables3;

-Mi duda es :¿Cual es la diferencia entre las variables1,variables2,variables3?,¿y para que sirven y se utilizan cada una de estas variables?

GRACIAS.

  Respuesta:  Carlos Christian Molina Vega
La diferencia que existe entre las variables es la sgte.
procedure a(b:integer)
begin
b=9;
end;
declara el PARAMETRO B como un parametro que se pasa por valor. Me refiero a que si usted lo llama
de la sgte forma

var z:integer;
begin
z:=15;
a(z);
writeln(z); {desplegaria 15}
end.

la variable que se pasa como argumento (z) no sufre ningun cambio. Porque el contenido de ella se copia a la "variable" B.

Sin embargo si se declara asi
procedure a(VAR b:integer);

al llamarlo de la forma anterior, B no seria una copia de la variable z, sino que esta accesando directamente a la direccion de memoria de la variable z. Si usted cambia en B algo, seria igual como cambiarlo en Z.

var z:integer;
begin
z:=15;
a(z);
writeln(z); {desplegaria 9}
end.

A esta ultima forma se llama paso de parametros por referencia.

Lo va a entender mejor cuando trabaje con punteros.