SlideShare a Scribd company logo
1 of 122
PhÇn III: Ng«n ng÷ lËp tr×nh Pascal
               Ch-¬ng 1: ThuËt gi¶i vµ ch-¬ng tr×nh
I. Kh¸i niÖm
1.ThuËt gi¶i
ThuËt gi¶i (algorithm) lµ mét tËp h÷u h¹n c¸c thao t¸c (c¸c c«ng
viÖc, c¸c phÐp to¸n) cã thÓ ®Æt tªn ®-îc vµ chóng ®-îc thùc
hiÖn theo mét tr×nh tù thÝch hîp trªn mét sè ®èi t-îng ®Ó ®¹t
®-îc môc ®Ých mong muèn. "H÷u h¹n" ë ®©y ®-îc hiÓu c¶ vÒ
mÆt thêi gian thùc hiÖn lÉn c«ng cô thùc hiÖn.
2.Ch-¬ng tr×nh
Ch-¬ng tr×nh lµ tËp hîp d·y c¸c lÖnh ®iÒu khiÓn m¸y tÝnh thùc
hiÖn. Nh- vËy, cã thÓ nãi mét ch-¬ng tr×nh lµ mét c¸ch diÔn t¶
thuËt gi¶i trong mét ng«n ng÷ chÝnh x¸c ®Ó m¸y tÝnh cã thÓ
hiÓu ®-îc.
II. C¸c ®Æc tr-ng cña thuËt to¸n
ThuËt to¸n trong tin häc ph¶i cã c¸c tÝnh chÊt sau:
+ TÝnh dõng: ThuËt to¸n ph¶i kÕt thóc sau mét sè h÷u h¹n b-íc.
+ TÝnh x¸c ®Þnh: C¸c thao t¸c ë mçi b-íc ph¶i hÕt søc râ rµng
vµ chØ ®-îc hiÓu theo mét nghÜa duy nhÊt. Trong cïng mét
®iÒu kiÖn hai m¸y kh¸c nhau hoÆc hai lÇn thao t¸c kh¸c nhau
ph¶i cho cïng mét kÕt qu¶ khi thùc hiÖn cïng mét thuËt to¸n.
+ TÝnh hµng lo¹t: ThuËt to¸n cã hiÖu lùc nh- nhau ®èi víi c¸c
bµi to¸n cïng lo¹i (cã cïng miÒn ¸p dông thuËt to¸n).
+ TÝnh kh¶ thi: ThuËt to¸n ph¶i bao gåm c¸c thao t¸c mµ m¸y cã
thÓ thùc hiÖn ®-îc nghÜa lµ chØ bao gåm nh÷ng phÐp to¸n sè
häc, c¸c phÐp so s¸nh, c¸c phÐp logic, c¸c phÐp nhËp xuÊt
th«ng tin tiªu chuÈn.
+ TÝnh ®Çy ®ñ: ThuËt to¸n ph¶i vÐt ®-îc hÕt c¸c t×nh
huèng, c¸c kh¶ n¨ng cã thÓ x¶y ra, kh«ng bá sãt bÊt kú mét
III. C¸c d¹ng diÔn t¶ thuËt to¸n
1. DiÔn ®¹t b»ng v¨n b¶n (ng«n ng÷ tù nhiªn)
VÝ dô1: ThuËt gi¶i nÊu c¬m cã thÓ ®-îc viÕt nh- sau:
B-íc 1: lÊy g¹o theo ®Þnh l-îng cÇn thiÕt
B-íc 2: vo g¹o vµ ®æ n-íc vµo nåi
B-íc 3: ®un s«i c¹n n-íc
B-íc 4: gi÷ löa nhá
B-íc 5: c¸ch 5 phót mét nÕm c¬m xem chÝn ch-a.
               NÕu ch-a chÝn quay vÒ b-íc 5
               NÕu ®· chÝn th× chuyÓn sang b-íc 6
B-íc 6: t¾t löa vµ b¾c nåi c¬m ra. KÕt thóc
C¸ch diÔn ®¹t b»ng v¨n b¶n nµy tuy kh¸ ®¬n gi¶n vµ gÇn gòi víi
t- duy cña con ng-êi nh-ng phô thuéc rÊt nhiÒu vµo c¸ch diÔn
®¹t cña ng-êi sö dông. V× vËy nã kh«ng tr¸nh khái cã nh÷ng chç
r-êm rµ khiÕn cho ng-êi ®äc kh«ng cã ®-îc mét c¸i nh×n kh¸i
qu¸t víi toµn bé thuËt to¸n.
2. DiÔn ®¹t b»ng ng«n ng÷ lËp tr×nh
Ng«n ng÷ lËp tr×nh (language program) lµ ng«n ng÷ do c¸c
chuyªn gia tin häc t¹o ra chuyªn dïng ®Ó viÕt ch-¬ng tr×nh
cho m¸y tÝnh. Nã ®-îc x©y dùng kh¸ ®¬n gi¶n vÒ chÝnh t¶ vµ
ng÷ ph¸p kh¸ gÇn gòi víi ng«n ng÷ khoa häc kü thuËt, qu¶n lý.
3. DiÔn ®¹t b»ng l-u ®å
Mét sè ký hiÖu hay dïng:

§iÓm b¾t ®Çu vµ chÊm døt thuËt to¸n

Thao t¸c nhËp hay xuÊt d÷ liÖu

Khèi xö lý c«ng viÖc

Khèi quyÕt ®Þnh lùa chän

§iÓm nèi

ChuÈn bÞ

Khèi ch-¬ng tr×nh con

§-êng ®i cña ch-¬ng tr×nh
VÝ dô 2: ThuËt to¸n gi¶i ph-¬ng tr×nh bËc nhÊt ax + b = 0, gåm
c¸c b-íc:
 B-íc 1: NhËp vµo 2 hÖ sè a vµ b.
 B-íc 2: XÐt ®iÒu kiÖn a = 0 ?
NÕu ®óng lµ a = 0, th× ®i ®Õn b-íc 3. NÕu kh«ng, nghÜa lµ a ≠
0, th× ®i ®Õn b-íc 4.
 B-íc 3: XÐt ®iÒu kiÖn b = 0 ?
NÕu b = 0, th× b¸o ph-¬ng tr×nh cã v« sè nghiÖm. ChuyÓn ®Õn
b-íc 5.
NÕu b       0, th«ng b¸o ph-¬ng tr×nh v« nghiÖm. ChuyÓn ®Õn
b-íc 5.
 B-íc 4: Ph-¬ng tr×nh cã mét nghiÖm duy nhÊt lµ x = - b/a.
 B-íc 5: KÕt thóc thuËt to¸n
VÝ dô 3 : TÝnh tæng S cña n sè nguyªn ®Çu tiªn, ta tiÕn
hµnh theo hai thuËt gi¶i sau:
VÝ dô 4: ThuËt gi¶i ®æi chç
ViÕt thuËt gi¶i ®Ó nhËp vµo 2 sè
A, B tõ bµn phÝm sau ®ã ®æi gi¸
trÞ cña biÕn A cho biÕn B vµ
ng-îc l¹i.
Dïng thªm mét biÕn trung gian
(TG) sau ®ã tiÕn hµnh:
    ChuyÓn gi¸ trÞ cña biÕn A
   cho biÕn TG
    ChuyÓn gi¸ trÞ cña biÕn B
   cho biÕn A
    ChuyÓn gi¸ trÞ cña biÕn TG
   cho biÕn B.
VÝ dô 5: ThuËt gi¶i t×m sè lín nhÊt trong 2 sè
Bµi tËp
1. ViÕt thuËt gi¶i nhËp 1 sè tõ bµn phÝm vµ in ra b×nh ph-¬ng cña sè
®ã nÕu sè ®ã lµ sè d-¬ng.
2.ViÕt thuËt gi¶i nhËp tõ bµn phÝm mét sè tù nhiªn N vµ in ra c¸c sè
nguyªn trong ph¹m vi tõ 1 ®Õn N
3. ViÕt thuËt gi¶i nhËp tõ bµn phÝm 2 sè tù nhiªn m, n (m<n) vµ in ra
mµn h×nh c¸c sè chia hÕt cho m trong kho¶ng tõ 1 ®Õn n
H-íng dÉn: §Ó kiÓm tra xem mét sè x cã chia hÕt cho m kh«ng ta
dïng biÓu thøc kiÓm tra X MOD M=0. NÕu biÓu thøc nµy lµ ®óng
th× x chia hÕt cho m.
4 ViÕt thuËt gi¶i nhËp 3 sè tõ bµn phÝm vµ in ra sè lín nhÊt trong ba
sè ®ã.
5. ViÕt thuËt gi¶i nhËp 2 sè tõ bµn phÝm vµ in ra UCLN, BCNN cña
hai sè ®ã.
H-íng dÉn:
UCLN cña 2 sè m vµ n (UCLN(m,n)) ®-îc tÝnh nh- sau:
UCLN(m,m)=m
CH¦¥NG 2
   C¸c kh¸i niÖm c¬ b¶n cña ng«n ng÷ lËp tr×nh Pascal
I. Giíi thiÖu
Pascal lµ ng«n ng÷ lËp tr×nh cÊp cao do gi¸o s- Niklaus Writh
(tr-êng §H kü thuËt Zurich, Thuþ sü) s¸ng t¸c vµ c«ng bè vµo
®Çu nh÷ng n¨m 1970.
Nã gióp cho sinh viªn còng nh- ng-êi míi häc lËp tr×nh cã ®-îc
thãi quen viÕt mét ch-¬ng tr×nh cã cÊu tróc s¸ng sña, râ rµng
dÔ ®äc vµ dÔ hiÓu.
-u ®iÓm cña Pascal
 Pascal lµ mét ng«n ng÷ cã ®Þnh kiÓu m¹nh mÏ. Cã nghÜa mét
biÕn vµ mét h»ng cña mét kiÓu d÷ liÖu kh«ng thÓ tù do ®em trén lÉn
víi biÕn vµ h»ng cña mét kiÓu d÷ liÖu kh¸c. Khi sö dông ph¶i khai b¸o
râ kiÓu cña chóng.
 C¸c kiÓu d÷ liÖu trong Pascal hÕt søc phong phó thÓ hiÖn ®-îc
nhiÒu kiÓu d÷ liÖu tõ ®¬n gi¶n ®Õn phøc t¹p.
 Pascal lµ mét ng«n ng÷ cã cÊu tróc. Mét ng«n ng÷ cã cÊu tróc
khèi lµ mét ng«n ng÷ mµ ta cã thÓ t¸ch c¸c th«ng tin d÷ liÖu
(biÕn, h»ng,..) vµ c¸c lÖnh cÇn dïng cho mét nhiÖm vô x¸c ®Þnh
thµnh nh÷ng khèi riªng ®Ó ng-êi lËp tr×nh cã thÓ gi¶i quyÕt dÇn dÇn
tõng khèi mét hoÆc cho nhiÒu ng-êi cïng tham gia lËp tr×nh. TÝnh
cÊu tróc cña Pascal ®-îc thÓ hiÖn trªn 3 mÆt:
      CÊu tróc vÒ mÆt d÷ liÖu: tõ c¸c d÷ liÖu kiÓu ®¬n gi¶n hoÆc
     lÖnh cã cÊu tróc ta cã thÓ x©y dùng c¸c d÷ liÖu cã cÊu tróc phøc
     t¹p h¬n
      CÊu tróc vÒ mÆt lÖnh: tõ c¸c lÖnh ®¬n gi¶n hoÆc lÖnh cã
     cÊu tróc ta cã thÓ x©y dùng c¸c lÖnh phøc t¹p h¬n.
II. C¸c phÇn tö c¬ b¶n cña ng«n ng÷ PASCAL
2.1. Bé ký tù
Ng«n ng÷ Pascal ®-îc x©y dùng tõ bé ký hiÖu c¬ b¶n sau:
- Bé 26 ch÷ c¸i La tinh:     26 ch÷ c¸i th-êng    a, b, c, ... , z
 26 ch÷ c¸i hoa:      A,B,C,... Z
- Bé 10 ch÷ sè thËp ph©n:           0, 1, ... , 9
- Bé dÊu c¸c phÐp to¸n:
céng +                trõ -         nh©n *                 chia /
        luü thõa ^
b»ng =                lín h¬n >     nhá h¬n <     kh¸c <>
më ngoÆc ( ®ãng ngoÆc )
- Bé c¸c ký hiÖu ®Æc biÖt:
dÊu g¹ch d-íi _              dÊu chÊm .           dÊu chÊm phÈy
 ;
dÊu nh¸y ®¬n '               c¸c ký hiÖu kh¸c nh- [] $ ...
2.2. Tõ kho¸
Lµ c¸c tõ riªng cña Pascal, cã ng÷ nghÜa ®· ®-îc x¸c
®Þnh, kh«ng ®-îc dïng nã vµo c¸c viÖc kh¸c hoÆc ®Æt tªn míi
trïng víi c¸c tõ khãa.
- Tõ khãa chung:
        PROGRAM, BEGIN, END, PROCEDURE, FUNCTION
- Tõ khãa ®Ó khai b¸o:
        CONST, VAR, TYPE, ARRAY, STRING, RECORD, SET,
         FILE, LABEL
- Tõ khãa cña lÖnh lùa chän:
        IF ... THEN ... ELSE,   CASE ... OF
- Tõ khãa cña lÖnh lÆp:
        FOR... TO... DO, FOR... DOWNTO... DO,
        WHILE... DO, REPEAT... UNTIL
- Tõ khãa ®iÒu khiÓn:
        WITH, GOTO, EXIT, HALT
- Tõ khãa to¸n tö:
2.3. Tªn chuÈn
Tªn chuÈn lµ tªn ®· ®-îc ®Þnh nghÜa s½n trong Pascal, nh-ng
ng-êi ta cã thÓ ®Þnh nghÜa l¹i nÕu muèn. Trong Pascal ta cã
c¸c tªn chuÈn sau ®©y:
        Boolean, Char, Integer, Word, Byte, Real, Text
        False, True, MaxInt
        Abs, Chr, Cos, Sin, Eof, Eoln
        Exp, Ln, Odd, Ord
        Round, Trunc, Sqr, Pred, Succ
        Dispose, New, Get, Put,
        Read, Readln, Write, Writeln, Reset, Rewrite
2.4. Tªn hay ®Þnh danh
Tªn hay ®Þnh danh lµ mét d·y ký tù do ng-êi sö dông tù ®Æt cho c¸c
h»ng, biÕn, hµm, thñ tôc, tªn ch-¬ng tr×nh, tªn kiÓu d÷ liÖu míi. Tªn
hay ®Þnh danh trong Pascal ph¶i tu©n thñ c¸c qui ®Þnh sau:
    Tªn ph¶i ®-îc b¾t ®Çu b»ng mét ch÷ c¸i hoÆc ch÷ sè.
    Trong tªn kh«ng chøa dÊu c¸ch
    Tªn kh«ng ®-îc trïng víi mét tõ kho¸ cña Pascal
    Sè ký tù cña tªn bÞ h¹n chÕ lµ 8 (Pascal chuÈn), 127 (Turbo
      Pascal)
VÝ dô: C¸c tªn viÕt nh- sau lµ sai v× Pascal kh«ng chÊp nhËn:
       #DLTA             sai v× tªn b¾t ®Çu b»ng mét ký tù ®Æc biÖt
       ARRAY             sai v× tªn trïng víi tõ kho¸
       VI DU             sai v× tªn cã dÊu c¸ch
Chó ý:
    §Ó lµm cho tªn ®-îc s¸ng sña ng-êi ta cho phÐp dïng dÊu g¹ch
      d-íi (_) khi viÕt tªn. VÝ dô: GIAI_PHUONG_TRINH
    C¸c tõ trong Pascal cã thÓ viÕt hoa hoÆc viÕt th-êng mµ gi¸
IV. CÊu tróc cña mét ch-¬ng tr×nh Pascal

    PROGRAM Tªn_ch-¬ng_tr×nh;
    USES…
    LABEL….
    USES…
    CONST…
    TYPE…
    VAR…
    PROCEDURE…
    FUNCTION…
    BEGIN
    …
    END
Mét ch-¬ng tr×nh Pascal cã c¸c phÇn:
* PhÇn tiªu ®Ò: PhÇn nµy b¾t ®Çu b»ng tõ khãa Program råi tiÕp ®Õn
lµ tªn cña ch-¬ng tr×nh vµ chÊm døt b»ng dÊu chÊm phÈy (;)
Tªn ch-¬ng tr×nh ph¶i ®-îc ®Æt theo ®óng qui c¸ch cña danh hiÖu tù
®Æt. PhÇn tiªu ®Ò cã hoÆc kh«ng.
* PhÇn khai b¸o d÷ liÖu: Mét ch-¬ng tr×nh Pascal cã thÓ cã mét sè
hoÆc tÊt c¶ c¸c khai b¸o d÷ liÖu sau:
– USES         : khai b¸o c¸c th- viÖn ch-¬ng tr×nh
– CONST : khai b¸o h»ng
– TYPE         : ®Þnh nghÜa kiÓu d÷ liÖu míi
– VAR        : khai b¸o c¸c biÕn
– PhÇn khai b¸o ch-¬ng tr×nh con (cã thÓ cã hoÆc kh«ng tïy theo nhu
cÇu).
* PhÇn th©n ch-¬ng tr×nh:
PhÇn th©n ch-¬ng tr×nh lµ phÇn quan träng nhÊt vµ b¾t buéc ph¶i
cã, phÇn nµy lu«n n»m gi÷a 2 tõ kho¸ lµ BEGIN vµ END. ë gi÷a lµ lÖnh
mµ c¸c ch-¬ng tr×nh chÝnh cÇn thùc hiÖn. Sau tõ khãa END lµ dÊu
* DÊu chÊm phÈy (;):
DÊu ; dïng ®Ó ng¨n c¸ch c¸c c©u lÖnh cña Pascal vµ kh«ng
thÓ thiÕu ®-îc.
* Lêi chó thÝch:
Lêi chó thÝch dïng ®Ó chó gi¶i cho ng-êi sö dông ch-¬ng tr×nh
nhí nh»m trao ®æi th«ng tin gi÷a ng-êi vµ ng-êi, m¸y tÝnh sÏ
kh«ng ®Ó ý ®Õn lêi chó thÝch nµy. Lêi chó thÝch n»m gi÷a ký
hiÖu: { } hoÆc (* *)
VÝ dô: ViÕt ch-¬ng tr×nh tÝnh diÖn tÝch h×nh trßn biÕt b¸n
kÝnh lµ R , tÝnh diÖn tÝch h×nh vu«ng biÕt c¹nh lµ a.
PROGRAM VI_DU;                (* Dßng tiªu ®Ò *)
VAR
        R, A, Dientich: Real;(* Khai b¸o ba biÕn thùc *)
BEGIN
        Write ('Ban kinh : R= '); Readln (R);
        Dientich:=3.14*R*R;          (* TÝnh diÖn tÝch h×nh
trßn *)
        Writeln (‘Dien tich hinh tron la:', Dientich:10:3);
        Write ('Do dai canh hinh vuong: A= '); Readln (A);
        Dientich:=A*A;
        Writeln (‘Dien tich hinh vuong la’, Dientich:10:3);
        Readln;
END.
V. C¸c kiÓu d÷ liÖu c¬ së
5.1. Kh¸i niÖm
D÷ liÖu (DATA) ®-îc ®Þnh nghÜa lµ tÊt c¶ nh÷ng g× ®-îc m¸y
tÝnh xö lý. C¸c kiÓu d÷ liÖu cÇn tíi m¸y tÝnh xö lý cã rÊt
nhiÒu, tån t¹i d-íi nhiÒu d¹ng kh¸c nhau vÒ b¶n chÊt, ý
nghÜa, kh«ng chỉ lµ sè liÖu mµ cßn lµ c¸c kÝ tù, c¸c mÖnh
®Ò logic thÓ hiÖn qua c¸c ®èi t-îng cô thÓ cÇn xö lý nh- tiÒn
l-¬ng, ®Þa chØ, tªn, tuæi, v¨n b¶n, tÝn hiÖu.
VÒ ph-¬ng diÖn ng«n ng÷ bËc cao th× d÷ liÖu ®· ®-îc kh¸i
qu¸t ho¸ víi c¸c kiÓu d÷ liÖu. Mét kiÓu d÷ liÖu (Data Type)
®-îc ®Þnh nghÜa víi hai ®iÓm chÝnh nh- sau:
- Mét tËp hîp c¸c gi¸ trÞ mµ mét biÕn thuéc kiÓu ®ã cã thÓ
nhËn ®-îc
- Trªn ®ã x¸c ®Þnh mét sè phÐp to¸n.
CÇn nhí r»ng mét biÕn ph¶i g¾n liÒn víi mét kiÓu d÷ liÖu.
Trong Pascal, c¸c kiÓu d÷ liÖu cã thÓ rÊt phøc t¹p song nãi
chung ®Òu ®-îc ®Þnh nghÜa ra tõ c¸c kiÓu ®¬n gi¶n
nhÊt, kh«ng cã cÊu tróc.
5.2. KiÓu sè nguyªn (Integer type)
a. KiÓu sè nguyªn trong Turbo Pascal
§-îc ®Þnh nghÜa víi c¸c tõ khãa sau:
b. C¸c phÐp to¸n sè häc ®èi víi sè nguyªn
5.3. KiÓu sè thùc (Real type)
Cã n¨m kiÓu sè thùc ®-îc tæng kÕt qua b¶ng sau:
C¸c gi¸ trÞ thùc ®-îc biÓu diÔn theo hai c¸ch: d¹ng dÊu phÈy tÜnh vµ
d¹ng dÊu phÈy ®éng.
    C¸ch viÕt sè thùc theo d¹ng dÊu phÈy tÜnh: viÕt d¹ng thËp
   ph©n b×nh th-êng. VÝ dô: 2.14, +5.0, -25.345678, 0.0006
    C¸ch viÕt sè thùc theo d¹ng dÊu phÈy ®éng: sè ®-îc t¸ch thµnh
   hai phÇn lµ ®Þnh trÞ vµ bËc. PhÇn ®Þnh trÞ lµ mét sè nguyªn
   hay sè thùc viÕt d-íi d¹ng dÊu phÈy tÜnh.PhÇn bËc lµ mét sè
   nguyªn.Hai phÇn c¸ch nhau bëi ch÷ E hay e.
        VÝ dô:         123.456E-4: biÓu diÔn sè 0.0123456
               0.15E+5: biÓu diÔn sè 15000.0
               5E8: biÓu diÔn 500000000.0
               -55.3e2: biÓu diÔn -5530.0
C¸c ký tù biÓu diÔn mét sè thùc ph¶i viÕt liÒn nhau.
C¸c phÐp to¸n sè häc c¬ b¶n +, -, * , / ®-îc sö dông trong kiÓu real.
Chó ý: Riªng phÐp to¸n DIV vµ MOD kh«ng thùc hiÖn ®èi víi kiÓu sè
thùc
B¶ng d-íi ®©y lµ c¸c hµm sè häc cho kiÓu sè thùc:
5.4. KiÓu logic (Boolean)
Mét d÷ liÖu thuéc kiÓu BOOLEAN lµ mét ®¹i l-îng ®-îc chøa trong
1 byte ë Turbo Pascal vµ chØ cã thÓ nhËn ®-îc mét trong hai gi¸
trÞ logic lµ TRUE (®óng) vµ FALSE (sai).
        Qui -íc:TRUE > FALSE
C¸c phÐp to¸n trªn kiÓu Boolean:
NhËn xÐt:
+ PhÐp AND (vµ) chØ cho kÕt qu¶ lµ TRUE khi c¶ 2 to¸n h¹ng lµ
TRUE
+ PhÐp OR (hoÆc) chØ cho kÕt qu¶ lµ FALSE khi c¶ 2 to¸n h¹ng lµ
FALSE
+ PhÐp XOR (hoÆc triÖt tiªu) lu«n cho kÕt qu¶ lµ TRUE khi c¶ 2
to¸n h¹ng lµ kh¸c nhau vµ ng-îc l¹i.
        C¸c phÐp to¸n quan hÖ cho kÕt qu¶ kiÓu Boolean:
5.5. KiÓu ký tù (Char type)
TÊt c¶ c¸c d÷ liÖu viÕt ë d¹ng ch÷ ký tù ®-îc khai b¸o bëi tõ khãa CHAR.
Mét ký tù ®-îc viÕt trong hai dÊu nh¸y ®¬n ‘ ‘. §Ó tiÖn trao ®æi th«ng tin
cÇn ph¶i s¾p xÕp, ®¸nh sè c¸c ký tù, mçi c¸ch s¾p xÕp nh- vËy gäi lµ b¶ng
m·. B¶ng m· th«ng dông hiÖn nay lµ b¶ng m· ASCII .
§Ó thùc hiÖn c¸c phÐp to¸n sè häc vµ so s¸nh, ta dùa vµo gi¸ trÞ sè thø tù
m· ASCII cña tõng ký tù, ch¼ng h¹n: 'A' < 'a' v× sè thø tù m· ASCII t-¬ng øng
lµ 65 vµ 97.
Trong Turbo Pascal mçi ký tù ®-îc chøa trong 1 byte.
        C¸c hµm chuÈn liªn quan ®Õn kiÓu ký tù:
VI. Khai b¸o biÕn, h»ng, kiÓu vµ biÓu thøc
6.1. H»ng (constant)
a. §Þnh nghÜa
H»ng lµ mét ®¹i l-îng cã gi¸ trÞ kh«ng ®æi trong qu¸ tr×nh ch¹y ch-¬ng
tr×nh. Ta dïng tªn h»ng ®Ó ch-¬ng tr×nh ®-îc râ rµng vµ dÔ söa ®æi.
b. C¸ch khai b¸o
                 CONST
                         <Tªn h»ng> = <gi¸ trÞ cña h»ng> ;
VÝ dô CONST
                 Siso = 100;
                 X = ‘xxx ‘;
6.2. BiÕn (variable)
a. §Þnh nghÜa
BiÕn lµ mét cÊu tróc ghi nhí cã tªn (®ã lµ tªn biÕn hay danh hiÖu cña
biÕn).
BiÕn ghi nhí mét d÷ liÖu nµo ®ã gäi lµ gi¸ trÞ (value) cña biÕn. Gi¸ trÞ cña
biÕn cã thÓ ®-îc biÕn ®æi trong thêi gian sö dông biÕn.
Sù truy xuÊt cña biÕn nghÜa lµ ®äc gi¸ trÞ hay thay ®æi gi¸ trÞ cña biÕn
®-îc thùc hiÖn th«ng qua tªn biÕn.
VÝ dô : Readln (x) ;
        Writeln (x) ;
VI. Khai b¸o biÕn, h»ng, kiÓu vµ biÓu thøc
6.1. H»ng (constant)
6.2. BiÕn (variable)
a. §Þnh nghÜa
BiÕn lµ mét ®¹i l-îng mµ gi¸ trÞ cña nã cã thÓ thay ®æi nhiÒu lÇn trong
ch-¬ng tr×nh. Tªn biÕn lµ tªn cña « nhí cÊt gi÷ d÷ liÖu
VÝ dô : Readln (x) ; Writeln (x) ; x := 9 ;
BiÕn lµ mét cÊu tróc ghi nhí d÷ liÖu v× vËy nã ph¶i tu©n theo qui ®Þnh
cña kiÓu d÷ liÖu : mét biÕn ph¶i thuéc mét kiÓu d÷ liÖu nhÊt ®Þnh.
b. C¸ch khai b¸o
VAR
                         <Tªn biÕn> : <KiÓu biÕn> ;
VÝ dô : VAR                        a : Real ;
                                   b, c : Integer ;
                                   TEN : String [20];
                                   X : Boolean ;
                                   Chon : Char ;
CÇn khai b¸o c¸c biÕn tr-íc khi sö dông chóng trong ch-¬ng tr×nh. Khai b¸o
mét biÕn lµ khai b¸o sù tån t¹i cña biÕn ®ã vµ cho biÕt nã thuéc kiÓu g×.
VI. Khai b¸o biÕn, h»ng, kiÓu vµ biÓu thøc
6.1. H»ng (constant)
6.2. BiÕn (variable)
6.3. KiÓu (Type)
a. §Þnh nghÜa
Ngoµi c¸c kiÓu ®· ®Þnh s½n, Pascal cßn cho phÐp ta ®Þnh nghÜa c¸c
kiÓu d÷ liÖu kh¸c tõ c¸c kiÓu c¨n b¶n theo qui t¾c x©y dùng cña Pascal.
 b. C¸ch khai b¸o
                 TYPE
                         <Tªn kiÓu> = <M« t¶ x©y dùng kiÓu>;
VÝ dô :          TYPE SoNguyen = Integer ;
                         Diem = Real;
                         Tuoi = 1 .. 100 ;
                         Color = (Red, Blue, Green) ;
                         Thu = (Sun, Mon, Tue, Wed, Thu, Fri, Sat) ;
khi ®· khai b¸o kiÓu g× th× ta cã quyÒn sö dông ®Ó khai b¸o biÕn nh- ë vÝ
dô sau:
VÝ dô :          VAR              i, j : SoNguyen ;
                                  Dtb : Diem ;
                                  T : tuoi ;
                                  Mau : Color ;
                                  Ngay_hoc : Thu;
VI. Khai b¸o biÕn, h»ng, kiÓu vµ biÓu thøc
6.4. BiÓu thøc (Expression)
a. §Þnh nghÜa
Mét biÓu thøc lµ mét c«ng thøc tÝnh to¸n bao gåm c¸c phÐp to¸n, h»ng,
biÕn, hµm vµ c¸c dÊu ngoÆc.
VÝ dô : 5 + A * SQRT(B) / SIN(X)
        (A AND B) OR C
b. Thø tù -u tiªn
Khi tÝnh gi¸ trÞ cña mét biÓu thøc, ng«n ng÷ Pascal qui -íc thø tù -u tiªn
cña c¸c phÐp to¸n tõ cao ®Õn thÊp nh- sau:
           Møc -u tiªn:           C¸c phÐp to¸n:
                 1.               BiÓu thøc trong ngoÆc ®¬n ( )
                 2.               PhÐp gäi hµm
                 3.               Not, -
                 4.               *, /, DIV, MOD, AND
                 5.               +, -, OR, XOR
                 6.               =, <>, <=, >=, <, >, IN
VÝ dô : (4+5)/3 + 6 - (sin((/2)+3)*2 = (9)/3 + 6 - (1+3)*2 = 3 + 6 - 8 = 1
VI. Khai b¸o biÕn, h»ng, kiÓu vµ biÓu thøc
6.4. BiÓu thøc (Expression)
  c. Qui -íc tÝnh thø tù -u tiªn
Khi tÝnh mét biÓu thøc cã 3 qui t¾c vÒ thø tù -u tiªn nh- sau:
Qui t¾c 1 :      C¸c phÐp to¸n nµo cã -u tiªn cao h¬n sÏ ®-îc tÝnh tr-íc.
Qui t¾c 2 :      Trong c¸c phÐp to¸n cã cïng thø tù -u tiªn th× sù tÝnh to¸n
sÏ ®-îc thùc hiÖn tõ tr¸i sang ph¶i.
Qui t¾c 3 :      PhÇn trong ngoÆc tõ trong ra ngoµi ®-îc tÝnh to¸n ®Ó trë
thµnh mét gi¸ trÞ ®¬n.
 d. KiÓu cña biÓu thøc
Lµ kiÓu cña kÕt qu¶ sau khi tÝnh biÓu thøc.
VÝ dô :          BiÓu thøc sau ®-îc gäi lµ biÓu thøc Boolean:
                 not (('a'>'c') and ('c'>'C')) or ('B'='b') cã gi¸ trÞ TRUE
VII. C¸c thñ tôc nhËp/xuÊt
7.1.C©u lÖnh (statement)
+ Trong mét ch-¬ng tr×nh Pascal, sau phÇn m« t¶ d÷ liÖu lµ phÇn m« t¶ c¸c
c©u lÖnh. C¸c c©u lÖnh cã nhiÖm vô x¸c ®Þnh c¸c c«ng viÖc mµ m¸y tÝnh
ph¶i thùc hiÖn ®Ó xö lý c¸c d÷ liÖu ®· ®-îc m« t¶ vµ khai b¸o.
+ C©u lÖnh ®-îc chia thµnh c©u lÖnh ®¬n gi¶n vµ c©u lÖnh cã cÊu tróc.
        - C©u lÖnh ®¬n gi¶n
                + Vµo d÷ liÖu :          Read, Readln
                + Ra d÷ liÖu      :      Write, Writeln
                + LÖnh g¸n        :      :=
                + Lêi gäi ch-¬ng tr×nh con       (gäi trùc tiÕp tªn cña ch-¬ng
tr×nh con)
                + Xö lý tËp tin : RESET, REWRITE, ASSIGN ...
        - C©u lÖnh cã cÊu tróc
                + LÖnh ghÐp :            BEGIN .. END
                + LÖnh chän :            IF .. THEN .. ELSE
                                         CASE .. OF .
                + LÖnh lÆp        :      FOR .. TO .. DO
                                         REPEAT .. UNTIL
                                         WHILE .. DO
+ C¸c c©u lÖnh ph¶i ®-îc ng¨n c¸ch víi nhau bëi dÊu chÊm phÈy ( ; ) vµ c¸c
c©u lÖnh cã thÓ viÕt trªn mét dßng hay nhiÒu dßng.
7.2. CÊu tróc tuÇn tù
a. LÖnh g¸n (Assignment statement)
Mét trong c¸c lÖnh ®¬n gi¶n vµ c¬ b¶n nhÊt cña Pascal lµ lÖnh g¸n. Môc
®Ých cña lÖnh nµy lµ g¸n cho mét biÕn ®· khai b¸o mét gi¸ trÞ nµo ®ã cïng
kiÓu víi biÕn.
 C¸ch viÕt: <Tªn_biÕn> := <biÓu thøc> ;
VÝ dô : VAR         c : Char ;
                    i,j : Integer ;
                    x, y : Real ;
                    p, q : Boolean ;
th× ta cã thÓ cã c¸c phÐp g¸n sau :
                    c := ‘A’ ; c := Chr(90) ;
                    i := (35+7)*2 mod 4 ; i := i div 7 ;
                    x := 0.5 ;
                    q := i > 2*j +1 ; q := not p ;
 ý nghÜa: PhÐp g¸n cã ý nghÜa
- L-u tr÷ c¸c gi¸ trÞ kh¸c nhau vµo mét « nhí t¹i nh÷ng thêi ®iÓm kh¸c nhau.
- Mét qu¸ tr×nh tÝnh to¸n cã thÓ coi nh- lµ mét qu¸ tr×nh lµm thay ®æi gi¸
b. LÖnh ghÐp (Compound statement)
Mét nhãm c©u lÖnh ®¬n ®-îc ®Æt gi÷a 2 ch÷ BEGIN vµ END sÏ t¹o thµnh
mét c©u lÖnh ghÐp.
Bµi tËp
1. TÝnh gi¸ trÞ cña c¸c biÓu thøc d-íi ®©y:
         (‘d’>‘g’) and (18 div 4 * 4 >125) =
         (True<False) or (‘a’ <‘c’) =
         round(-72.315)=
2. Cho biÕt S thuéc kiÓu g× biÕt r»ng n lµ mét biÕn kiÓu Shortint vµ trong
ch-¬ng tr×nh cã lÖnh g¸n: S:=n(n-1)/2;
3. BiÕt r»ng trong ch-¬ng tr×nh cã mét lÖnh g¸n: i:=n mod 4
Hái n cã thÓ khai b¸o kiÓu real ®-îc kh«ng?
4. BiÕt r»ng trong ch-¬ng tr×nh cã sö dông mét lÖnh g¸n i:=ORD(n). H·y x¸c
®Þnh c¸c kiÓu cã thÓ sö dông ®-îc trong khai b¸o cña n
5. BiÕt r»ng S1 vµ S2 lµ hai biÕn kiÓu Byte vµ trong ch-¬ng tr×nh cã lÖnh
g¸n S:=S1+S2. X¸c ®Þnh kiÓu khai b¸o ®óng nhÊt cña S
6. BiÕt r»ng n lµ mét biÕn kiÓu Byte vµ trong ch-¬ng tr×nh cã lÖnh g¸n
S:=n*(n+1). Hái S cã thÓ nhËn c¸c kiÓu khai b¸o nµo?
7. BiÕt r»ng trong ch-¬ng tr×nh cã mét lÖnh g¸n: i:=ORD(n). Hái kiÓu cña i
cã thÓ lµ kiÓu sè thùc ®-îc kh«ng?
8. BiÕt r»ng trong ch-¬ng tr×nh cã sö dông lÖnh g¸n i:=n MOD 4. Hái kiÓu
cña n cã thÓ lµ real ®-îc kh«ng
9. BiÕt r»ng n lµ mét biÕn kiÓu Integer vµ trong ch-¬ng tr×nh cã sö dông
   lÖnh g¸n S:=n*(n+1)/2. Hái kiÓu cña S cã thÓ trïng víi kiÓu cña n ®-îc
   hay kh«ng?
10. BiÕt n lµ mét biÕn kiÓu Integer vµ S:=n*n. Hái biÕn i cã thÓ khai b¸o
   kiÓu Integer ®-îc kh«ng nÕu g¸n i:=SQRT(S)
11. BiÕt r»ng n lµ mét biÕn kiÓu integer vµ S:=n*(n div (trunc (n/2))). Hái S
   cã thÓ nhËn gi¸ trÞ kiÓu Integer ®-îc Khoanh vµo c©u tr¶ lêi ®óng
    a) Cho ®o¹n khai b¸o biÕn         b) kh«ng?
