{ File: invinp.pas } program InversioneInput; { Programma che lancia la procedura InvertiInput la procedura esegue la stampa invertita dell'input dato da tastiera (una stringa terminata da '.'; anche '.' viene stampato). L'unico modo per distinguere tra le varie attivazioni ricorsive di InvertiInput, e' di vedere il contenuto del carattere ch, che cambia nelle diverse attivazioni di InvertiInput:con input TOPI. Si vedra' che ch vale T (durante la prima attivazione), O (durante la seconda), P (durante la terza), I (durante la quarta), . (durante la quinta); La quinta attivazione non esegue ulteriori chiamate ricorsive quindi stampa '.' e termina. La quarta attivazione torna in esecuzione, stampa 'I' (cioe' il valore di ch nel suo ambiente locale) e termina. La terza attivazione stampa 'P' e termina ... Come cambia il carattere locale ch nelle varie attivazioni si vede con un'opportuna WATCH sull'espressione "ch". } procedure InvertiInput; var ch : char; begin read(ch); if ch <> '.' then InvertiInput; write(ch) end; { InvertiInput } begin { InversioneInput } writeln('stringa terminata da ''.'', prego:'); InvertiInput end. { InversioneInput }