procedure

 

procedure (sottoprogrammi)

 

assegnare per VALORE

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.

assegnare per INDIRIZZO;

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.

esempio

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