You are on page 1of 90

Giao trnh Lp trnh Pascal cn ban

1
Trang 1
BAI 1: GII THIU NGN NG PASCAL VA CAC V DU N
GIAN
I. Xut x ngn ng Pascal:
Pascal la ngn ng lp trnh cp cao do Niklaus Wirth, giao s in toan trng
ai hoc ky thut Zurich (Thuy S), xut nm 1970 vi tn Pascal ky nim nha
toan hoc va trit hoc ni ting Blaise Pascal (ngi Phap).
Ngn ng lp trnh Pascal co c im: ng phap, ng ngha n gian va co tnh
logic; cu truc chng trnh ro rang, d hiu (th hin t duy l p trnh cu truc); d
sa cha, cai tin.
Trong qua trnh phat trin, Pascal a phat huy c u im va c dung tao
ra nhiu ng dung trn nhiu lnh vc khac nhau. Cac t chc va cng ty chuyn v
may tnh da trn Pascal chun a phat trin thm va tao ra cac chng trnh dch
ngn ng Pascal vi nhiu phn b sung, giam thiu khac nhau. V du: TURBO
PASCAL cua hang Borland (My), QUICK PASCAL cua hang Microsoft, UCSD
PASCAL (University of California at San Diego), ANSI PASCAL (American
National Standard Institute),.v.v.
So vi nhiu san phm Pascal cua nhiu t chc va cng ty khac nhau xut ban,
TURBO PASCAL cua hang Borland to ra co nhiu u im nht va hin nay a tr
thanh ngn ng lp trnh ph bin nht trn th gii s dung trong lnh vc giang
day va lp trnh chuyn nghip. Ch trong vong vai nm Turbo Pascal c cai tin
qua nhiu phin ban : 1.0, 2.0, 3.0, 4.0, 5.0, 5.5 (1989), 6.0 (1990), 7.0 (1972).
Cac tp tin chnh cua ngn ng Turbo Pascal gm:
- Turbo.exe: chng trnh soan thao, dch va lin kt chng trnh.
- Turbo.tpl (.tpl - Turbo Pascal Library): tp tin th vin lu cac n v (Unit)
chun chay vi Turbo.exe.
Mun s dung cac lnh hoa, phai co cac tp tin sau:
- Graph.tpu: n v (Unit) cha cac lnh hoa.
- Cac tp tin co phn m rng CHR (SANS.CHR, TRIP.CHR,
GOTH.CHR,.v.v.): Cha cac kiu ch trong ch hoa.
- Cac tp tin co phn m rng BGI (EGAVGA.BGI, HERC.BGI, CGA.BGI,...):
iu khin cac loai man hnh tng ng khi dung hoa.
II. Khi ng:
Giao trnh Lp trnh Pascal cn ban
2
Trang 2
Ta co th khi ng Pascal t Windows hoc MS-DOS, chuyn n th muc BP
hoc TP va chay tp tin BP.EXE hay TURBO.EXE. Hai cach khi ng trn thc
hin nh sau:
- Khi ng t du nhc cua MS-DOS: Chuyn n th muc BP hoc TP ni
cha tp tin BP.EXE hoc TURBO.EXE, go BP hoc TURBO va n <Enter>.
- Khi ng t Windows: chon menu Start/Program/Borland Pascal. Nu chng
trnh Pascal cha c cai vao menu Start, ban co th dung Windows Explorer
chuyn n tp tin BP.EXE hoc TURBO.EXE va khi ng Pascal bng cach
chay tp tin nay.
III. Cac phm chc nng cn bit cua ngn ng Pascal:
- F2: Lu chng trnh trong khi soan thao.
- F3: Tao mt file mi hoc m mt file cu.
- F9: Dch th chng trnh kim tra li.
- Ctrl - F9: Chay chng trnh.
- Alt - F5: Xem kt qua chay chng trnh.
- Alt - X: Thoat khoi man hnh soan thao chng trnh Pascal.
IV. Cu truc mt chng trnh Pascal:
1. Cu truc c ban:
Chng trnh Pascal n gian nht phai co hai t khoa Begin va End nh sau:
Begin

End.
Chng trnh trn tuy khng lam g khi chay (n Ctrl - F9) nhng la mt chng
trnh hp l do hi u iu kin cn thit la co hai t khoa Begin va End.
T khoa End co kem du . pha sau bao hiu kt thuc chng trnh, y la iu
bt buc phai co trong mt chng trnh. T khoa Begin trn c trnh bin dch
hiu la bt u thc hin cac lnh sau no va kt thuc tai t khoa End co du chm
.. Khi lnh nm trong cp t khoa Begin va End nu co du chm theo sau con
goi la khi chng trnh chnh. Ngoai ra, nu sau t khoa End khng co du hoc
co du ; th o co th la khi chng trnh con, khi lnh cua ham hoc khi lnh
trong chng trnh. Trong chng trnh co th co nhiu khi lnh, tc co th co
nhiu cp t khoa Begin va End.
2. Phng phap khai bao va t chc cu truc mt chng trnh Pascal:
Giao trnh Lp trnh Pascal cn ban
3
Trang 3
Vic t cac phn khai bao va soan thao chng trnh theo th t nh sau:
Program ProgName;
Uses UnitName1, UnitName2, UnitNameN;
Label LabelName1, LabelName2, LabelNameN;
Const Const1 = n, Const2 = m, ConstN = k;
Type Type1 = AnyType;
Var Var1, Var2, VarN : Type;
Begin

Cac lnh cua chng trnh }

End.
Giai thch cu truc cac khai bao trn:
Nu co phn khai bao nao cn cho chng trnh th phai tun theo th t trn, v
du: phn khai bao th vin (USES) khng th t sau phn khai bao hng s
(CONST) hoc sau (VAR)... sau mi phn khai bao phai co du ;.
- Program: T khoa nay dung khai bao tn chng trnh, ProgName la tn
chng trnh, tn nay khac vi tn tp tin. Tn chng trnh phai tun theo quy tc:
khng co ky t trng xen gia.
khng t s ky t u tin.
trong phn tn khng cha cac ky t t bit nh: !, @, #, $, %, ^,
&, * , (, ), -, +, /, \, ., ,,.v.v.
kt thuc phai co du ;.
phn nay co th khng co.
4 V du: mt cach khai bao tn chng trnh:
Program TimUSCLN;
Begin
...
End.
- Uses: T khoa nay dung khai bao vic s dung Unit (th vin) cho chng
trnh. Th vin la tp hp cac ham, thu tuc do ngn ng Pascal cung cp kem theo
hoc cung co th do ngi lp trnh tao ra s dung. Ta khai bao th vin thng
qua tn cua th vin, va trong chng trnh o ta se co th s dung cac thu tuc hoc
Giao trnh Lp trnh Pascal cn ban
4
Trang 4
cac ham co trong th vin o. Cac th vin chun cua ngn ng Pascal gm: CRT,
DOS, GRAPH, GRAPH3, OVERLAY, PRINTER, SYSTEM va TURBO3. Trong
o, th vin SYSTEM mc nh c chuyn vao chng trnh ma ta khng cn
phai khai bao. V du mt cach khai bao th vin:
...
Uses CRT, GRAPH;
...
- Label: Dung khai bao cac nhan cho chng trnh. Nhan la cac tn dung
anh du trong chng trnh lnh GOTO nhay n ung v tr o. Vic s dung
lnh GOTO c cp bai 4. V du mt cach khai bao nhan:
...
Label TH1, N2;
...
- Const: T khoa nay dung khai bao cac hng s s dung trong chng trnh,
khi bao hng s la vic c nh mt vai gia tr nao o trong chng trnh thng qua
tn hng, v du cach khai bao hng:
...
Const k = 5, Max = 500, Ten = Nam;
...
- Type: t khoa dung khai bao cac kiu hng d liu s dung cho chng
trnh. Vi t khoa nay, ta co th t tao ring cho mnh nhng kiu d liu ring da
trn cac kiu d liu chun tin s dung trong vic lp trnh. Cac khai nim v
d liu chun va phng phap tao kiu d liu t tao se c gii thiu cac phn
sau. V du mt cach khai bao mt kiu d liu t tao:
...
Type Day = Array |1..7] of String|8];
...
- Var: T khoa dung khai bao cac bin s c s dung trong chng trnh.
Bin s la cac gia tri co th thay i c trong sut qua trnh chay cua chng
trnh. Khai nim v bin s rt quan trong trong vic lp trnh (khai nim nay c
trnh bay ky bai 3). Mt v du v cach khai bao bin:
...
Giao trnh Lp trnh Pascal cn ban
5
Trang 5
Var HoDem, Ten : String;
N : Integer;
...
Ghi chu:
- Th t cac khai bao trn la iu bt buc, ta phai nm th t nay cho du mt s
khai nim ta cha c bit.
- Trong chng trnh Pascal, tao li chu thch, ta s dung cp du ...} hoc
(*...*) lng cac cu chu thch vao bn trong no.
- Trn mt dong co th vit mt hoc nhiu cu lnh.
V. Cac v du n gian lam quen vi ngn ng Pascal:
4 V du 1:
Program GioiThieu;
Begin
Writeln ( Trung tam Trung hoc Chuyen nghiep va Day nghe );
Write ( 74 Tran Quoc Toan - Tel: 0511 872664 );
End.
F Giai thich chng trnh GioiThieu:
- Begin: T khoa cho bit bt u chng trnh.
- Writeln: la thu tuc xut ni dung cac thanh phn bn trong cp du (...) ln man
hnh va chuyn con tro xung dong. Bn trong cp du (...) co th co nhiu thanh
phn gm chui ky t (hng gia tri chui), bin s hoc ham. Gia cac thanh phn
trong cp du (...) phai cach nhau bng du , nu khng cung loai, tc la chui ky
t phai c cach vi bin s hoc ham ng trc no hay sau no bng du ,.
Chui ky t mun hin th nguyn vn phai c t trong cp du .
- Write: la thu tuc xut ni dung cac thanh phn bn trong cp du (...) ln man
hnh, thu tuc nay co chc nng tng t Writeln nhng khng chuyn con tro xung
dong.
- End: la t khoa cho bit kt thuc chng trnh.
- Cac dong lnh nm gia Begin va End la lnh ma chng trnh cn phai thc
hin.
- xem chng trnh trn, ta chay bng Ctrl - F9 va xem lai bng Alt - F5.
Giao trnh Lp trnh Pascal cn ban
6
Trang 6
4 V du 2:
Program DonXinPhep;
Uses CRT;
Begin
ClrScr;
Writeln ( ********************************** );
Writeln ( * Cong hoa Xa hoi Chu nghia Viet Nam * );
Writeln ( * Doc Lap - Tu Do - Hanh Phuc * );
Writeln ( * DON XIN PHEP NGHI HOC * );
Writeln ( ********************************** );
Writeln ( ... );
Readln;
End.
F Giai thch chng trnh trn:
- Khai bao: Uses CRT; khai bao th vin CRT, do co s dung lnh ClrScr.
- Lnh ClrScr; lau sach man hnh (Clear Screen).
- Cac lnh Writeln (...) xut ra man hnh ni dung bn trong du (...) va xung
dong.
- Lnh Readln; dng chng trnh, phng phap nay dung hin thi ni
dung sau khi thc hin cac lnh bn trn va ch ngi dung n phim bt ky tip
tuc thc hin cac lnh k sau no. Trong trng hp trn, k tip la t khoa End nn
chng trnh c kt thuc sau khi co mt phm bt ky c n.
4 V du 3:
Program TinhTong;
Uses CRT;
Begin
ClrScr;
Write ( 30 40 15 = , 30 40 15 );
Readln;
End.
1 Kt qua: May thc hin phep tnh va hin th 30 + 40 + 15 = 85
Giao trnh Lp trnh Pascal cn ban
7
Trang 7
F Trong cu lnh Write trn, co hai thanh phn, biu thc th nht: 30 + 40 +15
= c hiu la mt chui phai c hin th nguyn vn do co cp du hai
u. Thanh phn th hai c cach vi thanh phn th nht bng du , va do
khng co cp du hai u nn no c tnh tng va tra v gia tr cua biu thc.

_________ o o _________
Giao trnh Lp trnh Pascal cn ban
8
Trang 8
BAI 2 : CAC KHAI NIM C BAN CUA NGN NG PASCAL

