Учебный курс Программирование на Delphi. Модуль 16
Содержание
Пример 1
- Условие задачи:
Вычислить интеграл Файл:Ф12-1.JPG
по методу прямоугольников и трапеций:
- Использованные компоненты:
Edit1 - для ввода нижнего предела интегрирования;
Edit2 - для ввода вержнего предела интегрирования;
Edit3 - количество интервалов интегрирования;
Label1 - для вывода значения интеграла по методу прямоугольников;
Label2 - для вывода значения интеграла по методу трапеций;
Button - вывод результата.
- Программный код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Button1: TButton; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label3: TLabel; Label7: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function f(x:real):real; begin f:=2*x*x+4 end; procedure TForm1.Button1Click(Sender: TObject); var a,b:real; n,i:integer; s,h,Ip,It:real; begin a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); n:=StrToInt(Edit3.Text); h:=(b-a)/n; s:=0; for i:=0 to n-1 do s:=s+f(a+i*h); Ip:=s*h; label1.Caption:=FloatToStr(Ip); S:=(f(a)+f(b))/2; for i:=1 to n-1 do s:=s+f(a+i*h); It:=s*h; label2.caption:=FloatToStr(It); end; end.
- Форма с результатом работы программы:
Пример 2
- Условие задачи:
x3-cos(x)=0
найти корни уравнения с помощью метода половинного деления
- Использованные компоненты:
Label1 - для текстового сообщения
Label2 - для вывода значения корня уравнения, найденного с помощью метода половинного деления
Label3 - для вывода значения корня уравнения, найденного графическим способом
Button - кнопка для запуска процедуры поиска корня методом половинного деления
- Программный код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label2: TLabel; Label1: TLabel; Label3: TLabel; procedure FormPaint(Sender: TObject); procedure FormResize(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; t:real; implementation {$R *.dfm} function f(x:real):real; begin f:=x*x*x-COS(x); end; procedure gr; var x1,x2:real; y1,y2:real; x:real; y:real; dx:real; l,b:integer; w,h:integer; mx,my:real; x0,y0:integer; begin l:=10; b:=Form1.clientheight-20; h:=Form1.clientheight-40; w:=Form1.clientwidth-40; x1:=-3; x2:=3; dx:=0.0001; y1:=f(x1); y2:=f(x1); x:=x1; repeat y:=f(x); if y<y1 then y1:=y; if y>y2 then y2:=y; x:=x+dx; until (x>=x2); my:=h/(abs(y2-y1)); mx:=w/(abs(x2-x1)); x0:=l; y0:=b-abs(round(y1*my)); with form1.canvas do begin moveto(l,b); lineto(l,b-h); moveto(x0,y0); lineto(x0+w,y0); textout(l+5,b-h,floattostrf(y2,ffgeneral,6,3)); textout(l+5,b,floattostrf(y1,ffgeneral,6,3)); x:=x1; repeat y:=f(x); if abs(y)<0.01 then t:=x; pixels[x0+round(x*mx),y0-round(y*my)]:=clred; x:=x+dx; until (x>=x2); end; end; procedure TForm1.FormPaint(Sender: TObject); begin gr; Label3.Caption:=floattostr(t); end; procedure TForm1.FormResize(Sender: TObject); begin form1.Canvas.FillRect(rect(0,0,clientwidth,clientheight)); gr; end; procedure TForm1.Button1Click(Sender: TObject); var a,b,c:real; y1,y2,e:real; begin a:=-3; b:=3; e:=0.00001; repeat c:=(a+b)/2; y1:=f(a); y2:=f(c); if (y1*y2>0) then a:=c else b:=c; until (abs(b-a))<e; label2.caption:=floattostr(c); end; end.
- Форма с результатом работы программы:
Пример 3
- Условие задачи:
Заданы значения температуры:
Какая температура была в 7 день?
- Использованные компоненты:
- Программный код:
- Форма с результатом работу программы:
Литература
- Архангельский. Программирование на Delphi 6. – М: БИНОМ, 2002
- Бобровский С. Delphi 7. Учебный курс. – СПб: Питер, 2003
- Культин Н. Основы программирования в Delphi 7. СПб: БХВ-Петербург, 2005.