M· sè: GD 08 HM 11
LỜI NÓI ĐẦU
Con người liên lạc với nhau thông qua ngôn ngữ, tạo ra các mẫu
từ ngữ và âm thanh. Ngôn ngữ lập trình cũng tương tự như vậy, đó
là một tập từ ngữ và ký hiệu cho phép lập trình viên hoặc người
dùng có thể tương tác với máy tính. Việc hiểu biết và nắm vững các
ngôn ngữ lập trình là thật sự cần thiết đối với các lập trình viên. Mặc
dù đã có hàng trăm ngôn ngữ lập trình được sinh ra, song chỉ có một
số ít là được sử dụng rộng rãi và được xem là một chuẩn công
nghiệp. Các ngôn ngữ này đều có thể được sử dụng trên nhiều loại
máy tính khác nhau. Hiện nay, ngôn ngữ lập trình Pascal là ngôn
ngữ bậc cao đang được sử dụng khá rộng rãi trong lập trình.
Nhằm giúp các bạn sinh viên, nghiên cứu sinh, lập trình viên có
được một tài liệu khá hệ thống về ngôn ngữ lập trình Pascal, NXB
Thông tin và Truyền thông trân trọng giới thiệu cuốn sách “Giáo trình
ngôn ngữ lập trình Pascalʺ do TS. Nguyễn Ngọc Cương (Trưởng khoa
Toán tin, Học viện An ninh nhân dân) làm chủ biên.
Nội dung cuốn sách gồm 12 chương:
Chương 1: Các thành phần cơ bản của ngôn ngữ lập trình Pascal
Chương 2: Các kiểu dữ liệu đơn giản chuẩn
Chương 3: Các khai báo hằng, biến, kiểu, biểu thức và câu lệnh
Chương 4: Thủ tục nhập ‐ xuất dữ liệu
Chương 5: Kiểu vô hướng liệt kê và kiểu khoảng con
Chương 6: Các câu lệnh có cấu trúc
Chương 7: Chương trình con
Chương 8: Kiểu xâu ký tự (String)
Chương 9: Kiểu dữ liệu có cấu trúc
Chương 10: Màn hình và chế độ đồ họa
Chương 11: Con trỏ và cấu trúc dữ liệu động
Chương 12: Tin học ứng dụng trong tính toán
Phần cuối của cuốn sách là một số đề thi tổng hợp để bạn đọc
tham khảo.
Hy vọng cuốn sách không chỉ dành riêng cho các Học viên Học
viện An ninh Nhân dân, Học viện Cảnh sát Nhân dân, còn là tài liệu
tham khảo bổ ích cho các cán bộ giảng dạy, sinh viên các trường đại
học cũng như các kỹ sư, kỹ thuật viên chuyên ngành Công nghệ
Thông tin, Điện tử Viễn thông và Tự động hóa.
Nhà xuất bản xin trân trọng giới thiệu cùng bạn đọc và rất mong
nhận được ý kiến đóng góp của quý vị. Mọi ý kiến đóng góp xin gửi
về Nhà xuất bản Thông tin và Truyền thông ‐ 18 Nguyễn Du, Hà Nội
hoặc gửi trực tiếp cho tác giả theo địa chỉ:
[email protected].
Trân trọng cảm ơn./.
NXB THÔNG TIN VÀ TRUYỀN THÔNG
Ch−¬ng 1: C¸c thμnh phÇn c¬ b¶n cña ng«n ng÷ lËp tr×nh Pascal
5
Chương 1
CÁC THÀNH PHẦN CƠ BẢN
CỦA NGÔN NGỮ LẬP TRÌNH PASCAL
1.1. Giíi thiÖu ng«n ng÷ lËp tr×nh Turbo Pascal
- Lµ ng«n ng÷ lËp tr×nh bËc cao, cã cÊu tróc vµ cã tÝnh v¹n n¨ng
do gi¸o s− Niklaus Wirth (t¸c gi¶ cña cuèn "CÊu tróc d÷ liÖu + Gi¶i
thuËt = Ch−¬ng tr×nh) s¸ng t¸c vµ c«ng bè vµo ®Çu nh÷ng n¨m 1970
lÊy tªn nhµ b¸c häc bËc thÇy ng−êi Ph¸p lµ Pascal ®Ó ®Æt tªn. Lóc ®Çu
Pascal ®−îc s¸ng t¹o ra víi môc ®Ých lµm ng«n ng÷ d¹y häc.
- Pascal lµ mét ng«n ng÷ cã ®Þnh kiÓu m¹nh mÏ. §iÒu ®ã cã nghÜa
lµ mäi biÕn vµ h»ng cña mét kiÓu d÷ liÖu kh«ng thÓ tù do ®em trén lÉn
víi c¸c biÕn vµ h»ng cña mét kiÓu d÷ liÖu kh¸c. ViÖc ®Þnh kiÓu mét
c¸ch chÆt chÏ nh− vËy ®ßi hái ng−êi lËp tr×nh ph¶i cã c¸c biÓu thøc
t−¬ng thÝch nhau vÒ kiÓu d÷ liÖu.
- 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, t¸ch ra khái phÇn cßn l¹i cña ch−¬ng tr×nh ®Ó ng−êi lËp
tr×nh cã thÓ gi¶i quyÕt dÇn tõng phÇn mét, tõng khèi mét vµ thËm chÝ
cã thÓ cho nhiÒu ng−êi cïng tham gia lËp tr×nh, mçi ng−êi phô tr¸ch
mét vµi khèi. Mçi khèi øng víi mét nhiÖm vô cô thÓ vµ x¸c ®Þnh,
th−êng ®−îc thùc hiÖn b»ng c¸c ch−¬ng tr×nh con. B»ng c¸ch nµy ta cã
thÓ viÕt c¸c ch−¬ng tr×nh con sao cho c¸c sù kiÖn x¶y ra trong ®ã
kh«ng lµm ¶nh h−ëng tíi c¸c phÇn kh¸c n»m ngoµi ch−¬ng tr×nh. TÝnh
cÊu tróc cña Pascal ®−îc thÓ hiÖn trªn 3 mÆt:
6
Gi¸o tr×nh Ng«n ng÷ lËp tr×nh Pascal
+ CÊu tróc vÒ mÆt d÷ liÖu: Tõ c¸c d÷ liÖu ®· cã (kiÓu ®¬n gi¶n
chuÈn hoÆc d÷ liÖu cã cÊu tróc) ta cã thÓ x©y dùng c¸c cÊu tróc d÷ liÖu
phøc t¹p h¬n.
+ CÊu tróc vÒ mÆt lÖnh: Tõ c¸c lÖnh ®· cã (lÖnh ®¬n gi¶n hoÆc
lÖnh cã cÊu tróc) ta cã thÓ nhãm chóng l¹i víi nhau vµ ®Æt gi÷a hai tõ
khãa Begin vµ End thµnh c©u lÖnh phøc t¹p h¬n, gäi lµ lÖnh hîp thµnh
hay lÖnh ghÐp.
+ CÊu tróc vÒ mÆt ch−¬ng tr×nh: Mét ch−¬ng tr×nh cã thÓ chia
thµnh c¸c m«-®un ch−¬ng tr×nh ®éc lËp (ch−¬ng tr×nh con).
1.2. C¸c thμnh phÇn c¬ b¶n cña ng«n ng÷ Pascal
§−îc x©y dùng tõ mét bé ký tù, c¸c ch÷ viÕt vµ ch÷ sè ®−îc kÕt
hîp l¹i thµnh c¸c tõ, c¸c tõ t¹o thµnh c¸c c©u, tÊt c¶ ®Òu ph¶i tu©n theo
mét có ph¸p vµ ng÷ ph¸p chÆt chÏ.
a. Bé ch÷ viÕt dïng trong Turbo Pascal
- Bé 26 ch÷ c¸i La-tinh: A, B, C,.., Z; a, b, c,..z
- Ký tù g¹ch nèi: "_"
- Bé ch÷ sè thËp ph©n: 0, 1, 2,.., 9
- C¸c ký hiÖu to¸n häc th«ng dông: +, - , *, /, ( )
- C¸c ký hiÖu kh¸c : , =, <, >, [], &, #, $,...
DÊu c¸ch (Space) thùc sù lµ kho¶ng trèng dïng ®Ó ng¨n c¸ch
c¸c tõ.
C¸c ch÷ ¶ RËp: α, β, γ,... vµ c¸c ch÷ sè La M· kh«ng thuéc bé ký
tù cña Turbo Pascal.
b. Tõ khãa
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.
Ch−¬ng 1: C¸c thμnh phÇn c¬ b¶n cña ng«n ng÷ lËp tr×nh Pascal
7
- Tõ khãa chung: program, begin, end, procedure, function
- Tõ khãa ®Ó khai b¸o: const, var, type, label, array, string, record,
set, file of
- 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
- Tõ khãa c¸c phÐp to¸n: and, or, not, in, div, mod
- Tõ khãa NUL.
C¸c tõ khãa cã thÓ viÕt b»ng ch÷ th−êng hay ch÷ hoa. Khi ®ã gi¸
trÞ vµ ý nghÜa cña chóng lµ nh− nhau, ®iÒu nµy kh¸c víi ng«n ng÷
C/C++ mµ chóng ta nghiªn cøu sau nµy.
c. Tªn gäi (Identifier - §Þnh danh)
Lµ mét kh¸i niÖm quan träng dïng ®Ó x¸c ®Þnh c¸c ®¹i l−îng kh¸c
nhau trong ch−¬ng tr×nh nh− tªn biÕn, tªn h»ng, tªn kiÓu, tªn ch−¬ng
tr×nh con, tªn ch−¬ng tr×nh, tªn tÖp, tªn nh·n. Tªn trong Pascal ®−îc
thµnh lËp theo quy t¾c: Lµ mét d·y ký tù bao gåm ch÷ c¸i, ch÷ sè vµ
dÊu g¹ch nèi. Ký tù ®Çu tiªn kh«ng ®−îc lµ ch÷ sè, tªn cã thÓ cã ®é
dµi tèi ®a lµ 127 ký tù, nh−ng chØ cã 63 ký tù ®Çu tiªn lµ cã ý nghÜa.
Tªn kh«ng ®−îc trïng víi tõ khãa. Pascal kh«ng ph©n biÖt ch÷ th−êng
vµ ch÷ hoa trong mét tªn.
Tªn chuÈn: Mét sè tªn ®· ®−îc ®Þnh nghÜa s½n trong Pascal gäi lµ
c¸c tªn chuÈn. Sù kh¸c nhau gi÷a tªn chuÈn vµ tõ khãa lµ: ng−êi dïng
cã thÓ ®Þnh nghÜa l¹i c¸c tªn chuÈn hoÆc dïng tªn chuÈn vµo viÖc kh¸c
nÕu muèn, cßn tõ khãa th× bÞ nghiªm cÊm dïng vµo viÖc kh¸c tr¸i víi
quy ®Þnh cña Pascal.
Mét sè tªn chuÈn cña Pascal: boolean, char, integer, word, byte,
real, text, false, true, maxint, eof, eoln. C¸c hµm chuÈn: abs, arctan,
chr, cos, sin. C¸c thñ tôc chuÈn: write, writeln, read, readln...
8
Gi¸o tr×nh Ng«n ng÷ lËp tr×nh Pascal
VÝ dô: Ta cã thÓ ®Þnh nghÜa ra mét hµm cã tªn lµ SIN(x) ®Ó tÝnh
gi¸ trÞ tuyÖt ®èi cña x (nÕu muèn). Song kh«ng thÓ dïng tõ khãa Begin
®Ó lµm bÊt cø viÖc g× ngoµi quy ®Þnh cña b¶n th©n nã.
d. DÊu chÊm ph¶y (;)
DÊu chÊm ph¶y ";" ®−îc dïng ®Ó ng¨n c¸ch c¸c c©u lÖnh cña
Pascal vµ kh«ng thÓ thiÕu ®−îc. Kh«ng nªn hiÓu dÊu ";" lµ dÊu kÕt
thóc lÖnh.
e. Lêi gi¶i thÝch
C¸c lêi b×nh luËn, c¸c lêi gi¶i thÝch cã thÓ ®−a vµo bÊt kú chç nµo
trong ch−¬ng tr×nh ®Ó cho ch−¬ng tr×nh dÔ hiÓu, dÔ ®äc mµ kh«ng lµm
¶nh h−ëng ®Õn c¸c phÇn kh¸c. Lêi gi¶i thÝch ®−îc ®Æt gi÷a hai dÊu
ngoÆc mãc { } hoÆc gi÷a hai côm dÊu (* *). Trong ch−¬ng tr×nh cÇn cã
nh÷ng lêi gi¶i thÝch ®Ó ch−¬ng tr×nh thªm dÔ hiÓu.
Turbo Pascal quy ®Þnh nÕu më lêi gi¶i thÝch b»ng dÊu (* th× ph¶i
®ãng l¹i b»ng dÊu *) chø kh«ng ®−îc ®ãng l¹i b»ng dÊu }. NÕu më
b»ng dÊu { th× ph¶i ®ãng l¹i b»ng dÊu } chø kh«ng ®−îc ®ãng l¹i b»ng
dÊu *). DÊu më cã thÓ cã nhiÒu lÇn tr−íc mét dÊu ®ãng.
1.3. CÊu tróc chung cña mét ch−¬ng tr×nh Pascal
CÊu tróc chung tæng qu¸t nhÊt cña mét ch−¬ng tr×nh Pascal gåm
ba phÇn:
Program Tªn_Ch−¬ng_Tr×nh; {Tiªu ®Ò}
Uses..., Label...; Const...; Type...; Var... {PhÇn khai
b¸o d÷ liÖu}
Procedure... {PhÇn m« t¶ ch−¬ng tr×nh con}
Function...
Begin {Th©n ch−¬ng tr×nh chÝnh}
{C¸c lÖnh ®−îc viÕt ë ®©y}
End. {KÕt thóc ch−¬ng tr×nh}
Ch−¬ng 1: C¸c thμnh phÇn c¬ b¶n cña ng«n ng÷ lËp tr×nh Pascal
9
1.3.1. PhÇn tªn ch−¬ng tr×nh
PhÇn tªn ch−¬ng tr×nh b¾t ®Çu b»ng tõ khãa Program tiÕp theo lµ
tªn do ng−êi lËp tr×nh ®Æt cã ý nghÜa nµo ®ã ®Æc tr−ng cho c«ng viÖc
cña ch−¬ng tr×nh vµ kÕt thóc b»ng dÊu chÊm ph¶y ";". PhÇn tiªu ®Ò
chiÕm mét dßng vµ cã thÓ kh«ng cã còng ®−îc.
1.3.2. PhÇn khai b¸o
PhÇn nµy cã nhiÖm vô khai b¸o c¸c th− viÖn cã s½n cÇn sö dông
trong ch−¬ng tr×nh, m« t¶ ®èi t−îng bµi to¸n, m« t¶ d÷ liÖu... sÏ ®−îc
ch−¬ng tr×nh xö lý. §−îc chia thµnh 7 kiÓu khai b¸o víi c¸c tõ khãa sau:
Uses Crt, Printer; (Khai b¸o sö dông c¸c th− viÖn)
Label (Khai b¸o nh·n)
Const (Khai b¸o c¸c h»ng sè, h»ng ký tù)
Type (M« t¶ c¸c kiÓu d÷ liÖu míi)
Var (Khai b¸o c¸c biÕn)
Procedure (Khai b¸o thñ tôc)
Function (Khai b¸o hµm)
C¸c phÇn khai b¸o cã thÓ cã hoÆc kh«ng tïy theo nhu cÇu. Tuy
nhiªn víi Turbo Pascal for Windows b¾t buéc ph¶i khai b¸o sö dông
c¸c th− viÖn.
1.3.3. PhÇn th©n ch−¬ng tr×nh
PhÇn nµy n»m gi÷a hai tõ khãa BEGIN vµ END. Sau tõ khãa END
lµ dÊu chÊm ®Ó b¸o kÕt thóc ch−¬ng tr×nh. PhÇn nµy b¾t buéc ph¶i cã
®èi víi mäi ch−¬ng tr×nh, nã chøa c¸c lÖnh ®Ó xö lý c¸c ®èi t−îng sè
liÖu ®· ®−îc m« t¶ trong phÇn khai b¸o.
1.3.4. Giíi thiÖu phÇn mÒm Turbo Pascal
Turbo Pascal lµ s¶n phÈm cña h·ng BORLAND (Mü). Tõ ngµy
xuÊt b¶n ®Çu tiªn ®Õn nay ®· qua nhiÒu lÇn t¸i b¶n, mçi lÇn t¸i b¶n ®·
10
Gi¸o tr×nh Ng«n ng÷ lËp tr×nh Pascal
cho mét phiªn b¶n míi h¬n víi nhiÒu c¶i tiÕn h¬n. C¸c phiªn b¶n ®ang
®−îc sö dông hiÖn nay lµ 7.0 vµ Turbo Pascal for Windows. §Æc biÖt
lµ Turbo Pascal 7.0 thÝch hîp cho c¸c m¸y vi tÝnh cã dung l−îng bé
nhí nhá (640kB), tèc ®é thÊp, v× vËy phiªn b¶n 7.0 ®−îc chän lµm
mÉu ®Ó giíi thiÖu trong phÇn nµy.
a. C¸c tËp tin cña Turbo Pascal
TURBO.EXE: So¹n th¶o, dÞch vµ liªn kÕt ch−¬ng tr×nh theo menu.
TURBO.TPL: TËp tin th− viÖn, l−u c¸c ®¬n vÞ chuÈn ®Ó ch¹y víi
TURBO.EXE
TINST.EXE: Cung cÊp c¸c tiÖn Ých cho phÐp cµi ®Æt c¸c th«ng sè
cña TURBO.EXE nh− mµu ch÷, mµu nÒn, viÒn cöa sæ…
TPC.EXE: Tr×nh biªn dÞch ®éc lËp kh«ng th«ng qua TURBO.EXE
TPMOVER.EXE: ChuyÓn c¸c ®¬n vÞ ch−¬ng tr×nh tù t¹o sang tËp
tin th− viÖn chuÈn TPL
README: tËp tin v¨n b¶n chøa c¸c th«ng tin cña Turbo Pascal
README.COM: Ch−¬ng tr×nh giíi thiÖu c¸c hiÓu biÕt s¬ bé
tr−íc khi sö dông Turbo Pascal.
GRAPH.TPU: §¬n vÞ ®å häa
TURBO.TPH: Cung cÊp c¸c gióp ®ì khi lËp tr×nh
*.BGI: Chøa c¸c font mµn h×nh
*.CHR: Chøa c¸c font ch÷ trong chÕ ®é ®å häa.
b. Tæ chøc c¸c tËp tin trªn ®Üa
Dïng ch−¬ng tr×nh cµi ®Æt INSTALL.EXE vµ tr¶ lêi tõng c©u hái
cña ch−¬ng tr×nh, c¸c tËp tin sÏ tù ®éng bung ra ghi vµo trong ®Üa cøng.
NÕu sö dông Turbo Pascal trªn ®Üa mÒm th× tèi thiÓu ph¶i cã 2 tËp
tin TURBO.EXE vµ TURBO.TPL ®Ó ch¹y ®−îc ch−¬ng tr×nh.
Ch−¬ng 1: C¸c thμnh phÇn c¬ b¶n cña ng«n ng÷ lËp tr×nh Pascal
11
c. Khëi ®éng phÇn mÒm Turbo Pascal
- §−a hÖ ®iÒu hµnh vµo lµm viÖc trªn th− môc cã tËp tin
TURBO.EXE
- Sau khi gâ vµo c©u lÖnh trªn vµ bÊm phÝm Enter, chØ ®é vµi gi©y
ta sÏ thÊy xuÊt hiÖn trªn mµn h×nh:
+ Hµng trªn cïng lµ nh÷ng thùc ®¬n chÝnh cña Pascal (Main
Menu), gåm cã c¸c menu: File, Edit, Run, Compile, Option, Debug.
+ Cöa sæ h×nh ch÷ nhËt mµu tr¾ng ë gi÷a mµn h×nh lµ nh÷ng dßng
tù giíi thiÖu v¾n t¾t cña TP7.0. Khi bÊm Enter sÏ mÊt khung cöa sæ
nµy ®Ó dµnh toµn bé mµn h×nh cho ta so¹n th¶o ch−¬ng tr×nh.
1.3.5. C¸c b−íc c¬ b¶n ®Ó ch¹y mét ch−¬ng tr×nh Turbo Pascal
B−íc 1: Khëi ®éng Turbo Pascal
Víi Turbo Pascal ch¹y trªn m«i tr−êng DOS, chuyÓn ®Þa chØ lµm
viÖc ®Õn th− môc chøa File TURBO.EXE vµ ch¹y file nµy. Víi Turbo
Pascal ch¹y trªn m«i tr−êng Windows, nh¸y ®óp chuét t¹i biÓu t−îng
Shortcut cña Turbo Pascal hoÆc khëi ®éng tõ nót lÖnh
Start/Programs/TPW råi chän biÓu t−îng TPW. Khi ®ã xuÊt hiÖn mµn
h×nh so¹n th¶o víi c¸c file ch−¬ng tr×nh ®−îc më ra lµ c¸c file mµ ta
ch−a ®ãng l¹i khi tho¸t khái Pascal ë lÇn ch¹y tr−íc. NÕu muèn ta cã
thÓ ®ãng c¸c file ®ã l¹i vµ më mét file míi cã tªn NANAME00.PAS.
B−íc 2: So¹n th¶o néi dung ch−¬ng tr×nh
a. C¸c thao t¸c víi file ch−¬ng tr×nh trong khi so¹n th¶o
F2: Ghi vµo ®Üa (SAVE)
F3: Më file kh¸c (LOAD)
Ctrl-F2: Ghi vµo tªn file kh¸c
Directory: Danh môc file ch−¬ng tr×nh
OS Shell: Ra DOS t¹m thêi
12
Gi¸o tr×nh Ng«n ng÷ lËp tr×nh Pascal
b. C¸c kü n¨ng so¹n th¶o (menu edit)
Ctrl-Y: Xãa c¶ dßng ký tù chøa con trá, c¸c dßng ë d−íi sÏ dån lªn
Ctrl-Q-Y: Xãa phÇn cuèi dßng kÓ tõ con trá
Ctrl-K-Y: Xãa c¶ mét khèi ký tù
Ctrl-Q-F: T×m kiÕm mét tõ nµo ®ã
Ctrl-Q-A: T×m vµ thay thÕ mét tõ nµo ®ã
B−íc 3: DÞch thö, söa lçi có ph¸p vμ ch¹y ch−¬ng tr×nh
Alt-F9: Biªn dÞch ch−¬ng tr×nh ®ang lµm viÖc ®Ó kiÓm tra c¸c lçi
có ph¸p, hoÆc nhÊn phÝm F9 ®Ó dÞch thö.
Ctrl-F9: Ch¹y ch−¬ng tr×nh ®ang ®−îc lµm viÖc trªn mµn h×nh
so¹n th¶o.
B−íc 4: Gì rèi ch−¬ng tr×nh
Chän chøc n¨ng ch¹y tõng b−íc ®Ó gì rèi ch−¬ng tr×nh. NhÊn
phÝm F7.
B−íc 5: Tho¸t khái ch−¬ng tr×nh
Tho¸t khái Turbo Pascal b»ng c¸ch nhÊn tæ hîp phÝm Alt + X ®èi
víi Turbo Pascal ch¹y trªn DOS hoÆc Alt + F4 ®èi víi Turbo Pascal
ch¹y trªn Windows.
13
Ch−¬ng 2: C¸c kiÓu d÷ liÖu ®¬n gi¶n chuÈn
Chương 2
CÁC KIỂU DỮ LIỆU ĐƠN GIẢN CHUẨN
2.1. Kh¸i niÖm vÒ kiÓu d÷ liÖu
Kh¸i niÖm kiÓu d÷ liÖu trong Pascal còng nh− c¸c ng«n ng÷ lËp
tr×nh kh¸c lµ rÊt quan träng, nã x¸c ®Þnh tËp hîp gi¸ trÞ mµ biÕn cã thÓ
nhËn. M« t¶ kiÓu sÏ quy ®Þnh lo¹i gi¸ trÞ cña biÕn vµ cung cÊp cho
ch−¬ng tr×nh dÞch nh÷ng th«ng tin cÇn thiÕt. C¸c kiÓu d÷ liÖu trong
Pascal nh− kiÓu integer, real, char, boolean, byte ®−îc gäi lµ c¸c kiÓu
d÷ liÖu ®¬n gi¶n v× chóng lµ c¸c d÷ liÖu kh«ng ph©n chia ®−îc n÷a.
Nh− vËy, mét kiÓu d÷ liÖu ®−îc ®Þnh nghÜa lµ 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. Nãi c¸ch kh¸c mét kiÓu d÷ liÖu lµ mét tËp hîp ®−îc quy
®Þnh vÒ cÊu tróc, kho¶ng gi¸ trÞ, c¸ch biÓu diÔn vµ c¸c thao t¸c xö lý.
D÷ liÖu trong Turbo Pascal ®−îc chia thµnh hai líp lín lµ kiÓu d÷
liÖu ®¬n gi¶n (Simple Type) vµ kiÓu d÷ liÖu cã cÊu tróc (Structure Type).
KiÓu d÷ liÖu biÓu diÔn mét gi¸ trÞ ®−îc gäi lµ kiÓu d÷ liÖu ®¬n
gi¶n, bao gåm:
- KiÓu logic (Boolean)
- KiÓu sè nguyªn (Integer)
- KiÓu ký tù (Character)
- KiÓu v« h−íng liÖt kª (Enumerated scalar)
- KiÓu ®o¹n con (Subrage)
- KiÓu sè thùc (Real)
- KiÓu chuçi ký tù (String).
14
Gi¸o tr×nh Ng«n ng÷ lËp tr×nh Pascal
N¨m kiÓu ®Çu lµ kiÓu d÷ liÖu ®Õm ®−îc (hay cã thø tù), chóng
®−îc dïng lµm chØ sè m¶ng vµ trong c¸c to¸n tö ®iÒu khiÓn.
KiÓu d÷ liÖu cã cÊu tróc bao gåm: M¶ng, tËp hîp, b¶n ghi vµ tÖp.
2.2. KiÓu logic (Boolean)
Mét tËp hîp Logic Boolean lµ mét tËp hîp chØ cã hai gi¸ trÞ True
(§óng) hoÆc False (Sai).
- Mét d÷ liÖu thuéc kiÓu logic lµ mét ®¹i l−îng chØ cã thÓ nhËn
mét trong hai gi¸ trÞ logic True hoÆc False.
- C¸c phÐp to¸n cã thÓ ¸p dông trªn kiÓu logic: AND, OR, NOT,
XOR. Sau ®©y lµ b¶ng gi¸ trÞ cña c¸c phÐp to¸n:
A
B
A AND B
A OR B
A XOR B
NOT A
True
True
True
True
False
False
True
False
False
True
True
False
False
True
False
True
True
True
False
False
False
False
False
True
C¸c biÓu thøc quan hÖ (so s¸nh) lu«n cho kÕt qu¶ kiÓu Boolean.
Cã c¸c phÐp to¸n quan hÖ sau: <>, =, >=, <=, >, <
Hai vÕ cña biÓu thøc so s¸nh ph¶i cïng kiÓu nhau (ngo¹i trõ kiÓu
sè thùc vµ kiÓu sè nguyªn) vµ chóng cã thÓ lµ c¸c kiÓu: Real, Integer,
Boolean, Char, v« h−íng do ng−êi sö dông ®Þnh nghÜa.
Gi¸ trÞ False ®−îc coi lµ nhá h¬n (®øng tr−íc) True.
2.3. KiÓu sè nguyªn (Integer)
- Trong to¸n häc, sè nguyªn lµ tËp hîp c¸c sè cã gi¸ trÞ nguyªn tõ
- ∞ ÷ +∞. Nh−ng do giíi h¹n biÓu diÔn cña m¸y tÝnh còng nh− ®Ó tiÕt
kiÖm bé nhí nªn Turbo Pascal cung cÊp n¨m kiÓu sè nguyªn ®−îc
®Þnh nghÜa víi c¸c tõ khãa t−¬ng øng víi ph¹m vi biÓu diÔn cña kiÓu
15
Ch−¬ng 2: C¸c kiÓu d÷ liÖu ®¬n gi¶n chuÈn
vµ sè Byte cÇn thiÕt ®Ó biÓu diÔn mét gi¸ trÞ thuéc kiÓu sè nguyªn
t−¬ng øng.
KiÓu
Ph¹m vi biÓu diÔn
Sè Byte
Integer
-32768..32767
2
Byte
0..25
1
Word
0..65535
2
Shortint
-128..127
1
Longint
-2147483648..2147483647
4
- C¸c phÐp to¸n sè häc ®èi víi sè nguyªn cho kÕt qu¶ lµ gi¸ trÞ
nguyªn.
+ Céng (+), Trõ (-), nh©n (*)
+ DIV: Chia lÊy phÇn nguyªn
+ MOD: Chia lÊy phÇn d−
+ Hµm ODD(n): KiÓm tra tÝnh ch½n lÎ cña mét sè nguyªn, cho kÕt
qu¶ lµ True nÕu n lµ mét sè lÎ, False nÕu n lµ mét sè ch½n.
+ C¸c phÐp to¸n quan hÖ (<>, =, >=, <=, >, <) cã thÓ ¸p dông cho
c¸c to¸n h¹ng lµ sè nguyªn vµ cho kÕt qu¶ tr¶ vÒ kiÓu Boolean.
Chó ý: Khi thùc hiÖn c¸c phÐp tÝnh sè häc ®èi víi sè nguyªn, cÇn
hÕt søc thËn träng xem c¸c phÐp to¸n ®ã cã cho kÕt qu¶ v−ît khái
ph¹m vi biÓu diÔn sè nguyªn cña m¸y kh«ng. Trong tr−êng hîp qu¸
giíi h¹n, m¸y cã thÓ b¸o lçi.
- PhÐp to¸n chia "/" hai sè nguyªn cho kÕt qu¶ lµ mét gi¸ trÞ thùc.
Bëi vËy trong tËp hîp c¸c sè nguyªn kh«ng tån t¹i phÐp chia, nh−ng
vÉn cã thÓ cã phÐp g¸n mµ vÕ tr¸i lµ mét biÕn thùc, cßn vÕ ph¶i lµ mét
biÓu thøc to¸n häc chøa phÐp chia cña hai sè nguyªn.
2.4. KiÓu sè thùc (Real)
TËp hîp c¸c sè thùc cã giíi h¹n tõ -∞ ÷ +∞ vµ c¸c gi¸ trÞ cña sè
thùc lÊp ®Çy trôc sè. MÆc dï vËy do môc ®Ých tiÕt kiÖm bé nhí nªn
Turbo Pascal ®Þnh nghÜa 5 kiÓu sè thùc víi giíi h¹n, kh¶ n¨ng biÓu
16
Gi¸o tr×nh Ng«n ng÷ lËp tr×nh Pascal
diÔn sè thùc vÒ ®é chÝnh x¸c vµ sè l−îng Byte cÇn thiÕt ®Ó biÓu diÔn
mét sè thùc kh¸c nhau nh»m phôc vô cho ng−êi lËp tr×nh sö dông tïy
thuéc vµo yªu cÇu bµi to¸n. C¸c kiÓu sè thùc bao gåm:
KiÓu
Ph¹m vi biÓu diÔn
Sè ch÷ sè cã nghÜa
Sè Byte
Single
1.5*10-45.... 3.4*1038
7-8
4
Real
2.9*10-39... 1.7*1038
11 - 12
6
Double
5.0*10-324... 1.7*10308
15 - 16
8
... 1.1*10
19 - 20
10
18
19 - 20
8
Extended
3.4*10
-4932
-18
Comp
4932
9.2*10 ... 9.2*10
Gi¶i thÝch: Ph¹m vi biÓu diÔn cña 4 kiÓu ®Çu ®−îc hiÓu nh− sau:
Gi¶ sö lÊy sè thùc Single lµm vÝ dô. M¸y cã thÓ l−u tr÷ ®−îc mét sè
kiÓu Single cã gi¸ trÞ tuyÖt ®èi trong kho¶ng tõ 1.5*10-45 ®Õn 3.4*1038.
Sè cã gi¸ trÞ tuyÖt ®èi nhá h¬n 1.5*10-45 ®−îc xem lµ b»ng 0. Sè cã gi¸
trÞ tuyÖt ®èi lín h¬n 3.4*1038 kh«ng biÓu diÔn ®−îc trong m¸y. Ph¹m
vi biÓu diÔn cña c¸c kiÓu Real, Double, Extended ®−îc hiÓu theo nghÜa
t−¬ng tù.
+ C¸c phÐp to¸n ®èi víi sè thùc bao gåm: Céng (+), Trõ (-), nh©n
(*), chia (/), khai c¨n (hµm SQRT), lòy thõa bËc hai (hµm SQR).
+ C¸c phÐp to¸n quan hÖ (<>, =, >=, <=, >, <) cã thÓ ¸p dông cho
c¸c to¸n h¹ng lµ sè thùc vµ cho kÕt qu¶ tr¶ vÒ gi¸ trÞ kiÓu Boolean.
- C¸c hµm sè häc th−êng ®−îc dïng cho sè nguyªn vµ sè thùc:
ABS(x): LÊy gi¸ trÞ tuyÖt ®èi, SQR(x): LÊy b×nh ph−¬ng cña x,
SQRT(x): LÊy c¨n bËc hai cña x...
Mét sè thùc bÊt kú cã thÓ biÓu diÔn b»ng tæng c¸c sè víi mò cña 2:
X=
i=n
∑ a i * 2i
trong ®ã ai = 0 hoÆc 1
i =− m
Trong ng«n ng÷ Pascal còng nh− c¸c ng«n ng÷ lËp tr×nh kh¸c cã
hai c¸ch l−u sè thùc lµ: dÊu chÊm tÜnh (fixed) vµ dÊu chÊm ®éng
(floating point). VÝ dô sè 110.101 (6.625) cã thÓ biÓu diÔn d¹ng
0.110101 x 23.
Ch−¬ng 2: C¸c kiÓu d÷ liÖu ®¬n gi¶n chuÈn
17
Trong c¸ch biÓu diÔn sè thùc dÊu chÊm ®éng, mét phÇn cña tõ m¸y
®−îc dïng ®Ó l−u tr÷ mét sè cè ®Þnh c¸c bit cña phÇn ®Þnh trÞ, phÇn kh¸c
l−u tr÷ phÇn mò. Ch¼ng h¹n sè 2.1E2 lµ 210, 5.67E-1 lµ 0.567.
2.5. KiÓu ký tù (Character)
Ký tù lµ tÊt c¶ c¸c ch÷ viÕt mµ ta th−êng dïng nh− c¸c ch÷ c¸i,
c¸c ch÷ sè, c¸c dÊu ph©n ®o¹n c©u,... KiÓu ký tù ®−îc ®Þnh nghÜa trong
Turbo Pascal víi tõ khãa CHAR. Mét gi¸ trÞ kiÓu ký tù lµ mét phÇn tö
cña mét tËp hîp h÷u h¹n c¸c ký tù ®−îc s¾p xÕp cã thø tù. Cã nhiÒu
c¸ch s¾p xÕp bé ch÷ kh¸c nhau. Tuy vËy bé m· ®−îc dïng phæ biÕn ®Ó
trao ®æi th«ng tin gi÷a c¸c thiÕt bÞ, nhÊt lµ m¸y vi tÝnh lµ bé m· ASCII
(American Standard Code Information Interchange). PhÐp to¸n phæ
biÕn cho c¸c ký tù lµ so s¸nh tuÇn tù (collating sequence).
C¸c ký tù ®−îc m· hãa b»ng 1 Byte, v× vËy b¶ng m· ký tù cã thÓ
m· hãa 256 ký tù. Tuy vËy sè ký tù c¬ b¶n nhÊt cã thÓ gãi gän l¹i
trong 128 sè ®Çu tiªn vµ ®−îc chuÈn hãa. Cßn 128 sè sau (cã sè thø tù
tõ 128 ®Õn 255) trªn m¸y vi tÝnh ®−îc gäi lµ phÇn m· më réng vµ ®−îc
dïng ®Ó m· hãa c¸c ký tù riªng cña mét sè ng«n ng÷, c¸c ký tù to¸n
häc, c¸c ký tù ®å häa,... cã nhiÒu b¶ng m· kh¸c nhau ë phÇn më réng.
Trong Turbo Pascal chóng ta quan t©m chñ yÕu tíi phÇn 128 ký tù ®Çu
cña b¶ng m· ASCII lµ phÇn chuÈn ®Ó x©y dùng bé ký tù cho ng«n ng÷
lËp tr×nh.
M· cña mét ký tù chÝnh lµ sè thø tù cña nã trong b¶ng m·. VÝ dô
ký tù A trong b¶ng m· ASCII cã m· lµ 65, ký tù B trong b¶ng m·
ASCII cã m· lµ 66. Khi ®ã phÐp so s¸nh A>B sÏ cho kÕt qu¶ sai.
Trong b¶ng m· ASCII c¸c ký tù tõ 0 ®Õn 31 lµ c¸c ký tù ®iÒu
khiÓn kh«ng in ra ®−îc. Chóng dïng ®Ó ®iÒu khiÓn qu¸ tr×nh vµo ra
trªn c¸c thiÕt bÞ ngo¹i vi. VÝ dô khi m¸y nhËn ®−îc ký tù sè 7 (BEL)
nã sÏ ®¸nh mét tiÕng chu«ng. Khi nhËn ®−îc c¸c ký tù sè 13 (CR:
Carriage Return) vµ sè 10 (LF: Line Feed), thiÕt bÞ ngo¹i vi nh− mµn
h×nh vµ m¸y in sÏ chuyÓn ®iÓm lµ viÖc (con trá mµn h×nh, ®Çu kim in)
xuèng ®Çu dßng tiÕp theo.
18
Gi¸o tr×nh Ng«n ng÷ lËp tr×nh Pascal
C¸c ký tù cã vÞ trÝ trong b¶ng m· ASCCI tõ 45 ®Õn 57 lµ c¸c ch÷
sè. C¸c ký tù tõ 65 ®Õn 90 lµ c¸c ch÷ c¸i hoa,...
§Ó biÓu diÔn mét ký tù cã thÓ dïng mét trong ba c¸ch sau:
C¸ch 1: BiÓu diÔn h»ng ký tù b»ng c¸ch ®Æt ký tù trong 2 dÊu
nh¸y ®¬n: 'a', 'B', '*', 'z', '0', '9', ':',...
C¸ch nµy chØ biÓu diÔn ®−îc ký tù cã trªn bµn phÝm.
C¸ch 2: Sö dông hµm Chr(n)
Trong ®ã (0 ≤ n ≤ 255) lµ m· cña ký tù cÇn biÓu diÔn.
VÝ dô: Chr(66) chÝnh lµ 'B'
Chr(98) chÝnh lµ 'b'
C¸ch 3: T−¬ng tù nh− c¸ch 2 nh−ng dïng c¸ch viÕt: #n thay cho
Chr(n).
C¸c hµm chuÈn liªn quan ®Õn kiÓu ký tù:
Hµm chuÈn Ord(n): Cho sè thø tù cña ký tù n trong b¶ng m·.
Hµm chuÈn Chr(n) hay #n: cho ký tù cã sè thø tù lµ n.
Hµm chuÈn Pred(ch): Cho ký tù ®øng tr−íc ch trong b¶ng m·.
Hµm chuÈn Succ(ch): Cho ký tù ®øng sau ch trong b¶ng m·.
Do quan hÖ ORD('A')
8