esercitazioni con turbo pascal

writeln('1...f1:=x^3-9x+1');
writeln('2...f2:=x^3-27x+7');
writeln('3...f3:=x^5-4x^4+3x^2+2');
writeln('4...f4:=2x-3cos(x)+1');
writeln('5.. f5:=3ln(x)-3x^2+6x-1');
writeln('----------------------------------');
write('indica funzione da provare 1,2,3,4,5.');readln(tipo)

 

program bis1;
uses crt;
var a,b,medio,x,y:real;
    k,n,tipo:integer;

function f1(x:real):real;
 begin
 f1:=x*x*x-9*x+1;
 end;
 
 function f2(x:real):real;
 begin
 f2:=x*x*x-27*x+7;
 end;
 
function f3(x:real):real;
 begin
 f3:=x*x*x*x*x-4*x*x*x*x+3*x*x+2;
 end;
 
 function f4(x:real):real;
 begin
 f4:=2*x-3*cos(x)+1;
 end;
 
 function f5(x:real):real;
 begin
 f5:=3*ln(x)-3*x*x+6*x-1;
 end;
 

 
 procedure calcola1 (es,ed:real);
 begin
 clrscr;
 for k:=1 to n do
  begin
  medio:=(es+ed)/2;
  if f1(es)*f1(medio)<=0 then
       ed:=medio
        else
         es:=medio;  
  end;
  writeln('radice approssimata:',medio:0:8);
  READLN;
  end;
   
   procedure calcola2 (es,ed:real);
 begin
 clrscr;
 for k:=1 to n do
  begin
  medio:=(es+ed)/2;
  if f2(es)*f2(medio)<=0 then
       ed:=medio
        else
         es:=medio; 
   end;
  writeln('radice approssimata:',medio:0:8);
  READLN;
  end;


   procedure calcola3 (es,ed:real);
 begin
 clrscr;
 for k:=1 to n do
  begin
  medio:=(es+ed)/2;
  if f3(es)*f3(medio)<=0 then
       ed:=medio
        else
         es:=medio; 
  end;
  writeln('radice approssimata:',medio:0:8);
  READLN;
  end;


   procedure calcola4 (es,ed:real);
 begin
 clrscr;
 for k:=1 to n do
  begin
  medio:=(es+ed)/2;
  if f4(es)*f4(medio)<=0 then
       ed:=medio
        else
         es:=medio; 
  end;
  writeln('radice approssimata:',medio:0:8);
  READLN;
  end;

   procedure calcola5 (es,ed:real);
 begin
 clrscr;
 for k:=1 to n do
  begin
  medio:=(es+ed)/2;
  if f5(es)*f5(medio)<=0 then
       ed:=medio
        else
         es:=medio; 
  end;
  writeln('radice approssimata:',medio:0:8);
  READLN;
  end;

 procedure leggi_dati1;
 begin
  repeat
   gotoxy(25,13);write('estremo sinistro...prova -4..0..2 =');read(a);
   gotoxy(25,14);write('estremo destro     prova -3..1..3 =');read(b);
  until f1(a)*f1(b)<0 ;
  gotoxy(25,15);write('numero bisezioni..prova 20 =');read(n);
  calcola1(a,b);
 end;

 procedure leggi_dati2;
 begin
  repeat
   gotoxy(25,13);write('estremo sinistro...prova 0..-6..5 =');read(a);
   gotoxy(25,14);write('estremo destro     prova 1..-5..6 =');read(b);
  until f2(a)*f2(b)<0 ;
  gotoxy(25,15);write('numero bisezioni..prova 20 =');read(n);
  calcola2(a,b);
 end;
   

 procedure leggi_dati3;
 begin
  repeat
   gotoxy(25,13);write('estremo sinistro...prova 1..3..-2 =');read(a);
   gotoxy(25,14);write('estremo destro     prova 2..4..0 =');read(b);
  until f3(a)*f3(b)<0 ;
  gotoxy(25,15);write('numero bisezioni..prova 20 =');read(n);
  calcola3(a,b);
 end;
 
 procedure leggi_dati4;
 begin
  repeat
   gotoxy(25,13);write('estremo sinistro...prova 0 =');read(a);
   gotoxy(25,14);write('estremo destro     prova 1 =');read(b);
  until f4(a)*f4(b)<0 ;
  gotoxy(25,15);write('numero bisezioni..prova 20 =');read(n);
  calcola4(a,b);
 end;
 
  procedure leggi_dati5;
 begin
  repeat
   gotoxy(25,13);write('estremo sinistro...prova 2.. =');read(a);
   gotoxy(25,14);write('estremo destro     prova 3 =');read(b);
  until f5(a)*f5(b)<0 ;
  gotoxy(25,15);write('numero bisezioni..prova 10 =');read(n);
  calcola5(a,b);
 end;
 

  procedure scelta;
  var ancora:integer;
 begin
 clrscr;
 writeln('funzioni memorizzate da provare ');
 writeln('1...f1:=x^3-9x+1');
 writeln('2...f2:=x^3-27x+7');
 writeln('3...f3:=x^5-4x^4+3x^2+2');
 writeln('4...f4:=2x-3cos(x)+1');
 writeln('5.. f5:=3ln(x)-3x^2+6x-1');
 writeln('----------------------------------');
 write('indica funzione da provare 1,2,3,4,5.');readln(tipo);
 case tipo of
 1:leggi_dati1;
 2:leggi_dati2;
 3:leggi_dati3;
 4:leggi_dati4;
 5:leggi_dati5;
 end;
 WRITELN('-------------------------------');
 write('altra prova:scrivi 1...fine:scrivi 2 ');readln(ancora);
 if ancora=1 then scelta;
 end;
 
  begin
  clrscr;
  scelta;
  writeln('premi enter');
  readln;
  end.