Смекни!
smekni.com

Программа вычисления значения определённого интеграла (стр. 4 из 4)

3.1 Системные требования

Pentium 133 Mhz, RAM 32 Mb, HDD 10Mb, Windows 98

3.2 Помощь

Для справки нажмите F1, и появится окно

Рис.8- Справка

3.3 Установка программы

Для установки программы необходимо скопировать папку EXE

Содержимое папки:

Project1.exe

Mydll.dll

Helpkurs


Выводы

Таким образом,данная работа позволила мне:

1. закрепить на опыте знания, полученные при изучении дисциплины “Системное программирование”.

2. научился разрабатывать программные продукты под операционную среду Windows

3. закрепил следующие знания:

- Программирование в Delphi

- Программирование программ использующие код, написанный на других языках программирования (использование DLL )

- Динамическая компоновка с DLL

- Численные методы для вычисления определенных интегралов

- Написание Help в стиле Windows.


Список используемой литературы

1. Delphi 6. Для профессионалов. Разработка COM: Пер.с англ.:-464c. 2005

2. Разработка приложений в среде Delphi: пер.с англ.:Уч.пос-М.:Издательский дом «Вильямс»,2006.-464с.


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

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ComCtrls, Menus, ExtDlgs, ExtCtrls, ToolWin, Gauges,

AppEvnts, TeEngine, Series, TeeProcs, Chart, TeeFunci, Buttons, ShellAPI,

ScktComp, ImgList;

type

TKurs = class(TForm)

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

Edzn1: TEdit;

Edzn2: TEdit;

Edit3: TEdit;

MainMenu1: TMainMenu;

file1: TMenuItem;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

SavePictureDialog1: TSavePictureDialog;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

StatusBar1: TStatusBar;

Imint: TImage;

Cbint: TComboBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

CBmet: TComboBox;

Memo1: TMemo;

Label5: TLabel;

Burun: TButton;

N7: TMenuItem;

N22GetCurrentDirectory1: TMenuItem;

N52SetForegroundWindow1: TMenuItem;

DateTimePicker1: TDateTimePicker;

Imgraf: TImage;

Label6: TLabel;

Buclear: TButton;

Bitgraf: TBitBtn;

GroupBox1: TGroupBox;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

ApplicationEvents1: TApplicationEvents;

N8: TMenuItem;

N9: TMenuItem;

ImageList1: TImageList;

Timer1: TTimer;

Gauge1: TGauge;

N10: TMenuItem;

N11: TMenuItem;

ColorDialog1: TColorDialog;

ColorDialog2: TColorDialog;

N12: TMenuItem;

procedure N1Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure CbintChange(Sender: TObject);

procedure BurunClick(Sender: TObject);

procedure int1(a,b:real;n:integer;var ss:real);

procedure int2(a,b:real;n:integer;var ss:real);

procedure FormCreate(Sender: TObject);

procedure N22GetCurrentDirectory1Click(Sender: TObject);

procedure N52SetForegroundWindow1Click(Sender: TObject);

procedure ApplicationEvents1Hint(Sender: TObject);

procedure BuclearClick(Sender: TObject);

