unit GestoreDelForm;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
LabelRisultato: TLabel;
LabeledEditErrore: TLabeledEdit;
procedure FormCreate(Sender: TObject);
procedure LabeledEditErroreChange(Sender: TObject);
private
{ private declarations }
procedure cancella;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
function termine(n:qword):double;
var segno:double;
begin
if (n and 1)=1 then
begin
segno:=0.0-1.0
end
else
begin
segno:=1.0;
end;
termine:=segno*(1.0/(2.0*n+1.0));
end;
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption:='Pigrecatore';
cancella;
end;
function valorizza(numero:string; var x:double):boolean;
var errore:integer;
begin
val(numero, x, errore);
valorizza:=errore=0;
end;
procedure TForm1.LabeledEditErroreChange(Sender: TObject);
var t,somma,epsilon:double;
i:qword;
begin
if valorizza(LabeledEditErrore.Text, epsilon) then
begin
LabelRisultato.Caption:='';
i:=0;
t:=termine(i);
somma:=t;
while (abs(t)>=abs(epsilon)) and (i<20000000) do
begin
i:=i+1;
t:=termine(i);
somma:=somma+t;
end;
LabelRisultato.Caption:=Format('P_greco: %16.14f',[somma*4]);
end
else
LabelRisultato.caption:='Sono ammessi soltanto valori numerici';
end;
procedure TForm1.cancella;
begin
LabeledEditErrore.text:='';
LabelRisultato.Caption:='';
end;
end.