12.    sau:                           BiÓu thøc 25 div 3 + 5/2*3 cã gi¸ trÞ
    Var      m,n: integer;               lµ?
       X,y: real;                     a. 8.0
    Khoanh vµo c©u tr¶ lêi sai        b. 15.5
                  a. m: =-4;          c. 9.5
                  b. n: =3.5;         d. 15.0
                                     c) Khoanh vµo c©u tr¶ lêi ®óng
                  c. x:=6;           Trong ch-¬ng tr×nh cã lÖnh X:=(100
                  d. y:=11.5;            > 76) and (‘B’< ‘A’);
                                     X¸c ®Þnh kiÓu cña X
                                     a.       KiÓu sè nguyªn.
                                     b.       KiÓu sè thùc.
                                     c.       KiÓu logic.
                                     d.       KiÓu ký tù.
Ch-¬ng 3: Thñ tôc vµo - ra d÷ liÖu
I. Thñ tôc viÕt d÷ liÖu ra mµn h×nh
§Ó viÕt d÷ liÖu ra mµn h×nh, Pascal cã 3 mÉu viÕt nh- sau:
          Write (Item 1, item 2, ..., item n);
          Writeln (Item 1, item 2, ..., item n);
          Writeln;
Trong ®ã item 1, item 2, .. item n lµ c¸c môc cÇn viÕt ra, cã thÓ lµ 1 trong
c¸c lo¹i sau:
- biÕn             Write (A).
- hµm              Write (sin(x));
- biÓu thøc        Write (B*B-4*a*c);
- h»ng             Write (PI);
Mµn h×nh th«ng dông nhÊt hiÖn nay cña m¸y vi tÝnh ®-îc ph©n thµnh 25
dßng ch÷, mçi dßng cã thÓ viÕt 80 kÝ tù. T¹i mçi thêi diÓm, mµn h×nh cã
mét vÞ trÝ lµm viÖc thÓ hiÖn ra d-íi d¹ng mét khèi s¸ng nhÊp nh¸y hoÆc
mét nÐt g¹ch nhÊp nh¸y gäi lµ con trá mµn h×nh hay dÊu nh¾c (cursor).
II. ViÕt ra kiÓu sè nguyªn: Cho sè nguyªn i
2.1. C¸ch viÕt kh«ng qui c¸ch Write(i); hoÆc Writeln(i);
2.2. C¸ch viÕt cã qui c¸ch       Write(i:n); hoÆc        Writeln(i:n);
Ta cã thÓ bè trÝ sè chç cè ®Þnh ®Ó viÕt sè nguyªn b»ng c¸ch thªm dÊu
hai chÊm (:) theo sau lµ sè chç ®Ó viÕt. M¸y sÏ bè trÝ sè nguyªn tõ phÝa
bªn ph¶i qua bªn tr¸i. NÕu thõa chç nã sÏ ®Ó tr¾ng ë bªn tr¸i.
   VÝ dô 6.1 §o¹n ch-¬ng tr×nh       VÝ dô 6.2:
   sau:                              VAR
   VAR                                       I: integer;
            I: integer;              BEGIN
   BEGIN                                     I:=123;
            I:=123;                          Writeln (I:8);
            Writeln (I);                     Writeln (-34567:8);
            Writeln (-34567);        END.
   END.                              SÏ viÕt ra trªn mµn h×nh:
   SÏ in ra mµn h×nh:                   123
   123                                -34567
   -34567
III. ViÕt ra kiÓu sè thùc: Víi R lµ mét biÕn thùc: VAR R: Real;
 3.1. C¸ch viÕt kh«ng qui c¸ch
  C¸ch viÕt kh«ng qui c¸ch Write (R) hoÆc Writeln (R) sÏ viÕt ra gi¸ trÞ cña
 R theo c¸ch biÓu diÔn dÊu phÈy ®éng.
 3.2. C¸ch viÕt cã qui c¸ch cña sè thùc R
           R: m:n          hoÆc              R: e
 trong ®ã:         m: sè chç cho c¶ sè thùc
                   n: sè chç cho phÇn thËp ph©n
                   e: sè chç cho c¶ sè thùc viÕt d-íi d¹ng biÓu diÔn dÊu
VÝ dô ®éng ch-¬ng tr×nh sau:
 phÈy 3: §o¹n                            VÝ dô 4:
          R:=123.456;                             Writeln (123.456:12:6);
          Writeln (R);                            Writeln
          Write (3.14);                  (13.123456789:12:6);
SÏ cã kÕt qu¶ trªn mµn h×nh nh-                   Write (3.14:12:6);
sau:                                     sÏ cho ra kÕt qu¶:
          1.2345600000E+02                                 13.123457
          3.1400000000E+00                                 123.456000
VÝ dô 5: Write (13.123456789:12);                          3.140000
sÏ cho ra kÕt qu¶:
          1.312346E+01
IV. KiÓu kÝ tù          VAR              Ch: Char;
4.1. C¸ch viÕt kh«ng qui c¸ch Write(ch); hoÆc              Writeln(ch);
Víi c¸ch viÕt kh«ng qui c¸ch, m¸y sÏ viÕt ra c¸c kÝ tù mét c¸ch b×nh th-êng
nghÜa lµ mçi kÝ tù chiÕm mét chç.
4.2. C¸ch viÕt cã qui c¸ch       Write(ch:n); hoÆc Writeln(ch:n);

      VÝ dô 6:                        VÝ dô 7:
              Writeln ('ABC');                Writeln ('ABC':5);
              Ch:='Y';                        Ch:='Y';
              Writeln (ch);                   Writeln (ch:5);
      SÏ cho ra kÕt qu¶:              SÏ cho kÕt qu¶ sau:
      ABC                                     ABC
      Y                                       Y
V. KiÓu Boolean
KiÓu Boolean ®-îc viÕt ra víi c¸c tõ TRUE vµ FALSE. Ta còng cã thÓ qui
®Þnh sè chç ®Ó viÕt c¸c tõ nµy.
VÝ dô 8: VAR
                OK: Boolean;
BEGIN
                OK:=3<5;
Writeln (OK);   (*C¸ch viÕt kh«ng cã qui c¸ch*)
Writeln (OK:8); (* C¸ch viÕt cã qui c¸ch *)
END.
SÏ cho ra kÕt qu¶:
        TRUE
        TRUE
VI. §-a d÷ liÖu ra m¸y in
C¸c lÖnh Write vµ Writeln trong c¸c vÝ dô trªn ®-îc dïng ®Ó viÕt ra trªn
mµn h×nh. Trong Turbo Pascal, viÖc ®-a d÷ liÖu ra m¸y in còng ®-îc dïng
víi c¸c lÖnh Write vµ Writeln b»ng c¸ch thªm tõ Lst vµ dÊu phÈy vµo tr-íc
c¸c biÕn cÇn in ra:
VÝ dô: Writeln (Lst, I:5, J:8, R:12:5, OK);
Trong tr-êng hîp cÇn ®-a d÷ liÖu ra m¸y in, ch-¬ng tr×nh ph¶i cã khai b¸o
sö dông Unit Printer:
          USES             Printer;
VII. C¸c thñ tôc tr×nh bµy mµn h×nh
Mét sè thñ tôc c¬ b¶n vµ ®-îc dïng th-êng xuyªn cña Turbo Pascal ®Ó
tr×nh bµy mµn h×nh ®-îc nªu ra d-íi ®©y.
Tr-íc khi sö dông c¸c thñ tôc tr×nh bµy mµn h×nh ph¶i khai b¸o sö dông
Unit Crt ë phÇn ®Çu ch-¬ng tr×nh:
         USES CRT;
Víi CRT lµ Unit chøa c¸c thñ tôc tr×nh bµy mµn h×nh
7.1. Thñ tôc Gotoxy(X,Y); {X,Y: integer}
Lµ thñ tôc ®Æt con trá vµo to¹ ®é x,y cña mµn h×nh. To¹ ®é x lµ to¹ ®é cét
cã gi¸ trÞ tõ 1 ®Õn 80. To¹ ®é y lµ to¹ ®é dßng tÝnh tõ 1 ®Õn 25.
VÝ dô: Gotoxy (10,4)
sÏ ®-a con trá ®Õn vÞ trÝ hµng 4, cét 10 trªn mµn h×nh.
7.2. Thñ tôc xo¸ mµn h×nh (Clsscr);
Clrscr (Clear Screen) lµ thñ tôc xo¸ toµn bé mµn h×nh. Sau khi xo¸ con trá
®-îc ®Æt ë vÞ trÝ 0,0 (tøc lµ gãc trªn bªn tr¸i).
ClrEol; (Clear end of Line)
lµ thñ tôc ®Ó xo¸ tõ vÞ trÝ con trá ®Õn cuèi dßng.
7.3. Thñ tôc chän mµu kÝ tù: Text Color
Khai b¸o:        Procedure TextColor(Color)
M« t¶:           Lùa chän mµu kÝ tù
Color lµ mét biÓu thøc nguyªn n»m trong kho¶ng tõ 0 ®Õn 15 t-¬ng øng
víi mét trong c¸c h»ng sè mµu ®· ®-îc ®Þnh nghÜa trong CRT Unit.
Trong Unit Crt ®· ®Þnh nghÜa s½n c¸c mµu víi gi¸ trÞ h»ng nh- sau:
Cã thÓ viÕt tªn mµu hoÆc viÕt gi¸ trÞ t-¬ng øng cña mµu. NÕu muèn t¹o
nhÊp nh¸y h·y céng thªm 128 vµo gi¸ trÞ cña mµu
Nh÷ng mµu v¨n b¶n ®-îc biÓu diÔn b»ng c¸c sè gi÷a kho¶ng 0 tíi 15 ®Ó
nhËn d¹ng mét c¸ch dÔ dµng. Cã thÓ dïng tªn c¸c mµu hoÆc gi¸ trÞ sè
cña chóng. Trong chÕ ®é v¨n b¶n mÇu, mÇu kÝ tù ®-îc chän tõ 16 mµu
cßn mµu nÒn tõ 8 mµu.
7.4. Thñ tôc ®æi mµu nÒn
Khai b¸o:        Procedure TextBackground(Color)
M« t¶:           Chän mµu nÒn
trong ®ã Color lµ mét biÓu thøc nguyªn cã gi¸ trÞ tõ 0 ®Õn 7 t-¬ng øng víi
1 trong 8 h»ng sè mµu ®Çu tiªn cña b¶ng.
VÝ dô 9: ViÕt ra mµn h×nh ch÷ Pascal ®Çu tiªn b¾t ®Çu tõ to¹ ®é
X=10, Y=2 víi mµu ®á, xanh l¸ c©y, xanh l¬ s¸ng, vµng t-¬ng øng. Trong
®ã ch÷ Pascal mÇu xanh l¬ s¸ng nhÊp nh¸y.
PROGRAM Viet_Thu;
 USER Crt;
VAR X, Y: integer;
BEGIN
     TextBackGround(White); (* §Æt mµu nÒn cho toµn bé mµn h×nh*)
     ClrScr; (* Xo¸ mµn h×nh tr-íc khi ch¹y ch-¬ng tr×nh *)
     X:=10; Y:=2;
     GotoXY(X,Y); TextColor(Red); Write('PASCAL');
     Gotoxy(X-4,Y+1); TextColor(Green);Write('PASCAL');
     Gotoxy(X+2,Y+2); TextColor(LightBlue+Blink);
     Write ('PASCAL');
     Gotoxy(X,y+3); Textcolor(14);
     Write ('PASCAL');
     GotoXY(X,Y+3);
END.
VIII. Thñ tôc vµo d÷ liÖu Read vµ Readln
8.1. Thñ tôc vµo d÷ liÖu
PhÐp g¸n lµ lÖnh c¬ b¶n, ®¬n gi¶n nhÊt ®Ó g¸n gi¸ trÞ cho mét biÕn trong
ch-¬ng tr×nh. Tuy nhiªn ®Ó g¸n gi¸ trÞ cho mét biÕn th«ng qua thiÕt bÞ
vµo chuÈn lµ bµn phÝm ta dïng c¸c lÖnh sau:
                   Read (biÕn 1, biÕn 2,... biÕn n);
                   Readln (biÕn 1, biÕn 2, ..., biÕn n);
                   Readln ;
VÝ dô 6.11:
VAR
          A, B, C: real;
          delta:real;
BEGIN
          Read (A,B,C);
          Readln(delta);
.....
END.
Trong khi ®äc, thñ tôc Read vµ Readln cßn kiÓm tra xem d÷ liÖu gâ vµo
cã t-¬ng thÝch víi kiÓu d÷ liÖu ®· khai b¸o cña biÕn hay kh«ng.
8.2. KÕt hîp gi÷a Write vµ Readln ®Ó vµo d÷ liÖu
C¸c thñ tôc Read vµ Readln ®· tr×nh bµy ë trªn cã mét nh-îc ®iÓm lµ
kh«ng chØ dÉn cho ng-êi sö dông biÕt biÕn nµo ®ang ®-îc nhËp gi¸ trÞ.
V× vËy ta cã thÓ kÕt hîp víi thñ tôc Write ®Ó c«ng viÖc ®-îc s¸ng sña.
VÝ dô 12:
VAR
        A, B, C: real;
        delta:real;
BEGIN
        Write ('nhËp gi¸ trÞ cho c¸c biÕn A, B, C: '); Readln (A,B,C);
        Write ('delta = '); Readln(delta);
        Cã thÓ nhËp gi¸ trÞ cho tõng biÕn A, B, C nh- sau:
        Write ('A= '); Readln(A);
        Write ('B= '); Readln(B);
        Write ('C= '); Readln(C);
        …
END;
Bµi tËp
1. KÕt qu¶ thÓ hiÖn trªn mµn h×nh nh- thÕ nµo sau c¸c lÖnh sau:
                 I:=2.00; Writeln(i);
2. BiÕt r»ng biÕn i ®-îc khai b¸o kiÓu integer. H·y viÕt kÕt qu¶ ®-îc thÓ
hiÖn trªn mµn h×nh sau c¸c lÖnh:
                 I:=3; Write (i); Readln; Write(i+3);
3. BiÕt r»ng biÕn i ®-îc khai b¸o kiÓu real vµ i:=3. Hái cã bao nhiªu ký tù
tr¾ng ®-îc sö dông trong biÓu diÔn cña i víi lÖnh Write(i:10:2);
4. BiÕt r»ng i:=3.4. Hái lÖnh Writeln(i:5) sÏ thÓ hiÖn gi¸ trÞ cña biÕn i trªn
mµn h×nh nh- thÕ nµo?
5. BiÕt r»ng i:=FALSE. Hái cã bao nhiªu ký tù tr¾ng ®-îc sö dông trong
biÓu diÔn cña i víi lÖnh Write(i:8);
6. KÕt qu¶ thÓ hiÖn trªn mµn h×nh nh- thÕ nµo sau c¸c lÖnh:
Write(‘18+12’); Write(18+12);
7. KÕt qu¶ thÓ hiÖn trªn mµn h×nh nh- thÕ nµo sau lÖnh:
Write(4/2);
8. To¹ ®é con trá lµ bao nhiªu khi thùc hiÖn xong c¸c lÖnh sau:
Gotoxy(12,10); Write(‘123’); Readln; Writeln(‘123’);
9. To¹ ®é con trá lµ bao nhiªu khi thùc hiÖn xong c¸c lÖnh sau:
Gotoxy(5,5); Write(‘123’); ClrScr;Readln; Writeln(‘123’);
10. ViÕt ch-¬ng tr×nh tÝnh l-¬ng cña mét nh©n viªn.
Yªu cÇu: NhËp vµo møc l-¬ng c¬ b¶n cña nh©n viªn, sè ngµy nghØ lµm
   viÖc trong th¸ng. In ra tiÒn l-¬ng cña nh©n viªn ®ã, biÕt r»ng:
TiÒn l-¬ng = L-¬ng + Phô cÊp
L-¬ng = (L-¬ng hÖ sè+Phô cÊp)*(26-sè ngµy nghØ)
L-¬ng hÖ sè = Møc l-¬ng c¬ b¶n * 22500
Phô cÊp = L-¬ng hÖ sè * 10%
11. Khoanh vµo c©u tr¶ lêi ®óng gi¸ trÞ cña biÕn T sau khi thùc hiÖn ®o¹n
   ch-¬ng tr×nh sau:
a) x:=5; y:=x*x; x:=x*y; T:=x=100;        T=?
                  a. 25
                  b. 26
                  c. 27
                  d. 28
b) x:=2; y:=3; x:=x+y; y:=2*y+sqr(x); T:=x+y;     T=?
             a. 35
             b. 36
             c. 37
             d. 38
c) Khoanh vµo c©u tr¶ lêi ®óng gi¸ trÞ cña biÕn T sau khi thùc
   hiÖn ®o¹n ch-¬ng tr×nh sau:
   T:=(18 MOD 4) DIV 1;      T=?
            a. 3
            b. 5
            c. 2
            d. 1
d) x:=3; y:=4;
   T:=(x > y) OR (SQRT(x)>SQR(y));          T=?
        a. 5
        b. 10
        c. True
        d. False
 e)     x:=5;
   T:=(Sqr(x)>20) And (x>0); T= ?
                a.  7
                b.  8
                c.  True
                d.  False
Ch-¬ng 8: C¸c lÖnh cã cÊu tróc trong pascal
I. CÊu tróc lùa chän
1.1. C©u lÖnh IF
Pascal cung cÊp cho ng-êi lËp tr×nh hai mÉu c©u lÖnh IF víi d¹ng lÖnh
vµ l-u ®å nh- sau:




  NÕu biÓu thøc Boolean cã gi¸ trÞ TRUE th× m¸y sÏ thùc hiÖn c«ng viÖc
  1. NÕu kh«ng th× kÕt thóc c©u lÖnh ®èi víi mÉu thø nhÊt hoÆc m¸y sÏ
  thùc hiÖn viÖc 2 ®èi víi mÉu lÖnh thø 2
  Chó ý: - Tr-íc Else kh«ng cã dÊu chÊm phÈy
          - NÕu <ViÖc 1> hoÆc <ViÖc 2> gåm tõ 2 c©u lÖnh trë lªn th×
  ph¶i ®Æt        chóng trong c©u lÖnh ghÐp Begin .. End;
VÝ dô 1: §Ó thùc hiÖn phÐp chia hai sè a cho b víi ®iÒu kiÖn b<>0 ta
viÕt nh- sau:
        IF b<>0 THEN T:=a/b
        ELSE Writeln (‘Khong chia duoc’);
VÝ dô 2: T×m gi¸ trÞ lín nhÊt, nhá nhÊt cña 2 sè a, b
        IF a<b THEN
                BEGIN
                         Max:=b;
                         Min:=a;
                END
        ELSE
                BEGIN
                         Max :=a;
                         Min :=b;
                END;
