Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка моя_Шаблон.doc
Скачиваний:
0
Добавлен:
26.09.2019
Размер:
1.2 Mб
Скачать

Создание формы приложения.

Для создания приложения средствами Lazarus открываем среду разработки, создаем новый проект.

После этого создаем еще одну форму на которой будет информация о курсовой

После этого выполняем написание всего необходимого кода и компилируем программу.

Результаты работы программы

Здесь изображены графики зависимости погрешности метода трапеций и метода правых прямоугольников от числа разбиений.

Листинг программы

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,

Menus, ExtCtrls;

type

{ TForm1 }

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Image1: TImage;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

MainMenu1: TMainMenu;

MenuItem1: TMenuItem;

MenuItem2: TMenuItem;

MenuItem3: TMenuItem;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Image1Click(Sender: TObject);

procedure MenuItem1Click(Sender: TObject);

procedure MenuItem2Click(Sender: TObject);

procedure MenuItem3Click(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

Uses Unit2,Unit3,Unit4,Unit5;

procedure TForm1.Button1Click(Sender: TObject);

begin

Form2.show;

Form1.Hide;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.Image1Click(Sender: TObject);

begin

end;

procedure TForm1.MenuItem1Click(Sender: TObject);

begin

Form3.show;

end;

procedure TForm1.MenuItem2Click(Sender: TObject);

begin

Form4.Show;

end;

procedure TForm1.MenuItem3Click(Sender: TObject);

begin

Form5.Show;

end;

end.

unit Unit2;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Math, Dialogs,

StdCtrls, ExtCtrls;

type

{ TForm2 }

TForm2 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button6: TButton;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Image1: TImage;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

var

Form2: TForm2;

implementation

{$R *.lfm}

{ TForm2 }

Uses Unit1,Unit5,Unit4;

procedure TForm2.Button1Click(Sender: TObject);

Var t0,tizm,x,h,f,f0,fn,sft,I0,Ik,sum:real; i,n:integer;

begin

n:=StrToInt(Edit1.Text);

t0:=0;

tizm:=StrToFloat(Edit2.Text);

I0:=Strtoint(Edit3.text);

Ik:=Strtoint(Edit4.text);

If ((Edit1.Text='') or (Edit2.Text='')) or ((Edit3.text='') or (Edit4.text='')) then showmessage('Введите данные')

else

begin

h:=(tizm-t0)/n;

Label1.Caption:=FloatToStrF(h,ffFixed,4,3);

sum:=0;

x:=0;

for i:=1 to n-1 do

begin

x:=x+h;

f:=(I0+(Ik-I0)*(x*tanh(x)/tizm))*(I0+(Ik-I0)*(x*tanh(x)/tizm));

sum:=sum+f;

end;

end;

f0:=I0;

fn:=(I0+(Ik-I0)*(tizm*tanh(tizm)/tizm))*(I0+(Ik-I0)*(tizm*tanh(tizm)/tizm));

sft:=(2*sum+f0+fn)/(2*h)/792000;

Label2.Caption:=FloatToStrF(sft,ffFixed,4,3);

end;

procedure TForm2.Button2Click(Sender: TObject);

var

t0,tizm,x,h,sum,I0,Ik: real;

i,n: integer;

begin

n:=StrToInt(Edit1.Text);

t0:=0;

tizm:=StrToFloat(Edit2.Text);

I0:=Strtoint(Edit3.text);

Ik:=Strtoint(Edit4.text);

h:=(tizm-t0)/n;

Label1.Caption:=FloatToStrF(h,ffFixed,4,3);

x:=h;

sum:=0;

for i:=1 to n do

begin

sum:=sum+(I0+(Ik-I0)*(x*tanh(x)/tizm))*(I0+(Ik-I0)*(x*tanh(x)/tizm));

x:=x-h;

end;

sum:=sum*h/792000;

Label2.Caption:=FloatToStrF(sum,ffFixed,4,3);

end;

procedure TForm2.Button3Click(Sender: TObject);

begin

Form1.Show;

Form2.Hide;

end;

procedure TForm2.Button4Click(Sender: TObject);

begin

Form4.Show;

Form2.Hide;

end;

end.

unit Unit4;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

StdCtrls, Grids, TAGraph, TASources, TASeries,Math, types, TACustomSeries;

type

{ TForm4 }

TForm4 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Chart1: TChart;

Chart1LineSeries1: TLineSeries;

Chart2: TChart;

Chart2LineSeries1: TLineSeries;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

StringGrid1: TStringGrid;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Chart1LineSeries1DrawPointer(ASender: TChartSeries;

ACanvas: TCanvas; AIndex: Integer; ACenter: TPoint);

private

{ private declarations }

public

{ public declarations }

end;

var

Form4: TForm4;

implementation

Uses Unit2;

{$R *.lfm}

{ TForm4 }

procedure TForm4.Button3Click(Sender: TObject);

Var t0,tizm,x,h,f,f0,fn,sft,I0,Ik,sum,pogr,q,z,y:real; i,n,p:integer; a: array[0..500] of real;

b: array[0..500] of real; Fi: TextFile;

begin

n:=10;p:=0;y:=10;

t0:=0;

tizm:=50;

I0:=1;

Ik:=50;

StringGrid1.RowCount:=3;

StringGrid1.ColCount:=21;

StringGrid1.Cells[0,0]:='n';

StringGrid1.Cells[0,2]:='trap';

StringGrid1.Cells[0,1]:='pryam';

while n<201 do

begin

begin

h:=(tizm-t0)/n;

sum:=0;

x:=0;

for i:=1 to n-1 do

begin

x:=x+h;

f:=(I0+(Ik-I0)*(x*tanh(x)/tizm))*(I0+(Ik-I0)*(x*tanh(x)/tizm));

sum:=sum+f;

end;

end;

f0:=I0;

fn:=(I0+(Ik-I0)*(tizm*tanh(tizm)/tizm))*(I0+(Ik-I0)*(tizm*tanh(tizm)/tizm));

sft:=(2*sum+f0+fn)/(2*h)/792000;

n:=n+10;

pogr:=abs(sft-0.05260833);

a[p]:=pogr;

p:=p+1;

end;

n:=10; p:=0;

while n<201 do

begin

h:=(tizm-t0)/n;

x:=h;

sum:=0;

for i:=1 to n do

begin

sum:=sum+(I0+(Ik-I0)*(x*tanh(x)/tizm))*(I0+(Ik-I0)*(x*tanh(x)/tizm));

x:=x-h;

end;

sum:=sum*h/792000;

n:=n+10;

pogr:=abs(sum-0.05260833);

b[p]:=pogr;

p:=p+1;

end;

chart2lineseries1.Clear;

chart1lineseries1.Clear;

For p:=0 To 19 Do

begin

q:=a[p];

z:=b[p];

chart2lineseries1.AddXY(y,q,'',clred);

chart1lineseries1.AddXY(y,z,'',clred);

StringGrid1.Cells[p+1,2]:=FloatToStrF(a[p],ffFixed,4,6);

StringGrid1.Cells[p+1,1]:=FloatToStrF(b[p],ffFixed,4,6);

StringGrid1.Cells[p+1,0]:=FloatToStr(y);

AssignFile(Fi,'D:\Akhmerov.txt');

append(Fi);

Writeln(Fi,FloatToStr(y)+' '+FloatToStrF(a[p],ffFixed,4,6)+' '+FloatToStrF(b[p],ffFixed,4,6));

CloseFile(Fi);

y:=y+10;

end;

end;

procedure TForm4.Button2Click(Sender: TObject);

begin

Form2.Show;

Form4.Hide;

end;

procedure TForm4.Button1Click(Sender: TObject);

begin

Close;

end;

procedure TForm4.Chart1LineSeries1DrawPointer(ASender: TChartSeries;

ACanvas: TCanvas; AIndex: Integer; ACenter: TPoint);

begin

end;

end.

Выводы

В результате выполнения данной курсовой работы были изучены методы сортировки массивов, а именно - Метод Трапеций и метод правых прямоугольников. Так же была реализована программа на языке высокого уровня Lazarus, демонстрирующая возможности данных методов.