Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритм+жне+бадарламалау+негіздері.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

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 y<y1 then 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.

  1. № 7 тапсырманың бағдарламасына басқа функцияның графигі тұрғызылатындай өзгеріс енгізіңіздер. Бағдарламаны барлық диапазонда тек оң немесе тек теріс мәндер қабылдайтын функцияның графигін тұрғызатындай етіп өзгертіңіздер.

  2. №1 тапсырмасындағы қосымша сияқты синус функциясының графигін тұрғызатын қосымша құрыңыздар.

  3. Бағдарлама терезесінің шекарасымен сол жақтан оң жағына қарай бағытта жылжитын шеңбердің қозғалысын көрсететін бағдарлама құрыңыздар (TCanvas класының әдістерін қолданыңыздар).

Суреттің орын ауыстыруын қамтамасыз ету өте қарапайым түрде ұйымдастырылады: ең алдымен суретті шығару керек, содан соң бірнеше уақыттан кейін оны өшіріп, қайта шығару керек, бірақ ол алдыңғы орынына қарағанда бірнеше ара қашықтықтан кейін шығады. Шеңберді қайта - қайта салуды ұйымдастыратын процедураны периодты түрде шақырып тұру үшін пішінге System парағынан Timer көрнекі емес құрауышын орналастырыңыздар.

4.Графикалық мүмкіндіктер

4.1. Қозғалысты программалау.

Қозғалысты еліктету немесе анимация эффектін көрсету негізгі үш қадамдың орындалуымен қамтылады:

  • Объектіні экран бетіне шығару (кейде шағын үзіліс орнатылғаны жөн);

  • Объектіні экраннан алып тастау;

  • Объектіні басқа жерге шығару.

Диаграмма және график салу

Диаграмма мен график сандық берілгендерді ұғынуды жеңілдетуге бейімделген және Delphi ортасы олармен жұмыс атқаратын компоненттерімен қамтылған. Диаграммаларды екі топқа бөлуге болады:

  • Индикаторлар;

  • Күрделі диаграммалар және графиктер.

4.2. Индикаторларды пайдалану

Индикатор жалпы диаграмманың қарапайым түріне жатады және ол арқылы кейбір ұзақ уақыт орындалатын іс-әрекет (мысалы, дискетті форматтау, файлды көшіру, т.с.с.) процестердің көрінісін мәтіндік және графикалық түрде бейнелеуге арналған.

Delphi ортасы жұмыстың орындалуын көрсететін ProgressBar және Gauge компоненттерін ұсынады.

ProgressBar ортаның Win32 парағында орналасқан, бұл компонент белдеу түрінде болып, кейбір ұзақ уақыт орындалатын іс-әрекеттің көрінісін экран бетіне шығарады.

D elphi ортасының Win32 парағы

ProgressBar компонентінің индикация өрістері мен реңінің түсін өзгертетін қасиеттері жоқ, сондықтан бұл параметрлер контейнер параметрлерімен анықталады. Әдетте графикалық белдеу көк түспен боялады.

ProgressBar компонентінің келесі қасиеттерін негізгі деп санайды:

  • Min және Max - индикатордың алғашқы және соңғы мәндерінің

аралығын анықтайды. Келісімше Min=0%, Max=100% деп саналады.

  • Position - орындалған іс-әрекеттің салыстырмалы көлемін Min және Max мәндеріне сәйкес анықтайды. Мысалы, Min=0, Max=80 деп көрсетілсе, онда Position-ның 20 деген мәніне сәйкес орындалған жұмыстың көлемі 25% деп саналады.

  • Step - индикатордың көлемі өскендегі позицияның қандай мәнге өсіп отыратынын анықтайды.

Индикатордың позициясын программада көрсетуге болады, мысалы:

ProgressBar1. Position:=35;

ProgressBar-ның элементінің позициясын StepIt (өсімшесі Step) және StepBy (Delta:Integer) (өсімшесі Delta) процедуралары арқылы өзгертуге болады. Мысалы, ProgressBar1.StepBy (13).

Бұл оператор бойынша ProgressBar1-дің индикаторы 13-ке өсіп отырады.

