Turbo Pascal-дағы графика y=f(x) функциясының графигін салу



КІРІСПЕ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
1. TURBO PASCAL ПРОГРАММАЛАУ ТІЛІНДЕГІ ГРАФИКА ... ... ... ... ... 4
1.1 Turbo Pascal программалау тіліндегі графиктік режіммен жұмыс ... ...4
1.2 Экранды басқаратын процедуралар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..6
1.3 Turbo Pascalдағы графиктік объектілер ... ... ... ... ... ... ... ... ... ... ... ... .10
1.4 Графика айнымалыларының сызылу процедуралары ... ... ... ... ... ... 17
1.5 Облыстарды сызу процедуралары ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..18
1.6 Графиктік режімде текст шығару процедуралары ... ... ... ... ... ... ... ... 20
1.7 Графиктік режімде қателерді өңдеу ... ... ... ... ... ... ... ... ... ... ... ... ... ..22
2. y=f(x) ФУНКЦИЯСЫНЫҢ ГРАФИГІН САЛУ ... ... ... ... ... ... ... ... ... ... ..24
2.1 y=f(x) функциясының құрылымына сипаттама ... ... ... ... ... ... ... ... ...24
2.2 Программаның қолдануға нұсқау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...27
ҚОРЫТЫНДЫ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...29
ПАЙДАЛАНЫЛҒАН ДЕРЕК КӨЗДЕРІ ТІЗІМІ ... ... ... ... ... ... ... ... ... ... ... ... 30
ҚОСЫМШАЛАР

КІРІСПЕ

Қазіргі заманда көптеген жұмыс орындарының автоматтандырылуына
байланысты графикамен жұмыс жасау кең қолданыс тауып отыр. Қай сала
болмасын графикамен жұмысты қажетінше пайдаланады. Олар кей жерлерде
безендіру үшін қолданылса, кей жерлерде ақпаратты графиктік түрде көрсету
арқылы қажетті информацияны қабылдау үшін қолданылады.
Графикамен жұмыс көптеген программалау орталарына және программалау
тілдеріне сіңіп кетуіне байланысты біз өзімізге белгілі қосымшаларда,
өзімізге қажетті информацияны бейнелей аламыз.
Курстық жұмыс тақырыбы – Turbo Pascal-дағы графика. y=f(x)
функциясының графигін салу.
Курстық жұмыс өзектілігі – кез келген функцияның графигін тұрғыза
алатын және графиктің масштабы оның берілген интервалдар аралығынан тәуелді
болатын графикті тұрғыза алатын программа құру.
Курстық жұмыс мақсаты – Turbo Pascal программалау тіліндегі графиктік
режимнің процедуралары мен функцияларын толығымен қарастырып, меңгеру және
оларды пайдалана отырып, y=f(x) функциясының графигін тұрғыза алатын
программа құру.
Курстық жұмыс міндеті – Turbo Pascal программалау тіліндегі графиктік
режимінде y=f(x) функциясының графигін тұрғызу барысында мынадай міндеттер
туындады:
­ Функция графигін сызу барысында оларды зерттеу;
­ Жеті қасиеті бойынша сызылған функцияның алгоритмін тұрғызу;
­ f(x)=cosx, f(x)=sinx, y=x4, y =x3 функцияларының графиктерінің
қасиеттері бойынша зерттеп, программасын тұрғызу;
Зерттеу объектісі – Turbo Pasсal программалау ортасындағы графиктік
режим мүмкіндіктері.
Ғылыми болжамы – Turbo Pasсal программалау тілінде графиктік
обьктілерді салумен қатар көрсетілген аралықта және гафиктің түсін таңдау
арқылы функция графиктерін қолдануларға түсінікті түрде сызу.
Зерттеу әдістері – Графиктік режимді түсіндіре келе, әрбір
функциялар мен процедураларын қолданып, функция графигін тұрғызу барысында
қолданушы қызығушылығын арттыратын және түсінікті етіп программа құру.

I. TURBO PASCAL ПРОГРАММАЛАУ ТІЛІНДЕГІ ГРАФИКА

1.1. Turbo Pascal программалау тіліндегі графиктік режіммен жұмыс

Графиктермен жұмыс істеу алдында оған сәйкес келетін монитор режімін
орнату керек. Турбо Паскаль тілінде алдын ала бекітілген драйверлер бар,
олардың әрқайсысы үш түрлі режімнің бірінде жұмыс істей алады. Драйвер
типі мен оның режімі санмен немесе тұрақты түрінде беріледі.
Графикалық режімдерді анықтайтын тұрақтылар мен оларға сәйкес
адаптерлер типі 1-кестеде берілген.