I. Cac t khoa (Key word) trong ngn ng Pascal:
Cac t khoa la cac t dung khai bao, t tn cho i tng trong Pascal, khi
ta t tn cho i tng nao o, khng c t trung tn vi cac t khoa.
Bang t khoa trong ngn ng Pascal gm:
and, array, asm, begin, case, const, constructor, destructor, div, do, downto, else,
end, file, for, function, goto, if, implementation, in, inline, interface, label, mod, nil,
not, object, of, or, packed, procedure, program, record, repeat, set, shl, shr, string,
then, to, type, unit, until, uses, var, while, with, xor.
Turbo Pascal khng phn bit ky t thng hoc hoa. V du, cac cach vit sau co
y ngha nh nhau: Begin, BEGIN, begin, beGIN, bEGIN,...
II. Cac kiu d liu c ban:
1. Cac kiu d liu dang s nguyn:
a. Kiu Byte: Kiu Byte thuc kiu d liu biu din cac gia tr s nguyn t 0 n
255. Kiu Byte chim 1 byte trn b nh.
b. Kiu Integer: Kiu Integer la kiu d liu biu din cac gia tr s nguyn t -
32768 n 32767. Kiu Integer chim 2 bytes trn b nh.
c. Kiu Shortint: Kiu Shortint la kiu d liu biu din cac gia tr s nguyn t -
128 n 127. Kiu Shortint chim 1 byte trn b nh.
d. Kiu Word: Kiu Word la kiu d liu biu din cac gia tr nguyn t 0 n
65535. Kiu Word la kiu s khng biu din c gia tri m. Kiu Word chim 2
bytes trn b nh.
e. Kiu Longint: Kiu Longint biu din cac gia tr s nguyn t -2.147.483.648
n 2.147.483.647. Kiu Longint chim 4 bytes trn b nh.
2. Cac kiu d liu dang s co phn biu din th p phn:
a. Kiu Single: La tp hp cac s theo kiu du . ng trong gii han t 1.5E -45
n 3.4 E38 (1,5 x 10
-45
n 3,4 x 10
38
). Kiu Single chim 4 bytes trn b nh.
b. Kiu Real: La tp hp cac s theo kiu du . ng trong gii han t 2.9E -39
n 1.7E 38 (2,9 x10
- 39
n 1,7 x 10
38
). Kiu Real chim 6 bytes trn b nh.
Giao trnh Lp trnh Pascal cn ban
9
Trang 9
c. Kiu Double: La tp hp cac s theo kiu du , ng trong gii han t 5.0E -324
n 1.7E 308 (5,0 x10
- 324
n 1,7 x 10
308
). Kiu Double chim 8 bytes trn b
nh.
3. Kiu Char (ky t):
Kiu Char dung biu din cac gia tr la cac ky t thuc bang ch cai: A, b,
x,... cac con s: 0..9 hoc cac ky t c bit : !, @, #, $, %, &, *,...
biu din thng tin, ta cn phai sp xp cac ky t theo mt chun nao o va
mi cach sp xp o goi la bang ma, thng dung nht la bang ma ASCII (American
Standard Code for Information Interchange). Bang ma ASCII co 256 ky t c
gan ma s t 0..255, mi ky t co mt ma s nht nh, v du : ky t A co ma s la
65, a co ma s la 97 trong bang ma ASCII,.v.v.
hin thi bang ma ASCII, ban chay chng trnh sau:
Program ASCI I_Table;
Uses CRT;
Var I : Integer;
Begin
ClrScr;
Ior I := 0 to 255 do
Write( I, = , CHR( I ), );
Readln;
End.
4. Kiu Logic:
Kiu logic la kiu biu din hai trang thai la ung (True) hoc sai (False). T
khoa khai bao cho kiu logic la BOOLEAN.
4 V du:
Var Co : Boolean;
Co := True;
5. Kiu String (chui ky t):
String la kiu d liu cha cac gia tr la nhom cac ky t hoc ch mt ky t, k ca
chui rng. dai ti a cua mt bin kiu String la 255, tc la no co th cha ti
a mt day gm 255 ky t.
Cu phap khai bao: (1) Var Bin_1, Bin_2, Bin_n: String;
Giao trnh Lp trnh Pascal cn ban
10
Trang 10
Hoc (2) Var Bin_1, Bin_2, Bin_n: String |30];
Cach khai bao (1) se cho phep bin HoTen nhn ti a 255 ky t. Cach (2) cho
phep bin HoTen nhn ti a 30 ky t.
Ghi chu: Cach s dung kiu d liu String se c trnh bay chi tit bai 8.
III. Cac ham x ly d liu c ban cua ngn ng Pascal:
- SQR(x) bnh phng cua mt s nguyn hay thc.
- ABS(x) tr tuyt i cua x.
- SQRT(x) cn bc hai cua x.
- SIN(x) tnh gia tr Sin(x) vi x la Radian.
- COS(x) tnh gia tr Cos(x) vi x la Radian.
- ARCTAN(x) tnh gia tr Arctan(x).
- LN(x) ha m logaric c s e = 2.718.
- EXP(x) ham e
x
.
- TRUNC(x) ct bo phn thp phn cua x nu co. V du: Trunc(4.86) = 4,
Trunc(-3.2) = 4.
- ROUND(x) cho s nguyn gn x nht. V du: Round(1.6) = 2, Round(-
23.68) = -24, Round(1.5) = 2.
- PRED(x) cho gia tr ng trc x, i s x co th la kiu logic, kiu
nguyn hoc kiu ky t. V du: Pred(B); cho gia tr A,
Pred(2) cho gia tr 1, Pred(True) cho gia tr False. Tuy nhin,
Pred(False) lai khng cho c gia tr nao do gia tri False ng
trc gia tri True i vi kiu Boolean.
- SUCC(x) cho gia tr ng sau x, i s x co th la kiu logic, kiu nguyn
hoc kiu ky t. V du: Succ(B); cho gia tr C, Succ(2) cho
gia tr 3, Succ(False) cho gia tr True.
- ORD(x) cho s th t cua ky t x trong bang ma ASCII. V du: Ord(A)
= 65, Ord(a) = 97,...
- CHR(x) tra v ky t th x trong bang ma ASCII. V du: Chr(65) = A,
Chr(50) = 2,...
Giao trnh Lp trnh Pascal cn ban
11
Trang 11
- ODD(x) Tra v gia tr True nu x la s le va tra v gia tr False nu x la
s chn.
IV. S dung ham Random(n) ly mt gia tr nguyn ngu nhin:
Ham Random(n) se tra v mt gia tr nguyn ma may ly ngu nhin co gia tr t
0 n n. Trong o, n la mt s kiu Word tc la trong khoan t 0.. 65535.
Trc khi s dung ham Random ta phai goi thu tuc Randomize khi tao b
tao s ngu nhin
_________ o o _________
BAI 3: HNG S, BIN S, BIU THC VA CU LNH
N GIAN TRONG NGN NG PASCAL
I. Hng s:
1. Khai nim:
- Hng s la cac gia tr khng thay i trong qua trnh chay chng trnh.
- Co hai phng phap s dung hng :
Gan trc tip gia tr hng.V du: DT := R * R * 3.14; ChuVi := D * 3.14;
t cho hng mt tn goi va trong qua trnh soan chng trnh ta dung tn
goi thay cho vic dung trc tip gia tr o. V du: ChuVi := D * Pi; trong o, Pi la
mt hng s chun cua Pascal (tc la ta co th dung ma khng cn khai bao va gan
gia tri).
- Hng s lun lun c khai bao trc phn khai bao bin nu s dung theo
phng phap t tn cho hng.
2. Cu phap khai bao:
Const a
1
= Tri_s _1, a
2
= Tri_s _2, a
n
= Tri_s _n;
Trong o: a
1
... a
n
la tn ca c hng s, cac tri_s _1,2,...,n la cac gia tr gan cho cac
tn hng a
1
...a
n
.
F V du mt cach khai bao hng s: Const Pi = 3.1416, Max = 500;
4 V du: chng trnh tnh chu vi ng tron co s dung hng s Pi do ta nh
ngha:
Program TinhCV_DT_HT;
Const Pi = 3.1416;
Var R :Real;
Begin
Giao trnh Lp trnh Pascal cn ban
12
Trang 12
Write ( Nhap ban kinh hinh tron : );
Readln (R);
Writeln ( Dien tich hinh tron = , Pi * R * R );
Writeln ( Chu vi hinh tron = , 2 * R * Pi);
Readln;
End.
Ghi chu:
- Ta tranh vit: z := Exp(1.23) + Sin(2.34) * Sin(2.34);
- Ta se thy tai hai ngay v khi mun tnh lai z vi gia tr mi cua x, v du x =
1.55, khng le lai i thay ht 3 v tr vi 2.34 (la gia tri cu th cua x ma ta a khng
s dung hng s) thanh 1.55 !!
- Trong chng trnh trn, ban co th ti u hoa thm chng trnh chay
nhanh hn bng cach thay hai ln tnh Sin(x) bng mt ln. Cu th, ta thc hin nh
sau:
t := Sin(x);
z := Exp(a + t * t - x);
Tac phong ti u hoa nay se rt co ch cho ban khi ban co mt chng trnh vi
khi lng tnh toan s, co th chay vai ngay m lin tuc nhng nu bit ti u
ngay t u th se giam bt xung con mt ngay chng han. Luc na y ban mi thu
hiu ti u hoa lam g ?
II. Bin s:
1. Khai nim:
- La ai lng ma gia tri cua no co th thay i trong qua trnh thc hin chng
trnh. Bin c khai bao bng t khoa VAR.
- Bin la tn cua mt vung b nh lu tr d liu.
- Bin c truy xut trong chng trnh thng qua tn bin.
- Bin la mt cu truc ghi nh d liu v vy phai c quy nh theo mt kiu
d liu nao o, v du kiu Integer, Byte, Char,...
2. Cu phap khai bao cho cac bin:
VAR Tn_bin_1, Tn_bin_2, Tn_bin_n : Kiu_d_liu_cua_bin;
Trong o: Tn_bin_1, Tn_bin_2, Tn_bin_n la tn cac bin cn khai bao
s dung trong chng trnh, Kiu_d _liu_cua_bin la mt trong cac kiu d liu
Giao trnh Lp trnh Pascal cn ban
13
Trang 13
chun (a c nu trong phn II cua bai 2) cua Pascal hoc do ngi dung nh
ngha.
F V du mt cach khai bao bin:
Var a,b : Integer;
c : Real;
Ten : String |10];
4 V du : chng trnh tnh tng hai s nguyn c nhp t ban phm. Trong bai
nay, ta cn khai bao hai bin a va b tnh toan.
Uses CRT;
Var a, b : Integer;
Begin
ClrScr;
Write( Nhap so thu nhat : );
Readln(a);
Write( Nhap so thu hai : );
Readln(b);
Write( Ket qua : , a , , b , = , a b);
Readln;
End.
III. Biu thc:
Mt biu thc c tao bi cac toan t (phep toan) va cac toan hang dung th
hin mt cng thc toan hoc. Toan hang co th la hng, ham hoc bin.
4 V du: Sau khi khai co bao:
Const Max = 120;
Var x: Integer;
ta co th vit biu thc sau: 5 + Max * Exp(x);
Trong o: + va * la hai toan t, cac hng s 5, Max va ham Exp(x) la cac toan
hang.
Chu y :
- Mt hng, mt bin, mt ham cung c xem la biu thc, o la biu thc n
gian.
- Cac phep toan trong mt biu thc c sp xp theo th t u tin nh sau:
Giao trnh Lp trnh Pascal cn ban
14
Trang 1 4
Cac phep toan mt ngi c u tin th nht la: d u dng (+), du m (-
), phep phu nh (not).
Cac phep toan nhn chia: nhn (*), chia (/), ly phn nguyn (div), ly
phn d (mod), phep va (and).
Cac phep cng tr: cng (+), tr (-), phep hoc (or).
Cac phep so sanh: , = , , = , = , .
- Biu thc trong cp du ngoc ( ) c thc hin trc tin nu co.
- Cac toan t cung th t u tin th c thc hin t trai qua phai.
4 V du vic s dung cac toan t va toan hang:
3 + 5 * 3 = 18
(3 + 5) * 3 = 24
5 / 2 * 3 = 7.5
(5 + 2 4) and not (true or (5 - 3 = 8)) = false
( -b + sqrt(d) ) / 2 * a ( co ngha: )
IV. Cu lnh n gian:
Sau phn khai bao d liu la phn lnh cua chng trnh. Phn nay xac nh cac
cng vic ma chng trnh phai thc hin x ly cac d liu a c khai bao. Cu
lnh c chia thanh hai loai:
- Cu lnh n gian:
Lnh gan (:=)
Lnh Nhp - Xut (READ, READLN, WRITE, WRITELN).
Goi thu tuc.
Lnh nhay (GOTO).
- Cu lnh co cu truc:
Lnh ghep (BEGIN... END)
Lnh la chon (IF... ELSE, CASE... OF)
Lnh lp (FOR, REPEAT... UNTIL, WHILE... DO)
Lnh WITH.
Ghi chu: Ni dung bai nay ch cp n cac lnh n gian. Cac lnh co cu
truc c trnh bay bai 4.
1. Lnh gan:
a
d b
2
+
Giao trnh Lp trnh Pascal cn ban
15
Trang 1 5
Lnh gan dung gan gia tr cua mt biu thc (co th la ham, bin hoc gia tri)
cho mt bin.
Cu phap:
Bin := biu_thc;
F u tin, may tinh gia tri cua biu thc v phai, sau o , gia tri tinh c t v
phai c gan cho v trai (bin).
Chu y:
- V trai cua lnh gan chi co th la bin. V du: vit x + y = 7; la sai v v trai cua
cu lnh nay la mt biu thc ch khng phai la mt bin.
- Kiu gia tr cua biu thc (ham, bin hoc gia tri) v phai phai trung vi kiu
cua bin a c khai bao, tr mt s trng hp nh bin kiu thc (Single, Real,
Double) co th nhn gia tr kiu nguyn (Shorint, Byte, Integer, Word, Longint),...
do tp hp s nguyn la tp con cua s thc.
4 V du: Sau khi a co khai bao:
Var c1, c2 : Char;
i, j : Integer;
x, y : Real;
th ta co th thc hin cac phep gan sau:
c1 := A;
c2 := Chr(97);
i := (23 + 6) * 2 mod 3;
j := Round(20 / 3);
x := i;
y := j;
2. Lnh Xut:
Lnh xut dung in ln man hnh cac d liu, kt qua hay cac thng bao.
Cu phap (1). WRITE(Biu_thc_1, Biu_thc_2,..., Biu_thc_n);
(2). WRITELN(Biu_thc_1, Biu_thc_2,..., Biu_thc_n);
(3). WRITELN;
Giao trnh Lp trnh Pascal cn ban
16
Trang 1 6
Dang (1): In ln man hnh gia tr cac biu thc tai v tr hin hanh cua con tro
theo th t vit trong lnh. Sau khi thc hin xong lnh WRITE(... ); con tro nh v
tai sau gia tr biu_thc_n cua cu lnh.
Dang (2): In ln man hnh gia tr cac biu thc tai v tr hin hanh cua con tro
theo th t vit trong lnh. Sau khi thc hin xong lnh WRITELN(... ); con tro
nh v tai u dong k tip.
Dang (3): Dung chuyn con tro xung dong.
4 V du:
Var a, b : Byte;
Begin
A := 2;
B := 4;
Write ( Day la ket qua phep nhan A voi B: , a * b);
Writeln;
Writeln( * * * * );
Write ( ------------------------------------------------- );
End.
1 Kt qua sau khi chay chng trnh trn:
Day la ket qua phep nhan A voi B: 8
* * * *
--------------------------------------------
Chu y : Co hai da ng vit trong thu tuc Write va Writeln la vit khng quy cach
va vit co quy cach. iu nay ta xet qua tng kiu d liu.
(1). Vi du v cac dang vit khng co quy cach:
Uses CRT;
Var
I : Integer; R : Real;
Ch : Char;
B : Boolean;
Begin
I := 123; R := 123.456; Ch := A; B := 2<5;
Writeln( I ); 1}
Giao trnh Lp trnh Pascal cn ban
17
Trang 17
Writeln( R); 2}
Writeln( 3.14 ); 3}
Writeln( 20 * 2.5); 4}
Writeln;
Writeln( Ch ); 5}
Writeln( B ); 6}
Writeln( #7 ); 7}
End.
F Cach vit khng quy cach se canh ni dung theo l bn trai.
- S nguyn c vit ra vi s ch ung bng s ch s gan vao, k t v tr bn
trai. Lnh 1} in ra: 123
- S thc c vit ra vi trnh t sau: mt du cach, tip n la mt s phn
nguyn, du chm, 10 vi tri s thp phn, tip n la ch E, du cua phn mu (+,-),
hai s biu din gia tri phn mu:
Lnh 2}in ra: 1.2345600000E+02
Lnh 3}in ra: 3.1400000000E+00
Lnh 4}in ra: 5.0000000000E+01
- Kiu ky t in bnh thng, mt ky t chim mt ch. Lnh 5}in ra: A
- Kiu Boolean in ra mt trong hai t True hoc False. Lnh 6}in ra: True
- Lnh 7}: phat ra mt ting Beep loa.
(2). Vi du v cac dang vit co quy cach:
Var
I : Integer;
R , Z : Real;
Ch : Char;
B : Boolean;
Begin
I := 123; R := 123.456; Ch := A; B := 2<5; Z := 543621.342;
Writeln( I :8 ); 1}
Writeln( -23564:8 ); 2}
Writeln( R:12:6); 3}
Giao trnh Lp trnh Pascal cn ban
18
Trang 1 8
Writeln( 35.123456789:12:6 ); 4}
Writeln( R:12 ); 5}
Writeln( Ch:5); 6}
Writeln(ABC:5); 7}
Writeln( B:7 ); 8}
Writeln( Z:1:2 ); 9}
End.
F Cach vit co quy cach se canh ni dung theo l bn phai, nu tha ch th phn
l bn trai c trng.
- Lnh 1} va 2} danh 8 ky t trn man hnh in cac s nguyn.
- Lnh 3} va 4} danh 12 ky t trn man hnh in cac s thc vi 6 s le phn
thp phn, kt qua in ra: 123.456000 va 35.123457 (do phn thp phn 6 ch nn
c lam tron s).
- Lnh 5}in gia tr cu a R vi 12 ch dang mu s: 1.23456E+02
- Lnh 6},7} danh 5 ch in ch A va xu ky t ABC.
- Lnh 8} danh 7 ky t in gia tr True.
- Lnh 9} in s thc Z nh sau: Writeln( Z : m : n ). Nu m n th s thc Z
c in vi n s le, con s ch trn man hnh th tuy vao dai cua s Z. Trong
trng hp m n va dai cua s ln hn m th s c t ng canh phai. Trng
hp m n va dai cua s nho hn m th s c canh phai d bao nhiu ky t
may trng bn trai.
Trng hp trong cu cn hin th du th ta phai vit hai du lin nhau ().
4 V du: Write( Dont forget me ! );
1 Kt qua: Trn man hnh hin th:
Dont forget me !
Ghi chu: Mun in d liu ra may in ta dung lnh Write hoc Writeln vi tham
s LST vao trc. Bin LST c khai bao trong Unit Printer, v vy, s dung
lnh in ta cn phai khai bao th vin Printer trong chng trnh.
4 V du:
Uses Printer;
Giao trnh Lp trnh Pascal cn ban
19
Trang 19
Begin
Writeln(Lst, Welcome to Turbo Pascal Language ! );
End.
1 Kt qua: Khi chay may in ra giy cu Welcome to Turbo Pascal Language !
3. Lnh Nhp:
Lnh nhp dung a d liu t ban phm vao cac bin.
Cu phap:
(1) Readln(Bin_1, bin_2, bin_n);
(2) Read(Bin_1, bin_2, bin_n);
Khi thc hin lnh nay, may dng lai ch ngi dung nhp vao u n ln nhp d
liu tng ng vi n bin.
Ngoai ra, ta co th s dung thu tuc Readln dng chng trnh va ch ngi
dung n mt phm bt ky tip tuc, ky t c n khng hin th ln man hnh.
Chu y:
- Cac bin trong thu tuc Readln phai thuc kiu nguyn, thc, ky t hoc xu ky
t . Do o, ta khng th nap t ban phm gia tr True hoc False cac bin kiu
Boolean.
- D liu nhp vao phai tng ng vi kiu a khai bao. Phai n phm Enter
thc hin lnh nhp sau khi go xong gia tr cn nhp.
4 V du 1: Vi a, b la hai bin nguyn, x la bin thc. Xet oan chng trnh sau:
Readln(a, b);
Readln(x);
Nu ta go cac phm: 2 24 6.5 14 Enter
1 Kt qua: a nhn gia tr 2, b nhn gia tr 24. Cac ky t con lai b bo qua va
khng c xet trong thu tuc Readln(x) tip theo. Nh vy, may dng lai cu lnh
Readln(x) ch nhp s liu cho bin x.
4 V du 2: Gia s ta a khai bao: Var s1, s2, s3 : String|5];
Xet cu lnh: Readln(s1, s2, s3);
Nu ta khng nhp ky t ma ch n Enter th ca 3 bin s1, s2, s3 u la xu
rng.
Giao trnh Lp trnh Pascal cn ban
20
Trang 20
Nu ta go ABCDE1234567 va n phm Enter th: s1 = ABCDE, s2 =
12345, s3 = 67.
4 V du 3: Vit chng trnh tnh din tch S cua hnh thang vi ay dai a, ay
ngn b, chiu cao h, tt ca c nh p t ban phm.
Program DienTichHinhThang;
Uses CRT;
Var a, b, h, s : Real;
Begin
ClrScr;
Write( Nhap gia tri cua a, b, h : );
Readln(a, b, h);
S := (a b) * h / 2;
Write( Dien tich S = ,S:1:5);
Readln;
End.
1 Kt qua khi chay chng trnh:
Nhap gia tri cua a, b, h : 5 3 4 Enter
Dien tich S = 16.00000
Chu y: Vi cach ly 3 gia tr bng mt lnh Readln( a, b, c); th cac gia tr ta
cn nhp cho mi bin phai cach vi cac gia tr khac t nht mt ky t trng. Ta co
th nhp a, b, c bng 3 lnh Readln(a); Readln(b); Readln(c);
_________ o o _________

