Graph –modulunun funksìyaları.
-graphresult –qrafìk rejìm təsbìt edìldìkdə ekrana 0, əks halda ìsə səhvìn
kodunu vərìr.
-getmaxx –ekranın üfìqì ölçüsünü göstərìr.
-getmaxy –ekranın şaqulì ölçüsünü göstərìr.
-getcolor –carì rəngì göstərìr.
-getcolor(x,y)-(x,y) nöqtəsìnìn rəngìnì verìr.
-getx,gety –carì pìkselìn rəngìnì verìr.
3. Rənglər –aşaõıda sadalanan müsbət tam ədəd və ya rəngìn ìngìlìscə
adıyla verìlə bìlər:
Rəngìn ìngìlìscə adı və
ədədlə ìfadəsì
Rəngìn
azərbaycan dìlìndə
adı
black=0
qara
blue =1
göy
green-2
yaşıl
cyan =3
mavì
red =4
qırmızı
magenta=5
bənövşəyì
brown =6
Şabalıdı(qəhvəyì)
lightgray =7
açıq-boz
darkgray =8
tünd-boz
lightblue =9
parlaq –göy
lightgreen =10
parlaq –yaşıl
lightcyan =11
parlaq –mavì
lightred =12
parlaq –qırmızı
lightmagenta =13
parlaq –bənövşəyì
yellov =14
sarı
white =15
aõ
Məsələ 30. Bìr kvadrat daxìlìndə, mərkəzì (320,240) nöqtəsì olan 10
konsentrìk çevrə çəkməlì.
program circle10;
uses Crt,Graph;
var driver,mode,e:integer;
begin
clrscr;
driver:=detect;
initgraph(driver,mode,``);
r:=10;
{ilk radius 10 piksel}
while r<=100 do
begin
setcolor(r div 10);
circle(320,240,r);
r:=r+10
end;
setcolor(red);
rectangle(220,140,420,340);
readln
end.
Çalışma 30. Ìxtìyarì seçdìyìnìz üçbucaõı, tərəflərìnìn orta nöqtələrìnì
bìrləşdìrməklə dörd yerə bölün və alınmış üçbucaqların daxìlìnì müxtəlìf
rənglərlə boyayın.
Məsələ 31. Qrafìk ekranın yuxarı sol küncünə qara fonda mavì kvadrat,
onun daxìlìnə ìsə qırmızı çevrəlì yaşıl daìrə çəkərək ortadan, üfìqì xətt boyu,
qara rəngdə ‘BAKI’ sözünü yazmalı.
program BAKI;
uses Crt,Graph;
var
driver,mode,I,x1,y1: integer;
x,y:real;
begin
Clrscr;
driver:=detect;
initgraph(driver,mode,’’);
setbkcolor(0);
setcolor(3);
rectangle(100,0,300,200);
setfillstyle(1,3);
floodfill(200,100,3);
setcolor(2);
circle(200,100,100);
setfillstyle(1,2);
floodfill(200,100,2);
setcolor(4);
circle(200,100,100);
settextstyle(0,0,3);
outtextxy(135,100,’BAKI’);
readln
end.
Çalışma 31. Graph modulundan ìstìfadə etməklə sevdìyìnìz məktəbə
emblem çəkìn.
Məsələ 32. h=0,1 artımla, [0,2] parçasında y =2cos(3x)+1 funksìyasının
qrafìkìnì qurmalı. Nətìcənì yoxlamaqla, amplìtudanı k*y ìfadəsìnìn köməyìlə
tənzìmləyərək daha münasìb k əmsalı seçməlì.
program Cosgraf;
uses Crt,Graph;
const
a=0; b=2*pi;
h=0.1; h1=5;
x0=60; y0=240; k=50;
var
driver,mode,x1,y1:integer;
x,y:real;
function f(x:real):real;
begin
f:=2*sin(3*x)+1
end;
begin
clrscr;
driver:=detect;
initgraph(driver,mode,``);
setcolor(4);
setbkcolor(1);
line(20,y0,600,y0);
line(x0,440,x0,20);
{koordinat oxlarI}
x:=a
x1:=x0+trunc(k*x);
{x,y –riyazi koordinatlardIr}
y:=f(x);
y1:=y0-trunc(k*y);
{x1,y1-qrafik koordinatlardIr}
moveto(x1,y1);
setcolor(15);
while x<=b do
begin
y:=f(x);
y1:=y0-trunc(k*y);
lineto(x1,y1);
x1:=x1+h1;
x:=x+h
end;
settextstyle(0,0,1);
outtextxy(60,245,`0`);
outtextxy(360,245,`6.3`);
settextstyle(0,0,2);
outtextxy(200,410,`Qrafiki qurdu Natella`);
readln
end.
Çalışma 32. 32 –cì məsələnì sìnusoìda qurmaq üçün dəyìşməklə proqramı
yenìdən tərtìb edìn.
4. Anìmasìya anlayışı –pìksellərìn rəng və yanıb-sönməsìnì tənzìmləmə
əsasında, təsvìrlərìn ekranda hərəkət görüntüsünü(ìmìtasìyasını) almaõa
xìdmət edìr. Anìmasìya zamanı –hər ìşıqlanmadan qabaq obektìn yerìnì
seçìlmìş səmtə dəyìşdìrmək lazımdır. Bìr sözlə: anìmasìya –təsvìrìn ekranda
hərəkət etməsìdìr.
Məs. Anìmasìya aşaõıdakı kìmì alqorìtmlə verìlə bìlər:
1. Obektìn təsvìrìnì lazımı (x,y) koordìnatlı nöqtədən çəkərək fasìlə
vermək
2. Fon rəngì verməklə obektì görünməz etmək
3. (x,y) –koordìnatlarını dəyìşdìrmək
4. 1 –cì punkta qayıtmaq.
Məsələ 33. Mavì səmada günəşìn üfìqì ìstìqamətdə hərəkətìnì əks
etdìrməlì.
program Asiman;
uses Crt,Graph;
var driver,mode,i:integer;
begin
clrscr;
driver:=detect;
initgraph(driver,mode,``);
i:=0;
while i <= 750 do
begin
setcolor(14);
setbkcolor(3);
setfillstyle(1,14);
circle(i,100,50);
floodfill(i,100,14);
delay(200);
setfillstyle(1,3);
setcolor(3);
circle(i,100,50);
floodfill(i,100,3);
i:=i+5
end;
readln
end.
Çalışma 33. Sərbəst seçdìyìnìz qövs üzrə qaranlıq səmada ayın hərəkətìnì
təsvìr edən anìmasìya qurun.
§14. Obektlər
Turbo Paskal dìlìnìn sonuncu versìyası obekt ünsür tìpì də daxìl
edìlməklə genìşlənmìşdìr.
Obekt tìpì –özündə bìr çox ünsürlər və onlarla ìşləməyə ìmkan verən
alqorìtmlərì bìrləşdìrìr. Eynì obektdə bìrləşmìş hər ünsürə –alan, alqorìtmə –
gedìş və bìrləşdìrmənìn özünə ìsə -ìnkapsulyasìya deyìlìr. Obektìn ìcra
mexanìzmìnì –demək olar kì, yalnız gedìş-alqorìtmlər təşkìl edìr. Onları həm
ìç(obyektə aìd olan) və həm də çöl(obyektə aìd olmayan) ünsürlərə tətbìq
etmək mümkündür. Bu zaman eynì adlı gedìş müxtəlìf obyektlərdə müxtəlìf
cür məzmun daşıya bìlər və bu xüsusìyyət gedìşlərìn polìmorfìzmì adlanır.
Obektlər də pöhrə-budaq prìnsìpì üzrə bənzərlìk əlamətìnə malìk olub: obyekt
tərkìbìndə hər alanın bìr çox pöhrəsì olsa belə o, yalnız bìr budaõa baõlı ola
bìlər.
1. Ìnkapsulyasìya –yənì obyektìn təşkìlì:
type = obyect
: ;
;
end;
kìmì tərtìb olunur.
Məs. Alanları –pìkselìn x, y koordìnatları və gedìşlərì –parlama, sönmə
və yerdəyìşmədən ìbarət olan Piksel adlı obekt tìpìnì aşaõıdakı kìmì tərtìb
etmək olar:
type Piksel =object
private
x,y :integer; {koordinatlar}
public
constructor Create(a,b:integer);
{Object qurulur, ilkin koordinatlar verilir}
procedure On ;
{piksel boyanIr}
procedure Off ;
{piksel fonda itir}
procedure Draw(color:word) ; virtual;
{piksel color kimi boyanIr}
procedure Move(dx,dy:integer) ;
{pikselin koordinatlarI dx, dy artImlarI alIr}
end;
Burada:
- Create gedìşì obyektı yaradıb alanlara bəllì ölçülər təyìn edìr və bu
cür prosedura da constructor adlanır.
- Draw gedìşìndə ìşlənən virtual kəlməsì aşaõıda açıqlanacaqdır.
- private dìrektìvì –alan və gedìşlərlə programın dìgər proseduraları
arasında əlaqə yaradır. Belə hallarda səhv etməmək üçün alanlara aìd
olan qìymətlərì gedìşlərìn köməyìlə dəyìşmək daha sərfəlì olar. Məs.
Pìkselìn yerìnì Move gedìşìlə dəyìşmək olar.
- public dìrektìvì ìsə dìgər proqramlarla əlaqə qurmaq üçün nəzərdə
tutulmuşdur. Lakìn protected ìlə verìlən komponentdən ìsə yalnız
obyektìn öz alanları(pöhrələrì) ìstìfadə edə bìlər.
Gedìşìn ìcra bölümündə başlıõı:
procedure ,();
kìmì yazıla bìlər.
Yuxarıda verìlmìş obyektìn gedìşlərì ìsə aşaõıdakı kìmì vermək olar:
constructor Piksel.Create(a,b:integer);
begin
X:=a; Y:=b
end;
procedure Piksel.Draw(color:word);
begin
PixelYolu(X,Y,color);
end;
procedure Piksel.On;
begin
Draw(GetColor)
end;
procedure Piksel.Off;
begin
Draw(GetBkColor)
end;
procedure Piksel.Move(dx,by:integer);
begin
Off;
X:=X+dx;
Y:=Y+dy;
On;
end;
Obekt tìpìnìn dəyìşənì –nüsxə adlanır və
var bölümündə:
.();
formada verìlìr.
Məs. Piksel -obekt tìpìnìn Pxel –adlı nüsxəsìnì:
var Pxel:Piksel;
begin
Pxel.Create(250,100);
Pxel.On;
Pxel.Move(35,70);
Pxel.Off;
..kìmì və ya dìnamìk dəyìşənlə ìsə:
var Pixel:^Piksel;
begin
New(Pixel);Pixel^.Create(250,100);
Pixel^.On;
Pixel^.Move(35,70);
Pixel^.Off
formada ìfadə etmək olur.
Burada:
New(Pixel); Pixel.Create(250,100);
-qoşa əmrìnì:
New(Pixel,Create(250,100));
ìlə əvəz etmək olar.
Yazı tìpìndə olduõu kìmì obekt tìpìnə də With(bìrləşdìrmə) əmrìnì
aşaõıdakı qaydada tətbìq etmək mümkündür.
With Point do
begin
Create(100,100);
On;
Move(50,-10)
end;
2. Əxzetmə –obekt tìpìnìn pöhrə-budaq prìnsìpìnə məxsus bənzərlìk
əlamətì olub
type
= object( )
<əlavə olunmuş alanlar> : < alanların tìplərì>;
<əlavə olunmuş və yenìdən təyìn olunmuş gedìşlərìn deklarasìyası>;
end;
formada tərtìb olunur.
Əxzetmə prìnsìpìnì aşaõıdakı sxem üzrə(Şəkìl 1.3.) daha aydın şərh
etmək mümkündür.
Düzbucaqlı
Çevrə
Parça
Nöqtə
Şəkìl 1.3.
Verìlmìş sxemdə nöqtə –budaq, çevrə və parça ìsə onun pöhələrìdìr. Odur
kì, əgər nöqtə: parlama, sönmə və hərəkət gedìşlərìnə malìkdìrsə, onda həmìn
gedìşlər çevrə və parçaya da aìd olub üstəlìk də cevrə -radìus (r), parça ìsə –
məs. ìkìncì ucunun yerdəyìşməsì (ShiftX,Shifty kìmì) əlavə gedìşlə
zəngìnləşə bìlər. Lakìn göründüyü kìmì, düzbucaqlı, -parçanın nöqtədən
aldıõı gedìşlərì ìlə yanaşı (o dìaqonalın uc nöqtələrì əsasında qurulur) həm də
ìkìncì ucun yerdəyìşmə gedìşìnə də malìk olmalıdır.
Çevrənì -Circle və nöqtənì –Point adlandırmaqla Circle tìpì draw gedìşì
və constructor ìlə:
type Circle=object(Point)
private
R:integer;
{radius}
public:
constructor Create(a,b,c:integer);
procedure Draw(color:word); virtual;
end;
constructor Circle.Create(a,b,c:integer);
begin
inherited Create(a,b);
R:=c
end;
procedure Circle.Draw(color:word);
begin
SetColor(color);
Circle(X,Y,R)
end;
kìmì verìlə bìlər və burada inherited –budaõın gedìşlərìnì pöhrəyə ötürən
Create konstruktopunu çaõırmaq üçündür. Hərçəndì bu çaõırışı Point.
Create(a.b) kìmì də vermək olardı.
Parçanı Line adlandirmaqla ìsə müvafìq obekt tìpìnì:
type Line=object(Point)
private
ShiftX,ShiftY: integer;{
ikinci ucun artIm almasI
}
public:
constructor Create(X1,Y1,X2,Y2:integer);
{X1,Y1,X2,Y2 –uclarIn koord.}
procedure Draw(color;word); virtual;
{boyalI qurma}
end;
Tapşırıq. Düzbucaqlını Rect adlandırmaqla müvafìq obyekt tìpìnì təyìn
edìn.
3. Polìmorfìzm –eynì adların müxtəlìf obyekt gedìşlərìndə ìşlənə
bìlməsìdìr. Məs. bütün qurmaları həyata keçìrən Create və draw gedìşlərì
eynì adla ayrı-ayrı obektlər üçün fərqlì xìdmətlər göstərə bìlìrlər.
Circle obyektìnìn əxz olunma gedìşì On:
procedure Point.On;
begin
Draw(GetColor)
end;
yenìdən təyìn olunmaya bìlərdì, zìra bu gedìşlərìn proseduraları artıq
Point tìpìndə verìlmìşdìr. Lakìn bu halda kompìlyator, funksìyalara statìk
müracìət mexanìzmì ìlə draw gedìşìnìn proqram kodunu,
procedure Point.Draw(color:word);
begin
PixelYolu(X,Y,color){piksel yanIr}
end;
prosedurası əsasında aramsız olaraq çaõıracaqdır.
Bu vəzìyyətì aradan qaldırmaq üçün virtual xìdmətì sözündən
procedure Draw(color:word); virtual;
formada ìstìfadə olunur. Ìndì artıq lazımı Draw gedìşìnìn ünvanı yalnız ìş
ərəfəsìndə müəyyən edìləcəkdìr. Məs. Circle tìpìnìn obyektì tərəfìndən On
gedìşìnìn çaõrılması Draw gedìşìnə də yol açmış olur:
procedure Circle.Draw(color:word);
begin
SetColor(color);
Circle(X,Y,R)
end;
Bu cür mexanìzm –dìnamìk mexanìzm və Draw gedìşì ìsə, bu halda daxìlì
gedìş adlanır. Onu da deyək kì,budaqda wirtual kìmì verìlmìş gedìş bütün
pöhrələrdə də məhz bu cür göstərìlməlìdìr. Lakìn obyekt tìpìndə bìr dənə də
olsa wirtual gedìş varsa onda tərkìbə, bu gedìşdən əvvəl konstruktor da
salınmalıdır.
Obyektyönümlü proqramların üstünlüyü xüsusìlə ìrì həcmlì və mürəkkəb
proqramlarda daha qabarıq görsənìr. Əxzetmə və polìmorfìzm -proqram
müəllìfìnì çoxlu adlar fìkìrləşìb tapmaq və oxşar tìplì obyektlər üçün eynì
məzmunlu proseduraları təkrar-təkrar yazmaqdan azad edìr. Məs. elə
yuxarıda baxılmış mìsala obyektyönümlü üsul tətbìq edìlməsəydì onda:
hərəkət –Move, parlama –On və sönmə –Off proseduralarından hər bìrì
çevrə, parça və düzbucaqlı fìqurları üçün yazılmaqla 9 dəfə təkrarlanardı. Bu
cür ìzafì ìşìn böyük həcmlì proqramlarda hansı həddə vara bìlməsìnì ìsə
təsəvvür etmək yəqìn kì, çətìn deyìl.
§14. Turbo Pascal 7.0
proqram mühìtìnìn sərhì
1. Turbo Paskal 7.0 proqram mühìtì –MS-DOS üçün Borland Pascal və
Tupbo Pascal 7.0 proqram mətnlərì hazırlama və ìşə buraxmada genìş tətbìq
olunur. Bu mühìt üçün(Windovsda qrafìka ìşìndən başqa) bütün növ
proqramlama prìnsìplərì eynìdìr.
Tupbo Pascal 7.0 proqram mühìtìnìn əsas faylları.
turbo.exe
əsas ìşlək fayl, həcmì –400Kbayt
turbo.tpl
kìtabxana –48Kbayt (konfìqurasìyadan da asılıdır)
turbo.tph
köməkçì –730Kbayt
graph.tpu
qrafìkayla ìş üçün modul –33Kbayt
Mühìtə daxìl olmaq üçün turbo.exe əmrì yerìnə yetìrìlìr və ekranın yuxarı
hìssəsìndə baş menyu, aşaõıda ìsə bəzì funksìonal düymələrìn şərhì çıxır. Bu
zaman baş menyuya gìrmək üçün F10 sədəfìnì qırpmaqla aşaõıdakı bəndlər
abonentìn sərəncamına verìlìr:
File
faylla ìş üçün
Edit
faylda düzəlìşlər üçün
Search
verìlmìş fraqment mətndə arama və ya dəyìşmə üçün
Run
proqramın ìcrası üçün
Compile
proqramın kompìlyasìyası ve exe-fayl yaratmaq üçün
Debug
proqramı kökləmək(nìzamlamaq) üçün
Options
mühìtìn konfìqurasìyası üçün
Window
pəncərələrlə ìş və onların konfìqurasìyası
Help
köməkçìnì çaõırmaq üçün
Menyudan lazımı bəndì, əlbəttə kursorla seçìb keçìd sədəfìnì qırpmaq
gərəkdìr. Hərçəndì bu ìşì Alt və baş hərf sədəflərìnì eynì vaxtda qırpmaqla
da etmək mümkündür.
Bìr ìş seansının əsas mərhələlərìnə nəzər salaq:
1) Baş menyu acılır, buradan File bəndì seçìlìr. Bu zaman əlavə bìr
menyu da alınır kì, buradan da New əmrìnì seçməklə proqram mətnìnì
yazmaq üçün NONAME00.PAS adlı fayl açılmış olur. Beləlìklə də
F10FileNew addımlarını atmaqla fayl açaraq proqram mətnì
yazılır.
2) Mətndə düzəlìşlər –bəzìlərì aşaõıda şərh olunmuş- ənənəvì düzənləmə
üsullarıyla aparıla bìlər:
Shift+oxlar
Əməlìyyat aparılacaq fraqmentì (qara rənglə) seçmə
Ctrl+Insert
Bloku buferə də köçürmək
Shift+del
Bloku buferə gətìrmək
Shift+Insert
Fraqmentì kursorun olduõu yerə köçürmək
Ctrl+Del
Seçìlmìş bloku sìlmək
Ctrl+Y
Kursor olan sətrì sìlmək
Ctrl+Q,Y
Sətrdə kursordan sonrakı hìssənì sìlmək
Ctrl+n
Sətìr yerləşdìrmək
Ctrl+PgUp
Mətnìn başlanõıcına keçmək
Ctrl+PgDn
Mətnìn sonuna keçmək
3) Əgər aşkar səhvlər yoxdursa, proqramı kompìlyasìya edìb
F10RunRun əmrlərì və ya Ctrl+F9 sədəflərìlə ìşə buraxmaq olar.
4) Əgər sìntaksìs səhvlər varsa, onda kursor səhvìn olduõu sətìrdə və ya
düz həmìn mövqedə duracaq, yuxarı sətìrdə ìsə səhvìn məzmunu
barədə məlumat verìləcəkdìr. Bu zaman mətn artıq düzənləmə
rejìmìndə gözləyìr və çox vaxt ìtìrmədən səhvì düzəltmək mümkün
olur. Bu mìnvalla hər dəfə səhvlər düzəldìlərək 3) –cü bənd təkrarlanır
və s.
5) Əgər sìntaksìs səhvlər yoxdursa onda proqram ìşləməlì və cavablar ìsə
nətìcə xanəsìnə verìlməlìdìr kì, bunun üçün də Alt+F5 sədəflərì
qırpılmalı və ya Debug bəndì gedìşlərìndən ìstìfadə edìlməlìdìr.
Nətìcələrì gözdən keçìrərək ìstənìlən sədəfì qırpmaqla yenìdən düzəlìş
rejìmìnə qayıtmaq olar.
6) Proqramın exe-faylını F10compileDestinationdisk ardıcıl
əməlìyyatlarından sonra almaq olar. Daha sonra Alt+F9 sədəflərìnì
qırpılmaqla dìskìn carì kataloqunda, heç bìr proqram mühìtì olmadan
da ìşləyə bìləcək exe-fayl yazılmış olur.
7) Proqram mətnìnì də genìşlənmìş .pas faylında saxlamaq: a) adını
dəyìşməklə -F10fileSava As, əks halda ìsə
F10fileSava (və ya sadəcə F2 sədəfìnì qırpmaq).
8) Seansı bìtìrìb mühìtdən çıxmaq üçün F10fileExit və ya sadəcə
Alt+x sədəflərì qırpılmalıdır.
9) Dìskdə yerləşən proqramla ìşləmək üçün F10fileOpen və ya F3
sədəfì qırpılır. Tab sədəfìnì qırpmaqla, aşaõı xanəyə keçìb fayl
menyusundan lazımı faylı tapmaq və keçìd sədəfìnì qırpmaqla onu
düzənləmə rejìmìnə keçìrmək mümkündür.
10) Açıq xanəlì proqramlar çox olduqda, bìrìndən dìgərìnə keçmək üçün
F6, genìşlətmə və ya daraltmanı ìsə F5 –ìn köməyìlə ìcra etmək olar.
xanənì ekranda münasìb formada yerləşdìrmək üçün Windowdan
ìstìfadə edìlìr. Fəal xanənì baõlamaq üçünsə ya Alt+F3 sədəflərìnì
qırpmaq ya da kì, mausun dìlìnì yuxarı sol küncdəkì nìşan üzərìnə
qırpmaq gərəkdìr.
11) Turbo Paskal barədə məlumatlar almaq üçünsə F1 sədəflərìnì qırparaq
ekrana verìlən məlumatları oxumaq olar.
Borland Pascal for Windovs mühìtìnìn də yuxarıda sadalanan
bəndlərdən elə bìr cìddì fərqì yoxdur. Bu halda sadəcə proqramın əvvəlìndə
uses Crt əvəzìnə uses WinCrt yazmaq və bìr də Sava As, Open kìmì fayl
sìstemì əmrlərì ìlə ìşləmə vərdìşì tələb olunur.
2. Tìpìk səhv kodları –Tupbo Pascal 7.0 mühìtìndə səhvlər kompìlyasìya
səhvlərì və ìcra səhvlərì kìmì ìkì qrupa bölünür.
Bəzì xarakterìk kompìlyasìya səhvlərìnìn şərhì.
Kod Məlumat
Məzmun
3
Unknown identifier
şərh olunmamış ìdentìfìkator
4
Duplicate identifier
təkrar ìdentìfìkator
5
Syntax error
sìntaksìs səhv
14
Invalid file name
Faylın adı və ya ünvanı düz deyìl
26
Type mismatch
Tìplərìn uyuşmazlıõı
42
Error in expression
Ìfadədə səhv
62
Division by zero
sıfıra bölmə
64
Cannot Read or Write variables
of this type
bu tìpìn dəyìşənlərìnì yazmaq və hesablamaq
mümkün deyìl
85
«;» expected
«;» sìmvolu gözlənìr(və ya çatmır)
91
«:=» exspected
«:=» sìmvolu gözlənìr
94
«.» expected
«.» sìmvolu gözlənìr
95
«..» expected
«..» sìmvolu gözlənìr
Ìcra səhvlərì:
a) DOS səvìyyəlì səhvlər –kod 1..99
b) Gìrìş-çıxış səhvlərì –kod 100..149
c) Krìtìk səhvlər –kod150..199
d) Fatal səhvlər –kod 200..255
Bəzì xarakterìk ìcra səhvlərìnìn şərhì
kod
məlumat
məzmun
2
path not found
ünvan tapılmadı
103
file not open
fayl açılmayıb
104
File not open for input
gìrìş faylı açılmayıb
105
File not open for output
çıxış faylı açılmayıb
153
Unknown command
məlum olmayan əmr
200
Division by zero
sıfıra bölmə
215
Arirhmetic overflow error
rìyazì əməldə səhv
3. Kompìlyatorun dìrektìvlərì –proqramlara qeyrì standart kompìlyasìya
rejìmlərì vermək üçün nəzərdə tutulmuşdur kì, onları da: –rejìmdəyìşdìrìcì
dìrektìvlər və parametrlì dìrektìvlər kìmì ìkì qrupa ayırmaq olar. Bìrìncìlər
{$ <ìşarə>} kìmì ümumì formaya malìkolub Option Compiler
ìfadəsìlə kompìlyasìya rejìmlərìnì və ya «+», «-»
ìşarələrìnì verə ya da ləõv edə bìlər. Onu da deyək kì, normal vəzìyyətdə
kompìlyator əsas dìrektìvlərì onsuz da cəlb edìr və xüsusì zərurət olmadıqda
rejìmdəyìşməyə ümumìyyətlə çox ehtìyac qalmır.
Rejìmdəyìşdìrìcì dìrektìvlərìn təsnìfatı:
{$A+} –ünsürlərìn baytın deyìl sözün sərhəddìndə bərabərləşdìrìr. Çox
yaddaş alırsa da proqramın sürətlə ìşləyìr. Elə-belə də ìşləyìr. Kompìlyatorun
əmrì –Word AllignData.
{$B-} –məntìqì ìfadə hesablamanın müfəssəl sxemì.Nətìcə aydın olan
kìmì hesablama kəsìlìr. Elə-belədə {$B+} –Complete Boolean Evaluation
dìrektìvì ìşləyìr.
{$D+} –Debug Internation –proqram mətnìndə səhv verən əmrlər barədə
məlumat verìr. Elə-belə də ìşləyìr.
{$E+} –Emulation – proqram yoluyla hwmprosessoru emulyasìya edìr.
Elə-belə də ìşləyìr.
{$F+} –Force Far Calls – Prosedura və funksìyaların “uzaqlaşdırılmış”
çaõırış tìpì. Elə-belədə ìşləmìr.
{$G+} –286 Instructions –yalnız 80286 tìp prosessorla ìşləyən maşınlar
üçündür. Elə-belədə ìşləmìr.
{$I+} –I/O Checking –Gìrìş-çıxış səhvlərì olan kìmì proqram dayanır.
Elə-belə də ìşləyìr.
{$L+} –Local Sumbols –lokal dəyìşənlər barədə məlumat verìr. {$D+}
ìşləyən zaman o da elə-belə ìşləyìr.
{$N+} –8087/80287 sürüşgən vergüllü hesablamada həmprosessor kìmì
ìşlədìlìr. Həmprosessoru olmayan maşınlarda o, {$N-} ìlə ləõv olunmalıdır.
{$O+} –Overlays Allowed –böyük proqramların overley kodunu çıxarır.
Elə-belədə ìşləmìr.
{$P+} –Open Parameters açıq tìp massìvlərì parametr kìmì ìşlətməyə
ìmkan verìr. Elə-belədə ìşləmìr.
{$Q+} –Overflow Checking – Rìyazì proseslərdə tıxanma hallarını
bìldìrìr.Elə-belədə ìşləmìr.
{$R+} –Range-Checkìng –Ünsürlərìn verìlmìş dìapazondan kənara çıxma
hallarını bìldìrìr. Elə-belədə ìşləmìr.
{$S+} –Stack Checking –axının tıxanmasını yoxlayır
{$V+} –Strict Var String –formal və faktìkì parametrlərìn eynì uzunluqda
olmasını yoxlayır.
{$X+} –Exstended Syntax –proseduranı funksìya kìmì təqdìm etməyə
ìmkan yaradır. Elə-belədə ìşləmìr.
Parametrlì tìplərdən:
{$I } –Include Directories –kompìlyasìya zamanı proqram
mətnınə əlavə mətn qoşmaõa ìmkan verìr. Məs. {$I *.dfm} –dfm əlavə
olunmuş bütün faylları (Delphìdə ìşlənìr ) bìrləşdìrìr.
{$L } –Object Directories - kompìlyasìya zamanı
proqrama bəzì obekt kodları daxìl etməyə ìmkan verìr.
{$M <1024-65520 aralıõında axın ölçüsü>, <0-655360 aralıõında
dìnamìk sahə ölçüsü>} –Memore Sizes –Yadda;I proqrama münasìb şəkìldə
bölür.
Burada A, D, E, L, N, O, P, Q, X və M -qlobal dìrektìvlər olub tələb
olunduqda məhz proqramın adından sonraya yerləşməlì, dìgər dìrektìvlər ìsə
lokal səcìyyəlì olub ara-bərəyə də salına bìlər.
Dostları ilə paylaş: |