Nel capitolo precedente abbiamo analizzato il concetto di parametro legato alle procedure, ora è fondamentale distinguere due modi differenti per passare i parametri alla procedura:
- per valore;
- per indirizzo;
Nel caso del passaggio dei parametri per valore, i valori delle variabili del programma principale vengono copiate nei parametri della procedura.
I cambiamenti effettuati sui parametri della procedura non influenzano i valori delle variabili del programma principale.
La sintassi per effettuare un passaggio di parametri per valore è la seguente:
nome_procedura(parametro_1:tipo_di_dato_1, parametro_2:tipo_di_dato_2)
Nel caso del passaggio dei parametri per indirizzo, i parametri della procedura fanno riferimento all'indirizzo della cella di memoria delle variabili del programma principale.
In questo caso a differenza del precedente, i cambiamenti effettuati sui parametri della procedura influenzano i valori delle variabili del programma principale.
La sintassi per effettuare un passaggio di parametri per indirizzo è la seguente:
nome_procedura(var parametro_1:tipo_di_dato_1, var parametro_2:tipo_di_dato_2)
Vediamo un esempio:
program Valore_Indirizzo; uses crt; var a, b:integer; procedure Valore (x:integer); begin x:=5*x; writeln('Il valore di X e''', x); end; procedure Indirizzo (var x:integer); begin x:=5*x; writeln('Il valore di X e''', x); end; begin a:=5; b:=2; Valore(a); Indirizzo(b); writeln('Il valore di a e''',a); writeln('Il valore di b e''',b); readln; end.