{ File: figure2.pas } { Scopo: esempio di uso di procedure con variabili locali ma senza parametri } program StampaFigure; { Permette all'utente di stampare su schermo figure geometriche. L'utente interagisce con il programma tramite una semplice interfaccia. E' possibile scegliere solamente la forma della figura da stampare (quadrato o triangolo). } var ch : char; procedure StampaQuadrato; const LATO = 9; var i, j : integer; { i e j sono VARIABILI LOCALI } begin for i := 1 to LATO do { tiene conto delle righe del quadrato: 1 iterazione <-> 1 riga } begin for j := 1 to LATO do { stampa gli asterischi di ogni riga } write('*'); writeln { va a capo: la riga e' finita } end { for esterno } end; { StampaQuadrato } procedure StampaTriangolo; const ALTEZZA = 9; var i, j : integer; { i e j sono VARIABILI LOCALI } begin for i := 1 to ALTEZZA do { tiene conto delle righe del triangolo: 1 iterazione <-> 1 riga } begin for j := 1 to ALTEZZA - i do { stampa gli spazi bianchi iniziali necessari in ogni riga } write(' '); for j := 1 to (i*2 - 1) do { stampa la sequenza di asterischi } write('*'); writeln { va a capo: la riga e' finita } end { for esterno } end; { StampaTriangolo } procedure StampaSaluto; begin writeln('CIAO :-)') end; { StampaSaluto } begin { StampaFigure } repeat writeln; writeln('*** IMMETTI UN CARATTERE A SCELTA FRA I SEGUENTI ***'); writeln('***** Q: stampa un quadrato'); writeln('***** T: stampa un triangolo'); writeln('***** F: per terminare il programma'); writeln; readln(ch); { ATTENZIONE: read NON va bene } case ch of 'Q', 'q' : StampaQuadrato; 'T', 't' : StampaTriangolo; 'F', 'f' : StampaSaluto; end { case } until (ch = 'f') or (ch = 'F') end. { StampaFigure }