Кесте-1.
Графикалық режімдер
Драйвер Режім Нүктелер саны Файл
CGA(1) CGAC0,CGAHI 320x200(640x200) CGA.BGI
EGA(2) EGAL0,EGAHI 640x200(640x350) GAVGA.BGI
VGA(9) HERCMONOHI 720x348 HERC.BGI

GRAPH модулі іске қосылысымен оның ішіндегі процедуралар мен
функцияларды пайдалана беруге болады.
Графикалық режім алқашқы рет іске қосу (инициалиазациялау) үшін
InitGraph процедурасы қолданылады, оның жазылуы:
InitGraph(Driver Var, Mode Var: integer, Gol: string);
Мұндағы DriverVar, ModeVar деп аталатын бүтін типтегі екі айнымалы
драйверді және жұмыс режімін анықтайды. Мысалы:
DriverVar:=VGA; ModeVar:=VGALO;
Алғашқы параметр тұрақты түрінде немесе нөмірмен де беріле береді (ол
драйвер атауы жанындағы жақша ішінде көрсетілген), мысалы, төмендегі
операторлар бірдей болып саналады:
DriverVar:=VGA; DriverVar:=9;
Егер дисплей типін көрсеткіміз келмесе немесе оны білмесек, стандартты
Detect тұрақтысын қолданамыз. Сонда InitGraph процедурасы көмегімен драйвер
автоматты түрде таңдап алынады да, оның тиімді режімі де өзінен-өзі
орнатылады. Процедураның Gol деп аталған үшінші параметрі Graph модулінің
маршрутын, яғни жолын көрсетеді. Егер ол модуль ағымдағы каталогта немесе
бумада болса, онда оның орнына екі апостроф қойылады.
Сонымен, осы айтқандарымызды программаның бас жағына мынадай жолдар
арқылы жаза аламыз:
Uses Crt, Graph;
Var DriverVar, ModeVar:integer;
Begin
DriverVar:=Detect;
InitGraph (DriverVar, ModeVar,’\TP\GRAPH’);
Мұндағы DriverVar-графикалық адаптердің (драйвердің) типі;
ModeVar-оның ұмыс режимі;’TPCRAPH-графикалық адаптердін орналасқан орны ,
яғни жазылған бумасы,егер ол ағымдағы каталог немесе
бума болса,онда тек белгілері ғана жазылады..Адаптерді автоматты түрде
тандап алу үшін DriverVar:=Detect; деп көрсетіледі. Кез келген программада
осындай жолдар орындалганнан кейін графикалық мүмкіндіктер пайдаланыла
бастайлы.
Графикалық режімнен шығу (программаны аяқтау) үшін параметрсіз
жазылатын CloseGraph процедурасы пайдаланылады. Бұл процедура орындалғанда
барлық графикалық режімдер алынып тасталады және бейнелер буфері
босатылады.
GetGraphMode: Integer; функциясы адаптердің яғни графикалық драйвердің
ағымдағы режімінің мәнін береді.
SetGraphMode (Mode: integer)-бұл процедура графикалық режім орнатады
да, экранды тазартады, мұндағы Mode-орнатылатын режімнің коды. Мысалы, осы
процедура арқылы графикалық режімнен мәтіндік режімге шығуға және кері
ауысуға болады.
Program reg;
Uses graph;
Var f, g:integer;
Begin
f:=detect;initgraph(f,g’’);
Writeln(‘графикалық режім’);
Writeln (‘Enter-ді басыңдар);
Readln;
RestoreCRTMode;writeln(‘мәтіндік режім’);
Readln;
SetGraphMode(GetgraphMode);уру

Writeln(‘қайта графикалық режімге көштік’);
Readln;
CloseGraph
End.

Бұл программа графикалық режімнен мәтіндік режімге және кері көшіруге
арналған.
MoveTo(X,Y:integer)-курсорды көрсетілген мәндері бойынша жаңа орнын
координаталарға жылжыту (көрсеткіштің жаңа орнын анықтау);
MoveRel(DX,DY:integer)-курсорды тұрған нүктесінен әрі қарай DX бірлігіне
көлденең (оңға), DY бірлігіне тіке (төмен) бірлікке орын ауыстыру;
RestoreCRTMode процедурасы графикалық режімнің алдындағы режімді
(көбінесе мәтіндік режім) қалпына келтіреді. Оның CloseGraph процедурасынан
өзгешелігі-қойылған графикалық режімдерді өшірмейді, буферді тазаламайды.
GetX:integer функциясы X координатасының ағымдағы мәнін береді;
GetY:integer функциясы Y координатасының ағымдағы мәнін береді

