listati con turbo pascal per bisezione (varianti)
bis1 bis1a bis2 bis2a bis3 bis3a
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.
program bis1a; uses crt; var a,b,medio,x,y:real; k,n,tipo,t: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 uscita; begin writeln('funzione sempre con stesso segno:riprova o esci'); writeln('premi enter ');readln;readln; halt; 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_dati(dati:integer); begin gotoxy(45,13);write('estremo sinistro =');read(a); gotoxy(45,14);write('estremo destro =');read(b); if a=100 then uscita; n:=20; (* bisezioni *) case dati of 1:calcola1(a,b); 2:calcola2(a,b); 3:calcola3(a,b); 4:calcola4(a,b); 5:calcola5(a,b); end; end; procedure prova(t:integer); var g,h,k:integer; begin clrscr; write('scrivi valore iniziale per calcolo funzione:');readln(g); write('scrivi valore finale per calcolo funzione :');readln(h); writeln('...scegli estremo sinistro e destro per calcolo radice '); writeln('...scrivi 100..100 se funzione sempre con stesso segno,o per FINE '); case t of 1:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f1(k):8:6);end; 2:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f2(k):8:6);end; 3:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f3(k):8:6);end; 4:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f4(k):8:6);end; 5:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f5(k):8:6);end; end; leggi_dati(t); 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...SOLO X POSITIVI'); writeln('----------------------------------'); write('indica funzione da provare 1,2,3,4,5.');readln(tipo); prova(tipo); 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.
program bis2; uses crt; var a,b,medio,x,y:real; k,n,tipo:integer; function f1(x:real):real; begin f1:=-7*x+2*exp(-3*x)-1; end; function f2(x:real):real; begin f2:=2*sqrt(x)-3*exp(-x); end; function f3(x:real):real; begin f3:=2*exp(-x)+2*x*x-3; end; function f4(x:real):real; begin f4:=2*ln(x)+3*x-1; end; function f5(x:real):real; begin f5:=3*sin(x)/cos(x)+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 0 =');read(a); gotoxy(25,14);write('estremo destro prova 1 =');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 =');read(a); gotoxy(25,14);write('estremo destro prova 1 =');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...-1 =');read(a); gotoxy(25,14);write('estremo destro prova 2...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.50 =');read(a); gotoxy(25,14);write('estremo destro prova 1.00 =');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 0.. =');read(a); gotoxy(25,14);write('estremo destro prova 1 =');read(b); until f5(a)*f5(b)<0 ; gotoxy(25,15);write('numero bisezioni..prova 20 =');read(n); calcola5(a,b); end; procedure scelta; var ancora:integer; begin clrscr; writeln('funzioni memorizzate da provare '); writeln('1...f1:=-7x+2e(-3x)-1'); writeln('2...f2:=2*sqrt(x)-3e(-x)'); writeln('3...f3:=2e(-x)+2x^2-3'); writeln('4...f4:=2ln(x)+3x-1'); writeln('5.. f5:=3*sin(x)/cos(x)+x-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.
program bis2a; uses crt; var a,b,medio,x,y:real; k,n,tipo,t:integer; function f1(x:real):real; begin f1:=-7*x+2*exp(-3*x)-1; end; function f2(x:real):real; begin f2:=2*sqrt(x)-3*exp(-x); end; function f3(x:real):real; begin f3:=2*exp(-x)+2*x*x-3; end; function f4(x:real):real; begin f4:=2*sqrt(x)+3*x-1; end; function f5(x:real):real; begin f5:=3*sin(x)/cos(x)+x-1; end; procedure uscita; begin writeln('funzione sempre con stesso segno:riprova o esci'); writeln('premi enter ');readln;readln; halt; 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_dati(dati:integer); begin gotoxy(45,13);write('estremo sinistro =');read(a); gotoxy(45,14);write('estremo destro =');read(b); if a=100 then uscita; n:=20; (* bisezioni *) case dati of 1:calcola1(a,b); 2:calcola2(a,b); 3:calcola3(a,b); 4:calcola4(a,b); 5:calcola5(a,b); end; end; procedure prova(t:integer); var g,h,k:integer; begin clrscr; write('scrivi valore iniziale per calcolo funzione:');readln(g); write('scrivi valore finale per calcolo funzione :');readln(h); writeln('...scegli estremo sinistro e destro per calcolo radice '); writeln('...scrivi 100..100 se funzione sempre con stesso segno,o per FINE '); case t of 1:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f1(k):8:6);end; 2:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f2(k):8:6);end; 3:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f3(k):8:6);end; 4:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f4(k):8:6);end; 5:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f5(k):8:6);end; end; leggi_dati(t); end; procedure scelta; var ancora:integer; begin clrscr; writeln('funzioni memorizzate da provare '); writeln('1...f1:=-7x+2e(-3x)-1'); writeln('2...f2:=2*sqrt(x)-3e(-x).SOLO VALORI POSITIVI o ZERO;'); writeln('3...f3:=2*e(-x)+2x^2-3'); writeln('4...f4:=2sqrt(x)+3x-1 ....SOLO VALORI POSITIVI o ZERO;'); writeln('5.. f5:=3sin(x)/cos(x)+x-1'); writeln('----------------------------------'); write('indica funzione da provare 1,2,3,4,5.');readln(tipo); prova(tipo); 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.
program bis3; uses crt; var a,b,medio,x,y:real; k,n,tipo:integer; function f1(x:real):real; begin f1:=x*x*x-2*x*x+4*x-5; end; function f2(x:real):real; begin f2:=2*x*x*x-3*x*x+x-1; end; function f3(x:real):real; begin f3:=x*x*x-13*x-14; end; function f4(x:real):real; begin f4:=x*x*x-4*x-11; end; function f5(x:real):real; begin f5:=x*x*x*x-3*x*x*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 -5 =');read(a); gotoxy(25,14);write('estremo destro prova 5 =');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 -1 =');read(a); gotoxy(25,14);write('estremo destro prova 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...-1 =');read(a); gotoxy(25,14);write('estremo destro prova 2...6 =');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 6 =');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 1.. =');read(a); gotoxy(25,14);write('estremo destro prova 5 =');read(b); until f5(a)*f5(b)<0 ; gotoxy(25,15);write('numero bisezioni..prova 20 =');read(n); calcola5(a,b); end; procedure scelta; var ancora:integer; begin clrscr; writeln('funzioni memorizzate da provare '); writeln('1...f1:=x^3-2x^2+4x-5'); writeln('2...f2:=2x^3-3x^2+x-1'); writeln('3...f3:=x^3-13x-14'); writeln('4...f4:=x^3-4x-11'); writeln('5.. f5:=x^4-3x^3+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.
program bis3a; (* calcola valori funzione entro campo da assegnare *) (* scelta estremi sinistro e destro tra valori calcolati sopra *) (* cerca radice approssimata dopo n bisezioni da indicare *) uses crt; var a,b,medio,x,y:real; k,n,t:integer; function f1(x:real):real; begin f1:=-7*x+2*exp(-3*x)-1; end; function f2(x:real):real; begin f2:=2*sqrt(x)-3*exp(-x); end; function f3(x:real):real; begin f3:=2*exp(-x)+2*x*x-3; end; function f4(x:real):real; begin f4:=2*sqrt(x)+3*x-1; end; function f5(x:real):real; begin f5:=3*sin(x)/cos(x)+x-1; end; procedure uscita; begin writeln('funzione sempre con stesso segno:riprova o esci'); writeln('premi enter ');readln;readln; halt; end; procedure calcola (es,ed:real); begin clrscr; if t=1 then begin 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 else if t=2 then begin 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 else if t=3 then begin 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 else if t=4 then begin 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 else if t=5 then begin 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; end; procedure leggi_dati; begin gotoxy(45,13);write('estremo sinistro =');read(a); gotoxy(45,14);write('estremo destro =');read(b); if a=100 then uscita; gotoxy(45,16);write('numero iterazioni :prova 20..=');readln(n); calcola(a,b); end; procedure prova; var g,h,k:integer; begin clrscr; write('scrivi valore iniziale per calcolo funzione:');readln(g); write('scrivi valore finale per calcolo funzione :');readln(h); writeln('...scegli estremo sinistro e destro per calcolo radice '); writeln('...scrivi 100..100 se funzione sempre con stesso segno,o per FINE '); case t of 1:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f1(k):8:6);end; 2:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f2(k):8:6);end; 3:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f3(k):8:6);end; 4:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f4(k):8:6);end; 5:begin for k:=g to h do writeln('per x=',K:8,'...f(x)=',f5(k):8:6);end; end; leggi_dati; end; procedure scelta; var ancora:integer; begin clrscr; writeln('funzioni memorizzate da provare '); writeln('1...f1:=-7x+2e(-3x)-1'); writeln('2...f2:=2*sqrt(x)-3e(-x).SOLO VALORI POSITIVI o ZERO;'); writeln('3...f3:=2*e(-x)+2x^2-3'); writeln('4...f4:=2sqrt(x)+3x-1 ....SOLO VALORI POSITIVI o ZERO;'); writeln('5.. f5:=3sin(x)/cos(x)+x-1'); writeln('----------------------------------'); write('indica funzione da provare 1,2,3,4,5.');readln(t); prova; 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.