
лабораторная работа / лабораторные работы по LAZARUS / Программирование циклических алгоритмов №3 вариант 10
.doc
БАЛАКОВСКИЙ
ИНСТИТУТ ТЕХНИКИ ТЕХНЛЛОГИИ И УПРАВЛЕНИЯ
ФАКУЛЬТЕТ
ИНЖЕНЕРНО-СТРОИТЕЛЬНЫЙ
КАФЕДРА УПРАВЛЕНИЕ
И ИНФОРМАТИКА В ТЕХНИЧЕСКИХ СИСТЕМАХ
Лабораторная
работа № 3
дисциплина
СПО
Выполнила ст. гр.
УИТ – 33
Принял:
« »
2008 г.
Балаково, 2008
Балаково 2007
«Программирование
ЦИКЛИЧЕСКИХ алгоритмов»
Цель работы: освоить простейшие средства отладки модулей проекта, графических компонентов, и создать приложение, которое использует циклический алгоритм.
Задание: вывести на экран таблицу значений:
Текст программы
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons,
StdCtrls, 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:=15;
Edit1.Text:='0.1';
Edit2.Text:='0.5';
Memo1.Clear;
Memo1.Lines.Add('Лабораторная работа №3 - Циклический алгоритм');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
xn,xk,x,h, an,y, al, R, del, S: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)*0.1;
x:=xn;
repeat
an:=x;
S:=an;
for k:=1 to n do
begin
R:=(-x*x*(2*(k-1)+1))/(2*(k-1)+3);
an:=an*R;
S:=S+an;
end;
y:=arctan(x);
if CheckBox2.checked then
if checkbox3.checked then begin
al:=S-y;
del:=abs((S-y)/y)*100;
Memo1.Lines.Add('x='+FloatToStr(x)+
' S='+ FloatToStrF(s,ffFixed,6,2)+
' Y='+ FloatToStrF(y,ffFixed,6,2)+
' A='+ FloatToStrF(al,ffFixed,6,2)+
' D='+ FloatToStrF(del,ffFixed,6,0)+'%');
end
else
if CheckBox2.Checked then begin
al:=s-y;
Memo1.Lines.Add('x='+FloatToStr(x)+
' S='+ FloatToStrF(s,ffFixed,6,2)+
' Y='+ FloatToStrF(y,ffFixed,6,2)+
' A='+ FloatToStrF(al,ffFixed,6,2));
end
else
if checkbox3.checked then begin
del:=abs((s-y)/y)*100;
Memo1.Lines.Add('x='+FloatToStr(x)+
' S='+ FloatToStrF(s,ffFixed,6,2)+
' Y='+ FloatToStrF(y,ffFixed,6,2)+
' D='+ FloatToStrF(del,ffFixed,6,2)+'%');
end
else
Memo1.Lines.Add('x='+FloatToStr(x)+
' S='+ FloatToStrF(s,ffFixed,6,2)+
' Y='+ FloatToStrF(y,ffFixed,6,2));
x:=x+h;
until x>xk;
end;
initialization
{$I unit1.lrs}
end.
Вывод результата: