
лабораторная работа / лабораторные работы по LAZARUS / Программирование циклических алгоритмов №3 вар7
.doc
МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РФ
САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
БАЛАКОВСКИЙ ИНСТИТУТ ТЕХНИКИ, ТЕХНОЛОГИИ И УПРАВЛЕНИЯ
факультет: ИС
кафедра: УИТ
дисциплина: системное программное обеспечение
Лабораторная работа №3
Программирование циклических алгоритмов
Выполнил:
студент 3 курса
гр. УИТ-31
приняла:
г. Балаково 2009 г.
Цель лабораторной работы: освоить простейшие средства отладки модулей проекта, графических компонентов, и создать приложение, которое использует циклический алгоритм.
№ |
|
|
S(x) |
n |
Y(x) |
7 |
0.3 |
0.8 |
|
10 |
|
Программа:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
Spin, Buttons;
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:=10;
Edit1.text:='0,3';
Edit2.text:='0,8';
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:=-4*sqr(x)/((2*k+1)*(2*k+2));
an:=an*R;
S:=S+an;
end;
y:=cos(2*x);
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.
Полученные результаты:
Лабораторная работа №3 - Циклический алгоритм
Исходные данные: n=10 Xn=0,3 Xk=0,8
x=0,30 S=0,825 Y=0,825 A=0,000 D=0%
x=0,35 S=0,765 Y=0,765 A=0,000 D=0%
x=0,40 S=0,697 Y=0,697 A=0,000 D=0%
x=0,45 S=0,622 Y=0,622 A=0,000 D=0%
x=0,50 S=0,540 Y=0,540 A=0,000 D=0%
x=0,55 S=0,454 Y=0,454 A=0,000 D=0%
x=0,60 S=0,362 Y=0,362 A=0,000 D=0%
x=0,65 S=0,267 Y=0,267 A=-0,000 D=0%
x=0,70 S=0,170 Y=0,170 A=-0,000 D=0%
x=0,75 S=0,071 Y=0,071 A=-0,000 D=0%