7. További fontos utasítások és függvények. Unitok
Mûveletek, függvények és utasítások:
Az eredeti Pascal nyelvet nagyon sok utasítással egészítették ki. Ezek az utasítások (pontosabban eljárások, függvények, konstansok és típusok, ld. késõbb) úgynevezett unitokban (más szóval, modulokban) foglalnak helyet. Ha használni akarjuk õket, el kell helyeznünk a deklarációs részben a
deklarációs utasítást (ez a PROGRAM deklaráció kivételével meg kell, hogy elõzze az összes többi deklarációt!). Ekkor a fordító felismeri a megadott unit utasításait. A legfontosabb unitok a CRT (szöveges képernyõkezelés, billentyûzetkezelés, hangok), GRAPH (grafika), DOS (Dos-feladatok elvégzése: lemez-, file-, idõ- és megsza kításkezelés). A Pascal leggyakoribb utasításai a SYSTEM unitban vannak, de ezt a unitot nem kell deklarálni. Más unitok vagy a TURBO.TPL file-ban, vagy a megfelelõ nevû .TPU kiterjesztésû file-ban vannak.
A CRT unit fõbb lehetõségei:
A képernyõkezeléshez tudnunk kell, hogy a szöveges képernyõ bal felsõ sarkának x- és y-koordinátája (1,1), a jobb alsó saroké pedig (80,25). Ha a jobb alsó sarokba írunk egy karaktert, a program az egész képernyõt egy sorral feljebb lépteti.
Következzék a klasszikus pattogtató program, mely egy karaktert pattogtat a képernyõn egy téglalap alakú tartományban.
USES Crt;
VAR x,y:integer; {a pont helye}
vx,vy:integer; {a
pont függõleges és vízszintes sebessége}
i:integer;
c:char;
BEGIN
Randomize;
vx:=1;
vy:=1; {a pont jobbra lefelé indul}
x:=random(8)+3; {egy 2 és 10
közötti véletlenszám lesz}
y:=random(8)+3; {a pont kiinduló
helye}
Clrscr;
For i:=1 to 12 do Begin {keret rajzolása}
Gotoxy(i,1); Write('-');
Gotoxy(i,12); Write('-');
Gotoxy(1,i); Write('|');
Gotoxy(12,i); Write('|');
End;
c:='*'; {azért, hogy kezdetben biztosan
ne legyen szóköz}
Repeat
Gotoxy(x,y); Write('O'); {kirajzoljuk
a pontot}
Delay(50);
Gotoxy(x,y); Write(' '); {eltüntetjük}
If (x=11) or (x=2) Then Begin {ha
a falhoz ért}
vx:=-vx; {visszafordul}
Sound(500); delay(10);
nosound; {hangkiadás}
End;
If (y=11) or (y=2) Then Begin
vy:=-vy;
Sound(500); delay(10); nosound;
End;
x:=x+vx; y:=y+vy; {a pont új
helye}
If Keypressed Then c:=readkey; {lenyomott
billentyû beolvasása}
Until c=(' '); {szóközre
leáll a program}
END.
Nagyfelbontású grafika: a GRAPH unit
Igényesebb grafika esetén a nagyfelbontású lehetõségeket kell felhasználnunk a GRAPH unitból. A Pascal a video- kártya több üzemmódját is képes kezelni. A video-kártyától függõen a program más-más grafikus drivert használ (ezek olyan gépi kódú programgyûjtemények, melyeket a fordító nem fordít bele a tárgykódba, hanem csak a grafika bekapcsolásakor kerülnek a memóriába). A driverek .BGI kiterjesztésû file-okban helyezkednek el a lemezen. Egy adott driver esetén is több üzemmód közül választhatunk. Az üzemmódot jellemzi, hogy hány képpontot tud megjeleníteni vízszintesen és függõlegesen, és hány színben. A képernyõ bal felsõ sarkának grafikus koordinátái (0,0), így pl. a 640´480-as felbontásnál a jobb alsó sarok koordinátái (639,479). A .BGI file-okhoz hasonlóan mûködnek a .CHR file-ok, melyek betûtípusokat tartalmaznak, és csak a megfelelõ betûtípus beállításakor kerülnek be a memóriába.
A GRAPH unit fõbb utasításai:
A további lehetõségeket lásd a help-ben.