1.2. Экранды басқаратын процедуралар мен функциялар

Турбо Паскальдің мәтіндері енгізіп-шығаруды жетілдіретін бірнеше
стандартты функциялары мен процедуралары бар, олар кітапханалық CRT
(Cathode Ray Tube Display-электрондық сәулелік түтікшедегі дисплей)
модулінде жинақталған.
Мәтіндік режімде адаптерлер экранға 40 немесе 80 жолдан тұратын 25, 43
тіпті 50 жолдық мәтін шығара алады. Мәтіндік режімде процедураларды
пайдалану үшін алдымен CRT модулін іске қосу керек. Ол үшін программа
тақырыбынан кейін арнайы жол жазылуы тиіс:

PROGRAMпрогарамма аты;
USES CRT;

CRT модулін пайдалана отырып, экранға шығарылатын символдардың түсін,
мөлшерін, экранның түсін де өзгертуге болады.
Сонымен бірге экранда терезе жасауға, оны өшіруге, курсорды автоматты
түрде жаңа орынға көшіруге, оның жаңа орнын анықтауға, жолдарды өшіруге
және жалғастыруға т.б. көптеген әрекеттер істеу мүмкіндігі бар. Оларды
орындайтын программалар процедура түрінде берілген. Біз олардың
негізгілерін қарастырайық. Мәтіндік режімді орнату мынадай стандартты
процедура арқылы жүргізіледі:

Text Mode (Mode: Word);

мұндағы Mode –мәтіндік режім коды, оның мүмкін мәндері 2-кестеде
көрсетілген. Мән (BW40, CO40,...) немесе режім реттілігі (0, 1, ...) түрінде
беріледі.
Кесте-2
Мәтіндік режім кодтары
Монитор Экран Түстер Адаптер Сегмент Режім Режім
саны тұрақтысы нөмірі
Ақ-қара 40x25 168 CGA,EGA B800 BW40 0
Түрлі түсті 40x25 168 CGA,EGA B800 CO40 1
Ақ-қара 80x25 168 CGA,EGA B800 BW40 2
Түрлі түсті 80x25 168 CGA,EGA B800 CO80 3
Ақ қара 80x25 3 MA,EGA B800 Mono 7

CRT кітпханасында Mode мәні үшін төмендегідей тұрақтылардың біреуі
пайдаланылады.

BW40=0; ақ-қара түс; 40x25
CO40=1; түрлі түсті; 40x25
BW80=2; ақ-қара, 80x25
CO80=3; түрлі түсті 80x25

Мысылы:
TextMode(CO80);
TextMode(2);

CRT модулін пайдалана отырып, экранға шығарылатын символдардың түсін,
мөлшерін, экранның да түсін өзгертуге болады.
Мәтіндік режімде символдар 16 түстің біріне (нөмірлері 0-15), экран
реңі (фон) 8 түстің біріне (0-7) бояла алады. Монохромды (ақ-қара түсті )
дисплей үшін екі ғана түс пайдаланылғанымен, оларда символдың ақшылдығын
(айқын ақ символ немесе сұр реңді) өзгерту, қара экранға ақ символ немесе
ақ экранға қара шығару, кейбір символдарды жыпылықтатып қою мүмкіндіктері
бар.
Экранға шығарылатын символдың түсін

TextColor(Color:Byte);

процедурасы арқылы өзгертеді, мұндағы Color-түс нөмірі.
Экранның түсін өзгерту үшін

TextBackground(Color:Byte);

процедурасы пайдаланылады. Color айнымалысының мәні ретінде түс аты
немесе нөмірі алынады (3-кесте).

Кесте-3.Турбо Паскаль тіліндегі түс атаулары және олардың нөмірлері
Түс аты Нөмірі Түс аты Нөмірі
Black(қара) 0 DarkGray(сұр) 8
Blue(көк) 1 LightBlue(көкшіл) 9
Green(жасыл) 2 LightGreen(ақшыл жасыл) 10
Cyan(көгілдір) 3 LightCyan( ақшыл көк) 11
Red(қызыл) 4 LightRed(қызғылт) 12
Magenta(күлгін) 5 LightMagenta(ақшыл күлгін) 13
Brown(қоңыр) 6 Yellow(сары) 14
Lightgray(боз) 7 Write(ақ) 15
Blink(жыпылықтау) 16

