unit Grfunc_1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Implementation
{$R *.DFM}
procedure Gr0fFunc; {Функцияның графигін тұрғызу}
var
x1,x2:real; // функция аргументінің өзгеру шекарасы
y1,y2:real; // функция мәнінің өзгеру шекарасы
x:real; //функция аргументі
y:real; // х нүктесіндегі функцияның мәні
dx:real; // аргументтің ауысуы
l,b:integer; // графикті шығару аймағының сол жақ төменгі бұрышы
w,h:integer; // графикті шығару аймағының биіктігі мен ені
mx,my:real; // X және Y осьтері бойынша координаталар
x0,y0:integer; // нүкте - координата басы
{Графикті тұрғызатын функция}
function f(x:real):real;
begin
f:=2*sin(x)*exp(x/5);
end;
begin
// Графикті шығару аймағы
l:=10; // Х – сол жақ жоғарғы бұрыштың координатасы
b:=Form1.ClientHeight-20; // Y – сол жақ жоғарғы бұрыштың координатасы
h:=Form1.ClientHeight-40; // биіктігі
w:=Form1.ClientWidth-40; // ені
x1:=0; //аргумент диапазонының төменгі шекарасы
x2:=25; //аргумент диапазонының төменгі шекарасы
dx:=0.01; // аргумент қадамы
{[x1,x2] бөлігіндегі функцияның максимальды және минимальды мәндерін табайық }
y 1:=f(x1); // минимум
y2:=f(x1); // максимум
x:=x1;
repeat
y:=f(x);
if ythen y1:=y;
if y>y2 then y2:=y;
x:=x+dx;
until (x>=x2);
my:=h/abs(y2-y1);
// Y осі бойынша масштаб
mx:=w/abs(x2-x1);
// X осі бойынша масштаб
{остер}
Gr0fFunc процедурасы арқылы тұрғызылған график
x0:=1;
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);
Form1.Canvas.Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;
x:=x+dx;
until (x>=x2);
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
Gr0fFunc;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
// очистить форму
with form1 do
Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight));
Gr0fFunc;
end;
end.
№ 7 тапсырманың бағдарламасына басқа функцияның графигі тұрғызылатындай өзгеріс енгізіңіздер. Бағдарламаны барлық диапазонда тек оң немесе тек теріс мәндер қабылдайтын функцияның графигін тұрғызатындай етіп өзгертіңіздер.
№1 тапсырмасындағы қосымша сияқты синус функциясының графигін тұрғызатын қосымша құрыңыздар.
Бағдарлама терезесінің шекарасымен сол жақтан оң жағына қарай бағытта жылжитын шеңбердің қозғалысын көрсететін бағдарлама құрыңыздар (TCanvas класының әдістерін қолданыңыздар).
Суреттің орын ауыстыруын қамтамасыз ету өте қарапайым түрде ұйымдастырылады: ең алдымен суретті шығару керек, содан соң бірнеше уақыттан кейін оны өшіріп, қайта шығару керек, бірақ ол алдыңғы орынына қарағанда бірнеше ара қашықтықтан кейін шығады. Шеңберді қайта - қайта салуды ұйымдастыратын процедураны периодты түрде шақырып тұру үшін пішінге System парағынан Timer көрнекі емес құрауышын орналастырыңыздар.
Достарыңызбен бөлісу: |