program Radice;
var
numero,
appr_disp, appr_succ,
start,
eps: real;
function ApprossimazioneSuccessiva (appr: real): real;
begin
ApprossimazioneSuccessiva := (appr + numero / appr) / 2;
end;
begin
writeln('Dammi il numero del quale vuoi la radice quadrata');
readln(numero);
writeln('e che precisione vorresti?');
readln(eps);
writeln('dammi un''approssimazione di partenza (ad es. 1)');
readln(start);
appr_disp := start;
repeat
appr_succ := ApprossimazioneSuccessiva(appr_disp);
writeln(' approssimazione ottenuta = ', appr_succ :15:12);
appr_disp := appr_succ;
until abs(sqr(appr_succ) - numero) < eps;
writeln('ecco la radice quadrata');
writeln(appr_succ :15:12);
writeln('comunque se usavi la funzione sqrt ti veniva ', sqrt(numero):15:12);
readln;
end.