BAI 4: CAC LNH CO C U TRUC TRONG NGN NG PASCAL
I. Lnh ghep:
Lnh ghep la mt nhom cac cu lnh c t gia hai t khoa BEGIN va END.
Lnh ghep c thc hin bng cach thc hin tun t cac cu lnh nm gia
BEGIN va END.
Cu phap:
Begin
cu lnh 1;
cu lnh 2;
Giao trnh Lp trnh Pascal cn ban
21
Trang 21
...
cu lnh n;
End;
Sau cu lnh n co th co du ; hoc khng. Lnh ghep cung la mt dang cu
lnh.
4 V du:
Begin
temp := x;
x := y;
y := temp;
End;
Chu y: Sau t khoa END co th co du ; hay khng tuy thuc vao cac lnh cu
truc k tip ta c hoc.
II. Lnh la chon:
1. Lnh IF:
Cu phap:
IF biu thc logic THEN
lnh 1
ELSE
lnh 2;
Lnh II co th khng co phn ELSE lnh 2.
F Giai thich lnh: Khi gp lnh nay may kim tra biu thc logic, nu biu
thc nay co gia tr TRUE (tc la ung nh iu kin t ra) th may thc hin lnh
1 nu ngc lai, tc biu thc logic co gia tr FALSE th lnh 2 c thc
hin. Trng hp trong cu lnh khng co phn ELSE va biu thc logic co gia
tr FALSE th lnh 1 khng c thc hin va may chuyn n cu lnh k sau
lnh IF o.
Chu y: cu lnh trc t khoa ELSE khng c co du ;. Trng hp co cu
lnh ghep c t k trc ELSE th t khoa END trc ELSE khng c t
du ;.
Giao trnh Lp trnh Pascal cn ban
22
Trang 22
4 V du 1: Chng trnh nhp t ban phm 2 s nguyn a, b. Kim tra va cho bit
s nao ln hn.
Var a, b : Integer;
Begin
Write( Nhap so a: );
Readln(a);
Write( Nhap so b: );
Readln(b);
If a > b then
Write( So lon hon la , a) tai v tr nay khng c t du; }
Else
Write( So lon hon la , b);
Readln; co th khng co du; tai cu lnh cui nay }
End.
4 V du 2: Vit chng trnh kim tra trong ba s a, b, c c nhp t ban phm, s
nao la ln nht.
Var a, b, c, max : Integer;
Begin
Write( Nhap so a: );
Readln(a);
Write( Nhap so b: );
Readln(b);
Write( Nhap so c: );
Readln(c);
Max := a;
If max < b then
Max := b;
If max < c then
Max := c;
Write( So lon hon la , max);
Readln;
End.
4 V du 3: Vit chng trnh kim tra ba s c nhp t ban phm co th la dai
cua ba canh trong mt tam giac hay khng? Nu ung la ba canh cua tam giac th
Giao trnh Lp trnh Pascal cn ban
23
Trang 23
tnh chu vi va din tch tam giac, xet tam giac co phai la tam giac u, cn hay
khng.
Var a, b, c, p, s : Real;
Begin
Write( Nhap ba so a, b, c : );
Readln(a, b, c);
If (a>0) and (b>0) and (c>0) and (ab>c) and (ac>b) and (bc>a) then
Begin
Writeln( Ba canh tren tao thanh mot tam giac. );
If (a=b) and (b=c) then write( Day la tam giac deu. );
If (a=b) or (a=c) or (b=c) then write( Day la tam giac can. );
p := (a b c) / 2;
s := SQRT(p * ( p - a ) * ( p - b ) * ( p - c ) );
Writeln( Chu vi: ,2 * p:0:5, . Dien tich:, s:0:5);
End
Else
Write( Ba so nay khong tao thanh duoc mot tam giac. );
Readln;
End.
2. Lnh CASE:
Cu lnh IF trn ch re vao mt trong hai nhanh tng ng vi gia tr cua biu
thc logic. Con lnh CASE (re nhanh theo gia tri) cho phep la chon thc hin
mt trong nhiu cng vic tuy theo gia tr cua biu thc.
Cu phap:
CASE biu thc OF
Tp_hng_1: lnh_1;
Tp_hng_2: lnh_2;
.......
Tp_hng_n: lnh n;
ELSE
lnh n +1;
END;
Lnh CASE co th khng co phn ELSE lnh n +1;
Giao trnh Lp trnh Pascal cn ban
24
Trang 2 4
F Giai thich lnh:
1. Tp_hng_i (i = 1,..., n) co th bao gm cac hng va cac oan hng, v du:
3 : lnh 1;
5, 10.. 15 : lnh 2;
A, Chr(152) : lnh 3;
0.. 9 : lnh 4;
2. Gia tr cua biu thc va gia tr trong cac Tp_hng_i phai co cung kiu va phai
la kiu v hng m c (nh nguyn, logic, ky t, lit k).
3. Tp hng nao co cha gia tr tng ng vi gia tr cua biu thc th lnh sau
du : cua tp hng o c thc hin, sau o may thoat khoi lnh CASE.
4. Trong trng hp tt ca cac tp hng khng co cha gia tr tng ng vi gia
tr cua biu thc th lnh sau t khoa ELSE c thc hin. Trng hp nay nu
khng co ca phn ELSE lnh n+1; th lnh CASE nay c thoat va khng co
lnh nao sau du : c thc hin.
4 V du 1: Vit chng trnh nhp vao mt im kim tra t ban phm va in kt
qua xp loai: loai Yu (di 5 im), loai Trung bnh (5, 6 im), loai Kha (7, 8
im), loai Gioi (9, 10 im).
Var Diem : Byte;
Begin
Write( Nhap diem : );
Readln(Diem);
Case Diem of
0.. 4 : Write( Xep loai yeu. );
5.. 6 : Write( Xep loai Trung binh. );
7.. 8 : Write( Xep loai Kha. );
9..10: Write( Xep loai Gioi. );
Else
Write( Diem nhap sai. );
End;
Readln;
End.
4 V du 2: Vit chng trnh cho bit s ngay cua mt thang. Thut toan nh sau:
Giao trnh Lp trnh Pascal cn ban
25
Trang 2 5
- Nhp thang vao bin Thang.
- Sau o, da vao bin Thang bit s ngay, s ngay nay c a vao bin
SoNgay. Trng hp:
Thang 1, 3, 5, 7, 8, 10, 12: SoNgay := 31;
Thang 2:
Yu cu nhp nm vao bin Nam.
Trng hp Nam chia ht cho 4: SoNgay := 29;
Trng hp Nam khng chia ht cho 4: SoNgay := 28;
Thang 4, 6, 9, 11: SoNgay := 30;
- In ni dung bin SoNgay.
Uses CRT;
Var SoNgay, Thang : Byte;
Nam : Integer;
Begin
ClrScr;
Write( Ban kiem tra thang may (dang so): );
Readln(Thang);
Case Thang of
4, 6, 9, 11 : SoNgay := 30;
2 : Begin
Write( Thang nay thuoc nam nao (4 chu so): );
Readln(Nam);
If Nam mod 4 = 0 then SoNgay := 29;
Else SoNgay := 28;
End
Else
SoNgay := 31;
End;
If Thang = 2 then
Writeln( Thang , thang , / , nam , co , SoNgay , ngay. )
Else Writeln( Thang , thang , co , SoNgay , ngay. );
Readln
End.
III. Cac cu lnh lp:
Giao trnh Lp trnh Pascal cn ban
26
Trang 2 6
Trng hp giai quyt bai toan nao o ma ta cn phai lp i lp lai mt cng
vic nao o th ta se cn n lnh lp. S bc lp co th xac nh hoc khng xac
nh. Trong ngn ng Pascal co ba cu lnh lp la FOR, REPEAT, WHILE. Nu s
vong lp xac nh th ta s dung lnh IOR con vong lp khng xac nh th ta s
dung lnh REPEAT hoc WHILE. Tt ca cac loai lnh lp phai co im dng, cho
du o la loai xac nh hay khng xac nh.
1. Cu lnh FOR:
Vong lp FOR co hai dang la dang vong lp tin va vong lp lui.
a. Dang tin:
Cu phap: FOR Bin := Biu_thc1 TO Biu_thc2 DO Lnh
Bin trong cu truc FOR goi la bin iu khin. Kiu cua bin iu khin,
Biu_thc1, Biu_thc2 phai la kiu v hng m c (nh nguyn, logic, ky t,
lit k).
F Giai thich s hoat ng lnh FOR dang tin:
(1). u tin, Bin nhn gia tr cua biu_thc1.
(2). Ma y kim tra Bin co nho hn hoc bng biu_thc2 hay khng tc la xet
iu kin (Bin = Biu_thc2) ?
(3). Nu iu kin trn la sai th may thoat khoi vong lp FOR thc hin cac
lnh k tip sau vong lp FOR. Nu i u kin trn la ung th Lnh c thc
hin, sau o, Bin c tng mt gia tr va quay tr lai bc (2).
Lnh se c thc hin ((biu_thc2 - biu_thc1) + 1) ln.
b. Dang lui:
Cu phap: FOR Bin := Biu_thc1 DOWNTO Biu_thc2 DO Lnh
F Giai thich s hoat ng lnh FOR dang lui:
(1). u tin, Bin nhn gia tr cua biu_thc1.
(2). May kim tra Bin co ln hn hoc bng biu_thc2 hay khng tc la xet
iu kin (Bin = Biu_th c2) ?
(3). Nu iu kin trn la sai th may thoat khoi vong lp FOR thc hin cac
lnh k tip sau vong lp FOR. Nu iu kin trn la ung th Lnh c thc
hin, sau o, Bin c giam mt gia tri va quay tr la i bc (2).
Giao trnh Lp trnh Pascal cn ban
27
Trang 27
Chu y:
- Khng c thay i gia tr cua bin iu khin bng mt lnh bt ky trong
vong lp FOR. iu nay co th lam cho vong lp khng co li thoat va dn n treo
may.
- Cac Biu_thc1 va Biu_thc2 c c lng trc khi vao vong lp, do o
s vong lp khng b thay i. Ta co th li dung tnh tng hoc giam cua bin iu
khin gan gia tr cua no cho bt ky bin nao hoc thc hin cng vic nao o co
tnh ch t tng hoc giam.
4 V du 1: Chng trnh in ln man hnh 3 cu Chao cac ban ! co s th t ng
trc mi cu.
Uses CRT;
Var I : integer;
Begin
ClrScr;
Ior I := 1 to 5 do
Writeln( I , => , Chao cac ban );
Readln;
End;
4 V du 2: In ln man hnh 4 dong ch cai in thng va IN HOA theo chiu xui
va chiu ngc.
Uses CRT;
Var kt : Char;
Begin
ClrScr;
Ior kt := a to z do
Write(kt : 3);
Writeln;
Ior kt := z Downto a do
Write(kt : 3);
Writeln;
Ior kt := A to Z do
Write(kt : 3);
Writeln;
Ior kt := Z Downto A do
Giao trnh Lp trnh Pascal cn ban
28
Trang 2 8
Write(kt : 3);
Readln;
End.
4 V du 3: Chng trnh in ln man hnh 256 ky t cua bang ma ASCII.
Var i : Byte;
Begin
Ior i := 0 to 255 do
Begin
Writeln( Ma thu , i , la : , CHR(i) );
If (i1) mod 22 = 0 then
Begin
Write( An phim bat ky de xem tiep ! );
Readln;
End;
End;
Readln;
End.
2. Cu lnh Repeat:
Cu phap:
REPEAT
Lnh 1;
Lnh 2;
.........
L nh n;
UNTIL Biu thc logic ;
F Giai thich s hoat ng lnh REPEAT:
u tin, thc hin ln lt cac lnh Lnh 1, Lnh 2,..., Lnh n, sau o
kim tra Biu thc logic . Nu Biu thc logic nhn gia tr FALSE th lai
quay ln u vong lp thc hin tip Lnh 1, Lnh 2,..., Lnh n. Nu
Biu thc logic nhn gia tr TRUE th may thoat khoi vong lp. Nh vy, cac
lnh nm gia REPEAT... UNTIL c thc hin t nht mt ln.
Chu y:
- Cac lnh nm gia REPEAT va UNTIL khng co t khoa Begin va End.
Giao trnh Lp trnh Pascal cn ban
29
Trang 29
- Trong vong lp phai co lnh nao o lam thay i gia tr mt bin trong Biu
thc logic nhm lam dng vong lp, nu khng vong lp se chay mai khng
ngng dn n treo may.
4 V du 1: Chng trnh yu cu nhp vao mt mt khu la ttthcn th mi thoat
khoi chng trnh.
Uses CRT;
Var Password : String|6];
Begin
Repeat
Write( Xin hay nhap mat khau : );
Readln(Password);
Until Password = ttthcn;
Write( Ban da nhap dung mat khau ! );
Delay(1000);
Readln;
End.
F Giai thich lnh: Delay(1000): Thu tuc Delay(n) la thu tuc cua Unit CRT tc la
dng mt khoan thi gian la 1000 xung nhip cua may, v vy, tuy theo tc cua
may ma co khoan thi gian thc dng lai khac nhau.
4 V du 2: Chng trnh s dung ban phm gia thanh phm an Piano vi quy
nh: n phm D phat ra nt Do, phim R la nt Re, M = Mi, F = Fa, S = Sol, L = La,
S = Si.
Uses CRT;
Var node : Char;
Begin
ClrScr;
Writeln( D = Do , R = Re , M = Mi , I = Ia , S = Sol , L = La , X = Si );
Writeln( Q = Do cao , W = Re cao , E = Mi cao , K = Ket thuc );
Repeat
Node := ReadKey;
Case Node of
d : Begin NoSound; Sound(262); End;
r : Begin NoSound; Sound(294); End;
m : Begin NoSound; Sound(330); End;
Giao trnh Lp trnh Pascal cn ban
30
Trang 30
f : Begin NoSound; Sound(349); End;
s : Begin NoSound; Sound(392); End;
l : Begin NoSound; Sound(440); End;
x : Begin NoSound; Sound(494); End;
q : Begin NoSound; Sound(523); End;
w : Begin NoSound; Sound(587); End;
e : Begin NoSound; Sound(659); End;
End;
Until (Upcase(Node) = K);
NoSound;
End.
Ghi chu: Thu tuc Sound(n) dung phat mt m thanh co tn s n Hertz cho
n khi gp ham NoSound (ngng phat m thanh), hai thu tuc trn thng i i
vi nhau khi s dung. Nhng chng trnh cn s lp i lp lai theo y mun thng
s dung vong lp Repeat... Until. Cach thc hin nh sau:
Var TiepTuc : Char;
......
Begin
Repeat
<... Cac lnh cua chng trnh >
Write( Co tiep tuc nua khong (C/K) ? );
Readln(TiepTuc);
Until Upcase(TiepTuc) = K;
End.
3. Cu lnh While:
Cu phap:
WHILE Biu thc logic DO
Lnh ;
F Giai thich lnh: Gp lnh nay trc tin may kim tra Biu thc logic , nu
no co gia tr TRUE th thc hin Lnh va sau o quay lai kim tra Biu thc
logic va qua trnh c tip tuc nh vy. Nu Biu thc logic nhn gia tr
FALSE th may lp tc thoat khoi vong lp. Nh vy lnh WHILE dung lp i
lp lai mt cng vic trong khi iu kin con c thoa man.
Giao trnh Lp trnh Pascal cn ban
31
Trang 31
Ghi chu: Nu ngay t khi mi vao vong lp ma thy iu kin khng c thoa
man, may t ng thoat ngay ma khng thc hin Lnh bn trong vong lp.
4 V du: Chng trnh tm c s chung ln nht cua hai s nguyn.
Var a, b, r : Integer; tl : Char;
Begin
Repeat
Write( Nhap hai so a va b : );
Readln(a, b);
While b <> 0 do
Begin
r := a mod b;
a := b;
b := r;
End;
Writeln( Uoc so chung lon nhat la , a );
Write( Ban tim USCLN nua khong (C/K) ? );
Readln(tl);
Until Upcase(tl) = K;
End.
IV. Cac lnh Goto, Break, Exit va Halt:
1. Lnh Goto:
Cu phap:
GOTO Lab;
Trong o, Lab la mt nhan. Nhan la mt tn nh tn bin hoc la mt s nguyn
t 0 n 9999. Tn nhan c khai bao theo hng dn bai1 (IV.2).
Khi gp lnh Goto Lab, may nhay khng iu kin n thc hin cu lnh sau
nhan Lab.
Lnh Goto ch cho phep nhay t v tr nay n v tr khac trong cung mt thn
ham, thu tuc, cho phep nhay t trong mt vong lp ra ngoai; khng cho phep nhay
t ngoai vao trong mt vong lp, thu tuc, ham hoc khi lnh.
4 V du: Chng trnh tm cac s nguyn t nm gia hai s nguyn dng n1 va
n2, hai s nay c nhp t ban phm (khai nim s nguyn t: la s nguyn chi
chia chn ht cho 1 va chinh no).
Giao trnh Lp trnh Pascal cn ban
32
Trang 32
Program NguyenToByGoto;
Label L1, L2;
Var i, j, n1, n2 : Integer;
TL : Char;
Begin
L1: Write( Nhap hai gia tri nguyen : );
Readln(n1, n2);
Ior i := n1 to n2 do
Begin
Ior j := 2 to i - 1 do
If (i mod j = 0) then Goto L2;
Write( i, );
L2: ; ; cung la mt lnh, nhng la lnh rng, tc la khng lam g ca }
End;
Writeln;
Write( Ban muon tiep tuc khong ? (C/K) );
Readln(TL);
If (Upcase(TL) = C) then Goto L1;
End.
2. Lnh Break:
Trong thn cac lnh lp FOR, WHILE, REPEAT khi gp lnh Break th may se
thoat khoi chu trnh. Nu co nhiu lnh lp lng nhau th may thoat khoi chu trnh
trong nht cha lnh Break.
4 V du: In ra man hnh 4 day s t 1 n 49.
Uses CRT;
Var i, j : Integer;
Begin
ClrScr;
Ior j := 1 to 4 do
Begin
Writeln;
Writeln( j = , j );
Ior i := 1 to 300 do * }
Begin If i = 50 then
Giao trnh Lp trnh Pascal cn ban
33
Trang 33
Break; Thoat khoi vong lp Ior * }
Write( i, );
End;
Readln;
End;
Readln;
End.
3. Lnh Exit:
Nu lnh Exit thuc chng trnh con th vic thc hin Exit lam chm dt
chng trnh con, tr v ch goi no. Nu lnh Exit thuc chng trnh chnh th
vic thc hin no se lam chm dt chng trnh.
4 V du: Chng trnh c nhc lai cu Welcome to Turbo Pascal Language sau
mi ln n mt phm. Chng trnh se thoat khi n phm E hoc e.
Uses CRT;
Label L1;
Var TL : Char;
Begin
L1: Writeln( Welcome to Turbo Pascal Language ! );
TL := Readkey; Ch mt phm c n, gia tr c t vao bin TL, y la
ham cua Unit CRT }
If (Upcase(TL) = E) then
Exit
Else
Goto L1;
End.
4. Lnh Halt:
Lnh Halt dung dng ngay chng trnh ang chay. Lnh Halt thng c
dung khi phai mt trng hp nao o ma thut toan khng th tip tuc c.
Giao trnh Lp trnh Pascal cn ban
34
Trang 3 4
BAI 5. D LIU KIU V HNG LIT K VA
KIU OAN CON
I. Kiu lit k:
Kiu lit k c nh ngha bng cach lit k tt ca cac gia tr cua kiu thng
qua cac tn do ngi lp trnh t ra va danh sach cac gia tr trn c t trong cp
ngoc n ( ).
4 V du:
Type Days = (Sun, Mon, Tue, Wed, Thu, Fri, Sat);
Viec = (DiHoc, LamBai, ThiNghiem, Nghi);
Khi o, ta co th khai bao bin nh sau:
Var HomQua, HomNay : Days;
Lam : Viec;
Hoc ta co th khai bao trc tip vi m ta kiu d liu nh sau:
Var GioiTinh : (Nam, Nu);
Color : (Red, Blue, Green, White, Black);
Chu y:
(1). Co th thc hin phep gan trn cac tr kiu lit k, v du:
Lam := Nghi;
Color := Blue;
(2). Cac gia tr cua cac kiu lit k co th so sanh vi nhau theo quy nh: Gia tr
ng trc nho hn gia tr ng sau. Ta ch s dung toan t so sanh cho kiu lit k
va cung la toan t duy nht dung cho kiu nay.
4 V du: Theo nh khai bao trn, nu so sanh Thu Fri cho kt qua True,
hoc Red = Blue cho kt qua False.
(3). Cac ham chun ap cho kiu lit k:
- Ham ORD: Cho th t tr cua i s trong kiu lit k.
4 V du: theo nh khai bao trn, ORD(Sun) = 0, ORD(Mon) = 1.
- Ham PRED: Cho tr ng trc cua i s trong kiu lit k.
Giao trnh Lp trnh Pascal cn ban
35
Trang 3 5
4 V du: theo nh khai bao trn, PRED(Sat) = Fri, PRED(LamBai) = DiHoc.
PRED(Sun) li chng trnh.
- Ham SUCC: Cho tr i sau i s trong kiu lit k.
4 V du: theo nh khai bao trn, SUCC(Fri) = Sat. SUCC(Sat) li chng trnh.
(4). Khng th nhp, xut i vi d liu kiu lit k. Gia tr thuc kiu lit k
thng c dung lam ch s cho vong lp FOR, cac trng hp la chon trong
lnh CASE, ch s cho cac mang (Array).
4 V du: Chng trnh i th trong tun ra s. Chu nht ng vi s 0, Th hai ng
vi s 1,...
Type
Thu = (ChuNhat, ThuHai, ThuBa, ThuTu, ThuNam, ThuSau, ThuBay);
Var
Ngay : Thu;
Begin
Writeln( Chuong trinh doi thu ra so );
Ior Ngay := ChuNhat to ThuBay do
Write(Ord(Ngay));
Readln;
End.
II. Kiu oan con:
Kiu oan con c nh ngha do ngi dung da trn c s cac kiu v hng
m c (Nguyn, Logic, Ky t, Lit k) theo dang:
Tn_kiu_oan_con = Hng_di.. Hng_trn;
Trong o: Hng_di, Hng_trn la cac gia tr hng co cung kiu gia tr va thoa
man iu kin: Hng_di Hng_trn. Khi o, cac gia tr cua kiu oan con se
xac nh trong khoan t Hng_di n Hng_trn.
4 V du:
Type
Ky_so = 0.. 9; Kiu gm cac ky t s t 0 n 9}
Ngay = (Hai, Ba, Tu, Nam, Sau, Bay, ChuNhat);
Ngay_Lam_Viec = Hai.. Bay; Kiu Ngay_Lam_Viec la khoan con cua kiu
Ngay }
Giao trnh Lp trnh Pascal cn ban
36
Trang 3 6
ChiSo = 1.. 50; Kiu ChiSo gm cac s nguyn t 1 n 50 }
Tuoi_Lam_Viec = 18.. 50;
Kiu min con giup cho chng trnh d oc, d kim tra va tit kim b nh.

