{ File: stack.pas } { Scopo: esemplificazione dei concetti di - pila dei record di attivazione e - tempo di vita di una variabile } program Main; var s : integer; procedure A (p: integer); var l : integer; procedure B(q: integer); begin { B } { 1b } writeln('Sono la procedura B. Il mio parametro q vale ', q); end; { B } begin { A } { 1a } writeln('Sono la procedura A. Il mio parametro p vale ', p); { 2a } writeln('Inserisci un intero'); { 3a } readln(l); { 4a } writeln('Ora chiamo la procedura B, con parametro attuale pari a ', l); { 5a } B(l); { 6a } writeln('Sono di nuovo la procedura A'); end; { A } begin { Main } { 1m } writeln('Sono il programma principale'); { 2m } writeln('Inserisci un intero'); { 3m } readln(s); { 4m } writeln('Ora chiamo la procedura A, con parametro attuale pari a ', s); { 5m } A(s); { 6m } writeln('Sono di nuovo il programma principale'); end. { Main } { ESEMPIO DI ESECUZIONE Sono il programma principale Inserisci un intero 4 Ora chiamo la procedura A, con parametro attuale pari a 4 Sono la procedura A. Il mio parametro p vale 4 Inserisci un intero 9 Ora chiamo la procedura B, con parametro attuale pari a 9 Sono la procedura B. Il mio parametro q vale 9 Sono di nuovo la procedura A Sono di nuovo il programma principale }