
лабораторная работа / лабораторные работы по LAZARUS / Программирование циклических алгоритмов №3 вар3
.docСАРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
БАЛАКОВСКИЙ ИНСТИТУТ ТЕХНИКИ ТЕХНОЛОГИИ И УПРАВЛЕНИЯ
Лабораторная работа №3
программирование
циклических алгоритмов
на языке lazarus
Выполнил ст. гр. УИТ-31
Проверила
Балаково 2009
Цель работы: создание программ с циклической структурой с помощью объектно-ориентированного языка Lazarus.
№ |
|
|
S(x) |
n |
Y(x) |
1 |
2 |
3 |
4 |
5 |
6 |
3 |
0.1 |
1 |
|
12 |
|
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
Buttons, Spin;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Memo1: TMemo;
SpinEdit1: TSpinEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
SpinEdit1.Value:=12;
Edit1.text:='0,1';
Edit2.text:='1';
Memo1.Clear;
Memo1.Lines.Add('Лабораторная работа №3 - Циклический алгоритм');
end;
procedure TForm1.Button1Click(Sender: TObject);
var xn,xk,x,h,an,s,y,al,R,del: extended;
n,k: integer;
begin
n:= SpinEdit1.Value;
xn:=StrToFloat(Edit1.Text);
xk:=StrToFloat(Edit2.Text);
if CheckBox1.Checked then
Memo1.Lines.Add('Исходные данные: n='+IntToStr(n)+
' Xn='+FloatToStrF(xn,ffFixed,6,1)+' Xk='+FloatToStrF(xk,ffFixed,6,1));
h:=(xk-xn)/10;
x:=xn;
repeat
an:=1;
S:=an;
for k:=0 to n do
begin
R:=(cos((k+1)*Pi/4)*x)/((k+1)*cos(k*Pi/4));
an:=an*R;
S:=S+an;
end;
y:=Exp(x*cos(Pi/4))*cos(x*sin(Pi/4));
al:=s-y;
del:=abs((s-y)/y)*100;
if CheckBox2.Checked then
if CheckBox3.Checked then
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,6,2)+
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3)+
' A='+ FloatToStrF(al,ffFixed,6,3)+
' D='+ FloatToStrF(del,ffFixed,6,0)+'%')
else
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,6,2)+
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3)+
' A='+ FloatToStrF(al,ffFixed,6,3))
else if CheckBox3.Checked then
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,6,2) +
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3)+
' D='+ FloatToStrF(del,ffFixed,6,0)+'%')
else
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,6,2)+
' S='+ FloatToStrF(s,ffFixed,6,3)+
' Y='+ FloatToStrF(y,ffFixed,6,3));
x:=x+h;
until x>xk;
end;
initialization
{$I unit1.lrs}
end.