Мысалы:
TextColor(Yellow);
TextBackGround(Red);
Write(`Қызыл экранға сары символдар шығарылады`);
TextColor(Yellow+Blink);
Write(`Жыпылықтайтын сары символдар шығарылады`);
TextColor(6);
Write(`Экранға қоңыр символдар шығарылады`);
Экран түсі мен символ түсі бірдей болса, мәтін көрінбей кетеді.
Төмендегі программа әр түрлі түстерді пайдалану мүмкіндіктерін көрсетеді.
Program sbet;
Uses Crt;
Const col:array[1..15] of string[12] =(`қара көк`,`қою-
жасыл`,
`көгілдір`,`қызыл`,`күлгін`,`қоңыр` ,`боз`,`сұр`,`көк`,`көкшіл`,`көгілд ір`,
`қызғылт`,`ашық қызыл`,`сары`,`ақ`);
Var
k:byte; i:integer;
begin
textcolor(k);
writeln(k,`-түс c ,-,col[k]);
end;
textcolor(Light Gray);
writeln;
end.
Бұл программа орындалғанда экранға түстің нөмірі және оған сәйкес түс
аттары өз түстерімен боялып шығады.
Енді экранды тазалайтын бірнеше процедураларды қарастырайық.
ClsScr-экранды немесе терезені тазалап, курсорды экранның сол жақ
жоғарғы бұрышына (координаталары 1,1) көшіреді, тек мәтіндік режімде жұмыс
атқарады;
ClsEol-курсордан жол соңына дейінгі символдарды өшіреді;
DelLine-курсор орналасқан жолдағы символдар түгел өшіріледі де, төмендегі
жолдар бір қатар жоғарғы көтеріледі;
InsLine-курсор орналасқан позицияға жаңа жол енгізіледі де, төменгі
символдар бір қатарға төмен түседі.
Турбо Паскаль тілінде курсорды басқаратын және оны кез-келген экран
нүктесіне орналастыратын процедуралар да қарастырылған.
GotoXY(X, Y:byte);-курсорды координаталары X, Y болып келетін экран
нүктесіне көшіреді. X сол жақ шеттен оң жаққа қарай, ал Y жоғарыдан төмен
қарай берілген қашықтықтар бірлігін көрсетеді. Егер экран толық ашылған
терезе деп қарастырылса, онда 25 жолдан және әр жол 80 символдан тұратын
дисплей адаптерінің мәтіндік режімінде X=1..80,ал Y=1..25 мәндеріне
сәйкес келеді. Экранның сол жақ жоғарғы бұрышы координаталары (1,1), оң
жақ төменгі бұрыш үшін -(80,25) болып келеді.
Мысалы,
ClsScr; {Экранды тазарту}
GoToXY(33,4); {Курсорды 4-жол ортасына көшіру}
Write(``);
Сонымен бірге экранда терезе жасау мүмкіндігі бар. Оны орындайтын
программалар да процедура түрінде берілген.
Window (X1, Y1, X2, Y2:Byte);-экранда терезе құру процедурасы, X1, Y1,
X2, Y2-терезе төртбұрышының сол жақ жоғарғы және оң жақ төменгі
төбелерінің координаталары. Ең кіші терезе бір символды ғана қоршаса, ең
үлкен терезе (1, 1, 80, 25) мөлшерінде бүкіл экранды алып тұрады, мысалы:
Window(1, 1, 80, 25); {Толық экранды терезе}
Window(19, 7, 59, 16); {Экран ортасындағы терезе}
Терезені пайдалану жолын төмендегі программадан көруге болады.

Tereze программасы:
Program tereze;
Uses crt;
Var k:integer;
Begin
TextBackground(5);
Window(4, 3, 36, 18): Textcolor(14);
For k:=1 to 100 do writeln;
GotoXY(8,8); writeln(`ENTER ПЕРНЕСІН БАСЫҢДАР`);
Readln;
Textbackground(12); textcolor(15);
Window(39, 3, 71, 18);
For k:=1 to 100 do writeln;
gotoXY(3,8); {Курсорды жаңа орынға көшіру}
writeln(`ЖАҚСЫ, ENTER ПЕРНЕСІН БАСЫҢДАР`);
readln;
textMode(Co80) {Барлық графикалық нұсқауларды өшіру*}
end.

Бұл программа орындалғанда экранның сол жақ бөлігінде күлгін түсте
ішінде сары түспен жазылған `ENTER ПЕРНЕСІН БАСЫҢДАР ` сөзі бар терезе, ал
оң жағында қызыл түсте ішінде ақ түспен жазылған `ЖАҚСЫ, ENTER ПЕРНЕСІН
БАСЫҢДАР` сөзі бар терезе пайда болады.

3. Турбо Паскальдағы графикалық обьектілер

Графика IBMPC – бұл пиксельді графика; біз енді осы жайында әңгіме
қозғаймыз. Вектор термині екі машиналық сөз деп түсіндіріледі, онда
бағдарламаның адресі жазылған. Ол өңдеудің аяқталуына әкеледі; бұл жерде
вектор тік сызық деген мағына береді. Бірінші де, екінші де интерпретация
математикалық параллельдер терминін береді, оларды біз алда
кездестірмейміз. Бұл жердегі маңызды нәрсе терминдерді араластырмау керек.
Экран дисплейіне кескінді құру кезінде векторлық графика
құрылғылары тек тік сызықты ғана қолданады.
Бұл жағдайда машиналық бағдарлама тік сызықтың екі шеткі нүктелеріне
негізделеді, ал дисплейдің өзі солардың аралығына тік сызық жүргізеді. Егер
қарапайым экран дисплейін алатын болсақ, мейлі ол телевизор немесе
компьютердікі болсын, онда растровты сканерлеу кезіндегі электрондық
сәуле стандартты шаблонда кескін жылжиды да, барлық экранды толтырады. Ал
векторлық графика принципімен жұмыс жасайтын дисплейде электрондық сәуленің
жылжуын бұйрық негізінде жүзеге асырылады.
Векторлық сканерлеу жүйесіндегі электрондық бұлттың жылжуын берілген
траектория жағдайында жүре алады, тек бір рет және соңына дейін қондырылған
шаблонмен ғана емес.
Векторлық графиканың көптеген артықшылықтары бар – ол өте жоғары
дәлдікте, салыстырмалы жоғары дәрежеде жылдам әрекетті. Бұлардың бәрі
инженерлік графиктер аясында, оны ең тиімді етеді, әсіресе қиын және дәл
графикалық дисплейлерде құру кезінде. Дегенмен, векторлы-графикалық жүйелер
тік сызықтарды сызу үшін ғана қолданылады.
Қазіргі уақытта шығарылатын компьютерлер IBM фирмасында фирмасында
жасалынған адаптерлермен немесе соған ұқсастандырылған түрлерімен
жабдықталған. Олардың барлығы дерлік тек 13 тарауда көрсетілген MDA
монохромды адаптерінен басқасы графикалық режимде жұмыс жасайды. Бұл
режимде экран дисплейі біріне-бірі өте жақын орналасқан нүктелер –
пиксельдердің біркелкілігіне байланысты, олардың жарықтандыруымен басқаруға
болады.
Нақты адаптердің графикалық мүмкіндіктеріне байланысты анықталады,
дәлірек айтқанда пиксельдердің мөлшерімен, сондай-ақ түстер санымен
анықталады. Сонымен қатар көптеген адаптерлер бір уақытта бірнеше
графикалық беттермен жұмыс жасай алады. Графикалық бет дегеніміз – экранның
картасын жасап шығаруға, яғни әр пиксельдің түсі туралы ақпарат сақтайтын
оперативті жадының ауданы. Әрі қарай әрбір адаптерлер туралы жеке
мағлұматтар береміз.
CGA адартері (Color Graphics Adapter – түлі-түсті графикалық адаптер)
5 графикалық режимі бар. Оның төртеуі төмен мүмкіндікті экранға тән (320
пиксель көденеңінен және 200 тігінен, яғни 320*200) және онда түстердің
жиынтығы - палитрасы бар.
Әрбір палитра үш түстен тұрады. Әрбір палитра үш түстен тұрады, ал
егер жарықтанбайтын қара түсті санасақ – төрт түстен тұрады: палитра 0
(ашық жасыл, қызғылт, сары), палитра 1 (ашық көгілдір, таңқурай түстес,
ақ), палитра 2 (жасыл, қызыл, сұры) және палитра 3 (көгілдір, фиолет, ашық
сұр).
Бесінші режим 640*200 жоғарғы мүмкіндікке сәйкес, бірақ әрбір пиксель
бұл жағдайда ол жарықтанып немесе қандай-да бір алдын-ала дайындалған
немесе барлығына бірдей пиксельдермен, бұл режимнің палитрасы 2 түсті
түзеді. CGA адаптері графикалық режимде тек қана бір бетті пайдаланады. ЕGA
адаптері CGA адаптерінің графикалық режимін толығымен орындай алады.
Сонымен қатар онда мынадай режимдер бар: төменгі рұқсаттылық (640*220, 16
түс, 4 бет) және жоғарғы рұқсаттылық (640*350, 16 түс, бір бет). Кейбір
өзгерістерде монохромды режим қолданылады. МCGA адаптері CGA адаптерімен
сәйкес келеді және онда тағы бір 640*480, 2 түсті, бір бет – режим бар.
ПК PS2 сериялары да осындай адаптерлермен жабдықталған. Бұл серияның
үлкен модельдері VGA – графикалық бейнемассивті заманауи адаптерлермен
жабдықталған. VGA адаптері CGA мен ЕGA адаптер режимдері тәрізді жоғары
рұқсаттылықты (640*480, 16 түс, 1 бет) толықтырып тұрады. Соңғы уақытта
800*600 және одан да артық, 256 және одан да көп түстерді қолданатын супер
– VGA деп аталатын адаптерлер шықты.
Қазірде олар кең ауқымда таратылып қолданылуда, бірақ оларға Graph
кітапханасында драйверлер жоқ. SVGA VGA-мен ұқсас болғандықтан заманауи
графикалық адаптерлерді басқару үшін EGAVGA.BGI драйверін қолданады және
салыстырмалы қарапайым мүмкіндіктермен шектеледі. Hercules, фирмасының
атақты адаптерлерінің бірнеше ерекшеліктері бар. HGS адаптерлерінің
720*348 мүмкіндігі бар, оның пиксельдері бір түсте ғана (ашық сұр)
жарқырайды немесе тіпті жарқырамайды, яғни ол монохромды адаптер. Адаптер
HGС+ басқаларымен салыстырғанда жетік, ал НІСС адаптері 16-түсті HGС+
сияқты. Енді мынадай нұсқаны ойлап көріңіз:
Сізге PASCAL тілінде компьютердің мүмкіндіктерін пайдалана отырып
бағдарлама жазу керек. Егер Сіз көпке танымал белгілі адаптері бар
компьютерді пайдалансаңыз – жақсы.
Оның тек бір ғана жолы бар. Егер бізге компьютердің типі белгілі
болса, немесе бағдарлама кез-келген адаптермен жұмыс жасаса, онда InitGraph-
қа драйверді автоматты түрде анықтау үшін сұраныс жібересіз. Ол келесі
кезекте жүзеге асады: ауыспалы Graph Driver-ге detect мәнін береміз. Бұл
кезде компьютер қажетті драйверді анықтап, ең қолайлы режимді таңдап
береді.
Монитор экранындағы кез келген мәлімет графикалық режимде жұмыс
жасағанда жарықтанатын нүктелер – пиксельдердің болуына байланысты, олар
түстер мен координаталармен экран бетінің қай бұрышында орналасқаны жөнінде
мәлімет береді. Ағымдағы жұмыс барысында экранның максималды координаттарын
білу үшін Get MaxX GetMaxY стандартты функцияларын қолданамыз. Ол үшін аз
ғана бағдарламаны енгізіңіз: мәтіндік режимнен айырмашылығы онда фонның
түсі тек күңгірт түсте емес, графикалық режимде ол кез-келген түсте болуы
мүмкін, жаңа фон енгізу графикалық экранның түсін әп-сәтте өзгертеді. Бұл
екі участокта әр түрлі түс болса, онда кескінді салуға болмайтындығын
білдіреді.
Активті пиксельдердің түсін жоғарғы мүмкіндіктегі адаптерге фон
түсін енгізгенде өзгертуге болады.
Ескерте кететін бір жайт, фон түсін 0 (black) тамаша түсінен басқа
түске өзгертуге болады, оны тек сіздер қара түс ретінде ғана өзгерте
алмайсыз, ол фонның түсі болып қала береді, себебі graph модулінің
процедуралары 0 нөмірлі түсті фонның түсі ретінде қабылдайды. Бұл фонға
енді қара түсті қайта алмайтыныңызды айтады. Егер сіздің компьютеріңізде
түрлі түсті экран болса, онда келесі бағдарлама setbkcolor процедурасының
бағдарлама бір-біріне енгізілген 10 тікбұрыштарды шығарады, содан соңфон
түсі өзгереді. Бағдарламадан шығу үшін кез келген батырманы бассаңыз
болғаны.
Кез келген фигураларды салмастан бұрын экранның түсін және салынатын
фигура жиегін анықтайтын процедуралармен танысайық.
1.     SetBkColor(Color)     -  экранның фонының түсін білдіреді,  color-
түсі.
2.     SetColor(Color)         -  фигура жиегінің түсін білдіреді,  color-
түсі.
 Енді фигураларды салу процедураларына тоқталайық.
3.  PutPіxel(X,Y,Color)    -  боялған нүкте салу, мұндағы (X,Y) нүктенің
координатасы, Color  -  түсі.
 4.  Lіne(X1,Y1,X2,Y2)       -  түзу салу процедурасы, мұндағы Х1,Y1
түзудің бастапқы нүктесінің координатасы, ал X2,Y2  -  соңғы нүктесінің
координатасы.
1.     Rectangle(X1,Y1,X2,Y2) -  тіктөртбұрышты салу процедурасы,
мұндағы, Х1,Y1 тіктөртбұрыштың сол жақ жоғарғы бұрыштың нүктелерінің
координаталары, ал X2,Y2  -  оң жақ төменгі бұрыштың нүктелерінің
координаталары.
5. Cіrcle(X,Y,R)  -  шеңберді сызу процедурасы, мұндағы (X,Y)-шеңбер
центрінің нүктесі, R-радиусы.
        1-мысал. Аспан көк түсті экранға жасыл үшбұрыш,  көк тіктөртбұрыш
және қоңыр шеңбер салу программасын жазамыз. Нәтижесі 1-суретте
көрсетілгендей болу керек.
 

  
 

1-сурет. 1-мысалдың нәтижесі
Программасы:
Program  Сурет-1;
Uses Graph,  Crt;
Var GraphDrіver,
      Graphmode: іnteger;
Begіn
       Clrscr;
       GraphDrіver := 0;
       ІnіtGraph (GraphDrіver, GraphMode, ‘ ‘);
    Іf  GraphResult 0 then
    Begіn
         Wrіteln;
         Wrіteln;
         Halt;      End;
   SetBkColor(3);                     {Экранды аспан көк түспен бояу}
   SetColor(4);                           {Жиегі қызыл болатын
   Lіne(40, 180, 240, 100);           түзу салу}
   SetColor(1);                           {Жиегі көк болатын
   Rectangle(80, 260, 320, 360);     тіктөртбұрыш салу}
   SetColor(2);                           {Жиегі жасыл болатын
   Lіne(380, 100, 380, 220);
   Lіne(380, 100, 600, 220);          үшбұрыш салу}
   Lіne(380, 220, 600, 220);
   SetColor(6);                           {Жиегі қоңыр болатын
   Cіrcle(480, 280, 40);                шеңбер салу}
   Readln; CloseGraph;
End.

 Осы процедуралардан кейін тұйық облыстардың ішін қалай бояуға болады екен
деген сұрақ тууы мүмкін, мысалы тік төртбұрышты, шеңберді, т.с.с. Ол
төмендегі екі процедурамен жүзеге асырылады:
7. SetFіllStyle(Pattern, Color)  -  мұндағы Pattern-бояудың типтері, Color-
түсі.
8.FloodFіll(X,Y, Color)         -  мұндағы (X,Y)-тұйық облыстың ішіндегі
кез келген нүктенің координатасы, Color-түсі.
Ескерту: Тұйық облыстың іші дұрыс боялуы үшін ең алдымен оның кез
келген ішкі нүктесі дұрыс табылуы және SetColor мен FloodFіll
процедураларындағы түстің мәндері бірдей алынуы керек.

2-мысал. Көкшіл түсті экранға боялған тік бұрышты трапецияның ішіне боялған
шеңбер мен үшбұрыш саламыз (2-суретте көрсетілген).

  

2-сурет. Мысалдың нәтижесінде экранда пайда болатын бейне

2-мысалдың программасын құрайық.
Program  Сурет-2;
Uses Graph,  Crt;
Var GraphDrіver, Graphmode: іnteger;
Begіn
       Clrscr;
       GraphDrіver := 0;
       ІnіtGraph (GraphDrіver, GraphMode, ‘ ‘);
    Іf  GraphResult 0 then
    Begіn   Wrіteln; Wrіteln; Halt;
         End;
    SetBkColor(9); setcolor(4);
    Lіne(60, 60, 480, 30);   Lіne(480, 30, 480, 400);
    Lіne(480, 400, 60, 400); Lіne(60, 400, 60, 60)    
    SetFіllStyle(5, 14);    FloodFіll(460, 60, 4);
    SetColor(5);
    Cіrcle(200, 230, 85);    SetFіllSryle(1, 5);    
FloodFіll(210, 230, 5);
    SetColor(4);
    Lіne(200, 160, 280,230); Lіne(280, 230, 165, 280);  
Lіne(165, 280, 200, 160);
    SetFіllStyle(2, 1);     FloodFіll(200, 170, 2);
Readln;
closegrph;
end.     

Ескерту: Доға, сектор, эллипс, эллипстік доға және боялған эллипс
салу поцедураларымен танысайық. Айтылатын бұрыштар сағат тіліне қарсы
сызылады.
9. Arc(X,Y,M,L,R)-доға салу. Мұндағы (X,Y)-доға шеңберінің центрі, M-доғаға
тірелетін бастапқы, ал L-соңғы осьтік бұрыштары, R-радиусы.
10. PіeSlіce(X,Y,M,L,R) �сектор салу. Мұндағы (X,Y)- сектор шеңберінің
центрі, M-секторға тірелетін бастапқы, ал L-соңғы осьтік бұрыштары, R-
радиусы.
11. Ellіpse(X,Y,M,L,RadX,RadY) � эллипстік доға салу. Мұндағы (X,Y)-центрі,
M-бастапқы, ал L � соңғы осьтік бұрыштары, RadX-көлденең, RadY-тік
осьтері.                              
12. FіllEllіpse(X,Y,RadX,RadY) � боялған эллипс салу. Мұндағы (X,Y)-центрі,
RadX және RadY-сәйкесінше көлденең және тік осьтері.
Ал енді шеңбер, даға, эллипс суреттерін салу процедураларын қолданып
мысалдар қарастырайық.

3-мысал.  Cаңырауқұлақ және ай бейнесін экран бетіне орналастыру

Программасы:
Program  Сурет-3;
Uses Graph,  Crt;
Var GraphDrіver,
Graphmode: іnteger;
Begіn
Clrscr;
GraphDrіver := 0;
ІnіtGraph (GraphDrіver, GraphMode, ‘ ‘);
Іf  GraphResult 0 then
Begіn
Wrіteln; Wrіteln;  Halt;
End;
    SetBkColor(4);
    Setcolor(1);
Pіeslіce(350, 150,0,180,150); Setfіllstyle(1,1);
Floodfіll(350,150,1);
SETcolor(5);Rectangle(305,150,375,3 50); Setfіllstyle(1,5);
Floodfіll(308,160,5);
SETcolor(14);Arc(6,150,300,60,147); arc(50,150,280,79,130);
Setfіllstyle(1,14); Floodfіll(167,150,14);
Readln;
closegraph;
End.

4-мысал. Адамның бас бейнесін салатын программа құрыңыз.

Программасы: 
Uses Graph,  Crt;
 Var GraphDrіver,                                                           

       Graphmode: іnteger;
Begіn    Clrscr;
GraphDrіver := 0;
іnіtGraph (GraphDrіver, GraphMode, ‘ ‘);
Іf  GraphResult 0 then
begіn  
Wrіteln; Wrіteln;  Halt;
End;
Setbkcolor(2);
Setcolor(1);
Cіrlcle(350,200,150); setfіllstyle(1,14); floodfіll(350,200,1);
Setcolor(5); arc(350,250,195,350,65);setcolor((1 );
arc(195,195,70,294,20);
setfіllstyle(2,1); floodfіll(180,195,1);
arc(500,195,266,97,20);setfіllstyle (2,1); floodfіll(505,195,1);
Setcolor(4); cіrcle(300,160,10); setfіllstyle(1,4);
floodfіll(300,160,4); cіrcle(390,160,10);
setfіllstyle(1,4); floodfіll(390,160,4);
Readln;
closegraph;
End.

1.4. Графика айнымалыларының сызылу процедуралары.

Кез келген сурет, сызба, схема нүктелерден, бұрыштардан, доғалардан
және т.б. тұрады. Экранда сурет пайда болуы үшін программа ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Турбо паскаль программалау тілі жөнінде негізгі ұғымдар
Паскаль жүйесіндегі графика
Турбо паскаль жүйесіндегі графика. Жұмыс істеп тұрған бағдаршамның бейнесін шығару
Программалау тілдері туралы ұғым
Паскаль тілінің операторлары
МОДЕЛДЕУ ЖӘНЕ КОМПЬЮТЕР ГРАФИКАСЫ
Delphi ортасы туралы
Турбо Паскальда графикалық процесстерді қолдану
Turbo Pascal программалау тілінің қосымша мүмкіндіктері
Программалау тілінде программа құру
Пәндер