ProgressBar1 компонентінің Caption немесе Text қасиеттері жоқ болғандықтан, жұмыс атқару индикаторын жазумен қамту үшін, Label компонентін қолдануға болады.

Samples парағында орналасқан Gauge элементі қарапайым диаграммаларды шығаруда қолданылады. Gauge компоненті арқылы белгілі бір параметрдің мәнін пайызға сәйкестеп, лайықтап шығарады.

Kind қасиеті шығарылатын диаграмманың түрін анықтайды және оның мәні келесідей бола алады :

  • GkHorizontalBar - көлденең төртбұрыш;

  • gkVerticalBar - тік төртбұрыш;

  • gkPie - сектор;

  • gkNeedle - спидометр;

  • g kText - тек қана мәтін.

Диаграмма түрлері

BorderStyle - жиектерінің түрі bsSingle деп анықталса, онда жиегі жіңішке сызықпен салынады. Егер bsNone деп анықталса - жиегі болмайды. ForeColor - индикатордың түсін, BackColor диаграмманың индикатордан бос аймағының түсін, Progress - параметр мәнін пайызға сәйкестеп анықтайды.

MinValue және MaxValue - параметрдің ең кіші және ең үлкен мәндерін анықтайды (әдетте ол мәндер - 0% және 100% ).

Мысалы, бейнетаспаны ойнау Animate компоненті арқылы іске асырылады. Бұл компонент тек тығыздалмаған графикалық бейне бөлігін ойнауға бейімделген. Осы әрекеттің орындалуын графикалық түрде ProgressBar компоненті арқылы көрсетуге болады.

График және диаграмма

Chart компоненті әртүрлі күрделі диаграммаларды салуда қолданылады. Бұл компоненттің құрамындағы көптеген қасиеттері өздері объект ретінде анықталған және олардың ішкі қасиеттері болады.

Additional парағының Chart компоненті

Тәжiрибеде Chart компонентінің параметрлерін анықтау әрекеттері Editing Chart редакторының терезесінде анықталады. Ол терезені шақыру үшін формадағы TСhart терезесiн екі рет сырт еткізіңіз немесе тышқанның оң жақ батырмасын басқандағы Edit Chart опциясын таңдаңыз. Ашылған редактордың терезесіндегі Series параметрінде Add батырмасын басу арқылы диаграмманың немесе графиктің түрін анықтауға болады.

Берілгендердің шығар көзі Series=> Data Source парағында анықталады. Егер берілгендердің жиыны қосымшаның орындалу барысында қалыптастандырылса, онда No data деп көрсету керек.

DBChart және QRChart компоненттерінің шығар көзін Table - кесте деп анықтауға болады.

Диаграмма құрылғандағы пайдаланылатын берілгендердің мәндерін басқару үшін Add, Delete, Clear әдістері қолданылады.

Add (Const AValue :Double; Const ALabel:String; Acolor:Tcolor): LongInt функциясы Avalue параметрімен анықталған мәнді диаграммаға қосады. Диаграмма шығарылғанда, Alabel - мәндің атын, ал Aсolor - оның түсін анықтайды.

Delete (ValueIndex:LongInt) процедурасы ValueIndex нөмірімен анықталған мәнді жояды. Жалпы барлық мәндерді жою үшін Clear процедурасы қолданылады.

Delphi ортасы схемаларды, сызбаларды, түрлі иллюстрацияларды экранға шығаратын программаларды неғұрлым қарапайым жолмен құруға мүмкіндік береді.

Графикалық элементтер объекттің үстінгі жағында шығарылады (формалар немесе Image компоненті), бұған Canvas қасиеттері сәйкес келеді. Объектінің бетіне графиктік элементтерді (түзу сызық, шеңбер және т.б.) шығару үшін осы объектінің Canvas қасиетін қолдану әдісін пайдаланамыз.

Мысалы, form1.Canvas.Restangle (10, 10, 100, 100);

Бет (Холст)

Қарапайым графиктерді шығару әдісінде сурет салуға болатын абстрактты бет (холст) ретінде Canvas қасиеттері қарастырылады. Бұл бет (холст) жеке нүктелерден – пиксельдерден тұрады, олардың әрқайсысы көлденең (х) және тік (у) координаталар арқылы анықталады.