{ File: invinp2.pas } program InversioneInput2; { Qui la procedura di attivazione ha due parametri; con numCar l'unita' chiamante indica il numero di caratteri gia' letti (0 alla prima attivazione). lung e' un parametro passato per variabile cui viene assegnato, al momento in cui si raggiunge la fine della stringa, il numero di caratteri letti fino a quel momento. Come cambia il carattere locale ch nelle varie attivazioni si vede con WATCH. Come cambiano i parametri delle varie attivazioni si puo' vedere con CALL STACK (oppure ancora con una watch su numCar). } var lunghezza : integer; procedure InvertiInput2 (numCar: integer; var lung : integer); var ch : char; begin read(ch); if ch <> '.' then InvertiInput2(numCar + 1, lung) else lung := numCar; write(ch) end; { InvertiInput2 } begin { InversioneInput2 } writeln('stringa terminata da ''.'', prego:'); InvertiInput2(0, lunghezza); writeln; writeln('la lunghezza della stringa, escluso ''.'', e'' ', lunghezza : 2) end. { InversioneInput2 }