Napisałam taki program , ale nie wiem czy jest to dobrze zrobione :
uses crt,sysutils;
var
eps,temp,z,z0,krok,zasieg,wynik:real;
p:text;
i:integer;
function fbo(eps,z0,temp,z:real):real;
var
z3,u:real;
begin
if(z/z0<0.5) then fbo:=-1 else
begin
z3:=(z0/z)*(z0/z)*(z0/z);
u:=eps*z3*(z3*z3-1);
fbo:=exp(-u/temp)-1;
end;
end;
procedure calka(eps,z0,temp,krok,zasieg:real; var wynik:real);
var
i:integer;
begin
wynik:=(fbo(eps,z0,temp,0)+fbo(eps,z0,temp,zasieg))/2;
for i:=1 to trunc(zasieg/krok)-1 do
wynik:=wynik+fbo(eps,z0,temp,i*krok);
wynik:=wynik*krok;
end;
begin
writeln('podaj eps,z0,temp,krok,zasieg');
readln(eps,z0,temp,krok,zasieg);
assign(p,'boltzmann.dat');
rewrite(p);
for i:=1 to trunc(zasieg/krok) do begin
z:=i*krok;
writeln(p,z,' ',fbo(eps,z0,temp,z));
end;
close(p);
calka(eps,z0,temp,krok,zasieg,wynik);
writeln(temp,' ',wynik);
assign(p,'hen.dat');
if FileExists( 'hen.dat') then append(p) else rewrite (p);
writeln(p,temp,' ',wynik);
close(p);
end.
Dziękuję za pomoc

P.S jeżeli posiadacie jakieś fajne poradniki dot całek w pascalu podzielcie się
