Курстық жұмыс: Бағдарламалау | Турбо-Паскальдағы графикамен жұмыс

0

Мазмұны

Кіріспе…………………………………………………………………….3
І Graph стандарттық модулі………………………………………………4
1.1 Процедуралар мен функциялар……………………………………5
1.2 Координаттар, терезелер, беттер…………………………………..7
1.3 Көпбұрыштар………………………………………………………..8
1.4 Доғалар, шеңберлер, эллипстар……………………………………9
1.5 Тексті шығару………………………………………………………9
ІІ Графикалық координаталар жүйесі…………………………………10
2.1Графикалық экран мен элементтердің параметрлерін қою процедуралары………………………………………………………..11
2.2 Графикалық элементтерді бейнелеу процедуралары……………12
2.3 Графикалық экран мен элементтердің параметрлерін қою функциялары………………………………………………………….12
ІІІ Есептің берілгені…………………………………………………….14
3.1 Программаның баяндалуы………………………..………………15
3.2 Енгізілген мәліметтер және шыққан графика……………………17
Қортынды………………………………………………………………..18
Қолданған әдебиеттер…………………………………………………..19

Кіріспе
Дисплей экраны нүктелер жиыны болып табылатын төртбұрышты аймақ болып табылады. Ол графикалық және мәтіндік режімдерде жұмыс атқара алады. Графикалық режімде экранның әрбір нүктесін түрлі түске бояп, сол түстер арқылы сызық, мәтін және әр түрлі бейнелер кескіндеуге болады.
Графикалық программалау процесі тиімділігін арттыру мақсатында Borland International фирмасы GRAPH арнайы программалар кітапханасын жасап шығарған болатын, онда қазіргі кездегі мониторлардың барлық типтерімен жұмыс істейтін, экранға түрлі мөлшердегі қаріптер шығара алатын драйверлер жиыны бар.
Экранға мәлімет шығаруды аппараттық жағынан сүйемелдеу екі модуль – бейнеадаптер және бейнемонитор арқылы қамтамасыз етіледі. Бейнемонитор- немесе дисплей- мәтін және графикалық бейнелер шығарылатын құрылғы, ол электрондық сәулелік түтікшеден немесе сұйық кристалды тақтадан тұрады. Дисплей теледидар сияқты жұмыс істеп, экрандағы бейне секунд сайын 25 рет жаңаланып отырады. Адамның көзі бейнелердің мұндай жиілікпен ауысуын байқай алмайды да, мониторда сол бейне қозғалмай тұрғандай болып көрінеді. Экрандағы бейнелер кішкене нүктелерден (пиксельдерден) тұратын қатарларға біріктірілген. Сондықтан экранның басқарылатын ең кіші элементі пиксель (pixel) болып табылады. Экрандағы кез келген бейне осы пиксельдер арқылы салынады. Графикалық режімде экран тіктөртбұрышты пиксельдер жиынынан құралады да, мұнда оның кез келген пикселінің түсін әр түрлі етуге мүмкіндік бар.
Graph модулінің жалпы сипаттамасы
Graph модулі ІВМ – типтес дербес компьютерлердің графикалық адаптерлерімен жұмыс істеуіне есептелінген, графикалық процедуралар мен функциялардың, тұрақтылардың, айнымалылар мен типтердің қуатты кітапханасы болып табылады. TurboPascal-7.0 ортасын қолданатын Паскаль тілінде программалауда Graph модулінің 132 тұрақтысы, 7 қосымша типі, 2 айнымалысы, 57 процедурасы және 22 функциясы пайдаланылады.Турбо Паскальда графикалық драйверлер деп аталатын арнайы программалар (BGI-файлдар) видеоадаптерлерінің қалыпты жұмысын басқарады:
драйверлер видеоадаптерлер
CGA.BGI CGA, MCGA
EGAVGA.BGI EGA, VGA
HERC.BGI Hercules (монохромды)
ATT.BGI AT&T 6300 (400 жол)
PC3270.BGI 3270PC
IBM8514.BGI IBM-8514
Көптеген видеоадаптерлер монитордың көрсету мүмкіндіктерін өзгерте алатын бірнеше графикалық режимде жұмыс жасай алады. Мәтіндік режимде экранда 40(80) х 25 символ бейнелеуге болатын болса, графикалық режимде онда бейнеленетін ең кіші объект-графикалық нүкте- пиксел деп аталынады. Мысалы: көп қолданылатын VGA адаптерінің қалыпты режимінде экранда 640 х 480 пиксел көрінеді және олардың 16 түсін айыруға болады.
• Uses Graph операторын программа басына орналастырғанда ғана Graph модулінің қызметін толық пайдалануға мүмкіндік бар.
• Init Graph(Gd, Gm, `c:TP7`) процедурасы дербес компьютерге қойылған видеодаптерді автоматты түрде тауып, сәйкес графикалық драйверді іске қосады және оны графикалық режимге көшіреді.
Мұнда `c:TP7` — драйвер файлына апаратын жол. Графикалық драйверлерді анықтау (Gd) және олардың жұмыс режидерін қою (Gm) тұрақтылары (тәжірибеде жиі пайдаланылатын режимдер) төмендегі кестеде берілген:
Gd Gm
Detect =0 EGALo =0 {640×200; 16түс; 4 бет}
CGA =1 EGAHi =1 {640×350; 16түс; 2 бет}
MCGA =2 EGA64Lo =0 {640×200; 16түс; 1 бет}
EGA =3 EGA64Hi =1 {640×350; 4түс; 1 бет}
EGA64 =4 EGAMonoHi=3 {640×350;64K: 1 бет; 256K: 2 бет }
EGAMono =5 VGALo =0 {640×200; 16түс; 4 бет}
IBM8514 =6 VGAMed =1 {640×350; 16түс; 2 бет}
HereMono =7 VGAHi =2 {640×480; 16түс; 1 бет}
ATT400 =8 PC3270Hi =0 {720×350; 1бет}
VGA =9 IBM8514Lo =0 {640×480; 256 түс }
PC3270 =10 IBM8514Hi =1 {1024×768; 256 түс}
• GraphResult функциясының нолден өзге мәні (қателік коды) режимге көшу қателігін көрсетеді.
• CloseGraph процедурасы графикалық драйверді жадтан шығарып, видеодаптердің мәтіндік режимін қалпына келтіреді.
Graph стандарттық модулі
Компьтердің қосылуы кезінде және Turbo Pascal ортасында программаны жіберу кезіндегі экранның стандартты күйітекстік режимде жұмыс істеуін сай келеді. Сондығтан, компьютердің графиктік мүмкіншіліктерін пайдалану үшін дисплей адаптерінің жұмысын графиктік режимге инициализациялау керек. Программа жұмысының жұмысының аяғында компьютер текстік режимге қайта көшеді.
Графиктік процедуралардың әрбір нақты адаптермен жұмыс істеуі – керекті драйверлерді қосу арқылы жүзеге асады. Графиктік драйвер – дисплей адаптерінің жұмысын графиктік режимде басқарады. Borland фирмасының барлық адаптер түріне арналған графиктік драйверлері бар. Бұл драйверлер BGI каталогында орналасқан. Әрбір адаптердің мүмкіншіліктері – нүктелер санымен және түстер санымен сипатталады.
Графикалық режимде жұмыс істеуге арналған барлық процедуралар мен функциялар Graph модулінде орналасқан. Сондықтан программаның басы Uses Graph болуы керек. Графиктік режимге көшу үшін Init Graph процедурасы орындалуы қажет.
Егер программаның бірінші жолы Uses Graph деп жазылса, онда экранда әртүсті нүктелерді, түзулерді, кесінділерді, шеңберлерді және тіктөртбұрыштарды салатын Graph модулі Паскальға процедуралар мен басқа құралдар Graph қолдануға мүмкіндік береді. Осы бөлімге мысал ретінде қолданған программалар текстері [7]-ден алынды.
Графикалық режимге ауысу және текстік режимге қайту.
Дербес компьютерді қосқаннан кейін, Турбо Паскаль ортасынан іске қосылған программа экранның текстік режимінде жұмыс істейді. Сондықтан графикалық жабдықтарды пайдаланатын әрбір программа дисплей адаптерінің жұмысын графикалық режимге ауыстыру қажет.
Жұмыс аяқталғаннан кейін компьютер текстік режимге қайта оралады.
Дисплей адаптерлерінің графикалық режимде жұмыс істеуі.
Белгілі бір адаптер арқылы графикалық процедураларды баптау керекті графикалық драйверді қосу арқылы орындалады.
Драйвер – компьютердің техникалық құрылғыларын басқаруға мүмкіндік беретін арнаулы программа.
Графикалық драйверлер графикалық режимде дисплей адаптерін басқарады. Олар дискінің жеке BGI қосалқы каталогінде BGI кеңейтілуімен (Borland Graphics Interface – Borland фирмасының графикалық интерфейсі файл түрінде орналасқан. Олардың графикалық режимде жұмыс істеуге мүмкіндігі бар. Бұл режимде экран дисплейі тығыз орналасқан нүктелердің – пикселдердің жиынтығы ретінде қарастырылады, онымен қатар оларды программа көмегімен басқаруға болады.
Қазіргі кезде көбінесе 800х600, оданда үлкен шешу қабілеті бар, 256 және оданда үлкен түстер реңкі бар супер – VGA адаптерлері (SVGA) қолданылады. Бірақта Graph кітапханасында олар үшін драйверлер жоқ. Сондықтан мүмкіндіктері аса көп емес egavga.bgi драйверін қолданады.
Процедуралар мен функциялар
InitGraph процедурасы. Адаптер жұмысын графикалық режимге аударады. Процедура тақырыбы:
Procedure InitGraph (var Driver, Mode: integer; Path: string);
Мұнда Driver – integer типті айнымалы, графикалық драйвердің типін анықтайды;
Mode – сол типті айнымалы, графикалық адаптердің жұмыс жасау режимін береді;
Path – драйвер файлының аты және оны іздеу маршруты бар string типті өрнек.
Көп адаптерлер әр түрлі режимдерде жұмыс істей алады. Адаптерге керекті жұмыс режимін көрсету үшін, Mode айнымалысын қолданады. Мысалы:
Const
{Адаптер VGA:}
VGAHi=2 {640х480}
Егер компьютер адаптерінің типі белгісіз немесе программаның жұмысы кез келген адаптермен істелетін болса, автоматтық түрде драйвер типін анықтау процедурасы шақырылады:
Driver:= Detect; {Немесе Driver:= 0}
InitGraph (Driver, Mode, D:Lang Tpascal.71BGI);
Сонда, бірнеше режимде жұмыс жасай алатын адаптерлерге максимал санмен кодталған жоғарғы режим таңдалады.
CloseGraph процедурасы. Адаптер графикалық режимдегі жұмысын аяқтап, текстік режимдегі жұмысына көшеді.
Процедура тақырыбы:
Procedure CloseGraph;
Келесі программа графикалық режимнен текстік режимге көшуді және қайтуды бейнелейді:
Program pr1 (output);
Uses Graph;
Var Driver, Mode, Error: Integer;
Begin
{Графикалық режимді қою }
Driver:= Detect;
InitGraph (Driver, Mode, D:Lang Tpascal.71BGI);
Error:= Graph Result; {Нәтижені еске сақтау }
if Error grOK then {Қатені тексереміз}
Writeln (Graph Error Msg (Error)) {Қате бар}
Else
{Қателер жоқ}
begin
Writeln (Бұл графикалық режим);
Writeln ( Enter-дішертіңіз…:20);
Readln;
{Текстік режимге көшеміз}
Restore CRT Mode;
Writeln (Бұл текстік…);
Readln;
{Графикалық режимге қайтамыз}
Set Graph Mode (Cet Graph Mode );
Writeln (Тағыда графикалық режим…);
Readln;
Close Graph
End;
End.
Компьютер мен монитор текстік және графикалық екі режимде жұмыс істей алады. Бір режимнен екінші режимге көшуі программа арқылы орындалады.
Қарапайым фигураларды салу
Монитордаң графикалық режимі экранды көлденеңнен 640 пиксел мен тігінен 480 пикселге бөлген болсын делік. Режим басқадай болса, оны оңай ауыстыруға болады.
Координаттар, терезелер, беттер
Графикалық процедуралар мен функциялар экранда көрінбейтін ағымды позицияны беретін ағымды көрсеткіш (текущий указатель) қолданады. Осы көрсеткіштің орны экранның 0,0 координатты жоғарғы сол жақ бұрышы арқылы беріледі.
GetMaxX және GetMaxY функциялары. Экранның горизотальді және вертикальді координаттарының максимал өлшемдерін қайтарады (береді).
GetMaxX және GetMaxY функциясы. Көрсеткіштің горизонталь және вертикаль координаттарының ағымды өлшемдерін Integer типімен қайтарады.
Set View Port процедурасы. Графикалық экранды төртбұрышты терезе орнатады. Тақырып:
Procedure Set View Port (x1,y1,x2,y2: integer; Clipon: Boolean);
Мұнда x1… y2 – терезе бұрышының жоғарғы сол жақ (х1,y1) және оң жақ төменгі (х2,y2) бұрыштарының координаттары; Clipon – суреттің терезеге сипайтын бөлігін кесіп тастауын беретін Boolean типті өрнек. Осы параметрді басқару үшін қолданатын константа:
Const
Clip on = True; {Қиюды қосу- включить отсечку}
Clip off = False;{ Қиюды қоспау- Не включать отсечку }
Clip on параметрінің жұмысын келесі программа бойынша салынған сурет көрсетеді.
Clip on бойынша терезедегі суретті қию.
Program pr2 (output);
Uses Graph, CRT;
Var x,y,e: Integer; k: integer;
x11, y11, x12, y12, {терезенің координаттары}
r, {бастапқы радиус}
begin
Direct Video:= False; {графикалық редимді қосу}
x:=0; Init Graph (x,y, D:Lang s Lang Tpascal.71BGI);
{нәтижесін тексеру}
e:= Graph Result; if e grOK then
Writeln (Graph Error Msg(e)) {қателік}
Else {қате жоқ}
Begin
{экранның шешу қабілетін еске ала отырып, коор-ды есептеу}
x11:= GetMaxX div 60; x12:= GetMaxX div 3;
y11:= GetMaxY div 4; y12:= 2*y11;
r:= (x12-x11) div 4;
{терезе сызу}
Writeln (Clipon: :10);
Rectangle (x11, y11, x12, y12);
{терезеде төрт шеңбер салынады}
Set View Port (x11, y11, x12, y12, Clipon );
For k:=1 to 4 do
Circle (0,y11,R*k); {перне басуды күтеміз}
If Read Key =#0 then k:= ord (Read Key);
Close Graph
End; end.
MoveTo процедурасы. Көрсеткіштің жаңа ағымды орнын береді. Тақырып:
Procedure MoveTo (x,y: integer);
Мұнда x,y – көрсеткіштің горизонталь және вертикаль бойынша жаңа координаттары.
MoveRel процедурасы. Көрсеткіштің салыстырмалы коор-динаттардағы жаңа орнын береді.
Procedure MoveRel (dx,dy: integer);
Мұнда dx,dy –горизонталь және вертикальдағы көрсеткіштің жаңа координаттар бойынша өсімшелері.
Clear Device процедурасы. Графикалық экранды тазартады. Осы процедура экранды SetBkColor процедурасы бойынша берілген фонмен толтырады.Тақырып:
Procedure Clear Device;
Clear View Port процедурасы. Графикалық терезе немесе барлық экранды тазартады. Терезені тазартқанда ол ағымды палитрадан 0 номерлі түспен алынады. Тақырып:
Procedure Clear View Port;
Көпбұрыштар
Rectangle процедурасы. Бұрыштарының берілген координаттары бойынша төртбұрыш сызады. Тақырып:
Procedure Rectangle (x1,y1,x2,y2: integer);
Мұнда x1…y2 – төртбұрыштың сол жақ жоғарғы (x1,y1) және оң жақ төменгі (x2,y2) бұрыштарының координаттары. Төртбұрыш ағымды түс пен сызық стилін қолданып сызылады.
DrawPoly процедурасы.Сыну нүктелерінің координаттарымен берілген кез келген сынған сызықты жасайды.
Procedure DrawPoly (N: word; var Points)
Мұнда N – екі шеткі нүктелерімен қоса, сыну нүктелерінің саны; Points – сыну нүктелерінің координаттары бар PointType типті айнымалы. Сыну нүктелерінің координаттары word типті екі мағынамен беріледі: біріншісі горизонтальды, 2-сі вертикальді координаттарды береді. Олар үшін модульде берілген келесі типті қолданады:
type PointType = record
x,y: word
end:
Сызбаны жасау кезінде түзудің ағымды түсі мен ағымды стилін қолданады.
Доғалар, Шеңберлер, Эллипстар
Мұнда x1…y2 – ортаның координаттары; r – радиус пикселмен. Шеңбер ағымды түспен шығады, Сызық жуандығы ағымды стильмен қойылады, сызық түрі ылғида SolidLn (бүтіндей).
Arc процедурасы. Шеңбер доғасын сызады. Тақырып:
Procedure arc (x,y: integer; BegA,EndA,r: word);
Мұнда x,y – орта координаты; BegA,EndA – доғаның бастапқы және аяқтағы бұрыштары; r – радиус. Бұрыштар сағат тілі қозғалу бағытына қарсы есептеледі және градуспен көрсетіледі. Нольдік бұрыш вектордың горизон-таль бағытымен солдан оңға қарай сәйкес болады. Егер бұрыштың бастапқы мәні 0-ге және соңғы мәні 359 деп берілсе, толық шеңбер шығады. Шеңбердің доғасын сызғанда сызық пен радиус жөнінде Circle процедурасындағыдай параметрлерді қолданады.
Ellipse процедурасы. Эллипстік доғасын сызады. Тақырып:
Procedure ellipse (x,y: integer; BegA,EndA, rx,ry: word);……..

Рахмет ретінде жарнамалардың біреуін басуды сұраймын!