_________ o o _________
BAI 6. KIU TP HP VA KIU MANG
I. Kiu tp hp:
1. nh ngha:
D liu kiu tp hp la mt tp hp cua nhng d liu cung thuc mt kiu v
hng m c. Mt kiu tp hp c khai bao theo dang sau:
SET OF Kiu_c_s;
4 V du:
Type
Chu_so = Set of 0.. 9;
Chu_hoa = Set of A.. Z;
Var
So : Chu_so;
Chu : Chu_hoa;
Mau : Set of (Xanh, Vang, Tim);
Chu y :
- Cac gia tr c a vao tp hp cn co s th t trong khoan t 0 n 255.
- Nh vy, vi khai bao:
Type
Tap_so = Set of 10.. 256;
1 Kt qua khi dch may se thng bao li: Set base type out of range.
- Mt d liu kiu tp hp co dang cac phn t nm trong hai du ngoc | ]. V
du: |A, D, E ], |3,5..9];
- Tp hp rng ky hiu la | ].
- Bin tp hp cho phep co t 0 n 256 phn t.
- Co th thc hin phep gan trn kiu tp hp. V du:
So := |0, 4, 9];
Chu := | ]; Tp hp rng}
Giao trnh Lp trnh Pascal cn ban
37
Trang 37
Mau := |Vang, Tim];
2. Cac phep toan trn tp hp:
a. Phep toan quan h:
Phep toan = cho gia tr True nu hai tp hp bng nhau.
Phep toan < > cho gia tr True nu hai tp hp khac nhau.
Phep toan <= A = B cho gia tr True nu A la tp con cua B.
Phep toan >= A = B cho gia tr True nu B la tp con cua A.
Chu y: Khng co phep toan va cho kiu tp hp. kim tra tp hp A co
tht s nm trong B hay khng ta dung cu lnh:
If (A B) and (A=B) then Write( A la tap con that su cua B );
b. Phep toan IN:
Phep toan IN dung xem xet mt phn t nao o co nm trong tp hp khng ?
Nu phn t o co trong tp hp th phep toan se tra v gia tr True, ngc lai cho
gia tr False. V du:
C In |A, C, D] cho kt qua True.
E In |A, C, D] cho kt qua False.
c. Phep toan hp, giao, hiu:
Goi A, B la hai tp hp cung kiu d liu.
A + B la hp cua A va B: tp hp cac phn t thuc A hoc thuc B.
A * B la giao cua A va B: tp hp cac phn t thuc A va thuc B.
A - B la hiu cua A va B: tp hp cac phn t thuc A va khng thuc B.
4 V du:
A := |1, 3, 9];
B := |9, 2, 5];
Vy:
A * B co gia tr la |9].
A - B co gia tr la |1, 3].
4 V du: Vit chng trnh nhp vao mt ch cai. Xet xem ch cai o la nguyn
m hay phu m.
Var
ChuCai, NguyenAm : Set of Char;
Ch : char;
Giao trnh Lp trnh Pascal cn ban
38
Trang 3 8
Begin
ChuCai := |A.. Z, a.. z];
NguyenAm := |A, E, I, O, U];
Repeat
Write( Nhap mot chu cai de kiem tra: );
Readln(Ch);
Until Ch IN ChuCai;
If Upcase(Ch) IN NguyenAm then
Writeln(Ch, la nguyen am. )
Else
Writeln(Ch, la phu am. );
Readln;
End.
II. Kiu mang:
1. Khai nim:
Mang (Array) la mt kiu d liu co cu truc bao gm mt s c nh cac thanh
phn co cung kiu, co cung mt tn chung. Cac thanh phn cua mang c truy
xut thng qua cac ch s.
4 V du: Mang A gm nm phn t: A|1]=7, A|2]=9, A|3]=0, A|4]= -2, A|5]=3:







Cng dung cua mang la dung lu tr mt day s liu co cung mt tnh cht
nao o. V du: cac im kim tra mt mn hoc nao o cua mt hoc sinh, cac gia tr
cua mt day s c nhp t ban phm.
2. Khai bao mang mt chiu:
Type
Tn_kiu_mang = ARRAY |Chi_s ] OF Kiu_phn_t;
Var
Tn_bin_mang : Tn_ kiu_mang;
A|2]=9 A|5]=3 A|3]=0 A|4]=-2 A|1]=7
Mang A
Cac chi s truy cp
Cac gia tri cua mang co cung kiu d liu
Giao trnh Lp trnh Pascal cn ban
39
Trang 39
Trong o:
- Kiu_phn_t la kiu d liu cua mi phn t trong mang (la kiu bt ky).
- Chi_s la danh sach cac ch s truy cp n cac thanh phn cua mang.
Ca c ch s co th la:
Mt oan con, v du:
Type
Ho_Ten = Array|1..100] of String|30];
He_so_luong = Array|1..100] of Real;
Mt danh sach lit k, v du:
Type
Toc_do = Array|(Oto, Tai, Buyt, GanMay)] of Integer;
Mt kiu d liu, v du:
Type
ASCIIType = Array|Byte] of Char;
Xe = (Oto, Tai, Buyt, GanMay);
Toc_do = Array|Xe] of Integer;
Vi cac kiu mang trn, ta co th khai bao cac bin mang sau:
Var
HeSo : He_so_luong;
HT : Ho_Ten;
Speed : Toc_do;
Ngoai cach nh ngha Tn_kiu_mang nh trn ta cung co th khai bao mt
bin mang trc tip sau lnh VAR:
Var ch : Array|0.. 25] of Char;
Th : Array|-2.. 4] of Real;
3. Truy cp cac phn t cua mang:
Vic truy nhp vao mt phn t nao o cua bin mang c thc hinh qua tn
bin mang, theo sau la gia tr ch s t trong du | ]. V du:
Ch|2] := B;
Th|1] := 12.5;
HT|1] := Vu Duc Dung;
Giao trnh Lp trnh Pascal cn ban
40
Trang 40
4 V du 1: Nhp n s thc t ban phm vao mt mang, tnh trung bnh cng cua cac
s nay.
Uses CRT;
Var i,n : Integer;
s : Real;
a : Array|1.. 100] of Real;
Begin
ClrScr;
Write( Ban muon nhap bao nhieu PT cho mang : );
Readln(n);
Ior i := 1 to n do
Begin
Write( PT A| , i , ]= );
Readln(a|i]);
End;
s := 0;
Ior i := 1 to n do
s := s a|i];
Write( Trung binh cong cua day so = , s / n : 0 : 4 );
Readln;
End.
4 V du 2: Nhp t ban phm n phn t thc cua mt mang, sp xp day theo th t
tng dn, xut gia tr cua mang ln man hnh.
Var a : array|1..10] of Real;
b : array|1..10] of Real;
temp : Real;
i, j, n : integer;
Begin
n:=10;
Ior i := 1 to n do
Begin
Write( ' PT thu ' , i , ':' );
Readln( a|i] );
End;
Giao trnh Lp trnh Pascal cn ban
41
Trang 41
Ior i := 1 to n - 1 do
Ior j := n downto i do
If a|i] > a|j] then
Begin
temp := a|i];
a|i]:=a|j];
a|j]:=temp;
End;
Ior i := 1 to n do
Write( a|i] : 0 : 3 , ' ' );
Readln;
End.
4. Mang nhiu chiu:
Phn nay chu yu trnh bay cac mang hai chiu. Cac mang nhiu hn hai chiu
c suy din mt cach t nhin.
Vic khai bao mang hai chiu cung ging nh mang mt chiu, ch co iu khac
la no co hai tp ch s c vit cach nhau bi du ,.
4 V du:
Type
Mang1 = Array|1.. 30, 1.. 50] of Integer;
Mang2 = Array|1.. 3, 0.. 2] of Real;
Var
A : Mang1;
B : Mang2;
Trong o, s phn t cua mang s thc B la 3 x 3 = 9 (phn t), sp t trong b
nh theo th t nh sau:
B|1, 0] B|1, 1] B|1 ,2]
B|2, 0] B|2, 1] B|2 ,2]
B|3, 0] B|3, 1] B|3 ,2]
Chu y: Mang hai chiu con goi la ma trn. Trong v du trn, B la ma trn cp 3
x 3. Trong mang hai chiu, ch s sau truy cp nhanh hn ch s trc. truy cp
n phn t hang th i, ct th j cua mang hai chiu B ta dung cach vit:
B| i ]| j ]
Giao trnh Lp trnh Pascal cn ban
42
Trang 42
hoc
B| i , j ]
4 V du: Nhp mt ma trn m hang, n ct t ban phm. Tnh va in ra man hnh tng
cua mi ct va tng cua mi hang.
Const mMax = 30, nMax = 30;
Type
Mang = Array|1.. mMax, 1.. nMax] of Real;
Var
n, m, i, j : Integer;
sum : Real;
a : Mang;
Begin
Write( Ban muon nhap ma tran bao nhieu hang va cot ? );
Readln( m, n );
Ior i := 1 to m do
Ior j := 1 to n do
Begin
Write( ' PT thu | ' , i , ' , , j, ] = ' );
Readln( a| i, j ] );
End;
Ior j := 1 to n do
Begin
sum := 0;
Ior i := 1 to m do
Sum := sum a| i, j ];
Write( Tong cot , j , = , sum : 0 : 5 );
End;
Ior i := 1 to m do
Begin
sum := 0;
Ior j := 1 to n do
Sum := sum a| i, j ];
Write( Tong hang , i , = , sum : 0 : 5 );
End;
Readln;
Giao trnh Lp trnh Pascal cn ban
43
Trang 43
End.

_________ o o _________

BAI 7. CHNG TRNH CON: HAM VA THU TUC