procedure BitgrafClick(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N12Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

tfun=function(x:real):real;

var

Kurs: TKurs;

INT,F1,f2:tfun;

han:thandle;

k:boolean;

a,b,s,h,ss,y0,yn,s2,x2,xx1,xx2,xk:real;

n,n1,i1:integer;

mplementation

uses Unit2, Unit3, Unit4, Unit5 ;

{$R *.dfm}

procedure TKurs.N1Click(Sender: TObject);

begin

Imgraf.Picture.SaveToFile(SavePictureDialog1.FileName+'.bmp');

end;

procedure TKurs.N4Click(Sender: TObject);

begin

if k=true then begin

N1.Enabled:=true;

if SavePictureDialog1.Execute then

Imgraf.Picture.SaveToFile(SavePictureDialog1.FileName+'.bmp');

end

else

ShowMessage('Ãðàôèê íå îòðèñîâàí');

end;

procedure TKurs.N6Click(Sender: TObject);

begin

Application.HelpCommand(HELP_FINDER,0);

end;

procedure TKurs.CbintChange(Sender: TObject);

begin

if CBint.Text='Èíòåãðàë ¹1' then

Imint.Picture.LoadFromFile('int.bmp') else

Imint.Picture.LoadFromFile('int1.bmp');

end;

procedure TKurs.BurunClick(Sender: TObject);

begin

a:=strtofloat(Edzn1.text);

b:=strtofloat(Edzn2.text);

n:=strtoint(Edit3.Text);

if (edzn1.Text<>'') and (Edzn2.Text<>'') and

(Cbint.ItemIndex<>-1)and (CBmet.ItemIndex<>-1) then

begin

try

If (Cbint.Text='Èíòåãðàë ¹1') then

int:=f1;

if (CBmet.Text='Ìåòîäîì Ñèìïñîíà') then

int1(a,b,n,ss);

if (CBint.Text='Èíòåãðàë ¹1') then

int:=f1;

if (CBmet.Text='Ìåòîäîì òðàïåöèé') then

int2(a,b,n,ss);

if (Cbint.Text='Èíòåãðàë ¹2') then

int:=f2;

if (CBmet.Text='Ìåòîäîì Ñèìïñîíà')then

int1(a,b,n,ss);

if (CBint.Text='Èíòåãðàë ¹2') then

int:=f2;

if (CBmet.Text='Ìåòîäîì òðàïåöèé')then

int2(a,b,n,ss);

Memo1.Lines.Add(' '+CBint.Text);

Memo1.Lines.Add((CBmet.Text)+' = '+(FloatToStrF(ss,ffNumber,9,3)));

finally

if (a)>(b)

then

ShowMessage('Ââåðõíÿÿ ãðàíèöà äîëæíà áûòü áîëüøå íèæíåé');

end;

end

else

if (Edzn1.Text=' ') then ShowMessage('Íå ââåäåíà ââåðõíÿÿ ãðàíèöà!');

if (Edzn2.Text=' ') then ShowMessage('Íå ââåäåíà íèæíÿÿ ãðàíèöà!');

if (Cbint.ItemIndex=-1) then ShowMessage('Âíèìàíèå!Íå âûáðàí èíòåãðàë!');

if (CBmet.ItemIndex=-1) then ShowMessage('Íå âûáðàí ìåòîä ðåøåíèÿ!');

end;

procedure TKurs.FormCreate(Sender: TObject);

begin

han:=loadlibrary('mydll.dll');

if han=0 then showmessage('+Áèëèîòåêà íå íàéäåíà!')

else

begin

@f1:=getprocaddress(han,'f1');

@f2:=getprocaddress(han,'f2');

end;

end;

procedure TKurs.int1(a,b:real;n:integer;var ss:real);

ar i1,i2,i:integer;h,s,s1,x1,s2,x2,yn,x:real;

begin

i:=1;

s1:=0;

y0:=INT(a);

h:=(b-a)/n;

repeat

x1:=a+i*h;

s1:=s1+INT(x1);

i:=i+2;

until i>n-1;

i1:=2;

s2:=0;

yn:=INT(b);

repeat

x2:=a+i1*h;

s2:=s2+INT(x2);

i1:=i1+2;

until i1>n-2;

yn:=a-n*h;

s:=(h/3)*(y0+4*s1+2*s2+yn);

ss:=s;

end;

procedure TKurs.int2(a,b:real;n:integer;var ss:real);

var i,j:integer;k:real;

begin

Form5.StringGrid1.Cells[0,0]:='I';

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

form5.StringGrid1.Cells[2,0]:='SQR(Xi)';

Form5.StringGrid1.Cells[3,0]:='(0.5*sqr(Xi)+1.5))';

Form5.StringGrid1.Cells[4,0]:='y0..yn';

Form5.StringGrid1.Cells[5,0]:='y1..yn';

s:=0;

h:=(b-a)/n;

Form5.Label2.Caption:=floattostr(h);

Form5.StringGrid1.RowCount:=n+3;

for i:=0 to n do begin

s:=s+iNT(a+i*h);

j:=0;

Form5.StringGrid1.Cells[j,i+1]:=intToStr(i);

j:=1;

Form5.StringGrid1.Cells[j,i+1]:=FloatToStrF((a+i*h),ffNumber,4,4);

j:=2;

orm5.StringGrid1.Cells[j,i+1]:=FloatToStrF(sqr(a+i*h),ffNumber,4,4);

j:=3;

form5.StringGrid1.Cells[j,i+1]:=FloatToStrF(0.5*sqr(a+i*h)+1.5,ffNumber,4,4);

j:=5;

Form5.StringGrid1.Cells[j,i+2]:=FloatToStrF(int(a+(i+1)*h),ffNumber,4,4);

end;

Form5.Show;

Form5.StringGrid1.Cells[0,n+2]:='Ñóììà';

Form5.StringGrid1.Cells[5,n+2]:=FloatToStrF(s-(int(a+(n)*h)+int(a+0*h)),ffNumber,4,4);

Form5.StringGrid1.Cells[4,1]:=FloatToStrF(int(a+0*h),ffNumber,4,4);

Form5.StringGrid1.Cells[4,n+1]:=FloatToStrF(int(a+(n)*h),ffNumber,4,4);

Form5.StringGrid1.Cells[4,n+2]:=FloatToStrF(int(a+(n)*h)+int(a+0*h),ffNumber,4,4);

s:=((INT(a)+INT(b))/2+s)*h;

ss:=s;

end;

procedure TKurs.N22GetCurrentDirectory1Click(Sender: TObject);

begin

form2.Show;

end;

procedure TKurs.N52SetForegroundWindow1Click(Sender: TObject);

begin

form3.Show;

end;

procedure TKurs.ApplicationEvents1Hint(Sender: TObject);

begin

StatusBar1.Panels[0].Text:=Application.Hint;

end;

procedure TKurs.BuclearClick(Sender: TObject);

begin

Memo1.Lines.Clear;

end;

procedure TKurs.BitgrafClick(Sender: TObject);

var

x,ymin,ymax,hx1,hx,hy,xn,xk,mx,sx,my,sy,yy,xx:real;i,X1,Y1,Y2,x3,xa,ya,xb,yb:integer;

begin

if Timer1.Enabled=false then

Timer1.Enabled:=true;

Kurs.Imgraf.Canvas.FillRect(rect(0,0,620,370));

xn:=strtofloat(Edzn1.text);

xk:=StrTofloat(Edzn2.Text);

n:=strtoint(Edit3.Text);

x:=xn;ymax:=-1e30;ymin:=1e30;

while x<=xk do

begin

if RadioButton1.Checked then

int:=f1;

if RadioButton2.Checked then

int:=f2;

int1(x,xk,n,ss);

if ss>ymax then ymax:=ss;

if ss<ymin then ymin:=ss;

x:=x+0.01;

end;

x:=xn;

int1(x,xk,n,ss);

x1:=round(mx*x+sx);

y1:=round(my*x+sy);

repeat

int1(x,xk,n,ss);

x3:=ROUND(mx*x+sx);y2:=round(-my*ss+sy);

kurs.Imgraf.Canvas.Pen.Color:=ColorDialog2.color;

kurs.Imgraf.Canvas.Brush.Color:=clwhite;

kurs.Imgraf.Canvas.MoveTo(x1,y1);

kurs.Imgraf.Canvas.LineTo(x3,y2);

x1:=x3;y1:=y2;

k:=true;

kurs.Imgraf.Canvas.Pen.Color:=clred;

kurs.Imgraf.Canvas.Pen.Width:=2;

hx1:=1;

hx:=(xk-xn)/10;

xa:=0;ya:=0;xb:=450;yb:=310;

mx:=(xb-xa)/(xk-xn);my:=(yb-ya)/(ymax-ymin);

sy:=ya+my*ymax;sx:=xa-mx*xn;

kurs.Imgraf.Canvas.MoveTo(xb,yb);

kurs.Imgraf.Canvas.LineTo(xa,yb);

x:=x+0.01;

until x>xk;

i:=3;

xx:=xn;

//âåðòèêàëüíûå ñîñòîâëÿþùèå

repeat

kurs.Imgraf.Canvas.MoveTo(i,ya);

kurs.Imgraf.Canvas.LineTo(i,yb);

kurs.Imgraf.Canvas.TextOut(i,yb+5,FloatToStr(xx));

inc(i,Round((Imgraf.Width-50)/10));

xx:=xx+hx;

until i>Imgraf.Width;

//ãîðèçîíòàëüíûå ñîñòàâëÿþùèå

i:=Imgraf.Height-50;

repeat

yy:=(sy-i)/my;

kurs.Imgraf.Canvas.MoveTo(0,i);

kurs.Imgraf.Canvas.LineTo(Imgraf.Width,i);

kurs.Imgraf.Canvas.TextOut(0,i-5,FloatToStrF(yy,ffNumber,4,2));

i:=i-round(hy);

dec(i,Round((Imgraf.Height-50)/10));

until i<0 ;

end;

rocedure TKurs.RadioButton1Click(Sender: TObject);

begin

Bitgraf.Enabled:=true;

end;

procedure TKurs.RadioButton2Click(Sender: TObject);

begin

Bitgraf.Enabled:=true;

end;

procedure TKurs.Button3Click(Sender: TObject);

begin

SetForegroundWindow(HWND_TOP );

end;

procedure TKurs.N9Click(Sender: TObject);

begin

Form4.Show;

end;

procedure TKurs.Timer1Timer(Sender: TObject);

begin

Gauge1.Progress:=Gauge1.Progress+10;

if Gauge1.Progress=100 then begin

Timer1.Enabled:=false;

Gauge1.Progress:=0;

end;

end;

procedure TKurs.N10Click(Sender: TObject);

begin

if ColorDialog2.Execute then

kurs.Imgraf.Canvas.Pen.Color:=ColorDialog1.Color;

end;

procedure TKurs.N11Click(Sender: TObject);

begin

if ColorDialog1.Execute then

kurs.Imgraf.Canvas.Pen.Color:=ColorDialog1.Color;

end;

procedure TKurs.N12Click(Sender: TObject);

begin

Kurs.Close;

end;

end.