2008/09 – Fase scolastica – 01

Si consideri il seguente frammento di codice:

Var
   a: Integer;
   b: Integer;
Procedure foo(var a: Integer; b: Integer);
Var
   temp: Integer;
Begin
   temp:=a;
   a   :=b;
   b   :=temp;
End;
Begin
   a:=1;
   b:=5;
   foo(a, b);
End.

Quanto valgono le variabili a e b alla fine dell’esecuzione?


Soluzione: a=5 e b=5.


Soluzione

La variabile b viene passata alla procedura foo() per valore (quindi non viene alterata) mentre la variabile a per indirizzo (quindi viene alterata).

Siccome foo() scambia tra loro i valori di a e di b, quindi fa assumere ad a il valore 5, il risultato finale è appunto 5 e 5.