Si consideri la seguente funzione:
Function foo(x: Integer): Integer; Var y: Integer; Begin y:=0; While(x <> 0) Do Begin y:=y*10; y:=y+x Mod 10; x:=x Div 10; End; foo:=y; End;
Dire cosa restituisce la chiamata foo(4312).
Soluzione: 2134.
Soluzione
Al termine della prima iterazione del ciclo, il valore di y è pari a 2, ovvero la cifra meno significativa di x (resto della divisione di x per 10); inoltre il valore di x viene diviso per 10: essendo x una variabile intera, il suo valore al termine della prima iterazione è 431.
La seconda iterazione del ciclo moltiplica y per 10 e quindi somma 1, il valore della cifra meno significativa di x (che ora vale 431).
Pertanto, al termine della seconda iterazione del ciclo, il valore di y è pari a 21.Procedendo in modo analogo possiamo verificare che al termine della terza e quarta iterazione del ciclo il valore di y è 213 e 2134 rispettivamente.