Khi lp trnh, co nhng oan chng trnh cn dung nhiu ln. tranh vic vit
lai oan nay, ta nn chuyn oan chng trnh nay thanh mt chng trnh con va
mi ln cn thc hin cng vic o th ta goi no thng qua tn.
Chng trnh con con mu hoa mt chng trnh lam cng vic nao o.
Ngi khac dung chng trnh con chi cn bit truyn s liu vao va ly kt qua ra
nh th nao ma khng cn phai quan tm n thut toan trong chng trnh con nh
th nao.
Khi vit nhng chng trnh ln, d dang quan ly, g ri va hiu chnh
chng trnh, ta nn phn chng trnh thanh nhiu cng vic c lp, mi cng
vic la mt chng trnh con. Chng trnh con gm co hai loai la HAM (Function)
va THU TUC (Procedure).
I. Ham va thu tuc:
Cu truc cua ham co dang:
FUNCTION Tn_Ham(ThamS1: Kiu; TS2: Kiu;... ) : Kiu;
Var Cac _bin_cuc_b;
Begin
Cac lnh tinh toan;
...;
Tn_Ham := Gia _tri;
End;
Phng phap goi ham: ta goi ham thng qua tn kem theo tham s cua ham nh
sau:
Tn_ham(Danh sach cac tham s thc s);
Cu truc cua thu tuc co dang:
PROCEDURE Tn_Thu _tuc(TS1: Kiu; TS2: Kiu;...; Var TS3: Kiu; Var TS4:
Kiu;... );
Giao trnh Lp trnh Pascal cn ban
44
Trang 44
Var cac bin cuc b;
Begin
Cac lnh;
...;
End;
Phng phap goi thu tuc:
Tn_ham(Danh sach cac tham s thc s);
S khac nhau c ban gia ham va thu tuc la ham tra v mt gia tri thng qua tn
ham, ham co th tham gia vao cac biu thc tinh toan con thu tuc khng cho gia tri
nao ca . Khi tao ham, trong thn ham bao gi cung co gia tri gan cho tn ham
ham tra v gia tri nay khi c goi.
Cac tham s khac sau tn ham va tn thu tuc goi la cac tham s hnh thc (hay
con goi la i). Trong thu tuc, cac tham s hnh thc co hai loai: cac tham s c
khai bao sau t khoa Var goi la tham s bin, cac s khai bao khng co t khoa Var
trc goi la tham s gia tri. Trong ham chi co tham s gia tri, tc khai bao ma
khng co t khoa Var.
Tham s thc s la cac tham s dung trong li goi ham hay thu tuc. Danh sach
cac tham s thc s trong li goi ham phai tng ng vi danh sach cac tham s
hnh thc trong phn khai bao chng trnh con va chung phai tng ng v kiu.
Trong thu tuc, cac tham s gia tri thng la cac bin cha d liu a vao thu
tuc; cac tham s bin la cac bin ma kt qua tinh toan cua thu tuc se cha vao o
khi ra khoi thu tuc, ta co th dung chung tinh toan tip.
4 V du cach s dung tham s gia tr va tham s bin:
Var a, b, c, d : Integer;
Procedure Chuyen(x, y: Integr; Var u, v: Integer);
Begin T khoa bt u thu tuc Chuyen }
x := 2 * x;
y := 3 * y;
u := 4 * u;
v := 5 * v;
End;
Begin T khoa bt u chng trnh chinh }
a := 10;
Giao trnh Lp trnh Pascal cn ban
45
Trang 45
b := 10;
c := 10;
d := 10;
Chuyen(a, b, c, d);
Write( a = , a, . b = , b, . c = , c, . d = , d );
Readln;
End.
1 Kt qua khi chay chng trnh: a = 10. b = 10. c = 40. d =50
II. Bin toan cuc, bin cuc b va vic truyn d liu:
Bin toan cuc la bin khai bao u chng trnh chnh, tn tai trong sut thi
gian lam vic cua chng trnh. Ta co th s dung va lam thay i gia tr cua bin
toan cuc nh cac cu lnh trong chng trnh chnh cung nh trong tt ca cac
chng trnh con.
Bin cuc b la bin la bin khai bao u chng trnh con. Chung c cp
phat b nh khi chng trnh con c goi n va b xoa khi may thoat khoi chng
trnh con o. Bin cuc b co gia tr trong chng trnh con va tt ca cac chng
trnh con khac nm trong chng trnh con nay.
Nu tn bin cuc b cua mt chng trnh con trung vi mt tn bin toan cuc
th may khng b nhm ln, may se dung hai nh khac nhau lu tr hai bin,
khi ra khoi chng trnh con, bin cuc b t ng c xoa.
Khi gp mt li goi n chng trnh con, may se thc hin cac bc sau:
- Cp phat b nh cho cac i, cac bin cuc b.
- Truyn gia tr cua cac tham s thc s cho cac tham s gia tr tng ng, truyn
a ch cac tham s thc s ng vi tham s bin cho cac tham s bin cua thu tuc.
- Thc hin cac lnh trong chng trnh con, trong khi thc hin chng trnh
con, cac bin cuc b va cac tham s gia tr co th b bin i nhng khng anh
hng n cac bin bn ngoai. Trai lai, moi thay i cua tham s bin trong chng
trnh con se keo theo s thay i cua tham s thc s tng ng (v co s truyn
theo ia chi). Do o, khi thoat khoi chng trnh con, cac tham s thc s ng vi
tham s bin vn gi c gia tri mi nht do chng trnh con tao ra.
- Thc hin xong cac lnh cua chng trnh con, may xoa tt ca cac i va cac
bin cuc b va tr v lnh k sau ni goi no.
Giao trnh Lp trnh Pascal cn ban
46
Trang 46
Vic ly kt qua thc hin chng trnh con nh sau: nu la ham th ly kt qua
thng qua tn ham, nu la thu tuc th kt qua tham s thc s ng vi tham s
bin. Khi cn ly duy nht mt gia tr t chng trnh con th ta lp mt
FUNCTION, khi cn ly t hai gia tr tr ln t chng trnh con hoc khng ly
gia tr nao th ta phai lp PROCEDURE.
4 V du 1: Lp ham tnh din tch hnh thang. Nhp d liu cua hai tha rung
hnh thang va tnh tng din tch hai tha rung.
Var a1, b1, h1, a2, b2 , h2, s : Real;
(************* Bat dau Iunction **************)
Iunction DTHinhThang(a, b, h) : Real;
Begin
DTHinhThang := (a b) * h / 2;
End;
(********* Bat dau chuong trinh chinh **********)
Begin
Write( Canh dai, ngan va cao cua thua ruong thu nhat: );
Readln(a1, b1, h1);
Write( Canh dai, ngan va cao cua thua ruong thu hai: );
Readln(a2, b2, h2);
s := DTHinhThang(a1, b1, h1) DTHinhThang(a2, b2, h2);
Writeln( Tong dien tich hai thua ruong = , s : 0 : 3);
Readln;
End.
4 V du 2: Lp ham tnh c s chung ln nht (USCLN). Sau o, dung ham nay
tnh USCLN va bi s chung nho nht (BSCNN) cua hai s c nhp t ban
phm.
Var m, n, usc, bsc: Integer;
(************ Iunction USCLN *************)
Iunction USCLN(a, b : Integer): Integer;
Var r : Integer;
Begin
While b < > 0 do
Begin
r := a mod b;
Giao trnh Lp trnh Pascal cn ban
47
Trang 47
a := b;
b := r;
End; a hien tai la USCLN cua a va b ban dau }
USCLN := a;
End;
(********* bat dau chuong trinh chinh *********)
Begin
Write( ' Nhap so thu nhat : ' );
Readln(m);
Write( ' Nhap so thu hai: ' );
Readln(n);
usc := USCLN(m, n);
bsc := m * n div USCLN(m, n);
Writeln( ' Uoc so chung lon nhat cua ', m, ' va ', n, ' la : ', usc);
Writeln( ' Boi so chung nho nhat cua ', m, ' va ', n, ' la :', bsc);
Readln;
End.
4 V du 3: Lp mt thu tuc tnh ng thi din tch va th tch hnh cu.
Var r, s, v : Real;
Reply : Char;
(************** Iunction ***************)
Procedure SVHinhCau( r : Real; Var s, v :Real);
Begin
s := 4 * pi * r * r;
v := 4 * pi * r * r * r / 3;
End;
(******** bat dau chuong trinh chinh ********)
Begin
Repeat
Write( Nhap ban kinh hinh cau : );
Readln(r);
SVHinhCau(r, s, v);
Writeln( Dien tich = , s : 0 : 4, . The tich = , v : 0 :4 );
Write( Ban co tiep tuc khong ?(C/K) );
Readln(Reply);
Giao trnh Lp trnh Pascal cn ban
48
Trang 48
Until Upcase(Reply) = K;
End.
III. Cac ham va thu tuc thng dung cua Unit CRT:
Unit CRT co nhiu ham, thu tuc dung iu khin man hnh, ban phm va m
thanh. No cho phep m cac ca s vi cac mau sc khac nhau, thay i mau cua
cac dong ch trn man hnh, giup cho vic trnh bay man hnh ep va hp dn hn,
t chc hi thoai gia ngi va may thun tin. Khi dung cac ham va thu tuc nay,
u chng trnh chnh cn phai co khai bao USES CRT; Cac thu tuc cua Unit CRT
gm:
1. Thu tuc ClrScr:
Xoa man hnh va a con tro v v tr (1,1) trn man hnh. Man hnh mc nh
c chia thanh 25 dong va 80 ct. Ct u tin anh s 1, dong u tin anh s 1.
2. Thu tuc ClrEOL:
Xoa t v tr con tro n cui dong hin hanh. Sau khi thc hin xong, con tro
ng ngay v tr trc khi goi thc hin thu tuc.
3. Thu tuc DelLine:
Xoa dong con tro ang ng, cac dong sau se c chuyn ln trn mt dong.
4. Thu tuc InsLine:
Chen dong trng vao v tr hin hanh cua con tro trn man hnh.
5. Thu tuc GotoXY(x, y: Byte):
a con tro n, ct th x, dong th y.
6. Ham WhereX: Byte
Cho gia tr kiu byte cho bit con tro ang ct nao.
7. Ham WhereY: Byte
Cho gia tr kiu byte cho bit con tro ang dong nao.
8. Thu tuc Sound(Hz : Word):
Phat m thanh co tn s Hz cho n khi gp thu tuc NoSound th dng lai.
9. Thu tuc NoSound:
Tt loa phat m thanh may.
10. Thu tuc TextBackGround(Color : Byte):
Giao trnh Lp trnh Pascal cn ban
49
Trang 49
Chon mau nn trong ch vn ban (Ch mc inh khi chay Pascal). Color
co gia tr t 0 n 7.
11. Thu tuc TextColor(Color : Byte):
Chon mau cua ky t trnh bay trn man hnh. Color co gia tr t 0 n 15 ng vi
16 mau. Cac hng xac nh mau nn va ch cho bin Color nh sau:
Black (en) = 0 DarkGray (xam) = 8
Blue (xanh dng) = 1 LightBlue (xanh dng nhat) = 9
Green (xanh luc) = 2 LightGreen (xanh luc nhat) = 10
Cyan (lam) = 3 LightCyan (lam nhat) = 11
Red (o) = 4 LightRed (o nhat) = 12
Magenta (tim) = 5 LightMagenta (tim nhat) = 13
Brown (nu) = 6 Yellow (vang) = 14
LightGray (xam nhat) = 7 White (trng) = 15
Ghi chu: Ta co th dung cac hng gia tr trn bng ch hoc s u c. V du:
TextColor(4) hoc TextColor(Red) du co y ngha la chon ch mau o . Chon ch
mau xanh va ch nhp nhay: TextColor(Green + Blink).
12. Ham KeyPressed: Boolean
Ham kim tra xem co phm nao c n trn ban phm hay khng. Nu co ham
tra v gia tr True, nu khng ham cho gia tr False.
13. Ham ReadKey: Char
Ham nay ch oc mt ky t t ban phm (ky t c nhp khng c hin thi
trn man hnh). Cac phm trn ban phm nh A, B, C,... 1, 2, 3, 4,.v.v. ch tao mt
ma khi c n, con cac phm chc nng nh F1, F2,..., Home, End, Alt, Ctrl, Ctrl -
Home,... tao hai ma khi c n, trong o ma th nht co gia tr 0. nhn bit mt
hay mt t hp phm bt ky c n, ta phai dung mt bin kiu Char vi hai ln
thc hin ham ReadKey nh sau:
Ch := ReadKey;
If Ch = #0 then Ch := Readkey;
Sau y la mt s phm c bit va t hp phm hay dung:
Esc 27 0/80
Tab 9 0/75
Enter 13 0/77
Home 0/71 F1 0/59
End 0/79 F2 0/60
Giao trnh Lp trnh Pascal cn ban
50
Trang 50
PageUp 0/73 F10 0/68
PageDown 0/81 Ctrl - F1 0/94
0/72 Ctrl - F2 0/95
4 V du 1: Dch chuyn con tro va in mt s dong ch trn man hnh.
Uses CRT;
Var x, y : Integer;
Begin
ClrScr;
x := 20;
y := 3;
GotoXY(x 2, y);
Write( PASCAL ); In tu cot 22 dong 3 }
GotoXY(x - 2, y 2);
Write( BAN HAY DEN VOI ); In tu cot 18 dong 5 }
GotoXY(x, y 3);
Write( TURBO PASCAL ); In tu cot 20 dong 6 }
GotoXY(WhereX 2, WhereY);
Write( 7.0 ); sau TURBO PASCAL in s 7.0 }
Readln;
End.
4 V du 2: Nhn bit phm nao c n.
Uses CRT;
Var Ch : Char;
Begin
Write( Ban hay an mot phim bat ky : );a
Ch := ReadKey;
If Ch : = #0 then
Begin
Ch := Readkey;
Writeln( Ban vua an mot phim dac biet co ma = , Ord(Ch));
End
Else
Writeln( Ban vua an mot phim co ma ASCII = , Ord(Ch));
Readln;
Giao trnh Lp trnh Pascal cn ban
51
Trang 51
End.
4 V du 3: Vit chng trnh hin th 16 dong vi ni dung bt ky, tai u mi
dong hin th s th t cua dong o ng thi hin th mau cua dong o theo s th
t (theo bang mau).
Uses CRT;
Var i : Integer;
Begin
Ior i := 0 to 15 do
Begin
TextColor( i );
Writeln( i, la ma so mau cua dong nay. );
End;
Readln;
End.

_________ o o _________
Giao trnh Lp trnh Pascal cn ban
52
Trang 52
BAI 8. KIU XU KY T
I. Khai bao va cac phep toan:
Xu (String) la kiu d liu co cu truc dung x ly cac xu ky t. Kiu String
co nhiu im tng t nh kiu mang (Array) nhng cung co im khac nhau la:
s ky t trong mt bin kiu xu co th thay i con s phn t cua kiu mang lun
c nh.
1. Khai bao kiu xu:
VAR
Tn_Bin : String|n];
Trong o: n la s ky t ti a co th co cua xu. Chiu dai ti a cua mt xu la
255. Nu trong phn khai bao khng ghi |n] th xu co dai mc nh la 255.
4 V du:
Var
HoTen : String|30]; HoTen co th cha ti a 30 ky t }
St : String; St co th cha ti a 255 ky t }
Vi St la mt xu, ch ra cac ky t th i cua St ta vit St|i]. Cac St|i] u co
kiu Char. V du: St := ABCD; th lnh Write(St|3]) se in ra ky t C.
Cu truc cua String nh sau: Trong b nh no chim s Byte bng s ky t ti
a, cng vi mt byte u tin (tai vi tri s|0]) cha ky t ma ma thp phn ASCII
cua ky t nay se cho bit xu o co dai bao nhiu.
Chng han bin HoTen bn trn c gan gia tr:
HoTen := Ly Dong Giang;
Khi o, dai xu ch la 13, mc du dai cc ai cho phep la 30 nh a khai
bao. Sau y cu truc xu HoTen:



Ghi chu: Ky t * biu din ky t khng xac nh.
2. Nhp va in xu ky t:
Mun in mt xu ky t ta dung lnh Write(St) hoc Writeln(St).
*
Chr(13) L y D o n g
G i a n
g * * * * *........ * * * *
9
0
1 2 3 4 5 6 7 8 10 11 12 13 14 15 16 26 28 29 30 27 17
Giao trnh Lp trnh Pascal cn ban
53
Trang 53
Lnh Readln(St) se oc cac ky t cho xu St vi dai thc s la s ky t go vao
t ban phm. Nu ta go Enter lun ma khng nhp cho no ky t nao th St la
xu rng.
4 V du:
Var YourName, st1, st2 : String|40];
Begin
Write( Please enter your name: );
Readln(YourName);
Writeln( Hello , YourName ! );
st1 := Turbo Pascal ;
st2 := Borlands product is st1;
Writeln(st2);
Readln;
End.
3. Cac phep toan trn xu ky t:
a. Phep gan:
Bin := Biu_thc;
ai lng bn phai cua lnh phai c t gia hai du nhay n nu o la xu
dang hng. Ta co th s dung du cng (+) ghep cac xu khi gan. V du: HoTen
:= Huynh Ngoc + Nhan;
b. Phep ni String:
Ky hiu bng du .
4 V du: Turbo Pascal = Turbo Pascal
c. Cac phep toan so sanh:
Khi so sanh hai xu, cac ky t cua hai xu c so sanh tng cp mt t trai qua
phai theo gia tr trong bang ma ASCII.
4 V du: Nu so sanh:
ABC = ABC co gia tr True.
ABC = AB co gia tr la False.
ABCD ABED co gia tr la True.
ABC AD co gia tr la False.
Giao trnh Lp trnh Pascal cn ban
54
Trang 54
II. Cac thu tuc va ham x ly xu ky t:
1. Cac thu tuc:
a. Delete(St , Pos, Num):
Trong o: - St (String): Bin kiu String.
- Pos (Position): Bin kiu nguyn.
- Num (Number): Bin kiu nguyn.
Cng dung: Thu tuc nay dung xoa khoi xu St mt s Num ky t bt u t v
tr th Pos.
4 V du: Nu St = ABCDEFG; th:
Delete(St, 2, 4); lam cho St = AFG.
Delete(St, 2, 10); lam cho St = A.
Delete(St, 9, 3); lam cho St = ABCDEFG.
b. Insert(St2, St1, Pos):
Trong o: - St2 va St1: Bin kiu String.
- Pos: Bin kiu nguyn.
Cng dung: Thu tuc nay dung chen xu St2 vao xu St1 v tr Pos. V du:
Nu St := ABCD th sau lnh Insert(TFG, St, 3) ta nhn c St := ABTFGCD.
Trng hp Pos vt qua chiu dai cua St1 th St2 se c ni ui vao St1. V
du: St = ABCD, vy lnh Insert(TFG, ST, 9); se lam cho St = ABCDTFG.
c. Str(Value, St):
Trong o: - Value: La mt biu thc nguyn hay thc co ghi dang in ra.
- St: Bin kiu String.
Cng dung: Thu tuc nay dung i gia tr s Value thanh kiu xu ri gan cho
St.
4 V du:
i := 1234;
Str(i:5, St); ta c St = 1234 co 5 ky t }
x :=123.5678901;
Str(x:10:5, St); ta c St = 123.56789 }
d. Val(St, Var, Code):
Trong o: - St: Biu thc kiu String.
- Var: La bin kiu nguyn hay thc.
- Code: Bin kiu nguyn.
Giao trnh Lp trnh Pascal cn ban
55
Trang 55
Cng dung: Thu tuc nay i xu ch St (biu din dang s nguyn hay thc)
thanh s va gan cho bin Var. Code la bin nguyn dung phat hin li: nu phep
bin i ung th Code co gia tr 0, nu sai do St khng biu din ung s nguyn
hay thc th Code se co gia tr bng v tr cua ky t sai trong xu St. V du:
Gia s: St := 234, i va e la hai bin nguyn.
Val(St, i, e); cho ta i = 234 va e = 0 }
Nu St := 21x th Val(St, i, e) cho ta i khng xac nh va e = 3, tc la ky t th
ba gy ra li }
4 V du v mt ng dung co s dung thu tuc Val oc s nguyn t ban phm.
Bnh thng ta dung thu tuc Readln(i) oc s nguyn i. Song nu nu trong luc
nhp s, ta chng may go nhm ch cai vao th may dng lai, co th gy lang ph
thi gian. Thu tuc di y co th bao li nu ta nhp mt s co ch trong s o.
Procedure InputInteger(Var i : Integer);
Var
St : String|6];
e : Integer;
Begin
Repeat
Readln(St); Nhp vao xu s nguyn }
Val(St, i, e); Bin i va phat hin li }
If e < > 0 then
Writeln(#7, Loi nhap lieu ! );
Until e = 0;
End;
2. Cac ham:
a. Length(St): cho ta dai cua biu thc xu ky t St. V du: vi St = ABCDEFG
th Length(St) se tra v gia tr 7.
b. Copy(St, Pos, Num):
Trong o: - St: Biu thc kiu xu ky t.
- Pos,Num: Biu thc kiu nguyn.
Ham nay tra v cho ta mt xu mi t xu St, ham bt u chep t v tr Pos va
chep Num ky t. V du: St = ABCDEF th lnh Copy(St, 3, 2) = CD va Copy(St,
4, 10) cho ta DEF.
Giao trnh Lp trnh Pascal cn ban
56
Trang 56
Ghi chu:
- Nu Pos + Num Length(St) th ham se tra v cac ky t trong xu St.
- Nu Pos Length(St) th ham Copy se tra v cho ta mt xu rng.
c. Concat(St
1
, St
2
,..., St
n
): Ham nay dung ghep tt ca cac xu ky t St1, St2,...,
St
n
thanh mt xu theo th t cac i s cung cp cho ham.
Ghi chu:
- S lng i cua ham Concat phai = 2.
- Nu tng s chiu dai cac xu 255 th may se bao li.
- Co th dung phep cng (+) ghep xu ky t. V du: St :=Concat(St1,St2 +
N);
d. Pos(St1, St2):
Trong o: St1, St2 la biu thc xu ky t.
Ham nay tra v s nguyn biu din v tr u tin cua St1 gp trong xu St2.
Nu khng tm thy th Pos = 0.
4 V du: nu St := ABCDEFGBCD th Pos(DE,St) = 4, Pos(BCD,St) = 2,
Pos(XY,St) = 0.
4 V du 1: Vit chng trnh nhp vao t ban phm mt xu ky t va in ra man
hnh xu ky t ngc tng ng. V du: nhp TRUNG TAM CONG NGHE
AVNET may in ra TENVA EHGN GNOC MAT GNURT.
Program DaoChuoi;
Uses CRT;
Var
Cau : String|80];
i : Byte;
Begin
Wite( Nhap vao mot cau : );
Readln(Cau);
Ior i := Length(Cau) DownTo 1 do
Write(Cau|i]);
Readln;
End.
Giao trnh Lp trnh Pascal cn ban
57
Trang 57
4 V du 2: Hin th chui con trong chui me c nhp t ban phm, v tr va s
ky t hin th cung c nhp t ban phm.
Program SubString;
Uses CRT;
Var
St : String;
Pos, Len : Byte;
Begin
Wite( Nhap vao mot chuoi : );
Readln(St);
Wite( Muon hien thi xau tu vi tri nao : );
Readln(Pos);
Wite( Do dai xau ky tu con : );
Readln(Len);
Write( Xau ky tu con la : ,Copy(St, Pos, Len));
Readln;
End.
4 V du 3: Vit cac ham chuyn i xu ky t thanh ch hoa va ch thng.
Iunction ToUpper(s : String) : String;
Var i : Byte;
Begin
Ior i := Length(s) do
s|i] := Upcase(s|i]);
ToUpper := s;
End;
(******************************)
Iunction ToLower(s : String) : String;
Var i : Byte;
Begin
Ior i := Length(s) do
If s|i] In |'A'..'Z'] then
s|i] := Chr(Ord(s|i]) 32);
ToLower := s;
End;
Giao trnh Lp trnh Pascal cn ban
58
Trang 58
BAI 9. D LIU KIU BAN GHI VA KIU TP

