{ File: ppv.pas }

program PassaggioParametri;
{ Il programma usa una volta la procedura scambio1 e una volta la scambio2 per
  scambiare i valori delle variabili A e B.
  Nel primo caso i parametri sono passati "per variabile" e lo scambio avviene
  effettivamente.
  Nel secondo caso i parametri di scambio2 sono "per valore" e quindi i
  parametri attuali non vengono modificati dopo l'esecuzione della procedura.
}

var
  a, b : real;

  procedure Scambio1 (var x, y: real);
  var
    aux : real;
  begin
    aux := x;
    x := y;
    y := aux;
  end; { Scambio1 }

  procedure Scambio2 (x, y: real);
  var
    aux : real;
  begin
    aux := x;
    x := y;
    y := aux;
  end; { Scambio2 }

begin { PassaggioParametri }
  writeln(' PRIMO ESPERIMENTO ');
  writeln(' dare due valori reali: ');
  readln(A, B);

  writeln(' valori dati: A=', A:4:2, ' B=', B:4:2);

  writeln(' esecuzione di scambio1: ');
  scambio1(A,B);
  writeln('          ora A=', A:4:2, ' B=', B:4:2);
  writeln;
  {ora si ripete tutto ma usando scambio2}
  writeln(' SECONDO ESPERIMENTO ');
  writeln(' dare due valori reali: ');
  readln(A, B);

  writeln(' valori dati: A=', A:4:2, ' B=', B:4:2);

  writeln(' esecuzione di scambio2: ');
  scambio2(A,B);
  writeln('          ora A=', A:4:2, ' B=', B:4:2);

{ writeln('<RET> per finire.');
  readln;
  }
end. { PassaggioParametri }