{ File: varlocal.pas }

{ Scopo: esemplificare errori nell'uso di variabili locali }

program VariabiliLocali;

var
  ch : integer;

  procedure Conta;
  var
    contatore : integer;   { variabile locale }
  begin
    contatore := contatore + 1
    { ATTENZIONE:
      questa istruzione NON ha senso dal momento che la variabile contatore
      viene creata ad ogni attivazione della procedura.  Quindi, ad ogni
      attivazione della procedura il suo valore e` indeterminato. }
  end; { Conta }

begin { VariabiliLocali }
  contatore := 0;       { ERRORE: la variabile contatore NON e` visibile nel
                                  programma principale }
  repeat
    write('Vuoi continuare? ');
    readln(ch);
    if (ch = 's') or (ch = 'S') then
      Conta
  until (ch <> 's') and (ch <> 'S');
  writeln(contatore)    { ERRORE: la variabile contatore NON e` visibile nel
                                  programma principale }
end. { VariabiliLocali }