I. Kiu ban ghi:
1. Khai nim va nh ngha:
Cac kiu cu truc d liu nh kiu mang, tp hp u c tao ra bng mt tp
hp cac phn t co cung kiu.
tao ra mt kiu cu truc d liu mi vi cac phn t d liu co kiu khac
nhau, ngi ta nh ngha ra ban ghi (Record). RECORD la mt cu truc bao gm
nhiu thanh phn. Cac thanh phn co th thuc cac kiu d liu khac nhau va c
goi la cac trng (Field), mi trng u c t tn.
m ta mt kiu T co cu truc Record vi danh sach cac trng co tn la S1,
S2, ..., Sn va co cac m ta kiu tng ng la trng co tn la T1, T2, ... Tn ta dung
cach vit nh sau:
Type
T = Record
S1 : T1;
S2 : T2;
...
Sn : Tn;
End;
V du: M ta thi gian DATE co ba trng: Ngay, Thang, Nm
Type
Date = Record
Ngay: 1..31;
Thang: 1..12;
Nam: Word;
End;
4 V du: m ta Nhn s cua phong t chc, ta dung cac trng: HoDem, Ten,
NgaySinh, Luong,... y ta ly v du co 5 trng:
Type
NhanSu = Record
HoDem: String|20];
Ten: String|7];
NgaySinh: Date;
Giao trnh Lp trnh Pascal cn ban
59
Trang 59
Luong: Real;
CoGiaDinh: Boolean;
End;
Var
NV, NV1: NhanSu;
DS: Array|1..100] of NhanSu;
Danh sach tren la kieu mang mo ta nhan su cua mot co quan co duoi 100
nhan vien}
Ghi chu: Ta co th vit trc tip m ta trng NgaySinh nu nh cha co kiu
Date nh sau:
Type
NhanSu = Record
HoDem: String|20];
Ten: String|7];
NgaySinh: Record
Ngay: 1..31;
Thang: 1..12;
Nam: Word;
End;
Luong: Real;
CoGiaDinh: Boolean;
End;
2. S dung Record:
Mun truy cp mt bin kiu Record, ta phai truy cp theo thanh phn cua
chung. Cu phap truy cp en mt thanh phn nao o la:
Tn bin Record.Tn trng
4 V du:
NV.HoLot := Huynh Dinh;
NV.Ten := Can;
NV.NgaySinh.Ngay : = 4;
NV. NgaySinh.Thang := 2;
NV. NgaySinh. Nam := 1982;
NV.Luong := 500000;
NV.CoGiaDinh := False;
Giao trnh Lp trnh Pascal cn ban
60
Trang 60
4 V du 1: Nhp ly lch nhn vin cua mt c quan.
Uses CRT;
Type
Date = Record
Ngay: 1..31;
Thang: 1..12;
Nam: Word;
End;
NhanSu = Record
HoDem: String|20];
Ten: String|7];
NgaySinh: Date;
Luong: Real;
CoGiaDinh: Boolean;
End;
Var
DS: Array|1..100] of NhanSu;
i, SoNV: Byte;
GD: Char;
Begin
ClrScr;
Writeln( NHAP HO SO NHAN VIEN );
Write( So nhan vien tai co quan: );
Readln(SoNV);
Ior i:=1 to SoNV do
Begin
ClrScr;
Write( Ho dem: ); Readln(DS|i].HoDem);
Write( Ho dem: ); Readln(DS|i].Ten);
Write( Ngay sinh: / /);
GotoXY(14,3); Readln(DS|i].NgaySinh.Ngay);
GotoXY(17,3); Readln(DS|i].NgaySinh.Thang);
GotoXY(20,3); Readln(DS|i].NgaySinh.Nam);
Write( Luong: ); Readln(DS|i].Luong);
Write( Co gia dinh (Y/N) ?: ); Readln(GD);
Giao trnh Lp trnh Pascal cn ban
61
Trang 61
If Upcase(GD) = Y then
DS|i].CoGiaDinh := True
Else
DS|i].CoGiaDinh := Ialse;
End;
Readln;
End.
Ghi chu:
- Cac bin Record cung kiu co th gan cho nhau. V du: NV := NV1; thay v ta
phai thc hin:
NV.HoDem := NV1.HoDem;
NV.Ten := NV1.Ten;
......
- Co th dung phep so sanh:
If NV = NV1 then Write( Cung mot nhan vien ! );
Hoc:
If (NV.HoDem = NV1.HoDem) and (NV.Ten = NV1.Ten) then
Write( Hai nhan vien cung ho ten !. );
- Khng c dung cac thao tac sau:
Cac thu tuc oc va ghi (Read, Readln, Write, Writeln) cho ca mt bin kiu
Record nh: Readln(NV), Writeln(NV);
S dung cac phep toan quan h nh: , , =, =. Nhng co th s dung
phep toan va = cho hai bin Record co cung kiu.
Tt ca cac phep toan s hoc va logic.
3. Cu lnh With:
Khi cn truy cp nhiu thanh phn cua mt bin kiu Record, ta co th dung cu
lnh With chng trnh c gon hn.
Cu phap:
WITH <Bin kiu Record> DO <Cu lnh>
4 V du 1: Theo nh v du 1, ta co th vit ngn gon hn nh sau:
Uses CRT;
Type
Date = Record
Ngay: 1..31;
Giao trnh Lp trnh Pascal cn ban
62
Trang 62
Thang: 1..12;
Nam: Word;
End;
NhanSu = Record
HoDem: String|20];
Ten: String|7];
NgaySinh: Date;
Luong: Real;
CoGiaDinh: Boolean;
End;
Var
DS: Array|1..100] of NhanSu;
i, SoNV: Byte;
GD: Char;
Begin
ClrScr;
Writeln( NHAP HO SO NHAN VIEN );
Write( So nhan vien tai co quan: );
Readln(SoNV);
Ior i:=1 to SoNV do
With DS|i] do
Begin
ClrScr;
Write( Ho dem: ); Readln(HoDem);
Write( Ho dem: ); Readln(Ten);
Write( Ngay sinh: / /);
With NgaySinh do
Begin
GotoXY(14,3); Readln(Ngay);
GotoXY(17,3); Readln(Thang);
GotoXY(20,3); Readln(Nam);
End;
Write( Luong: ); Readln(Luong);
Write( Co gia dinh (Y/N) ?: ); Readln(GD);
If Upcase(GD) = Y then
Giao trnh Lp trnh Pascal cn ban
63
Trang 63
CoGiaDinh := True
Else
CoGiaDinh := Ialse;
End;
Readln;
End.
Ghi chu: Nh vy chung ta co th lng cac ch th With ... Do ... vao vi nhau
truy nhp vao cac trng su trong Record phc tap nh bin Ds|i]. Cu phap
nh sau:
With A do
With B do
......
Vi A, B u c m ta la Record song B la mt trng cua A th ta co th co
cach vit nh sau:
With A do With A, B do
With B do Begin
Begin .....
..... End;
End;
4 V du 2: oan chng trnh v du 1 co th vit lai:
.....
Ior i:=1 to SoNV do
With DS|i], NgaySinh do
Begin
ClrScr;
Write( Ho dem: ); Readln(HoDem);
Write( Ho dem: ); Readln(Ten);
Write( Ngay sinh: / /);
GotoXY(14,3); Readln(Ngay);
GotoXY(17,3); Readln(Thang);
GotoXY(20,3); Readln(Nam);
Write( Luong: ); Readln(Luong);
Write( Co gia dinh (Y/N) ?: ); Readln(GD);
If Upcase(GD) = Y then
Giao trnh Lp trnh Pascal cn ban
64
Trang 64
CoGiaDinh := True
Else
CoGiaDinh := Ialse;
End;
.....
4. Record co cu truc thay i:
Cac kiu Record trnh bay trn la kiu Record c nh v s thanh phn cung nh
cu truc cua Record la a c nh. Bn canh o Pascal con cho phep lp cac Record
co mt phn cu truc thay i c.
Trc ht, ta xet th du sau: trong muc NhanSu, nu ta xet thm trng
NgheNghiep th se co nhiu trng hp xay ra, chng han:
- Cng nhn : Cn ghi ro nganh g ? Bc th my ?
- Ky s : Nganh g ? Trnh thc t ?
- Bac s : Chuyn khoa g ?
- Ca bit : Khng ghi g thm ?
Tuy ta co th lp mt Record gm y u cac trng k trn nhng rt cng
knh (trong khi o co th mt ngi mt thi im nao o chi co mt nganh
ngh) va chim nhiu nh.
Tip theo ta co th lp ra bn kiu Record ging nhau phn u (HoDem, Ten,
NgaySinh, Luong, CoGiaDinh) nhng ch khac nhau phn cui la ngh nghip
(NgheNghiep), tc la se co cac tr ng tng ng vi bn ngh khac nhau. Cach nay
cung lam cng knh chng trnh v ta phai dung n bn kiu Record.
Ngn ng Pascal cho phep lp Record co dang sau tit kim nh va cho
phep linh hoat s dung:
Type
Nghe = (CongNhan, KySu, BacSi, CaBiet);
Nganh = (KhaiThac, CoKhi, CheBien, Nuoi, KinhTe);
Khoa = (Noi, Ngoai, Nhi, Phu);
NhanSu = Record
HoDem: String|20];
Ten: String|7];
NgaySinh: Date;
Luong: Real;
Giao trnh Lp trnh Pascal cn ban
65
Trang 65
CoGiaDinh: Boolean;
CASE NgheNghiep: Nghe Of
CongNhan: (NganhCN: Nganh; BacTho: Byte);
KySu: (NganhKS: Nganh; TrinhDoTT: (Kem, TB, kha, Gioi));
BacSi: (ChuyenKhoa: Khoa);
CaBiet: ();
END; Of Record }
Var NV, NV1: NhanSu;
Begin
...
With NV do
Begin
HoDem := Vo Thanh;
Ten := Chau;
NgheNghiep := CongNhan;
NganhCN := CoKhi;
BacTho := 3;
End;
...
With NV1 do
Begin
HoDem := Huynh Dinh;
Ten := Can;
NgheNghiep := KySu;
NganhKS := KinhTe;
TrinhDoTT := Kha;
End;
...
END.
F Giai thch minh hoa trn:
- HoDem, Ten, NgaySinh, CoGiaDinh la cac thanh phn c nh cua Record
NhanSu.
- NganhCN, NganhKS, BacTho, TrinhDoTT, ChuyenKhoa la cac thanh phn
thay i cua Record NhanSu.
Giao trnh Lp trnh Pascal cn ban
66
Trang 66
- Trong khai bao mt kiu Record, nu co thanh ph n thay i th phai c t
sau cac thanh phn c inh va chi c phep co mt trng thay i.
- Phn thay i nm sau cung trong danh sach va c bt u bng cu lnh
CASE. (Phn thay i nay lai co th cha Record khac co kiu cu truc thay i).
Ghi chu:
- Phn thay i la mt trng goi la trng anh du (Tag Field) va c dt
trong cu lnh CASE (Vi du trn la NgheNghiep). ng vi mi gia tr cua trng
anh du, ta co cac bin dang cua Record vi danh sach cac trng tng ng c
t sau cac nhan cua lnh CASE va toan b danh sach nay phai c t trong hai
du ngoc n () ngay ca khi no rng nh trng hp CaBiet v du trn.
- Trng m ta phai la cac kiu n gian (Byte, Integer, Word, LongInt, Real,
Double, Char, Boolean).
- Tt ca cac tn bin trong phn thay i u bt but phai khac nhau. Theo v du
trn, Nganh trong hai trng hp cua NgheNghiep la CongNhan va KySu c ky
hiu bng hai tn khac nhau la: NganhCN va NganhKS.
Giao trnh Lp trnh Pascal cn ban
67
Trang 67
BAI 10. D LIU KIU TP
I. Khai nim:
Khi giai cac bai toan co nhiu va cn s dung nhiu ln v sau th ta phai t chc
d liu lu tr trn a (d liu kiu tp). Khi k thuc chng trnh hoc tt may th
d liu kiu tp vn tn tai trn a.
nh ngha mt kiu tp Tvi cac phn t co kiu KPT (Kiu phn t) c vit
trong phn m ta kiu vi t khoa File Of nh sau:
TYPE
T = FILE OF KPT;
4 V du:
Type
FileReal = File of Real;
Date = record
Ngay: 1..31;
Thang: 1..12;
Nam: Word;
End;
NhanSu = Record
MaSo: Word;
HoDem: String|20];
Ten: String|7];
NgaySinh: Date;
Luong: Real;
End;
FnhanSu = File Of NhanSu;
Var
F1: FileReal;
F2: FNhanSu;
Ghi chu:
- Kiu phn t cua tp co th la bt ky kiu d liu nao ngoai tr kiu tp.
- Bin tp c khai bao bng cach s dung mt kiu tp a c nh ngha
trc o hoc khai bao trc tip vi m ta kiu. V du:
Var
Giao trnh Lp trnh Pascal cn ban
68
Trang 68
F3: File Of Char;
F4: File Of Array|1..5] Of Integer;
- Bin tp la mt bin thuc kiu d liu tp. Mt bin kiu tp ai din cho mt
tp. Vic truy cp d liu mt tp c th hin qua cac thao tac vi thng s la
bin tp ai din.
II. Cu truc va phn loai tp:
Cac phn t cua mt Array (Mang) hoc Record co th truy cp c tuy y
(Random Access) thng qua tn bin, ch s hoc tn trng. Cac phn t cua tp
khng co tn va vic truy cp khng th tuy tin c. Cac phn t cua tp c
sp xp thanh mt day va mi thi im chng trnh ch co th truy nhp vao
mt phn t cua tp thng qua gia tr cua bin m (Tampon Variable). Bin m
dung anh du v tr truy nhp hay con goi la ca s cua tp. Ta co th hnh dung
mt tp nh la mt cun phim chup anh. Mi mt anh la mt phn t va ng knh la
ca s nhn vao nn tai mi thi im ch nhn thy mt anh. Sau mi ln chup,
ca s se nhn vao anh v tr k tip.
Ta co th dung lnh lam dch chuyn ca s sang v tr tip theo hoc v v tr
u tp. Mi tp u c kt thuc bng du hiu c bit bao hiu ht tp, hay
goi la EOF(F) (End Of File F). Pascal co mt ham chun EOF tra v gia tr kiu
Boolean vi tham s la bin tp xem ca s a t vao v tr kt thuc tp o
cha. Nu cha n cui tp th ham EOF tra v gia tr False.
Vic phn loai tp da trn vic b tri cac phn t cua tp trong b nh ngoai va
cach truy cp vao tp: Tp truy nhp tun t (Sequential Access) hoc tp truy nhp
trc tip (Direct Access).
i vi tp truy nhp tun t vic oc mt phn t bt ky cua tp phai i qua cac
phn t trc o; mun thm mt phn t vao tp, phai t ca s vao v tr cui
tp. B nh ngoai tng ng vi cu truc nay la bng t. Tp truy nhp tun t n
gian trong vic tao lp hay x ly nhng kem tnh linh hoat.
i vi tp truy nhp trc tip, ta co th t ca s vao mt v tr bt ky cua tp.
B nh ngoai in hnh la a t (do u t khi oc co th c iu khin t vao
mt ch bt ky trn a tai moi thi im).
Tp truy nhp trc tip chi c inh ngha Turbo Pascal, Pascal chun khng
co. Khi khng noi ro la tp loai g th o c mc nh la tp truy nhp tun t.
III. Cac thao tac trn tp:
Giao trnh Lp trnh Pascal cn ban
69
Trang 69
1. M tp mi ct d liu:
Chng trnh ch co th lu lai d liu vao mt tp sau khi ta lam thu tuc m tp.
Vic m tp c tin hanh vi hai thu tuc i lin nhau theo th t:
Assign(FileVar, FileName)
ReWrite(FileVar);
Trong o:
- IileVar:
- IileName: tn cua tp t trong thit b nh ngoai c a vao dang mt
String (quy tc t tn tng t h iu hanh). Ta nn t tn sao cho tn o phan
anh c y ngha hay ban cht, ni dung cua tp.
4 V du:
Assign(I1, HoSo.txt); Gan tn la HoSo.txt cho bin I1}
ReWrite(I1); M tp HoSo.txt , tp cha co phn t nao}
Sau khi m tp xong, tp se rng v cha co phn t nao, ca s cua tp se khng
co gia tr xac nh v no tro vao cui tp (EOI).
Ghi chu: Khi m tp, nu trn b nh ngoai (cung ng dn) a co sn tp co
tn trung vi tn tp c m th ni dung cu se b xoa.
2. Ghi cac gia tr vao tp vi thu tuc Write:
Thu tuc Write se t cac gia tr mi vao tp.
Cu phap:
Write(FileVar, Item1, Item2, ..., ItemN);
Trong o: Item1, Item2, ..., ItemN: la cac gia tr cn ghi vao tp.
4 V du: Ta cn ghi vao tp ChuCai.txt cac gia tr a.. z, thc hin nh sau:
...
Assign(I1, ChuCai.txt);
ReWrite(I1);
Ior ch:= a to z do
Write(I1, ch);
...
4 V du 1: Tao mt tp cha cac s nguyn t 1 n 100 vi tn tp trn a la
Nguyen.txt.
Giao trnh Lp trnh Pascal cn ban
70
Trang 70
Program TaoTepSoNguyen;
Var i: Integer;
I: Iile of Integer;
Begin
Assign(I,Nguyen.txt);
ReWrite(I);
Ior i:= 1 to 100 do
Write(I,i);
Close(I);
End.
Ghi chu: Mt tp co th c dung lam tham s cua chng trnh con vi li
khai bao bt buc phai sau ch Var tc la tp c dung lam tham s bin.
3. oc d liu t mt tp a co:
i vi tp tun t, ta khng th va ghi va oc c cung mt luc. Sau khi ghi
d liu vao tp va ong lai, ta co th oc lai cac gia tr d liu trong tp.
Mt chng trnh mun s dung cac d liu a c cha trong mt tp, u tin
phai m tp o ra oc, thu tuc sau nh m m mt oc:
Cu phap:
Assign(FileVar, FileName);
Reset(FileVar);
Sau lnh Reset, nu tp khng rng th ca s tp bao gi cung tro vao phn t
u tin cua tp va chng trnh se sao chep phn t cua tp c tro sang bin m
ca s. Ni dung tp nay khng b xoa. Nu ta m mt tp cha tn tai trn a th
se co li.
oc d liu t tp, ta dung thu tuc READ dang sau:
Read(FileVar, Var1, Var2,..., VarN);
Trong o: Var1, Var2,..., VarN la cac bin co cung kiu thanh phn cua FileVar.
Gp lnh nay may se oc cac gia tr tai v tr ca s ang tro (nu co) gan sang bin
tng ng cung kiu. Sau o, ca s dch chuyn sang v tr tip theo va oc gia tr
cho bi n khac, c th oc cho n bin VarN. READ ch co th oc gia tr cua tp
gan gia tr cho cac bin.
Giao trnh Lp trnh Pascal cn ban
71
Trang 71
Vic oc mt phn t cua tp cn thoa man iu kin: phn t o khng phai la
phn t cui tp tc la EOF. Do o , trc khi mun oc tp va gan cho bin X, cn
phai th xem tp o a kt thuc cha bng cu lnh:
If Not EOF(FileVar) Then Read(FileVar, X);
Hoc nu mun oc tt ca cac phn t cua tp:
While Not EOF(FileVar) Do
Begin
Read(FileVar, X);
X ly bin x nu cn;
...
End;
Thc hin xong ta phai ong tp vi thu tuc sau:
Close(FileVar);
4 V du1: Gia s a tn tai mt tp co tn la Nguyen.txt cha cac s kiu Byte va
co t nht ba phn t. Thc hin oc ra gia tr th nht va th ba cua tp va gan cho
hai bin A, B tng ng.
Program DocSo;
Var A, B: Byte;
I: Iile Of Byte;
Begin
Assign(I,Nguyen.txt);
Reset(I);
Read(I,A); oc mt phn t th nht cua tp ra bin A}
Read(I,B); oc mt phn t th hai cua tp ra bin B}
Read(I,B); oc mt phn t th hai cua tp ra bin B}
luc nay B khng gi gia tr th hai na}
Close(I);
End.
V y la tp co cu truc tun t nn mun oc phn t th ba ta buc phai oc
qua phn t th hai.
Ba ln Read(F,...) trn co th thay th bng mt lnh oc duy nht:
Read(I,A, B, B);
Giao trnh Lp trnh Pascal cn ban
72
Trang 72
4 V du 2: oc tt ca cac phn t cua mt tp cha cac s co Integer nao o va ghi
ra man hnh gia tr cac s o va cui cung ghi ra so phn t cua tp.
Program DocTepSo;
Uses CRT;
Var i, SoPT: Integer;
I: Iile Of Byte;
IileName: String;
Begin
ClrScr;
Write(Tep can doc la gi ? (Tep so nguyen):);
Readln(IileName);
Assign(I, IileName);
Reset(I);
SoPT:= 0;
While Not EOI(I) Do
Begin
Read(I,i); doc mot phan tu cua tep ra bien i}
Write(i, );
Inc(SoPT); dem so phan tu}
End;
Close(I);
Writeln;
Write(So phan tu cua tep ,IileName, la ,SoPT);
Readln
End.
4. Tp truy nhp trc tip:
Pascal chun ch nh ngha mt kiu tp truy nhp tun t. Tuy nhin cac b
nh ngoai nh a t,... co th cho phep tnh toan toa cua mt phn t bt ky
trong tp (v dai cua cac phn t la nh nhau), do o co th truy nhp trc tip
vao mt phn t cua tp mc du cu tao logic cua tp vn la dang tun t. Trong
Turbo Pascal, truy nhp trc tip vao phn t cua tp, s dung thu tuc SEEK.
Cu phap:
Seek(FileVar, No);
Giao trnh Lp trnh Pascal cn ban
73
Trang 73
Trong o, No la s th t cua phn t trong tp (phn t u tin cua tp c
anh s 0). Gp thu tuc nay, chng trnh se t ca s cua tp vao phn t th No.
Tip theo mun oc phn t o ra th dung Read, nu mun t gia tr mi vao
dung Write.
4 V du: Gia s tp Nguyen.txt trn a th muc hin hanh a cha 100 s
nguyn t 1 n 100. Ta kim tra xem phn t th hai (m t 0) cua tp co gia tr
bng 3 khng, nu khng th sa lai bng mt gia tr nhp t ban phm.
Var
i: Byte;
I: Iile Of Byte;
Answer: Char;
Begin
Assign(I,Nguyen.txt);
Reset(I);
Seek(I,2); Dat cua so tep vao vi tri thu 3}
Read(I,i);
Writeln(i = ,i);
Write(Ban muon sua lai khong ?(C/K):);
Readln(Answer);
If Answer In|c,C] Then
Begin
Seek(I,2);
Write( Ban muon sua lai bang bao nhieu ?);
Readln(i);
Write(I,i); Thay doi gia tri cua phan tu hien tai }
End;
Close(I);
Readln
End.
5. Cac thu tuc va ham x ly tp cua Turbo Pascal:
a. Ham FileSize(FileVar): Ham cho gia tr biu th s phn t cua tp FileVar. Ham
nhn gia tr 0 khi tp rng.
b. Ham FilePos(FileVar): cho bit v tr hin tai cua con tro (ca s) tp IileVar.
Giao trnh Lp trnh Pascal cn ban
74
Trang 7 4
Mt tp a tn tai ch co th ln thm bng cach ghi thm cac phn t mi vao v
tr cui cung cua tp. Mun a con tro n v tr cui cung cua tp ta thc hin
lnh sau:
Seek(FileVar, FileSize(FileVar));
c. Thu tuc Erase(FileVar): Dung xoa tp trn a co tn n nh vi IileVar.
Chu y: Khng c xoa tp ang m.
4 V du:
...
Write(Cho biet ten tep can xoa:);
Readln(IileName);
Assign(I, IileName);
Erase(I);
...
d. Thu tuc Rename(FileVar, Str): Dung thay i tn tp vi tn mi bng bin
Str kiu String.
Ghi chu: - Tn mi phai khng trung tn tp nao co sn trn a ang lam vic
- Khng c i tn tp ang m.
4 V du: Mun i tn tp Iile1.dat thanh Iile2.dat, thc hin nh sau:
Asign(I,Iile1.dat);
Rename(I,Iile1.dat);
6. Tp vn ban (Text Files):
Trong Pascal co mt kiu tp a c nh ngha trc, o la tp vn ban c
nh ngha vi tn chun Text.
Cu phap khai bao:
F1, F2 :Text;
Thanh phn c s cua tp kiu Text la ky t. Tuy nhin, vn ban co th c cu
truc thanh cac dong, mi dong c kt thuc bi du hiu EOLN (End Of Line).
Nh vy, mun oc va in ra tng dong cua tp vn ban th s dung dang Text.
Tp vn ban c k tthuc bi du End Of Iile, cu th vi Turbo Pascal la Ctrl-Z
(^Z) co ma ASCII = 26.
Giao trnh Lp trnh Pascal cn ban
75
Trang 7 5
a. Ham EOF(Var F: Text): Boolean. Ham tra v gia tr Ialse khi ca s tp cha
n cui tp, ngc lai, cho gia tr True. Ham nay thng s dung kim tra xem
a oc ht tp vn ban cha. V du:
While not EOF(F) Do...
b. Ham EOLN(Var F: Text): Boolean. Ham tra v gia tr Ialse khi ca s tp cha
n im cui dong hoc cui tp, ngc lai, cho gia tr True. Ham nay thng s
dung kim tra xem a oc n cui dong cha. V du:
While not EOLN(F) Do..
c. Ghi vao mt tp vn ban: Ta co th ghi cac gia tr kiu Integer, Real, Boolean,
String vao tp vn ban bng lnh Write hoc Writeln. Co ba dang vit:
Write(FileVar, Item1, Item2,...,ItemN); (1)
Writeln(FileVar, Item1, Item2,...,ItemN); (2)
Write(FileVar); (3)
F Lnh (1): Vit cac gia tr Item1, Item2,...,ItemN la cac hng, biu thc hay bin
co kiu n gian nh: Nguyn, Thc, Ky t, Chui, Logic vao bin tp IileVar.
F Lnh (2): Tng t nh (1) nhng co thm du hiu ht dong vao tp sau khi a
vit ht cac gia tr Item1, Item2,...,ItemN.
F Lnh (3): ch thc hin vic a thm du hiu ht dong vao tp.
Ghi chu: T cu lnh (2) ta co th chuyn sang vit nh sau:
Begin
Write(FileVar, Item1);
...
Write(FileVar, Item2);
Writeln(FileVar);
End;
4 V du: Thc hin ghi vao mt tp cac thng tin sau:
Chao cac ban den voi ngon ngu lap trinh Pascal
Trung tam Cong nghe Avnet
-------------------------
Var I: Text;
Begin
Giao trnh Lp trnh Pascal cn ban
76
Trang 7 6
Assign(I,VanBan.txt);
Rewrite(I);
Writeln(I,Chao cac ban den voi ngon ngu lap trinh Pascal);
Writeln(I, Trung tam Cong nghe Avnet );
Writeln(I, ------------------------- );
Writeln(I);
Close(I);
End.
Ghi chu: Trong lnh Writeln,Write ta co th hin th co quy cach nh a trnh
bay trc y.
d. oc d liu t tp vn ban:
Ta co th oc khng nhng cac ky t t tp vn ban ma con co th oc lai cac s
nguyn, thc, logic t tp vn ban thng qua cac thu tuc:
Read(FileVar, Var1, Var2,...,VarN); (1)
Readln(FileVar, Var1, Var2,...,VarN); (2)
Readln(FileVar); (3)
Trong o, Var1, Var2,...,VarN la cac bin thuc kiu ky t, nguyn, thc, logic,
chui. Lnh (1) se oc ni dung mt hay nhiu ph n t ma khng chuyn ca s tp
xung dong. Lnh (2) oc nh lnh (1) nhng se di chuyn ca s tp sang u
dong tip theo sau khi a ln lt oc cac bin tng ng. Lnh (3) a ca s tp
sang u dong tip theo ma khng oc g ca.
4 V du: Chng trnh sau oc va in ra ni dung tp vn ban VanBan.txt a c
tao ra t chng trnh trn.
Program Doc_Iile_Text;
Uses CRT;
Var
I: Text;
Line:String|80];
Begin
ClrScr;
Assign(I,VanBan.txt);
Reset(I);
While Not EOI(I) Do
Begin
Giao trnh Lp trnh Pascal cn ban
77
Trang 77
Readln(I, Line);
Writeln(Line);
End;
Close(I);
Readln;
End.
e. Thu tuc thm dong:
Cu phap:
Append(Var F: Text);
Lnh Append m tp vn ban ghi b sung cac dong, nh v ca s tp vao
cui tp. Ln s dung k tip vi thu tuc Write hay Writeln se thm vn ban vao
cui tp.
4 V du: Chng trnh sau y thm hai dong vao cui tp VanBan.txt.
Var I: Text;
Begin
Assign(I,Vanban.txt);
Append(I);
Writeln(I,Day la dong thu nhat them vao.);
Writeln(I,Day la dong thu hai them vao.);
Close(I);
End.

