61
İNTERRUPT – icra zamanı əmələ gələn kəsilmələri emal edir.
Qrafik operatorlar və sadə həndəsi fiqurların qurulması.
Bütün alqoritmik dillərdə olduğu kimi Turbo Paskal dilinin də proqram, mətn və qrafik iş rejimləri
mövcuddur. Qeyd edək ki, qrafik rejimin operator və əmrləri ilə işləməzdən əvvəl həmin rejimə keçidi
təmin etmək lazımdır. Bu məqsədlə hər şeydən əvvəl standart modulların elanı hissəsində yeni GRAPH
modulunu elan etmək tələb olunur. Proqram daxilində qrafik rejimə keçidi təmin edəcək aşağıdakı
prosedur və funksiyalardan istifadə edilir:
Qrafik rejimə keçid aşağıdakı kimi yerinə yetirilir. Əvvəlcə adapterin qrafik rejimdə işləməsini
təmi edən prosedur verilir. Bu prosedurun ümumi şəkli aşağıdakı kimidir:
İNİTGRAPH (, , )
Burada, drayver- qrafik rejimin drayverinin tipini müəyyənləşdirən İNTEGER tipli dəyişəndir;
rejim- qrafik adapterin iş rejimini müəyyən edən İNTEGER tipli dəyişəndir;
yol- drayver faylının yerləşdiyi yaddaş qurğusu və qovluğu göstərən sətir tipli, yəni
STRİNG tipli dəyişəndir.
Drayveri müəyyənləşdirən sabitlər aşağıdakılardan biri ola bilər:
CONST
Detect=0; - tipin avtomatik müəyyən olunması;
CGA=1;
MCGA=2;
EGA=3;
EGA64=4;
EGAMono=5;
İBM8514=6;
HercMono=7;
ATT400=8;
VGA=9;
PC3270=10;
İstifadəçi göstərilən sabitlərdən istifadə etdiyi monitora uyğun olanı seçir və yuxarıdakı
prosedurda < drayver > əvəzinə yazır. İstifadəçi işinin asanlaşdırmaq məqsədilə qrafik rejimin
adapterinin tipini Detect=0 qəbul etmək məsləhət görülür. Çünki bu halda drayverin tipi kompüter
tərəfindən avtomatik olaraq müəyyən olunur.
Qeyd etmək lazımdır ki, hər bir qrafik adapter müxtəli rejimlərdə işləyə bilər. Hər bir monitora
uyğun olan rejimlər xüsusi sorğuda verilmişdir. Lakin istifadəçi əgər qrafik adapterin müəyyən edilməsi
üçün Detect=o qəbul edibsə sadəcə olaraq rejimin tam tipli, yəni İNTEGER tipli dəyişən olmasını
verməsi kifayət edər. Həmin dəyişən də yuxarıdakı prosedurdakı , əvəzinə yazılır.
Drayverin yerləşdiyi qurğu və qovluq istifadəçi tərəfindən tapılmalıdır. Adətən istifadə etdiyimiz
kompüterlərdə bu drayver, yəni EGAVGA.BGİ faylı C: qurğusunun BP qovluğunun BGİ altqovluğunda
yerləşir. Yəni yuxarıdakı prosedurda < yol > əvəzinə ‘C:\BP\BGI’ yazmaq lazımdır.
Bütün qeyd olunanlardan sonra qrafik rejimə keçid yerinə yetirilməlidir. Keçidin düzfün olub
olmamasını yoxlamaq üşçün GRAPHRESULT standart funksiyasının qaytardığı qiymət yoxlanılmalıdır.
Əgər onun qaytardığı qiymət grOK və ya “0” olarsa, deməli, qrafik rejimə keçilib, əks halda,yəni başqa
qiymət alınarsa onda keçiddə baş verən səhv GraphErrorMsg (dəyişən) standart funksiyası ilə müəyyən
edilərək lazımi tədbir görülür. Burad, dəyişən- GRAPHRESULT funksiyasının nəticəsinin mənimsədil-
diyi dəyişəndir.
Qrafik rejimdə iş qurtardıqdan sonra CLOSEGRAPH proseduru ilə rejim bağlanaraq ondan çıxılır.
Əgər istifadəçi müvəqqəti olaraq, qrafik rejimdən çıxıb mətn rejiminə keçmək istəyirsə onda sadəcə
olaraq RESTORECRTMODE standart prosedurunu verməlidir. İstifadəçi qrafik adapterin yeni iş rejimini
vermək istəyirsə onda SETGRAPHMODE () prosedurundan istifadə edilir. Burada, rejim yeni
təyin olunan rejimin göstəricisidir.
İstifadəçi istifadə etdiyi monitorun qrafik rejimdə ekranının həm üfiqi, həm də şaquli
koordinatlarının maksimum sayını bilmək istəyirsə onda uyğun olaraq GETMAXX və GETMAXY
standart funksiyalarından istifadə edir. Belə ki, bu funksiyalar uyğun şəkildə üfiqi və şaquli koordinatların
maksimum sayını qaytarır.
Qeyd: Ekranda koordinat başlanğıcı yuxarı sol künc hesab edilir.
62
Qrafik rejimdə işləyərkən istifadəçiyə tez-tez lazım olan aşağıdakı standart prosedurları verək:
1.
Kursorun nyeni mövqeyinin təyin edilməsi:
MOVETO (X, Y)
Burada, X və Y- İNTEGER tipli ifadələr olub uyğun olaraq üfiqi və şaquli koordinatları gğstərir.
2.
Qrafik ekranın təmizlənməsi:
CLEARDEVİCE
3.
Ekranın tərəfləri nisbətini müəyyənləşdirməyə imkan verən X və Y oxlarına uyğun iki
WORD tipli ədəd qaytarır:
GETASPECTRATİO (X, Y)
Sadə həndəsi fiqurların qurulması:a) Nöqtə və xəttin çəkilməsi:
1.PUTPİXEL (X,Y, rəng)
Ekranın (X,Y) koordinatlarında , rəng ifadəsi ilə verilmiş rəngdə nöqtəni (pikseli) çəkir. Burada,
X və Y- İNTEGER tipli, rəng- WORD tirli ifadə olmalıdır. Pixel- ekranda işıqlana nöqtədir.
2.
GETPİXEL (X, Y)
(X, Y) koordinatında yerləşən nöqtənin (pikselin) rənginə uyğun WORD tipli qiyməti verir.
3. LİNE (X1, Y1, X2, Y2)
Başlanğıcı (X1, Y1), sonu (X2, Y2) nöqtəsində olan düz xətti çəkir. Burada X1, Y1, X2, Y2-
İNTEGER tipli ifadələdir.
4.
LİNETO (X, Y)
Kursorun əvvəlcədən durduğu mövqenin koordinatları ilə (X, Y) koordinatını
birləşdirən düz
xətti çəkir. X, Y- İNTEGER tipli ifadələrdir.
5.
SETLİNESTYLE (görünüş, nümunə, qalınlıq)
Çəkiləcək xəttin çəkilmə üslubunu müəyyənləşdiri. Burada,
görünüş- WORD tipli ifadə olub
xəttin görünüşünü verir; nümunə- WORD tipli ifadə olub, xəttin nümunəsini göstərir; qalınlıq- WORD
tipli ifadə olub xəttin qalınlığını göstərir.
Xəttin görünüşü aşağıdakılardan biri ola bilər:
SolidLn=0- bütöv xətt;
DotteLn=1- nöqtəvari xətt;
CenterLn=2- qırıq ştrix xətt;
DashedLn=3- qırıq-qırıq xətt;
UserLn=4- istifadəçi tərəfindən müəyyən edilmiş xətt.
Nümunə- yalnız sonuncu görünüş verildikdə istifadə edilir. Qalan görünüşlər üçün o “0” qəbul
edilir.
Qalınlıq- aşağıdakı iki haldan biri ola bilər:
Norm Width=1- qalınlıq 1 pikseldir;
Thisk Width=3 – qalınlıq 3 pikseldir.
b)Çoxbucaqlıların çəkilməsi:
1.
RECTANGLE (X1, Y1, X2, Y2)
Yuxarı sol küncü (X1, Y1) koordinatlı nöqtədə, aşağı sağ küncü isə (X2, Y2) nöqtədə yerləşən
düzbucaqlını çəkir. Burada X1. X2, Y1, Y2-İNTEGER tipli ifadələrdir.
2.
BARD3D (X1, Y1, X2, Y2,
dərinlik, yuxarı til)
Qarşı üzün sol yuxarı küncü (X1, Y1) koordinatlı nöqtədə, qarşı üzün aşağı sağ küncü (X2, Y2)
nöqtəsində olan üçüncü dərinlik ölçüsü dərinlik (piksellərlə) qədər olan paralelepipedi çəkir. Burada, til-
TopOn (çəkiləcək) və ya TopOff (çəkilməyəcək) qiymətlərindən birini alaraq yuxarı tilin çəkilmib,
çəkilməməsini göstərir. X1, X2, Y1, Y2, dərinlik- İNTEGER tipli ifadələrdir, yuxarı til-BOOLEAN tipli
məntiqi ifadəolub yuxarıda göstərilən qiymət-lərdən birini ala bilər.
3.
DRAWPOLY (N, koordinatlar)
N sayda sınma nöqtəsi və sınma nöqtələrinin koordinatları
koordinatlarla verilən sınıq xətt çəkir.
Burada N- WORD topli, koordinatlar-isə xüsusi PointType tipli ifadələrdir. PointType aşağıdakı kimi
verilir:
Type
PointType=record
x, y: WORD
end;