{ File: horner.pas }

program ValutazionePolinomioMedianteHorner;

const
  N = 4;    { grado dei polinomi trattati }

{$I POLIDEF.DEF}  { direttiva per l'inclusione delle definizioni }

var         { le variabili da usare nel main }
  pl : Polinomio;
  x  : real;

  function Horner (p: Polinomio; i: Index; valore: real): real;
  { La funzione di valutazione che serve. }
  var
    val : real;
  begin
    if i < N then
      val := p[i] + valore * Horner(p, i + 1, valore)
    else
      val := p[i];

    writeln('valutazione sezione da ', i:2, ' a ', N:2, ' = ', val:10:2);

    Horner := val;
  end; { Horner }


begin { ValutazionePolinomioMedianteHorner }
  writeln('lettura polinomio');
  LeggiPolinomio(pl);
  writeln(' mi hai dato il polinomio seguente:');
  ScriviPolinomio(pl);
  writeln('valore della variabile nel quale calcolare il polinomio? ');
  readln(x);
  writeln(Horner(pl, 0, x):10:2);
  writeln('ciao')
end. { ValutazionePolinomioMedianteHorner }