_________ o o _________
Giao trnh Lp trnh Pascal cn ban
78
Trang 7 8
PH N BAI TP THC HANH
: 1. Luyn tp cn ban: Khi ng chng trnh Pascal va thc hin:
1.1. Vit chng trnh hin th ln man hnh n i dung sau :
* * * * * * * * * * * * * * * * * * * * * * * *
* Trung tam Cong nghe AVnet *
* 74 - Tran Quoc Toan *
* * * * * * * * * * * * * * * * * * * * * * * *
1.2. Vit chng trnh hin th ln man hnh tam giac sau :
*
* * *
* * * * *
* * * * * * *
1.3. Vit chng trnh hin th ln man hnh cac biu thc sau :
a. 5000 100 200
b. 645 350 - 345
c. 45 45 - 32
1.4. Vit chng trnh tnh kt qua cac biu thc sau :
a. 5000 100 200
b. 645 350 - 345
c. 45 45 - 32
1.5. Chay th chng trnh sau t rut ra nhn xet :
Program BieuThuc;
Begin
Write ( 45 756 16 = );
Writeln (45 756 16 );
Write ( 36 - 56 3 = );
Writeln ( 36 - 56 3 );
Readln;
End.
: 2. Bai tp n gian lam quen vi cac kiu d liu va mt s ham chun cua
Pascal
Giao trnh Lp trnh Pascal cn ban
79
Trang 79
2.1. Tm ch sai trong chng trnh sau:
Var i, n : Integer;
b : Byte;
Begin
n : =3;
b := 278;
i := b n;
Writeln(i);
End.
2.2. Vit chng trnh nhp gia tr cho cac bin t ban phm vi kiu cua cac bin la
cac kiu d liu a c hoc, sau o hin th mi gia tr cua mi bin trn mt
dong.
2.3. Vit chng trnh oc ky t t ban phm, sau o cho bit ma s cua ky t va
nhp trong bang ma ASCII.
2.4. Vit chng trnh tnh Sin(x), Cos(x). Trong o, goc x c nhp t ban phm
va c o theo n v Radian. (ta co th chuyn i bng cach: Cos(x * Pi / 180))
2.5. Vit chng trnh co s dung cac ham chun cua Turbo Pascal tnh gia tr:
- bnh phng
- tr tuyt i
- cn bc hai
- logric c s e (e = 2.718)
- ham e mu x (e
x
)
- sau khi ct bo phn thp phn
- lam tron s
cua x. Trong o, x la mt gia tr kiu thc c nhp t ban phm.
2.6. Vit chng trnh cho bit gia tr ng trc, ng sau cua mt gia tr x kiu ky
t (Char) va y kiu logic (Boolean), trong o, x va y c nhp t ban phm.
: 3. Ap dung cac lnh n gian
3.1. Chng trnh sau cho kt qua g?
Begin
Writeln( Ialse>True : 60 );
Giao trnh Lp trnh Pascal cn ban
80
Trang 80
Writeln( 1 > 2 );
Readln;
End.
Th lai trn may kim tra.
3.2. Cho bit kt qua va kiu d liu cua cac biu thc sau:
a) 5 3.0
b) 6/3 2 div 3
c) (10<=3) And (Not True And (12 div 3<=1))
d) (10*((45 mod 3) 1)) / 6
Sau o, vit chng trnh thc hin cac phep tnh trn (hin thi kt qua dang co
inh quy cach).
3.3. Vit chng trnh tao ra mt thip mi d sinh nht. Trong o, cac gia tr ly t
ban phm gm: Ho tn ngi c mi, Ngay t chc tic, ia im, Ho tn ngi
mi.
3.4. Vit chng trnh tnh tng cac ch s cua mt s co 2 ch s (Hng dn: s
dung phep chia Div va Mod).
3.5. Ap dung phng phap trn, vit chng trnh tnh tng cac ch s cua mt s
co 3, 4 ch s.
3.6. Vit chng trnh i mt s nguyn c ly t ban phm biu din s giy
thanh gi, phut, giy va hin th dang gi : phut : giy
3.7. Trong mi trng Turbo Pascal, tao ky t ch cn n Alt - 219 (cac s 2,
1, 9 va go tai khu vc phim s). Vit chng trnh in ln man hnh t DA NANG
bng ky t
3.8. Vit chng trnh tnh gia tr biu thc sau:
: 4. Bai tp cho cac loai lnh co cu truc
4.1. Bai tp cho cu truc lnh If:
a. Vit chng trnh giai phng trnh bc hai ax
2
+ bx + c = 0.
b x x c e
e b Sin x
b
+ + + +
+
) 256 . 0 ( 5
) (
0002345 . 0 3
Giao trnh Lp trnh Pascal cn ban
81
Trang 81
b. Vit chng trnh m ta s hoat ng cua mach in (hnh di) khi co hai cng
tc mc song song vi nhau, tc la cho bit trang thai sang hay ti cua bong en khi
hai cng tc ong hoc ngt. (Hng dn: S dung cac bin logic vi phep toan
OR).




c. Nhp 3 s a, b, c tng ng vi 3 canh cua mt tam giac. Tnh din tch hnh tam
giac theo cng thc:
d. Tnh tin thc lnh cho mi nhn vin trong x nghip x theo cng thc sau:



Vi quy nh: ngh qua 5 ngay se b tr 20% tng thc lnh, lam thm qa 3 ngay
c tng 10% tng thc lnh.
4.2. Bai tp cho cu truc lnh Case:
a. Vit chng trnh nhp mt ky t t ban phm, kim tra no va:
- hin th la so nu no la s.
- hin th la chu hoa nu no la ch hoa.
- hin th la chu thuong nu no la ch thng.
- ngoai ra, hin th Khong phai la so hoac chu cai.
b. Vit chng trnh i nm dng lch (dang s) thanh nm m lch (dang ch).
V du: nhp nm 2000 dng lch may cho bit nm m lch la Canh Thn. (Hng
dn: s dung phep MOD gia nm vi 10 ly phn ia Can va MOD gia nm
vi 12 ly phn ia Chi, s d tng ng se c kt qua theo bang sau:
S d (MOD 10) a Can S d (MOD 12) a Chi
0...................................Canh 0........................................Thn
1.....................................Tn 1......................................... Du
2................................. Nhm 2........................................ Tut
3.................................... Quy 3..........................................Hi
K1
K2
) )( )( ( : c p b p a p p s =
Thc lnh =
26
(Lung chnh * S ngay cng)
(Phu cp - Tam ng)
Giao trnh Lp trnh Pascal cn ban
82
Trang 82
4................................... Giap 4........................................... Ty
5....................................... t 5..........................................Su
6................................... Binh 6......................................... Dn
7................................... inh 7........................................ Meo
8....................................Mu 8........................................ Thn
9...................................... Ky 9........................................... Ty
10....................................... Ngo
11....................................... Mui
c. Giai phng trnh bc hai ax
2
+ bx + c = 0.
4.3. Bai tp cho cu truc vong lp For:
a. Vit chng trnh nhp mt s t nhin N t ban phm va tnh:
e = 1 + 1/1! + 1/2! +... + 1/N!
b. Giai bai toan dn gian sau:
Va ga va cho.
Bo lai cho tron.
m u 100 chn.
Hoi co my ga, my cho ?
c. Vit chng trnh kim tra cng thc sau ung hay sai vi moi N dng c
nhp t ban phm:
1 + 2 + 3 +... + N = N(N+1) / 2
d. Vit chng trnh nhp vao chiu dai, chiu rng cua hnh ch nht va in hnh
ch nht o ra man hnh bng cac du *. V du: nhp dai = 7, rng = 3, hnh ch
nht se co dang sau:
* * * * * * *
* *
* * * * * * *
e. Vit chng trnh tnh n! trong o, n la mt s nguyn c nhp t ban phm
(Hng dn: ta nn khai bao bin cha kt qua la mt bin kiu LongInt).
4.4. Bai tp cho cu truc vong lp Repeat:
a. Vit chng trnh lam cac cng vic sau: Tnh din tch hnh ch nht, din tch
hnh tam giac, hnh tron. Dung lnh Repeat... Until lp mt menu la chon cng
vic theo mu:
Giao trnh Lp trnh Pascal cn ban
83
Trang 83
TINH DIEN TICH CAC HINH
-1. Hinh chu nhat.
- 2. Hinh tam giac.
- 3. Hinh tron..
- 4. Ket thuc.
La chon mt muc cua menu bng cach n s tng ng, n phm s 4 may dng
chng trnh.
b. Vit chng trnh nhp vao t ban phm ln lt cac s nguyn, du hiu chm
dt la s 0. Tnh tng va trung bnh cng cua cac s a nhp.
c. Vit chng trnh in ra bang tnh cn bc hai cua mt trm s nguyn dng u
tin.
4.5. Bai tp cho cu truc vong lp While:
a. Vit chng trnh nhp va o t ban phm ln lt cac s nguyn, du hiu chm
dt la s 0. Tnh tng va trung bnh cng cua cac s a nhp.
b. Vit chng trnh tm va hin th cac s nguyn t nho hn mt s n c nhp
t ban phm (S nguyn t la s chi chia chn cho 1 va chinh no).
c. Vit chng trnh gia lam tro chi x s nh sau: Ngi chi nhp 5 ln, mi ln
mt s nguyn tuy y, may kim tra nu trong cac s ngi chi nhp vao co 3 s tr
ln trung vi cac s may ly ngu nhin th ngi o thng va ngc lai la thua.
Nu thua th may bao Ban da thua ! ngc lai may bao Ban da thang !
d. Vit chng trnh nhp vao mt ky t ch bt ky, nu no la ch s th bao ch la
chu so, nu no la ch cai th bao ch la chu cai, ngoai ra, bao ch khong phai la so
hoac chu cai va thoat khoi chng trnh.
: 5. Bai tp cho d liu kiu oan con, lit k va kiu mang (Bai 5 va 6)
5.1. Vit chng trnh nhp vao mt da y n s a|1], a|2],..., a|n] va in ra man hnh
cac thng tin sau:
- Tng cac phn t cua day.
- S lng s dng va tng cua cac s dng cua day.
- S lng s m va tng cua cac s m cua day.
- Trung bnh cng cua day.
Giao trnh Lp trnh Pascal cn ban
84
Trang 84
5.2. Vit chng trnh nhp vao mt day n s a|1], a|2],..., a|n] va in ra man hnh
cac thng tin sau:
- S hang dng ln nht cua day va ch s (vi tri) cua no.
- S hang dng nho nht cua day va ch s (vi tri) cua no.
- S hang m ln nht cua day va ch s (vi tri) cua no.
- S hang m nho nht cua day va ch s (vi tri) cua no.
5.3. Vit chng trnh nhp vao mang a gm 10 phn t nguyn, sau o, nhp mt
gia tr x. Tm trong mang a nu co phn t nao co gia tri bng vi x th hin th ln
man hnh vi tri cua no trong mang a.
5.4. Vit chng trnh nhp vao mt ma trn vung, xut man ra man hnh ma trn
o va cho bit tng cac phn t trn ng cheo chnh.
: 7. Bai tp tao thu tuc va ham (Bai 7):
7.1. Vit mt thu tuc dung ve hnh vung bng du *. Chiu dai cua canh hnh
vung c nhp t ban phm. Goi thc hin thu tuc bi chng trnh chnh.
7.2. Lp ba thu tuc tnh din tch hnh tam giac, hnh ch nht va hnh tron.
7.3. Lp ba ham tnh din tch hnh tam giac, hnh ch nht va hnh tron.
7.4. Lp mt ham kim tra mt s co phai la s nguyn t hay khng. Sau o,
cho chng trnh chay lin tuc va hoi ngi dung: Ban co tip tuc khng ? cho n
khi ngi dung nhp ky t k hoc K th dng lai.
7.5. Vit ham tnh gia tr a
n
. Trong o, a va n la hai gia tr kiu thc. (Hng
dn: a
n
= e
n * ln(a)
).
7.6. Vit mt ham tnh gia tr n!.
: 8. Bai tp cho phn x ly chui (Bai 8):
8.1. Vit chng trnh nhp vao mt chui va m trong chui o co bao nhiu ky
t a, b va c (k ca A, B, C).
8.2. Vit chng trnh m trong m t chui c nhp t ban phm co bao nhiu t,
gia s mi t cach nhau bng mt ky t trng (tam chp nhn gia hai t khng
c nhp qua 1 ky t trng).
8.3. Vit chng trnh nhp vao mt chui s, sau o, nhp vao m t t bt ky va
kim tra trong chui s nu co t o th xoa i (tai vi tri u tin), nu khng tm
thy t o trong s th bao Khong co tu nay trong chuoi vua nhap !
Giao trnh Lp trnh Pascal cn ban
85
Trang 85
8.4. Tng t cu trn (7.3) nhng nu tm thy trong chui s co bao nhiu t o th
xoa ht.
8.5. Vit chng trnh nhp vao t ban phm Ho va tn Vit Nam, sau o in phn
tn ra man hnh. V du: nhp Phan Van Anh Tuan th in ra Tuan.
: BAI TP TNG QUAT
1. Tm tt ca cac s co 3 ch s a, b, c sao cho tng cac lp phng cua cac ch s
bng chnh s o.
abc = 100a + 10b + c = a
3
+ b
3
+ c
3

