procedure MAMMA (x:integer);
var (possono essere usate variabili interne alla procedura, non condivise dal programma principale)
begin
-----
-----
end;
se la procedura è definita in questo modo nel programma principale ci sarà una chiamata del tipo
procedure MAMMA(a)
dentro la procedura viene definita una variabile x, che quando è chiamata la procedura, assume lo stesso valore di a (abbiamo quindi due variabili: a usata dal programma principale e x usata dalla procedura.
procedure MAMMA (var x:integer);
var (possono essere usate variabili interne alla procedura, non condivise dal programma principale)
begin
-----
-----
end;
la procedura viene chiama la variabile a del programma principale, quindi tutto ciò che capita ad x capita anche ad a (abbiamo quindi una sola variabile: a nome usato dal programma principale, che è chiamata x dalla procedura)
ovviamente i due modi di trasferimento di dati possono essere utilizzati contemporaneamente.
procedure PROVA (var x: integer; y: integer)
begin
x=:x+y;
y:=x+y;
end;
(*main program*)
begin
a:=3;
b:=4;
prova(a,b);
write(a,b);
end.
il programma scriverà 7,4 perchè a nella procedura è chiamata x e diventa x+y (quindi 3+4) mentre b resta il valore iniziale (nella procedura viene passato il valore 4, la y viene portata a 11 (x è arrivata a 7) ma tale valore non cambia il valore di b