Professional Documents
Culture Documents
+
)) 1 , ( , 1 (
) 1 , 1 (
1
y x F x F
x F
y
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 143
Chng 6
ho
ho trong Pascal khng phi l cng c chuyn dng thit k hnh nh. Tuy nhin
nu bit tn dng cc cng c sn c trong Unit Graph chng ta c th lm c nhiu vic,
c bit l v th cc hm s. Trong chng ny bn c tip cn cc khi nim sau:
Cc th tc v hnh n gin
Cc th tc vit ch trong ch ho
Cc th tc t mu
Cc phng php x l nh Bitmap
Phng php v th hm s
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 144
1. Khi nim chung
Mn hnh my vi tnh c th dng mt trong hai ch : ch TEXT - hin th vn
bn v ch GRAPHIC - hin th ho.
Trong ch TEXT mn hnh thng c chia thnh 25 dng v 80 ct, nu vit kn
mn hnh ta c th vit c 2000 k t. Chng ta c th thay i phn gii vit ra 25
dng x 40 ct, 50 dng x 80 ct hoc 132 dng x 43 ct.
Mun v hnh, t mu cc hnh ta phi chuyn sang ch ho, trong ch ny
mn hnh c xem l mt ma trn im, tu thuc phn gii ta c th c ma trn 640x480
im hoc 1024x720 im.... Mi im trn mn hnh c gi l 1 Pixel tc l mt phn t
nh ( Picture Element ), ta c th hon ton ch ng trong vic thay i mu sc ca tng
im to ra mt bc tranh theo mun. V tr ca mi im trn mn hnh c biu din
bi hai to : Honh v Tung . Gc to (0,0) l im gc trn bn tri mn hnh.
Nh nu trong chng 1 phn ci t Pascal, mun chuyn sang lm vic ch
ho, trong th mc hin hnh (th mc cha chng trnh Pascal) phi c cc tp
GRAPH.TPU, *.BGI v *.CHR. Li gi n v chng trnh ho phi t u chng
trnh ngay sau t kho PROGRAM nh v d 6.1.
V d 6.1
Program Ve_hinh;
Uses GRAPH;
.......
Trong phn thn chng trnh cn phi a vo cc thng bo v kiu mn hnh, ch
ho (MODE) tng ng. Nhng ngi lm tin hc ng dng thng khng quan tm lm
n cc thng s ny do vy d lng tng khi cn khai bo. khc phc nhc im
trong Pascal thit k sn mt th tc khi to ch ho l:
Initgraph(var GD,GM: Integer, DP:string[n]);
Khi gi th tc ny vi cc tham s hp l Initgraph s t xc nh kiu mn hnh v
Mode ho ti u .
gi th tc Initgraph cn phi khai bo trc cc tham s GD, GM thuc kiu
Integer (Trong GD: Graph Driver - l mt s nguyn xc nh kiu mn hnh; GM: Graph
Mode - cng l mt s nguyn xc nh Mode ho).
Nu ngay sau t kho Begin ca phn thn chng trnh chng ta khai bo
GD:= Detect;
th Initgraph hiu l n phi t i xc nh kiu mn hnh v Mode ho sao cho t
kt qu ti u. Ni chung tr nhng trng hp c bit, chng ta khng nn t xc nh
nhng thng s ny lm g.
Tham s DP ( Driver Path ) l ng dn ti th mc cha cc tp iu khin kiu mn
hnh ho, thng thng Pascal c ci t trong trong a cng nn DP s l 'C:\tp\bgi'
ngha l a C, th mc con BGI trong th mc TP.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 145
V d 6.2 l chng trnh v mt ng trn c tm ti chnh gia mn hnh v bn
knh l 50 Pixel.
V d 6.2
Program Ve_hinh_tron;
Uses graph;
Var GD,DM: Integer;
Begin
GD:= detect;
Initgraph(GD,GM,'c:\tp\bgi');
If graphresult <> grok then halt(1);
Circle(320,240,50);
Readln; CloseGraph;
End.
Dng th 8 trong v d 6.2
If graphresult <> grok then halt(1);
l cu lnh kim tra gi tr ca hm graphresult (kt qu kim tra ho), nu hm ny
nhn gi tr 0 th ho khng c li, chng trnh tip tc lm vic, cn nu gi tr ca
graphresult khc 0 chng t vic kim tra pht hin ra li, chng trnh phi dng li.
Bng 6.1 cho m li m hm graphresult tr v.
Thng thng li xy ra ch yu l do ngi s dng khai bo khng ng tham s GD,
ngha l khng ch ra cho Pascal bit cc tp iu khin ho nm u, mun sa cha ch
cn khai bo li tham s ny theo ng v tr m n c ci t.
2. Mt s th tc c bn v hnh
2.1. MOVETO(x,y) : Di chuyn con tr n to x,y (x l honh , y l tung )
x,y l cc gi tr kiu Integer, vi mn hnh VGA th 0<= x <=639, 0<= y <= 479
2.2. LINETO(x,y) : V mt ng thng t v tr con tr hin thi ti to x,y kt
thc qu trnh v con tr nm ti to mi.
Pascal c sn hai hm xc nh to gc di bn phi mn hnh l Getmaxx
v Getmaxy. v mt ng cho ca mn hnh t gc trn bn trixung gc di bn
phi ta c th vit cc lnh
MOVETO(0,0);
LINETO(Getmaxx,Getmaxy);
2.3. LINE(x1,y1,x2,y2) : Th tc ny v mt ng thng t to x1,y1 n to
x2,y2
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 146
2.4. LINEREL(dX,dY) : V ng thng t v tr hin thi ( to x,y) ti to x+dx,
y+dy.
Bng 6.1
M li Tn li Ngha ca li
0 Grok Tt, khng c li
1 GrnoInitgraph Khng tm thy n v ho
2 Grnotdetected Khng c phn cng ho
3 GrFilenotfound Khng tm thy cc tp iu khin ho
4 GrInvalidDriver File iu khin ho (BGI) b hng
5 GrNoloadMem Khng b nh np trnh iu khin ho
6 GrNoscanMem Khng b nh khi duyt (kim tra)
7 grNoFloodMem Khng b nh khi kt xut ( a ra)
8 grFontNotFound Khng tm thy Font (cc tp ui CHR)
9 grNoFontMem Khng b nh np Font
10 grInvalidMode Sai mod ho khi la chn cc iu khin
11 grError Li ho (li tng qut)
12 grIOerror C li vo/ra ho
13 grInvalidFont Li cc tp cha Font
14 grInvalidFontNum Li s hiu Font
2.5. CIRCLE(x,y,r) : v ng trn tm ti to x,y bn knh bng r Pixel
2.6. PUTPIXEL(x,y, n) : Th tc ny s v mt im sng ti to x,y vi mu l n.
Gi tr n ly trong khong 0-15 hoc vit trc tip tn mu theo ting Anh.
2.7. RECTANGLE(x1,y1,x2,y2) : V hnh ch nht to gc trn bn tri l x1,y1 ,
to gc di bn phi l x2,y2.
2.8. BAR(x1,y1,x2,y2) : V mt hnh ch nht gc trn bn tri c to x1,y1 gc
di bn phi c to x2,y2. Khi dng kt hp vi th tc s 9 s ng thi cho php k
cc vn hoa trn nn v t mu cho nn.
2.9. SETFILLSTYLE(n1,n2) : Th tc nh vn hoa v mu nn cho th tc BAR.
n1 l mt gi tr nguyn vi 0<= n1 <= 11 : nh kiu vn hoa
n2 l s hiu m mu gii thiu 0<= n2 <= 15
Trong chng trnh khi mun v hnh ch nht vi mu v vn hoa th cn a th tc
SETFILLSTYLE(n1,n2) vo trc th tc BAR. Gi tr ca mu v kiu vn hoa s c gi
cho n khi ta nh ngha li.
3. Thit lp mu ho
Cc th tc trnh by trong mc II khng c tham s nh mu km theo. Nu mun
nh mu cho nt v chng ta c th dng hai th tc sau y :
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 147
3.1. SETCOLOR(n) : nh mu cho cc nt v (n l s hiu mu)
3.2. SETBKCOLOR(n) : nh mu nn ng sau nt v
Pascal s dng mt Byte lu tr cc thuc tnh mu, trong 4 bit thp l mu
ch, 3 bit cao l mu nn, bit cao nht dnh cho thuc tnh nhp nhy. M nh phn 4 bit c
th biu din cc s t 0 (s 0000) n 15 (s 1111) do thuc tnh mu ca ch c 16 gi
tr ng vi 16 mu, cn thuc tnh mu nn ch c 8 gi tr.
Ch :
* Gi tr n trong th tc 10 c th chn t 0 n 15, cn trong th tc 11 ch c
chn t 0 n 7.
* Thay v chn s hiu mu n, Pascal cho php vit tn hng mu, nh vy hai lnh
sau y l tng ng:
Textcolor(4);
Textcolor(Red);
Bng gi tr n v mu tng ng xem trong mc 8.3 chng III (Bng 3.1)
t mu cho mt im chng ta a ngay tham s mu vo th tc PutPixel, cn t
mu cho mt hnh khp kn th dng th tc SetFillstyle.
3.3. GetBkcolor: cho bit m mu nn hin dng
4. Vit ch trong ch ho
Khi chuyn sang lm vic ch ho ta khng th vit ch bnh thng nh
trong ch vn bn. Mun vit ch trn mn hnh ho chng ta s dng mt s th tc
sau y:
4.1. OUTTEXT(chui) : Th tc ny s cho hin chui k t ti v tr con tr hin
thi. Chui c th vit trc tip hoc thng qua bin chui nh trong v d 6.3 sau y:
V d 6.3
Uses Graph;
Var
chuviet : string[30]
Begin
outtext('Cong hoa xa hoi chu nghia Viet nam');
chuviet:='Viet nam dan chu cong hoa';
outtext(chuviet);
End.
4.2. OUTTEXTXY(x,y,chuoi) : th tc ny s vit ra chui k t ti to x,y.
4.3. SETTEXTSTYLE(Kiu ch, Chiu vit, Kch thc); Xc nh kiu ch trong
Mode ho
Kiu ch l mt tham s nguyn nhn gi tr trong khong 0-10
Chiu vit ch nhn 1 trong hai gi tr :
0: ch nm ngang; 1: ch thng ng
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 148
Kch thc L h s phng to ch c th chn t 0-10
Ch :
Cc phin bn Pascal c ch c 5 kiu ch nh s t 0 n 4, phin bn 7 b xung
thm cc kiu t 5 n 10 (xem bng 6.2)
4.4. CLOSEGRAPH; chm dt ch ho tr v ch vn bn.
Sau mun quay li ch ho ta li phi gi li INITGRAPH.
Trong mt s trng hp chuyn nhanh gia ch ho v vn bn chng ta c
th dng hai th tc sau y:
RESTORECRTMODE; ngng ch ho chuyn sang ch vn bn.
SETGRAPHMODE(n) ; Ngt ch vn bn to ra bi Restorecrtmode thit lp
tr li ch ho. Tham s n c th la chn trong khong 0-2. V d 6.4 di y trnh
by cch s dng cc th tc ny.
Gi tr Tn Font Tp lu tr (ui CHR)
0 DefaultFont Khng c
1 TriplexFont TRIP
2 SmallFont LITT
3 SansSerifFont SANS
4 GothicFont GOTH
5 ScriptFont SCRI
6 SimplexFont SIMP
7 TriplexScriptFont TSCR
8 ComplexFont LCOM
9 EuropeanFont EURO
10 BoldFont BOLD
Bng 6.2
V d 6.4
Program dohoa_text;
uses crt,graph;
var
gd,gm:integer;
begin
gd:=detect;
initgraph(gd,gm,'c:\tp\bgi');
if graphresult<>grok then halt(1);
moveto(0,0); setcolor(5);
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 149
lineto(300,300); delay(2500);
circle(400,300,100); delay(1500);
restorecrtmode; (* Chuyn v ch vn bn *)
gotoxy(20,20);textcolor(9);
write('AAAAAAAA');
readln;
setgraphmode(2); (* Tr v ch ho vi n=2 cho mn hnh VEGA*)
setcolor(blue);
circle(100,100,50);
delay(2000);
restorecrtmode; (* Chuyn sang ch vn bn ln th hai*)
textcolor(3);
gotoxy(20,0); write('NNNNNNNNNNNNNNNN');
readln;
closegraph; (* Kt thc ch ho*)
End.
5. Cc v d
Vic s dng cc th tc ho khng c g phc tp, vi mt cht c gng bn c th
v c nhng hnh rt p theo mong mun. Trong phn ny chng ta s s dng cc th tc
trnh by v mt s hnh.
5.1 V th hnh Sin
Di y l mt chng trnh v th hnh sin. Chy chng trnh ta s thy ba ng
hnh sin vi cc bin v mu sc khc nhau.
V d 6.5
Program Do_thi_hinh_sin;
uses graph,crt;
const m=0.1;
Var t3,t4,t1,n,t2,gd,gm:integer; t,x,y,z:real;
Begin
gd:=detect;
Initgraph(gd,gm,'C:\tp\bgi');
if graphresult<>grok then Halt(1);
x:=0; t3:=100; n:=0; t2:=10;
while t2<=600 do
Begin
setcolor(green);
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 150
y:=sin(x);
t1:=round(y*50);
t3:=round(y*70);
t4:=round(y*100);
t1:=200-t1;
t3:=200-t3;
t4:=200+t4;
moveto(10,200);
lineto(620,200);
line(10,80,10,300);
settextstyle(3,0,3);
outtextxy(610,205,'x');
settextstyle(3,0,3);
outtextxy(15,75,'y');
settextstyle(4,0,3);
setcolor(5);
outtextxy(200,300,'do thi ham sin(x)');
setcolor(12);
moveto(10,200);
putpixel(t2,t1,11);
putpixel(t2,t3,14);
setcolor(red);
putpixel(t2,t4,random(14));
setcolor(12);
delay(5);
x:=x+0.07;
t2:=t2+1;
end;
repeat until keypressed;
t1:=1;
t2:=200;
while t1<=220 do
begin
line(340,240,round(sqrt(440*440-t1*t1)),t1);
t1:=t1+1;
delay(15);
end;
repeat until keypressed;
closegraph;
End.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 151
5.2 V cc hnh khng gian n gin
Chng trnh sau y s v mt khung ch nht bao quanh ton b mn hnh, sau v
hai on thng chia mn hnh thnh 4 phn. Trong gc phn t th nht v mt hnh chp, cc
nt nhn thy v lin, nt khut v bng nt t. Trong gc phn t th hai v mt hnh tr.
Xin mi cc bn nhp chng trnh v sau v thm vo cc gc phn t cn li cc hnh
khng gian khc, chng hn hnh hp ch nht, hnh nn...
V d 6.6
Program vehinh;
Uses crt,graph;
var i,j:word; gd,gm:integer;
Begin
clrscr;
gd:=detect;
initgraph(gd,gm,'C:\tp\bgi');
if graphresult<>grok then halt;
rectangle(0,0,639,479);
moveto(320,0); lineto(320,480);
moveto(0,240); lineto(639,240);
outtextxy(30,90,'Hinh chop');
setcolor(4);
setlinestyle(0,1, normwidth);
moveto(100,200);
Linerel(120,0);
Linerel(50,-40);
setcolor(2);
setlinestyle(3,1, normwidth);
Linerel(-120,0);
Linerel(-50,40);
setcolor(4);
setlinestyle(0,1, normwidth);
Lineto(185,50);
Lineto(220,200);
moveto(270,160);
Lineto(185,50);
setcolor(2);
setlinestyle(3,2, normwidth);
Lineto(150,160);
moveto(185,50);
setcolor(14);
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 152
lineto(185,180);
circle(185,179,2);
moveto(100,200);
lineto(270,160);
moveto(150,160);
lineto(220,200);
ellipse(480,50,0,360,60,25);
ellipse(480,170,180,360,60,25);
setlinestyle(0,15, normwidth);
moveto(420,50); lineto(420,170);
moveto(540,50); lineto(540,170);
setlinestyle(2,15, normwidth);
setcolor(5);
ellipse(480,170,0,180,60,25);
setcolor(9);
outtextxy(330,90,'Hinh tru');
repeat until keypressed;
closegraph;
end.
5.3 Vit ch trn mn hnh
S dng cc th tc nu chng ta c th vit ch trn mn hnh ho, v d sau y
s vit ln mn hnh dng ch "Chuc mung nam moi" v cho dng ch ny chy t y ln
nh mn hnh. Vic cho mt dng ch chy c thc hin bng cch vit ch ti mt v tr
no sau xo ch i v vit li ch ti to khc. Tuy nhin trong ch ho chng
ta khng dng c lnh xo CLRSCR do c th dng cch vit li dng ch vi mu
trng mu nn.
V d 6.7
Program chucchay;
uses crt,graph;
var i,j,gd,gm:integer;
Begin
clrscr;
gd:=detect;
Initgraph(gd,gm,'C:\tp\bgi');
if graphresult<>grok then halt;
settextstyle(0,0,2);
For i:=439 downto 0 do
Begin
setbkcolor(3);
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 153
setcolor(magenta);
outtextxy(180,i,'Chuc mung nam moi');
delay(24);
setcolor(3);
outtextxy(180,i,'Chuc mung nam moi');
end;
closegraph;
end.
Chng trnh di y thit k mt ng h ba kim , tc chy ca kim giy tu
thuc vo lnh DELAY(n) , nu chn DELAY(1000) th c 1 giy kim giy chuyn mt v tr.
Khi nhp chng trnh vo my cn lu khai bo li ng dn n th mc cha cc tp
*.BGI
V d 6.8
Program Ve_dong_ho;
uses crt,graph;
var
x,y, maxx,maxy, gd,gm,color,i,j,t:integer;
N:real;
LAM,TT:CHAR;
begin
gd:=detect;
initgraph(gd,gm,'c:\tp\BGI');
setcolor(5);
rectangle(30,20,610,450);
rectangle(31,21,609,449);
rectangle(32,22,608,448);
setfillstyle(9,2);
bar(33,23,607,447);
setcolor(red);
setbkcolor(red);
for i:=1 to 10 do circle(320,240,i);
setcolor(11);
setbkcolor(white);
for i:=11 to 80 do circle(320,240,i);
setcolor(14);
setbkcolor(white);
for i:=80 to 160 do circle(320,240,i);
setcolor(white);
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 154
for i:=160 to 200 do circle(320,240,i);
setcolor(11);
circle(320,240,79);
circle(320,240,80);
setcolor(4);
circle(320,240,159);
circle(320,240,160);
settextstyle(3,0,4);
outtextxy(310,40,'XII');
outtextxy(405,60,'I');
outtextxy(470,120,'II');
outtextxy(490,200,'III');
outtextxy(480,290,'IV');
outtextxy(410,370,'V');
outtextxy(310,400,'VI');
outtextxy(210,370,'VII');
outtextxy(135,290,'VIII');
outtextxy(130,210,'IX');
outtextxy(155,130,'X');
outtextxy(220,60,'XI');
setcolor(blue);
Settextstyle(4,0,5);
outtextxy(230,100,'DIAMON');
setcolor(random(14));
for i:=1 to 20 do
circle(320,360,i );
settextstyle(1,0,2);
setcolor(5);
outtextxy(200,450,'Copyright by Dr. Duong Xuan Thanh');
for i:=1 to 20 do
begin
setcolor(random(14));
circle(320,360,i );
end;
for i:=1 to 20 do
begin
setcolor(random(14));
circle(320,360,i );
end;
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 155
for t:=0 to 12 do {-------- Kim gio --------}
begin
setcolor(12);
moveto(320,240);
setlinestyle(0,0,3);
SetWriteMode(xorput);
linerel(round(110*cos((t*30-89)*pi/180)),round(110*sin((t*30-89)*pi/180)));
moveto(320,240);
linerel(round(110*cos((t*30-90)*pi/180)),round(110*sin((t*30-90)*pi/180)));
moveto(320,240);
linerel(round(110*cos((t*30-91)*pi/180)),round(110*sin((t*30-91)*pi/180)));
moveto(320,240);
linerel(round(110*cos((t*30-92)*pi/180)),round(110*sin((t*30-92)*pi/180)));
for i:=0 to 60 do { ---------Kim phut -------}
begin
setcolor(12);
moveto(320,240);
setlinestyle(0,0,3);
SetWriteMode(xorput);
linerel(round(130*cos((i*6-89)*pi/180)),round(130*sin((i*6-89)*pi/180)));
moveto(320,240);
linerel(round(130*cos((i*6-90)*pi/180)),round(130*sin((i*6-90)*pi/180)));
moveto(320,240);
linerel(round(130*cos((i*6-91)*pi/180)),round(130*sin((i*6-91)*pi/180)));
(*--------Kim giay--------*)
for j:=0 to 360 do
begin
moveto(320,240);
setlinestyle(0,0,3);
SetWriteMode(XORPut);
setcolor(12);
linerel(round(150*cos((j-90)*pi/180)),round(150*sin((j-90)*pi/180)));
moveto(320,240);
linerel(round(150*cos((j-91)*pi/180)),round(150*sin((j-91)*pi/180)));
delay(1000);
moveto(320,240);
linerel(round(150*cos((j-90)*pi/180)),round(150*sin((j-90)*pi/180)));
moveto(320,240);
linerel(round(150*cos((j-91)*pi/180)),round(150*sin((j-91)*pi/180)));
end;
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 156
moveto(320,240);
linerel(round(130*cos((i*6-89)*pi/180)),round(130*sin((i*6-89)*pi/180)));
moveto(320,240);
linerel(round(130*cos((i*6-90)*pi/180)),round(130*sin((i*6-90)*pi/180)));
moveto(320,240);
linerel(round(130*cos((i*6-91)*pi/180)),round(130*sin((i*6-91)*pi/180)));
end;
moveto(320,240);
linerel(round(110*cos((t*30-89)*pi/180)),round(110*sin((t*30-89)*pi/180)));
moveto(320,240);
linerel(round(110*cos((t*30-90)*pi/180)),round(110*sin((t*30-90)*pi/180)));
moveto(320,240);
linerel(round(110*cos((t*30-91)*pi/180)),round(110*sin((t*30-91)*pi/180)));
moveto(320,240);
linerel(round(110*cos((t*30-92)*pi/180)),round(110*sin((t*30-92)*pi/180)));
end;
repeat until keypressed;
END.
6. X l nh Bitmap
Mi hnh v trn mt khu vc mn hnh c coi nh mt nh v c gi l Bitmap,
cc Bitmap c lu tr trong b nh bi tp hp cc bit. Mi nh li bao gm nhiu phn
t nh (Pixel), mi Pixel c lu tr bi 4 bit v vic x l nh thc cht l x l tng bit.
Pascal thit k sn mt s th tc lu tr nh hoc a nh ra mn hnh:
6.1 Hm xc nh kch thc (dung lng) nh
ImageSize(x1,y1,x2,y2);
Hm ny cho ta kch thc tnh bng Byte ca mt nh trong min ch nht, gc trn
bn tri x1,y1 v gc di bn phi l x2,y2.
6.2 Th tc gn kch thc vo bin
Getmem(bin, Imagesize(x1,y1,x2,y2));
Gn vo bin la chn kch thc nh trong vng ch nht gc trn tri x1,y1 gc
di phi x2,y2, kch thc c tnh bng Byte
6.3 Th tc lu tr nh
GetImage(x1,y1,x2,y2, bin);
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 157
Ct nh trong min ch nht gc trn tri x1,y1 gc di phi x2,y2 vo mt bin, y
l bin khng nh kiu v phi c kch thc ln lu nh, trong nhiu ng dng ho
bin ny thuc kiu con tr v c xc nh kch thc thng qua th tc Getmem.
6.4 Th tc cho hin nh
PutImage(x, y, bin, phng thc);
Cho hin nh lu tr trong "bin" ln mn hnh bt u ti to x,y, "Phng thc"
l mt s gi tr m Pascal thit k nhm a nh Bitmap ra mn hnh. Di y l bng
cc gi tr ca "Phng thc"
Tn phng thc Php ton tc ng
CopyPut hoc NormalPut MOV (mu nh ln trn mu nn)
XorPut XOR
OrPut OR
AndPut AND
NotPut NOT
hiu r hn v khi nim "Phng thc" chng ta cn lu n cc php ton m
mi phng thc x dng.
Chng hn khi phng thc l XorPut th c th hiu v ng ngha Put l a nh ra,
Xor l php ton trn Bit. Cn v phng din k thut s th XorPut c hiu nh sau:
Nu im nh trong Bitmap c mu trng (s hiu mu l 15) v nn c mu xanh da
tri (s hiu mu l 1) th khi a ra mn hnh im nh ny s c mu vng bi v 15
10
=
1111
2
, 1
10
= 0001
2
. Php ton Xor c thc hin trn tng bit
1111
2
xor 0001
2
= 1110
2
S 1110
2
=14
10
ng vi mu vng.
Tng t nh vy nu chn phng thc a nh ra mn hnh l AndPut vi mu nh
l xanh da tri (0001) , cn nn c mu (0100) th:
0001
2
and 0100
2
= 0000
2
ngha l nh s c mu en.
Thng thng chng ta nn dng "phng thc" l CopyPut ngha l mu nh s hin
ln mu nn. Cch hin mu ny cho ta ng mu sc nh c lu tr trong Bitmap.
Cc phng thc cn li mc d a c nh ra mn hnh nhng mu sc khng trung thc,
khng ng vi mu nh c lu tr trong Bitmap.
X dng phng thc XorPut chng ta c th cho hin nh v n nh mt cch d
dng. thy r hn chng ta xt v d sau:
Gi s nh Bitmap c lu trong mt bin con tr P, nh c mu trng v nn mn
hnh c mu . Th tc a nh ra mn hnh bt u t v tr tm mn hnh theo phng thc
XorPut:
PutImage(320,240,P^,XorPut);
Vi th tc trn nh a ra mn hnh s c mu xanh ngc (s hiu mu l 11) v
1111
2
xor 0100
2
= 1011
2
= 11
10
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 158
Nu by gi chng ta li a tip nh ra mn hnh ti cng v tr vi nh c th
nh trn mn hnh s b xo, ni ng hn l nh a ra ln th hai s c mu trng vi mu
nn.
Tr li v d trn, nh trn mn hnh ang c mu l 1011 cn nh trong Bitmap vn l
mu 1111, khi mu nh trn mn hnh s l
1111
2
xor 1011
2
= 0100
2
(ngha l mu trng mu nn)
T y chng ta c thut ton v hnh chuyn ng nh sau:
1- V hnh ti to x,y theo phng thc XorPut
2- Lu hnh trn mn hnh n miligiy
3- Xo hnh (bng cch lp li bc 1)
4- Thay i to x := x+dx; y:=y+dy;
5- Quay li bc 1
Ch : khi v hnh chuyn ng cn phi to cc cc im dng khi khng mun
chuyn ng c th ngt ngay chng trnh.
Di y l chng trnh v mt bu tri sao, s ngi sao trn bu tri l 100 trong
c 40 ngi sao nhp nhy, 20 ngi sao nhp nhy nhanh v 20 sao nhp nhy chm, cc ngi
sao c phn b ngu nhin. Trong chng trnh cn thit k mt a bay, a bay c 25 kch
thc khc nhau, mi hnh v a bay c ct vo mt bin con tr P, cc bin con tr ny
nm trong mt mng con tr. Cc a bay xut hin ngu nhin trn bu tri, chuyn ng nh
dn v bin mt, sau li hin ln ti mt to no . Chng trnh dng li khi bm mt
phm bt k.
Vi cc my tnh c dung lng b nh ln (128 hoc 256 Mb) chng ta c th tng
s hnh a bay ln 50 hnh khi a bay s chuyn ng mn mng hn.
V d 6.9
Program Bautroi_diabay;
Uses graph,crt;
Var
i,j,gd,gm:integer; a,x,y,xx,yy:word;
p: array[1..30] of pointer;
m,n :array[1..40] of word;
Procedure bautroi(a:word);
var i,j:word; m,n :array[1..40] of word; ch:char;
Begin
for j:= 1 to 5 do
Begin
for i:= 1 to a do
begin
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 159
x:=random(639); y:=random(479);
if i<=40 then (*chon 40 ngoi sao nhap nhay*)
begin
m[i]:=x; n[i]:=y; (*ghi toa do sao nhap nhay vao mang*)
end;
putpixel(x,y,random(15));(*hien sao *)
end;
end;
end;
Procedure nhapnhay;
var i,j:word; k:byte;
Begin
for i:= 1 to 40 do (*chon 40 ngoi sao nhap nhay*)
begin
m[i]:=random(639);
n[i]:=random(479); (*ghi toa do sao nhap nhay vao mang*)
end;
setcolor(random(15));
for j:=0 to 3 do
For i:=1 to 20 do (*20 sao nhap nhay nhanh*)
begin
circle(m[i+j],n[i+j],1);
delay(5);
end;
for j:=0 to 3 do
For i:=21 to 40 do (*20 sao nhap nhay cham*)
begin
setcolor(random(4));
circle(m[i+j],n[i+j],1);
delay(10);
end;
End;
procedure vedia;
Var xx,yy,x,y,x1,y1,x2,y2:integer; p: array[1..30] of pointer;
r,i,r1,r2,r3,r4,r5:word;
Begin
setcolor(14);setbkcolor(0);
i:=1; x:= 50; y:= 50; {diem dau tien dia bay xuat hien}
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 160
for r:= 25 downto 1 do {chn 25 a vi cc kch thc gim dn}
Begin
r1:=round(r/2);
r2:=round(r/3);
r3:=round(r/5);
r4:=2*r2;
r5:=round(r/10);
Ellipse(x,y,0,360,r,r1);
Ellipse(x,y-r3,194,346,r,r2);
Line(x+r2,y-r2,x+r4,y-r4);
circle(x+r4,y-r4,r5);
line(x-r2,y-r2,x-r4,y-r4);
circle(x-r4,y-r4,r5);
x1:=x-r;
y1:=y-r4-r5;
x2:=x+r;
y2:=y+r1;
Getmem(p[i], imagesize(x1,y1,x2,y2));(*xac dinh kich thuoc anh*)
getimage(x1,y1,x2,y2,p[i]^); (*cat anh vao bien con tro*)
putimage(x1,y1,p[i]^,xorput); (*xoa anh*)
i:=i+1;
End;
i:=1;
While not keypressed do
Begin (*hien dia bay voi cac kich thuoc khac nhau*)
putimage(x,y,p[i]^,xorput);
delay(100);
xx:=x; yy:=y;
x:=x+random(25);
y:=y+random(25);
putimage(xx,yy,p[i]^,xorput); (*xoa dia bay*)
for j:= 1 to 40 do (*tao su nhap nhay cua ngoi sao*)
begin
setcolor(random(15));
circle(m[j],n[j],1);
end;
i:=i+1;
if i>25 then {da hien het cac hinh dia bay}
begin
x:=random(500);
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 161
y:=random(400);
i:=1;
end;
end;
end;
BEGIN {than chuong trinh chinh}
gd:=detect; a:=100; {a la so ngoi sao tren bau troi}
initgraph(gd,gm,'C:\tp\bgi');
if graphresult<>grok then halt;
bautroi(a); {hien bau troi sao}
while not keypressed do
begin
nhapnhay; {thiet ke cac ngoi sao nhap nhay}
vedia; {goi dia bay}
end;
closegraph;
END.
7. th hm s
Gi thit hm y = f(x) xc nh v lin tc trn on [a,b], cn v th hm trong
mt khu vc no trn mn hnh. H to quen thuc m chng ta s dng l h xoy vi
gc to nm gc di bn tri, trc x hng sang phi, trc y hng ln trn.
Mn hnh my vi tnh tu theo kch thc v ch lm vic c th l ma trn im t
640x480 n 1024x720. Gc to ca mn hnh li gc trn bn tri v trc x hng theo
chiu t trn xung di. thun tin cho vic v v quan st th chng ta cn phi
chuyn i t to thc (nh trong ton hc) sang to mn hnh.
K hiu to thc ca min v th im gc di tri l xmin, ymin v gc trn
phi l xmax, ymax. To mn hnh gc trn tri l cmin , dmin, gc di phi l cmax,
dmax.
Mt im bt k trn th c to thc l x, y v to mn hnh l c, d. C th
chng minh rng:
c = m*(x - xmin) + cmin
d = n*(y - ymin) + dmin
xmax, ymax
xmin, ymin
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 162
Trong :
p = (cmax - cmin)/(xmax - xmin)
q = (dmin - dmax)/(ymax- ymin)
Hiu s (dmin - dmax) mang du m cho bit chiu bin thin ca trc thng ng
gia to mn hnh v to thc l ngc nhau.
Khi v th trn mn hnh chng ta s dng cc cng thc trn chuyn i to
tnh c t thc t sang to mn hnh.
Phng php v th l xc nh to tng im sau ni cc im vi nhau
bng cc on thng. th trn tru th s im phi tht nhiu, tuy nhin chng ta khng
th tng v hn s im. Gi s chia on [a,b] thnh n on nh, chng ta s c n+1 im
nh s t 0 n n. Khi chiu rng mi on s l h = (b - a)/n.
Honh ca mt im bt k trong to thc:
xi = a + h*i,
v tung tng ng s l f(xi).
iu cn ch khi chn cc to thc v to mn hnh l min trn mn hnh
phi bao kn min to thc. Mun vy chng ta chn:
xmin = a, xmax = b, ymin = min(yi), ymax = max(yi).
Vic kho st hm s f(x) tm max v min theo kiu ton hc l khng thc t trong
Pascal, do vy c th thay th vic tm min(yi) v max(yi) bng vic lu cc gi tr f(xi) vo
mt mng, sau tm cc tr trong mng.
chng trnh c th ng dng cho tt c cc hm s chng ta s xy dng mt
chng trnh con ly tn l HAM khai bo hm v tnh gi tr ca hm ti cc to xi. Mt
chng trnh con ly tn l TOADO tnh cc h s m, n, v tung cc im chia (tc l
gi tr ca hm f(x) ti cc to xi).
V d 6.10
Program vedothi;
Uses graph;
Const n=200;
cmin=3; dmin=3;cmax=200; dmax=140;{ve o goc phan tu thu nhat}
xmin=-5; xmax=5;
Var gd,gm:integer;
ymin,ymax,h,m,p,q:real;
y:Array[0..n] of real;
Function F(x:real) : real;
Begin
{f:=x*x;}
F:=x*x*x-2*x;
End;
Procedure Toado;
Var i:integer; xi,yi:real;
Begin
h:=(xmax-xmin)/n;
For i:= 0 to n do
Begin
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 163
xi:=xmin+i*h;
yi:=f(xi);
y[i]:=f(xi);
End;
ymin:=y[0]; ymax:=-ymin;
For i:=1 to n do
Begin
If ymin>y[i] then ymin:=y[i];
If ymax<y[i] then ymax:=y[i];
End;
p:= (cmax-cmin)/(xmax-xmin);
q:= (dmin-dmax)/(ymax-ymin);
End;
Procedure Ve;
Var i,c,d:integer; xi:real;
Begin
c:=cmin;
d:= round(q*(y[0]-ymin)+dmax);
Moveto(c,d);
For i:=1 to n do
Begin
xi:=xmin+i*h;
c:=Round(p*(xi-xmin)+cmin);
d:=Round(q*(y[i]-ymin)+dmax);
setcolor(red);
Lineto(c,d) {noi cac diem do thi}
End;
setcolor(14);
moveto(cmin,dmin); Lineto(cmax,dmin);{ve khung do thi}
moveto(cmax,dmin); Lineto(cmax,dmax);
moveto(cmax,dmax); Lineto(cmin,dmax);
moveto(cmin,dmax); Lineto(cmin,dmin);
d:=Round(q*(-ymin)+dmax);
if (d>=dmin) and (d<=dmax) then
Begin
line(cmin,d,cmax,d);{truc hoanh}
line(cmax,d,cmax-6,d-3); {dau mui ten}
line(cmax,d,cmax-6,d+3);
end;
c:=Round(p*(-xmin)+cmin);
if (c>=cmin) and (c<=cmax) then
begin
Line(c,dmin,c,dmax); {truc tung}
Line(c,dmin,c-3,dmin+6); {dau mui ten}
Line(c,dmin,c+3,dmin+6);
end; End;
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 164
BEGIN
gd:=detect;
Initgraph(gd,gm,'c:\tp70\bgi');
if graphresult<>grok then halt;
toado;
ve;
readln;
closegraph;
END.
Vi cc hm s cho theo tham s x = x(t), y = y(t), hoc cho trong to cc r = f()
phng php v cng tng t, chng ti xin dnh cho bn c nh l nhng bi tp ng
dng.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 165
Bi tp ng dng chng 6
1. Nhp v cho chy th chng trnh trong v d 6.9 sau thit k thm mt tn la.
Cho tn la phng t gc di bn phi mn hnh ln gc trn bn tri. Lung khi pha ui
di bng 3 ln chiu di tn la.
2. Cho cc k t ca dng ch "Happy Birth Day" hin ngu nhin v nhp nhy trn
mn hnh, tip cho chng chuyn ng an xen v thu dn v tm (320,240). Cui cng
cc k t li t tm chy ra trn mt qu o trn v sp xp thnh dng ch hon chnh.
3. Chn kch thc v thit k cc hnh n gin 1, 2, 3, 4 (xem hnh v), mi hnh ct
vo mt bin con tr. Cho hin cc hnh ti cc v tr tu sao cho hnh va chuyn ng va
t quay, cui cng cc hnh t ghp vi nhau thnh mt hnh vung gia mn hnh
C
C
C
C C
4. Lp chng trnh v th hm s cho di dng tham s
x = x(t), y =y(t)
5. Lp chng trnh v th hm s cho di dng to cc
r = f()
6. Cho hm y = f(x) xc nh v lin tc trong khong (a,b). Lp chng trnh nhp
dng mt hm c th. V th hm sau tnh tch phn xc nh
b
a
dx x f ) (
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 166
Ph lc 1
Bng m ASCII
Ngn ng Pascal s dng cc k t trong bng m ASCII xy dng nn cc t
kho, tn chun, cc hm, th tc hoc cc lnh c cu trc. Bng m ASCII gm 256 k t
c nh s t 0 n 255 v c phn thnh cc nhm k t sau:
1. Cc k t iu khin:
32 k t u tin(t 0 n 31) l cc k t iu khin, cc k t ny khng in c ra
mn hnh hoc my in, v d: k t Enter(m 13), k t ESC(m 27).
2. Cc k t c bit:
Cc k t c m ASCII trong khong 32-47, 58-64, 91-96, v 123-127 l cc k t c
bit nh du chm, du phy, k t @, k t Del,...
3. Nhm ch s:
Cc k t c m ASCII trong khong 48-57 l 10 ch s thp phn 0, 1, 2, 3, 4, 5, 6, 7,
8, 9
4. Nhm ch ci:
+ Cc k t c m ASCII trong khong 65-90 l cc ch ci in t A n Z
+ Cc k t c m ASCII trong khong 97-122 l cc ch ci nh t a n z
Cc ch ci thng c m ASCII ln hn 32 so vi ch in tng ng. V d m ASCII
ca a l 97 cn ca A l 65.
5. Nhm k t ho
Cc k t c m ASCII trong khong 128-255 l cc k t ho.
hin ton b cc k t ca bng m ln mn hnh (tr 32 k t u) chng ta c th
cho chy chng trnh sau:
Program Ma_ascii;
Var n : Byte;
Begin
For n:=32 to 255 do Write(chr(n),' ');
End.
Di y l bng m ASCII v hnh dng ca 128 k t u tin.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 167
Bng m ASCII
M K t M K t M K t
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
NUI
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
SPACE
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
!
#
$
%
&
(
)
*
+
,
-
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
a
b
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 168
M K t M K t M K t
99
100
101
102
103
104
105
106
107
108
c
d
e
f
g
h
i
j
k
l
109
110
111
112
113
114
115
116
117
118
m
n
o
p
q
r
s
t
u
v
119
120
121
122
123
124
125
126
127
w
x
y
z
{
|
}
~
DEL
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 169
Ph lc 2
Tm tt cc th tc v hm ca Turbo Pascal 7.0
Ton b cc th tc, hm v nh hng bin dch ca Pascal c th tm hiu trong
phn Help trn thc n chnh. Tng cng c 65 trang mn hnh, mi trang c chia i v
c 21 dng tc l c khong 2500 mc cn nghin cu. S lng ny ngay c vi nhng
ngi chuyn nghip cng khng th nm bt ht c. Trong ph lc ny chng ti ch chn
ra mt s nh nhng hm v th tc thng dng, khi cn bit ngha v cch dng ca mt
hm hay th tc no bn c ch cn vit tn hm hay th tc ln mn hnh son tho
Pascal sau bm t hp phm Ctrl - F1, Pascal s hin ln cc ch dn v v d minh ho.
1. Hm ABS
C php: Abs(r: Real) : Real; Abs(i: Integer) : Integer;
Cng dng: Cho gi tr tuyt i ca i s.
2. Hm ADDR
C php: Addr(Var Variable) : Pointer;
Cng dng: Cho a ch ca bin.
3. Th tc APPEND
C php: Append(VAR F : Text);
Cng dng: M tp vn bn ghi b sung v nh v con tr ti cui tp.
4. Th tc ARC(Graph Unit)
C php: Arc(x,y:integer;gd,gc,R:word);
Cng dng: V cung trn tm(x,y) bn knh R, t gc gd n gc gc.
5. Hm ARCTAN
C php: Arctan(r: Real) : Real;
Cng dng: Cho Arctangent ca i r.
6. Th tc ASSIGN
C php: Assign(var F : file; Name String);
Cng dng: Lin kt bin tp F vi tp c tn ch nh trong Name.
7. Th tc ASSIGNCRT(CRT unit)
C php: AssignCrt(Var F : text);
Cng dng: Thay vic gi kt qu ra mn hnh bng vic li a vo tp F.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 170
8. Th tc BAR(Graph unit)
C php: Bar(x1,y1,x2,y2:integer);
Cng dng: V vng ch nht gc trn tri (x1,y1) gc di phi (x2,y2).
9. Th tc BARD3(Graph Unit)
C php: Bar3d(x1,y1,x2,y2:integer; Depth:word; Top:Boolean);
Cng dng: V hnh hp 3 chiu c t mu. Chiu su l Depth Pixel (im nh). Nu
Top l True th hp c np, nu Top l False th hp khng np.
10. Th tc BLOCKREAD
C php: Blockread(Var F:file; Var B:type; N:Integer; <KQ:Word>);
Cng dng: c N mu tin t tp khng kiu F vo b nh (qua bin B). KQ cho bit s
mu tin thc s c c.
11. Th tc BLOCKWRITE
C php: Blockwrite(Var F:file; Var B:type; N:Integer);
Cng dng: Ghi N mu tin t vng m B ra tp khng kiu F.
12. Th tc CHDIR
C php: ChDir(S:String);
Cng dng: Chuyn i th mc hin thi sang th mc c ng dn S.
13. Hm CHR
C php: Chr(I: Integer);
Cng dng: Cho k t c m ASCII bng I.
14. Th tc CIRCLE (Graph Unit)
C php: Circle(x,y:Integer; R:word);
Cng dng: V ng trn tm(x,y) bn knh R.
15. Th tc CLEARDEVICE(Graph Unit)
C php: ClearDevice;
Cng dng: Xo mn hnh ho.
16. Th tc CLEARVIEWPORT(Graph Unit)
C php: Clearviewport;
Cng dng: Xa Viewport hin hnh.
17. Th tc CLOSE
C php: Close(Var F:File);
Cng dng: ng tp.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 171
18. Th tc CLOSEGRAPH(Graph Unit)
C php: CloseGraph;
Cng dng: Ngng ch ho, chuyn v ch Text. Th tc ny cng gii phng
vng nh do h ho s dng.
19. Th tc CLREOL(CRT Unit)
C php: Clreol;
Cng dng: Xa k t t v tr con tr (cursor) n cui dng hin hnh.
20. Th tc CLRSCR(CRT Unit)
C php: Clrscr;
Cng dng: Xo mn hnh trong ch vn bn v a con tr v v tr(1,1).
21. Hm CONCAT
C php: Concat(S1,S2,,Sn:String);
Cng dng: To chui mi bng cch ni cc chui S1,, Sn. Nu chiu di ca chui
kt qu ln hn 255 k t, Pascal s ct b cc k t t 256 tr i .
22. Hm COPY
C php: Copy(S:String; P,L:Integer):String;
Cng dng: Trch t chui S mt chui con di l k t bt u t k t th P.
23. Hm COS
C php: Cos(X:Real): Real;
Cng dng: Cho cosine ca gc X.
24. Hm CSEG
C php: Cseg: word;
Cng dng: Cho a ch ca on m chng trnh.
25. Th tc DEC
C php: Dec(Var X: SCalar; n:longInt);
Cng dng: Gim bin X i n. Nu khng c n th X s b gim i 1.
26. Th tc DELAY(CRT Unit)
C php: Delay(s:word);
Cng dng: Tm dng chng trnh trong s miligiy , s<=65535
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 172
27. Th tc DELETE
C php: Delet(S:String; P,L:integer);
Cng dng: Xo L k t t v tr P ra khi chui S
28. Th tc DELLINE(CRT Unit)
C php: Delline;
Cng dng: Xo dng cha con tr. Cc dng pha di s dn ln pha trn.
29. Th tc DETECTGRAPH(CRT Unit)
C php: DetectGraph(Var GD,GM:Integer);
Cng dng: Pht hin kiu mn hnh, mode ho v gn cho cc bin GD,GM.
30. Hm DISKFREE(DOS Unit)
C php: DiskFree(Drive:word):longint;
Cng dng: Cho bit s byte cn trng trn a ch nh trong Drive. Drive = 0 ng
vi ngm nh ,Drive = 1 cho A, 2 cho B.
31. Hm DISKSIZE(DOS Unit)
C php: Disksize(Drive:word):longint;
Cng dng: Cho bit dung lng a tnh theo byte. Tham s Drive xc nh a
(Drive = 1 cho A, 2 cho B, 0 cho ngm nh).
32. Th tc DISPOSE
C php: Dispose(P:Pointer);
Cng dng: Gii to vng heap cp pht cho bin con tr P. Dispose dng km vi
New.
33. Hm DOSEXITCODE(DOS Unit)
C php: Dosexitcode:word;
Cng dng: Cho m li ca tin trnh con (0 = chm dt bnh thng, 1 = chm dt do
CTRL C, 2 = chm dt do li thit b, 3 = chm dt do th tc KEEP).
34. Hm DOSVERSION(DOS Unit)
C php: Dosversion : word;
Cng dng: Cho s hiu phin bn (Version) ca h iu hnh. Phn chnh nm byte
cao, phn ph nm byte thp.
35. Th tc DRAWPOLY(Graph Unit)
C php: Drawpoly(n:word; Var Polypoints);
Cng dng: V a gic n nh. Mng Polypoints cha to cc nh ca a gic.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 173
36. Hm ENVCOUNT(DOS Unit)
C php: EnvCount:integer;
Cng dng: Cho s lng chui c nh ngha trong mi trng DOS
37. Hm EOF
C php: Eof(F:File): Boolean;
Cng dng: Cho gi tr TRUE nu con tr nh v cui tp , cc trng hp khc cho
kt qu FLASE.
38. Hm EOLN
C php: Eoln(F:File): Boolean;
Cng dng: Cho gi tr TRUE nu con tr nm cui dng(CR/LF) hoc cui tp, cho
FLASE trong trng hp tri li.
39. Th tc ERASE
C php: Erase(F:File);
Cng dng: Xo tp v cc thng tin v tp F khi a .
40. Th tc EXEC
C php: Exec(Path,Cmdline:String);
Cng dng: Thc hin tp c tn nm trong path vi cc tham bin dng lnh c nh
ngha trong Cmdline.
41. Th tc EXIT
C php: Exit;
Cng dng: Thot khi khi hin thi (khi c th l chng trnh con, cu trc lp) nu
exit nm trong chng trnh chnh th thot khi chng trnh).
42. Hm EXP
C php: EXP(X:Real):Real;
Cng dng: Lu tha e ca i s X.
43. Hm FEXPAND(DOS Unit)
C php: Fexpand(P:PathStr):PathStr;
Cng dng: Cho ng dn ca tp P . V d tp A1.pas hin lu trong th mc
c:\tp\bin. Trong phn khai bo chng trnh c lnh: Uses Dos; Khi lnh
Writeln(Fexpand(a1.pas) cho kt qu l C:\TP\BIN\A1.PAS
44. Hm FILEPOS
C php: FilePos(F:File):integer;
Cng dng: Cho s hiu bn ghi ca tp F m con tr ang tr ti.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 174
45. Hm FILESIZE
C php: FileSize(F:file):integer;
Cng dng: Cho s lng bn ghi ang c trong tp F.
46. Th tc FILLELIPES(Graph Unit)
C php: Fillelipse(x,y:integer; a,b:word);
Cng dng: V elipse c tm(x,y) vi hai bn trc l a, b.
47. Th tc FILLPOLY(Graph Unit)
C php: Fillpoly(n:word; Var Polypoints);
Cng dng: V a gic n nh. Mng Polypoints cha to cc nh ca a gic.
48. Th tc FLOODFILL(Graph Unit)
C php: FloodFill(x,y:integer; border:word);
Cng dng: T mu mt vng khp kn trn mn hnh ho nu to (x,y) nm bn
trong vng. Nu x,y nm ngoi vng th min bn ngoi c t.
49. Th tc FLUSH
C php: Flush(Var F:Text);
Cng dng: y ra a tt c kt qu ang nm trong vng m cho tp F.
50. Hm FRAC
C php: Frac(x:Real):Real;
Cng dng: Cho phn l thp phn ca i s x.
51. Th tc FREEMEM
C php: Freemem(Var F:pointer; I:Integer);
Cng dng: Gii phng I byte ca vng heap cp pht cho bin con tr F bng th
tc GetMem.
52. Th tc GETARCCOORDS(Graph Unit)
C php: Getarrccoords(Var ArcCoords : ArcCooType);
Cng dng: Cho bit cc to c lnh Arc hay Ellipse trc s dng. Cu
trc ca ArcCoordsType nh sau:
TYPE
ArcCoordstype = Recode
x, y, XStard, YStart, Xend, Yend:Integer;
End;
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 175
53. Th tc GETASPECTRATIO(Graph Unit)
C php:
GetAspectratio(Var Xasp, Yasp:word);
Cng dng: Cho phn gii ca mn hnh ho (cha trong cc bin Xasp v Yasp).
54. Hm GETBKCOLOR(Graph Unit)
C php: GetBKColor : word;
Cng dng: chn mu nn , c th thay th s hiu mu bi tn hng mu.
55. Hm GETCOLOR(Graph Unit)
C php: GetColor:word;
Cng dng: Chn mu nt v, c th thay th s hiu mu bi tn hng mu.
56. Th tc GETDATE(DOS Unit)
C php: GetDate(Var year, Month, Day, Dayofweek:word);
Cng dng: Cho ngy thng hin hnh ca h thng.
57. Th tc GETDEFAULTPALETTE(Graph Unit)
C php: Getdefaultpalette(Var Pal:PaletteType);
Cng dng: Cho trong Pal bng mu Ngm nh cho trnh iu khin ho hin hnh.
Cu trc ca kiu PaletteType nh sau:
TYPE
PaletteType = Record
Size:Byte;
Colors: Array[0..Maxcolor] of Shortint;
End;
58. Th tc GETDIR
C php: GetDir(d: Byte; Var S: String);
Cng dng: Cho bit th mc hin hnh trn a c ch nh trong d. Tn th mc
c cho trong S (nu d = 0 th GetDir s tm trong a ngm nh, cn nu d = 1, 2, 3 ng
vi cc a A, B, C).
59. Hm GETDRIVERNAME(Graph Unit)
C php: GetDriverName : String;
Cng dng: Cho tn ca trnh iu khin ho hin hnh.
60. Th tc GETFATTR(DOS Unit)
C php: GetFAttr(Var F; Var Attr: word);
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 176
Cng dng: Cho bit thuc tnh ca tp F. Trc khi gi th tc ny tp phi c gn
thuc tnh nhng khng m.
61. Th tc GETFILLPATTERN(Graph Unit)
C php: GetFillPattern(Var FP : FillpatternType);
Cng dng: Cho trong FP s hiu ca mu t hin hnh (mu nn ch c 8 gi tr). Cu
trc ca FillPartternType l:
TYPE
FillPartternType = Array[1..8] of Byte
62. Th tc GETFILLSETTINGS(Graph Unit)
C php: GetFillSettings(Var FS : FillSettingsType);
Cng dng: Cho trong FS mu v mu t hin hnh. Cu trc ca FillSettingsType l:
TYPE
FillSettingsType = Record
Pattern : word; Color : word;
End;
63. Th tc GETFTIME(DOS Unit)
C php: GetFTime(Var F; Var Time : Longint);
Cng dng: cho bit ngy thng v gi m tp F c ghi.
64. Hm GETGRAPHMODE(Graph Unit)
C php: GetGraphMode : Integer;
Cng dng: cho bit kiu ho hin hnh.
65. Th tc GETIMAGE(Graph Unit)
C php: Getimage(x1,y1,x2,y2 : integer; Var Bitmap);
Cng dng: lu tr phn hnh ch nht (x1,y1,x2,y2) trn mn hnh ho vo BitMap.
66. Th tc GETLINESETTINGS(Graph Unit)
C php: GetlineSettings(Var LST : LineSettingsType);
Cng dng: Cho trong LST gi tr hin hnh ca dng ng , mu, b dy. Cu trc
ca LineSettingsType nh sau:
TYPE
LineSettingsType = Record
LineStyle , Pattern , Thickness : word;
End;
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 177
67. Hm GetMaxcolor(Graph Unit)
C php: GetMaxcolor : word;
Cng dng: cho s hiu cao nht ca m mu trong bng mu hin hnh.
68. Hm GETMAXMODE(Graph Unit)
C php: GetMaxMode : word;
Cng dng: Hm cho gi tr l mt s kiu word, s ny ng vi kiu ho c phn
gii cao nht ca mn hnh ang dng. Hu ht cc mn hnh c kiu ho t 0 n
Getmaxmode.
69. Hm GETMAXX(Graph Unit)
C php: GetMaxX : integer;
Cng dng: cho honh ln nht ca mn hnh ho hin hnh.
70. Hm GETMAXY(Graph Unit)
C php: GetMaxY : Integer;
Cng dng: cho tung ln nht ca kiu mn hnh ho hin hnh.
71. Th tc GETMEM
C php: GetMem(Var P : Pointer; I: integer);
Cng dng: Cp pht cho bin con tr P mt vng nh c dung lng I byte.
72. Hm GETMODENAME(Graph Unit)
C php: GetModeName(ModeNumber : word) : String;
Cng dng: cho mt chui m t kiu ho ng vi ModeNumber.
73. Th tc GETMODERANGE(Graph Unit)
C php: GetModeRange(GraphDriver:Integer; Var Lomode, Himode:Integer);
Cng dng: Cho kiu phn gii thp nht(LoMode) v cao nht (HiMode) ca trnh iu
khin ho ng vi GraphDriver.
74. Th tc GETPALETTE(Graph Unit)
C php: GetPalette(Var P : PaletteType);
Cng dng: tr v gi tr l mt bin kiu bn ghi gm 2 trng trng size cho bit s
lng mu trong Palette, trng color cho bit m mu hin hnh. PaletteType l kiu Record
c nh ngha nh sau:
TYPE
PaleteType = Record
Size : Byte;
Colors : Array[0..15] of Shortint;
End;
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 178
75. Hm GETPALETTESIZE(Graph Unit)
C php: GetPaletteSize : word;
Cng dng: Cho s lng s mu ln nht m kiu mn hnh ho hin hnh c
th cung cp. V d mn hnh EGA hm ny cho kt qu l 16.
76. Hm GETPIXEL(Graph Unit)
C php: GetPixel(x,y:Integer);
Cng dng: cho mu ca im nh ti to (x,y).
77. Th tc GETTEXTSETTINGS(Graph Unit)
C php: GetTextSettings(Var TS : GettextsettingsType);
Cng dng: Cho bit cc gi tr nh dng vn bn hin hnh. Cc gi tr ny lu vo
bin TS kiu bn ghi. Cu trc ca bn ghi l:
TYPE
GetTextSettingsType = Record;
Font, Direction, Charsize, Horiz, Vert:word;
End;
78. Th tc GETTIME(DOS Unit)
C php: GetTime(Var Hour,Minute,Second,Sec100:word);
Cng dng: Cho gi h thng.
79. Hm GETX(Graph Unit)
C php: Getx : Integer;
Cng dng: Cho to honh cu con tr hin hnh.
80. Hm GETY(Graph Unit)
C php: Gety : Integer;
Cng dng: Cho tung cu con tr hin hnh.
81. Th tc GOTOXY(CRT Unit)
C php: Gotoxy(x,y: Integer);
Cng dng: a Curson (con tr) n to (x,y);
82. Hm GRAPHERRORMSG(Graph Unit)
C php: GraphErrorMsg(Code : Integer):String;
Cng dng: Cho thng bo li ho ng vi m li trong Code.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 179
83. Th tc GRAPHDEFAULTS(Graph Unit)
C php: GraphDefaults;
Cng dng: Tr v cc gi tr ngm nh cho nh dng ho.
84. Th tc GRAPHRESULT(Graph Unit)
C php: Graphresult : Integer;
Cng dng: Cho m li ca th tc ho sau cng.
85. Th tc HALT
C php: Halt;
Cng dng: Dng ngay chng trnh.
86. Hm HI
C php: Hi(I : Integer): Byte;
Cng dng: Cho Byte cao trong s nguyn I.
87. Th tc HIGHVIDEO(CRT Unit)
C php: HighVideo;
Cng dng: tng sng mn hnh .
88. Hm IMAGESIZE(Graph Unit)
C php: ImageSize(x1,y1,x2,y2 : Integer);
Cng dng: Cho dung lng tnh theo byte lu tr mt min nh Bitmap trong vng
ch nht x1,y1,x2,y2.
89. Th tc INC
C php: Inc(Var x [;n : longint]);
Cng dng: Tng gi tr x thm n (x phi thuc kiu nguyn). Nu b qua n th x s tng
ln 1. V d:
Var x:integer;
Begin
X:=15; Inc(x); {x s c gi tr l 16}
Inc(x,5); {x s c gi tr l 20}
End;
90. Th tc INITGRAPH(Graph Unit)
C php: InitGraph(Var GD, GM:Integer; Driverpath:string);
Cng dng: Khi to mi trng ho v a phn cng vo mode ho. GD l
trnh iu khin ho, GM l mode ho. Nu GD bng Detect, th tc t ng kim tra
phn cng v chn cc thng s ti u. Th tc s tm cc tp BGI trong ng dn
DriverPath.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 180
91. Hm INSERT
C php: Insert(Source:String; Var Target:String; Index:Integer);
Cng dng: Chn chui Source vo chui Target v tr Index.
92. Th tc InsLine(CRT Unit)
C php: InsLine;
Cng dng: chn mt dng trng vo v tr hin hnh ca con tr trn mn hnh.
93. Hm INT
C php: Int(x:Real): Real;
Cng dng: Cho phn nguyn ca x
94. Hm INTR(DOS Unit)
C php: Intr(Fune:Byte; Var Regs:Registers);
Cng dng: Gi ngt c s hiu Fune ca Bios vi cc thanh ghi c nh ngha qua
Regs.
95. Hm IORESULT(CRT Unit)
C php: IOResult : word;
Cng dng: Cho m li khi thc hin thao tc vo/ra. Nu IOResult khc khng th c
ngha l xy ra li.
96. Th tc KEEP(DOS Unit)
C php: Keep(Exitcode:word);
Cng dng: Kt thc chng trnh nhng vn gi n thng tr.
97. Hm KEYPRESSED(CRT Unit)
C php: Keypressed : Boolean;
Cng dng: Cho gi tr TRUE khi c mt phm c bm.
98. Hm LENGTH
C php: Leng(S:String):Integer;
Cng dng: Cho chiu di ca chui S
99. Th tc LINE(Graph Unit)
C php: Line(x1,y1,x2,y2:Integer);
Cng dng: V ng thng t (x1,y1) n (x2,y2).
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 181
100. Th tc LINEREL(Graph Unit)
C php: Linerel(Dx,Dy:Integer);
Cng dng: V ng thng t v tr hin ti ca con tr (to x,y) n im
(x+Dx,y+Dy).
101. LINETO(Graph Unit)
C php: Lineto(x,y:Integer);
Cng dng: V ng thng t v tr hin ti ca con tr n im(x,y).
102. Hm LN
C php: Ln(Var x:Real):Real;
Cng dng: Cho logarit t nhin ca x.
103. Th tc LOWVIDEO(CRT Unit)
C php: LowVideo;
Cng dng: gim sng mn hnh.
104. Th tc MARK
C php: Mark(P:pointer);
Cng dng: nh du a ch nh heap trong con tr P
105. Hm MAXAVAIL
C php: MaxAvail : LongInt;
Cng dng: Cho kch thc khi ln nht ca vng nh cha cp pht ca Heap.
106. Hm MEMAVAIL
C php: MemAvail : ;
Cng dng: cho tng dung lng ca cc khi nh t do trong Heap.
107. Th tc MKDIR
C php: MKDir(S:String);
Cng dng: To th mc mi vi tn ch nh trong S.
108. Th tc MOVE
C php: Move(Var V1,V2,n:Integer);
Cng dng: chp n byte t bin V1 n bin V2.
109. Th tc MOVEREL(Graph Unit)
C php: MoveRel(Dx,Dy:Integer);
Cng dng: chuyn con tr t to hin thi (x,y) n to x+dx, y+dy.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 182
110. Th tc MOVETO
C php: MoveTo(x,y:Integer);
Cng dng: nh v con tr ti to (x,y).
111. Th tc MSDOS(DOS Unit)
C php: MSDOS(Var Regs:Registers);
Cng dng: gi phc v DOS vi tp gi tr ca cc thanh ghi trong Regs.
112. Th tc NEW
C php: New(Var P:Pointer);
Cng dng: cp pht vng heap cho con tr P.
113. Th tc NORMVIDEO(CRT Unit)
C php: NormVideo;
Cng dng: khi phc thuc tnh mn hnh ngm nh.
114. Th tc NOSOUND(CRT Unit)
C php: NoSound;
Cng dng: tt m thanh pht ra loa.
115. Hm ODD
C php: Odd(I:Integer): Boolean;
Cng dng: Cho True khi I l s l v False khi I l s chn
116. Hm OFS
C php: Ofs(<Variable, Procedure, or Function>):Integer;
Cng dng: Cho Offset a ch vng nh ca bin, th tc hay hm.
117. Hm ORD
C php: Ord(S:Scalar):Integer;
Cng dng: Cho s th t ca S (c kiu v hng m c).
118. Th tc OUTTEXT(Graph Unit)
C php: Outtext(Textstring):String;
Cng dng: vit chui Textstring trong ch ho. Cn chn trc kiu ch, kch
thc, mu sc v hng vit.
119. Th tc OUTTEXTXY(Graph Unit)
C php: OuttextXY(x,y:Integer; TextString:String);
Cng dng: Hin th chui TextString v tr(x,y). Cn chn trc kiu ch, kch
thc, mu sc v hng vit.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 183
120. Th tc OVRCLEARBUF(Overlay Unit)
C php: OvrClearBuf;
Cng dng: xo sch vng m Overlay.
121. Hm OVRGETBUF(Overlay Unit)
C php: OvrGetBuf : LongInt;
Cng dng: Cho kch thc ca vng m Overlay.
122. Th tc OVRINIT(Overlay Unit)
C php: OVRInit(FileName:String);
Cng dng: Khi to qu trnh qun l Overlay v m tp Overlay c ch nh trong
FileName. Th tc ny cn c gi ti trc bt c th tc Overlay no.
123. Th tc PACKTIME(DOS Unit)
C php: PackTime(Var DT: DateTime; Var Time:Longint);
Cng dng: Chuyn ho thng tin ngy, thng v gi trong DT (kiu bn ghi) thnh s
4 Byte v gi vo bin Time .
124. Th tc OVRINITEMS(Overlay Unit)
C php: OvrInitEMS(fileName:String);
Cng dng: Np tp Overlay vo vng nh m rng (EMS) nu cn .
125. Th tc OVRSETBUF(Overlay Unit)
C php: OvrsetBuf(BufSize:Integer);
Cng dng: Cp pht Bufsize byte cho vng m Overlay. BufSize phi nh hn vng
m Overlay ngm nh.
126. Hm PARAMSTR
C php: ParamStr(I:word):String;
Cng dng: Cho tham s dng lnh th I. Paramstr(0) cho ng dn tn tp chng
trnh hin hnh (c:\tp\bin\turbo.exe)
127. Hm PI
C php: Pi:Real;
Cng dng: Cho hng s Pi
128. Th tc PIESLICE(Graph Unit)
C php: Pieslice(x,y:Integer; a1,a2,R:word);
Cng dng: V hnh qut tm(x,y) bn knh R, t gc a1 n gc a2.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 184
129. Hm POS
C php: Pos(SubS,S:String):Integer;
Cng dng: Cho v tr bt u ca chui con SubS trong S. Nu SubS khng nm trong
S th hm POS cho gi tr 0.
130. Hm PRED
C php: Pred(S:Scalar):Integer;
Cng dng: Cho phn t pha trc phn t S (S phi thuc kiu v hng m c).
Pred(5) = 4.
131 Th tc PUTIMAGE(Graph Unit)
C php: PutImage(x,y:Integer; Var BitMap; BitBlt:word);
Cng dng: Hin nh cha trong BitMap bt u ti im (x,y). BitBlt ch nh phng
thc hin nh v c th nhn gi tr kiu s hoc hng k t nh sau:
COPYPUT = 0; XORPUT = 1; ORPUT = 2; ANDPUT = 3; NOTPUT = 4;
132. Th tc PUTPIXEL(Graph Unit)
C php: PutPixel(x,y:Integer; Color:word);
Cng dng: V mt im nh (Pixel) ti to (x,y) theo mu ch nh bi color.
133. Hm RANDOM
C php: Random(I:word):word;
Cng dng: Cho mt s ngu nhin k vi 0<=k<I.
134. Hm RAMDOMIZE
C php: Randomize;
Cng dng: Khi to gi tr ban u ca b to s ngu nhin trong ng h h thng.
Gi tr ny c s dng khi c li gi hm Random. Nu khng c th tc Randomize th
gi tr m hm Random to ra s ging nhau mi khi chng trnh c chy.
135. Th tc READ v READLN
C php: Read([Var F : File,] Parameters);
Readln([Var F : File,] Parameters);
Cng dng: Nhp s liu t thit b chun (thng l bn phm) vo bin Parameters
hay t tp c ch nh trong F. Readln ch dng vi tp vn bn, sau khi nhp s liu
Readln di chuyn con tr xung dng k tip.
136. Hm READKEY(CRT Unit)
C php: Readkey : Char;
Cng dng: c mt m phm vo mt bin. Vi cc phm m phm gm hai s, s u
l 0 th cn gi li hm Readkey mt ln na ly gi tr th hai ca m phm.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 185
137. Th tc RECTANGLE
C php: Rectangle(x1,y1,x2,y2:Integer);
Cng dng: V hnh ch nht c gc trn bn tri to (x1,y1) v c gc di bn
phi to (x2,y2).
138. Th tc RELEASE
C php: Release(Var P:Pointer);
Cng dng: Gii to vng nh heap cp pht k t ln ghi (Mark) gn nht trc .
P ct gi a ch ca nh heap.
139. Th tc RENAME
C php: Rename( Var F:File; S:String);
Cng dng: i tn tp F thnh S.
140. Th tc RESET
C php: Reset(Var F:File [;I:Integer]);
Cng dng: M tp F c. Nu tp khng kiu, ta c th ch nh kch thc mu
tin trong I.
141. Th tc RESTORECRTMODE(Graph Unit)
C php: RestoreCRTmode;
Cng dng: thot khi kiu mn hnh ho tr v kiu vn bn.
142. Th tc REWRITE
C php: Rewrite(Var F:File [;I:Integer]);
Cng dng: Chun b tp ghi. Nu tp cha tn ti Pascal s to ra tp mi vi tn
tp ghi trong F . Nu c mt tp trn a th tp c s b xo v mt tp rng c th ch.
Vi tp khng kiu ta c th nh chiu di ca recor (bn ghi) trong I.
143. Th tc RMDIR(DOS Unit)
C php: RmDir(S:String);
Cng dng: xo th mc c c tn ch nh trong S
144. Hm ROUND
C php: Round(x;Real):LongInt;
Cng dng: Lm trn x.
145. Th tc RUNERROR
C php: RunError [(ErrorCode:word)];
Cng dng: Dng chng trnh, pht sinh li Run-Time vi s hiu li Errorcode.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 186
146. Th tc SECTOR(Graph Unit)
C php: Sector(x,y:Integer;g1,g2,a,b:word);
Cng dng: V v t y cung elip c tm (x,y), bn knh ngang l a, bn knh dc l b,
bt u t gc g1 n gc g2.
147. Th tc SEEK
C php: Seek(Var F:Flie; P:Integer);
Cng dng: Di chuyn con tr tp n u ca bn ghi th P trong tp tin F.
148. Th tc SEEKEOF
C php: SeekEof(Var F:File):Boolean;
Cng dng: kim tra tnh trng kt thc tp (ch dng cho tp vn bn), nu kt thc tp
kt qu nhn c l True, ngc li l False (xem thm eof).
149. Hm SEEKEOLN
C php: SeekEoln(Var F:File):Boolean;
Cng dng: kim tra tnh trng kt thc dng, SeekEoln tng t nh Eoln ch c khc
bit l n nhy qua khong trng, tab trc khi kim tra du kt thc ht dng.
150. Hm SEG
C php: Seg(Var Variable):word;
Seg(<Procedure hoc Function>):word;
Cng dng: Cho a ch on ca bin, hm hay th tc.
151. Th tc SETALLPALETTE(Graph Unit)
C php: SetAllPalette(Var Palette);
Cng dng: Thay i bng mu theo thit k cho trong Palette.
152. Th tc SETBKCOLOR(Graph Unit)
C php: SetBKcolor(Color:word);
Cng dng: chn mu nn ngm nh cho mn hnh ho.
153. Th tc SETCBREAK(DOS Unit)
C php: SetCBreak(Break: Boolean);
Cng dng: thit lp trng thi cho t hp CTRL BREAK. Khi Break = True, h
thng s ngng chng trnh mi khi Ctrl-Break c bm. Nu Break=False vic kim tra
ch tin hnh khi vo ra (I/O) vi bn phm hoc my in.
154. Th tc SETCOLOR(Graph Unit)
C php: Setcolor(color:word);
Cng dng: chn mu cho nt v theo s hiu mu color .
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 187
155. Th tc SETDATE(DOS Unit)
C php: Setdate(Year, Month, Day:word);
Cng dng: Cp nht ng h h thng theo ngy thng nm truyn qua tham bin.
156. Th tc SETFILLPATTERN(Graph Unit)
C php: SetFillPattern(Patter:FillPatterType;color:word);
Cng dng: Thit lp mu t hnh v (do ngi d dng nh ngha t chn)
157. Th tc SETFILLSTYLE(Graph Unit)
C php: SetFillStyle(Pattern:word;color:word);
Cng dng: n nh mu t v mu t.
158. Th tc SETGRAPHMODE(Graph Unit)
C php: SetGraphMode(Mode:Integer);
Cng dng: n nh kiu ho hin hnh.
159. Th tc SETLINESTYPE(Graph Unit)
C php: SetLineStyte(lineStyle:word; Pattern:word: thickness:word);
Cng dng: n nh dng, mu v b dy ca ng v.
160. Th tc SETPALETTE(Graph Unit)
C php: SetPalette(m1:word; m2:shortInt);
Cng dng: i mu th m1 trong bng mu thnh mu m2. (0<=m1<=15)
Setpalette(0,red); i mu th nht trong bng mu thnh mu
161. Th tc SETRGBPALETTE(Graph Unit)
C php: SetRGBPalette(m1,RedValue, Greenvalue,BlueValue:Integer);
Cng dng: thay i cc thnh phn t hp mu, mu m1 trong bng mu c thay
bng t hp mu: ,xanh,lc. Th tc ny ch dng vi cc thit b IBM 8514 v VGA
162. Th tc SETTEXTJUSTIFY(Graph Unit)
C php: Settextjustify(Horiz, Vert:word);
Cng dng: Xc nh v tr hin th vn bn trong mn hnh ho.
163. Th tc SETTEXTSTYLE(Graph Unit)
C php: SetTextStyle(Font:word; direction:word; Charsize:word);
Cng dng: Thit lp Font ch, chiu hin th v kch c ch.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 188
164. Th tc SETTIME(DOS Unit)
C php: SetTime(H, M, S, S100:word);
Cng dng: t li gi h thng bao gm gi (H), pht (M), giy (S), phn trm giy
(S100).
165. Th tc SETVIEWPORT(Graph Unit)
C php: SetviewPort(x1,y1,x2,y2:Integer; Clip: Boolean;)
Cng dng: Chn hnh ch nht(x1,y1,x2,y2) lm ca s lm vic. Khi Clip = TRUE
cho php v ra ngoi ca ca s.
166. Th tc SETWRITEMODE(Graph Unit)
C php: SetWriteMode(WriteMode;Integer);
Cng dng: Chn mt trong 2 kiu ng: Copyput(0) hay Xorput (1).
167. Hm SIN
C php: Sin(x:Real):Real;
Cng dng: Cho Sin(x)
168. Hm SIZEOF
C php: Sizeof(Var Variable):word;
Cng dng: Cho kch thc(s byte) ca bin hay kiu d liu.
169. Th tc SOUND(Graph Unit)
C php: Sound(Freq:word);
Cng dng: Pht m thanh c tn s Freg.
170. Hm SQR
C php: Sqr(x:Real):Real; Sqr(x:Integer):Integer;
Cng dng: Cho bnh phng ca x.
171. Hm SQRT
C php: Sqrt(x:Real):Real;
Cng dng: Cho cn bc hai ca x
172. Th tc STR
C php: Str(I:Integer; [:length;] Var S:String);
Str(x:Real; [:length; [:Decimals;]] Var S:String);
Cng dng: i s nguyn hay thc ra chui v ct trong S; length l di ca
chui(s k t), Decimals l ch s sau du chm thp phn.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 189
173. Hm SUCC
C php: Suuc(S:Scalar):Integer;
Cng dng: Cho gi tr tip sau S.
174. Th tc TEXTBACKGROUND(CRT Unit)
C php: TextbackGround(color:Byte);
Cng dng: Thay i mu nn ch vit bng mu ch ra trong color.
175. Th tc TEXTCOLOR(CRT Unit)
C php: TextColor(Color: Byte)
Cng dng: Thay i mu k t bng mu ch ra trong color.
176. Hm TEXTHEIGHT(Graph Unit)
C php: TextHeight(TextString:String):word;
Cng dng: Cho chiu cao(s pixel) ca TextString.
177. Th tc TEXTMODE(CRT Unit)
C php: TextMode(Mode:Word);
Cng dng: Chn Mode vn bn.
178. Hm TEXTWIDTH(Graph Unit)
C php: TextWidth(TextString: String):Word;
Cng dng: Cho chiu rng(s pixel) ca chui TexString.
179. Hm TRUNC
C php: Trunc(x:Real):integer;
Cng dng: Cho phn nguyn ca x.
180. Th tc TRUNCATE
C php: Truncate(Var F);
Cng dng: Ct d liu khi tp k t v tr hin thi ca con tr.
181. Th tc UNPACKTIME(DOS Unit)
C php: UnPackTime(Time:Longint; Var DT:DateTime);
Cng dng: Gii m bin Time (l mt s kiu Longint v cha trong n cc i lng
ngy, gi), tr kt qu v DT. Cu trc ca DateTime l:
TYPE
DateTime = Record
Year,Month,Day,Hour,Min,Sec:word;
End;
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 190
182. Hm UPCASE
C php: Upcase(S:Char):Char;
Cng dng: Chuyn cc k t trong S thnh ch in.
183. Th tc VAL
C php: Val(S:String;Var R:Real;Var Code:Integer);
Val(S:String;Var I:Real;Var Code:Integer);
Cng dng: i chui S thnh s (R hoc I). Nu i chui thnh cng bin Code nhn
gi tr 0. Nu khng i c, code cha s nguyn cho bit v tr ca k t trong chui S
gy li.
184. Hm WHEREX(CRT Unit)
C php: WhereX:Byte;
Cng dng: Cho bit ct ang cha Con tr trong c s hin hnh.
185. Hm WHEREY(CRT Unit)
C php: WhereY:Byte;
Cng dng: Cho bit dng ang cha Con trot trong ca s hin hnh.
186. Th tc WINDOW(CRT Unit)
C php: Window(x1,y1,x2,y2:Byte);
Cng dng: nh ngha mt ca s gc tri trn (x1,y1) v gc phi di l (x2,y2).
187. Th tc WRITE v WRITELN
C php: Write(Var F:File, Parameters); Writeln(Var F:File, Parameters);
Cng dng: Write s ghi gi tr cc tham s ln mn hnh hoc ln tp. Writeln lm vic
ging Write nhng ghi thm du hiu ht dng(CR/LF) vo cui .
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 191
Ph lc 3
nh hng bin dch (Compiler Directive)
nh hng bin dch trong ngn ng Pascal bao gm 52 kiu v c quy nh vit
nh sau:
a. V tr
Cc nh hng bin dch c t ti nhng v tr thch hp trong chng trnh tu
thuc vo cc yu cu c th ca bi ton.
b. Tt c nh hng bin dch u t trong cp k t " { " v " } "
Mi nh hng u c ga tr ngm nh (by default) v trnh bin dch s s dng gi
tr ny nu trong chng trnh khng c nhng nh hng bin dch khc. tm hiu ni
dung ca ton b cc nh hng bin dch trong Pascal xin m Help t trang mn hnh th 1
n trang mn hnh th 2. Di y l mt s nh hng bin dch thng dng:
1. Ghp tp
C php:{$I filename}
nh hng cho trnh bin dch gp tn tp ch nh bi FileName vo lc dch. Kt
qu l tp c chn vo vn bn cn dch ngay pha sau dn hng ny. Phn m rng ngm
nh cho filename l .PAS. Nu trong filename khng ch nh th mc, th trnh bin dch s
tm kim tp trong th mc hin hnh.
2. Kim tra vo ra (Input/Output)
C php:{$I+} hoc {$I-}
Ngm nh: {$I-}
Khng t ng sinh m kim tra kt qu lnh khi c lnh gi n cc th tc vo ra.
Khi dng {$I-}, chng trnh s khng dng ngay c khi c li vo ra (m li khc 0). Mun
kim tra li cn dng hm IOResult . Nu th tc vo ra c li v nh hng l {$I+} th
chng trnh s chm dt v a ra thng bo li.
3. Link Object File
C php: {$L filename}
Yu cu trnh bin dch lin kt tp ch nh bi Filename vi chng trnh hay unit
cn dch. Phn m rng ngm nh ca filename l .OBJ. Nu trong filename khng ch r
ng dn th trnh bin dch s tm tp trong th mc hin hnh.
4. X l s(Numeric Processing)
C php:{$N+} hoc {$N-}
Ngm nh: {$N-}
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 192
nh hng vic pht sinh m du phy ng vi s thc trong Pascal. Vi {$N-}
vic sinh m thc hin tnh ton du phy ng do cc chng trnh trong th vin Run-
Time m nhn. Vi {$N+} s dng b x l s 8087 sinh m.
5. Overlay code generation.
C php: {$O+} hoc {$O-}
Ngm nh: {$O-}
Khi chn {$O+} s cho php unit l Overlay. Trnh to m cc x l c bit
truyn tham s cho cc th tc hay hm c Overlay.
6. Kim tra phm vi (Range)
C php: {$R+} hoc {$R-}
Ngm nh: {$R-} nh hng ny cho khng cho pht sinh m kim tra phm vi.
Vi {$R+} tt c biu thc ch s mng v chui u c kim tra xem c nm trong phm
vi nh ngha hay khng. Tt c cc php gn vo bin kiu v hng v on con cng
u c kim tra phm vi. Nu c li, chng trnh kt thc v hin thng bo li Run-time.
nh hng ny s lm cho chng trnh c kch thc ln v chy chm, ch nn dng khi
chy th chng trnh . Sau khi chng trnh chy tt th nn b.
7. Kim tra trn Stack
C php: {$S+} hoc {$S-}
Ngm nh: {$S-}
nh hng ny khng ch vic sinh m kim tra trn Stack.
Vi {$S+} trnh bin dch sinh m phn u ca tng th tc hay hm kim tra
c chiu di Stack cho cc bin cc b v vng nh khc. Khi khng chiu di Stack th
lnh gi n th tc hay hm c bin dch vi {$S+} s chm dt chng trnh v xut
hin thng bo li Run-time.
Vi {$S-} lnh gi nh th s a n ngng h thng.
8. {$U-} hoc {$U+}
Ngm nh {$U-}
nh hng ny khng cho php dng t hp phm Ctrl - C ngt chng trnh. Vi
{$U+} ngi s dng c th dng chng trnh bt k lc no bng cch bm t hp Ctrl - C.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 193
Ph lc 4
Thng bo li
tham kho cc thng bo li, t Text Editor (mn hnh son tho chng trnh) hy
g t Error ri bm Ctrl-F1, chng ta s truy nhp vo mc Error - Message. Trong mc ny
Pascal trnh by ba nhm li:
Compile error messages gm cc li t s 1 n s 99 (lin tc)
Compile error messages gm cc li t s 100 n s 170 (lin tc)
Run - Time error messages gm cc li t s 1 n s 216 (khng lin tc)
Cc li Run-time v Compile c mt s li cng s hiu nhng ngha khc nhau. Do
s lng li kh nhiu nn chng ti b bt mt s li t gp.
1. Li bin dch
S
hiu
li
Thng bo
Gii thch ngha
1 Out of memory B nh khng khi bin dch
2 Identifler
expected
Mt tn c dng khng ph hp. C th bn ang khai bo li
mt danh t ring, t kho ca Turbo Pascal.
3 Unknown
identifier
Tn (hoc bin) cha c khai bo, hoc khng c bit n
trong khi hin thi. C th l mt tn thiu hoc nhm mt
vi k t so vi tn c khai bo.
4 Duplicate
identifier
S dng hai tn trng nhau trong cng mt khi. C th l tn
chng trnh trng tn bin.
5 Syntax error Li chnh t trong vn bn ngun. C th l do b qun du nhy
trn abcde.
6 Error in real
constant
Li khi biu din cc s thc, cch vit sai c th l: .98 (khng
c ch s 0 u).
7 Error in integer
constant
Li biu din s nguyn
8 String constant Thng l do qun nh du kt thc hoc m u mt xu k t,
hoc do v tr du phy v du nhy khng ng.
10 Unexpected end
of file
Kt thc file khng hp l
* File ngun kt thc trc lnh end ca phn lnh chnh, hoc
lnh begin v end khng i cp vi nhau.
* Phn ch thch ng m khng ng
11 Line too long Dng lnh di qu 127 k t
12 Type identifier
expected
Bin (tn) khng ph hp v kiu m ng ra n phi c.
13 Too many open
files
M qu nhiu file hoc trong file CONFIG.SYS khng c khai
bo FILES=n (n l s lng File s m) hoc gi tr n qu nh,
hy tng gi tr ny ln khong t 15 n 20.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 194
14 Invalid file name Tn file khng ng hoc ch nh mt ng dn khng tn ti.
15 File not found Khng tm thy file trong th mc hin hnh hoc trong cc
ng dn ch nh tm kim tng loi file.
16 Disk full a y, khng cn ch. Hy xo b mt vi file, nu l a
mm hay dng a khc.
17 Invalid compiler
directive
K t nh hng dch khng ng hoc cha c bit, mt
trong cc tham s dn hng c th li.
18 Too many files Qu nhiu file (ca chng trnh hay unit ) c a vo dch.
Cn gim s File i.
19 Undefined type
in pointer
definition
Mt kiu c xem nh l con tr tr n kiu c khai bo
trc, song n cha h c khai bo.
20 Variable
identifier
expecvted
Bin (tn) khng th hin mt bin m ng ra n phi c.
21 Error in type Li v kiu d liu
22 Structure too
large
C ln nht cho php ca mt kiu cu trc l 65535 byte.
23 Set base type out
of range
Kiu c bn ca tp hp phi l mt tp con 0..255 hoc l kiu
lit k c khng nhiu hn 256 gi tr.
24 File components
may not be files
or object
Cu trc file of file hoc file of object l khng cho php. Kiu
File v kiu cu trc khng th cha mt kiu object hoc kiu
file.
25 Invalid String
leng
di ca mt chui phi trong khong 1 - 255
26 Type mismatch Li ny xy ra trong cc trng hp sau:
* Gi tr gn cho bin khng tng thch v kiu.
* Tham s thc s v tham s hnh thc khng tng thch v
kiu
* Kiu ca biu thc khng tng thch vi kiu ch s khi lm
ch s mng.
* Khng tng thch gia cc kiu ca cc ton hng trong mt
biu thc.
27 Invalid subrange
base type
Kiu c s ca kiu khong con khng hp l.
28 Lower bound
greater than
upper bound
Khai bo kiu min con cn di cao hn cn trn, hoc gi tr
u v cui trong vng For khng ph hp
29 Ordinal type
expected
Kiu thc, kiu chui, kiu cu trc, kiu con tr khng c cho
php y. Cc kiu ny khng phi l cc kiu m c.
30 Integer constant
expected
Khng vit ng hng s nguyn.
31 Constant
expected
Hng vit khng ng.
32 Integer or real
constant expected
Vit khng ng hng thc hoc hng nguyn.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 195
33 Pointer type
identifier
expected
Bin (tn) khng th hin mt kiu con tr m ng ra n c.
34 Invalid function
result type
Kiu kt qu ca hm khng hp l. Cc kiu kt qu ca hm tr
v hp l l cc kiu n gin, kiu chui v kiu con tr.
35 Label identifier
expected
Tn nhn khng ng.
36 BEGIN expected Thiu t kho Begin hoc
37 END expected Thiu t kho End
38 Integer
expression
expected
Biu thc kiu nguyn khng ng.
39 Ordinal
expression
expected
Biu thc pha trc phi l biu thc m c.
40 Boolean
expression
expected
Biu thc pha trc phi l kiu logic.
41 Operand types
do not match
operator
Ton t s dng trong cc biu thc khng ph hp vi ton
hng, v d A mod 2
42 Error in
expression
Li trong mt thao tc. V d qun vit mt ton t gia hai ton
hng.
43 Legal
assignment
* Khng th gn gi tr cho file v bin khng kiu.
* Tn hm ch c th gn gi tr trong thn ca hm.
44 File identifier
expected
Bin (tn) khng th hin l mt trong bn ghi tng ng hoc
trong bin object.
45 Object file to
large
Pascal khng th lin kt vi cc file .OBJ ln hn 64k.
46 Undefined
external
Th tc hoc hm external khng t nh ngha PUBLIC trong
file object. C th bn ch ra tt c cc file object trong dn
hng bin dich {$L filename}, cn kim tra chnh t trong tn
th tc hay hm trong file ASM.
47 Invallid object
file record
File .OBJ cha mt bn ghi khng hp l. Cn m bo rng file
ny tht s phi l mt file .OBJ.
48 Code segment too
large
B nh dnh cho chng trnh hay unit l 65520 byte (64KB).
Nu chng trnh ln hy chuyn vi th tc hay hm vo trong
mt unit. Nu bn ang bin dch unit hy chia nh n thnh mt
hay nhiu unit .
49 Data segment too
large
Kch thc to nht ca mt on d liu chng trnh l 65520
byte (64KB), k c d liu c khai bo trong cc unit c
dng.
50 Do expected Thiu t kho DO hoc khng ng ch.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 196
51 Invalid PUBLIC
defination
nh ngha PUBLIC khng ng.
* Hai hay nhiu ch dn PUBLIC trong ngn ng assemebly nh
ngha cng mt tn.
* File .OBJ nh ngha k hiu PUBLIC khng thuc v on
CODE
52 Invalid EXTRN
definition
nh ngha EXTRN khng ng.
* Bin (tn) c chuyn ti hng dn EXTRN trong ngn ng
asembly. Nhng n khng c khai bo trong chng trnh
Pascal hay unit, khng c c phn giao din ca bt c unit c
dng no.
53 Too many
EXTRN
definitions
Turbo Pascal khng th qun l file .OBJ vi nhiu hn 256 khai
bo EXTRN.
54 OF expected Thiu t kho OF hoc t OF khng xut hin ni n cn c.
55 INTERFACE
expected
Thiu danh t ring Interface.
56 Invalid
relocatable
reference
Ch dn ti nh v b sai
57 Then expected Thiu t THEN hoc n c t khng ng ch
58 To or Downto
expected
T kho To hoc Downto t khng ng v tr.
59 Undefined
forward
* Th tc hoc hm c khai bo trong phn interface ca mt
unit, nhng cha nh ngha trong phn implementation.
* Th tc hoc hm c khai bo vi t kho forwad nhng
nh ngha ca n khng c.
61 Invalid typecast Kch thc ca bin v kiu nhn khc nhau, hoc mt biu
thc c a vo ni ch cho php bin c mt.
62 Division by zero Php chia cho s 0.
63 Invalid file type Kiu file khng ng. V d: readln khng th dng vi file c
kiu hoc seek vi file text.
64 Cannot Read and
Write variables
of this type
Kiu bin khng th p dng trong cc lnh Read hoc Write
65 Pointer variable
expected
Cha khai bo bin kiu con tr.
66 String variable
expected
Cha khai bo bin kiu chui.
67 String expression
expected
Biu thc phi thuc kiu chui.
68 Circular unit
reference
Li v cc Unit tham chiu vng trn (a gi ti b, b gi ti c, c
gi ti a)
69 Unit name
mismatch
Tn ca unit tm thy trong file .TPU khng ph hp vi tn ch
ra trong mnh uses.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 197
70 Unit version
mismatch
Mt hoc nhiu unit c dng bi unit ny c thay i t
khi unit c dch. Dng Compliler/Make or Compile/Built trong
IDE v la chn/M hoc /B trong trnh bin dch theo dng lnh
t ng dch li cc unit cn thit.
71 Internal stack
overflow
Trn stack , dung lng hin c ca Stack khng np
nhng g chng trnh yu cu
72 Unit file format
error
File n v chng trnh .TPU b li. C th file c to nn bi
mt version c ca pascal, cn to li file mi bng cch dch li
file ngun.
73 IMPLEMENTA
TION expected
T kho impementation khng xut hin ni cn. C th l do
gp phn imlementation ca mt th tc, mt hm hoc mt hnh
vi vo trong phn interface ca unit.
74 Constan and case
types do not
match
Kiu ca bin chn trong cu trc case khng tng thch vi gi
tr ca cc nhn
75 Record or object
variable expected
Bin phi l kiu d liu bn ghi hoc kiu object.
76 Constant out of
range
Li c th l:
* nh ch s mng vi mt gi tr vt ra ngoi phm vi.
* Gn mt gi tr vt phm vi cho mt bin.
* Cho mt hng vt phm vi lm tham s cho mt bin hoc
hm.
77 File variable
expected
Bin pha trc phi thuc kiu file.
78 Pointer
expression
expected
Biu thc pha trc phi thuc kiu con tr.
79 Integer or real
expected
Biu thc phi l kiu nguyn hay kiu thc
80 Label not within
current block
Nhn khng lin kt vi Block hin ti. Lnh goto nhy ti mt
nhn nm ngoi khi hin ti.
81 Label already
defined
Nhn c s dng
82 Undefined label
in preceding
statement part
Nhn c khai bo v ch dn trong phn lnh trc nhng cha
c nh ngha
83 Invalid @
argument
i s (Argument) hp l cho ton t @ l mt bin, tn th tc
hoc hm.
84 UNIT expected Thiu t kho unit
85 ; expected Thiu du ;
86 : expected Thiu du :
87 , expected Thiu du ,
88 ( expected Thiu du ngoc n m
89 ) expected Thiu du ngoc n ng
90 = expected Thiu du bng
91 := expected Thiu ton t gn
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 198
92 [ or (.
expected
Thiu du mc tri
93 ] or .)
expected
Thiu du mc phi
94 . Expected Thiu du chm .
95 .. expected Thiu du min con .
96 Too many
variables
Qu nhiu bin. (tng cng cc bin ton cc khai bo trong
chng trnh hay unit khng c vt hn 64k. Tng cng cc
bin a phng khai bo trong chng trnh con hay unit cng
khng c vt hn 64k).
97 Invalid FOR
control variable
Bin iu khin trong cu lnh FOR phi thuc kiu n gin
m c v phi c khai bo trc.
98 Integer variable
expected
Bin pha trc phi l kiu nguyn
99 File types are not
allowed here.
Kiu file khng cho php y (hng nh kiu khng th l kiu
file.)
100 String length
mismatch
di ca mt chui k t khng ph hp vi s thnh phn
trong mng k t.
101 Invalid ordering
of fields
Trng ca hng bn ghi hay hng object phi vit trong trt t
ca s khai bo.
102 String constant
expected
Chui hng khng xut hin ni cn c.
103 Integer or real
variable expected
Bin phi thuc kiu nguyn hay kiu thc.
104 Ordinal variable
expected
Bin pha trc phi l kiu m c.
105 INLINE error Ton t < khng cho php cng cc tham chiu ti nh v ti
bin , cc tham chiu nh vy lun lun c kch thc word.
106 Character
expression
expected
Biu thc pha trc phi l kiu k t.
107 Too many
relocation items
Kch thc ca bng ti nh v file kiu .EXE vt hn 64K, li
ny xut hin l do chng trnh qu to nn chng trnh linker
ca Turbo Pascal khng qun l c. N cng c th qu to
DOS thi hnh.
108 Overflow in
arithmetic
operation
Kt qu ca cc php ton s hc khng nm trong phm vi s
nguyn di (-2147483648 .. 21474783647). Hiu chnh php ton
hoc dng gi tr kiu s thc thay th gi tr kiu nguyn.
109 No enclosing
FOR, WHILE, or
REPEAT
statement
Th tc chun Break v continue khng th dng ngoi lnh for,
while hoc repeat.
112 CASE constant
out of range
Trong cu trc CASE cc hng l s nguyn phi trong phm vi
-32768..32767.
113 Error in
statement
K hiu ny khng th bt u mt cu lnh.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 199
114 Cannot call an
interrupt
procedure
Bn khng th trc tip gi mt th tc ngt.
117 Target address
not fount
Lnh Searess Find Error trong IDE hoc la chn /F trong phin
bn dch dng lnh khng pht hin c v tr cu lnh tng
ng vi a ch ch ra.
118 Include files are
not allowed here
Mi phn lnh phi hon ton nm trong mt file.
121 Invalid qualifer Li thuc mt trong cctrng hp sau:
* nh ch s mt bin khng phi l phn t mng.
* Ch ra mt trng trong mt bin khng phi l bn ghi.
* Ly a ch tr v ca mt bin khng phi l con tr.
122 Invalid variable
reference
Chng trnh tham chiu ti bin, nhng bin li khng phi l
mt v tr b nh (v bin phi c lu trong nhng nh c a
ch). Thng l chng trnh ang c gng thay i mt tham s
const hoc ang gi mt hm con tr nhng qun ly a ch tr
v ca kt qu.
123 Too many
symbols
Chng trnh hoc unit khai bo vt qu 64K k hiu. Nu nh
hng dch l {$D+}, hy th t n off, ngha l {$D-}, (iu
ny s ngn tr bn tm li run time trong khi ny). Hy th
chuyn mt s khai bo (hng, bin, kiu) ti mt unit ring r.
124 Statement part
too large
Pascal gii hn dung lng ca phn lnh khong 24K. Gp li
ny, hy ct cc on v a vo mt hay nhiu th tc hn.
126 Files must be var
parameters
Kiu file khng th a lm tham tr trong chng trnh con, kiu
File ch c th l tham bin ngha l phi khai bo vi t kho
Var.
127 Too many
conditional
symbols
Khng ch khai bo k hiu iu kin thm na. C gng
b i vi k hiu hoc rt ngn vi tn tng trng.
129 ENDIF directive
missing
Li khi bin dch cc cu trc c iu kin. S lng ca cc t
kho m {$Ifxxx} v cc t kho ng {$ENDIF}trong file
ngun phi bng nhau.
130 Error in initial
conditional
defines
Cc k hiu iu kin ban u ch nh trong
Option/Compiler/Condition Defines (trong mi trng khp kn
IDE ) hoc trong dch hng bin dch /D (vi trnh bin dch
dng) khng hp l.
131 Header does not
match previous
definition
Cc khai bo phn u (chng trnh) khng ph hp vi khai
bo th tc hoc hm ch ra trong phn interface hoc trong
phn khai bo forward
133 Cannot evaluate
this expression
Khng th c lng (nh gi) biu thc. C th y l mt
php tnh khng hp l. V d bn ang c gng dng hm Sin
trong khai bo const.
134 Expression
incorrectly
terminated
Biu thc kt thc khng hp l. V d cui biu thc phi l
ton hng ch khng phi l ton t.
137 Structured
variables are not
allowed here
Cu trc bin khng cho php thc hin cc thao tc m chng
trnh i hi. V d, bn ang c gng lm php nhn 2 bn ghi.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 200
138 Cannot evaluate
without system
unit
Th vin TURBO.TPL phi bao gm System Unit chng
trnh g ri c th tnh ton cc biu thc.
140 Invalid floating
point operation
Mt thao tc trn hai ga tr thc to nn s trn hoc mt
php chia cho s 0.
141 Cannot compile
overlays to
memory
Chng trnh dng overlays phi ghi kt qu dch trn a ch
khng th gi vo b nh
142 Pointer or
procedural
variable expected
Hm chun Assigned yu cu i s l mt bin con tr hoc
kiu th tc.
143 Invalid
procedure or
function
reference
Li dng tn mt th tc trong mt biu thc tnh ton.
( Nu bn ang chun b gn mt th tc hoc hm cho mt bin
th tc, n phi c dch trong trng thi {$F+}v khng th
khai bo vi inline hay interrupt.)
144 Cannot overlay
this unit
Bn ang c gng overlay mt unit m n khng c dch vi
trng thi {$0+}.
146 File access denied Khng th m file hay to ra file mi. Li thng xy ra khi trnh
bin dch ang c gng vit vo mt file ch c (Read only file).
147 Object type
expected
Bin (tn) khng th hin mt kiu object.
148 Local object
types are not
allowed
Kiu object ch c th nh ngha tm xa nht ca mt chng
trnh hay unit. nh ngha kiu object trong th tc hay hm l
khng c php.
149 VIRTUAL
expected
T dnh ring virtual b thiu.
150 Method identifier
expected
Bin (tn) khng th hin mt hnh vi.
151 Virtual
constructors are
allowed
Hnh vi constructor phi l tnh.
152 Constructor
identifier
expected
Bin (tn) khng th hin mt constructor.
153 Destructor
identifier
expedted
Bin (tn) khng th hin mt destructor.
154 Fail only allowed
within
constructors
Th tc chun Fail ch c dng bn trong mt constructor.
155 Invalid
combination of
opcode and
operands
M assembler khng chp nhn lin kt cc ton hng. Cc
nguyn nhn c th:
* Qu t hay qu nhiu cc ton hng i vi lnh assembler ny,
v d INC AX, BX hay Mov AX.
* S lng cc ton hng l ph hp, nhng kiu hoc th t
khng ph hp vi m; v d DEC1, MOV AX, CL hoc MOV
1, AX.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 201
161 Code generation
error
Phn lnh pha trc cha mt lnh LOOPNE, LOOPE, LOOP,
hoc JCXZ song cc lnh nhy ny khng th vi ti nhn ch.
162 ASM expected Bn ang c gng bin dch mt hm hoc th tc assembler c
sn bn trong v chng cha mt cu lnh begin...end thay v
dng asm...end.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 202
2. Li lin quan n h iu hnh DOS (Dos errors)
1 Invalid function
number
S hiu ca mt hm (DOS) khng tn ti
2
File Not Found
Khng tm thy file (c th l do cc th tc Reset, Append,
Rename, Rewrite, Erase bo li khi tn File khng hp l
hoc tn gn cho bin file khng xc nh mt file tn ti.)
3 Path not found ng dn khng tm thy, li c th l do:
Cc th tc Reset, Append, Rename, Rewrite, ChDir, Mkdir
RmDir hoc Erase gp tn gn cho tn bin file khng hp l
hoc ng dn ti mt th mc con khng tn ti.
4 Too many open
files
Do cc th tc Reset, Rewrite hoc Append bo li nu
chng trnh c qu nhiu file c m. DOS khng cho
php m qu 15 file cho mt ng dng. Nu gp li ny khi
m t hn 15 file th c th l trong file CONGIG.SYS khng
cha khai bo FILES=n hoc gi tr n qa nh hy tng n ln
5 File access denied T chi truy cp fille, li c th xy ra khi cc th tc:
* lm vic vi file nhng li b ch nh ti tn th mc
* lm vic vi cc file gn thuc tnh ch c.
* Lm vic vi cc file cha c m
6 Invalid file handle Li ny c bo li nu mt th file khng hp l c
chuyn ti mt li gi h thng DOS, nguyn nhn c th l
do file b li.
12 Invalid file access
code
Th tc Reset hoc Append gp phi mt file c kiu hoc
khng c kiu m gi tr FileMode khng hp l.
15 Invalid drive
number
Do cc th tc GetDir hoc ChDir bo li nu m s a
khng hp l.
16 Cannot remove
current directory
Khng th chuyn th mc ang lm vic (bi th tc
RmDir)
17 Cannot rename
across drives
Khng i c tn v hai tn khng c cng ng dn
18 No more files Do bin DosError trong unit Dos v WinDos bo li khi mt
li gi ti FindFirst hoc FindNext khng tm thy file thch
hp vi tn file v tp cc thuc tnh ch ra.
3. Li vo ra (Input/Output error)
Li vo ra thng xut hin khi bin dch chng trnh, nu nh hng dch l {$I+}
(ngm nh) th chng trnh s dng ngay khi gp li. Nu u chng trnh chng ta quy
nh {$I-} th chng trnh tip tc thi hnh, v li c thng bo bi hm IOResult. Di
y l nhng li hay gp:
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 203
100
Disk read error
Li c d liu, thng l do th tc Read thng bo khi
trn mt file c kiu nu bn ang c gng c qu v tr
cui file.
101 Disk write error
Li khi thc hin cc th tc Close, Write, Writeln hoc
Flush khi a y
102 File not assigned File khng th to ra, li ny xut hin khi thc hin cc
th tc Reset, Rewrite, Append, Rename v Erase nhng
bin file cha c gn tn qua th tc Assign.
103 File not open File cha c m khi thc hin cc th tc Close, Read,
Write, Seek, Eof, FilePos, FileSize, Flush, BlockRead
hoc BlockWrite .
104 File not open for
input
File (vn bn) cha c m c khi thc hin cc th
tc Read, Readln, Eof, Eoln, SeekEof hoc SeekEoln .
105 File not open for
output
File cha c m ghi khi thc hin cc th tc Write
hoc Writeln .
106 Invalid numeric
format
Tr s c t file vn bn khng ng vi dng s hp l
Khi thc hin cc th tc Read hoc Readln .
4. Cc li lin quan n phn cng
Cc li lin quan n phn cng c th tham kho thm trong cc ti liu v h iu
hnh MS-DOS
150 Disk is write
protected
a (mm) b kho chng ghi. Hy b cc ly chng ghi
trn a ra.
151 Unknown Unit Tn n v chng trnh cha c bit n
152 Drive not ready a khng sn sng. C th do cha a a vo, c th
mt ngun in nui.
153 Unknown command Khng c lnh ny. Chc b g nhm mt vi k t.
154 CRC error in data Li vng d liu
155 Bad drive request
structure length
156 Disk seek error Li khi truy nhp a
157 Unknown media
type
Kiu thit b khng r
158 Sector not found Cung t khng tm thy. C l b hng do nhiu nguyn
nhn: mc, xc hoc b bi bn...
159 Printer out of paper My in khng c giy
160 Device write fault Vic ghi vo thit b khng thc hin c
161 Device read fault Vic c b li
162 Hardware failure Phn cng b hng
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 204
5. Li trnh bin dch (run-time error)
Khi trnh bin dch gp cc li ny chng trnh s b dng ngay lp tc.
200 Division by zero Chng trnh c gng chia mt s cho 0 trong php ton
mod hoc div.
201 Range check error Nu nh hng bin dch l {$R+} th li s c thng
bo khi mt trong cc tnh hung sau xy ra:
* Ch s ca mt mng vt ra ngoi phm vi khai bo
* Gn mt gi tr vt ra ngoi phm vi cho php ca mt
bin.
* Gi tr gn cho tham s ca mt hm hay mt bin vt
ra ngoi phm vi cho php
202 Stack overflow
error
Stack b trn. Nu nh hng bin dch l {$S+} th li s
c thng bo khi khng c ch trng trn stack
b tr b nh cc b ca cc chng trnh con. C th thay
i Stack bng cch dng nh hng bin dch $M.
* Li ny cng c th do vng lp v tn gy ra, hoc do
mt th tc vit trong ngn ng assembler khng duy tr
tnh trng stack.
203 Heap overflow error Li ny do cc th tc New hoc GetMem bo li nu
khng cn ch trng trong heap cp pht mt vng
nh theo yu cu.
204 Invalid pointer
operation
Li ny do cc th tc Dispose hoc FreeMem gy ra nu
nh con tr l Nil hoc tr ti mt v tr nm ngoi heap.
205 Floating point
overflow
Php tnh vi du chm ng to ra kt qu l mt s qu
ln .
207 Invalid floating
point operation
Mt tham s thc trong cc hm Trunc hoc Round khng
th chuyn i thnh mt s nguyn trong phm vi s
nguyn di LongInt (-2147483648 - 2147483647).
* Tham s ca hm Sqrt mang gi tr m.
* Tham s ca hm Ln l zero hoc m.
* S trn 8087 xy ra. (xem trong chng 14. Using
the 80x87 trong cun Language gude.)
208 Overlay manager
not installed
Trnh qun l overlay cha c ci t. Li c th l do
khng gi OverInit hoc li gi OverInit khng chy.
209 Overlay file read
error
Li xy ra khi trnh qun l overlay c gng c mt
overlay t file overlay.
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 205
Mc lc
Li m u 2
Chng 1: Chng trnh con - Th tc v hm 2
1. Khi nim v chng trnh con 4
2. Tham s trong chng trnh con 5
3. Truyn tham s cho chng trnh con 8
4. Bin ton cc v bin a phng 9
5. Cch thc b tr b nh 11
6. Tnh quy ca chng trnh con 12
7. Li gi chng trnh con 13
8. Khai bo trc bng Forward 16
Bi tp ng dng chng 1 19
Chng 2: Cc kiu d liu c cu trc 20
1. D liu kiu bn ghi 21
2. D liu kiu tp 37
3. D liu kiu tp hp 58
Bi tp ng dng chng 2 67
Chng 3: n v chng trnh v th vin chun 69
1. Khi nim n v chng trnh 70
2. Th vin chun 70
3. Cc Unit khc 71
4. Xy dng cc Unit 72
5. Tham chiu n cc Unit 78
6. Trnh tin ch Tpumover 81
8. Mt s Unit chun 83
Bi tp ng dng chng 3 94
Chng 4: Con tr v cu trc ng 95
1. Khi nim 96
2. Kiu d liu con tr - Bin con tr 96
3. Cc th tc v hm tc ng trn con tr 92
4. Truy nhp d liu 94
5. Mng con tr v con tr mng 96
6. Cp pht ng 99
7. Danh sch lin kt v hng i 105
8. Cy nh phn 117
Bi tp ng dng chng 4
Chng 5: Gii thut quy 126
1. Khi nim quy 126
2. Thit k gii thut quy - Kh quy 130
3. Hiu lc bi ton quy 130
Bi tp ng dng chng 5
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 206
Chng 6: ho 132
1. Khi nim chung 132
2. Mt s th tc c bn v hnh 134
3. Thit lp mu ho 134
4. Vit ch trong ch ho 135
5. Cc v d 137
6. X l nh Bitmap 144
7. th hm s 149
Bi tp ng dng chng 6 152
Ph lc 1
Bng m ASCII 161
Ph lc 2
Tm tt cc th tc v hm ca Turbo Pascal 7.0 166
Ph lc 3
nh hng bin dch 191
Ph lc 4
Thng bo li 180
1. Li bin dch 180
2. Li lin quan n h iu hnh 188
3. Li vo ra 188
4. Cc li lin quan n phn cng 189
5. Li trnh bin dch 190
Mc lc 205
Ti liu tham kho 207
Trng i hc Nng nghip 1 - Gio trnh Lp trnh nng cao ..............................................................- 207
Ti liu tham kho
1. Dng Xun Thnh, Tin hc i cng, Nxb Thng k 2003
2. Dng Xun Thnh, Gio trnh ngn ng lp trnh Pascal, Nxb Thng k 2004
3. xun Li, Cu trc d liu v gii thut, Nxb Khoa hc v K thut - 1998
4. Nguyn T Thnh, Lp trnh nng cao trn ngn ng Pascal,
Nxb i hc quc gia 2001
5. Larry Nyhoff - Sanford Leeostima, Lp trnh nng cao bng Pascal vi cc cu trc
d liu, Nxb nng 1998
6. Quch Tun Ngc, Bi tp ngn ng lp trnh Pascal, Nxb Thng k 2001