2. Tm va in ra cac s nguyn t nho hn mt s cho trc n.
3. Vit chng trnh m s ln xut hin cua tng loai ky t t A n Z cha
trong mt chui c nhp t ban phm.
4. Nhp mang hai chiu A gm m hang va n ct.
- Tm gia tr ln nht va nho nht trn mi hang, mi ct cung vi v tr (dong,
ct) cua gia tr nay.
- Tm phn t co gia tr ln nht va nho nht cua mang A cung vi v tr (dong,
ct) cua hai phn t nay.
- Trong mang A co bao nhiu phn t bng vi phn t ln nht cua mang.
5. Vit chng trnh nhp vao t ban phm mt ma trn vung va in ra man hnh
tng cac phn t trn ng cheo chnh.
6*. Vit mt chng trnh dung giai cac bai toan bng cach t chc mi thu tuc
giai mt bai toan va tao menu goi thc hin cac thu tuc o theo yu cu sau:
1. Giai phng trnh bc hai (ax
2
+ bx + c = 0).
2. Tnh Sin(x).
3. Tnh Cos(x).
4. Tnh x
3
.
Ghi chu: Ngoai ra, hoc vin t tm thm bai tp thc hanh.

_________ o o _________
Giao trnh Lp trnh Pascal cn ban
86
Trang 86
MUC LUC
BAI I. Gii thiu ngn ng pascal va cac v du n gian .................................... 1
I. Xut x ngn ng Pascal ............................................................................. 1
II. Khi ng.................................................................................................. 1
III. Cac phm chc nng cn bit cua ngn ng Pascal.................................... 2
IV. Cu truc mt chng trnh Pascal ............................................................. 2
1. Cu truc c ban....................................................................................... 2
2. Phng phap khai bao va t chc cu truc mt chng trnh Pascal........ 2
V. Cac v du n gian lam quen vi ngn ng Pascal.............................. 5
BAI 2. Cac khai nim c ban cua ngn ng pascal.............................................. 7
I. Cac t khoa (Key word) trong ngn ng Pascal ...................................7
II. Cac kiu d liu c ban.............................................................................. 7
1. Cac kiu d liu dang s nguyn ............................................................ 7
a. Kiu Byte ........................................................................................... 7
b. Kiu Integer ....................................................................................... 7
c. Kiu Shortint ...................................................................................... 7
d. Kiu Word ......................................................................................... 7
e. Kiu Longint ...................................................................................... 7
2. Cac kiu d liu dang s co phn biu din thp phn ............................ 7
a. Kiu Single ........................................................................................ 7
b. Kiu Real ........................................................................................... 7
c. Kiu Double....................................................................................... 7
3. Kiu Char (ky t) ................................................................................... 8
4. Kiu Logic ............................................................................................. 8
5. Kiu String (chui ky t) ........................................................................ 8
III. Cac ham x ly d liu c ban cua ngn ng Pascal ................................... 8
IV. S dung ham Random(n) ly mt gia tr nguyn ngu nhin ................ 9
BAI 3. Hng s, bin s, biu thc va cu lnh n gian trong ngn ng pascal .. 10
I. Hng s ......................................................................................................10
1. Khai nim..............................................................................................10
2. Cu phap khai bao...................................................................................10
II. Bin s ......................................................................................................11
1. Khai nim..............................................................................................11
2. Cu phap khai bao cho cac bin ..............................................................11
Giao trnh Lp trnh Pascal cn ban
87
Trang 87
III. Biu thc .................................................................................................12
IV. Cu lnh n gian....................................................................................12
1. Lnh gan ...............................................................................................13
2. Lnh Xut .............................................................................................1 4
3. Lnh Nhp.............................................................................................17
BAI 4. Cac lnh co cu truc trong ngn ng pascal............................................18
I. Lnh ghep ..................................................................................................1 8
II. Lnh la chon ...........................................................................................19
1. Lnh II..................................................................................................19
2. Lnh CASE...........................................................................................21
III. Cac cu lnh lp.......................................................................................23
1. Cu lnh IOR........................................................................................23
a. Dang tin...........................................................................................23
b. Dang lui ............................................................................................2 4
2. Cu lnh Repeat ....................................................................................2 5
3. Cu lnh While......................................................................................27
IV. Cac lnh Goto, Break, Exit va Halt..........................................................2 8
1. Lnh Goto .............................................................................................2 8
2. Lnh Break............................................................................................29
3. Lnh Exit...............................................................................................30
4. Lnh Halt ..............................................................................................30
Bai 5. D liu kiu v hng li t k va kiu oan con .......................................31
I. Kiu lit k.................................................................................................31
II. Kiu oan con...........................................................................................32
Bai 6. Kiu tp hp va kiu mang ......................................................................33
I. Kiu tp hp:..............................................................................................33
1. nh ngha.............................................................................................33
2. Cac phep toan trn tp hp ....................................................................33
a. Phep toan quan h .............................................................................33
b. Phep toan IN.....................................................................................3 4
c. Phep toan hp, giao, hiu...................................................................3 4
II. Kiu mang ................................................................................................3 5
1. Khai nim..............................................................................................3 5
2. Khai bao mang mt chiu......................................................................3 5
3. Truy cp cac phn t cua mang..............................................................3 6
Giao trnh Lp trnh Pascal cn ban
88
Trang 88
4. Mang nhiu chiu..................................................................................37
Bai 7. Chng trnh con: Ham va Thu tuc.......................................................... 40
I. Ham va thu tuc ........................................................................................... 40
II. Bin toan cuc, bin cuc b va vic truyn d liu...................................... 42
III. Cac ham va thu tuc thng dung cua Unit CRT ....................................... 44
1. Thu tuc ClrScr....................................................................................... 44
2. Thu tuc ClrEOL..................................................................................... 44
3. Thu tuc DelLine .................................................................................... 45
4. Thu tuc InsLine ..................................................................................... 45
5. Thu tuc GotoXY(x, y: Byte) .................................................................. 45
6. Ham WhereX: Byte............................................................................... 45
7. Ham WhereY: Byte............................................................................... 45
8. Thu tuc Sound(Hz : Word) .................................................................... 45
9. Thu tuc NoSound .................................................................................. 45
10. Thu tuc TextBackGround(Color : Byte)............................................... 45
11. Thu tuc TextColor(Color : Byte) ......................................................... 45
12. Ham KeyPressed: Boolean .................................................................. 45
13. Ham ReadKey: Char............................................................................ 45
Bai 8. Kiu xu ky t ......................................................................................... 48
I. Khai bao va cac phep toan.......................................................................... 48
1. Khai bao kiu xu.................................................................................. 48
2. Nhp va in xu ky t.............................................................................. 48
3. Cac phep toan trn xu ky t ................................................................. 49
a. Phep gan............................................................................................ 49
b. Phep ni String.................................................................................. 49
c. Cac phep toan so sanh ....................................................................... 49
II. Cac thu tuc va ham x ly xu ky t ........................................................... 49
1. Cac thu tuc ............................................................................................ 49
a. Delete(St , Pos, Num)........................................................................ 49
b. Insert(St2, St1, Pos)........................................................................... 50
c. Str(Value, St) .................................................................................... 50
d. Val(St, Var, Code) ............................................................................ 50
2. Cac ham................................................................................................ 51
a. Length(St) ......................................................................................... 51
Giao trnh Lp trnh Pascal cn ban
89
Trang 89
b. Copy(St, Pos, Num) .......................................................................... 51
d. Pos(St1, St2) ..................................................................................... 52
Bai 9. D liu kiu ban ghi va kiu tp .................................................... 54
I. Kiu ban ghi............................................................................................... 54
1. Khai nim va nh ngha........................................................................ 54
2. S dung Record..................................................................................... 55
3. Cu lnh With ....................................................................................... 57
4. Record co cu truc thay i ................................................................... 59
Bai 10. D liu kiu tp ..................................................................................... 62
I. Khai nim................................................................................................... 62
II. Cu truc va phn loai tp........................................................................... 63
III. Cac thao tac trn tp ................................................................................ 63
1. M tp mi ct d liu ...................................................................... 63
2. Ghi cac gia tr vao tp vi thu tuc Write ................................................ 64
3. oc d liu t mt tp a co .................................................................. 65
4. Tp truy nhp trc tip .......................................................................... 67
5. Cac thu tuc va ham x ly tp cua Turbo Pascal ...................................... 68
a. Ham IileSize(IileVar) ...................................................................... 68
b. Ham IilePos(IileVar) ....................................................................... 68
c. Thu tuc Erase(IileVar) ...................................................................... 68
d. Thu tuc Rename(IileVar, Str) ........................................................... 68
6. Tp vn ban (Text Iiles)........................................................................ 69
a. Ham EOI(Var I: Text): Boolean....................................................... 69
b. Ham EOLN(Var I: Text): Boolean .................................................. 69
c. Ghi vao mt tp vn ban.................................................................... 69
d. oc d liu t tp vn ban.................................................................70
e. Thu tuc thm dong.............................................................................71
PH N BAI TP THC HANH .............................. 72
: 1. Luyn tp cn ban.................................................................................72
: 2. Bai tp n gian lam quen vi cac kiu d liu va mt s ham chun cua
Pascal....................................................................................................72
: 3. Ap dung cac lnh n gian....................................................................73
: 4. Bai tp cho cac loai lnh co cu truc .....................................................7 4
4.1. Bai tp cho cu truc lnh If.................................................................7 4
Giao trnh Lp trnh Pascal cn ban
90
Trang 90
4.2. Bai tp cho cu truc lnh Case............................................................7 5
4.3. Bai tp cho cu truc vong lp Ior .......................................................7 5
4.4. Bai tp cho cu truc vong lp Repeat ..................................................7 6
4.5. Bai tp cho cu truc vong lp While ...................................................7 6
: 5. Bai tp cho d liu kiu oan con, lit k va kiu mang ........................77
: 7. Bai tp tao thu tuc va ham.....................................................................77
: 8. Bai tp cho phn x ly chui .................................................................7 8

You might also like