Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабораторная работа / лабораторные работы по LAZARUS / Программирование циклических алгоритмов №3 вар7

.doc
Скачиваний:
53
Добавлен:
11.02.2014
Размер:
53.25 Кб
Скачать

МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РФ

САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

БАЛАКОВСКИЙ ИНСТИТУТ ТЕХНИКИ, ТЕХНОЛОГИИ И УПРАВЛЕНИЯ

факультет: ИС

кафедра: УИТ

дисциплина: системное программное обеспечение

Лабораторная работа №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%