VÝ dô 3: TÝnh c¨n bËc 2 cña mét sè ?
      PROGRAM Tinh_can_bac_hai ;
      VAR
              a , cb2: Real ;
      BEGIN
              Write (‘ Nhap a = ‘) ;
              Readln(a) ;
              IF a < 0 THEN
                       Write ('a la so am nen khong lay duoc can')
              ELSE
                       Cb2:=sqrt(a);
              Writeln ('Can bac hai cua a la’, cb2:3:2);
              Writeln (' Nhan ENTER de thoat ') ;
              Readln; {Dõng mµn h×nh ®Ó xem kÕt qu¶}
      END.
1.2. C©u lÖnh CASE
Hai mÉu c©u lÖnh IF ë trªn chØ thùc hiÖn lùa chän mét trong hai nh¸nh
t-¬ng øng víi gi¸ trÞ cña biÓu thøc Boolean. ViÖc thö vµ chän mét trong
nhiÒu nh¸nh sÏ ®-îc thùc hiÖn víi c©u lÖnh CASE.
Có ph¸p:
MÉu 1: D¹ng kh«ng ®Çy ®ñ             MÉu 2: D¹ng ®Çy ®ñ
CASE <biÓu thøc> OF                   CASE <biÓu thøc> OF
       TËp_H»ng1: <LÖnh 1>;                 TËp_H»ng1: <LÖnh 1>;
       TËp_H»ng2: <LÖnh 2>;                 TËp_H»ng2: <LÖnh 2>;
       .....                                .....
       TËp_H»ngN: <LÖnh N>;                 TËp_H»ngN: <LÖnh N>
END;                                  ELSE < LÖnh N+1>;
                                      END;
 Trong ®ã gi¸ trÞ cña <BiÓu thøc> vµ gi¸ trÞ cña TËp_h»ng ph¶i cã
 cïng kiÓu vµ ph¶i lµ kiÓu v« h-íng ®Õm ®-îc (nh-: nguyªn, logic, ký
 tù, liÖt kª).
Sù thùc hiÖn cña lÖnh CASE .. OF phô thuéc vµo gi¸ trÞ cña <BiÓu
thøc>:
- NÕu tËp_h»ng_i lµ tËp ®Çu tiªn chøa gi¸ trÞ cña <BiÓu thøc> th× m¸y
thùc hiÖn <lÖnh i>, sau ®ã tho¸t khái CASE .. OF.
- Trong tr-êng hîp kh«ng cã tËp_h»ng_i nµo chøa gi¸ trÞ cña <BiÓu thøc>
th×: khi kh«ng cã ELSE m¸y tho¸t ngay ra khái CASE .. OF, khi cã ELSE
m¸y thùc hiÖn <LÖnh N+1> råi míi tho¸t khái CASE .. OF.
Chó ý: lÖnh CASE bao giê còng kÕt thóc b»ng tõ kho¸ END.
VÝ dô 4: Ch-¬ng tr×nh tÝnh sè ngµy cña mét th¸ng:
VAR     So_ngay, thang, nam: integer;
BEGIN
        Write ('Thang: '); Readln(Thang);
        Write ('Nam: '); Readln (Nam);
        CASE Thang OF
                4,6,9,11:So_ngay:=30;
                2:
                        CASE Nam MOD 4 OF
                                0: So_ngay:=29;
                                1,2,3: So_ngay:=28;
                        END;
                1,3,5,7,8,10,12: So_ngay:=31;
        END;
        Writeln ('So ngay cua thang',Thang,'Nam',Nam,'la',So_ngay);
END.
VÝ dô 5: ViÕt ch-¬ng tr×nh chän mµu
PROGRAM Chon_mau ;
        VAR      color : char ;
                 BEGIN
                 Write (' Chon mau theo mot trong 3 ky tu dau la R/ W/ B ')
;
                 Readln (color) ;
                 CASE color OF
                          'R' ,'r' : write (' RED = mau do ') ;
                           'W', 'w' : write (' WHITE = mau trang ') ;
                          'B' , 'b' : write (' BLUE = mau xanh duong ') ;
                 END ;
                 Readln;
        END.
II. CÊu tróc lÆp
 2.1 C©u lÖnh FOR
   FOR BiÕn_®iÒu_khiÓn := Gi¸_trÞ_®Çu TO Gi¸_trÞ_cuèi DO <viÖc>;
Trong mÉu trªn, kiÓu cña biÕn ®iÒu khiÓn, gi¸ trÞ ®Çu, gi¸ trÞ cuèi lµ kiÓu
v« h-íng ®Õm ®-îc. V× vËy, mçi lÇn biÕn ®iÒu khiÓn nhËn gi¸ trÞ míi tiÕp
theo, chóng ta ghi mét c¸ch tæng qu¸t:
        BiÕn_®iÒu_khiÓn:= Succ(BiÕn_®iÒu_khiÓn)
   FOR BiÕn_®iÒu_khiÓn := Gi¸_trÞ_®Çu DOWNTO Gi¸_trÞ_cuèi DO
<viÖc>;
Trong mÉu 2 m¸y tÝnh sÏ lµm theo chiÒu ng-îc l¹i tøc lµ theo chiÒu gi¶m
dÇn cña biÕn ®iÒu khiÓn: ®Çu tiªn biÕn ®iÒu khiÓn nhËn gi¸ trÞ ban ®Çu
vµ sau ®ã thùc hiÖn chu kú lÆp nh- sau: Chõng nµo biÕn ®iÒu khiÕn cßn
lín h¬n hoÆc b»ng gi¸ trÞ cuèi th× thùc hiÖn <lÖnh>, sau mçi lÇn thùc hiÖn
biÕn ®iÒu khiÓn nhËn gi¸ trÞ tr-íc nã tøc lµ:
        BiÕn_®iÒu_khiÓn:=Pred(BiÕn_®iÒu_khiÓn)
VÝ dô 6: TÝnh tæng c¸c sè nguyªn tõ 50 ®Õn 500.
VAR
        Sum, i:Integer;
BEGIN
        Sum:=0;
        FOR i:=50 TO 500 DO Sum:=sum+i;
        (* hoÆc FOR i:=500 DOWNTO 50 DO sum:=sum+i);
        Writeln ('Tæng = ',SUM);
END.
Tuy nhiªn trong thùc tÕ th× tæng Sum sÏ lín h¬n 32767 tøc lµ trµn « nhí.
V× vËy trong ch-¬ng tr×nh nµy chóng ta cÇn ph¶i khai b¸o kiÓu cña SUM
lµ Real th× ch-¬ng tr×nh míi ch¹y ®-îc.
VÝ dô 7: ViÕt hai dßng c¸c ch÷ c¸i hoa vµ nhá tõ 'A' ®Õn 'Z' ra mµn h×nh
víi qui c¸ch mçi ch÷ chiÕm 2 chç. Sau ®ã lµ mét dßng tr¾ng råi ®Õn hai
dßng kÝ tù theo thø tù ng-îc l¹i tøc lµ tõ 'Z' ®Õn 'A' vµ tõ 'z' ®Õn 'a‘
USES Crt;
VAR
          Ch: char;
BEGIN
          ClrScr;
          FOR Ch:='A' TO 'Z' DO Write(Ch:2);
          Writeln;
          FOR Ch:='a' TO 'z' DO Write (Ch:2);
          Writeln ;
          Writeln ;
          FOR CH:='Z' DOWNTO 'A' DO Write (Ch:2);
          Writeln ;
          FOR Ch:='z' DOWNTO 'a' DO Write (Ch:2);
          Readln;
END.
2.2. C©u lÖnh WHILE
        D¹ng lÖnh:
     WHILE <biÓu thøc
         Boolean>
        DO <c©u lÖnh A>;




Vßng lÆp nµy thùc hiÖn lÆp c©u lÖnh A víi ®iÒu kiÖn biÓu thøc Boolean
nhËn gi¸ trÞ lµ True. Tr-íc tiªn m¸y sÏ kiÓm tra biÓu thøc Boolean (cßn gäi lµ
®iÒu kiÖn lÆp). NÕu biÓu thøc nµy lµ True, ch-¬ng tr×nh sÏ ®i thùc hiÖn
c©u lÖnh A. KÕt thóc c©u lÖnh, ch-¬ng tr×nh sÏ quay l¹i kiÓm tra gi¸ trÞ
cña biÓu thøc Boolean. Vßng lÆp kÕt thóc khi biÓu thøc Boolean nhËn gi¸
trÞ b»ng False.
 Chó ý:
 NÕu ph¶i thùc hiÖn lÆp tõ hai c©u lÖnh trë lªn th× c¸c c©u lÖnh nµy
ph¶i ®-îc ®Æt trong lÖnh ghÐp Begin..End;
 NÕu ®iÒu kiÖn lÆp cã gi¸ trÞ False ngay tõ ®Çu th× vßng lÆp While sÏ
2.3 C©u lÖnh Repeat
D¹ng lÖnh:
REPEAT
 <c«ng viÖc>
UNTIL <biÓu thøc Boolean>



Trong lÖnh REPEAT .. UNTIL m¸y sÏ lÆp ®i lÆp l¹i chu k× sau: thùc hiÖn
<c«ng viÖc> cho ®Õn khi <biÓu thøc Boolean> cã gi¸ trÞ TRUE. Gi÷a
Repeat vµ Until kh«ng cÇn dïng BEGIN vµ END.
Sù kh¸c nhau cña hai vßng lÆp trªn lµ ë chç víi vßng Repeat m¸y sÏ thùc
hiÖn c«ng viÖc tr-íc vµ kiÓm tra ®iÒu kiÖn cña biÓu thøc Boolean sau.
Cßn trong vßng While m¸y sÏ kiÓm tra biÓu thøc Boolean tr-íc vµ thùc
hiÖn c«ng viÖc sau.
C¶ hai vßng lÆp ®Òu cã sè lÇn kh«ng x¸c ®Þnh tr-íc. Nh- vËy lµ trong khi
thùc hiÖn c«ng viÖc lÆp ta ph¶i cã mét lÖnh lµm thay ®æi gi¸ trÞ mét
biÕn n»m trong biÓu thøc Boolean ®Ó thay ®æi gi¸ trÞ biÓu thøc nh»m
dõng vßng lÆp l¹i. NÕu kh«ng c¸c vßng lÆp sÏ ch¹y m·i kh«ng dõng.
VÝ dô 10: Ch-¬ng tr×nh tÝnh tæng A=1+1/2 +1/3+...+1/n;
PROGRAM Tinh_Tong;
VAR
       I, N: integer;
       A:real;
BEGIN
       Write ('N='); Readln (N);
       A:=0; I:=1;
       REPEAT
                 A:=A+1/I;
                 I:=I+1; (* Thay ®æi gi¸ trÞ cña biÓu thøc Boolean *)
       UNTIL I>N;
       Writeln ('Tong = ',A:10:8);
END.
HoÆc dïng vßng lÆp While:
       A:=0; I:=1;
       WHILE I<=n DO
                 BEGIN
                         A:=A+1/I;
                         I:=I+1 (* thay ®æi gi¸ trÞ biÓu thøc Boolean *)
                 END;
Bµi tËp
1. ViÕt ch-¬ng tr×nh nhËp hä tªn, chØ sè ®iÖn tiªu thô vµ tÝnh tiÒn ®iÖn
cho kh¸ch hµng theo qui ®Þnh sau:
- §Þnh møc tiªu thô 80KW/th¸ng
- Trong ph¹m vi ®Þnh møc th× lÊy gi¸ 200 ®/KW
- Sè KW v-ît ®Þnh møc th× tÝnh 350®/KW
2. ViÕt ch-¬ng tr×nh nhËp vµo 3 sè. In ra sè lín nhÊt vµ sè nhá nhÊt trong
3 sè nµy.
3. ViÕt ch-¬ng tr×nh nhËp 3 sè a, b, c. Gi¶i ph-¬ng tr×nh ax+b=c
4. ViÕt ch-¬ng tr×nh gi¶i ph-¬ng tr×nh bËc hai: ax2 + bx + c=0
5. ViÕt ch-¬ng tr×nh nhËp vµo mét sè tiÒn ViÖt vµ tû gi¸ quy ®æi ra USD.
In ra mµn h×nh sè l-îng USD t-¬ng øng víi sè tiÒn ®· nhËp.
6. ViÕt ch-¬ng tr×nh nhËp ®iÓm cho mét sinh viªn gåm 3 m«n
To¸n, Lý, Hãa. TÝnh ®iÓm trung b×nh (TB) cña sinh viªn nµy vµ in ra:
- " XuÊt s¾c" nÕu ®iÓm TB>=9
- " Giái" nÕu 8<=TB<9
-"Kh¸" nÕu 6.5<=TB<8
-"Trung b×nh" nÕu 5<=TB<6.5
-"yÕu" nÕu ®iÓm TB<5
7. ViÕt ch-¬ng tr×nh yªu cÇu ng-êi sö dông nhËp vµo mét ký tù. NÕu ký tù
    nhËp vµo lµ ‘a’ th× in ra ‘Xin chao cac ban.’; NÕu ký tù nhËp vµo lµ ‘d’
    th× in ra ‘Hoan nghenh.’; nÕu nhËp c¸c ký tù kh¸c th× in ra th«ng
    b¸o:’Xin loi. Hom nay nghi.’
8. ViÕt ch-¬ng tr×nh nhËp tõ bµn phÝm 3 sè nguyªn a, b, c. Sau ®ã thÓ
    hiÖn menu sau trªn mµn h×nh vµ yªu cÇu ng-êi sö dông lùa chän 1 gi¸
    trÞ. Víi gi¸ trÞ nhËp vµo h·y thùc hiÖn c«ng viÖc t-¬ng øng.
                    ********************************
                    * Hay chon 1 cong viÑc              *
                    * 1. Tinh a+b+c                           *
                    * 2. Tinh a*b*c                     *
                    * 3. In ra gia tri lon nhat               *
                    * 4. In ra gia tri nho nhat         *
                    ********************************
9. ViÕt ch-¬ng tr×nh nhËp 3 sè a, b, c vµ thÓ hiÖn trªn mµn h×nh th«ng
    b¸o sau:
    Chon 1 cong viec:
          1. Giai phuong trinh ax+b=c
          2. Giai phuong trinh ax2+bx+c=0
Víi gi¸ trÞ ng-êi sö dông nhËp vµo, h·y thùc hiÖn c«ng viÖc t-¬ng øng. Víi
    gi¸ trÞ kh¸c 1 vµ 2 th× in ra th«ng b¸o ‘Xin chao.’
10. H·y dïng vßng lÆp FOR ®Ó viÕt ch-¬ng tr×nh tÝnh c¸c biÓu thøc sau:
          S=1+3+5+..+2n-1
          S=2+4+6+...+2n
          S=1+1/2+1/3+...+1/n
11. ViÕt ch-¬ng tr×nh t×m tÊt c¶ c¸c ph-¬ng ¸n tr¶ tiÒn cho mét sè tiÒn cho
tr-íc (sè tiÒn nµy nhËp tõ bµn phÝm). BiÕt r»ng trong kho hiÖn ®ang cã
c¸c lo¹i giÊy b¹c 5000, 2000, 1000, 10000, 20000.
12. H·y dïng vßng lÆp FOR ®Ó viÕt ch-¬ng tr×nh in ra mµn h×nh tÊt c¶
c¸c sè cã 4 ch÷ sè abcd tháa m·n a+b=c+d.
13. H·y dïng vßng lÆp FOR ®Ó viÕt ch-¬ng tr×nh nhËp vµo mét sè
nguyªn d-¬ng n vµ in ra mµn h×nh tÊt c¶ c¸c -íc sè cña nã.
14. ViÕt ch-¬ng tr×nh nhËp mét sè nguyªn d-¬ng h vµ dïng vßng lÆp FOR
in ra 3 h×nh tam gi¸c c©n cã chiÒu cao h nh- sau:
     *           *            *
    ***        ***           **
  *****       ***          * *
******* *      * *        *******
15. ViÕt ch-¬ng tr×nh nhËp vµo mét sè nguyªn d-¬ng N vµ dïng vßng lÆp
FOR in ra tÊt c¶ c¸c sè chÝnh ph-¬ng trong ph¹m vi N, c¸c sè lÎ trong ph¹m
vi N, c¸c sè ch½n trong ph¹m vi N
16. H·y dïng vßng lÆp FOR ®Ó viÕt ch-¬ng tr×nh in ra mµn h×nh c¸c sè
tõ 0 ®Õn 99 theo qui c¸ch mçi sè chiÕm 2 chç, gi÷a c¸c sè cã dÊu c¸ch vµ
in ra theo mÉu sau:
           0 1 2 3 4 5 6 7 8 9
          10 11 12 13 14 15 16 17 18 19
          20 21 22 23 24 25 26 27 28 29
          30 31 32 33 34 35 36 37 38 39
          .. .. .. .. .. .. .. .. .. ..
          90 91 92 93 94 95 96 97 98 99
17. ViÕt ch-¬ng tr×nh nhËp tõ bµn phÝm vµo 2 sè nguyªn vµ dïng vßng
lÆp While..Do ®Ó tÝnh -íc sè chung lín nhÊt (USCLN) cña chóng.
          H-íng dÉn: Sö dông tÝnh chÊt sau:
          USCLN(m,n) =                  m     nÕu m=n
                                    =   USCLN(m-n,n) nÕu m>n
                                    =   USCLN(m,n-m) nÕu m<n
18. H·y dïng cÊu tróc lÆp Repeat...Until ®Ó viÕt ch-¬ng tr×nh nhËp vµo
c¸c sè thùc cho ®Õn khi sè 0 ®-îc nhËp vµo vµ cho biÕt:
Sè phÇn tö ®· nhËp
Tæng cña c¸c phÇn tö ®· nhËp
Gi¸ trÞ lín nhÊt
Gi¸ trÞ nhá nhÊt
Ch-¬ng 9: Ch-¬ng tr×nh con
9.1. Kh¸i niÖm
Trong khi lËp ch-¬ng tr×nh, chóng ta th-êng gÆp nh÷ng ®o¹n ch-¬ng tr×nh
®-îc lÆp ®i lÆp l¹i rÊt nhiÒu lÇn ë nh÷ng chç kh¸c nhau. §Ó tr¸nh r-êm
rµ, nh÷ng ®o¹n ch-¬ng tr×nh nµy ®-îc thay thÕ b»ng c¸c ch-¬ng tr×nh con
t-¬ng øng vµ khi cÇn ta chØ viÖc lµm thñ tôc gäi ch-¬ng tr×nh con ®ã ra
(víi c¸c tham sè t-¬ng øng cÇn thiÕt) mµ kh«ng ph¶i viÕt l¹i c¶ ®o¹n
ch-¬ng tr×nh ®ã.
LÝ do thø hai ®Ó x©y dùng ch-¬ng tr×nh con lµ: mét vÊn ®Ò lín vµ phøc
t¹p sÏ t-¬ng øng víi mét ch-¬ng tr×nh cã thÓ rÊt lín, rÊt dµi. Do ®ã viÖc
nh×n tæng quan c¶ ch-¬ng tr×nh còng nh- viÖc gì rèi, hiÖu chØnh rÊt khã
kh¨n. Ta cã thÓ ph©n t¸ch vÊn ®Ò phøc t¹p ®ã thµnh c¸c vÊn ®Ò nhá h¬n
(t-¬ng øng víi c¸c ch-¬ng tr×nh con, nh÷ng khèi, nh÷ng modun) dÔ kiÓm
tra, gì rèi tõng khèi mét vµ sau ®ã ghÐp l¹i thµnh ch-¬ng tr×nh lín.
Ch-¬ng tr×nh con ®-îc dïng rÊt phæ biÕn. V× vËy, chóng ta cÇn n¾m
v÷ng c¸c kü thuËt lËp ch-¬ng tr×nh con.
Trong Turbo Pascal cã mét sè ch-¬ng tr×nh con chuÈn ®· ®-îc lËp s½n vµ
®Ó trong c¸c Unit nh- CRT, PRINTER, DOS,...
9.2 Hµm vµ thñ tôc
CÊu tróc cña hµm cã d¹ng:
Function Tªn_ Hµm(Danh_s¸ch_tham_sè_h×nh_thøc, nÕu cÇn):
KiÓu_d÷_liÖu;
Begin
…(* Néi dung c¸c lÖnh cña FUNCTION*)
End;
Ph-¬ng ph¸p gäi hµm: ta gäi hµm th«ng qua tªn kÌm theo tham sè cña hµm
nh- sau:
Tªn_ Hµm(Danh_ s¸ch_ c¸c_ tham_ sè_ thùc_ sù);
CÊu tróc cña thñ tôc cã d¹ng:
Procedure Tªn_thñ_tôc(Danh_s¸ch_tham_sè_h×nh_thøc, nÕu cÇn);
(*Khai b¸o cña riªng PROCEDURE, nÕu cÇn*)
Begin
…(* Néi dung c¸c lÖnh cña PROCEDURE *)
End;
Ph-¬ng ph¸p gäi thñ tôc
                 Tªn_Hµm(Danh_ s¸ch_ c¸c_ tham_ sè_ thùc_ sù);
Sù kh¸c nhau c¬ b¶n gi÷a hµm vµ thñ tôc lµ hµm tr¶ vÒ mét gi¸ trÞ th«ng
qua tªn hµm, hµm cã thÓ tham gia vµo c¸c biÓu thøc tÝnh to¸n cßn thñ tôc
kh«ng cho gi¸ trÞ nµo c¶. Khi t¹o hµm, trong th©n hµm bao giê còng cã gi¸
trÞ g¾n cho tªn hµm ®Ó hµm tr¶ vÒ gi¸ trÞ nµy khi ®-îc gäi.
C¸c tham sè kh¸c sau tªn hµm cã tªn thñ tôc gäi lµ c¸c tham sè h×nh thøc
(hay cßn gäi lµ ®èi). Trong thñ tôc, c¸c tham sè h×nh thøc cã hai lo¹i: c¸c
tham sè ®-îc khai b¸o sau tõ kho¸ Var gäi lµ tham sè biÕn, c¸c tham sè
khai b¸o kh«ng cã tõ kho¸ Var ë tr-íc gäi lµ tham sè gi¸ trÞ. Trong hµm chØ
cã tham sè gi¸ trÞ, tøc khai b¸o mµ kh«ng cã tõ kho¸ Var.
Tham sè thùc sù lµ c¸c tham sè dïng trong lêi gäi hµm hay thñ tôc. Danh
s¸ch c¸c tham sè thùc sù trong lêi gäi hµm ph¶i t-¬ng øng víi danh s¸ch c¸c
tham sè h×nh thøc trong phÇn khai b¸o ch-¬ng tr×nh con vµ chóng ph¶i
t-¬ng øng vÒ kiÓu.
Trong thñ tôc, c¸c tham sè gi¸ trÞ th-êng lµ c¸c biÕn ®Ó chøa d÷ liÖu ®-a
vµo thñ tôc, c¸c tham sè biÕn lµ c¸c biÕn mµ kÕt qu¶ tÝnh to¸n cña thñ tôc
sÏ chøa vµo ®ã khi ra khái thñ tôc, ta cã thÓ dïng chóng ®Ó tÝnh to¸n
tiÕp.
VÝ dô 1: C¸ch sö dông tham sè gi¸ trÞ vµ tham sè biÕn:
Var a, b, c, d : Integer;
Procedure Chuyen(x, y : Integer; Var u, v : Integer);
Begin (*Tõ kho¸ b¾t ®Çu thñ tôc Chuyen*)
          x : = 2 * x;
          y : = 3 * y;
          u : = 4 * u;
          v : = 5 * v;
End;
Begin (*Tõ kho¸ b¾t ®Çu ch-¬ng tr×nh chÝnh*)
a : = 10;
b : = 10;
c : = 10;
d : = 10;
Chuyen(a, b, c, d);
Write( ‘a = ’, a, ‘ b = ’, b, ‘ c= ’, c, ‘ d= ’, d);
Readln;
End.
          KÕt qu¶ khi ch¹y ch-¬ng tr×nh: a = 10 b = 10 c = 40   d = 50
9.3.BiÕn toµn côc, biÕn côc bé vµ viÖc truyÒn d÷ liÖu
BiÕn toµn côc lµ biÕn khai b¸o ë ®Çu ch-¬ng tr×nh chÝnh, tån t¹i trong
suèt thêi gian lµm viÖc cña ch-¬ng tr×nh. Ta cã thÓ sö dông vµ lµm thay
®æi gi¸ trÞ cña biÕn toµn côc nhê c¸c c©u lÖnh trong ch-¬ng tr×nh chÝnh
còng nh- trong tÊt c¶ c¸c ch-¬ng tr×nh con.
BiÕn côc bé lµ biÕn lµ biÕn khai b¸o ë ®Çu ch-¬ng tr×nh con. Chóng ®-îc
cÊp ph¸t bé nhí nh- ch-¬ng tr×nh con ®-îc gäi ®Õn vµ bÞ xo¸ khi m¸y tho¸t
khái ch-¬ng tr×nh con kh¸c n»m trong ch-¬ng tr×nh con nµy.
NÕu tªn biÕn côc bé cña mét ch-¬ng tr×nh con trïng víi mét tªn biÕn toµn
côc th× m¸y kh«ng bÞ nhÇm lÉn, m¸y sÏ dïng hai « nhí kh¸c nhau ®Ó l-u
tr÷ hai biÕn, ra khái ch-¬ng tr×nh con, biÕn côc bé tù ®éng ®-îc xo¸.
Khi gÆp mét lêi gäi ®Õn ch-¬ng tr×nh con, m¸y sÏ thùc hiÖn c¸c b-íc sau:
- CÊp ph¸t bé nhí cho c¸c ®èi t-îng, c¸c biÕn côc bé.
- TruyÒn gi¸ trÞ cña c¸c tham sè thùc sù cho c¸c tham sè gi¸ trÞ t-¬ng
øng, truyÒn ®Þa chØ c¸c tham sè thùc sù øng víi tham sè biÕn cho c¸c
tham sè biÕn cña thñ tôc.
- Thùc hiÖn c¸c lÖnh trong ch-¬ng tr×nh con, trong khi thùc hiÖn ch-¬ng
tr×nh con, c¸c biÕn côc bé vµ c¸c tham sè gi¸ trÞ cã thÓ bÞ biÕn ®æi
nh-ng kh«ng ¶nh h-ëng ®Õn c¸c biÕn bªn ngoµi. Tr¸i l¹i, mäi thay ®æi cña
tham sè biÕn trong ch-¬ng tr×nh con sÏ kÐo theo sù thay ®æi cña tham sè
thùc sù t-¬ng øng (v× cã sù truyÒn theo ®Þa chØ). Do ®ã, khi tho¸t khái
ch-¬ng tr×nh con, c¸c tham sè thùc sù øng víi tham sè biÕn vÉn gi÷ ®-îc
gi¸ trÞ míi nhÊt do ch-¬ng tr×nh con t¹o ra.
- Thùc hiÖn xong c¸c lÖnh cña ch-¬ng tr×nh con, m¸y xo¸ tÊt c¶ c¸c ®èi vµ
c¸c biÕn côc bé vµ trë vÒ lÖnh kÕ sau n¬i gäi nã.
ViÖc lÊy kÕt qu¶ thùc hiÖn ch-¬ng tr×nh con nh- sau: NÕu lµ hµm th× lÊy
kÕt qu¶ th«ng qua tªn hµm, nÕu lµ thñ tôc th× kÕt qu¶ ë tham sè thùc sù
øng víi tham sè biÕn. Khi cÇn lÊy duy nhÊt mét gi¸ trÞ tõ ch-¬ng tr×nh con
th× ta lËp mét Function, khi cÇn lÊy tõ hai gi¸ trÞ trë lªn tõ ch-¬ng tr×nh
con hoÆc kh«ng lÊy gi¸ trÞ nµo th× ta ph¶i lËp Procedure.
VÝ dô 2: LËp hµm tÝnh diÖn tÝch h×nh thang. NhËp d÷ liÖu cña hai thöa
ruéng h×nh thang vµ tÝnh tæng diÖn tÝch hai thöa ruéng.
Var a1, b1, h1, a2, b2, h2, s: Real;
(* B¾t ®Çu Funtion*)
 Function DTHinhThang(a, b, h) : Real;
 Begin
         DTHinhThang := (a + b) * h / 2;
End;
(*B¾t ®Çu ch-¬ng tr×nh chÝnh*)
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
VÝ dô3: LËp hµm tÝnh -íc sè chung lín nhÊt (USCLN). Sau ®ã, dïng hµm
nµy ®Ó tÝnh USCLN vµ béi sè chung nhá nhÊt (BSCNN) cña hai sè ®-îc
nhËp tõ bµn phÝm.
          Var m, n, usc, bsc: Integer;
(*Function USCLN*)
Function USCLN(a, b : Integer): Integer;
Var r : Integer;
Begin
          While b < > 0 do
   Begin
          R := a mod b;
          a := b;
          b := r;
   End; (* a hien tai la USCLN cua a va b ban dau*)
  USCLN := a;
End;
(* B¾t ®Çu ch-¬ng tr×nh chÝnh*)
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
9.4. §¬n vÞ ch-¬ng tr×nh (Unit)
Cã nhiÒu ch-¬ng tr×nh con mÉu ®· ®-îc lËp s½n trong Turbo Pascal, ng-êi
lËp tr×nh chØ viÖc ®em ra dïng. Song ng-êi lËp tr×nh kh«ng ph¶i lóc nµo
còng dïng hÕt c¸c ch-¬ng tr×nh con nµy. Do ®ã, ng-êi ta ®· chia nhá th-
viÖn ch-¬ng tr×nh con mÉu thµnh c¸c th- viÖn nhá h¬n, mçi th- viÖn nhá
®ã ®-îc gäi lµ mét Unit (®¬n vÞ ch-¬ng tr×nh). D-íi ®©y lµ danh s¸ch c¸c
Unit mµ Turbo Pascal cung cÊp:
CRT     Unit chøa c¸c ch-¬ng tr×nh con xö lý mµn h×nh vµ bµn phÝm
        (nh- lÖnh ClrScr; GoToxy; ReadKey,...)
Printer Unit chøa c¸c CTC vµ d÷ liÖu vÒ c¸c thñ tôc in
DOS lµ Unit chøa c¸c CTC vµ d÷ liÖu khai th¸c c¸c hµm cña DoS.
SYSTEM          lµ Unit chøa c¸c CTC vµ d÷ liÖu vÒ hÖ thèng
C¸c Unit trªn ®-îc ®Ó trong file Turbo.TPL
Graph Unit vÒ ®å häa. Unit nµy ®-îc chøa trong file Graph.TPU
ViÖc chia nhá th- viÖn nµy gióp cho ch-¬ng tr×nh dÞch ch¹y nhanh h¬n v×
kh«ng ph¶i ®äc l¹i tÊt c¶ c¸c ch-¬ng tr×nh con mÉu nÕu nh- kh«ng cã nhu
cÇu. MÆt kh¸c ch-¬ng tr×nh dÞch ra còng gän h¬n v× kh«ng ph¶i chøa
nh÷ng c¸i kh«ng dïng ®Õn.
 Chó ý: mçi khi dïng mét thñ tôc hoÆc hµm cña Turbo Pascal ng-êi lËp
tr×nh ph¶i tra cøu xem nã thuéc Unit nµo ®Ó cßn khai b¸o sö dông.
Ngoµi c¸c Unit chuÈn do Turbo Pascal cung cÊp cßn cã c¸c Unit do ng-êi
lËp tr×nh tù t¹o ra. C¸c Unit nµy nÕu ®· ®-îc dÞch hoµn chØnh vµ kh«ng
bÞ söa ®æi th× ng-êi lËp tr×nh cã thÓ dïng ngay, kh«ng cÇn dÞch l¹i vµ
thËm chÝ chóng cßn cã thÓ ®-îc dïng chung cho nhiÒu ch-¬ng tr×nh kh¸c
nhau. Trong tr-êng hîp cã sù thay ®æi trong mét Unit nµo ®ã th× chØ cã
c¸c Unit cã liªn quan míi bÞ dÞch l¹i.
Mét Unit do ng-êi lËp tr×nh t¹o ra sÏ ®-îc chøa trong mét file víi mét tªn nµo
®ã, VÝ dô KHOI1.PAS. C¸ch thøc cña mét file Unit nh- sau:
UNIT Khoi1;       (* Tªn Unit th-êng nªn ®Æt trïng víi tªn file *)
USES Tªn_c¸c_Unit_cÇn_dïng_cho Unit nµy;
INTERFACE
9.5. Mét sè ch-¬ng tr×nh con cña Turbo Pascal
Mçi lo¹i PASCAL cã c¸c ch-¬ng tr×nh con bæ sung vµ më réng kh¸c. Ng-êi
   ®äc cã thÓ tra cøu tÊt c¶ c¸c thñ tôc vµ hµm cña Turbo Pascal trong
   quyÓn Turbo Pascal, cÈm nang tra cøu. Trong ph¹m vi cña gi¸o tr×nh
   nµy, chóng t«i chØ xin giíi thiÖu mét vµi thñ tôc vµ hµm ®Ó tham kh¶o.
Procedure GotoXY(X,Y)             Crt
§-a con trá cña mµn h×nh vÒ vÞ trÝ cã täa ®é X vµ Y trªn mµn h×nh. Hai
   hµm WhereX, WhereY cho ta to¹ ®é cña con trá t¹i thêi ®iÓm gäi hai
   hµm nµy.
Procedure ClrScr;          Crt
Xo¸ toµn bé mµn h×nh vµ ®Æt con trá t¹i To¹ ®é 0,0
Procedure ClrEol           Crt
Xo¸ tõ vÞ trÝ con trá ®Õn hÕt dßng. Sau khi xo¸ vÞ trÝ con trá kh«ng thay
   ®æi
Procedure DelLine          Crt
Xo¸ dßng chøa con trá. C¸c dßng ë d-íi dån lªn trªn ®Ó thay thÕ
Procedure insLine          Crt
ChÌn mét dßng tr¾ng vµo vÞ trÝ con trá.
Procedure LowVideo vµ NormVideo Crt
Sau khi gäi LowVideo, mäi kÝ tù viÕt ra mµn h×nh ®Òu cã ®é s¸ng yÕu ®i
   cho tíi khi gäi thñ tôc NormVideo.
Procedure Delay(T)
T¹o ra thêi gian trÔ T (ms). T lµ mét sè nguyªn. Delay th-êng ®-îc dïng ®Ó
lµm chËm ch-¬ng tr×nh l¹i cho ta quan s¸t.
Procedure Sound(F) vµ NoSound
T¹o ra dao ®éng ©m thanh víi tÇn sè lµ F (F nguyªn) cho ®Õn khi ta gäi
NoSound
Procedure Exit System
Khi ®-îc thùc hiÖn trong ch-¬ng tr×nh con, exit lµm cho ch-¬ng tr×nh con
®ã kÕt thóc v« ®iÒu kiÖn vµ quay vÒ ch-¬ng tr×nh gäi nã. Khi ®-îc thùc
hiÖn trong c©u lÖnh cña ch-¬ng tr×nh chÝnh th× ch-¬ng tr×nh chÝnh sÏ
kÕt thóc lu«n
Procedure Halt(exitCode:Word)             System
Dõng ho¹t ®éng ch-¬ng tr×nh vµ trë vÒ hÖ ®iÒu hµnh. ExitCode lµ mét
biÕn kiÓu Word x¸c ®Þnh m· tho¸t cña ch-¬ng tr×nh. Cã thÓ dïng Halt
kh«ng tham sè t-ong øng nh- Halt(0)
Function Keypress        Crt
Cho gi¸ trÞ True khi ta Ên mét phÝm nµo ®ã vµ kÝ tù ®ã cßn n»m ®îi
trong bé nhí ®Öm cña bµn phÝm ch-a ®-îc lÊy ra ®Ó xö lý. Hµm nµy
kh«ng cã t¸c dông khi Ên phÝm Ctrl, Alt, Shift mét c¸ch ®¬n lÎ, kh«ng cïng
c¸c phÝm ch÷ vµ sè kh¸c.
Function ReadKey
Hµm ReadKey ®äc mét kÝ tù tõ bµn phÝm. NÕu biÕn Keypress lµ True
   tr-íc khi gäi ReadKey th× kÝ tù ®-îc ®äc vµo ngay lËp tøc kh«ng chê
   Ên Enter. NÕu Keypress lµ False, ReadKey ®îi cho ®Õn khi cã mét
   phÝm ®-îc Ên. KÝ tù ®-îc ®äc kh«ng hiÖn lªn trªn mµn h×nh.
C¸c phÝm ®Æc biÖt trªn bµn phÝm ph¸t ra c¸c m· quÐt më réng. PhÝm
   ®Æc biÖt lµ c¸c phÝm chøc n¨ng nh- F1, F2,... phÝm ®iÒu khiÓn con
   trá, phÝm Alt,... Khi mét phÝm ®Æc biÖt ®-îc Ên, ®Çu tiªn ReadKey tr¶
   l¹i kÝ tù 0 vµ sau ®ã tr¶ m· quÐt më réng. KÝ tù 0 (null) kh«ng ®-îc ph¸t
   ra trong bÊt k× tr-êng hîp nµo kh¸c, nh- vËy b¹n ®¶m b¶o kÝ tù tiÕp
   theo lµ m· quÐt më réng.
Function Frac(X)
Cho gi¸ trÞ phÇn thËp ph©n cña sè thùc X
Function Int(X)
Cho gi¸ trÞ phÇn nguyªn cña sè thùc X
Function RanDom
Cho gi¸ trÞ sè thùc RanDom. RanDom lµ mét sè ngÉu nhiªn n»m trong
   kho¶ng 0 vµ 1
Function RanDom(Number)
Cho gi¸ trÞ sè thùc RanDom. RanDom lµ mét sè ngÉu nhiªn n»m trong
   kho¶ng 0 vµ Number. Number lµ mét sè nguyªn
Procedure RanDomize
Lµ thñ tôc ®¶m b¶o cho hµm RanDom b¾t ®Çu ch¹y víi mét sè ngÉu
   nhiªn. CÇn gäi thñ tôc nµy tr-íc khi dïng c¸c hµm RanDom.
Function UpCase(ch) cho kÝ tù hoa t-¬ng øng víi ký tù Ch
Bµi tËp
9.1     ViÕt ch-¬ng tr×nh nhËp vµo 5 sè tõ bµn phÝm vµ in ra sè lín
   nhÊt, sè nhá nhÊt trong 5 sè ®ã. Sö dông ch-¬ng tr×nh t×m sè lín
   nhÊt, nhá nhÊt trong 2 sè lµm ch-¬ng tr×nh con.
9.2.    ViÕt ch-¬ng tr×nh nhËp 3 sè tõ bµn phÝm vµ t×m USCLN cña 3
   sè ®ã. Sö dông ch-¬ng tr×nh t×m USCLN cña 2 sè lµm ch-¬ng tr×nh
   con.
9.3.    ViÕt mét hµm ®Ó tÝnh tiÒn ®iÖn nh- sau:
   Function Tiendien(SoKW:integer):LongInt;
   trong ®ã SoKW: lµ sè KW ®iÖn tiªu thô trong th¸ng
   Hµm TienDien tr¶ vÒ trÞ sè lµ sè tiÒn ®iÖn ph¶i tr¶. C¸ch tÝnh tiÒn
   ®iÖn nh- sau:
   Tõ KW thø 1 ®Õn 50:            250 ®ång/KW
   Tõ KW thø 51 ®Õn 70:           300 ®ång/KW
   Tõ KW 71 ®Õn 100: 350 ®ång/KW
   Tõ KW thø 101 trë lªn:         400 ®ång/KW
9.4.     T¹o c¸c hµm xö lý chuçi víi tªn vµ chøc n¨ng nh- sau:
a. Function Left(S:String; n:byte):String
         Chøc n¨ng: cho kÕt qu¶ lµ mét chuçi con lÊy ra n ký tù tõ chuçi S
tÝnh tõ vÞ trÝ ngoµi cïng bªn tr¸i sang ph¶i cña chuçi
b. Function RIGHT(S:String;n:byte):String
         Chøc n¨ng: Cho kÕt qu¶ lµ mét chuçi con lÊy ra n ký tõ tõ chuçi S
tÝnh tõ vÞ trÝ ngoµi cïng bªn ph¶i sang tr¸i cña chuçi
c. Fuction RTRIM(S:String):String
         Chøc n¨ng: lo¹i bá c¸c ký tù tr¾ng n»m ë phÇn cuèi cña chuçi S
d. Function LTRIM(S:String):String
         Chøc n¨ng: Lo¹i bá c¸c ký tù tr¾ng n»m ë ®Çu chuçi S
e. Function IIF(a:boolean;S1,S2:String):String
         Chøc n¨ng: Tr¶ vÒ chuçi S1 nÕu a=TRUE, vÒ S2 nÕu a=False
         VÝ dô: IIF(Tuoi<17,'Thieu nien','Thanh nien');
9.5.     ViÕt ch-¬ng tr×nh dïng gi¶i thuËt ®Ö qui ®Ó tÝnh gi¸ trÞ cña hµm
F(n). BiÕt hµm nµy ®-îc tÝnh theo c«ng thøc sau:
                 F(0)=0
                 F(1)=1
                 F(n)-F(n-1)=2*(F(n-1)-F(n-2) )
Ch-¬ng 10: KiÓu v« h-íng liÖt kª vµ kiÓu ®o¹n con
I. KiÓu v« h-íng liÖt kª
Pascal cßn cho phÐp ng-êi lËp tr×nh cã thÓ tù ®Þnh nghÜa ra c¸c kiÓu v«
h-íng míi b»ng c¸ch liÖt kª c¸c gi¸ trÞ cña kiÓu v« h-íng míi qua c¸c tªn do
ng-êi lËp tr×nh tù ®Æt ra. Danh s¸ch c¸c gi¸ trÞ nµy ®-îc ®Ó trong ngoÆc
®¬n vµ ®-îc m« t¶ b»ng mét tªn kiÓu trong phÇn m« t¶ kiÓu TYPE. KiÓu
v« h-íng ®-îc ®Þnh nghÜa theo c¸ch nµy ®-îc gäi lµ kiÓu liÖt kª.
VÝ dô 1:
TYPE             Boolean=(False, True);
                 Khoa = (det, soi, hoa, kinh_te, may, tin);
                 Gioitinh=(Nam,Nu);
VAR              Ketqua: Boolean;
                 Nganh: Khoa;
                 Gioitinh: (Nam, Nu);
hoÆc khai b¸o trùc tiÕp víi m« t¶ kiÓu d÷ liÖu:
VAR
        Gioitinh : (Nam, Nu);
        Ngµy : (Chunhat, Hai, Ba, Tu, Nam, Sau,Bay);
Do ®ã c¸c biÕn cã thÓ nhËn c¸c gi¸ trÞ cña kiÓu t-¬ng øng.
VÝ dô 2:
        Ketqua:=True;
        Gioitinh:=Nam;
        Nganh:=Tin;
        Ngay:=Chñ nhËt;
§-¬ng nhiªn mét biÕn ®-îc ®Þnh nghÜa lµ kiÓu nµy kh«ng thÓ nhËn gi¸
trÞ cña mét kiÓu kh¸c (tÝnh t-¬ng thÝch):
        Nganh:=Nam; lµ sai v× kh¸c kiÓu nhau
Trong ®Þnh nghÜa cña c¸c kiÓu v« h-íng tån t¹i mét thø tù tuyÕn tÝnh
theo thø tù liÖt kª vµ phÇn tö ®Çu tiªn cã sè thø tù lµ 0. C¸c hµm chuÈn
sau ®©y ®-îc ¸p dông cho kiÓu v« h-íng.
1.1. Hµm thø tù ORD(X):
Cho ta sè thø tù cña X trong kiÓu v« h-íng ®Õm ®-îc. Hµm ORD thùc chÊt
lµ hµm biÕn ®æi mét gi¸ trÞ kiÓu v« h-íng ®Õm ®-îc sang gi¸ trÞ kiÓu sè
nguyªn.
1.2. ChuyÓn ®æi kiÓu d÷ liÖu
Hµm ORD ®Ó chuyÓn ®æi mét gi¸ trÞ v« h-íng sang gi¸ trÞ nguyªn.
Pascal chuÈn kh«ng cã hµm biÕn ®æi ng-îc l¹i: tõ mét gi¸ trÞ sè nguyªn
sang mét gi¸ trÞ v« h-íng ®Õm ®-îc nµo ®Êy. Turbo Pascal cho phÐp biÕn
®èi ng-îc tõ mét gi¸ trÞ sè nguyªn thµnh gi¸ trÞ v« h-íng ®Õm ®-îc theo
mÉu viÕt:
Tªn kiÓu d÷ liÖu v« h-íng (sè_nguyªn)
VÝ dô 10.3:
Khoa(1) cho gi¸ trÞ Soi
Char(78) cho gi¸ trÞ 'N'
1.3. ViÕt ra kiÓu liÖt kª
Thñ tôc Write hoÆc Writeln chØ chÊp nhËn ®-a ra c¸c gi¸ trÞ thuéc kiÓu
v« h-íng chuÈn (Real; Integer; Byte; Char; Boolean) vµ kh«ng thÓ viÕt ra
mét gi¸ trÞ thuéc kiÓu v« h-íng liÖt kª.
VÝ dô: c¸c c©u lÖnh sau ®©y lµ kh«ng ®óng, kh«ng ®-îc chÊp nhËn:
Writeln (Khoa(4)); Writeln (det); Writeln (nam);
Song cã thÓ viÕt
         Writeln (Char(78))
         v× char(78) ='N' lµ gi¸ trÞ v« h-íng chuÈn
Muèn viÕt tªn gi¸ trÞ cña kiÓu v« h-íng liÖt kª ta cã thÓ ¸p dông thñ thuËt
1.4. §äc vµo kiÓu liÖt kª:
Thñ tôc Read vµ Readln còng chØ cho phÐp ®äc vµo tõ bµn phÝm c¸c gi¸
trÞ cña c¸c biÕn cã kiÓu v« h-íng chuÈn. Chóng còng kh«ng cho phÐp
®äc trùc tiÕp c¸c gi¸ trÞ kiÓu liÖt kª. VÝ dô chóng ta kh«ng thÓ ®äc biÕn
ngµnh=dÖt b»ng c¸c Ên c¸c phÝm d e t. Chóng ta cã thÓ dïng ph-¬ng ph¸p
®äc sè thø tù cña gi¸ trÞ biÕn v« h-íng råi biÕn ®æi kiÓu d÷ liÖu thªm.
VÝ dô 10.4:
TYPE
        Color = (red, blue, green, white, black);
VAR
        I: integer;
        Mau:color;
BEGIN
        Readln(I);
        Mau:=Color(I);
END.
II. KiÓu kho¶ng con (Sub-range Type)
Chóng ta thÊy r»ng cã nhiÒu tr-êng hîp mét biÕn cã thÓ chØ lÊy gi¸ trÞ
trong mét kho¶ng ®-îc x¸c ®Þnh bëi gi¸ trÞ giíi h¹n d-íi vµ gi¸ trÞ giíi h¹n
trªn thuéc mét kiÓu v« h-íng ®Õm ®-îc nµo ®ã. VÝ dô tuæi thä cña ng-êi
cã thÓ ®-îc giíi h¹n tõ 0 ®Õn 200. Khi ®ã ta cã thÓ ®Þnh nghÜa ra kiÓu
kho¶ng con nh- sau:
TYPE              Tuoitho = 0..200;
VAR               Tuoi: Tuoitho;
hoÆc cã thÓ ®Þnh nghÜa trùc tiÕp biÕn víi m« t¶ kiÓu:
VAR               Tuoi: 0..200;
Qui t¾c ®Þnh nghÜa kiÓu kho¶ng con cã thÓ viÕt ra nh- sau:
         H»ng cËn d-íi .. H»ng cËn trªn;
trong ®ã h»ng cËn d-íi vµ h»ng cËn trªn lµ hai h»ng cña cïng mét kiÓu v«
h-íng ®Õm ®-îc. TÊt nhiªn ph¶i tho¶ m·n yªu cÇu: h»ng cËn d-íi < h»ng
cËn trªn
Cã hai t¸c dông cña viÖc ®Þnh nghÜa kiÓu kho¶ng con:
TiÕt kiÖm « nhí: nÕu ta ®Þnh nghÜa tuæi thä nh- lµ kiÓu Integer th× sÏ
mÊt 2 byte trong khi kho¶ng sè nguyªn tõ 0 ®Õn 200 sÏ ®-îc m¸y tù ®éng
g¸n cho mét byte mµ th«i.
Cã thÓ kiÓm tra gi¸ trÞ cña biÕn khi ch¹y ch-¬ng tr×nh kh«ng ®-îc v-ît ra
VÝ dô 5:
TYPE
         Ngay = (‘Chunhat’, ‘Hai’, ‘Ba’, ‘Tu’, ‘Nam’, ‘Sau’,‘Bay’);
         Xe®ap = (eska, Peugeot, Phuonghoang, Thongnhat);
         Xe_Ngoai = eska .. Phuonghoang;
         Chu_caiHoa= 'A'..'Z';
         Nguyenduong = 0..MaxInt;
VAR
         Xe_dap_ngoai : Xe_Ngoai;
         Ch: Chu_cai_hoa;
         I: Nguyen_duong;
         Ch2:'0'..'9';
         Ngay_lam_viec: Hai .. Bay;
C¸c biÕn kiÓu kho¶ng con sÏ t-¬ng thÝch víi kiÓu d÷ liÖu cña h»ng cËn
d-íi vµ trªn. VÝ dô I cã thÓ tÝnh to¸n víi c¸c biÕn integer kh¸c, tÊt nhiªn
ph¶i kiÓm tra gi¸ trÞ cña nã cã n»m trong ®o¹n con kh«ng. Cßn Ch2 th×
tÝnh to¸n ®-îc víi c¸c biÕn kiÓu kÝ tù,..
Bµi tËp
1. BiÕt r»ng S1 lµ mét biÕn ®-îc khai b¸o nh- sau:
   Var S1: (‘Chunhat’, ‘Hai’, ‘Ba’, ‘Tu’, ‘Nam’, ‘Sau’,‘Bay’);
Hái S1 thuéc kiÓu g×?
2. Cho kiÓu liÖt kª Week=(Sun, Mon,Tue, Wed, Thu, Fri, Sat).
TÝnh gi¸ trÞ cña biÓu thøc (ORD(Mon)=2)
TÝnh gi¸ trÞ cña biÓu thøc Pred(Mon)
TÝnh gi¸ trÞ cña biÓu thøc Succ(Wed)
3. BiÕt r»ng trong ch-¬ng tr×nh cã sö dông hµm Pred(n). H·y x¸c ®Þnh tÊt
   c¶ c¸c kiÓu cã thÓ khai b¸o cho n.
4. BiÕt r»ng trong ch-¬ng tr×nh cã sö dông mét lÖnh g¸n i:=ORD(n). H·y
   x¸c ®Þnh c¸c kiÓu cã thÓ sö dông ®-îc trong khai b¸o cña n
Ch-¬ng 11: D÷ liÖu cã cÊu tróc: kiÓu m¶ng
11.1.Kh¸i niÖm chung vÒ cÊu tróc d÷ liÖu
Chóng ta ®· lµm quen víi c¸c kiÓu d÷ liÖu ®¬n gi¶n lµ c¸c kiÓu v« h-íng
(integer, char, boolean, real), kiÓu liÖt kª vµ kiÓu ®o¹n con. Trong Pascal
tån t¹i c¸c kiÓu d÷ liÖu cã cÊu tróc lµ c¸c kiÓu d÷ liÖu ®-îc t¹o ra tõ c¸c
phÇn tö cã kiÓu d÷ liÖu ®¬n gi¶n b»ng mét c¸ch nµo ®ã. Chóng ®-îc
®Æc tr-ng b»ng kiÓu d÷ liÖu cña c¸c phÇn tö vµ ph-¬ng ph¸p cÊu thµnh
kiÓu d÷ liÖu míi.
Pascal cã tÊt c¶ 4 kiÓu d÷ liÖu cã cÊu tróc: kiÓu m¶ng (ARRAY), kiÓu tËp
hîp (SET), kiÓu b¶n ghi (RECORD) vµ kiÓu tÖp (FILE)
11.2. KiÓu m¶ng (ARRAY)
11.2.1.Kh¸i niÖm:
Mét m¶ng d÷ liÖu gåm mét sè h÷u h¹n phÇn tö cã cïng kiÓu gäi lµ kiÓu
phÇn tö. Sè phÇn tö cña m¶ng ®-îc x¸c ®Þnh ngay tõ khi ®Þnh nghÜa
m¶ng. Mçi phÇn tö cña m¶ng ®-îc truy nhËp trùc tiÕp th«ng qua tªn m¶ng
cïng víi chØ sè truy nhËp ®-îc viÕt gi÷a hai dÊu ngoÆc vu«ng [].
VÝ dô 11.1: Cã 50 häc sinh trong líp. §iÓm To¸n cña c¸c häc sinh nµy ®-îc
ký hiÖu lÇn l-ît lµ T1,T2,..,T50. Khi ®ã ta cã thÓ coi tËp c¸c ®iÓm To¸n cña
häc sinh lµ 1 m¶ng 50 phÇn tö kiÓu Real: T[1], T[2],...,T[50]. M¶ng nµy
®-îc gäi lµ m¶ng 1 chiÒu.
VÝ dô 11.2: Gi¶ sö cã mét ma trËn 3 hµng vµ 5 cét ®-îc viÕt nh- sau:
a11 a12 a13 a14 a15
a21 a22 a23 a24 a25
a31 a32 a33 a34 a35
Khi ®ã ta cã thÓ xem ma trËn nµy nh- mét m¶ng 2 chiÒu gåm c¸c phÇn tö
a[1,1]; a[1,2]; ...; a[1,5]; ...[a3,1]; a[3,2];...[a3,5]
C¸c thao t¸c d-íi ®©y chñ yÕu sö dông cho m¶ng mét chiÒu. M¶ng nhiÒu
chiÒu sÏ ®-îc ®Ò cËp ®Õn ë phÇn sau
11.2.2.Khai b¸o m¶ng
KiÓu m¶ng T víi kiÓu phÇn tö KPT ( kiÓu phÈn tö) vµ kiÓu chØ sè KCS (
kiÓu chØ sè) ®-îc ®Þnh nghÜa víi tõ khãa Type nh- sau:
TYPE
         KiÓu_m¶ngT = ARRAY[kiÓu_chØ_sè] of kiÓu_phÇn_tö
Sau khi ®· ®Þnh nghÜa kiÓu m¶ngT, mét biÕn A thuéc kiÓu m¶ng T ®-îc
khai b¸o nh- sau:
VAR A: KiÓu_M¶ngT;
NÕu ch-a ®Þnh nghÜa kiÓu m¶ng trong phÇn Type ta cã thÓ khai b¸o
trùc tiÕp biÕn A cïng víi kiÓu cña nã nh- sau:
VAR
         A: Array[KiÓu_chØ_sè] of kiÓu_phÇn_tö;
MM lµ mét m¶ng gåm 5 phÇn tö kiÓu Boolean, c¸c phÇn tö ®-îc ®¸nh dÊu
qua chØ dÉn cña tªn 5 mµu s¾c.
Mét ®iÒu l-u ý r»ng khi khai b¸o m¶ng, kiÓu chØ sè chØ cã thÓ lµ c¸c
kiÓu ®¬n gi¶n sau: kÝ tù (nh- biÕn MC), ®o¹n con (VÝ dô ®o¹n con
integer nh- c¸c kiÓu AI, AC), kiÓu liÖt kª do ng-êi sö dông ®Þnh nghÜa ra
nh- biÕn MM vµ kiÓu Boolean. KiÓu chØ dÉn kh«ng ®-îc lµ kiÓu Real
hoÆc Integer. NghÜa lµ kh«ng ®-îc viÕt:
         X: ARRAY[Integer] of integer;
         Y: ARRAY[Real] of integer;
11.2.3.Truy nhËp vµo m¶ng
ViÖc truy nhËp vµo mét phÇn tö nµo ®ã cña m¶ng ®-îc thùc hiÖn qua tªn
biÕn m¶ng, theo sau lµ gi¸ trÞ chØ sè ®Ó trong ngoÆc vu«ng. VÝ dô:
MM[Red]
MC['B']
11.2.4.Thao t¸c trªn m¶ng
- C¸c phÐp to¸n ®-îc sö dông trªn m¶ng bao gåm tÊt c¶ c¸c phÐp to¸n cña
kiÓu v« h-íng chuÈn t-¬ng øng víi kiÓu d÷ liÖu cña m¶ng.
- PhÇn tö cña m¶ng ®-îc hoµn toµn x¸c ®Þnh khi chØ sè cña phÇn tö Êy
®-îc x¸c ®Þnh.
- C¸ch nhËp vµ xuÊt d÷ liÖu kiÓu m¶ng ®-îc thùc hiÖn b×nh th-êng b»ng
thñ tôc Read, Write song cÇn chó ý tíi sù biÕn thiªn cña chØ sè. Ng-êi ta
th-êng dïng vßng FOR ®Ó nhËp vµ xuÊt víi m¶ng.
VÝ dô 11.4:ViÕt ch-¬ng tr×nh nhËp gi¸ trÞ cho c¸c phÇn tö cña m¶ng B
®· khai b¸o trong vÝ dô trªn.
Writeln (' Vao so lieu cho mang B:');
         FOR i:=1 TO 10 DO
BEGIN
         Write ('B[',i,'] = '); Readln (b[i]);
END;
Trong ch-¬ng tr×nh trªn, ta dïng thªm mét biÕn i cã kiÓu integer lµm chØ
dÉn. BiÕn i sÏ nhËn c¸c gi¸ trÞ tõ 1 ®Õn 10. KÕt qu¶ cña ch-¬ng tr×nh thÓ
hiÖn trªn mµn h×nh nh- sau (c¸c con sè lµ c¸c gi¸ trÞ do ng-êi sö dông gâ
vµo):
Vao so lieu cho mang B:
B[1] = 1
B[2] = 2
B[3] = 3
B[4] = 4
B[5] = 5
B[6] = 6
B[7] = 7
B[8] = 8
B[9] = 9
B[10] = 10
11.3. S¾p xÕp m¶ng
Gi¶ sö ta cã m¶ng mét chiÒu gåm n phÇn tö a[1],...,a[n]. ViÖc s¾p xÕp
c¸c phÇn tö trong m¶ng theo thø tù tõ nhá ®Õn lín cã thÓ thùc hiÖn b»ng
ph-¬ng ph¸p sau: §Çu tiªn, ®em phÇn tö thø nhÊt lÇn l-ît so s¸nh víi c¸c
phÇn tö tiÕp theo, nÕu kÕt qu¶ lµ lín h¬n th× ®em ®æi chç gi¸ trÞ cña hai
phÇn tö so s¸nh. Sau l-ît ®Çu tiªn phÇn tö thø nhÊt sÏ cã gi¸ trÞ nhá nhÊt.
Khi ®ã, ta l¹i tiÕp tôc ®em phÇn tö thø hai so s¸nh víi c¸c phÇn tö tiÕp
theo vµ cø nh- thÕ thùc hiÖn cho ®Õn phÇn tö thø n-1.
ë ®©y, ta ph¶i dïng ®Õn hai biÕn ch¹y lµ i vµ j. BiÕn i nhËn gi¸ trÞ tõ 1
®Õn n-1, biÕn j nhËn gi¸ trÞ tõ i+1 ®Õn n. NÕu a[i]>a[j] th× ®em ®æi chç
a[i] víi a[j].
Ch-¬ng tr×nh ®-îc viÕt nh- sau:
VÝ dô 12.5
PROGRAM SAPXEP;
USES Crt;
CONST n=10;
VAR      A: Array[1..n] of Integer;
                 TG,i,j: Integer;
BEGIN
ClrScr;
FOR i:=1 TO n DO
                 BEGIN
                           Write('a[',i,']= '); Readln(a[i]);
                 END;
{ ** Sap xep cac phan tu theo thu tu tang dan **}
FOR i:=1 TO n-1 DO
                 FOR j:=i+1 TO n DO
                           BEGIN
                                    IF a[i]>a[j] THEN
                                                BEGIN
                                                       TG:=a[i];
                                                       a[i]:=a[j];
                                                       a[j]:=TG;
                                                END;
                           END;
{ ** In ra cac phan tu cua bang sau sap xep **}
           Writeln('Cac phan tu cua bang la: ');
FOR i:=1 TO n DO Write(a[i]:5);
Readln;
END.
11.4. T×m kiÕm trong m¶ng
Gi¶ sö ta cã m¶ng mét chiÒu gåm n phÇn tö a[1],...,a[n]. Yªu cÇu ®Æt ra
lµ ph¶i t×m trong m¶ng c¸c phÇn tö tháa m·n ®iÒu kiÖn t×m kiÕm cho
tr-íc. §Ó thùc hiÖn c«ng viÖc nµy, ta tiÕn hµnh nh- sau:
- DuyÖt qua toµn bé c¸c phÇn tö cña m¶ng.
- NÕu phÇn tö nµo tháa yªu cÇu t×m kiÕm th× in ra c¸c phÇn tö ®ã.
- NÕu kh«ng t×m ®-îc phÇn tö nµo th× in ra th«ng b¸o kh«ng cã.
Ta cã thÓ ¸p dông thuËt gi¶i nµy trong vÝ dô t×m phÇn tö lín nhÊt cña
m¶ng. Ch-¬ng tr×nh ®-îc viÕt nh- sau:
VÝ dô 11.6:
PROGRAM TIMKIEM;
USES Crt;
CONST n=10;
VAR
          A: Array[1..n] of Integer;
          Max,i,chiso: Integer;
BEGIN
ClrScr;
FOR i:=1 TO n DO
                   BEGIN
                             Write('a[',i,']= '); Readln(a[i]);
                   END;
{ ** Tim kiem phan tu co gia tri lon nhat **}
chiso:=1;
FOR i:=2 TO n DO IF a[chiso]<a[i] THEN chiso:=i;
{ ** In ra phan tu co gia tri lon nhat **}
          Write('Phan tu lon nhat cua bang la: ');
          Write('a[',chiso,']= ',a[chiso]);
Readln;
END.
11.5 M¶ng hai chiÒu:
Trong phÇn kh¸i niÖm cña m¶ng chóng ta ®· cã mét vÝ dô vÒ m¶ng hai
chiÒu. Trong m¶ng nhiÒu chiÒu, kiÓu cña m¶ng cã thÓ lµ c¸c kiÓu cã
cÊu tróc kÓ c¶ kiÓu m¶ng.
VÝ dô sau cho thÊy viÖc khai b¸o mét m¶ng cã c¸c phÇn tö còng lµ m¶ng
VÝ dô 11.7:
TYPE
        PT: ARRAY[1..5] of real;
        Color = (Red, Blue, Green, White, Black);
VAR
        MPT: ARRAY[1..3] of PT;
        Z: ARRAY['A'..'C'] of Color;
VÝ dô khai b¸o trªn cã thÓ viÕt d-íi d¹ng sau:
        VAR MPT: ARRAY[1..3] of ARRAY[1..5] of Real;
hoÆc th-êng ®-îc viÕt gän:
VAR
        MPT: ARRAY[1..3,1..5] of Real;
MPT ®-îc ®Þnh nghÜa nh- trªn chÝnh lµ ma trËn hai chiÒu 3 hµng vµ 5
cét
ViÖc truy nhËp ®èi víi m¶ng MPT cã thÓ tiÕn hµnh qua hai c¸ch:
- ViÕt chØ sè cña phÇn tö qua hai lÇn ®ãng më ngoÆc vu«ng. VÝ dô
MPT[3][5]
- ViÕt c¸c chØ sè c¸ch nhau bëi dÊu phÈy vµ cïng n»m trong hai dÊu
ngoÆc vu«ng: MPT[3,5]
C¸c c¸ch viÕt trªn lµ t-¬ng ®-¬ng nhau. M¶ng MPT ë trªn ®-îc ®Þnh nghÜa
lµ m¶ng hai chiÒu.
§Ó khëi t¹o gi¸ trÞ cho m¶ng nhiÒu chiÒu chóng ta cã thÓ dïng c¸c vßng
lÆp FOR lång nhau. Ta cã thÓ xem vÝ dô d-íi ®©y minh häa vÒ viÖc
nhËp vµ xuÊt d÷ liÖu cho mét m¶ng 2 chiÒu kÝch cì mxn phÇn tö.
11.6 ¦u khuyÕt ®iÓm cña m¶ng
¦u ®iÓm: cho phÐp t¹o c¸c danh s¸ch hay b¶ng vµ cã thÓ duyÖt dÔ dµng.
Trong danh s¸ch th-êng cã thµnh phÇn ®i tr-íc vµ thµnh phÇn ®i sau ®-îc
truy cËp b»ng c¸ch t¨ng hay gi¶m chØ sè.
Nh-îc ®iÓm: tèn bé nhí. Khi lËp danh s¸ch hay b¶ng b»ng m¶ng ng-êi lËp
tr×nh cÇn cho nã kÝch th-íc lín nh-ng nãi chung Ýt dïng hÕt nh- vËy sÏ l·ng
phÝ bé nhí.
Bµi tËp
11.1: ViÕt ch-¬ng tr×nh nhËp mét d·y gåm N ký tù. In ra mµn h×nh theo
thø tù ng-îc l¹i víi thø tù nhËp.
11.2 Cho m¶ng A cã n phÇn tö nguyªn (n: h»ng sè). ViÕt ch-¬ng tr×nh x©y
dùng l¹i m¶ng A theo yªu cÇu sau:
A(1)     = Min A(i)         i=1,..,n
A(2)     = Max A(i)
A(3) >=A(4) >=A(5)>=....>=A(n)
11.3. Cho m¶ng A cã n phÇn tö lµ nh÷ng gi¸ trÞ nguyªn (n: h»ng sè). ViÕt
ch-¬ng tr×nh ®Ó
         - TÝnh trung b×nh céng c¸c phÇn tö d-¬ng trong m¶ng
         - S¾p xÕp m¶ng theo thø tù gi¶m dÇn
11.4. ViÕt ch-¬ng tr×nh nhËp vµo mét d·y gåm n sè nguyªn. In ra mµn
h×nh:
- Mét dßng gåm c¸c sè lÎ cña d·y
- Mét dßng gåm c¸c sè ch½n cña d·y
- Mét dßng gåm c¸c sè >=100 cña d·y
- Mét dßng gåm c¸c sè <100 cña d·y.
11.5 . ViÕt ch-¬ng tr×nh nhËp mét d·y n sè nguyªn (n: h»ng sè). In ra mµn
h×nh c¸c gi¸ trÞ kh¸c nhau cña d·y sè nµy.
VÝ dô: NhËp vµo 5 20 15 5 20 17
         In ra: 5 20 15 17
11.6. Cho mét d·y gåm n sè nguyªn d-¬ng cã 3 ch÷ sè, h·y s¾p xÕp d·y
theo thø tù t¨ng dÇn cña ch÷ sè hµng ®¬n vÞ; hµng ®¬n vÞ b»ng nhau
th× s¾p xÕp theo thø tù t¨ng dÇn cña hµng chôc; hµng ®¬n vÞ vµ hµng
chôc b»ng nhau th× s¾p theo thø tù t¨ng dÇn cña hµng tr¨m.
11.7. Cho 2 m¶ng A, B ®· ®-îc s¾p xÕp theo thø tù t¨ng dÇn. H·y trén hai
m¶ng ®ã l¹i víi nhau ®Ó cã m¶ng thø 3 lµ m¶ng C víi ®iÒu kiÖn m¶ng C
còng ®-îc s¾p xÕp theo thø tù t¨ng dÇn ngay sau khi trén.
Ch-¬ng 12: D÷ liÖu cã cÊu tróc: kiÓu chuçi (String)
12.1. Kh¸i niÖm:
Chuçi (x©u kÝ tù) lµ mét kiÓu d÷ liÖu cã cÊu tróc th«ng dông trong
Pascal. Trong ch-¬ng tr-íc, chóng ta ®· ®Þnh nghÜa h»ng chuçi, ®ã lµ
mét d·y c¸c kÝ tù ®-îc bao bëi hai dÊu nh¸y ®¬n (‘’)
§é dµi cña mét chuçi lµ sè c¸c ký tù t¹o thµnh chuçi tÝnh tõ ngay sau dÊu
nh¸y më ®Õn ngay tr-íc dÊu nh¸y ®ãng.
VÝ dô:
‘Turbo Pascal 6.0’       cã ®é dµi lµ 16
‘’                       cã ®é dµi lµ 0. Tr-êng hîp nµy ta gäi lµ chuçi rçng
Chuçi cã ®é dµi tèi thiÓu lµ 0 vµ tèi ®a lµ 255.
12.2. Khai b¸o chuçi:
Ta cã thÓ ®Þnh nghÜa mét kiÓu chuçi b»ng tõ khãa TYPE nh- sau:
TYPE
KiÓu chuçi = String[®é dµi cùc ®¹i cña chuçi]
trong ®ã ®é dµi cùc ®¹i lµ mét h»ng nguyªn trong kho¶ng tõ 1 ®Õn 255.
VÝ dô 12.1:
TYPE
        Ho = String[18];
        Ten=String[7];
        Tinh=String[25];
VAR
        H1, H2, H3: HO;
        T: Ten;
        QQ: Tinh;
 Chó ý: Ngoµi c¸ch khai b¸o dïng Type vµ Var kÕt hîp nh- ë vÝ dô trªn, cã
thÓ khai b¸o kiÓu d÷ liÖu míi String ngay trong khai b¸o Var.
VAR
        BiÕn: String[®é dµi cùc ®¹i]
VÝ dô 12..2:
TYPE
        Hanghoa=String[40];
VAR
        TenHang:HangHoa;
t-¬ng ®-¬ng víi c¸ch sau ®©y:
        Var TenHang: String[40];
12.3. C¸c thao t¸c trªn String
12.3.1. PhÐp g¸n:
C¸c biÕn Srtring ®· khai b¸o cã thÓ nhËn gi¸ trÞ h»ng chuçi qua lÖnh g¸n:
tªn biÕn chuçi := h»ng chuâi
VÝ dô 12.3:
        H1:=‘Nguyen Van’;
        H2:=‘Tran’;
        H3:=‘Le’;
        T:=‘Hoa’;
        QQ:=‘Ha Noi 1992’;
nÕu g¸n cho chuçi mét h»ng cã ®é dµi lín h¬n ®é dµi ®· khai b¸o th×
nh÷ng ký tù d- ë bªn ph¶i chuçi bÞ bá qua.
VÝ dô 12.4:
VAR
        SS: String[5];
BEGIN
        SS:=‘123456789’;
END.
Khi ®ã biÕn SS sÏ chØ nhËn gi¸ trÞ lµ ‘12345’;
12.3.2. Truy nhËp vµo phÇn tö cña chuçi
Ta cã thÓ truy nhËp vµo tõng ký tù cña chuçi b»ng c¸ch viÕt tªn chuçi kÌm
thªm thø tù cña ký tù ®ã trong chuçi (chØ sè cña ký tù). ChØ sè nµy ch¹y
tõ 1 ®Õn ®é dµi cña chuçi
VÝ dô:
if SS[3]=‘3’ then Write(‘Ch÷ thø ba cña chuçi SS lµ 3’);
VÝ dô 12.5: ViÕt ch-¬ng tr×nh in dßng ch÷ trªn mµn h×nh theo kiÓu ®¸nh
m¸y ch÷ (hiÖn tõng ký tù mét)
PROGRAM Danh_may;
USES Crt;
         VAR i: integer; Cau: String[80];
BEGIN
         ClrScr;
         Write('Nhap cau can danh: '); Readln(Cau);
         FOR i:=1 TO length(Cau) DO
   BEGIN
         TextColor(14);
         Write(Cau[i]);
         Delay(150);
   END;
         Readln;
END.
12.3.3. PhÐp céng chuçi (ghÐp chuçi)
Chuçi kÝ tù cã thÓ ®-îc sö dông nh- lµ c¸c to¸n h¹ng trong c¸c biÓu thøc
®Ó ghÐp ký tù qua dÊu céng (+).
VÝ dô 12.6:
S1:=‘ Truong Cao dang KTKTCNn ‘;
S2:= ‘Khoa Tin - Kinh te’;
S:=S2+S1
NÕu viÕt S:=S1+S2 th× S sÏ cã gi¸ trÞ lµ ‘Truong Cao dang KTKTCNn
Khoa Tin - Kinh te’
12.3.4. PhÐp so s¸nh
Chuçi cã thÓ ®-îc dïng trong c¸c biÓu thøc quan hÖ ®Ó so s¸nh
- Khi so s¸nh hai chuçi, c¸c kÝ tù cña hai chuçi ®-îc so s¸nh tõng cÆp mét
tõ tr¸i qua ph¶i theo gi¸ trÞ cña b¶ng m· ASCII.
- NÕu hai chuçi cã ®é dµi kh¸c nhau song cã sè kÝ tù gièng nhau ®Õn ®é
dµi chuçi ng¾n h¬n th× chuçi cã ®é dµi ng¾n h¬n nµy ®-îc coi lµ nhá h¬n
‘FileName’ < ‘FileNameA’
- Hai chuçi ®-îc coi lµ b»ng nhau nÕu chóng gièng nhau hoµn toµn.
12.4. Mét sè hµm vµ thñ tôc trªn String
Hµm Length
Có ph¸p:
          Length(ST)
C«ng dông: cho kÕt qu¶ lµ ®é dµi thùc (kh«ng ph¶i ®é dµi khai b¸o) cña
   chuçi St
VÝ dô:
Hoten:='Vu Dinh Du';
d:=length(Hoten);
th× D cã gi¸ trÞ lµ 10
Hµm Concat
Có ph¸p:
Concat(ST1,ST2,..,STn)
C«ng dông: Cho kÕt qu¶ mét chuçi míi lµ tæng cña c¸c x©u
   St1, ST2, .., Stn theo thø tù ®-îc liÖt kª
VÝ dô:
Hoten:='Vu Dinh Du';
QQ:='Ha noi';
Diem:='10 diem';
HS:=Concat(Hoten,‘ ',QQ,‘ ',Diem);
th× HS lµ 'Vu Dinh Du Ha noi 10 diem‘
Hµm POS
Có ph¸p:
   Pos(ST1,ST2)
C«ng dông: Cho kÕt qu¶ lµ mét sè nguyªn x¸c ®Þnh vÞ trÝ ®Çu tiªn mµ
   chuçi ST1 lµ mét bé phËn cña chuçi ST2. NÕu ST1 kh«ng ph¶i lµ mét
   bé phËn cña ST2 th× hµm cho gi¸ trÞ 0
VÝ dô:
ST1:='3456';
ST2:='12345678';
ST3:='6534';
Vt1:=Pos(ST1,ST2);
Vt2:=Pos(ST3,ST2);
th× Vt1 nhËn gi¸ trÞ 3, Vt2 nhËn gi¸ trÞ 0
Hµm COPY
Có ph¸p:
Copy(ST,Vt,d)
trong ®ã VT, d lµ c¸c h»ng nguyªn
C«ng dông: Cho kÕt qu¶ lµ mét phÇn cña chuçi ST tÝnh tõ vÞ trÝ VT vµ
   lÊy vÒ phÝa bªn ph¶i d kÝ tù
VÝ dô:
ST1:='Xinchaocacban';
ST2:=Copy(ST1,5,4);
ST3:=Copy(ST1,1,8);
Khi ®ã ST2 sÏ lµ chuçi ‘Chao’, Chuçi ST3 sÏ lµ 'Xin chao'
Thñ tôc Write
- Còng cã c¸ch in kh«ng qui c¸ch vµ cã qui c¸ch ®èi víi biÕn x©u.
VÝ dô:
Write(ST);       (* in ra mµn h×nh chuçi ST *)
Write(ST:10); (* in ra chuçi ST víi qui c¸ch chiÕm 10 chç. *)
Thñ tôc Read
- §Ó nhËp mét x©u ký tù tõ bµn phÝm ta cã thÓ dïng c¸c thñ tôc Read(ST)
   hoÆc Readln(ST).
- Khi nhËp tõ bµn phÝm, kh«ng gâ c¸c dÊu nh¸y bao chuçi.
- NÕu chØ nhÊn phÝm Enter khi ®-îc yªu cÇu nhËp th× chuçi ST lµ chuçi
   rçng
Thñ tôc Delete
Có ph¸p:
   Delete(ST,Vt,d)
trong ®ã VT, d lµ c¸c h»ng nguyªn
C«ng dông: xo¸ khái chuçi ST tÝnh tõ vÞ trÝ VT mét sè ký tù b»ng d ký tù
   tÝnh vÒ phÝa ph¶i. C¸c ký tù cña chuçi ST sÏ tù ®éng dån l¹i.
VÝ dô:
ST:=‘TURBO PASCAL’;
Delete(ST,3,3);
Khi ®ã chuçi ST sÏ nhËn gi¸ trÞ lµ ‘TU PASCAL’
Thñ tôc Insert
Có ph¸p:
Insert(ST1,ST2,Vt)
trong ®ã VT lµ mét h»ng nguyªn
C«ng dông: chÌn chuçi ST1 vµo chuçi ST2 tÝnh tõ vÞ trÝ VT
VÝ dô:
ST1:=‘abcde’;
ST2:=‘mnkh’;
S:=insert(ST1,St2,3);
Khi ®ã S nhËn gi¸ trÞ ‘mnabcdekh’;
Thñ tôc STR
Có ph¸p:
STR(N,ST)
trong ®ã N lµ mét h»ng sè hoÆc biÕn sè
C«ng dông: t¹o thµnh chuçi ST tõ d·y sè N (nguyªn hoÆc thùc) víi ®é dµi
   cña chuçi ®-îc chØ ra trong c¸ch viÕt sè N
VÝ dô:
N1:=1992;
N2:=3456789;
STR(N1:5,ST1);
STR(N2:10,ST2);
Khi ®ã ST1 nhËn gi¸ trÞ ‘1992’ cßn ST2 nhËn gi¸ trÞ ‘3456789’.
Thñ tôc Val
Có ph¸p:
Val(ST,N,M)
trong ®ã ST lµ mét chuçi cã d¹ng sè (nguyªn hoÆc thùc)
C«ng dông: ChuyÓn chuçi ST thµnh sè N, vµ g¸n cho biÕn Var. M lµ sè
nguyªn ®Ó ph¸t hiÖn lçi: nÕu phÐp biÕn ®æi ®óng th× M cã gi¸ trÞ b»ng
0, nÕu sai do ST kh«ng biÓu diÔn ®óng sè nguyªn hay sè thùc, M sÏ nhËn
gi¸ trÞ b»ng vÞ trÝ cña ký tù sai trong x©u St.
VÝ dô:
ST1:=1992;
ST2:=‘4729.18’;
ST3:=‘9376A64’;
Val(ST1,N1,M); (* cho N1 lµ 1992, M=0 *);
Val(ST2,N2,M) (* cho N2 lµ 4729.18, M=0 *);
Val(ST3,N3,M) (* kh«ng cho N3, M=5 *);
VÝ dô 12.8: Gâ vµo mét c©u tõ bµn phÝm. H·y ®Õm xem c©u cã bao
nhiªu tõ
PROGRAM DEM_TU;
         USES Crt;
TYPE
         Day=String[60];
CONST
         KT=‘’;
VAR
         S: Day;
         Vitri, Ghi, Dai: nteger;
BEGIN
         ClrScr;
         Gotoxy(5,10); Write (‘ Ban hay go vao mot cau ‘);
         Readln (S);
         Ghi:=0;
  REPEAT
         Dai:=Length(S);
         Vitri:=Pos(KT,S);
IF Vitri>0 THEN
BEGIN
         Ghi:=Ghi+1; S:=Copy(S, Vitri+1, Dai-Vitri);
END;
         UNTIL Vitri=0;
         Gotoxy(5,12); Writeln (‘ Cau da go vao co ‘, Ghi+1, ‘tu’);
Readln;
END.
VÝ dô 12.9: Gâ vµo mét c©u qu¶ng c¸o. H·y lµm cho dßng qu¶ng c¸o ch¹y
tõ ph¶i sang tr¸i.
PROGRAM QuangCao;
USES Crt;
TYPE
         Day=String[60];
VAR
         d, c: Day;
         dai, i, rong: integer;
BEGIN
         ClrScr;
         Gotoxy(5,10); Write (‘Hay go vao Dong quang cao’);
         Readln (d);
d:=d+’ ‘;
        dai:=Length(d);
        FOR i:=1 TO dai DO
BEGIN
        rong:=dai-i+1;
        c:=Copy(d,i,rong);
        Gotoxy(20,14); Write (c);
        Delay(200);
END;
END.
Bµi tËp
12.1 . BiÕt r»ng c¸c biÕn St1, St2, St3 ®-îc khai b¸o nh- sau
                 Var St1, St2, St3:String[12]
                 TÝnh gi¸ trÞ cña ST3 sau khi thùc hiÖn c¸c lÖnh sau:
                 St1:=‘KIEM TRA’; St2:=‘PASCAL’; St3:=St1+St2 ;
12.2 TÝnh gi¸ trÞ cña S (víi S cã kiÓu String) sau khi thùc hiÖn c¸c lÖnh
d-íi ®©y:
S:=‘F la mot so nguyen to’;
Delete(S,3,5);
12.3. ViÕt ch-¬ng tr×nh nhËp vµo 10 chuçi ký tù. In ra chuçi cã chiÒu dµi
dµi nhÊt, chuçi cã chiÒu dµi ng¾n nhÊt
12.4. ViÕt ch-¬ng tr×nh nhËp vµo mét chuçi vµ in ra mµn h×nh chuçi ®ã
theo tõng d¹ng sau:
VÝ dô: NhËp vµo chuçi 'Toi di hoc'
a. In ra d¹ng                     b. In ra d¹ng                    c. In ra
d¹ng
T                          T                                 T
TO                        TO                              TO
TOI                      TOI                             TOI
.........                ........                     .........
TOI DI HOC           TOI DI HOC                          TOI DI HOC
12.5. ViÕt ch-¬ng tr×nh nhËp vµo mét chuçi gåm nhiÒu tõ c¸ch nhau bëi
dÊu c¸ch. In ra tõng tõ mét cña chuçi ®ã, mçi tõ in trªn mét dßng.
        VÝ dô:           NhËp vµo TOI DI HOC
                         In ra mµn h×nh:           TOI
                                                  DI
                                                  HOC
12.6. ViÕt ch-¬ng tr×nh nhËp vµo mét chuçi sau ®ã in ra chuçi ®ã theo
chiÒu ng-îc l¹i.
        VÝ dô: NhËp:             123 456 789
                         In ra   987 654 321
12.7. ViÕt ch-¬ng tr×nh nhËp vµo mét c©u gåm nhiÒu tõ c¸ch nhau bëi
kho¶ng tr¾ng. In ra sè tõ trong c©u ®ã
12.8. ViÕt ch-¬ng tr×nh nhËp vµo mét c©u vµ ®Õm sè lÇn xuÊt hiÖn cña
tõng ký tù trong c©u ®ã
        VÝ dô:           NhËp vµo 'Troi mua to'
                         In ra: Sè lÇn xuÊt hiÖn cña ký tù T lµ 1
                                 Sè lÇn xuÊt hiÖn cña ký tù r lµ 1
                                 Sè lÇn xuÊt hiÖn cña ký tù o lµ 2 ...
12.9. ViÕt ch-¬ng tr×nh nhËp vµo mét c©u qu¶ng c¸o vµ in ra trªn mµn
h×nh dßng qu¶ng c¸o ®ã ®-îc ch¹y tõ tr¸i sang ph¶i
®ã ®-îc ch¹y tõ tr¸i sang ph¶i
12.10. T¹o c¸c hµm xö lý chuçi víi tªn vµ chøc n¨ng nh- sau:
a. Function Left(S:String; n:byte):String
        Chøc n¨ng: cho kÕt qu¶ lµ mét chuçi con lÊy ra n ký tù tõ chuçi S
tÝnh tõ vÞ trÝ ngoµi cïng bªn tr¸i sang ph¶i cña chuçi
        b. Function RIGHT(S:String;n:byte):String
        Chøc n¨ng: Cho kÕt qu¶ lµ mét chuçi con lÊy ra n ký tõ tõ chuçi S
tÝnh tõ vÞ trÝ ngoµi cïng bªn ph¶i sang tr¸i cña chuçi
        c. Fuction RTRIM(S:String):String
        Chøc n¨ng: lo¹i bá c¸c ký tù tr¾ng n»m ë phÇn cuèi cña chuçi S
        d. Function LTRIM(S:String):String
        Chøc n¨ng: Lo¹i bá c¸c ký tù tr¾ng n»m ë ®Çu chuçi S
        e. Function IIF(a:boolean;S1,S2:String):String
        Chøc n¨ng: Tr¶ vÒ chuçi S1 nÕu a=TRUE, vÒ S2 nÕu a=False
        VÝ dô: IIF(Tuoi<17,'Thieu nien','Thanh nien');

More Related Content

What's hot (15)

He thong dieu_khien_thuy_luc
He thong dieu_khien_thuy_luc He thong dieu_khien_thuy_luc
He thong dieu_khien_thuy_luc
 
Chuong 1 kien truc nha cong cong
Chuong 1   kien truc nha cong congChuong 1   kien truc nha cong cong
Chuong 1 kien truc nha cong cong
 
Chuong3
Chuong3Chuong3
Chuong3
 
Luận văn: Chung cư tái định cư tại Hải Phòng, HAY
Luận văn: Chung cư tái định cư tại Hải Phòng, HAYLuận văn: Chung cư tái định cư tại Hải Phòng, HAY
Luận văn: Chung cư tái định cư tại Hải Phòng, HAY
 
Luận văn tốt nghiệp: Trụ sở công an quận Ba Đình, HOT
Luận văn tốt nghiệp: Trụ sở công an quận Ba Đình, HOTLuận văn tốt nghiệp: Trụ sở công an quận Ba Đình, HOT
Luận văn tốt nghiệp: Trụ sở công an quận Ba Đình, HOT
 
bctntlvn (59).pdf
bctntlvn (59).pdfbctntlvn (59).pdf
bctntlvn (59).pdf
 
Đề tài: Chung cư CT1A khu đo thị mới Văn Khê, Hà Nội, HAY
Đề tài: Chung cư CT1A khu đo thị mới Văn Khê, Hà Nội, HAYĐề tài: Chung cư CT1A khu đo thị mới Văn Khê, Hà Nội, HAY
Đề tài: Chung cư CT1A khu đo thị mới Văn Khê, Hà Nội, HAY
 
Luận văn: Nhà làm việc trường ĐH kinh tế kĩ thuật Hà Nội, HAY
Luận văn: Nhà làm việc trường ĐH kinh tế kĩ thuật Hà Nội, HAYLuận văn: Nhà làm việc trường ĐH kinh tế kĩ thuật Hà Nội, HAY
Luận văn: Nhà làm việc trường ĐH kinh tế kĩ thuật Hà Nội, HAY
 
Giao trinh kien truc cong cong
Giao trinh kien truc cong congGiao trinh kien truc cong cong
Giao trinh kien truc cong cong
 
Bai tap thuc hanh word
Bai tap thuc hanh wordBai tap thuc hanh word
Bai tap thuc hanh word
 
Mot so pp tinh ct cho vach phang btct
Mot so pp tinh ct cho vach phang btctMot so pp tinh ct cho vach phang btct
Mot so pp tinh ct cho vach phang btct
 
Chuong 14 16
Chuong 14   16Chuong 14   16
Chuong 14 16
 
Cac meo vat hay
Cac meo vat hayCac meo vat hay
Cac meo vat hay
 
Truyenhinhso
TruyenhinhsoTruyenhinhso
Truyenhinhso
 
Ky thuat lap trinh
Ky thuat lap trinhKy thuat lap trinh
Ky thuat lap trinh
 

Viewers also liked

2013.1.13 worship report
2013.1.13 worship report2013.1.13 worship report
2013.1.13 worship reportVisualBee.com
 
Senyum - Cuti-cuti Malaysia
Senyum - Cuti-cuti MalaysiaSenyum - Cuti-cuti Malaysia
Senyum - Cuti-cuti MalaysiaVisualBee.com
 
2012.10.21 afternoon worship report
2012.10.21 afternoon worship report2012.10.21 afternoon worship report
2012.10.21 afternoon worship reportVisualBee.com
 
Beauty of Mathematics
Beauty of MathematicsBeauty of Mathematics
Beauty of MathematicsVisualBee.com
 
OLHE BEM PARA ESTA IMAGEM
OLHE BEM PARA ESTA IMAGEMOLHE BEM PARA ESTA IMAGEM
OLHE BEM PARA ESTA IMAGEMVisualBee.com
 

Viewers also liked (7)

2013.1.13 worship report
2013.1.13 worship report2013.1.13 worship report
2013.1.13 worship report
 
Senyum - Cuti-cuti Malaysia
Senyum - Cuti-cuti MalaysiaSenyum - Cuti-cuti Malaysia
Senyum - Cuti-cuti Malaysia
 
2012.10.21 afternoon worship report
2012.10.21 afternoon worship report2012.10.21 afternoon worship report
2012.10.21 afternoon worship report
 
2013
20132013
2013
 
Teen talk & more!!
Teen talk & more!!Teen talk & more!!
Teen talk & more!!
 
Beauty of Mathematics
Beauty of MathematicsBeauty of Mathematics
Beauty of Mathematics
 
OLHE BEM PARA ESTA IMAGEM
OLHE BEM PARA ESTA IMAGEMOLHE BEM PARA ESTA IMAGEM
OLHE BEM PARA ESTA IMAGEM
 

Similar to huy

Mot so phuong phap tinh vach
Mot so phuong phap tinh vachMot so phuong phap tinh vach
Mot so phuong phap tinh vachTran Thi
 
Co ban ve linuxshellscript
Co ban ve linuxshellscriptCo ban ve linuxshellscript
Co ban ve linuxshellscriptsakurai1102
 
Ki thuat lap_trinh
Ki thuat lap_trinhKi thuat lap_trinh
Ki thuat lap_trinhHien Nguyen
 
Ky thuat lap_trinh
Ky thuat lap_trinhKy thuat lap_trinh
Ky thuat lap_trinhyenthanhlll
 
Chuong 3 he thong mang luoi cong trinh cong cong
Chuong 3   he thong mang luoi cong trinh cong congChuong 3   he thong mang luoi cong trinh cong cong
Chuong 3 he thong mang luoi cong trinh cong congHi House
 
Chuong 5 excel
Chuong 5 excelChuong 5 excel
Chuong 5 exceldxdd1
 
Thiết kế và chế tạo mô hình thực hành zen của omron 3442153
Thiết kế và chế tạo mô hình thực hành zen của omron 3442153Thiết kế và chế tạo mô hình thực hành zen của omron 3442153
Thiết kế và chế tạo mô hình thực hành zen của omron 3442153nataliej4
 
Giao trinhcambiencongnghiep
Giao trinhcambiencongnghiepGiao trinhcambiencongnghiep
Giao trinhcambiencongnghiepHuy BK
 
bctntlvn (67).pdf
bctntlvn (67).pdfbctntlvn (67).pdf
bctntlvn (67).pdfLuanvan84
 
bctntlvn (65).pdf
bctntlvn (65).pdfbctntlvn (65).pdf
bctntlvn (65).pdfLuanvan84
 
Định Mức_1776_ BXD.pdf
Định Mức_1776_ BXD.pdfĐịnh Mức_1776_ BXD.pdf
Định Mức_1776_ BXD.pdfTho Nguyen
 
Giáo trình lập trình C
Giáo trình lập trình CGiáo trình lập trình C
Giáo trình lập trình CHitany Paly
 
Bai giang chuyen doi
Bai giang chuyen doiBai giang chuyen doi
Bai giang chuyen doibookbooming1
 

Similar to huy (20)

Mot so phuong phap tinh vach
Mot so phuong phap tinh vachMot so phuong phap tinh vach
Mot so phuong phap tinh vach
 
03 mot so phuong phap
03 mot so phuong phap03 mot so phuong phap
03 mot so phuong phap
 
Ky thuat lap_trinh
Ky thuat lap_trinhKy thuat lap_trinh
Ky thuat lap_trinh
 
Kỹ thuật lập trình.
Kỹ thuật lập trình.Kỹ thuật lập trình.
Kỹ thuật lập trình.
 
Co ban ve linuxshellscript
Co ban ve linuxshellscriptCo ban ve linuxshellscript
Co ban ve linuxshellscript
 
Co ban ve linuxshellscript
Co ban ve linuxshellscriptCo ban ve linuxshellscript
Co ban ve linuxshellscript
 
Ki thuat lap_trinh
Ki thuat lap_trinhKi thuat lap_trinh
Ki thuat lap_trinh
 
Ky thuat lap_trinh
Ky thuat lap_trinhKy thuat lap_trinh
Ky thuat lap_trinh
 
Ki thuat lap_trinh
Ki thuat lap_trinhKi thuat lap_trinh
Ki thuat lap_trinh
 
Bt duc
Bt ducBt duc
Bt duc
 
Chuong 3 he thong mang luoi cong trinh cong cong
Chuong 3   he thong mang luoi cong trinh cong congChuong 3   he thong mang luoi cong trinh cong cong
Chuong 3 he thong mang luoi cong trinh cong cong
 
Chuong 5 excel
Chuong 5 excelChuong 5 excel
Chuong 5 excel
 
Thiết kế và chế tạo mô hình thực hành zen của omron 3442153
Thiết kế và chế tạo mô hình thực hành zen của omron 3442153Thiết kế và chế tạo mô hình thực hành zen của omron 3442153
Thiết kế và chế tạo mô hình thực hành zen của omron 3442153
 
Truyenhinhso
TruyenhinhsoTruyenhinhso
Truyenhinhso
 
Giao trinhcambiencongnghiep
Giao trinhcambiencongnghiepGiao trinhcambiencongnghiep
Giao trinhcambiencongnghiep
 
bctntlvn (67).pdf
bctntlvn (67).pdfbctntlvn (67).pdf
bctntlvn (67).pdf
 
bctntlvn (65).pdf
bctntlvn (65).pdfbctntlvn (65).pdf
bctntlvn (65).pdf
 
Định Mức_1776_ BXD.pdf
Định Mức_1776_ BXD.pdfĐịnh Mức_1776_ BXD.pdf
Định Mức_1776_ BXD.pdf
 
Giáo trình lập trình C
Giáo trình lập trình CGiáo trình lập trình C
Giáo trình lập trình C
 
Bai giang chuyen doi
Bai giang chuyen doiBai giang chuyen doi
Bai giang chuyen doi
 

More from VisualBee.com

Homenagem para luiz e marcos (shared using VisualBee)
Homenagem para luiz e marcos 
 (shared using VisualBee)Homenagem para luiz e marcos 
 (shared using VisualBee)
Homenagem para luiz e marcos (shared using VisualBee)VisualBee.com
 
PowerPoint Presentation (shared using VisualBee)
PowerPoint Presentation (shared using VisualBee)PowerPoint Presentation (shared using VisualBee)
PowerPoint Presentation (shared using VisualBee)VisualBee.com
 
PowerPoint Presentation (shared using http://VisualBee.com). (shared using Vi...
PowerPoint Presentation (shared using http://VisualBee.com). (shared using Vi...PowerPoint Presentation (shared using http://VisualBee.com). (shared using Vi...
PowerPoint Presentation (shared using http://VisualBee.com). (shared using Vi...VisualBee.com
 
The bible and I (shared using VisualBee)
The bible and I (shared using VisualBee)The bible and I (shared using VisualBee)
The bible and I (shared using VisualBee)VisualBee.com
 
bb (shared using VisualBee)
bb  
(shared using VisualBee)bb  
(shared using VisualBee)
bb (shared using VisualBee)VisualBee.com
 
Chua nhat III mua Thuong Nien - Nam C
Chua nhat III mua Thuong Nien - Nam CChua nhat III mua Thuong Nien - Nam C
Chua nhat III mua Thuong Nien - Nam CVisualBee.com
 
LA FE QUE AGRADA A DIOS
LA FE QUE AGRADA A DIOSLA FE QUE AGRADA A DIOS
LA FE QUE AGRADA A DIOSVisualBee.com
 
Martin Luther king JR
Martin Luther king JRMartin Luther king JR
Martin Luther king JRVisualBee.com
 
Diapositive 1 (shared using http://VisualBee.com).
Diapositive 1 (shared using http://VisualBee.com).Diapositive 1 (shared using http://VisualBee.com).
Diapositive 1 (shared using http://VisualBee.com).VisualBee.com
 

More from VisualBee.com (20)

Homenagem para luiz e marcos (shared using VisualBee)
Homenagem para luiz e marcos 
 (shared using VisualBee)Homenagem para luiz e marcos 
 (shared using VisualBee)
Homenagem para luiz e marcos (shared using VisualBee)
 
PowerPoint Presentation (shared using VisualBee)
PowerPoint Presentation (shared using VisualBee)PowerPoint Presentation (shared using VisualBee)
PowerPoint Presentation (shared using VisualBee)
 
PowerPoint Presentation (shared using http://VisualBee.com). (shared using Vi...
PowerPoint Presentation (shared using http://VisualBee.com). (shared using Vi...PowerPoint Presentation (shared using http://VisualBee.com). (shared using Vi...
PowerPoint Presentation (shared using http://VisualBee.com). (shared using Vi...
 
The bible and I (shared using VisualBee)
The bible and I (shared using VisualBee)The bible and I (shared using VisualBee)
The bible and I (shared using VisualBee)
 
bb bb b
bb bb bbb bb b
bb bb b
 
bb (shared using VisualBee)
bb  
(shared using VisualBee)bb  
(shared using VisualBee)
bb (shared using VisualBee)
 
bb
bbbb
bb
 
loki
lokiloki
loki
 
ASH WEDNESDAY
ASH WEDNESDAYASH WEDNESDAY
ASH WEDNESDAY
 
hijospreferidos
hijospreferidoshijospreferidos
hijospreferidos
 
yo
yoyo
yo
 
hijo preferido
hijo preferidohijo preferido
hijo preferido
 
Alcoholismo
AlcoholismoAlcoholismo
Alcoholismo
 
west love
west lovewest love
west love
 
jaa
jaajaa
jaa
 
Chua nhat III mua Thuong Nien - Nam C
Chua nhat III mua Thuong Nien - Nam CChua nhat III mua Thuong Nien - Nam C
Chua nhat III mua Thuong Nien - Nam C
 
LA FE QUE AGRADA A DIOS
LA FE QUE AGRADA A DIOSLA FE QUE AGRADA A DIOS
LA FE QUE AGRADA A DIOS
 
Martin Luther king JR
Martin Luther king JRMartin Luther king JR
Martin Luther king JR
 
Diapositive 1 (shared using http://VisualBee.com).
Diapositive 1 (shared using http://VisualBee.com).Diapositive 1 (shared using http://VisualBee.com).
Diapositive 1 (shared using http://VisualBee.com).
 
my cara de empanaaa
my cara de empanaaamy cara de empanaaa
my cara de empanaaa
 

huy

  • 1. PhÇn III: Ng«n ng÷ lËp tr×nh Pascal Ch-¬ng 1: ThuËt gi¶i vµ ch-¬ng tr×nh I. Kh¸i niÖm 1.ThuËt gi¶i ThuËt gi¶i (algorithm) lµ mét tËp h÷u h¹n c¸c thao t¸c (c¸c c«ng viÖc, c¸c phÐp to¸n) cã thÓ ®Æt tªn ®-îc vµ chóng ®-îc thùc hiÖn theo mét tr×nh tù thÝch hîp trªn mét sè ®èi t-îng ®Ó ®¹t ®-îc môc ®Ých mong muèn. "H÷u h¹n" ë ®©y ®-îc hiÓu c¶ vÒ mÆt thêi gian thùc hiÖn lÉn c«ng cô thùc hiÖn. 2.Ch-¬ng tr×nh Ch-¬ng tr×nh lµ tËp hîp d·y c¸c lÖnh ®iÒu khiÓn m¸y tÝnh thùc hiÖn. Nh- vËy, cã thÓ nãi mét ch-¬ng tr×nh lµ mét c¸ch diÔn t¶ thuËt gi¶i trong mét ng«n ng÷ chÝnh x¸c ®Ó m¸y tÝnh cã thÓ hiÓu ®-îc.
  • 2. II. C¸c ®Æc tr-ng cña thuËt to¸n ThuËt to¸n trong tin häc ph¶i cã c¸c tÝnh chÊt sau: + TÝnh dõng: ThuËt to¸n ph¶i kÕt thóc sau mét sè h÷u h¹n b-íc. + TÝnh x¸c ®Þnh: C¸c thao t¸c ë mçi b-íc ph¶i hÕt søc râ rµng vµ chØ ®-îc hiÓu theo mét nghÜa duy nhÊt. Trong cïng mét ®iÒu kiÖn hai m¸y kh¸c nhau hoÆc hai lÇn thao t¸c kh¸c nhau ph¶i cho cïng mét kÕt qu¶ khi thùc hiÖn cïng mét thuËt to¸n. + TÝnh hµng lo¹t: ThuËt to¸n cã hiÖu lùc nh- nhau ®èi víi c¸c bµi to¸n cïng lo¹i (cã cïng miÒn ¸p dông thuËt to¸n). + TÝnh kh¶ thi: ThuËt to¸n ph¶i bao gåm c¸c thao t¸c mµ m¸y cã thÓ thùc hiÖn ®-îc nghÜa lµ chØ bao gåm nh÷ng phÐp to¸n sè häc, c¸c phÐp so s¸nh, c¸c phÐp logic, c¸c phÐp nhËp xuÊt th«ng tin tiªu chuÈn. + TÝnh ®Çy ®ñ: ThuËt to¸n ph¶i vÐt ®-îc hÕt c¸c t×nh huèng, c¸c kh¶ n¨ng cã thÓ x¶y ra, kh«ng bá sãt bÊt kú mét
  • 3. III. C¸c d¹ng diÔn t¶ thuËt to¸n 1. DiÔn ®¹t b»ng v¨n b¶n (ng«n ng÷ tù nhiªn) VÝ dô1: ThuËt gi¶i nÊu c¬m cã thÓ ®-îc viÕt nh- sau: B-íc 1: lÊy g¹o theo ®Þnh l-îng cÇn thiÕt B-íc 2: vo g¹o vµ ®æ n-íc vµo nåi B-íc 3: ®un s«i c¹n n-íc B-íc 4: gi÷ löa nhá B-íc 5: c¸ch 5 phót mét nÕm c¬m xem chÝn ch-a. NÕu ch-a chÝn quay vÒ b-íc 5 NÕu ®· chÝn th× chuyÓn sang b-íc 6 B-íc 6: t¾t löa vµ b¾c nåi c¬m ra. KÕt thóc C¸ch diÔn ®¹t b»ng v¨n b¶n nµy tuy kh¸ ®¬n gi¶n vµ gÇn gòi víi t- duy cña con ng-êi nh-ng phô thuéc rÊt nhiÒu vµo c¸ch diÔn ®¹t cña ng-êi sö dông. V× vËy nã kh«ng tr¸nh khái cã nh÷ng chç r-êm rµ khiÕn cho ng-êi ®äc kh«ng cã ®-îc mét c¸i nh×n kh¸i qu¸t víi toµn bé thuËt to¸n.
  • 4. 2. DiÔn ®¹t b»ng ng«n ng÷ lËp tr×nh Ng«n ng÷ lËp tr×nh (language program) lµ ng«n ng÷ do c¸c chuyªn gia tin häc t¹o ra chuyªn dïng ®Ó viÕt ch-¬ng tr×nh cho m¸y tÝnh. Nã ®-îc x©y dùng kh¸ ®¬n gi¶n vÒ chÝnh t¶ vµ ng÷ ph¸p kh¸ gÇn gòi víi ng«n ng÷ khoa häc kü thuËt, qu¶n lý.
  • 5. 3. DiÔn ®¹t b»ng l-u ®å Mét sè ký hiÖu hay dïng: §iÓm b¾t ®Çu vµ chÊm døt thuËt to¸n Thao t¸c nhËp hay xuÊt d÷ liÖu Khèi xö lý c«ng viÖc Khèi quyÕt ®Þnh lùa chän §iÓm nèi ChuÈn bÞ Khèi ch-¬ng tr×nh con §-êng ®i cña ch-¬ng tr×nh
  • 6. VÝ dô 2: ThuËt to¸n gi¶i ph-¬ng tr×nh bËc nhÊt ax + b = 0, gåm c¸c b-íc:  B-íc 1: NhËp vµo 2 hÖ sè a vµ b.  B-íc 2: XÐt ®iÒu kiÖn a = 0 ? NÕu ®óng lµ a = 0, th× ®i ®Õn b-íc 3. NÕu kh«ng, nghÜa lµ a ≠ 0, th× ®i ®Õn b-íc 4.  B-íc 3: XÐt ®iÒu kiÖn b = 0 ? NÕu b = 0, th× b¸o ph-¬ng tr×nh cã v« sè nghiÖm. ChuyÓn ®Õn b-íc 5. NÕu b 0, th«ng b¸o ph-¬ng tr×nh v« nghiÖm. ChuyÓn ®Õn b-íc 5.  B-íc 4: Ph-¬ng tr×nh cã mét nghiÖm duy nhÊt lµ x = - b/a.  B-íc 5: KÕt thóc thuËt to¸n
  • 7.
  • 8. VÝ dô 3 : TÝnh tæng S cña n sè nguyªn ®Çu tiªn, ta tiÕn hµnh theo hai thuËt gi¶i sau:
  • 9. VÝ dô 4: ThuËt gi¶i ®æi chç ViÕt thuËt gi¶i ®Ó nhËp vµo 2 sè A, B tõ bµn phÝm sau ®ã ®æi gi¸ trÞ cña biÕn A cho biÕn B vµ ng-îc l¹i. Dïng thªm mét biÕn trung gian (TG) sau ®ã tiÕn hµnh:  ChuyÓn gi¸ trÞ cña biÕn A cho biÕn TG  ChuyÓn gi¸ trÞ cña biÕn B cho biÕn A  ChuyÓn gi¸ trÞ cña biÕn TG cho biÕn B.
  • 10. VÝ dô 5: ThuËt gi¶i t×m sè lín nhÊt trong 2 sè
  • 11. Bµi tËp 1. ViÕt thuËt gi¶i nhËp 1 sè tõ bµn phÝm vµ in ra b×nh ph-¬ng cña sè ®ã nÕu sè ®ã lµ sè d-¬ng. 2.ViÕt thuËt gi¶i nhËp tõ bµn phÝm mét sè tù nhiªn N vµ in ra c¸c sè nguyªn trong ph¹m vi tõ 1 ®Õn N 3. ViÕt thuËt gi¶i nhËp tõ bµn phÝm 2 sè tù nhiªn m, n (m<n) vµ in ra mµn h×nh c¸c sè chia hÕt cho m trong kho¶ng tõ 1 ®Õn n H-íng dÉn: §Ó kiÓm tra xem mét sè x cã chia hÕt cho m kh«ng ta dïng biÓu thøc kiÓm tra X MOD M=0. NÕu biÓu thøc nµy lµ ®óng th× x chia hÕt cho m. 4 ViÕt thuËt gi¶i nhËp 3 sè tõ bµn phÝm vµ in ra sè lín nhÊt trong ba sè ®ã. 5. ViÕt thuËt gi¶i nhËp 2 sè tõ bµn phÝm vµ in ra UCLN, BCNN cña hai sè ®ã. H-íng dÉn: UCLN cña 2 sè m vµ n (UCLN(m,n)) ®-îc tÝnh nh- sau: UCLN(m,m)=m
  • 12. CH¦¥NG 2 C¸c kh¸i niÖm c¬ b¶n cña ng«n ng÷ lËp tr×nh Pascal I. Giíi thiÖu Pascal lµ ng«n ng÷ lËp tr×nh cÊp cao do gi¸o s- Niklaus Writh (tr-êng §H kü thuËt Zurich, Thuþ sü) s¸ng t¸c vµ c«ng bè vµo ®Çu nh÷ng n¨m 1970. Nã gióp cho sinh viªn còng nh- ng-êi míi häc lËp tr×nh cã ®-îc thãi quen viÕt mét ch-¬ng tr×nh cã cÊu tróc s¸ng sña, râ rµng dÔ ®äc vµ dÔ hiÓu.
  • 13. -u ®iÓm cña Pascal  Pascal lµ mét ng«n ng÷ cã ®Þnh kiÓu m¹nh mÏ. Cã nghÜa mét biÕn vµ mét h»ng cña mét kiÓu d÷ liÖu kh«ng thÓ tù do ®em trén lÉn víi biÕn vµ h»ng cña mét kiÓu d÷ liÖu kh¸c. Khi sö dông ph¶i khai b¸o râ kiÓu cña chóng.  C¸c kiÓu d÷ liÖu trong Pascal hÕt søc phong phó thÓ hiÖn ®-îc nhiÒu kiÓu d÷ liÖu tõ ®¬n gi¶n ®Õn phøc t¹p.  Pascal lµ mét ng«n ng÷ cã cÊu tróc. Mét ng«n ng÷ cã cÊu tróc khèi lµ mét ng«n ng÷ mµ ta cã thÓ t¸ch c¸c th«ng tin d÷ liÖu (biÕn, h»ng,..) vµ c¸c lÖnh cÇn dïng cho mét nhiÖm vô x¸c ®Þnh thµnh nh÷ng khèi riªng ®Ó ng-êi lËp tr×nh cã thÓ gi¶i quyÕt dÇn dÇn tõng khèi mét hoÆc cho nhiÒu ng-êi cïng tham gia lËp tr×nh. TÝnh cÊu tróc cña Pascal ®-îc thÓ hiÖn trªn 3 mÆt:  CÊu tróc vÒ mÆt d÷ liÖu: tõ c¸c d÷ liÖu kiÓu ®¬n gi¶n hoÆc lÖnh cã cÊu tróc ta cã thÓ x©y dùng c¸c d÷ liÖu cã cÊu tróc phøc t¹p h¬n  CÊu tróc vÒ mÆt lÖnh: tõ c¸c lÖnh ®¬n gi¶n hoÆc lÖnh cã cÊu tróc ta cã thÓ x©y dùng c¸c lÖnh phøc t¹p h¬n.
  • 14. II. C¸c phÇn tö c¬ b¶n cña ng«n ng÷ PASCAL 2.1. Bé ký tù Ng«n ng÷ Pascal ®-îc x©y dùng tõ bé ký hiÖu c¬ b¶n sau: - Bé 26 ch÷ c¸i La tinh: 26 ch÷ c¸i th-êng a, b, c, ... , z 26 ch÷ c¸i hoa: A,B,C,... Z - Bé 10 ch÷ sè thËp ph©n: 0, 1, ... , 9 - Bé dÊu c¸c phÐp to¸n: céng + trõ - nh©n * chia / luü thõa ^ b»ng = lín h¬n > nhá h¬n < kh¸c <> më ngoÆc ( ®ãng ngoÆc ) - Bé c¸c ký hiÖu ®Æc biÖt: dÊu g¹ch d-íi _ dÊu chÊm . dÊu chÊm phÈy ; dÊu nh¸y ®¬n ' c¸c ký hiÖu kh¸c nh- [] $ ...
  • 15. 2.2. Tõ kho¸ Lµ c¸c tõ riªng cña Pascal, cã ng÷ nghÜa ®· ®-îc x¸c ®Þnh, kh«ng ®-îc dïng nã vµo c¸c viÖc kh¸c hoÆc ®Æt tªn míi trïng víi c¸c tõ khãa. - Tõ khãa chung: PROGRAM, BEGIN, END, PROCEDURE, FUNCTION - Tõ khãa ®Ó khai b¸o: CONST, VAR, TYPE, ARRAY, STRING, RECORD, SET, FILE, LABEL - Tõ khãa cña lÖnh lùa chän: IF ... THEN ... ELSE, CASE ... OF - Tõ khãa cña lÖnh lÆp: FOR... TO... DO, FOR... DOWNTO... DO, WHILE... DO, REPEAT... UNTIL - Tõ khãa ®iÒu khiÓn: WITH, GOTO, EXIT, HALT - Tõ khãa to¸n tö:
  • 16. 2.3. Tªn chuÈn Tªn chuÈn lµ tªn ®· ®-îc ®Þnh nghÜa s½n trong Pascal, nh-ng ng-êi ta cã thÓ ®Þnh nghÜa l¹i nÕu muèn. Trong Pascal ta cã c¸c tªn chuÈn sau ®©y: Boolean, Char, Integer, Word, Byte, Real, Text False, True, MaxInt Abs, Chr, Cos, Sin, Eof, Eoln Exp, Ln, Odd, Ord Round, Trunc, Sqr, Pred, Succ Dispose, New, Get, Put, Read, Readln, Write, Writeln, Reset, Rewrite
  • 17. 2.4. Tªn hay ®Þnh danh Tªn hay ®Þnh danh lµ mét d·y ký tù do ng-êi sö dông tù ®Æt cho c¸c h»ng, biÕn, hµm, thñ tôc, tªn ch-¬ng tr×nh, tªn kiÓu d÷ liÖu míi. Tªn hay ®Þnh danh trong Pascal ph¶i tu©n thñ c¸c qui ®Þnh sau:  Tªn ph¶i ®-îc b¾t ®Çu b»ng mét ch÷ c¸i hoÆc ch÷ sè.  Trong tªn kh«ng chøa dÊu c¸ch  Tªn kh«ng ®-îc trïng víi mét tõ kho¸ cña Pascal  Sè ký tù cña tªn bÞ h¹n chÕ lµ 8 (Pascal chuÈn), 127 (Turbo Pascal) VÝ dô: C¸c tªn viÕt nh- sau lµ sai v× Pascal kh«ng chÊp nhËn: #DLTA sai v× tªn b¾t ®Çu b»ng mét ký tù ®Æc biÖt ARRAY sai v× tªn trïng víi tõ kho¸ VI DU sai v× tªn cã dÊu c¸ch Chó ý:  §Ó lµm cho tªn ®-îc s¸ng sña ng-êi ta cho phÐp dïng dÊu g¹ch d-íi (_) khi viÕt tªn. VÝ dô: GIAI_PHUONG_TRINH  C¸c tõ trong Pascal cã thÓ viÕt hoa hoÆc viÕt th-êng mµ gi¸
  • 18. IV. CÊu tróc cña mét ch-¬ng tr×nh Pascal PROGRAM Tªn_ch-¬ng_tr×nh; USES… LABEL…. USES… CONST… TYPE… VAR… PROCEDURE… FUNCTION… BEGIN … END
  • 19. Mét ch-¬ng tr×nh Pascal cã c¸c phÇn: * PhÇn tiªu ®Ò: PhÇn nµy b¾t ®Çu b»ng tõ khãa Program råi tiÕp ®Õn lµ tªn cña ch-¬ng tr×nh vµ chÊm døt b»ng dÊu chÊm phÈy (;) Tªn ch-¬ng tr×nh ph¶i ®-îc ®Æt theo ®óng qui c¸ch cña danh hiÖu tù ®Æt. PhÇn tiªu ®Ò cã hoÆc kh«ng. * PhÇn khai b¸o d÷ liÖu: Mét ch-¬ng tr×nh Pascal cã thÓ cã mét sè hoÆc tÊt c¶ c¸c khai b¸o d÷ liÖu sau: – USES : khai b¸o c¸c th- viÖn ch-¬ng tr×nh – CONST : khai b¸o h»ng – TYPE : ®Þnh nghÜa kiÓu d÷ liÖu míi – VAR : khai b¸o c¸c biÕn – PhÇn khai b¸o ch-¬ng tr×nh con (cã thÓ cã hoÆc kh«ng tïy theo nhu cÇu). * PhÇn th©n ch-¬ng tr×nh: PhÇn th©n ch-¬ng tr×nh lµ phÇn quan träng nhÊt vµ b¾t buéc ph¶i cã, phÇn nµy lu«n n»m gi÷a 2 tõ kho¸ lµ BEGIN vµ END. ë gi÷a lµ lÖnh mµ c¸c ch-¬ng tr×nh chÝnh cÇn thùc hiÖn. Sau tõ khãa END lµ dÊu
  • 20. * DÊu chÊm phÈy (;): DÊu ; dïng ®Ó ng¨n c¸ch c¸c c©u lÖnh cña Pascal vµ kh«ng thÓ thiÕu ®-îc. * Lêi chó thÝch: Lêi chó thÝch dïng ®Ó chó gi¶i cho ng-êi sö dông ch-¬ng tr×nh nhí nh»m trao ®æi th«ng tin gi÷a ng-êi vµ ng-êi, m¸y tÝnh sÏ kh«ng ®Ó ý ®Õn lêi chó thÝch nµy. Lêi chó thÝch n»m gi÷a ký hiÖu: { } hoÆc (* *)
  • 21. VÝ dô: ViÕt ch-¬ng tr×nh tÝnh diÖn tÝch h×nh trßn biÕt b¸n kÝnh lµ R , tÝnh diÖn tÝch h×nh vu«ng biÕt c¹nh lµ a. PROGRAM VI_DU; (* Dßng tiªu ®Ò *) VAR R, A, Dientich: Real;(* Khai b¸o ba biÕn thùc *) BEGIN Write ('Ban kinh : R= '); Readln (R); Dientich:=3.14*R*R; (* TÝnh diÖn tÝch h×nh trßn *) Writeln (‘Dien tich hinh tron la:', Dientich:10:3); Write ('Do dai canh hinh vuong: A= '); Readln (A); Dientich:=A*A; Writeln (‘Dien tich hinh vuong la’, Dientich:10:3); Readln; END.
  • 22. V. C¸c kiÓu d÷ liÖu c¬ së 5.1. Kh¸i niÖm D÷ liÖu (DATA) ®-îc ®Þnh nghÜa lµ tÊt c¶ nh÷ng g× ®-îc m¸y tÝnh xö lý. C¸c kiÓu d÷ liÖu cÇn tíi m¸y tÝnh xö lý cã rÊt nhiÒu, tån t¹i d-íi nhiÒu d¹ng kh¸c nhau vÒ b¶n chÊt, ý nghÜa, kh«ng chỉ lµ sè liÖu mµ cßn lµ c¸c kÝ tù, c¸c mÖnh ®Ò logic thÓ hiÖn qua c¸c ®èi t-îng cô thÓ cÇn xö lý nh- tiÒn l-¬ng, ®Þa chØ, tªn, tuæi, v¨n b¶n, tÝn hiÖu. VÒ ph-¬ng diÖn ng«n ng÷ bËc cao th× d÷ liÖu ®· ®-îc kh¸i qu¸t ho¸ víi c¸c kiÓu d÷ liÖu. Mét kiÓu d÷ liÖu (Data Type) ®-îc ®Þnh nghÜa víi hai ®iÓm chÝnh nh- sau: - Mét tËp hîp c¸c gi¸ trÞ mµ mét biÕn thuéc kiÓu ®ã cã thÓ nhËn ®-îc - Trªn ®ã x¸c ®Þnh mét sè phÐp to¸n.
  • 23. CÇn nhí r»ng mét biÕn ph¶i g¾n liÒn víi mét kiÓu d÷ liÖu. Trong Pascal, c¸c kiÓu d÷ liÖu cã thÓ rÊt phøc t¹p song nãi chung ®Òu ®-îc ®Þnh nghÜa ra tõ c¸c kiÓu ®¬n gi¶n nhÊt, kh«ng cã cÊu tróc.
  • 24. 5.2. KiÓu sè nguyªn (Integer type) a. KiÓu sè nguyªn trong Turbo Pascal §-îc ®Þnh nghÜa víi c¸c tõ khãa sau:
  • 25. b. C¸c phÐp to¸n sè häc ®èi víi sè nguyªn
  • 26. 5.3. KiÓu sè thùc (Real type) Cã n¨m kiÓu sè thùc ®-îc tæng kÕt qua b¶ng sau:
  • 27. C¸c gi¸ trÞ thùc ®-îc biÓu diÔn theo hai c¸ch: d¹ng dÊu phÈy tÜnh vµ d¹ng dÊu phÈy ®éng.  C¸ch viÕt sè thùc theo d¹ng dÊu phÈy tÜnh: viÕt d¹ng thËp ph©n b×nh th-êng. VÝ dô: 2.14, +5.0, -25.345678, 0.0006  C¸ch viÕt sè thùc theo d¹ng dÊu phÈy ®éng: sè ®-îc t¸ch thµnh hai phÇn lµ ®Þnh trÞ vµ bËc. PhÇn ®Þnh trÞ lµ mét sè nguyªn hay sè thùc viÕt d-íi d¹ng dÊu phÈy tÜnh.PhÇn bËc lµ mét sè nguyªn.Hai phÇn c¸ch nhau bëi ch÷ E hay e. VÝ dô: 123.456E-4: biÓu diÔn sè 0.0123456 0.15E+5: biÓu diÔn sè 15000.0 5E8: biÓu diÔn 500000000.0 -55.3e2: biÓu diÔn -5530.0 C¸c ký tù biÓu diÔn mét sè thùc ph¶i viÕt liÒn nhau. C¸c phÐp to¸n sè häc c¬ b¶n +, -, * , / ®-îc sö dông trong kiÓu real. Chó ý: Riªng phÐp to¸n DIV vµ MOD kh«ng thùc hiÖn ®èi víi kiÓu sè thùc
  • 28. B¶ng d-íi ®©y lµ c¸c hµm sè häc cho kiÓu sè thùc:
  • 29. 5.4. KiÓu logic (Boolean) Mét d÷ liÖu thuéc kiÓu BOOLEAN lµ mét ®¹i l-îng ®-îc chøa trong 1 byte ë Turbo Pascal vµ chØ cã thÓ nhËn ®-îc mét trong hai gi¸ trÞ logic lµ TRUE (®óng) vµ FALSE (sai). Qui -íc:TRUE > FALSE C¸c phÐp to¸n trªn kiÓu Boolean:
  • 30. NhËn xÐt: + PhÐp AND (vµ) chØ cho kÕt qu¶ lµ TRUE khi c¶ 2 to¸n h¹ng lµ TRUE + PhÐp OR (hoÆc) chØ cho kÕt qu¶ lµ FALSE khi c¶ 2 to¸n h¹ng lµ FALSE + PhÐp XOR (hoÆc triÖt tiªu) lu«n cho kÕt qu¶ lµ TRUE khi c¶ 2 to¸n h¹ng lµ kh¸c nhau vµ ng-îc l¹i. C¸c phÐp to¸n quan hÖ cho kÕt qu¶ kiÓu Boolean:
  • 31. 5.5. KiÓu ký tù (Char type) TÊt c¶ c¸c d÷ liÖu viÕt ë d¹ng ch÷ ký tù ®-îc khai b¸o bëi tõ khãa CHAR. Mét ký tù ®-îc viÕt trong hai dÊu nh¸y ®¬n ‘ ‘. §Ó tiÖn trao ®æi th«ng tin cÇn ph¶i s¾p xÕp, ®¸nh sè c¸c ký tù, mçi c¸ch s¾p xÕp nh- vËy gäi lµ b¶ng m·. B¶ng m· th«ng dông hiÖn nay lµ b¶ng m· ASCII . §Ó thùc hiÖn c¸c phÐp to¸n sè häc vµ so s¸nh, ta dùa vµo gi¸ trÞ sè thø tù m· ASCII cña tõng ký tù, ch¼ng h¹n: 'A' < 'a' v× sè thø tù m· ASCII t-¬ng øng lµ 65 vµ 97. Trong Turbo Pascal mçi ký tù ®-îc chøa trong 1 byte. C¸c hµm chuÈn liªn quan ®Õn kiÓu ký tù:
  • 32. VI. Khai b¸o biÕn, h»ng, kiÓu vµ biÓu thøc 6.1. H»ng (constant) a. §Þnh nghÜa H»ng lµ mét ®¹i l-îng cã gi¸ trÞ kh«ng ®æi trong qu¸ tr×nh ch¹y ch-¬ng tr×nh. Ta dïng tªn h»ng ®Ó ch-¬ng tr×nh ®-îc râ rµng vµ dÔ söa ®æi. b. C¸ch khai b¸o CONST <Tªn h»ng> = <gi¸ trÞ cña h»ng> ; VÝ dô CONST Siso = 100; X = ‘xxx ‘; 6.2. BiÕn (variable) a. §Þnh nghÜa BiÕn lµ mét cÊu tróc ghi nhí cã tªn (®ã lµ tªn biÕn hay danh hiÖu cña biÕn). BiÕn ghi nhí mét d÷ liÖu nµo ®ã gäi lµ gi¸ trÞ (value) cña biÕn. Gi¸ trÞ cña biÕn cã thÓ ®-îc biÕn ®æi trong thêi gian sö dông biÕn. Sù truy xuÊt cña biÕn nghÜa lµ ®äc gi¸ trÞ hay thay ®æi gi¸ trÞ cña biÕn ®-îc thùc hiÖn th«ng qua tªn biÕn. VÝ dô : Readln (x) ; Writeln (x) ;
  • 33. VI. Khai b¸o biÕn, h»ng, kiÓu vµ biÓu thøc 6.1. H»ng (constant) 6.2. BiÕn (variable) a. §Þnh nghÜa BiÕn lµ mét ®¹i l-îng mµ gi¸ trÞ cña nã cã thÓ thay ®æi nhiÒu lÇn trong ch-¬ng tr×nh. Tªn biÕn lµ tªn cña « nhí cÊt gi÷ d÷ liÖu VÝ dô : Readln (x) ; Writeln (x) ; x := 9 ; BiÕn lµ mét cÊu tróc ghi nhí d÷ liÖu v× vËy nã ph¶i tu©n theo qui ®Þnh cña kiÓu d÷ liÖu : mét biÕn ph¶i thuéc mét kiÓu d÷ liÖu nhÊt ®Þnh. b. C¸ch khai b¸o VAR <Tªn biÕn> : <KiÓu biÕn> ; VÝ dô : VAR a : Real ; b, c : Integer ; TEN : String [20]; X : Boolean ; Chon : Char ; CÇn khai b¸o c¸c biÕn tr-íc khi sö dông chóng trong ch-¬ng tr×nh. Khai b¸o mét biÕn lµ khai b¸o sù tån t¹i cña biÕn ®ã vµ cho biÕt nã thuéc kiÓu g×.
  • 34. VI. Khai b¸o biÕn, h»ng, kiÓu vµ biÓu thøc 6.1. H»ng (constant) 6.2. BiÕn (variable) 6.3. KiÓu (Type) a. §Þnh nghÜa Ngoµi c¸c kiÓu ®· ®Þnh s½n, Pascal cßn cho phÐp ta ®Þnh nghÜa c¸c kiÓu d÷ liÖu kh¸c tõ c¸c kiÓu c¨n b¶n theo qui t¾c x©y dùng cña Pascal. b. C¸ch khai b¸o TYPE <Tªn kiÓu> = <M« t¶ x©y dùng kiÓu>; VÝ dô : TYPE SoNguyen = Integer ; Diem = Real; Tuoi = 1 .. 100 ; Color = (Red, Blue, Green) ; Thu = (Sun, Mon, Tue, Wed, Thu, Fri, Sat) ; khi ®· khai b¸o kiÓu g× th× ta cã quyÒn sö dông ®Ó khai b¸o biÕn nh- ë vÝ dô sau: VÝ dô : VAR i, j : SoNguyen ; Dtb : Diem ; T : tuoi ; Mau : Color ; Ngay_hoc : Thu;
  • 35. VI. Khai b¸o biÕn, h»ng, kiÓu vµ biÓu thøc 6.4. BiÓu thøc (Expression) a. §Þnh nghÜa Mét biÓu thøc lµ mét c«ng thøc tÝnh to¸n bao gåm c¸c phÐp to¸n, h»ng, biÕn, hµm vµ c¸c dÊu ngoÆc. VÝ dô : 5 + A * SQRT(B) / SIN(X) (A AND B) OR C b. Thø tù -u tiªn Khi tÝnh gi¸ trÞ cña mét biÓu thøc, ng«n ng÷ Pascal qui -íc thø tù -u tiªn cña c¸c phÐp to¸n tõ cao ®Õn thÊp nh- sau: Møc -u tiªn: C¸c phÐp to¸n: 1. BiÓu thøc trong ngoÆc ®¬n ( ) 2. PhÐp gäi hµm 3. Not, - 4. *, /, DIV, MOD, AND 5. +, -, OR, XOR 6. =, <>, <=, >=, <, >, IN VÝ dô : (4+5)/3 + 6 - (sin((/2)+3)*2 = (9)/3 + 6 - (1+3)*2 = 3 + 6 - 8 = 1
  • 36. VI. Khai b¸o biÕn, h»ng, kiÓu vµ biÓu thøc 6.4. BiÓu thøc (Expression) c. Qui -íc tÝnh thø tù -u tiªn Khi tÝnh mét biÓu thøc cã 3 qui t¾c vÒ thø tù -u tiªn nh- sau: Qui t¾c 1 : C¸c phÐp to¸n nµo cã -u tiªn cao h¬n sÏ ®-îc tÝnh tr-íc. Qui t¾c 2 : Trong c¸c phÐp to¸n cã cïng thø tù -u tiªn th× sù tÝnh to¸n sÏ ®-îc thùc hiÖn tõ tr¸i sang ph¶i. Qui t¾c 3 : PhÇn trong ngoÆc tõ trong ra ngoµi ®-îc tÝnh to¸n ®Ó trë thµnh mét gi¸ trÞ ®¬n. d. KiÓu cña biÓu thøc Lµ kiÓu cña kÕt qu¶ sau khi tÝnh biÓu thøc. VÝ dô : BiÓu thøc sau ®-îc gäi lµ biÓu thøc Boolean: not (('a'>'c') and ('c'>'C')) or ('B'='b') cã gi¸ trÞ TRUE
  • 37. VII. C¸c thñ tôc nhËp/xuÊt 7.1.C©u lÖnh (statement) + Trong mét ch-¬ng tr×nh Pascal, sau phÇn m« t¶ d÷ liÖu lµ phÇn m« t¶ c¸c c©u lÖnh. C¸c c©u lÖnh cã nhiÖm vô x¸c ®Þnh c¸c c«ng viÖc mµ m¸y tÝnh ph¶i thùc hiÖn ®Ó xö lý c¸c d÷ liÖu ®· ®-îc m« t¶ vµ khai b¸o. + C©u lÖnh ®-îc chia thµnh c©u lÖnh ®¬n gi¶n vµ c©u lÖnh cã cÊu tróc. - C©u lÖnh ®¬n gi¶n + Vµo d÷ liÖu : Read, Readln + Ra d÷ liÖu : Write, Writeln + LÖnh g¸n : := + Lêi gäi ch-¬ng tr×nh con (gäi trùc tiÕp tªn cña ch-¬ng tr×nh con) + Xö lý tËp tin : RESET, REWRITE, ASSIGN ... - C©u lÖnh cã cÊu tróc + LÖnh ghÐp : BEGIN .. END + LÖnh chän : IF .. THEN .. ELSE CASE .. OF . + LÖnh lÆp : FOR .. TO .. DO REPEAT .. UNTIL WHILE .. DO + C¸c c©u lÖnh ph¶i ®-îc ng¨n c¸ch víi nhau bëi dÊu chÊm phÈy ( ; ) vµ c¸c c©u lÖnh cã thÓ viÕt trªn mét dßng hay nhiÒu dßng.
  • 38. 7.2. CÊu tróc tuÇn tù a. LÖnh g¸n (Assignment statement) Mét trong c¸c lÖnh ®¬n gi¶n vµ c¬ b¶n nhÊt cña Pascal lµ lÖnh g¸n. Môc ®Ých cña lÖnh nµy lµ g¸n cho mét biÕn ®· khai b¸o mét gi¸ trÞ nµo ®ã cïng kiÓu víi biÕn. C¸ch viÕt: <Tªn_biÕn> := <biÓu thøc> ; VÝ dô : VAR c : Char ; i,j : Integer ; x, y : Real ; p, q : Boolean ; th× ta cã thÓ cã c¸c phÐp g¸n sau : c := ‘A’ ; c := Chr(90) ; i := (35+7)*2 mod 4 ; i := i div 7 ; x := 0.5 ; q := i > 2*j +1 ; q := not p ; ý nghÜa: PhÐp g¸n cã ý nghÜa - L-u tr÷ c¸c gi¸ trÞ kh¸c nhau vµo mét « nhí t¹i nh÷ng thêi ®iÓm kh¸c nhau. - Mét qu¸ tr×nh tÝnh to¸n cã thÓ coi nh- lµ mét qu¸ tr×nh lµm thay ®æi gi¸
  • 39. b. LÖnh ghÐp (Compound statement) Mét nhãm c©u lÖnh ®¬n ®-îc ®Æt gi÷a 2 ch÷ BEGIN vµ END sÏ t¹o thµnh mét c©u lÖnh ghÐp.
  • 40. Bµi tËp 1. TÝnh gi¸ trÞ cña c¸c biÓu thøc d-íi ®©y: (‘d’>‘g’) and (18 div 4 * 4 >125) = (True<False) or (‘a’ <‘c’) = round(-72.315)= 2. Cho biÕt S thuéc kiÓu g× biÕt r»ng n lµ mét biÕn kiÓu Shortint vµ trong ch-¬ng tr×nh cã lÖnh g¸n: S:=n(n-1)/2; 3. BiÕt r»ng trong ch-¬ng tr×nh cã mét lÖnh g¸n: i:=n mod 4 Hái n cã thÓ khai b¸o kiÓu real ®-îc kh«ng? 4. BiÕt r»ng trong ch-¬ng tr×nh cã sö dông mét lÖnh g¸n i:=ORD(n). H·y x¸c ®Þnh c¸c kiÓu cã thÓ sö dông ®-îc trong khai b¸o cña n 5. BiÕt r»ng S1 vµ S2 lµ hai biÕn kiÓu Byte vµ trong ch-¬ng tr×nh cã lÖnh g¸n S:=S1+S2. X¸c ®Þnh kiÓu khai b¸o ®óng nhÊt cña S 6. BiÕt r»ng n lµ mét biÕn kiÓu Byte vµ trong ch-¬ng tr×nh cã lÖnh g¸n S:=n*(n+1). Hái S cã thÓ nhËn c¸c kiÓu khai b¸o nµo? 7. BiÕt r»ng trong ch-¬ng tr×nh cã mét lÖnh g¸n: i:=ORD(n). Hái kiÓu cña i cã thÓ lµ kiÓu sè thùc ®-îc kh«ng? 8. BiÕt r»ng trong ch-¬ng tr×nh cã sö dông lÖnh g¸n i:=n MOD 4. Hái kiÓu cña n cã thÓ lµ real ®-îc kh«ng
  • 41. 9. BiÕt r»ng n lµ mét biÕn kiÓu Integer vµ trong ch-¬ng tr×nh cã sö dông lÖnh g¸n S:=n*(n+1)/2. Hái kiÓu cña S cã thÓ trïng víi kiÓu cña n ®-îc hay kh«ng? 10. BiÕt n lµ mét biÕn kiÓu Integer vµ S:=n*n. Hái biÕn i cã thÓ khai b¸o kiÓu Integer ®-îc kh«ng nÕu g¸n i:=SQRT(S) 11. BiÕt r»ng n lµ mét biÕn kiÓu integer vµ S:=n*(n div (trunc (n/2))). Hái S cã thÓ nhËn gi¸ trÞ kiÓu Integer ®-îc Khoanh vµo c©u tr¶ lêi ®óng a) Cho ®o¹n khai b¸o biÕn b) kh«ng? 12. sau: BiÓu thøc 25 div 3 + 5/2*3 cã gi¸ trÞ Var m,n: integer; lµ? X,y: real; a. 8.0 Khoanh vµo c©u tr¶ lêi sai b. 15.5 a. m: =-4; c. 9.5 b. n: =3.5; d. 15.0 c) Khoanh vµo c©u tr¶ lêi ®óng c. x:=6; Trong ch-¬ng tr×nh cã lÖnh X:=(100 d. y:=11.5; > 76) and (‘B’< ‘A’); X¸c ®Þnh kiÓu cña X a. KiÓu sè nguyªn. b. KiÓu sè thùc. c. KiÓu logic. d. KiÓu ký tù.
  • 42. Ch-¬ng 3: Thñ tôc vµo - ra d÷ liÖu I. Thñ tôc viÕt d÷ liÖu ra mµn h×nh §Ó viÕt d÷ liÖu ra mµn h×nh, Pascal cã 3 mÉu viÕt nh- sau: Write (Item 1, item 2, ..., item n); Writeln (Item 1, item 2, ..., item n); Writeln; Trong ®ã item 1, item 2, .. item n lµ c¸c môc cÇn viÕt ra, cã thÓ lµ 1 trong c¸c lo¹i sau: - biÕn Write (A). - hµm Write (sin(x)); - biÓu thøc Write (B*B-4*a*c); - h»ng Write (PI); Mµn h×nh th«ng dông nhÊt hiÖn nay cña m¸y vi tÝnh ®-îc ph©n thµnh 25 dßng ch÷, mçi dßng cã thÓ viÕt 80 kÝ tù. T¹i mçi thêi diÓm, mµn h×nh cã mét vÞ trÝ lµm viÖc thÓ hiÖn ra d-íi d¹ng mét khèi s¸ng nhÊp nh¸y hoÆc mét nÐt g¹ch nhÊp nh¸y gäi lµ con trá mµn h×nh hay dÊu nh¾c (cursor).
  • 43. II. ViÕt ra kiÓu sè nguyªn: Cho sè nguyªn i 2.1. C¸ch viÕt kh«ng qui c¸ch Write(i); hoÆc Writeln(i); 2.2. C¸ch viÕt cã qui c¸ch Write(i:n); hoÆc Writeln(i:n); Ta cã thÓ bè trÝ sè chç cè ®Þnh ®Ó viÕt sè nguyªn b»ng c¸ch thªm dÊu hai chÊm (:) theo sau lµ sè chç ®Ó viÕt. M¸y sÏ bè trÝ sè nguyªn tõ phÝa bªn ph¶i qua bªn tr¸i. NÕu thõa chç nã sÏ ®Ó tr¾ng ë bªn tr¸i. VÝ dô 6.1 §o¹n ch-¬ng tr×nh VÝ dô 6.2: sau: VAR VAR I: integer; I: integer; BEGIN BEGIN I:=123; I:=123; Writeln (I:8); Writeln (I); Writeln (-34567:8); Writeln (-34567); END. END. SÏ viÕt ra trªn mµn h×nh: SÏ in ra mµn h×nh: 123 123 -34567 -34567
  • 44. III. ViÕt ra kiÓu sè thùc: Víi R lµ mét biÕn thùc: VAR R: Real; 3.1. C¸ch viÕt kh«ng qui c¸ch C¸ch viÕt kh«ng qui c¸ch Write (R) hoÆc Writeln (R) sÏ viÕt ra gi¸ trÞ cña R theo c¸ch biÓu diÔn dÊu phÈy ®éng. 3.2. C¸ch viÕt cã qui c¸ch cña sè thùc R R: m:n hoÆc R: e trong ®ã: m: sè chç cho c¶ sè thùc n: sè chç cho phÇn thËp ph©n e: sè chç cho c¶ sè thùc viÕt d-íi d¹ng biÓu diÔn dÊu VÝ dô ®éng ch-¬ng tr×nh sau: phÈy 3: §o¹n VÝ dô 4: R:=123.456; Writeln (123.456:12:6); Writeln (R); Writeln Write (3.14); (13.123456789:12:6); SÏ cã kÕt qu¶ trªn mµn h×nh nh- Write (3.14:12:6); sau: sÏ cho ra kÕt qu¶: 1.2345600000E+02 13.123457 3.1400000000E+00 123.456000 VÝ dô 5: Write (13.123456789:12); 3.140000 sÏ cho ra kÕt qu¶: 1.312346E+01
  • 45. IV. KiÓu kÝ tù VAR Ch: Char; 4.1. C¸ch viÕt kh«ng qui c¸ch Write(ch); hoÆc Writeln(ch); Víi c¸ch viÕt kh«ng qui c¸ch, m¸y sÏ viÕt ra c¸c kÝ tù mét c¸ch b×nh th-êng nghÜa lµ mçi kÝ tù chiÕm mét chç. 4.2. C¸ch viÕt cã qui c¸ch Write(ch:n); hoÆc Writeln(ch:n); VÝ dô 6: VÝ dô 7: Writeln ('ABC'); Writeln ('ABC':5); Ch:='Y'; Ch:='Y'; Writeln (ch); Writeln (ch:5); SÏ cho ra kÕt qu¶: SÏ cho kÕt qu¶ sau: ABC ABC Y Y
  • 46. V. KiÓu Boolean KiÓu Boolean ®-îc viÕt ra víi c¸c tõ TRUE vµ FALSE. Ta còng cã thÓ qui ®Þnh sè chç ®Ó viÕt c¸c tõ nµy. VÝ dô 8: VAR OK: Boolean; BEGIN OK:=3<5; Writeln (OK); (*C¸ch viÕt kh«ng cã qui c¸ch*) Writeln (OK:8); (* C¸ch viÕt cã qui c¸ch *) END. SÏ cho ra kÕt qu¶: TRUE TRUE
  • 47. VI. §-a d÷ liÖu ra m¸y in C¸c lÖnh Write vµ Writeln trong c¸c vÝ dô trªn ®-îc dïng ®Ó viÕt ra trªn mµn h×nh. Trong Turbo Pascal, viÖc ®-a d÷ liÖu ra m¸y in còng ®-îc dïng víi c¸c lÖnh Write vµ Writeln b»ng c¸ch thªm tõ Lst vµ dÊu phÈy vµo tr-íc c¸c biÕn cÇn in ra: VÝ dô: Writeln (Lst, I:5, J:8, R:12:5, OK); Trong tr-êng hîp cÇn ®-a d÷ liÖu ra m¸y in, ch-¬ng tr×nh ph¶i cã khai b¸o sö dông Unit Printer: USES Printer; VII. C¸c thñ tôc tr×nh bµy mµn h×nh Mét sè thñ tôc c¬ b¶n vµ ®-îc dïng th-êng xuyªn cña Turbo Pascal ®Ó tr×nh bµy mµn h×nh ®-îc nªu ra d-íi ®©y. Tr-íc khi sö dông c¸c thñ tôc tr×nh bµy mµn h×nh ph¶i khai b¸o sö dông Unit Crt ë phÇn ®Çu ch-¬ng tr×nh: USES CRT; Víi CRT lµ Unit chøa c¸c thñ tôc tr×nh bµy mµn h×nh
  • 48. 7.1. Thñ tôc Gotoxy(X,Y); {X,Y: integer} Lµ thñ tôc ®Æt con trá vµo to¹ ®é x,y cña mµn h×nh. To¹ ®é x lµ to¹ ®é cét cã gi¸ trÞ tõ 1 ®Õn 80. To¹ ®é y lµ to¹ ®é dßng tÝnh tõ 1 ®Õn 25. VÝ dô: Gotoxy (10,4) sÏ ®-a con trá ®Õn vÞ trÝ hµng 4, cét 10 trªn mµn h×nh. 7.2. Thñ tôc xo¸ mµn h×nh (Clsscr); Clrscr (Clear Screen) lµ thñ tôc xo¸ toµn bé mµn h×nh. Sau khi xo¸ con trá ®-îc ®Æt ë vÞ trÝ 0,0 (tøc lµ gãc trªn bªn tr¸i). ClrEol; (Clear end of Line) lµ thñ tôc ®Ó xo¸ tõ vÞ trÝ con trá ®Õn cuèi dßng. 7.3. Thñ tôc chän mµu kÝ tù: Text Color Khai b¸o: Procedure TextColor(Color) M« t¶: Lùa chän mµu kÝ tù Color lµ mét biÓu thøc nguyªn n»m trong kho¶ng tõ 0 ®Õn 15 t-¬ng øng víi mét trong c¸c h»ng sè mµu ®· ®-îc ®Þnh nghÜa trong CRT Unit. Trong Unit Crt ®· ®Þnh nghÜa s½n c¸c mµu víi gi¸ trÞ h»ng nh- sau:
  • 49. Cã thÓ viÕt tªn mµu hoÆc viÕt gi¸ trÞ t-¬ng øng cña mµu. NÕu muèn t¹o nhÊp nh¸y h·y céng thªm 128 vµo gi¸ trÞ cña mµu Nh÷ng mµu v¨n b¶n ®-îc biÓu diÔn b»ng c¸c sè gi÷a kho¶ng 0 tíi 15 ®Ó nhËn d¹ng mét c¸ch dÔ dµng. Cã thÓ dïng tªn c¸c mµu hoÆc gi¸ trÞ sè cña chóng. Trong chÕ ®é v¨n b¶n mÇu, mÇu kÝ tù ®-îc chän tõ 16 mµu cßn mµu nÒn tõ 8 mµu. 7.4. Thñ tôc ®æi mµu nÒn Khai b¸o: Procedure TextBackground(Color) M« t¶: Chän mµu nÒn trong ®ã Color lµ mét biÓu thøc nguyªn cã gi¸ trÞ tõ 0 ®Õn 7 t-¬ng øng víi 1 trong 8 h»ng sè mµu ®Çu tiªn cña b¶ng. VÝ dô 9: ViÕt ra mµn h×nh ch÷ Pascal ®Çu tiªn b¾t ®Çu tõ to¹ ®é X=10, Y=2 víi mµu ®á, xanh l¸ c©y, xanh l¬ s¸ng, vµng t-¬ng øng. Trong ®ã ch÷ Pascal mÇu xanh l¬ s¸ng nhÊp nh¸y.
  • 50. PROGRAM Viet_Thu; USER Crt; VAR X, Y: integer; BEGIN TextBackGround(White); (* §Æt mµu nÒn cho toµn bé mµn h×nh*) ClrScr; (* Xo¸ mµn h×nh tr-íc khi ch¹y ch-¬ng tr×nh *) X:=10; Y:=2; GotoXY(X,Y); TextColor(Red); Write('PASCAL'); Gotoxy(X-4,Y+1); TextColor(Green);Write('PASCAL'); Gotoxy(X+2,Y+2); TextColor(LightBlue+Blink); Write ('PASCAL'); Gotoxy(X,y+3); Textcolor(14); Write ('PASCAL'); GotoXY(X,Y+3); END.
  • 51. VIII. Thñ tôc vµo d÷ liÖu Read vµ Readln 8.1. Thñ tôc vµo d÷ liÖu PhÐp g¸n lµ lÖnh c¬ b¶n, ®¬n gi¶n nhÊt ®Ó g¸n gi¸ trÞ cho mét biÕn trong ch-¬ng tr×nh. Tuy nhiªn ®Ó g¸n gi¸ trÞ cho mét biÕn th«ng qua thiÕt bÞ vµo chuÈn lµ bµn phÝm ta dïng c¸c lÖnh sau: Read (biÕn 1, biÕn 2,... biÕn n); Readln (biÕn 1, biÕn 2, ..., biÕn n); Readln ; VÝ dô 6.11: VAR A, B, C: real; delta:real; BEGIN Read (A,B,C); Readln(delta); ..... END. Trong khi ®äc, thñ tôc Read vµ Readln cßn kiÓm tra xem d÷ liÖu gâ vµo cã t-¬ng thÝch víi kiÓu d÷ liÖu ®· khai b¸o cña biÕn hay kh«ng.
  • 52. 8.2. KÕt hîp gi÷a Write vµ Readln ®Ó vµo d÷ liÖu C¸c thñ tôc Read vµ Readln ®· tr×nh bµy ë trªn cã mét nh-îc ®iÓm lµ kh«ng chØ dÉn cho ng-êi sö dông biÕt biÕn nµo ®ang ®-îc nhËp gi¸ trÞ. V× vËy ta cã thÓ kÕt hîp víi thñ tôc Write ®Ó c«ng viÖc ®-îc s¸ng sña. VÝ dô 12: VAR A, B, C: real; delta:real; BEGIN Write ('nhËp gi¸ trÞ cho c¸c biÕn A, B, C: '); Readln (A,B,C); Write ('delta = '); Readln(delta); Cã thÓ nhËp gi¸ trÞ cho tõng biÕn A, B, C nh- sau: Write ('A= '); Readln(A); Write ('B= '); Readln(B); Write ('C= '); Readln(C); … END;
  • 53. Bµi tËp 1. KÕt qu¶ thÓ hiÖn trªn mµn h×nh nh- thÕ nµo sau c¸c lÖnh sau: I:=2.00; Writeln(i); 2. BiÕt r»ng biÕn i ®-îc khai b¸o kiÓu integer. H·y viÕt kÕt qu¶ ®-îc thÓ hiÖn trªn mµn h×nh sau c¸c lÖnh: I:=3; Write (i); Readln; Write(i+3); 3. BiÕt r»ng biÕn i ®-îc khai b¸o kiÓu real vµ i:=3. Hái cã bao nhiªu ký tù tr¾ng ®-îc sö dông trong biÓu diÔn cña i víi lÖnh Write(i:10:2); 4. BiÕt r»ng i:=3.4. Hái lÖnh Writeln(i:5) sÏ thÓ hiÖn gi¸ trÞ cña biÕn i trªn mµn h×nh nh- thÕ nµo? 5. BiÕt r»ng i:=FALSE. Hái cã bao nhiªu ký tù tr¾ng ®-îc sö dông trong biÓu diÔn cña i víi lÖnh Write(i:8); 6. KÕt qu¶ thÓ hiÖn trªn mµn h×nh nh- thÕ nµo sau c¸c lÖnh: Write(‘18+12’); Write(18+12); 7. KÕt qu¶ thÓ hiÖn trªn mµn h×nh nh- thÕ nµo sau lÖnh: Write(4/2); 8. To¹ ®é con trá lµ bao nhiªu khi thùc hiÖn xong c¸c lÖnh sau: Gotoxy(12,10); Write(‘123’); Readln; Writeln(‘123’); 9. To¹ ®é con trá lµ bao nhiªu khi thùc hiÖn xong c¸c lÖnh sau: Gotoxy(5,5); Write(‘123’); ClrScr;Readln; Writeln(‘123’);
  • 54. 10. ViÕt ch-¬ng tr×nh tÝnh l-¬ng cña mét nh©n viªn. Yªu cÇu: NhËp vµo møc l-¬ng c¬ b¶n cña nh©n viªn, sè ngµy nghØ lµm viÖc trong th¸ng. In ra tiÒn l-¬ng cña nh©n viªn ®ã, biÕt r»ng: TiÒn l-¬ng = L-¬ng + Phô cÊp L-¬ng = (L-¬ng hÖ sè+Phô cÊp)*(26-sè ngµy nghØ) L-¬ng hÖ sè = Møc l-¬ng c¬ b¶n * 22500 Phô cÊp = L-¬ng hÖ sè * 10% 11. Khoanh vµo c©u tr¶ lêi ®óng gi¸ trÞ cña biÕn T sau khi thùc hiÖn ®o¹n ch-¬ng tr×nh sau: a) x:=5; y:=x*x; x:=x*y; T:=x=100; T=? a. 25 b. 26 c. 27 d. 28 b) x:=2; y:=3; x:=x+y; y:=2*y+sqr(x); T:=x+y; T=? a. 35 b. 36 c. 37 d. 38
  • 55. c) Khoanh vµo c©u tr¶ lêi ®óng gi¸ trÞ cña biÕn T sau khi thùc hiÖn ®o¹n ch-¬ng tr×nh sau: T:=(18 MOD 4) DIV 1; T=? a. 3 b. 5 c. 2 d. 1 d) x:=3; y:=4; T:=(x > y) OR (SQRT(x)>SQR(y)); T=? a. 5 b. 10 c. True d. False e) x:=5; T:=(Sqr(x)>20) And (x>0); T= ? a. 7 b. 8 c. True d. False
  • 56. Ch-¬ng 8: C¸c lÖnh cã cÊu tróc trong pascal I. CÊu tróc lùa chän 1.1. C©u lÖnh IF Pascal cung cÊp cho ng-êi lËp tr×nh hai mÉu c©u lÖnh IF víi d¹ng lÖnh vµ l-u ®å nh- sau: NÕu biÓu thøc Boolean cã gi¸ trÞ TRUE th× m¸y sÏ thùc hiÖn c«ng viÖc 1. NÕu kh«ng th× kÕt thóc c©u lÖnh ®èi víi mÉu thø nhÊt hoÆc m¸y sÏ thùc hiÖn viÖc 2 ®èi víi mÉu lÖnh thø 2 Chó ý: - Tr-íc Else kh«ng cã dÊu chÊm phÈy - NÕu <ViÖc 1> hoÆc <ViÖc 2> gåm tõ 2 c©u lÖnh trë lªn th× ph¶i ®Æt chóng trong c©u lÖnh ghÐp Begin .. End;
  • 57. VÝ dô 1: §Ó thùc hiÖn phÐp chia hai sè a cho b víi ®iÒu kiÖn b<>0 ta viÕt nh- sau: IF b<>0 THEN T:=a/b ELSE Writeln (‘Khong chia duoc’); VÝ dô 2: T×m gi¸ trÞ lín nhÊt, nhá nhÊt cña 2 sè a, b IF a<b THEN BEGIN Max:=b; Min:=a; END ELSE BEGIN Max :=a; Min :=b; END;
  • 58. VÝ dô 3: TÝnh c¨n bËc 2 cña mét sè ? PROGRAM Tinh_can_bac_hai ; VAR a , cb2: Real ; BEGIN Write (‘ Nhap a = ‘) ; Readln(a) ; IF a < 0 THEN Write ('a la so am nen khong lay duoc can') ELSE Cb2:=sqrt(a); Writeln ('Can bac hai cua a la’, cb2:3:2); Writeln (' Nhan ENTER de thoat ') ; Readln; {Dõng mµn h×nh ®Ó xem kÕt qu¶} END.
  • 59. 1.2. C©u lÖnh CASE Hai mÉu c©u lÖnh IF ë trªn chØ thùc hiÖn lùa chän mét trong hai nh¸nh t-¬ng øng víi gi¸ trÞ cña biÓu thøc Boolean. ViÖc thö vµ chän mét trong nhiÒu nh¸nh sÏ ®-îc thùc hiÖn víi c©u lÖnh CASE. Có ph¸p: MÉu 1: D¹ng kh«ng ®Çy ®ñ MÉu 2: D¹ng ®Çy ®ñ CASE <biÓu thøc> OF CASE <biÓu thøc> OF TËp_H»ng1: <LÖnh 1>; TËp_H»ng1: <LÖnh 1>; TËp_H»ng2: <LÖnh 2>; TËp_H»ng2: <LÖnh 2>; ..... ..... TËp_H»ngN: <LÖnh N>; TËp_H»ngN: <LÖnh N> END; ELSE < LÖnh N+1>; END; Trong ®ã gi¸ trÞ cña <BiÓu thøc> vµ gi¸ trÞ cña TËp_h»ng ph¶i cã cïng kiÓu vµ ph¶i lµ kiÓu v« h-íng ®Õm ®-îc (nh-: nguyªn, logic, ký tù, liÖt kª).
  • 60. Sù thùc hiÖn cña lÖnh CASE .. OF phô thuéc vµo gi¸ trÞ cña <BiÓu thøc>: - NÕu tËp_h»ng_i lµ tËp ®Çu tiªn chøa gi¸ trÞ cña <BiÓu thøc> th× m¸y thùc hiÖn <lÖnh i>, sau ®ã tho¸t khái CASE .. OF. - Trong tr-êng hîp kh«ng cã tËp_h»ng_i nµo chøa gi¸ trÞ cña <BiÓu thøc> th×: khi kh«ng cã ELSE m¸y tho¸t ngay ra khái CASE .. OF, khi cã ELSE m¸y thùc hiÖn <LÖnh N+1> råi míi tho¸t khái CASE .. OF. Chó ý: lÖnh CASE bao giê còng kÕt thóc b»ng tõ kho¸ END.
  • 61. VÝ dô 4: Ch-¬ng tr×nh tÝnh sè ngµy cña mét th¸ng: VAR So_ngay, thang, nam: integer; BEGIN Write ('Thang: '); Readln(Thang); Write ('Nam: '); Readln (Nam); CASE Thang OF 4,6,9,11:So_ngay:=30; 2: CASE Nam MOD 4 OF 0: So_ngay:=29; 1,2,3: So_ngay:=28; END; 1,3,5,7,8,10,12: So_ngay:=31; END; Writeln ('So ngay cua thang',Thang,'Nam',Nam,'la',So_ngay); END.
  • 62. VÝ dô 5: ViÕt ch-¬ng tr×nh chän mµu PROGRAM Chon_mau ; VAR color : char ; BEGIN Write (' Chon mau theo mot trong 3 ky tu dau la R/ W/ B ') ; Readln (color) ; CASE color OF 'R' ,'r' : write (' RED = mau do ') ; 'W', 'w' : write (' WHITE = mau trang ') ; 'B' , 'b' : write (' BLUE = mau xanh duong ') ; END ; Readln; END.
  • 63. II. CÊu tróc lÆp 2.1 C©u lÖnh FOR FOR BiÕn_®iÒu_khiÓn := Gi¸_trÞ_®Çu TO Gi¸_trÞ_cuèi DO <viÖc>; Trong mÉu trªn, kiÓu cña biÕn ®iÒu khiÓn, gi¸ trÞ ®Çu, gi¸ trÞ cuèi lµ kiÓu v« h-íng ®Õm ®-îc. V× vËy, mçi lÇn biÕn ®iÒu khiÓn nhËn gi¸ trÞ míi tiÕp theo, chóng ta ghi mét c¸ch tæng qu¸t: BiÕn_®iÒu_khiÓn:= Succ(BiÕn_®iÒu_khiÓn) FOR BiÕn_®iÒu_khiÓn := Gi¸_trÞ_®Çu DOWNTO Gi¸_trÞ_cuèi DO <viÖc>; Trong mÉu 2 m¸y tÝnh sÏ lµm theo chiÒu ng-îc l¹i tøc lµ theo chiÒu gi¶m dÇn cña biÕn ®iÒu khiÓn: ®Çu tiªn biÕn ®iÒu khiÓn nhËn gi¸ trÞ ban ®Çu vµ sau ®ã thùc hiÖn chu kú lÆp nh- sau: Chõng nµo biÕn ®iÒu khiÕn cßn lín h¬n hoÆc b»ng gi¸ trÞ cuèi th× thùc hiÖn <lÖnh>, sau mçi lÇn thùc hiÖn biÕn ®iÒu khiÓn nhËn gi¸ trÞ tr-íc nã tøc lµ: BiÕn_®iÒu_khiÓn:=Pred(BiÕn_®iÒu_khiÓn)
  • 64. VÝ dô 6: TÝnh tæng c¸c sè nguyªn tõ 50 ®Õn 500. VAR Sum, i:Integer; BEGIN Sum:=0; FOR i:=50 TO 500 DO Sum:=sum+i; (* hoÆc FOR i:=500 DOWNTO 50 DO sum:=sum+i); Writeln ('Tæng = ',SUM); END. Tuy nhiªn trong thùc tÕ th× tæng Sum sÏ lín h¬n 32767 tøc lµ trµn « nhí. V× vËy trong ch-¬ng tr×nh nµy chóng ta cÇn ph¶i khai b¸o kiÓu cña SUM lµ Real th× ch-¬ng tr×nh míi ch¹y ®-îc.
  • 65. VÝ dô 7: ViÕt hai dßng c¸c ch÷ c¸i hoa vµ nhá tõ 'A' ®Õn 'Z' ra mµn h×nh víi qui c¸ch mçi ch÷ chiÕm 2 chç. Sau ®ã lµ mét dßng tr¾ng råi ®Õn hai dßng kÝ tù theo thø tù ng-îc l¹i tøc lµ tõ 'Z' ®Õn 'A' vµ tõ 'z' ®Õn 'a‘ USES Crt; VAR Ch: char; BEGIN ClrScr; FOR Ch:='A' TO 'Z' DO Write(Ch:2); Writeln; FOR Ch:='a' TO 'z' DO Write (Ch:2); Writeln ; Writeln ; FOR CH:='Z' DOWNTO 'A' DO Write (Ch:2); Writeln ; FOR Ch:='z' DOWNTO 'a' DO Write (Ch:2); Readln; END.
  • 66. 2.2. C©u lÖnh WHILE D¹ng lÖnh: WHILE <biÓu thøc Boolean> DO <c©u lÖnh A>; Vßng lÆp nµy thùc hiÖn lÆp c©u lÖnh A víi ®iÒu kiÖn biÓu thøc Boolean nhËn gi¸ trÞ lµ True. Tr-íc tiªn m¸y sÏ kiÓm tra biÓu thøc Boolean (cßn gäi lµ ®iÒu kiÖn lÆp). NÕu biÓu thøc nµy lµ True, ch-¬ng tr×nh sÏ ®i thùc hiÖn c©u lÖnh A. KÕt thóc c©u lÖnh, ch-¬ng tr×nh sÏ quay l¹i kiÓm tra gi¸ trÞ cña biÓu thøc Boolean. Vßng lÆp kÕt thóc khi biÓu thøc Boolean nhËn gi¸ trÞ b»ng False. Chó ý:  NÕu ph¶i thùc hiÖn lÆp tõ hai c©u lÖnh trë lªn th× c¸c c©u lÖnh nµy ph¶i ®-îc ®Æt trong lÖnh ghÐp Begin..End;  NÕu ®iÒu kiÖn lÆp cã gi¸ trÞ False ngay tõ ®Çu th× vßng lÆp While sÏ
  • 67. 2.3 C©u lÖnh Repeat D¹ng lÖnh: REPEAT <c«ng viÖc> UNTIL <biÓu thøc Boolean> Trong lÖnh REPEAT .. UNTIL m¸y sÏ lÆp ®i lÆp l¹i chu k× sau: thùc hiÖn <c«ng viÖc> cho ®Õn khi <biÓu thøc Boolean> cã gi¸ trÞ TRUE. Gi÷a Repeat vµ Until kh«ng cÇn dïng BEGIN vµ END. Sù kh¸c nhau cña hai vßng lÆp trªn lµ ë chç víi vßng Repeat m¸y sÏ thùc hiÖn c«ng viÖc tr-íc vµ kiÓm tra ®iÒu kiÖn cña biÓu thøc Boolean sau. Cßn trong vßng While m¸y sÏ kiÓm tra biÓu thøc Boolean tr-íc vµ thùc hiÖn c«ng viÖc sau. C¶ hai vßng lÆp ®Òu cã sè lÇn kh«ng x¸c ®Þnh tr-íc. Nh- vËy lµ trong khi thùc hiÖn c«ng viÖc lÆp ta ph¶i cã mét lÖnh lµm thay ®æi gi¸ trÞ mét biÕn n»m trong biÓu thøc Boolean ®Ó thay ®æi gi¸ trÞ biÓu thøc nh»m dõng vßng lÆp l¹i. NÕu kh«ng c¸c vßng lÆp sÏ ch¹y m·i kh«ng dõng.
  • 68. VÝ dô 10: Ch-¬ng tr×nh tÝnh tæng A=1+1/2 +1/3+...+1/n; PROGRAM Tinh_Tong; VAR I, N: integer; A:real; BEGIN Write ('N='); Readln (N); A:=0; I:=1; REPEAT A:=A+1/I; I:=I+1; (* Thay ®æi gi¸ trÞ cña biÓu thøc Boolean *) UNTIL I>N; Writeln ('Tong = ',A:10:8); END. HoÆc dïng vßng lÆp While: A:=0; I:=1; WHILE I<=n DO BEGIN A:=A+1/I; I:=I+1 (* thay ®æi gi¸ trÞ biÓu thøc Boolean *) END;
  • 69. Bµi tËp 1. ViÕt ch-¬ng tr×nh nhËp hä tªn, chØ sè ®iÖn tiªu thô vµ tÝnh tiÒn ®iÖn cho kh¸ch hµng theo qui ®Þnh sau: - §Þnh møc tiªu thô 80KW/th¸ng - Trong ph¹m vi ®Þnh møc th× lÊy gi¸ 200 ®/KW - Sè KW v-ît ®Þnh møc th× tÝnh 350®/KW 2. ViÕt ch-¬ng tr×nh nhËp vµo 3 sè. In ra sè lín nhÊt vµ sè nhá nhÊt trong 3 sè nµy. 3. ViÕt ch-¬ng tr×nh nhËp 3 sè a, b, c. Gi¶i ph-¬ng tr×nh ax+b=c 4. ViÕt ch-¬ng tr×nh gi¶i ph-¬ng tr×nh bËc hai: ax2 + bx + c=0 5. ViÕt ch-¬ng tr×nh nhËp vµo mét sè tiÒn ViÖt vµ tû gi¸ quy ®æi ra USD. In ra mµn h×nh sè l-îng USD t-¬ng øng víi sè tiÒn ®· nhËp. 6. ViÕt ch-¬ng tr×nh nhËp ®iÓm cho mét sinh viªn gåm 3 m«n To¸n, Lý, Hãa. TÝnh ®iÓm trung b×nh (TB) cña sinh viªn nµy vµ in ra: - " XuÊt s¾c" nÕu ®iÓm TB>=9 - " Giái" nÕu 8<=TB<9 -"Kh¸" nÕu 6.5<=TB<8 -"Trung b×nh" nÕu 5<=TB<6.5 -"yÕu" nÕu ®iÓm TB<5
  • 70. 7. ViÕt ch-¬ng tr×nh yªu cÇu ng-êi sö dông nhËp vµo mét ký tù. NÕu ký tù nhËp vµo lµ ‘a’ th× in ra ‘Xin chao cac ban.’; NÕu ký tù nhËp vµo lµ ‘d’ th× in ra ‘Hoan nghenh.’; nÕu nhËp c¸c ký tù kh¸c th× in ra th«ng b¸o:’Xin loi. Hom nay nghi.’ 8. ViÕt ch-¬ng tr×nh nhËp tõ bµn phÝm 3 sè nguyªn a, b, c. Sau ®ã thÓ hiÖn menu sau trªn mµn h×nh vµ yªu cÇu ng-êi sö dông lùa chän 1 gi¸ trÞ. Víi gi¸ trÞ nhËp vµo h·y thùc hiÖn c«ng viÖc t-¬ng øng. ******************************** * Hay chon 1 cong viÑc * * 1. Tinh a+b+c * * 2. Tinh a*b*c * * 3. In ra gia tri lon nhat * * 4. In ra gia tri nho nhat * ******************************** 9. ViÕt ch-¬ng tr×nh nhËp 3 sè a, b, c vµ thÓ hiÖn trªn mµn h×nh th«ng b¸o sau: Chon 1 cong viec: 1. Giai phuong trinh ax+b=c 2. Giai phuong trinh ax2+bx+c=0 Víi gi¸ trÞ ng-êi sö dông nhËp vµo, h·y thùc hiÖn c«ng viÖc t-¬ng øng. Víi gi¸ trÞ kh¸c 1 vµ 2 th× in ra th«ng b¸o ‘Xin chao.’
  • 71. 10. H·y dïng vßng lÆp FOR ®Ó viÕt ch-¬ng tr×nh tÝnh c¸c biÓu thøc sau: S=1+3+5+..+2n-1 S=2+4+6+...+2n S=1+1/2+1/3+...+1/n 11. ViÕt ch-¬ng tr×nh t×m tÊt c¶ c¸c ph-¬ng ¸n tr¶ tiÒn cho mét sè tiÒn cho tr-íc (sè tiÒn nµy nhËp tõ bµn phÝm). BiÕt r»ng trong kho hiÖn ®ang cã c¸c lo¹i giÊy b¹c 5000, 2000, 1000, 10000, 20000. 12. H·y dïng vßng lÆp FOR ®Ó viÕt ch-¬ng tr×nh in ra mµn h×nh tÊt c¶ c¸c sè cã 4 ch÷ sè abcd tháa m·n a+b=c+d. 13. H·y dïng vßng lÆp FOR ®Ó viÕt ch-¬ng tr×nh nhËp vµo mét sè nguyªn d-¬ng n vµ in ra mµn h×nh tÊt c¶ c¸c -íc sè cña nã. 14. ViÕt ch-¬ng tr×nh nhËp mét sè nguyªn d-¬ng h vµ dïng vßng lÆp FOR in ra 3 h×nh tam gi¸c c©n cã chiÒu cao h nh- sau: * * * *** *** ** ***** *** * * ******* * * * ******* 15. ViÕt ch-¬ng tr×nh nhËp vµo mét sè nguyªn d-¬ng N vµ dïng vßng lÆp FOR in ra tÊt c¶ c¸c sè chÝnh ph-¬ng trong ph¹m vi N, c¸c sè lÎ trong ph¹m vi N, c¸c sè ch½n trong ph¹m vi N
  • 72. 16. H·y dïng vßng lÆp FOR ®Ó viÕt ch-¬ng tr×nh in ra mµn h×nh c¸c sè tõ 0 ®Õn 99 theo qui c¸ch mçi sè chiÕm 2 chç, gi÷a c¸c sè cã dÊu c¸ch vµ in ra theo mÉu sau: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 .. .. .. .. .. .. .. .. .. .. 90 91 92 93 94 95 96 97 98 99 17. ViÕt ch-¬ng tr×nh nhËp tõ bµn phÝm vµo 2 sè nguyªn vµ dïng vßng lÆp While..Do ®Ó tÝnh -íc sè chung lín nhÊt (USCLN) cña chóng. H-íng dÉn: Sö dông tÝnh chÊt sau: USCLN(m,n) = m nÕu m=n = USCLN(m-n,n) nÕu m>n = USCLN(m,n-m) nÕu m<n 18. H·y dïng cÊu tróc lÆp Repeat...Until ®Ó viÕt ch-¬ng tr×nh nhËp vµo c¸c sè thùc cho ®Õn khi sè 0 ®-îc nhËp vµo vµ cho biÕt: Sè phÇn tö ®· nhËp Tæng cña c¸c phÇn tö ®· nhËp Gi¸ trÞ lín nhÊt Gi¸ trÞ nhá nhÊt
  • 73. Ch-¬ng 9: Ch-¬ng tr×nh con 9.1. Kh¸i niÖm Trong khi lËp ch-¬ng tr×nh, chóng ta th-êng gÆp nh÷ng ®o¹n ch-¬ng tr×nh ®-îc lÆp ®i lÆp l¹i rÊt nhiÒu lÇn ë nh÷ng chç kh¸c nhau. §Ó tr¸nh r-êm rµ, nh÷ng ®o¹n ch-¬ng tr×nh nµy ®-îc thay thÕ b»ng c¸c ch-¬ng tr×nh con t-¬ng øng vµ khi cÇn ta chØ viÖc lµm thñ tôc gäi ch-¬ng tr×nh con ®ã ra (víi c¸c tham sè t-¬ng øng cÇn thiÕt) mµ kh«ng ph¶i viÕt l¹i c¶ ®o¹n ch-¬ng tr×nh ®ã. LÝ do thø hai ®Ó x©y dùng ch-¬ng tr×nh con lµ: mét vÊn ®Ò lín vµ phøc t¹p sÏ t-¬ng øng víi mét ch-¬ng tr×nh cã thÓ rÊt lín, rÊt dµi. Do ®ã viÖc nh×n tæng quan c¶ ch-¬ng tr×nh còng nh- viÖc gì rèi, hiÖu chØnh rÊt khã kh¨n. Ta cã thÓ ph©n t¸ch vÊn ®Ò phøc t¹p ®ã thµnh c¸c vÊn ®Ò nhá h¬n (t-¬ng øng víi c¸c ch-¬ng tr×nh con, nh÷ng khèi, nh÷ng modun) dÔ kiÓm tra, gì rèi tõng khèi mét vµ sau ®ã ghÐp l¹i thµnh ch-¬ng tr×nh lín. Ch-¬ng tr×nh con ®-îc dïng rÊt phæ biÕn. V× vËy, chóng ta cÇn n¾m v÷ng c¸c kü thuËt lËp ch-¬ng tr×nh con. Trong Turbo Pascal cã mét sè ch-¬ng tr×nh con chuÈn ®· ®-îc lËp s½n vµ ®Ó trong c¸c Unit nh- CRT, PRINTER, DOS,... 9.2 Hµm vµ thñ tôc CÊu tróc cña hµm cã d¹ng: Function Tªn_ Hµm(Danh_s¸ch_tham_sè_h×nh_thøc, nÕu cÇn): KiÓu_d÷_liÖu;
  • 74. Begin …(* Néi dung c¸c lÖnh cña FUNCTION*) End; Ph-¬ng ph¸p gäi hµm: ta gäi hµm th«ng qua tªn kÌm theo tham sè cña hµm nh- sau: Tªn_ Hµm(Danh_ s¸ch_ c¸c_ tham_ sè_ thùc_ sù); CÊu tróc cña thñ tôc cã d¹ng: Procedure Tªn_thñ_tôc(Danh_s¸ch_tham_sè_h×nh_thøc, nÕu cÇn); (*Khai b¸o cña riªng PROCEDURE, nÕu cÇn*) Begin …(* Néi dung c¸c lÖnh cña PROCEDURE *) End; Ph-¬ng ph¸p gäi thñ tôc Tªn_Hµm(Danh_ s¸ch_ c¸c_ tham_ sè_ thùc_ sù); Sù kh¸c nhau c¬ b¶n gi÷a hµm vµ thñ tôc lµ hµm tr¶ vÒ mét gi¸ trÞ th«ng qua tªn hµm, hµm cã thÓ tham gia vµo c¸c biÓu thøc tÝnh to¸n cßn thñ tôc kh«ng cho gi¸ trÞ nµo c¶. Khi t¹o hµm, trong th©n hµm bao giê còng cã gi¸ trÞ g¾n cho tªn hµm ®Ó hµm tr¶ vÒ gi¸ trÞ nµy khi ®-îc gäi.
  • 75. C¸c tham sè kh¸c sau tªn hµm cã tªn thñ tôc gäi lµ c¸c tham sè h×nh thøc (hay cßn gäi lµ ®èi). Trong thñ tôc, c¸c tham sè h×nh thøc cã hai lo¹i: c¸c tham sè ®-îc khai b¸o sau tõ kho¸ Var gäi lµ tham sè biÕn, c¸c tham sè khai b¸o kh«ng cã tõ kho¸ Var ë tr-íc gäi lµ tham sè gi¸ trÞ. Trong hµm chØ cã tham sè gi¸ trÞ, tøc khai b¸o mµ kh«ng cã tõ kho¸ Var. Tham sè thùc sù lµ c¸c tham sè dïng trong lêi gäi hµm hay thñ tôc. Danh s¸ch c¸c tham sè thùc sù trong lêi gäi hµm ph¶i t-¬ng øng víi danh s¸ch c¸c tham sè h×nh thøc trong phÇn khai b¸o ch-¬ng tr×nh con vµ chóng ph¶i t-¬ng øng vÒ kiÓu. Trong thñ tôc, c¸c tham sè gi¸ trÞ th-êng lµ c¸c biÕn ®Ó chøa d÷ liÖu ®-a vµo thñ tôc, c¸c tham sè biÕn lµ c¸c biÕn mµ kÕt qu¶ tÝnh to¸n cña thñ tôc sÏ chøa vµo ®ã khi ra khái thñ tôc, ta cã thÓ dïng chóng ®Ó tÝnh to¸n tiÕp.
  • 76. VÝ dô 1: C¸ch sö dông tham sè gi¸ trÞ vµ tham sè biÕn: Var a, b, c, d : Integer; Procedure Chuyen(x, y : Integer; Var u, v : Integer); Begin (*Tõ kho¸ b¾t ®Çu thñ tôc Chuyen*) x : = 2 * x; y : = 3 * y; u : = 4 * u; v : = 5 * v; End; Begin (*Tõ kho¸ b¾t ®Çu ch-¬ng tr×nh chÝnh*) a : = 10; b : = 10; c : = 10; d : = 10; Chuyen(a, b, c, d); Write( ‘a = ’, a, ‘ b = ’, b, ‘ c= ’, c, ‘ d= ’, d); Readln; End. KÕt qu¶ khi ch¹y ch-¬ng tr×nh: a = 10 b = 10 c = 40 d = 50
  • 77. 9.3.BiÕn toµn côc, biÕn côc bé vµ viÖc truyÒn d÷ liÖu BiÕn toµn côc lµ biÕn khai b¸o ë ®Çu ch-¬ng tr×nh chÝnh, tån t¹i trong suèt thêi gian lµm viÖc cña ch-¬ng tr×nh. Ta cã thÓ sö dông vµ lµm thay ®æi gi¸ trÞ cña biÕn toµn côc nhê c¸c c©u lÖnh trong ch-¬ng tr×nh chÝnh còng nh- trong tÊt c¶ c¸c ch-¬ng tr×nh con. BiÕn côc bé lµ biÕn lµ biÕn khai b¸o ë ®Çu ch-¬ng tr×nh con. Chóng ®-îc cÊp ph¸t bé nhí nh- ch-¬ng tr×nh con ®-îc gäi ®Õn vµ bÞ xo¸ khi m¸y tho¸t khái ch-¬ng tr×nh con kh¸c n»m trong ch-¬ng tr×nh con nµy. NÕu tªn biÕn côc bé cña mét ch-¬ng tr×nh con trïng víi mét tªn biÕn toµn côc th× m¸y kh«ng bÞ nhÇm lÉn, m¸y sÏ dïng hai « nhí kh¸c nhau ®Ó l-u tr÷ hai biÕn, ra khái ch-¬ng tr×nh con, biÕn côc bé tù ®éng ®-îc xo¸. Khi gÆp mét lêi gäi ®Õn ch-¬ng tr×nh con, m¸y sÏ thùc hiÖn c¸c b-íc sau: - CÊp ph¸t bé nhí cho c¸c ®èi t-îng, c¸c biÕn côc bé. - TruyÒn gi¸ trÞ cña c¸c tham sè thùc sù cho c¸c tham sè gi¸ trÞ t-¬ng øng, truyÒn ®Þa chØ c¸c tham sè thùc sù øng víi tham sè biÕn cho c¸c tham sè biÕn cña thñ tôc.
  • 78. - Thùc hiÖn c¸c lÖnh trong ch-¬ng tr×nh con, trong khi thùc hiÖn ch-¬ng tr×nh con, c¸c biÕn côc bé vµ c¸c tham sè gi¸ trÞ cã thÓ bÞ biÕn ®æi nh-ng kh«ng ¶nh h-ëng ®Õn c¸c biÕn bªn ngoµi. Tr¸i l¹i, mäi thay ®æi cña tham sè biÕn trong ch-¬ng tr×nh con sÏ kÐo theo sù thay ®æi cña tham sè thùc sù t-¬ng øng (v× cã sù truyÒn theo ®Þa chØ). Do ®ã, khi tho¸t khái ch-¬ng tr×nh con, c¸c tham sè thùc sù øng víi tham sè biÕn vÉn gi÷ ®-îc gi¸ trÞ míi nhÊt do ch-¬ng tr×nh con t¹o ra. - Thùc hiÖn xong c¸c lÖnh cña ch-¬ng tr×nh con, m¸y xo¸ tÊt c¶ c¸c ®èi vµ c¸c biÕn côc bé vµ trë vÒ lÖnh kÕ sau n¬i gäi nã. ViÖc lÊy kÕt qu¶ thùc hiÖn ch-¬ng tr×nh con nh- sau: NÕu lµ hµm th× lÊy kÕt qu¶ th«ng qua tªn hµm, nÕu lµ thñ tôc th× kÕt qu¶ ë tham sè thùc sù øng víi tham sè biÕn. Khi cÇn lÊy duy nhÊt mét gi¸ trÞ tõ ch-¬ng tr×nh con th× ta lËp mét Function, khi cÇn lÊy tõ hai gi¸ trÞ trë lªn tõ ch-¬ng tr×nh con hoÆc kh«ng lÊy gi¸ trÞ nµo th× ta ph¶i lËp Procedure. VÝ dô 2: LËp hµm tÝnh diÖn tÝch h×nh thang. NhËp d÷ liÖu cña hai thöa ruéng h×nh thang vµ tÝnh tæng diÖn tÝch hai thöa ruéng.
  • 79. Var a1, b1, h1, a2, b2, h2, s: Real; (* B¾t ®Çu Funtion*) Function DTHinhThang(a, b, h) : Real; Begin DTHinhThang := (a + b) * h / 2; End; (*B¾t ®Çu ch-¬ng tr×nh chÝnh*) 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
  • 80. VÝ dô3: LËp hµm tÝnh -íc sè chung lín nhÊt (USCLN). Sau ®ã, dïng hµm nµy ®Ó tÝnh USCLN vµ béi sè chung nhá nhÊt (BSCNN) cña hai sè ®-îc nhËp tõ bµn phÝm. Var m, n, usc, bsc: Integer; (*Function USCLN*) Function USCLN(a, b : Integer): Integer; Var r : Integer; Begin While b < > 0 do Begin R := a mod b; a := b; b := r; End; (* a hien tai la USCLN cua a va b ban dau*) USCLN := a; End;
  • 81. (* B¾t ®Çu ch-¬ng tr×nh chÝnh*) 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 9.4. §¬n vÞ ch-¬ng tr×nh (Unit) Cã nhiÒu ch-¬ng tr×nh con mÉu ®· ®-îc lËp s½n trong Turbo Pascal, ng-êi lËp tr×nh chØ viÖc ®em ra dïng. Song ng-êi lËp tr×nh kh«ng ph¶i lóc nµo còng dïng hÕt c¸c ch-¬ng tr×nh con nµy. Do ®ã, ng-êi ta ®· chia nhá th- viÖn ch-¬ng tr×nh con mÉu thµnh c¸c th- viÖn nhá h¬n, mçi th- viÖn nhá ®ã ®-îc gäi lµ mét Unit (®¬n vÞ ch-¬ng tr×nh). D-íi ®©y lµ danh s¸ch c¸c Unit mµ Turbo Pascal cung cÊp: CRT Unit chøa c¸c ch-¬ng tr×nh con xö lý mµn h×nh vµ bµn phÝm (nh- lÖnh ClrScr; GoToxy; ReadKey,...) Printer Unit chøa c¸c CTC vµ d÷ liÖu vÒ c¸c thñ tôc in DOS lµ Unit chøa c¸c CTC vµ d÷ liÖu khai th¸c c¸c hµm cña DoS.
  • 82. SYSTEM lµ Unit chøa c¸c CTC vµ d÷ liÖu vÒ hÖ thèng C¸c Unit trªn ®-îc ®Ó trong file Turbo.TPL Graph Unit vÒ ®å häa. Unit nµy ®-îc chøa trong file Graph.TPU ViÖc chia nhá th- viÖn nµy gióp cho ch-¬ng tr×nh dÞch ch¹y nhanh h¬n v× kh«ng ph¶i ®äc l¹i tÊt c¶ c¸c ch-¬ng tr×nh con mÉu nÕu nh- kh«ng cã nhu cÇu. MÆt kh¸c ch-¬ng tr×nh dÞch ra còng gän h¬n v× kh«ng ph¶i chøa nh÷ng c¸i kh«ng dïng ®Õn. Chó ý: mçi khi dïng mét thñ tôc hoÆc hµm cña Turbo Pascal ng-êi lËp tr×nh ph¶i tra cøu xem nã thuéc Unit nµo ®Ó cßn khai b¸o sö dông. Ngoµi c¸c Unit chuÈn do Turbo Pascal cung cÊp cßn cã c¸c Unit do ng-êi lËp tr×nh tù t¹o ra. C¸c Unit nµy nÕu ®· ®-îc dÞch hoµn chØnh vµ kh«ng bÞ söa ®æi th× ng-êi lËp tr×nh cã thÓ dïng ngay, kh«ng cÇn dÞch l¹i vµ thËm chÝ chóng cßn cã thÓ ®-îc dïng chung cho nhiÒu ch-¬ng tr×nh kh¸c nhau. Trong tr-êng hîp cã sù thay ®æi trong mét Unit nµo ®ã th× chØ cã c¸c Unit cã liªn quan míi bÞ dÞch l¹i. Mét Unit do ng-êi lËp tr×nh t¹o ra sÏ ®-îc chøa trong mét file víi mét tªn nµo ®ã, VÝ dô KHOI1.PAS. C¸ch thøc cña mét file Unit nh- sau: UNIT Khoi1; (* Tªn Unit th-êng nªn ®Æt trïng víi tªn file *) USES Tªn_c¸c_Unit_cÇn_dïng_cho Unit nµy; INTERFACE
  • 83. 9.5. Mét sè ch-¬ng tr×nh con cña Turbo Pascal Mçi lo¹i PASCAL cã c¸c ch-¬ng tr×nh con bæ sung vµ më réng kh¸c. Ng-êi ®äc cã thÓ tra cøu tÊt c¶ c¸c thñ tôc vµ hµm cña Turbo Pascal trong quyÓn Turbo Pascal, cÈm nang tra cøu. Trong ph¹m vi cña gi¸o tr×nh nµy, chóng t«i chØ xin giíi thiÖu mét vµi thñ tôc vµ hµm ®Ó tham kh¶o. Procedure GotoXY(X,Y) Crt §-a con trá cña mµn h×nh vÒ vÞ trÝ cã täa ®é X vµ Y trªn mµn h×nh. Hai hµm WhereX, WhereY cho ta to¹ ®é cña con trá t¹i thêi ®iÓm gäi hai hµm nµy. Procedure ClrScr; Crt Xo¸ toµn bé mµn h×nh vµ ®Æt con trá t¹i To¹ ®é 0,0 Procedure ClrEol Crt Xo¸ tõ vÞ trÝ con trá ®Õn hÕt dßng. Sau khi xo¸ vÞ trÝ con trá kh«ng thay ®æi Procedure DelLine Crt Xo¸ dßng chøa con trá. C¸c dßng ë d-íi dån lªn trªn ®Ó thay thÕ Procedure insLine Crt ChÌn mét dßng tr¾ng vµo vÞ trÝ con trá. Procedure LowVideo vµ NormVideo Crt Sau khi gäi LowVideo, mäi kÝ tù viÕt ra mµn h×nh ®Òu cã ®é s¸ng yÕu ®i cho tíi khi gäi thñ tôc NormVideo.
  • 84. Procedure Delay(T) T¹o ra thêi gian trÔ T (ms). T lµ mét sè nguyªn. Delay th-êng ®-îc dïng ®Ó lµm chËm ch-¬ng tr×nh l¹i cho ta quan s¸t. Procedure Sound(F) vµ NoSound T¹o ra dao ®éng ©m thanh víi tÇn sè lµ F (F nguyªn) cho ®Õn khi ta gäi NoSound Procedure Exit System Khi ®-îc thùc hiÖn trong ch-¬ng tr×nh con, exit lµm cho ch-¬ng tr×nh con ®ã kÕt thóc v« ®iÒu kiÖn vµ quay vÒ ch-¬ng tr×nh gäi nã. Khi ®-îc thùc hiÖn trong c©u lÖnh cña ch-¬ng tr×nh chÝnh th× ch-¬ng tr×nh chÝnh sÏ kÕt thóc lu«n Procedure Halt(exitCode:Word) System Dõng ho¹t ®éng ch-¬ng tr×nh vµ trë vÒ hÖ ®iÒu hµnh. ExitCode lµ mét biÕn kiÓu Word x¸c ®Þnh m· tho¸t cña ch-¬ng tr×nh. Cã thÓ dïng Halt kh«ng tham sè t-ong øng nh- Halt(0) Function Keypress Crt Cho gi¸ trÞ True khi ta Ên mét phÝm nµo ®ã vµ kÝ tù ®ã cßn n»m ®îi trong bé nhí ®Öm cña bµn phÝm ch-a ®-îc lÊy ra ®Ó xö lý. Hµm nµy kh«ng cã t¸c dông khi Ên phÝm Ctrl, Alt, Shift mét c¸ch ®¬n lÎ, kh«ng cïng c¸c phÝm ch÷ vµ sè kh¸c.
  • 85. Function ReadKey Hµm ReadKey ®äc mét kÝ tù tõ bµn phÝm. NÕu biÕn Keypress lµ True tr-íc khi gäi ReadKey th× kÝ tù ®-îc ®äc vµo ngay lËp tøc kh«ng chê Ên Enter. NÕu Keypress lµ False, ReadKey ®îi cho ®Õn khi cã mét phÝm ®-îc Ên. KÝ tù ®-îc ®äc kh«ng hiÖn lªn trªn mµn h×nh. C¸c phÝm ®Æc biÖt trªn bµn phÝm ph¸t ra c¸c m· quÐt më réng. PhÝm ®Æc biÖt lµ c¸c phÝm chøc n¨ng nh- F1, F2,... phÝm ®iÒu khiÓn con trá, phÝm Alt,... Khi mét phÝm ®Æc biÖt ®-îc Ên, ®Çu tiªn ReadKey tr¶ l¹i kÝ tù 0 vµ sau ®ã tr¶ m· quÐt më réng. KÝ tù 0 (null) kh«ng ®-îc ph¸t ra trong bÊt k× tr-êng hîp nµo kh¸c, nh- vËy b¹n ®¶m b¶o kÝ tù tiÕp theo lµ m· quÐt më réng. Function Frac(X) Cho gi¸ trÞ phÇn thËp ph©n cña sè thùc X Function Int(X) Cho gi¸ trÞ phÇn nguyªn cña sè thùc X Function RanDom Cho gi¸ trÞ sè thùc RanDom. RanDom lµ mét sè ngÉu nhiªn n»m trong kho¶ng 0 vµ 1 Function RanDom(Number) Cho gi¸ trÞ sè thùc RanDom. RanDom lµ mét sè ngÉu nhiªn n»m trong kho¶ng 0 vµ Number. Number lµ mét sè nguyªn
  • 86. Procedure RanDomize Lµ thñ tôc ®¶m b¶o cho hµm RanDom b¾t ®Çu ch¹y víi mét sè ngÉu nhiªn. CÇn gäi thñ tôc nµy tr-íc khi dïng c¸c hµm RanDom. Function UpCase(ch) cho kÝ tù hoa t-¬ng øng víi ký tù Ch Bµi tËp 9.1 ViÕt ch-¬ng tr×nh nhËp vµo 5 sè tõ bµn phÝm vµ in ra sè lín nhÊt, sè nhá nhÊt trong 5 sè ®ã. Sö dông ch-¬ng tr×nh t×m sè lín nhÊt, nhá nhÊt trong 2 sè lµm ch-¬ng tr×nh con. 9.2. ViÕt ch-¬ng tr×nh nhËp 3 sè tõ bµn phÝm vµ t×m USCLN cña 3 sè ®ã. Sö dông ch-¬ng tr×nh t×m USCLN cña 2 sè lµm ch-¬ng tr×nh con. 9.3. ViÕt mét hµm ®Ó tÝnh tiÒn ®iÖn nh- sau: Function Tiendien(SoKW:integer):LongInt; trong ®ã SoKW: lµ sè KW ®iÖn tiªu thô trong th¸ng Hµm TienDien tr¶ vÒ trÞ sè lµ sè tiÒn ®iÖn ph¶i tr¶. C¸ch tÝnh tiÒn ®iÖn nh- sau: Tõ KW thø 1 ®Õn 50: 250 ®ång/KW Tõ KW thø 51 ®Õn 70: 300 ®ång/KW Tõ KW 71 ®Õn 100: 350 ®ång/KW Tõ KW thø 101 trë lªn: 400 ®ång/KW
  • 87. 9.4. T¹o c¸c hµm xö lý chuçi víi tªn vµ chøc n¨ng nh- sau: a. Function Left(S:String; n:byte):String Chøc n¨ng: cho kÕt qu¶ lµ mét chuçi con lÊy ra n ký tù tõ chuçi S tÝnh tõ vÞ trÝ ngoµi cïng bªn tr¸i sang ph¶i cña chuçi b. Function RIGHT(S:String;n:byte):String Chøc n¨ng: Cho kÕt qu¶ lµ mét chuçi con lÊy ra n ký tõ tõ chuçi S tÝnh tõ vÞ trÝ ngoµi cïng bªn ph¶i sang tr¸i cña chuçi c. Fuction RTRIM(S:String):String Chøc n¨ng: lo¹i bá c¸c ký tù tr¾ng n»m ë phÇn cuèi cña chuçi S d. Function LTRIM(S:String):String Chøc n¨ng: Lo¹i bá c¸c ký tù tr¾ng n»m ë ®Çu chuçi S e. Function IIF(a:boolean;S1,S2:String):String Chøc n¨ng: Tr¶ vÒ chuçi S1 nÕu a=TRUE, vÒ S2 nÕu a=False VÝ dô: IIF(Tuoi<17,'Thieu nien','Thanh nien'); 9.5. ViÕt ch-¬ng tr×nh dïng gi¶i thuËt ®Ö qui ®Ó tÝnh gi¸ trÞ cña hµm F(n). BiÕt hµm nµy ®-îc tÝnh theo c«ng thøc sau: F(0)=0 F(1)=1 F(n)-F(n-1)=2*(F(n-1)-F(n-2) )
  • 88. Ch-¬ng 10: KiÓu v« h-íng liÖt kª vµ kiÓu ®o¹n con I. KiÓu v« h-íng liÖt kª Pascal cßn cho phÐp ng-êi lËp tr×nh cã thÓ tù ®Þnh nghÜa ra c¸c kiÓu v« h-íng míi b»ng c¸ch liÖt kª c¸c gi¸ trÞ cña kiÓu v« h-íng míi qua c¸c tªn do ng-êi lËp tr×nh tù ®Æt ra. Danh s¸ch c¸c gi¸ trÞ nµy ®-îc ®Ó trong ngoÆc ®¬n vµ ®-îc m« t¶ b»ng mét tªn kiÓu trong phÇn m« t¶ kiÓu TYPE. KiÓu v« h-íng ®-îc ®Þnh nghÜa theo c¸ch nµy ®-îc gäi lµ kiÓu liÖt kª. VÝ dô 1: TYPE Boolean=(False, True); Khoa = (det, soi, hoa, kinh_te, may, tin); Gioitinh=(Nam,Nu); VAR Ketqua: Boolean; Nganh: Khoa; Gioitinh: (Nam, Nu); hoÆc khai b¸o trùc tiÕp víi m« t¶ kiÓu d÷ liÖu: VAR Gioitinh : (Nam, Nu); Ngµy : (Chunhat, Hai, Ba, Tu, Nam, Sau,Bay); Do ®ã c¸c biÕn cã thÓ nhËn c¸c gi¸ trÞ cña kiÓu t-¬ng øng.
  • 89. VÝ dô 2: Ketqua:=True; Gioitinh:=Nam; Nganh:=Tin; Ngay:=Chñ nhËt; §-¬ng nhiªn mét biÕn ®-îc ®Þnh nghÜa lµ kiÓu nµy kh«ng thÓ nhËn gi¸ trÞ cña mét kiÓu kh¸c (tÝnh t-¬ng thÝch): Nganh:=Nam; lµ sai v× kh¸c kiÓu nhau Trong ®Þnh nghÜa cña c¸c kiÓu v« h-íng tån t¹i mét thø tù tuyÕn tÝnh theo thø tù liÖt kª vµ phÇn tö ®Çu tiªn cã sè thø tù lµ 0. C¸c hµm chuÈn sau ®©y ®-îc ¸p dông cho kiÓu v« h-íng. 1.1. Hµm thø tù ORD(X): Cho ta sè thø tù cña X trong kiÓu v« h-íng ®Õm ®-îc. Hµm ORD thùc chÊt lµ hµm biÕn ®æi mét gi¸ trÞ kiÓu v« h-íng ®Õm ®-îc sang gi¸ trÞ kiÓu sè nguyªn.
  • 90. 1.2. ChuyÓn ®æi kiÓu d÷ liÖu Hµm ORD ®Ó chuyÓn ®æi mét gi¸ trÞ v« h-íng sang gi¸ trÞ nguyªn. Pascal chuÈn kh«ng cã hµm biÕn ®æi ng-îc l¹i: tõ mét gi¸ trÞ sè nguyªn sang mét gi¸ trÞ v« h-íng ®Õm ®-îc nµo ®Êy. Turbo Pascal cho phÐp biÕn ®èi ng-îc tõ mét gi¸ trÞ sè nguyªn thµnh gi¸ trÞ v« h-íng ®Õm ®-îc theo mÉu viÕt: Tªn kiÓu d÷ liÖu v« h-íng (sè_nguyªn) VÝ dô 10.3: Khoa(1) cho gi¸ trÞ Soi Char(78) cho gi¸ trÞ 'N' 1.3. ViÕt ra kiÓu liÖt kª Thñ tôc Write hoÆc Writeln chØ chÊp nhËn ®-a ra c¸c gi¸ trÞ thuéc kiÓu v« h-íng chuÈn (Real; Integer; Byte; Char; Boolean) vµ kh«ng thÓ viÕt ra mét gi¸ trÞ thuéc kiÓu v« h-íng liÖt kª. VÝ dô: c¸c c©u lÖnh sau ®©y lµ kh«ng ®óng, kh«ng ®-îc chÊp nhËn: Writeln (Khoa(4)); Writeln (det); Writeln (nam); Song cã thÓ viÕt Writeln (Char(78)) v× char(78) ='N' lµ gi¸ trÞ v« h-íng chuÈn Muèn viÕt tªn gi¸ trÞ cña kiÓu v« h-íng liÖt kª ta cã thÓ ¸p dông thñ thuËt
  • 91. 1.4. §äc vµo kiÓu liÖt kª: Thñ tôc Read vµ Readln còng chØ cho phÐp ®äc vµo tõ bµn phÝm c¸c gi¸ trÞ cña c¸c biÕn cã kiÓu v« h-íng chuÈn. Chóng còng kh«ng cho phÐp ®äc trùc tiÕp c¸c gi¸ trÞ kiÓu liÖt kª. VÝ dô chóng ta kh«ng thÓ ®äc biÕn ngµnh=dÖt b»ng c¸c Ên c¸c phÝm d e t. Chóng ta cã thÓ dïng ph-¬ng ph¸p ®äc sè thø tù cña gi¸ trÞ biÕn v« h-íng råi biÕn ®æi kiÓu d÷ liÖu thªm. VÝ dô 10.4: TYPE Color = (red, blue, green, white, black); VAR I: integer; Mau:color; BEGIN Readln(I); Mau:=Color(I); END.
  • 92. II. KiÓu kho¶ng con (Sub-range Type) Chóng ta thÊy r»ng cã nhiÒu tr-êng hîp mét biÕn cã thÓ chØ lÊy gi¸ trÞ trong mét kho¶ng ®-îc x¸c ®Þnh bëi gi¸ trÞ giíi h¹n d-íi vµ gi¸ trÞ giíi h¹n trªn thuéc mét kiÓu v« h-íng ®Õm ®-îc nµo ®ã. VÝ dô tuæi thä cña ng-êi cã thÓ ®-îc giíi h¹n tõ 0 ®Õn 200. Khi ®ã ta cã thÓ ®Þnh nghÜa ra kiÓu kho¶ng con nh- sau: TYPE Tuoitho = 0..200; VAR Tuoi: Tuoitho; hoÆc cã thÓ ®Þnh nghÜa trùc tiÕp biÕn víi m« t¶ kiÓu: VAR Tuoi: 0..200; Qui t¾c ®Þnh nghÜa kiÓu kho¶ng con cã thÓ viÕt ra nh- sau: H»ng cËn d-íi .. H»ng cËn trªn; trong ®ã h»ng cËn d-íi vµ h»ng cËn trªn lµ hai h»ng cña cïng mét kiÓu v« h-íng ®Õm ®-îc. TÊt nhiªn ph¶i tho¶ m·n yªu cÇu: h»ng cËn d-íi < h»ng cËn trªn Cã hai t¸c dông cña viÖc ®Þnh nghÜa kiÓu kho¶ng con: TiÕt kiÖm « nhí: nÕu ta ®Þnh nghÜa tuæi thä nh- lµ kiÓu Integer th× sÏ mÊt 2 byte trong khi kho¶ng sè nguyªn tõ 0 ®Õn 200 sÏ ®-îc m¸y tù ®éng g¸n cho mét byte mµ th«i. Cã thÓ kiÓm tra gi¸ trÞ cña biÕn khi ch¹y ch-¬ng tr×nh kh«ng ®-îc v-ît ra
  • 93. VÝ dô 5: TYPE Ngay = (‘Chunhat’, ‘Hai’, ‘Ba’, ‘Tu’, ‘Nam’, ‘Sau’,‘Bay’); Xe®ap = (eska, Peugeot, Phuonghoang, Thongnhat); Xe_Ngoai = eska .. Phuonghoang; Chu_caiHoa= 'A'..'Z'; Nguyenduong = 0..MaxInt; VAR Xe_dap_ngoai : Xe_Ngoai; Ch: Chu_cai_hoa; I: Nguyen_duong; Ch2:'0'..'9'; Ngay_lam_viec: Hai .. Bay; C¸c biÕn kiÓu kho¶ng con sÏ t-¬ng thÝch víi kiÓu d÷ liÖu cña h»ng cËn d-íi vµ trªn. VÝ dô I cã thÓ tÝnh to¸n víi c¸c biÕn integer kh¸c, tÊt nhiªn ph¶i kiÓm tra gi¸ trÞ cña nã cã n»m trong ®o¹n con kh«ng. Cßn Ch2 th× tÝnh to¸n ®-îc víi c¸c biÕn kiÓu kÝ tù,..
  • 94. Bµi tËp 1. BiÕt r»ng S1 lµ mét biÕn ®-îc khai b¸o nh- sau: Var S1: (‘Chunhat’, ‘Hai’, ‘Ba’, ‘Tu’, ‘Nam’, ‘Sau’,‘Bay’); Hái S1 thuéc kiÓu g×? 2. Cho kiÓu liÖt kª Week=(Sun, Mon,Tue, Wed, Thu, Fri, Sat). TÝnh gi¸ trÞ cña biÓu thøc (ORD(Mon)=2) TÝnh gi¸ trÞ cña biÓu thøc Pred(Mon) TÝnh gi¸ trÞ cña biÓu thøc Succ(Wed) 3. BiÕt r»ng trong ch-¬ng tr×nh cã sö dông hµm Pred(n). H·y x¸c ®Þnh tÊt c¶ c¸c kiÓu cã thÓ khai b¸o cho n. 4. BiÕt r»ng trong ch-¬ng tr×nh cã sö dông mét lÖnh g¸n i:=ORD(n). H·y x¸c ®Þnh c¸c kiÓu cã thÓ sö dông ®-îc trong khai b¸o cña n
  • 95. Ch-¬ng 11: D÷ liÖu cã cÊu tróc: kiÓu m¶ng 11.1.Kh¸i niÖm chung vÒ cÊu tróc d÷ liÖu Chóng ta ®· lµm quen víi c¸c kiÓu d÷ liÖu ®¬n gi¶n lµ c¸c kiÓu v« h-íng (integer, char, boolean, real), kiÓu liÖt kª vµ kiÓu ®o¹n con. Trong Pascal tån t¹i c¸c kiÓu d÷ liÖu cã cÊu tróc lµ c¸c kiÓu d÷ liÖu ®-îc t¹o ra tõ c¸c phÇn tö cã kiÓu d÷ liÖu ®¬n gi¶n b»ng mét c¸ch nµo ®ã. Chóng ®-îc ®Æc tr-ng b»ng kiÓu d÷ liÖu cña c¸c phÇn tö vµ ph-¬ng ph¸p cÊu thµnh kiÓu d÷ liÖu míi. Pascal cã tÊt c¶ 4 kiÓu d÷ liÖu cã cÊu tróc: kiÓu m¶ng (ARRAY), kiÓu tËp hîp (SET), kiÓu b¶n ghi (RECORD) vµ kiÓu tÖp (FILE) 11.2. KiÓu m¶ng (ARRAY) 11.2.1.Kh¸i niÖm: Mét m¶ng d÷ liÖu gåm mét sè h÷u h¹n phÇn tö cã cïng kiÓu gäi lµ kiÓu phÇn tö. Sè phÇn tö cña m¶ng ®-îc x¸c ®Þnh ngay tõ khi ®Þnh nghÜa m¶ng. Mçi phÇn tö cña m¶ng ®-îc truy nhËp trùc tiÕp th«ng qua tªn m¶ng cïng víi chØ sè truy nhËp ®-îc viÕt gi÷a hai dÊu ngoÆc vu«ng []. VÝ dô 11.1: Cã 50 häc sinh trong líp. §iÓm To¸n cña c¸c häc sinh nµy ®-îc ký hiÖu lÇn l-ît lµ T1,T2,..,T50. Khi ®ã ta cã thÓ coi tËp c¸c ®iÓm To¸n cña häc sinh lµ 1 m¶ng 50 phÇn tö kiÓu Real: T[1], T[2],...,T[50]. M¶ng nµy ®-îc gäi lµ m¶ng 1 chiÒu.
  • 96. VÝ dô 11.2: Gi¶ sö cã mét ma trËn 3 hµng vµ 5 cét ®-îc viÕt nh- sau: a11 a12 a13 a14 a15 a21 a22 a23 a24 a25 a31 a32 a33 a34 a35 Khi ®ã ta cã thÓ xem ma trËn nµy nh- mét m¶ng 2 chiÒu gåm c¸c phÇn tö a[1,1]; a[1,2]; ...; a[1,5]; ...[a3,1]; a[3,2];...[a3,5] C¸c thao t¸c d-íi ®©y chñ yÕu sö dông cho m¶ng mét chiÒu. M¶ng nhiÒu chiÒu sÏ ®-îc ®Ò cËp ®Õn ë phÇn sau 11.2.2.Khai b¸o m¶ng KiÓu m¶ng T víi kiÓu phÇn tö KPT ( kiÓu phÈn tö) vµ kiÓu chØ sè KCS ( kiÓu chØ sè) ®-îc ®Þnh nghÜa víi tõ khãa Type nh- sau: TYPE KiÓu_m¶ngT = ARRAY[kiÓu_chØ_sè] of kiÓu_phÇn_tö Sau khi ®· ®Þnh nghÜa kiÓu m¶ngT, mét biÕn A thuéc kiÓu m¶ng T ®-îc khai b¸o nh- sau: VAR A: KiÓu_M¶ngT; NÕu ch-a ®Þnh nghÜa kiÓu m¶ng trong phÇn Type ta cã thÓ khai b¸o trùc tiÕp biÕn A cïng víi kiÓu cña nã nh- sau: VAR A: Array[KiÓu_chØ_sè] of kiÓu_phÇn_tö;
  • 97. MM lµ mét m¶ng gåm 5 phÇn tö kiÓu Boolean, c¸c phÇn tö ®-îc ®¸nh dÊu qua chØ dÉn cña tªn 5 mµu s¾c. Mét ®iÒu l-u ý r»ng khi khai b¸o m¶ng, kiÓu chØ sè chØ cã thÓ lµ c¸c kiÓu ®¬n gi¶n sau: kÝ tù (nh- biÕn MC), ®o¹n con (VÝ dô ®o¹n con integer nh- c¸c kiÓu AI, AC), kiÓu liÖt kª do ng-êi sö dông ®Þnh nghÜa ra nh- biÕn MM vµ kiÓu Boolean. KiÓu chØ dÉn kh«ng ®-îc lµ kiÓu Real hoÆc Integer. NghÜa lµ kh«ng ®-îc viÕt: X: ARRAY[Integer] of integer; Y: ARRAY[Real] of integer; 11.2.3.Truy nhËp vµo m¶ng ViÖc truy nhËp vµo mét phÇn tö nµo ®ã cña m¶ng ®-îc thùc hiÖn qua tªn biÕn m¶ng, theo sau lµ gi¸ trÞ chØ sè ®Ó trong ngoÆc vu«ng. VÝ dô: MM[Red] MC['B'] 11.2.4.Thao t¸c trªn m¶ng - C¸c phÐp to¸n ®-îc sö dông trªn m¶ng bao gåm tÊt c¶ c¸c phÐp to¸n cña kiÓu v« h-íng chuÈn t-¬ng øng víi kiÓu d÷ liÖu cña m¶ng. - PhÇn tö cña m¶ng ®-îc hoµn toµn x¸c ®Þnh khi chØ sè cña phÇn tö Êy ®-îc x¸c ®Þnh. - C¸ch nhËp vµ xuÊt d÷ liÖu kiÓu m¶ng ®-îc thùc hiÖn b×nh th-êng b»ng thñ tôc Read, Write song cÇn chó ý tíi sù biÕn thiªn cña chØ sè. Ng-êi ta th-êng dïng vßng FOR ®Ó nhËp vµ xuÊt víi m¶ng.
  • 98. VÝ dô 11.4:ViÕt ch-¬ng tr×nh nhËp gi¸ trÞ cho c¸c phÇn tö cña m¶ng B ®· khai b¸o trong vÝ dô trªn. Writeln (' Vao so lieu cho mang B:'); FOR i:=1 TO 10 DO BEGIN Write ('B[',i,'] = '); Readln (b[i]); END; Trong ch-¬ng tr×nh trªn, ta dïng thªm mét biÕn i cã kiÓu integer lµm chØ dÉn. BiÕn i sÏ nhËn c¸c gi¸ trÞ tõ 1 ®Õn 10. KÕt qu¶ cña ch-¬ng tr×nh thÓ hiÖn trªn mµn h×nh nh- sau (c¸c con sè lµ c¸c gi¸ trÞ do ng-êi sö dông gâ vµo): Vao so lieu cho mang B: B[1] = 1 B[2] = 2 B[3] = 3 B[4] = 4 B[5] = 5 B[6] = 6 B[7] = 7 B[8] = 8 B[9] = 9 B[10] = 10
  • 99. 11.3. S¾p xÕp m¶ng Gi¶ sö ta cã m¶ng mét chiÒu gåm n phÇn tö a[1],...,a[n]. ViÖc s¾p xÕp c¸c phÇn tö trong m¶ng theo thø tù tõ nhá ®Õn lín cã thÓ thùc hiÖn b»ng ph-¬ng ph¸p sau: §Çu tiªn, ®em phÇn tö thø nhÊt lÇn l-ît so s¸nh víi c¸c phÇn tö tiÕp theo, nÕu kÕt qu¶ lµ lín h¬n th× ®em ®æi chç gi¸ trÞ cña hai phÇn tö so s¸nh. Sau l-ît ®Çu tiªn phÇn tö thø nhÊt sÏ cã gi¸ trÞ nhá nhÊt. Khi ®ã, ta l¹i tiÕp tôc ®em phÇn tö thø hai so s¸nh víi c¸c phÇn tö tiÕp theo vµ cø nh- thÕ thùc hiÖn cho ®Õn phÇn tö thø n-1. ë ®©y, ta ph¶i dïng ®Õn hai biÕn ch¹y lµ i vµ j. BiÕn i nhËn gi¸ trÞ tõ 1 ®Õn n-1, biÕn j nhËn gi¸ trÞ tõ i+1 ®Õn n. NÕu a[i]>a[j] th× ®em ®æi chç a[i] víi a[j]. Ch-¬ng tr×nh ®-îc viÕt nh- sau: VÝ dô 12.5
  • 100. PROGRAM SAPXEP; USES Crt; CONST n=10; VAR A: Array[1..n] of Integer; TG,i,j: Integer; BEGIN ClrScr; FOR i:=1 TO n DO BEGIN Write('a[',i,']= '); Readln(a[i]); END; { ** Sap xep cac phan tu theo thu tu tang dan **} FOR i:=1 TO n-1 DO FOR j:=i+1 TO n DO BEGIN IF a[i]>a[j] THEN BEGIN TG:=a[i]; a[i]:=a[j]; a[j]:=TG; END; END;
  • 101. { ** In ra cac phan tu cua bang sau sap xep **} Writeln('Cac phan tu cua bang la: '); FOR i:=1 TO n DO Write(a[i]:5); Readln; END. 11.4. T×m kiÕm trong m¶ng Gi¶ sö ta cã m¶ng mét chiÒu gåm n phÇn tö a[1],...,a[n]. Yªu cÇu ®Æt ra lµ ph¶i t×m trong m¶ng c¸c phÇn tö tháa m·n ®iÒu kiÖn t×m kiÕm cho tr-íc. §Ó thùc hiÖn c«ng viÖc nµy, ta tiÕn hµnh nh- sau: - DuyÖt qua toµn bé c¸c phÇn tö cña m¶ng. - NÕu phÇn tö nµo tháa yªu cÇu t×m kiÕm th× in ra c¸c phÇn tö ®ã. - NÕu kh«ng t×m ®-îc phÇn tö nµo th× in ra th«ng b¸o kh«ng cã. Ta cã thÓ ¸p dông thuËt gi¶i nµy trong vÝ dô t×m phÇn tö lín nhÊt cña m¶ng. Ch-¬ng tr×nh ®-îc viÕt nh- sau:
  • 102. VÝ dô 11.6: PROGRAM TIMKIEM; USES Crt; CONST n=10; VAR A: Array[1..n] of Integer; Max,i,chiso: Integer; BEGIN ClrScr; FOR i:=1 TO n DO BEGIN Write('a[',i,']= '); Readln(a[i]); END; { ** Tim kiem phan tu co gia tri lon nhat **} chiso:=1; FOR i:=2 TO n DO IF a[chiso]<a[i] THEN chiso:=i; { ** In ra phan tu co gia tri lon nhat **} Write('Phan tu lon nhat cua bang la: '); Write('a[',chiso,']= ',a[chiso]); Readln; END.
  • 103. 11.5 M¶ng hai chiÒu: Trong phÇn kh¸i niÖm cña m¶ng chóng ta ®· cã mét vÝ dô vÒ m¶ng hai chiÒu. Trong m¶ng nhiÒu chiÒu, kiÓu cña m¶ng cã thÓ lµ c¸c kiÓu cã cÊu tróc kÓ c¶ kiÓu m¶ng. VÝ dô sau cho thÊy viÖc khai b¸o mét m¶ng cã c¸c phÇn tö còng lµ m¶ng VÝ dô 11.7: TYPE PT: ARRAY[1..5] of real; Color = (Red, Blue, Green, White, Black); VAR MPT: ARRAY[1..3] of PT; Z: ARRAY['A'..'C'] of Color; VÝ dô khai b¸o trªn cã thÓ viÕt d-íi d¹ng sau: VAR MPT: ARRAY[1..3] of ARRAY[1..5] of Real; hoÆc th-êng ®-îc viÕt gän: VAR MPT: ARRAY[1..3,1..5] of Real; MPT ®-îc ®Þnh nghÜa nh- trªn chÝnh lµ ma trËn hai chiÒu 3 hµng vµ 5 cét ViÖc truy nhËp ®èi víi m¶ng MPT cã thÓ tiÕn hµnh qua hai c¸ch:
  • 104. - ViÕt chØ sè cña phÇn tö qua hai lÇn ®ãng më ngoÆc vu«ng. VÝ dô MPT[3][5] - ViÕt c¸c chØ sè c¸ch nhau bëi dÊu phÈy vµ cïng n»m trong hai dÊu ngoÆc vu«ng: MPT[3,5] C¸c c¸ch viÕt trªn lµ t-¬ng ®-¬ng nhau. M¶ng MPT ë trªn ®-îc ®Þnh nghÜa lµ m¶ng hai chiÒu. §Ó khëi t¹o gi¸ trÞ cho m¶ng nhiÒu chiÒu chóng ta cã thÓ dïng c¸c vßng lÆp FOR lång nhau. Ta cã thÓ xem vÝ dô d-íi ®©y minh häa vÒ viÖc nhËp vµ xuÊt d÷ liÖu cho mét m¶ng 2 chiÒu kÝch cì mxn phÇn tö. 11.6 ¦u khuyÕt ®iÓm cña m¶ng ¦u ®iÓm: cho phÐp t¹o c¸c danh s¸ch hay b¶ng vµ cã thÓ duyÖt dÔ dµng. Trong danh s¸ch th-êng cã thµnh phÇn ®i tr-íc vµ thµnh phÇn ®i sau ®-îc truy cËp b»ng c¸ch t¨ng hay gi¶m chØ sè. Nh-îc ®iÓm: tèn bé nhí. Khi lËp danh s¸ch hay b¶ng b»ng m¶ng ng-êi lËp tr×nh cÇn cho nã kÝch th-íc lín nh-ng nãi chung Ýt dïng hÕt nh- vËy sÏ l·ng phÝ bé nhí.
  • 105. Bµi tËp 11.1: ViÕt ch-¬ng tr×nh nhËp mét d·y gåm N ký tù. In ra mµn h×nh theo thø tù ng-îc l¹i víi thø tù nhËp. 11.2 Cho m¶ng A cã n phÇn tö nguyªn (n: h»ng sè). ViÕt ch-¬ng tr×nh x©y dùng l¹i m¶ng A theo yªu cÇu sau: A(1) = Min A(i) i=1,..,n A(2) = Max A(i) A(3) >=A(4) >=A(5)>=....>=A(n) 11.3. Cho m¶ng A cã n phÇn tö lµ nh÷ng gi¸ trÞ nguyªn (n: h»ng sè). ViÕt ch-¬ng tr×nh ®Ó - TÝnh trung b×nh céng c¸c phÇn tö d-¬ng trong m¶ng - S¾p xÕp m¶ng theo thø tù gi¶m dÇn 11.4. ViÕt ch-¬ng tr×nh nhËp vµo mét d·y gåm n sè nguyªn. In ra mµn h×nh: - Mét dßng gåm c¸c sè lÎ cña d·y - Mét dßng gåm c¸c sè ch½n cña d·y - Mét dßng gåm c¸c sè >=100 cña d·y - Mét dßng gåm c¸c sè <100 cña d·y. 11.5 . ViÕt ch-¬ng tr×nh nhËp mét d·y n sè nguyªn (n: h»ng sè). In ra mµn h×nh c¸c gi¸ trÞ kh¸c nhau cña d·y sè nµy. VÝ dô: NhËp vµo 5 20 15 5 20 17 In ra: 5 20 15 17
  • 106. 11.6. Cho mét d·y gåm n sè nguyªn d-¬ng cã 3 ch÷ sè, h·y s¾p xÕp d·y theo thø tù t¨ng dÇn cña ch÷ sè hµng ®¬n vÞ; hµng ®¬n vÞ b»ng nhau th× s¾p xÕp theo thø tù t¨ng dÇn cña hµng chôc; hµng ®¬n vÞ vµ hµng chôc b»ng nhau th× s¾p theo thø tù t¨ng dÇn cña hµng tr¨m. 11.7. Cho 2 m¶ng A, B ®· ®-îc s¾p xÕp theo thø tù t¨ng dÇn. H·y trén hai m¶ng ®ã l¹i víi nhau ®Ó cã m¶ng thø 3 lµ m¶ng C víi ®iÒu kiÖn m¶ng C còng ®-îc s¾p xÕp theo thø tù t¨ng dÇn ngay sau khi trén.
  • 107. Ch-¬ng 12: D÷ liÖu cã cÊu tróc: kiÓu chuçi (String) 12.1. Kh¸i niÖm: Chuçi (x©u kÝ tù) lµ mét kiÓu d÷ liÖu cã cÊu tróc th«ng dông trong Pascal. Trong ch-¬ng tr-íc, chóng ta ®· ®Þnh nghÜa h»ng chuçi, ®ã lµ mét d·y c¸c kÝ tù ®-îc bao bëi hai dÊu nh¸y ®¬n (‘’) §é dµi cña mét chuçi lµ sè c¸c ký tù t¹o thµnh chuçi tÝnh tõ ngay sau dÊu nh¸y më ®Õn ngay tr-íc dÊu nh¸y ®ãng. VÝ dô: ‘Turbo Pascal 6.0’ cã ®é dµi lµ 16 ‘’ cã ®é dµi lµ 0. Tr-êng hîp nµy ta gäi lµ chuçi rçng Chuçi cã ®é dµi tèi thiÓu lµ 0 vµ tèi ®a lµ 255. 12.2. Khai b¸o chuçi: Ta cã thÓ ®Þnh nghÜa mét kiÓu chuçi b»ng tõ khãa TYPE nh- sau: TYPE KiÓu chuçi = String[®é dµi cùc ®¹i cña chuçi] trong ®ã ®é dµi cùc ®¹i lµ mét h»ng nguyªn trong kho¶ng tõ 1 ®Õn 255.
  • 108. VÝ dô 12.1: TYPE Ho = String[18]; Ten=String[7]; Tinh=String[25]; VAR H1, H2, H3: HO; T: Ten; QQ: Tinh; Chó ý: Ngoµi c¸ch khai b¸o dïng Type vµ Var kÕt hîp nh- ë vÝ dô trªn, cã thÓ khai b¸o kiÓu d÷ liÖu míi String ngay trong khai b¸o Var. VAR BiÕn: String[®é dµi cùc ®¹i] VÝ dô 12..2: TYPE Hanghoa=String[40]; VAR TenHang:HangHoa; t-¬ng ®-¬ng víi c¸ch sau ®©y: Var TenHang: String[40];
  • 109. 12.3. C¸c thao t¸c trªn String 12.3.1. PhÐp g¸n: C¸c biÕn Srtring ®· khai b¸o cã thÓ nhËn gi¸ trÞ h»ng chuçi qua lÖnh g¸n: tªn biÕn chuçi := h»ng chuâi VÝ dô 12.3: H1:=‘Nguyen Van’; H2:=‘Tran’; H3:=‘Le’; T:=‘Hoa’; QQ:=‘Ha Noi 1992’; nÕu g¸n cho chuçi mét h»ng cã ®é dµi lín h¬n ®é dµi ®· khai b¸o th× nh÷ng ký tù d- ë bªn ph¶i chuçi bÞ bá qua. VÝ dô 12.4: VAR SS: String[5]; BEGIN SS:=‘123456789’; END. Khi ®ã biÕn SS sÏ chØ nhËn gi¸ trÞ lµ ‘12345’;
  • 110. 12.3.2. Truy nhËp vµo phÇn tö cña chuçi Ta cã thÓ truy nhËp vµo tõng ký tù cña chuçi b»ng c¸ch viÕt tªn chuçi kÌm thªm thø tù cña ký tù ®ã trong chuçi (chØ sè cña ký tù). ChØ sè nµy ch¹y tõ 1 ®Õn ®é dµi cña chuçi VÝ dô: if SS[3]=‘3’ then Write(‘Ch÷ thø ba cña chuçi SS lµ 3’); VÝ dô 12.5: ViÕt ch-¬ng tr×nh in dßng ch÷ trªn mµn h×nh theo kiÓu ®¸nh m¸y ch÷ (hiÖn tõng ký tù mét) PROGRAM Danh_may; USES Crt; VAR i: integer; Cau: String[80]; BEGIN ClrScr; Write('Nhap cau can danh: '); Readln(Cau); FOR i:=1 TO length(Cau) DO BEGIN TextColor(14); Write(Cau[i]); Delay(150); END; Readln; END.
  • 111. 12.3.3. PhÐp céng chuçi (ghÐp chuçi) Chuçi kÝ tù cã thÓ ®-îc sö dông nh- lµ c¸c to¸n h¹ng trong c¸c biÓu thøc ®Ó ghÐp ký tù qua dÊu céng (+). VÝ dô 12.6: S1:=‘ Truong Cao dang KTKTCNn ‘; S2:= ‘Khoa Tin - Kinh te’; S:=S2+S1 NÕu viÕt S:=S1+S2 th× S sÏ cã gi¸ trÞ lµ ‘Truong Cao dang KTKTCNn Khoa Tin - Kinh te’ 12.3.4. PhÐp so s¸nh Chuçi cã thÓ ®-îc dïng trong c¸c biÓu thøc quan hÖ ®Ó so s¸nh - Khi so s¸nh hai chuçi, c¸c kÝ tù cña hai chuçi ®-îc so s¸nh tõng cÆp mét tõ tr¸i qua ph¶i theo gi¸ trÞ cña b¶ng m· ASCII. - NÕu hai chuçi cã ®é dµi kh¸c nhau song cã sè kÝ tù gièng nhau ®Õn ®é dµi chuçi ng¾n h¬n th× chuçi cã ®é dµi ng¾n h¬n nµy ®-îc coi lµ nhá h¬n ‘FileName’ < ‘FileNameA’ - Hai chuçi ®-îc coi lµ b»ng nhau nÕu chóng gièng nhau hoµn toµn. 12.4. Mét sè hµm vµ thñ tôc trªn String Hµm Length Có ph¸p: Length(ST)
  • 112. C«ng dông: cho kÕt qu¶ lµ ®é dµi thùc (kh«ng ph¶i ®é dµi khai b¸o) cña chuçi St VÝ dô: Hoten:='Vu Dinh Du'; d:=length(Hoten); th× D cã gi¸ trÞ lµ 10 Hµm Concat Có ph¸p: Concat(ST1,ST2,..,STn) C«ng dông: Cho kÕt qu¶ mét chuçi míi lµ tæng cña c¸c x©u St1, ST2, .., Stn theo thø tù ®-îc liÖt kª VÝ dô: Hoten:='Vu Dinh Du'; QQ:='Ha noi'; Diem:='10 diem'; HS:=Concat(Hoten,‘ ',QQ,‘ ',Diem); th× HS lµ 'Vu Dinh Du Ha noi 10 diem‘ Hµm POS Có ph¸p: Pos(ST1,ST2)
  • 113. C«ng dông: Cho kÕt qu¶ lµ mét sè nguyªn x¸c ®Þnh vÞ trÝ ®Çu tiªn mµ chuçi ST1 lµ mét bé phËn cña chuçi ST2. NÕu ST1 kh«ng ph¶i lµ mét bé phËn cña ST2 th× hµm cho gi¸ trÞ 0 VÝ dô: ST1:='3456'; ST2:='12345678'; ST3:='6534'; Vt1:=Pos(ST1,ST2); Vt2:=Pos(ST3,ST2); th× Vt1 nhËn gi¸ trÞ 3, Vt2 nhËn gi¸ trÞ 0 Hµm COPY Có ph¸p: Copy(ST,Vt,d) trong ®ã VT, d lµ c¸c h»ng nguyªn C«ng dông: Cho kÕt qu¶ lµ mét phÇn cña chuçi ST tÝnh tõ vÞ trÝ VT vµ lÊy vÒ phÝa bªn ph¶i d kÝ tù VÝ dô: ST1:='Xinchaocacban'; ST2:=Copy(ST1,5,4); ST3:=Copy(ST1,1,8); Khi ®ã ST2 sÏ lµ chuçi ‘Chao’, Chuçi ST3 sÏ lµ 'Xin chao'
  • 114. Thñ tôc Write - Còng cã c¸ch in kh«ng qui c¸ch vµ cã qui c¸ch ®èi víi biÕn x©u. VÝ dô: Write(ST); (* in ra mµn h×nh chuçi ST *) Write(ST:10); (* in ra chuçi ST víi qui c¸ch chiÕm 10 chç. *) Thñ tôc Read - §Ó nhËp mét x©u ký tù tõ bµn phÝm ta cã thÓ dïng c¸c thñ tôc Read(ST) hoÆc Readln(ST). - Khi nhËp tõ bµn phÝm, kh«ng gâ c¸c dÊu nh¸y bao chuçi. - NÕu chØ nhÊn phÝm Enter khi ®-îc yªu cÇu nhËp th× chuçi ST lµ chuçi rçng Thñ tôc Delete Có ph¸p: Delete(ST,Vt,d) trong ®ã VT, d lµ c¸c h»ng nguyªn C«ng dông: xo¸ khái chuçi ST tÝnh tõ vÞ trÝ VT mét sè ký tù b»ng d ký tù tÝnh vÒ phÝa ph¶i. C¸c ký tù cña chuçi ST sÏ tù ®éng dån l¹i. VÝ dô: ST:=‘TURBO PASCAL’; Delete(ST,3,3); Khi ®ã chuçi ST sÏ nhËn gi¸ trÞ lµ ‘TU PASCAL’
  • 115. Thñ tôc Insert Có ph¸p: Insert(ST1,ST2,Vt) trong ®ã VT lµ mét h»ng nguyªn C«ng dông: chÌn chuçi ST1 vµo chuçi ST2 tÝnh tõ vÞ trÝ VT VÝ dô: ST1:=‘abcde’; ST2:=‘mnkh’; S:=insert(ST1,St2,3); Khi ®ã S nhËn gi¸ trÞ ‘mnabcdekh’; Thñ tôc STR Có ph¸p: STR(N,ST) trong ®ã N lµ mét h»ng sè hoÆc biÕn sè C«ng dông: t¹o thµnh chuçi ST tõ d·y sè N (nguyªn hoÆc thùc) víi ®é dµi cña chuçi ®-îc chØ ra trong c¸ch viÕt sè N VÝ dô: N1:=1992; N2:=3456789; STR(N1:5,ST1); STR(N2:10,ST2); Khi ®ã ST1 nhËn gi¸ trÞ ‘1992’ cßn ST2 nhËn gi¸ trÞ ‘3456789’.
  • 116. Thñ tôc Val Có ph¸p: Val(ST,N,M) trong ®ã ST lµ mét chuçi cã d¹ng sè (nguyªn hoÆc thùc) C«ng dông: ChuyÓn chuçi ST thµnh sè N, vµ g¸n cho biÕn Var. M lµ sè nguyªn ®Ó ph¸t hiÖn lçi: nÕu phÐp biÕn ®æi ®óng th× M cã gi¸ trÞ b»ng 0, nÕu sai do ST kh«ng biÓu diÔn ®óng sè nguyªn hay sè thùc, M sÏ nhËn gi¸ trÞ b»ng vÞ trÝ cña ký tù sai trong x©u St. VÝ dô: ST1:=1992; ST2:=‘4729.18’; ST3:=‘9376A64’; Val(ST1,N1,M); (* cho N1 lµ 1992, M=0 *); Val(ST2,N2,M) (* cho N2 lµ 4729.18, M=0 *); Val(ST3,N3,M) (* kh«ng cho N3, M=5 *);
  • 117. VÝ dô 12.8: Gâ vµo mét c©u tõ bµn phÝm. H·y ®Õm xem c©u cã bao nhiªu tõ PROGRAM DEM_TU; USES Crt; TYPE Day=String[60]; CONST KT=‘’; VAR S: Day; Vitri, Ghi, Dai: nteger; BEGIN ClrScr; Gotoxy(5,10); Write (‘ Ban hay go vao mot cau ‘); Readln (S); Ghi:=0; REPEAT Dai:=Length(S); Vitri:=Pos(KT,S);
  • 118. IF Vitri>0 THEN BEGIN Ghi:=Ghi+1; S:=Copy(S, Vitri+1, Dai-Vitri); END; UNTIL Vitri=0; Gotoxy(5,12); Writeln (‘ Cau da go vao co ‘, Ghi+1, ‘tu’); Readln; END. VÝ dô 12.9: Gâ vµo mét c©u qu¶ng c¸o. H·y lµm cho dßng qu¶ng c¸o ch¹y tõ ph¶i sang tr¸i. PROGRAM QuangCao; USES Crt; TYPE Day=String[60]; VAR d, c: Day; dai, i, rong: integer; BEGIN ClrScr; Gotoxy(5,10); Write (‘Hay go vao Dong quang cao’); Readln (d);
  • 119. d:=d+’ ‘; dai:=Length(d); FOR i:=1 TO dai DO BEGIN rong:=dai-i+1; c:=Copy(d,i,rong); Gotoxy(20,14); Write (c); Delay(200); END; END.
  • 120. Bµi tËp 12.1 . BiÕt r»ng c¸c biÕn St1, St2, St3 ®-îc khai b¸o nh- sau Var St1, St2, St3:String[12] TÝnh gi¸ trÞ cña ST3 sau khi thùc hiÖn c¸c lÖnh sau: St1:=‘KIEM TRA’; St2:=‘PASCAL’; St3:=St1+St2 ; 12.2 TÝnh gi¸ trÞ cña S (víi S cã kiÓu String) sau khi thùc hiÖn c¸c lÖnh d-íi ®©y: S:=‘F la mot so nguyen to’; Delete(S,3,5); 12.3. ViÕt ch-¬ng tr×nh nhËp vµo 10 chuçi ký tù. In ra chuçi cã chiÒu dµi dµi nhÊt, chuçi cã chiÒu dµi ng¾n nhÊt 12.4. ViÕt ch-¬ng tr×nh nhËp vµo mét chuçi vµ in ra mµn h×nh chuçi ®ã theo tõng d¹ng sau: VÝ dô: NhËp vµo chuçi 'Toi di hoc' a. In ra d¹ng b. In ra d¹ng c. In ra d¹ng T T T TO TO TO TOI TOI TOI ......... ........ ......... TOI DI HOC TOI DI HOC TOI DI HOC
  • 121. 12.5. ViÕt ch-¬ng tr×nh nhËp vµo mét chuçi gåm nhiÒu tõ c¸ch nhau bëi dÊu c¸ch. In ra tõng tõ mét cña chuçi ®ã, mçi tõ in trªn mét dßng. VÝ dô: NhËp vµo TOI DI HOC In ra mµn h×nh: TOI DI HOC 12.6. ViÕt ch-¬ng tr×nh nhËp vµo mét chuçi sau ®ã in ra chuçi ®ã theo chiÒu ng-îc l¹i. VÝ dô: NhËp: 123 456 789 In ra 987 654 321 12.7. ViÕt ch-¬ng tr×nh nhËp vµo mét c©u gåm nhiÒu tõ c¸ch nhau bëi kho¶ng tr¾ng. In ra sè tõ trong c©u ®ã 12.8. ViÕt ch-¬ng tr×nh nhËp vµo mét c©u vµ ®Õm sè lÇn xuÊt hiÖn cña tõng ký tù trong c©u ®ã VÝ dô: NhËp vµo 'Troi mua to' In ra: Sè lÇn xuÊt hiÖn cña ký tù T lµ 1 Sè lÇn xuÊt hiÖn cña ký tù r lµ 1 Sè lÇn xuÊt hiÖn cña ký tù o lµ 2 ... 12.9. ViÕt ch-¬ng tr×nh nhËp vµo mét c©u qu¶ng c¸o vµ in ra trªn mµn h×nh dßng qu¶ng c¸o ®ã ®-îc ch¹y tõ tr¸i sang ph¶i
  • 122. ®ã ®-îc ch¹y tõ tr¸i sang ph¶i 12.10. T¹o c¸c hµm xö lý chuçi víi tªn vµ chøc n¨ng nh- sau: a. Function Left(S:String; n:byte):String Chøc n¨ng: cho kÕt qu¶ lµ mét chuçi con lÊy ra n ký tù tõ chuçi S tÝnh tõ vÞ trÝ ngoµi cïng bªn tr¸i sang ph¶i cña chuçi b. Function RIGHT(S:String;n:byte):String Chøc n¨ng: Cho kÕt qu¶ lµ mét chuçi con lÊy ra n ký tõ tõ chuçi S tÝnh tõ vÞ trÝ ngoµi cïng bªn ph¶i sang tr¸i cña chuçi c. Fuction RTRIM(S:String):String Chøc n¨ng: lo¹i bá c¸c ký tù tr¾ng n»m ë phÇn cuèi cña chuçi S d. Function LTRIM(S:String):String Chøc n¨ng: Lo¹i bá c¸c ký tù tr¾ng n»m ë ®Çu chuçi S e. Function IIF(a:boolean;S1,S2:String):String Chøc n¨ng: Tr¶ vÒ chuçi S1 nÕu a=TRUE, vÒ S2 nÕu a=False VÝ dô: IIF(Tuoi<17,'Thieu nien','Thanh nien');