- Trang Chủ
- Hoá học
- Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên
Xem mẫu
- ®¹I häc th¸i nguyªn
tr−êng ®¹I häc s− ph¹m
Khoa Ho¸ häc
TS Mai Xu©n Tr−êng
DĐ : 0912.739.257 CQ : 0280.3856.853 NR 0280.3759.402
Bµi gi¶ng
Tin häc øng dông trong ho¸ häc
(2 tÝn chØ)
(TÀI LIỆU LƯU HÀNH NỘI BỘ)
Th¸i nguyªn, 2011
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
Më ®Çu
Tin häc trong hãa häc (chemometric) hay ho¸ tin (computational
chemistry) lµ danh tõ dïng ®Ó chØ mét lÜnh vùc khoa häc kÕt hîp to¸n
häc - mµ chñ yÕu lµ ph−¬ng ph¸p tÝnh - víi m¸y tÝnh ®Ó gi¶i c¸c bµi to¸n ho¸ häc.
Ho¸ tin bao giê còng ®−îc cÊu thµnh bëi ba yÕu tè: thuËt to¸n (algorithm), ®o¹n
ch−¬ng tr×nh m¸y tÝnh (computer code) vµ néi dung ho¸ häc.
Tin häc øng dông trong hãa häc cã thÓ hiÓu lµ c¸c ph−¬ng ph¸p tÝnh to¸n trªn
m¸y tÝnh ®Ó gi¶i c¸c bµi to¸n ho¸ häc vµ kh«ng cã tÝnh ®Æc thï ®Çy ®ñ. Tøc lµ cã thÓ
cã nh÷ng ph−¬ng ph¸p chØ dïng ®Ó gi¶i c¸c bµi to¸n ho¸ häc, th−êng lµ nh÷ng ph−¬ng
ph¸p tæ hîp cÊu thµnh bµi to¸n lín nh− ho¸ l−îng tö (quantum chemistry), m« pháng
®éng lùc ph©n tö l−îng tö (quantum molecular dynamics simulation), vµ cã nh÷ng
ph−¬ng ph¸p kh«ng chØ ®−îc dïng trong ho¸ häc mµ cßn dïng trong c¸c lÜnh vùc
kh¸c. C¸c ph−¬ng ph¸p nµy, ®Æc biÖt lµ trong viÖc khai th¸c d÷ liÖu (datamining),
th−êng lµ nh÷ng ph−¬ng ph¸p ®¬n, kh«ng qu¸ phøc t¹p vµ xuÊt ph¸t tõ nh÷ng bµi to¸n
c¬ b¶n trong to¸n häc vÒ ph−¬ng ph¸p tÝnh nh−: ph−¬ng ph¸p håi quy phi tuyÕn, gi¶i
hÖ ph−¬ng tr×nh vi ph©n, läc Kalman (Kalman filter), m¹ng n¬ron, ...
Nh÷ng n¨m gÇn ®©y, sù ph¸t triÓn c¸c ng«n ng÷ lËp tr×nh, thuËt to¸n, c¸c
bµi to¸n ho¸ häc, c¸c phÇn mÒm tÝnh to¸n øng dông trong ho¸ häc vµ sè l−îng
ng−êi sö dông ngµy cµng nhiÒu. §Ó phôc vô c«ng t¸c gi¶ng d¹y vµ häc tËp tin häc
øng dông trong hãa häc, chóng t«i ®· biªn so¹n bµi gi¶ng "Tin häc øng dông trong
ho¸ häc". HiÖn nay cã rÊt nhiÒu thuËt to¸n, phÇn mÒm còng nh− c¸c bµi to¸n ho¸
tin øng dông ®· ®−îc t¶i lªn m¹ng INTERNET, b¹n cã thÓ t×m thÊy trªn m¹ng c¸c
thuËt to¸n d−íi d¹ng m· nguån më cho hÇu hÕt c¸c bµi to¸n øng dông trong ho¸
häc th× viÖc thay ®æi c¸ch häc thùc lµ rÊt cÊp thiÕt. Tuy nhiªn ®Ó cã thÓ hiÓu ®−îc
c¸c ch−¬ng tr×nh ®ã ta cÇn ph¶i hiÓu c¸c kh¸i niÖm c¬ b¶n cña tin häc dïng trong
ho¸ häc nh− c¸c häc thuËt to¸n, nh÷ng lÖnh rÊt c¬ b¶n cña ng«n ng÷ lËp tr×nh ®ã.
V× vËy gi¸o tr×nh nµy chñ yÕu cung cÊp nh÷ng kh¸i niÖm c¬ b¶n nhÊt cña
c¸c ng«n ng÷ lËp tr×nh ®Ó ng−êi häc cã thÓ lËp tr×nh nh÷ng ch−¬ng tr×nh ®¬n gi¶n
hay cã thÓ sö dông c¸c ch−¬ng tr×nh nguån më ®· cã.
1
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
Ch−¬ng 1 : më ®Çu
1.1. c¸c kh¸i niÖm c¬ b¶n
1.1.1. Th«ng tin
Mäi yÕu tè cã thÓ mang l¹i sù hiÓu biÕt ®Òu ®−îc gäi lµ th«ng tin. Th«ng
tin ®−îc thÓ hiÖn d−íi nhiÒu d¹ng thøc kh¸c nhau. Th«ng tin vÒ mét ®èi t−îng
chÝnh lµ c¸c d÷ kiÖn vÒ ®èi t−îng ®ã, cµng nhiÒu th«ng tin th× ®é bÊt ®Þnh cña ®èi
t−îng cµng gi¶m xuèng.
1.1.2. §¬n vÞ ®o th«ng tin
§¬n vÞ ®o th«ng tin trong m¸y tÝnh ®−îc gäi lµ bÝt. 1 bÝt mang l−îng th«ng
tin t−¬ng øng víi 1 trong 2 kh¶ n¨ng cã thÓ x¶y ra: 1 (t−¬ng øng víi cã ®iÖn hay
bãng ®Ìn s¸ng) hoÆc 0 (t−¬ng øng víi kh«ng cã ®iÖn (bãng ®iÖn t¾t) ).
1 byte = 8 bÝt 1KB = 1024 byte 1MB = 1024KB
1GB = 1024MB
1.1.3. Xö lý th«ng tin b»ng m¸y tÝnh ®iÖn tö
Th«ng tin vµo Qu¸ tr×nh xö lý KÕt qu¶
Quy t¾c theo ®ã qu¸ tr×nh xö lý ®−îc thùc hiÖn (do con ng−êi ®Æt ra)
M¸y tÝnh sÏ kh«ng lµm g× nÕu kh«ng cã t¸c ®éng cña con ng−êi. Ng−êi sö
dông ph¶i nhËp sè liÖu, bÊm c¸c phÝm thùc hiÖn phÐp to¸n còng nh− yªu cÇu
hiÓn thÞ kÕt qu¶ hoÆc l−u tr÷ kÕt qu¶.
1.2. CÊu tróc hÖ xö lý th«ng tin tù ®éng
ThiÕt bÞ vµo CPU ThiÕt bÞ ra
Bé nhí ROM
Bµn phÝm
Bé nhí RAM Mµn h×nh
Chuét
Bé xö lý trung t©m
M¸y in
æ ®Üa Bé sè häc logic
M¸y Scan Bé ®iÒu khiÓn æ ®Üa
2
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
C¸c thiÕt vµo vµ c¸c thiÕt ra gäi lµ c¸c thiÕt bÞ ngo¹i vi, tïy theo yªu cÇu
mµ ta cã thÓ thªm, bít c¸c thiÕt bÞ ngo¹i vi cho phï hîp.
M¸y tÝnh ho¹t ®éng dùa trªn nguyªn lý c¬ b¶n Von Neumann. C¸c lÖnh vµ
d÷ liÖu cïng ®−îc l−u tr÷ trong bé nhí ®−îc t¹o bëi c¸c tõ ®Þa chØ dùa trªn 2 yÕu
tè then chèt :
+ §iÒu khiÓn b»ng ch−¬ng tr×nh: M¸y tÝnh ho¹t ®éng theo sù chØ dÉn, ®iÒu
khiÓn cña ch−¬ng tr×nh ®−îc l−u tr÷ trong bé nhí cña nã. C¸c b−íc t¸c ®éng
®−îc tiÕn hµnh theo c¸c c©u lÖnh cña ch−¬ng tr×nh. Ch−¬ng tr×nh chØ dÉn cho
m¸y tÝnh biÕt ph¶i lµm g× vµ ph¶i lµm nh− thÕ nµo.
+ Truy xuÊt theo ®Þa chØ: D÷ liÖu theo nghÜa réng (d÷ liÖu vµo, kÕt qu¶
trung gian, kÕt qu¶ cuèi cïng, ch−¬ng tr×nh, d÷ liÖu ra, . . ) ®−îc l−u tr÷ trong
RAM t¹i mét vïng nhí ®−îc ®Þnh vÞ b»ng c¸c sè thø tù ®−îc gäi lµ ®Þa chØ. D÷
liÖu ®−îc chØ ®Þnh vµ ®−îc truy cËp (®äc hay ghi) theo ®Þa chØ « nhí chøa chóng.
1.3. phÇn mÒm
Trong tin häc, thuËt ng÷ phÇn mÒm ®−îc dïng ®Ó nãi vÒ c¸c ch−¬ng tr×nh
dïng ®Ó ®iÒu khiÓn ho¹t ®éng cña m¸y tÝnh, xö lý d÷ liÖu phôc vô cho mét øng
dông cô thÓ trong ho¹t ®éng kinh tÕ, s¶n xuÊt, kinh doanh, . . . VÝ dô: c¸c ch−¬ng
tr×nh n¹p s½n trong ROM, c¸c ch−¬ng tr×nh phÇn mÒm do ng−êi lËp tr×nh viÕt.
NÕu ta ®−a ra khái m¸y t×nh toµn bé c¸c ch−¬ng tr×nh n¹p s½n trong nã, kÓ
c¶ c¸c ch−¬ng tr×nh ghi s½n trong ROM th× nh÷ng g× cßn l¹i ®−îc gäi lµ phÇn
cøng cña m¸y tÝnh. Nh− vËy, thuËt ng÷ phÇn cøng ®−îc dïng ®Ó chØ linh kiÖn,
chi tiÕt, thiÕt bÞ l¾p r¸p thµnh m¸y tÝnh.
C¸c chuyªn gia phÇn cøng tËp trung vµo viÖc thu nhá kÝch th−íc, khèi
l−îng c¸c linh kiÖn ®iÖn tö, c¬ khÝ, bé nhí nh»m lµm gi¶m n¨ng l−îng tiªu hao
cho m¸y tÝnh, t¨ng kh¶ n¨ng l−u tr÷ vµ vËn tèc tÝnh to¸n.
C¸c chuyªn gia phÇn mÒm tËp trung vµo viÖc x©y dùng ho¹t ®éng chÝnh
x¸c, khoa häc vµ tiÖn lîi trªn c¬ së phÇn khai th¸c tèi ®a kh¶ n¨ng cña m¸y tÝnh
phôc vô cho lîi Ých cña con ng−êi. Sù phèi hîp chÆt chÏ gi÷a hai lÜnh vùc phÇn
cøng vµ phÇn mÒm lµ ®éng lùc thóc ®Èy sù ph¸t triÓn cña tin häc
3
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
Ch−¬ng 2 : mét sè ng«n ng÷ lËp tr×nh
2.1. Më ®Çu
C¸c ng«n ng÷ lËp tr×nh lµ ph−¬ng tiÖn giao tiÕp gi÷a ng−êi vµ m¸y tÝnh.
Nh− ta ®· biÕt, muèn yªu cÇu m¸y tÝnh gi¶i mét bµi to¸n nµo ®ã, vÝ dô tÝnh gi¸ trÞ
cña biÓu thøc a = (b + c).(d + e) hoÆc a = b + c.d + e chóng ta ph¶i viÕt mét
ch−¬ng tr×nh quy ®Þnh thËt râ trËt tù thùc hiÖn c¸c thao t¸c ®Ó ®−îc kÕt qu¶ mong
muèn. Nh− vËy ch−¬ng tr×nh m¸y tÝnh chÝnh lµ mét thuËt gi¶i ®−îc viÕt d−íi
d¹ng mét quy ®Þnh b»ng mét ng«n ng÷. Ng«n ng÷ dïng ®Ó viÕt ch−¬ng tr×nh
m¸y tÝnh ®−îc gäi lµ ng«n ng÷ lËp tr×nh.
VÝ dô: §Ó tÝnh biÓu thøc a = (b + c).(d + e) th× qu¸ tr×nh thùc hiÖn viÖc tÝnh
to¸n b»ng ch−¬ng tr×nh m¸y tÝnh nh− sau:
B−íc 1. §äc gi¸ trÞ b ë b¶ng 1.
B−íc 2: §äc gi¸ trÞ c ë b¶ng 2, céng b víi c.
B−íc 3: Ghi gi¸ trÞ tæng (b + c) vµo b¶ng 5.
B−íc 4: §äc gi¸ trÞ d ë b¶ng 3.
B−íc 5: §äc gi¸ trÞ e ë b¶ng 4, céng d víi e.
B−íc 6: Ghi gi¸ trÞ tæng (d + e) ra b¶ng 6.
B−íc 7: lÊy gi¸ trÞ ë b¶ng 5 nh©n víi gi¸ trÞ ë b¶ng 6.
B−íc 8: ghi gi¸ trÞ tÝch (b + c).(d + e) ra b¶ng 7 vµ g¸n cho gi¸ trÞ a.
B−íc 9: ViÕt gi¸ trÞ a ë b¶ng 7.
B−íc 10. Dõng ch−¬ng tr×nh.
C¸c b¶ng 3, 4, 6, 7 cã thÓ dïng l¹i b¶ng 1, 2 b»ng c¸ch xãa ®i (ghi ®Ì lªn)
sau khi ®· dïng xong.
ThuËt gi¶i (c¸c b−íc) ë trªn chØ ®Ó con ng−êi thùc hiÖn, muèn cho m¸y
tÝnh cã thÓ “hiÓu” vµ thùc hiÖn ®−îc ®óng ý ®å cña chóng ta cÇn ph¶i diÔn ®¹t
thuËt gi¶i ®· cho d−íi mét d¹ng quy ®Þnh nµo ®ã. Mét trong sè c¸c d¹ng quy
®Þnh ®ã lµ hîp ng÷. Hîp ng÷ bao gåm tªn c¸c c©u lÖnh vµ c¸c quy t¾c viÕt c¸c
c©u lÖnh ®Ó m¸y tÝnh hiÓu ®−îc. Tªn c¸c cÊu lÖnh th−êng ®−îc viÕt d−íi d¹ng
tiÕng anh nh−: READ, WRITE, INPUT, ADD, PRINT, . . .
4
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
Ngoµi ra nh− ta ®· biÕt, khi n¹p ch−¬ng tr×nh vµo bé nhí chóng ta ph¶i
dµnh chç l−u tr÷ c¸c gi¸ trÞ cña sè liÖu. VÝ dô trªn lµ c¸c gi¸ trÞ: a, b, c, d, e.
INPUT b (nhËp gi¸ trÞ b tõ bµn phÝm, ghi vµo « nhí 1)
INPUT c (nhËp gi¸ trÞ c tõ bµn phÝm, ghi vµo « nhí 2)
INPUT d (nhËp gi¸ trÞ d tõ bµn phÝm, ghi vµo « nhí 3)
INPUT e (nhËp gi¸ trÞ e tõ bµn phÝm, ghi vµo « nhí 4)
LOAD b (®äc b ë vµo « nhí 1)
ADD c (céng c ë « nhí 2 vµo « nhí 1, kÕt qu¶ gi÷ ë « nhí 1)
MOVE a (ghi kÕt qu¶ « nhí 1vµo « nhí 5)
LOAD d (®äc d ë « nhí 3)
ADD e (céng e ë « nhí 4 vµo « nhí 3, kÕt qu¶ gi÷ ë « nhí 3)
MULT a (nh©n kÕt qu¶ « nhí 3 víi « nhí 5, kÕt qu¶ gi÷ ë « nhí 3)
MOVE a (ghi kÕt qu¶ tõ « nhí 3 vµo « nhí 5)
PRINT a (In « nhí 5 ra mµn h×nh hoÆc m¸y in)
HALT (Dõng ch−¬ng tr×nh)
Ch−¬ng tr×nh nµy ph¶i sö dông c¸c « nhí (b¶ng) ®Ó l−u gi÷ sè liÖu, cô thÓ
lµ:
1 (« nhí dµnh cho a)
2 (« nhí dµnh cho b)
3 (« nhí dµnh cho c)
4 (« nhí dµnh cho d)
5 (« nhí dµnh cho e)
Ch−¬ng tr×nh hîp ng÷ trªn nhËn c¸c gi¸ trÞ b, c, d, e do ng−êi sö dông
nhËp tõ bµn phÝm cña m¸y tÝnh råi tÝnh vµ hiÓn thÞ gi¸ trÞ cña biÓu thøc ra mµn
h×nh.
Ng«n ng÷ m¸y: Sau khi n¹p ch−¬ng tr×nh hîp ng÷ trªn vµo m¸y tÝnh,
trong m¸y sÏ diÔn ra hai qu¸ tr×nh sau ®©y:
+ DÞch ch−¬ng tr×nh hîp ng÷ sang mét ch−¬ng tr×nh viÕt b»ng ng«n ng÷
m¸y.
+ Thùc hiÖn ch−¬ng tr×nh ®· dÞch.
5
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
T¹i sao l¹i ph¶i dÞch: V× m¸y tÝnh ®−îc thiÕt kÕ vµ lµm viÖc trªn c¬ së
cña hÖ nhÞ ph©n. Ch−¬ng tr×nh viÕt b»ng ng«n ng÷ m¸y chØ chøa c¸c ký hiÖu 0
(®Ìn t¾t) vµ 1 (®Ìn s¸ng). ViÖc dÞch tõ ch−¬ng tr×nh hîp ng÷ sang ng«n ng÷ m¸y
còng ®−îc c¸c nhµ thiÕt kÕ m¸y tÝnh chuÈn bÞ tr−íc vµ n¹p s½n trong m¸y. Khi
dÞch, mçi c©u lÖnh cña hîp ng÷ sÏ ®−îc chuyÓn sang d¹ng ®Æc biÖt gäi lµ m·
m¸y hay m· nhÞ ph©n. VÝ dô c©u lÖnh LOAD (®äc) sÏ ®−îc chuyÓn thµnh 0000,
c©u lÖnh ADD (céng) sÏ ®−îc chuyÓn thµnh 0001. C¸c « nhí dµnh cho c¸c biÕn
a, b, c, d, e sÏ ®−îc g¸n ®Þa chØ cña tõ øng víi chóng. VÝ dô biÕn a sÏ chiÕm vïng
nhí b¾t ®Çu b»ng ®Þa chØ 00100000, biÕn b chiÕm ®Þa chØ 00100010, …
Khi ®ã dßng c©u lÖnh hîp ng÷: LOAD a sÏ ®−îc dÞch thµnh:
0000 00100000.
C¸c ng«n ng÷ lËp tr×nh bËc cao
Cã thÓ viÕt trùc tiÕp ch−¬ng tr×nh b»ng ng«n ng÷ m¸y ®−îc kh«ng? Cã
thÓ. Tuy nhiªn, nh− ta ®· thÊy viÖc lµm nµy rÊt vÊt v¶ vµ dÔ sinh lçi. C¸c nhµ lËp
tr×nh dùa trªn nguyªn lý m¸y tÝnh ®−îc ®iÒu khiÓn b»ng ch−¬ng tr×nh ®Ó s¸ng t¹o
ra c¸c ng«n ng÷ lËp tr×nh gÇn víi ng«n ng÷ tù nghiªn, phï hîp víi t©m lý vµ t−
duy cña ng−êi lËp tr×nh ®Ó diÔn ®¹t c¸c thuËt to¸n ®−îc trong s¸ng vµ tù nhiªn.
ViÖc ®Æt ra hîp ng÷ lµ mét cè g¾ng b−íc ®Çu gióp cho nh÷ng ng−êi lËp
ch−¬ng tr×nh ®−îc thuËn tiÖn h¬n. C¸c c©u lÖnh cña hîp ng÷ ®−îc g¸n tªn kh¸
gÇn víi ng«n ng÷ tù nhiªn, viÖc dµnh vïng nhí cho c¸c biÕn ®−îc thùc hiÖn
th«ng qua tªn biÕn.
VËn dông t− t−ëng dÞch tõ ng«n ng÷ nµy sang ng«n ng÷ kh¸c, c¸c nhµ tin
häc ®· s¸ng t¹o ra nh÷ng ng«n ng÷ lËp kh¸c nhau thuËn tiÖn h¬n n÷a víi c¸c −u
®iÓm sau:
+ C¸c c©u lÖnh cña ng«n ng÷ lËp tr×nh gÇn víi ng«n ng÷ tù nghiªn.
+ Tïy theo lÜnh vùc øng dông mµ c¸c ng«n ng÷ lËp tr×nh míi nµy cung cÊp
c¸c ph−¬ng tiÖn trî gióp ®Ó gi¶i c¸c bµi to¸n khoa häc, kü thuËt hoÆc qu¶n lý.
Ng−êi ta gäi c¸c ng«n ng÷ nãi trªn lµ c¸c ng«n ng÷ lËp tr×nh bËc cao ®Ó
ph©n biÖt víi c¸c ng«n ng÷ lËp tr×nh bËc thÊp lµ hîp ng÷ vµ ng«n ng÷ m¸y.
6
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
Qu¸ tr×nh gi¶i c¸c bµi to¸n nhê sù gióp ®ì cña m¸y tÝnh bao gåm c¸c giai
®o¹n sau:
Giai ®äan 1: T×m hiÓu bµi to¸n bao gåm viÖc x¸c ®Þnh gi¶ thiÕt, c¸c yªu
cÇu cÇn ph¶i thùc hiÖn, môc ®Ých cÇn ph¶i ®¹t.
Giai ®o¹n 2: X¸c ®Þnh thuËt gi¶i ®Ó gi¶i bµi to¸n ®· cho.
Giai ®o¹n 3: LËp tr×nh: sö dông mét ng«n ng÷ bËc cao ®Ó diÔn ®¹t thuËt
gi¶i.
Giai ®o¹n 4: Sö dông mét hÖ trî gióp, th«ng qua viÖc bÊm c¸c phÝm thÝch
hîp trªn bµn phÝm ®Ó nhËp ch−¬ng tr×nh vµo m¸y tÝnh.
Giai ®o¹n 5: Yªu cÇu m¸y dÞch ch−¬ng tr×nh ®· n¹p sang ng«n ng÷ bËc
thÊp (ng«n ng÷ m¸y).
Giai ®o¹n 6: Yªu cÇu m¸y thùc hiÖn ch−¬ng tr×nh ®· dÞch.
NÕu t¹i mét giai ®o¹n nµo ®ã ta ph¸t hiÖn ra sai sãt th× cÇn quay l¹i giai
®o¹n tr−íc ®ã ®Ó söa lçi råi thùc hiÖn l¹i mét sè giai ®o¹n cÇn thiÕt cho tíi khi
thu ®−îc kÕt qu¶ mong muèn.
Ch−¬ng tr×nh dÞch
Trong c¸c ng«n ng÷ bËc thÊp th× ng«n ng÷ m¸y cã bËc thÊp nhÊt. CÇn nhí
lµ m¸y tÝnh chØ lµm viÖc víi ng«n ng÷ m¸y.
ViÖc dÞch mét ch−¬ng tr×nh viÕt b»ng ng«n ng÷ bËc cao sang ng«n ng÷
m¸y do mét ch−¬ng tr×nh ®Æc biÖt ®¶m nhËn gäi lµ ch−¬ng tr×nh dÞch. Ch−¬ng
tr×nh dÞch thùc hiÖn chøc n¨ng sau ®©y:
+ DuyÖt ch−¬ng tr×nh nguån ®Ó ph¸t hiÖn vµ th«ng b¸o c¸c lèi có ph¸p tøc
lµ nh÷ng lçi do ng−êi lËp tr×nh viÕt sai.
+ Trong tr−êng hîp ch−¬ng tr×nh dÞch kh«ng ph¸t hiÖn thÊy lçi trong
ch−¬ng tr×nh nguån nã sÏ dÞch ch−¬ng tr×nh nguån thµnh ch−¬ng tr×nh viÕt trªn
ng«n ng÷ m¸y gäi lµ ch−¬ng tr×nh ®Ých.
2.2. Ng«n ng÷ BAssic
Ng«n ng÷ BASIC (Beginers All purpose Symbolic Instruction ®o¹n
ch−¬ng tr×nh - th«ng dÞch) do Kemeny vµ Kuzt s¸ng lËp ra vµo n¨m 1965. §−îc
dïng nh− lµ mét ng«n ng÷ khëi ®Çu cho viÖc lËp tr×nh. HiÖn ®−îc cµi ®Æt vµ phæ
7
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
biÕn nhÊt trªn m¸y tÝnh IBM vµ t−¬ng thÝch. Xu h−íng hiÖn nay lµ cÊu tróc hãa
ng«n ng÷ nµy vµ tiÕp cËn dÇn víi PASCAL. Mét tiªu chuÈn míi ®· ®−îc t¸c gi¶
so¹n ra víi tªn TRUE BASIC.
2.3. Ng«n ng÷ PASCAL
Do tÝnh t−êng minh vÒ cÊu tróc nªn PASCAL rÊt thÝch hîp cho viÖc gi¶ng
d¹y c¬ së lËp tr×nh, ®Æc biÖt ®èi víi nh÷ng ng−êi kh«ng chuyªn tin. B¹n ®äc cã
thÓ ®äc rÊt nhiÒu gi¸o tr×nh kh¸c nhau vÒ PASCAL c¬ b¶n (vÝ dô Qu¸ch TuÊn
Ngäc Ng«n ng÷ lËp tr×nh PASCAL).
T− liÖu §äc thªm
Ng«n ng÷ PASCAL lµ ng«n ng÷ lËp tr×nh bËc cao do gi¸o s− Niklaus Wirth (tr−êng
®¹i häc kü thuËt Zurich - Thôy SÜ) s¸ng lËp vµ c«ng bè vµo ®Çu nh÷ng n¨m 1970, tªn PASCAL
®Ó kû niÖm nhµ to¸n häc ng−êi Ph¸p Blaisse PASCAL ë thÕ ký 17. Lóc ®Çu, PASCAL ®−îc
s¸ng t¸c víi môc ®Ých lµm ng«n ng÷ cho m¸y tÝnh ®Ó d¹y häc cho sinh viªn ë c¸c tr−êng ®¹i
häc: 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Ô hiÓu vµ dÔ ®äc cho c¶ mäi ng−êi kh¸c. Tr−íc
khi cã PASCAL, c¸c sinh viªn ®Òu ®−îc häc ng«n ng÷ lËp tr×nh FORTRAN, mét ng«n ng÷ l©u
®êi nhÊt vµ lµ ng«n ng÷ kh«ng cã cÊu tróc. Gi¸o s− Wirth thÊy r»ng cã thÓ tr¸nh ®−îc rÊt
nhiÒu lçi khi lËp tr×nh víi mét ng«n ng÷ cÊu tróc khèi vµ cã sù kiÓm tra kü l−ìng sù t−¬ng
thÝch gi÷a c¸c d÷ liÖu.
PASCAL lµ mét ng«n ng÷ cã ®Þnh kiÓu m¹nh mÏ, 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.
VÝ dô c¶ hai vÕ phÐp g¸n ph¶i lµ cïng mét kiÓu, ngo¹i trõ tr−êng hîp vÕ tr¸i lµ mét biÕn sè
thùc (real) cßn vÕ ph¶i cã thÓ lµ sè nguyªn (integer). ViÖc ®Þnh kiÓu mét c¸ch chÆt chÏ nh−
vËy b¾t buéc ng−êi lËp tr×nh lu«n lu«n 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µ 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 thËm trÝ 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. Th«ng th−êng c¸c khèi øng víi c¸c
nhiÖm vô cô thÓ vµ x¸c ®Þnh, ®−îc thùc hiÖn b»ng c¸c ch−¬ng tr×nh con víi c¸c biÕn ®Þa
ph−¬ng lµ c¸c biÕn t¹m thêi cña 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 cña
ch−¬ng tr×nh n»m ngoµi ch−¬ng tr×nh con. Cã thÓ nãi tÝnh cÊu tróc cña ch−¬ng tr×nh 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 ®· cã (kiÓu ®¬n gi¶n hoÆc d÷ liÖu 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.
8
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
+ CÊu tróc vÒ mÆt ch−¬ng tr×nh: Mét ch−¬ng tr×nh cã thÓ chia thµnh c¸c modun
ch−¬ng tr×nh ®éc lËp (ch−¬ng tr×nh con).
Bé ch÷ viÕt cña PASCAL
Ng«n ng÷ PASCAl ®−îc x©y dùng víi bé ch÷ viÕt sau:
Bé 26 ch÷ c¸i la tinh: 26 ch÷ c¸i in hoa A, B, C, . . . ,Z
26 ch÷ c¸i th−êng a, b, c, . . . , z
Ký tù g¹ch nèi ”_”.
C¸c ch÷ sè thËp ph©n: 0, 1, 2, . . ., 9
C¸c ký hiÖu to¸n häc th«ng th−êng +, -, *, /, =, , (), …
C¸c ký hiÖu ®Æc biÖt nh− c¸c dÊu chÊm c©u vµ c¸c dÊu kh¸c: .,; :[]?%\⏐!&#$’
DÊu c¸ch (Space) ®−îc dïng ®Ó ng¨n c¸ch c¸c tõ. V× khi viÕt nã kh«ng hiÖn ra ch÷ g×
nªn ®Ó tiÖn nhËn biÕt trong mét sè tr−êng hîp nh− cÇn ®Õm sè dÊu c¸ch, trong tµi liÖu th−êng
dïng dÊu .
Tõ vùng cña PASCAL gåm mét sè tõ riªng PASCAL ®−îc gäi lµ tõ khãa (key word).
C¸c tõ khãa nµy ng−êi sö dông ph¶i dïng ®óng víi có ph¸p, kh«ng ®−îc dïng nã vµo viÖc
kh¸c hoÆc ®Æt tªn míi trïng víi c¸c tõ khãa. §ã lµ c¸c tõ:
Tõ khãa chung: PROGRAM, BEGIN, END, PROCEDURE, FUNCTION
Tõ khãa ®Ó khai b¸o: CONST, VAR, LABEL, TYPE, ARRAY, STRING, RECORD,
SET, FILE, OF
Tõ khãa cña lÖnh thö vµ rÏ nh¸nh: 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, GO TO.
Tõ khãa to¸n tö: AND, OR, NOT, IN, DIV, MOD
Tõ khãa NUL: NUL
C¸c tõ khãa nµy cã thÓ viÕt in hay viÕt th−êng, gi¸ trÞ vµ ý nghÜa cña c¸c tõ khãa kh«ng
thay ®æi.
Tªn hay ®Þnh danh (identifier)
Tªn hoÆc ®Þnh danh lµ mét d·y ký tù (kh«ng cã dÊu c¸ch) ®−îc dïng ®Ó chØ tªn h»ng
sè, tªn h»ng ký tù, tªn biÕn, tªn kiÓu, tªn ch−¬ng tr×nh, . . . Tªn ®−îc t¹o thµnh tõ c¸c ch÷ c¸i
vµ ch÷ sè song b¾t buéc ch÷ ®Çu ph¶i lµ ch÷ c¸i. TÊt nhiªn ta ph¶i ®Æt tªn sao cho cã ý nghÜa,
dÔ nhí. §Ó lµm s¸ng sña tªn, PASCAL cho phÐp dïng dÊu g¹ch d−íi "_" khi viÕt tªn.
Mét sè tªn nh− tªn cña ch−¬ng tr×nh con (SIN , COS, . . . ) ®· ®−îc PASCAL ®Þnh
nghÜa s½n ®−îc gäi lµ tªn chuÈn hay tªn ®· ®−îc ®Þnh nghÜa. Sù kh¸c nhau gi÷a tªn chuÈn vµ tõ
khãa lµ ng−êi sö dông cã thÓ ®Þnh nghÜa l¹i tªn chuÈn, 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 quy ®Þnh.
Mét sè tªn chuÈn cña PASCAL: BOOLEAN, CHAR, INTEGER, REAL, BYTE,
TEXT, FALSE, TRUE, MAXINT, ABS, ARCTAN, CHR, COS, SIN, EOF, EOLN, EXP, LN,
ODD, ORD, ROUND, TRUNC, SQR, PRED, SUCC,DISPOSE, NEW, GET, PUT, READ,
READLN, WRITE, WRITELN, RESET, REWRITE.
DÊu chÊm phÈy “;” 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µ kÕt thóc cÊu lÖnh.
9
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
Lêi gi¶i thÝch (Comment) cã thÓ ®Ó bÊt kú chç nµo cña ch−¬ng tr×nh cho dÔ hiÓu, dÔ ®äc
h¬n 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 { } hoÆc
(**) : { lêi gi¶i thÝch } hoÆc gi÷a côm dÊu (* lêi gi¶i thÝch *).
Do cã rÊt nhiÒu tµi liÖu vÒ PASCAL vµ còng do khu«n khæ cña gi¸o tr×nh
nµy nªn chóng t«i chØ tr×nh bµy nh÷ng kh¸i niÖm c¬ b¶n nhÊt vÒ PASCAL ®Ó
ng−êi ®äc cã thÓ hiÓu vµ lËp tr×nh ®−îc nh÷ng ch−¬ng tr×nh ®¬n gi¶n.
2.3.1. CÊu tróc ch−¬ng tr×nh PASCAL
Mét tËp c¸c c©u lÖnh t¹o thµnh mét ch−¬ng tr×nh. LÖnh cßn ®−îc gäi lµ chØ
thÞ dïng ®Ó h−íng dÉn m¸y tÝnh lµm viÖc. CÊu tróc cña mét ch−¬ng tr×nh
PASCAL hîp thµnh bëi c¸c phÇn sau: ®Çu ch−¬ng tr×nh, m« t¶, th©n ch−¬ng tr×nh
vµ kÕt thóc.
§Çu ch−¬ng tr×nh
PhÇn ®Çu cña ch−¬ng tr×nh bao gåm:
PROGRAM tªn ch−¬ng tr×nh;
Trong ®ã tªn ch−¬ng tr×nh kh«ng ®−îc cã dÊu c¸ch vµ c¸c ký tù ®Æc biÖt,
kh«ng ®−îc dïng c¸c to¸n tö ®Ó ®Æt tªn ch−¬ng tr×nh, . . . kÕt thóc tªn ch−¬ng
tr×nh lµ dÊu “;”.
VÝ dô: PROGRAM GIAI_PHUONG_TRINH_BAC_2;
PhÇn m« t¶
PhÇn m« t¶ cã thÓ gåm cã 5 phÇn: m« t¶ nh·n (®Þa chØ), h»ng, kiÓu, biÕn,
thñ tôc vµ hµm (ch−¬ng tr×nh con).
M« t¶ nh·n (®Þa chØ)
Nh·n lµ mét sè nguyªn d−¬ng cã ≤ 4 ch÷ sè. M« t¶ nh·n liÖt kª tÊt c¶ c¸c
nh·n sö dông trong ch−¬ng tr×nh vµ dïng ®Ó ®Þnh vÞ c¸c to¸n tö khi cÇn ®iÒu
khiÓn ch−¬ng tr×nh ho¹t ®éng ngoµi quy t¾c th«ng th−êng (tõ trªn xuèng d−íi).
C¸ch m« t¶ :
LABEL sè nguyªn;
VÝ dô: LABEL 10, 20, 123; m« t¶ 3 nh·n dïng trong khèi.
10
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
X¸c ®Þnh h»ng
C¸c h»ng cã gi¸ trÞ kh«ng ®æi trong suèt qu¸ tr×nh thùc hiÖn ch−¬ng tr×nh.
Bëi vËy kh«ng ®−îc phÐp dïng 1 lÖnh nµo ®Ó thay ®æi gi¸ trÞ cña h»ng. C¸ch x¸c
®Þnh:
CONST tªn h»ng 1 = gÝa trÞ h»ng 1;
tªn h»ng 2 = gÝa trÞ h»ng 2;
VÝ dô: CONST Pi = 3.141598; ch= ' gia tri tich phan';
X¸c ®Þnh kiÓu (TYPE)
TYPE dïng ®Ó x¸c ®Þnh c¸c kiÓu d÷ liÖu míi so víi 4 kiÓu ®· cã cña
PASCAL (Integer, Real, Char, Boolean).
C¸ch x¸c ®Þnh :
TYPE Tªn kiÓu 1 = ( phæ c¸c gi¸ trÞ cña kiÓu 1);
Tªn kiÓu 2 = ( phæ c¸c gi¸ trÞ cña kiÓu 2);
VÝ dô: TYPE city = (HANOI,TOKYO, MOSCOW, PARIS);
color = (xanh, do, trang,tim,vang);
Víi c¸c kiÓu nµy cã thÓ dïng c¸c hµm chuÈn ORD, PRED, SUCC. Sau khi
khai b¸o kiÓu th× khi m« t¶ biÕn cÇn chØ râ biÕn nµo thuéc kiÓu ®· ®−îc m« t¶.
M« t¶ biÕn
Nguyªn t¾c rÊt c¬ b¶n cña PASCAL lµ trong ch−¬ng tr×nh dïng biÕn nµo
ph¶i m« t¶ biÕn ®ã. Kh¸c víi mét sè ng«n ng÷ kh¸c, PASCAL kh«ng cã c¸c biÕn
mÆc ®Þnh. C¸ch m« t¶:
VAR tªn biÕn 1, tªn biÕn 2 ... : kiÓu 1;
tªn biÕn 3, tªn biÕn 4 ... : kiÓu 2;
VÝ dô: VAR m,n : integer; ch : char;
x,y : real; j : boolean;
h : city;
chØ ra m, n, ch, x, y, j, h : lµ c¸c biÕn, trong ®ã: m, n lµ kiÓu nguyªn, x, y
lµ thùc, ch lµ kÝ tù, j lµ logic vµ h lµ kiÓu city (®· ®−îc ®Þnh nghÜa trong TYPE).
11
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
M¶ng
§Ó cã thÓ truy nhËp th«ng tin vµ sö dông c¸c phÇn tö trong d·y sè
PASCAL ®−a vµo kh¸i niÖm m¶ng. M¶ng lµ mét kiÓu biÕn (hoÆc h»ng) cã chØ sè
dïng ®Ó chØ thø tù cña phÇn tö ®ã trong d·y sè.
C¸ch m« t¶ m¶ng 1 chiÒu:
tªn biÕn 1, tªn biÕn 2, ... : ARRAY [1..n] of kiÓu biÕn;
tªn biÕn 3, tªn biÕn 4, ... : ARRAY [1..m] of kiÓu biÕn;
hoÆc khai b¸o theo kiÓu (TYPE) råi sau ®ã míi khai b¸o biÕn nh− sau:
TYPE Mang1 = array [1..n] of kiÓu biÕn;
Mang2 = array [1..m] of kiÓu biÕn;
VAR tªn biÕn 1, tªn biÕn 2,...: Mang1;
tªn biÕn 3, tªn biÕn 4,... : Mang2 ;
VÝ dô d·y sè d−íi ®©y :
x 1 2 3 4 5 ... n
y 12 3 5 10 9 ... 1
Khai b¸o biÕn x vµ y lµ biÕn sè thùc theo kiÓu m¶ng nh− sau:
x,y: array[1..n] of real;
hoÆc khai b¸o th«ng qua viÖc x¸c ®Þnh tr−íc mét kiÓu biÕn míi
TYPE M1=array[1..10] of real;
VAR X,y: M1;
C¸ch thø hai phæ biÕn h¬n khi chóng ta ph¶i sö dông c¸c ch−¬ng tr×nh con
cã c¸c biÕn h×nh thøc lµ c¸c m¶ng (xem phÇn sau). Trong c¸c tÝnh to¸n, c¸c phÇn
tö cña m¶ng ®ãng vai trß nh− c¸c biÕn ®¬n.
Ngoµi m¶ng mét chiÒu cßn cã c¸c m¶ng hai vµ ba chiÒu:
C¸ch m« t¶ m¶ng 2 chiÒu:
tªn biÕn 1, tªn biÕn 2, ... : ARRAY [1..n, 1..m] of kiÓu biÕn;
hoÆc khai b¸o theo kiÓu (TYPE) råi sau ®ã míi khai b¸o biÕn nh− sau:
12
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
TYPE Mang1=array[1..n, 1..m] of kiÓu biÕn;
VAR tªn biÕn 1, tªn biÕn 2,...: Mang1;
T−¬ng tù ta cã c¸ch m« t¶ m¶ng 3 chiÒu:
tªn biÕn 1, tªn biÕn 2, ... : ARRAY [1..n, 1..m,1..k] of kiÓu biÕn;
PhÇn th©n ch−¬ng tr×nh
Th©n ch−¬ng tr×nh bao gåm c¸c to¸n tö (cßn gäi lµ c¸c c©u lÖnh hoÆc chØ
thÞ) ®Ó thùc hiÖn c«ng viÖc chñ yÕu cña ch−¬ng tr×nh vµ ®−îc ®Æt sau tõ khãa:
BEGIN
PhÇn kÕt thóc
PhÇn kÕt thóc bao gåm tËp hîp lÖnh
READLN; END.
Víi mét sè phiªn b¶n cña ch−¬ng tr×nh dÞch PASCAL c©u lÖnh READLN
kh«ng nhÊt thiÕt ph¶i cã.
2.3.2. C¸c to¸n tö
To¸n tö g¸n
To¸n tö g¸n cã d¹ng tæng qu¸t :
Tªn biÕn := biÓu thøc hoÆc biÕn hoÆc h»ng;
Khi gÆp lÖnh nµy kÕt qu¶ tÝnh to¸n cña biÓu thøc vÕ ph¶i hoÆc gi¸ trÞ biÕn,
h»ng vÕ ph¶i ®−îc g¸n cho biÕn vÕ tr¸i.
VÝ dô: Sau ®©y lµ mét ®o¹n ch−¬ng tr×nh cã chøa c¸c lÖnh g¸n
W1 := a*2; W2 := b*2; y := sin(W1 + W2);
W1 := W1 + ln(y); W2 := W2 + y ;
y := (W1 + W2)/(W1 + SQRT(W2));
To¸n tö chuyÓn (GOTO)
D¹ng tæng qu¸t
GOTO nh·n;
D−íi t¸c ®éng cña to¸n tö nµy ch−¬ng tr×nh chuyÓn ®Õn nh·n (®· ®−îc x¸c
®Þnh b»ng LABEL).
13
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
VÝ dô: LABEL 10;
.........
GOTO 10;
.........
10: x2 := x1;
To¸n tö xuÊt nhËp
Cã hai c¸ch nhËp d÷ liÖu PASCAL. NhËp qua bµn phÝm vµ nhËp tõ tÖp d÷
liÖu. ViÖc nhËp tõ tÖp sÏ ®−îc tr×nh bµy kü trong häc phÇn dµnh cho cao häc.
D−íi ®©y lµ c¸ch nhËp tõ bµn phÝm. Bao giê còng cã hai c©u lÖnh ®i kÌm. C©u
lÖnh viÕt WRITE ®Ó th«ng b¸o nhu cÇu nhËp liÖu, sau ®ã lµ c©u lÖnh ®äc READ.
C¸ch m« t¶:
WRITE(‘Th«ng b¸o’ hoÆc biÕn);
READ(biÕn);
Liªn quan ®Õn con trá trªn mµn h×nh, nÕu sau khi viÕt th«ng b¸o hoÆc
biÕn, nhËp d÷ liÖu, b¹n muèn con trá xuèng hµng th× m« t¶ nh− sau
WRITELN(‘Th«ng b¸o’ hoÆc biÕn);
READLN(biÕn);
VÝ dô ®Ó nhËp ba hÖ sè cña ph−¬ng tr×nh bËc hai a,b,c ta cÇn hai c©u lÖnh
sau:
Write(‘ nhap a, b, c: ’ );
Read(a,b,c);
NÕu sau khi nhËp d÷ liÖu, b¹n muèn con trá xuèng hµng th× viÕt
Write(‘ nhap a, b, c :’ );
Readln(a,b,c);
VÒ c¬ b¶n PASCAL dïng hai kiÓu viÕt: ®Þnh khu«n vµ kh«ng ®Þnh khu«n.
Theo kiÓu kh«ng ®Þnh khu«n th× khi viÕt ra mµn h×nh, c¸c biÕn sÏ ®−îc bè trÝ
theo kiÓu mÆc ®Þnh sè cét dµnh cho mçi biÕn hoÆc h»ng vµ c¸c biÕn thùc sÏ ®−îc
viÕt d−íi d¹ng dÊu ph¶y di ®éng.
14
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
VÝ dô:
Write(a,b,c); sÏ cho ra mµn h×nh
1.2345678+01 3.00000000+02 -7.0001111-03
Trong tr−êng hîp ®Þnh khu«n chóng ta dïng c¸c sè sau dÊu “:” ®Ó m« t¶
sè cét trªn mµn h×nh dµnh cho viÖc viÕt biÕn hoÆc h»ng tr−íc ®ã. Riªng víi c¸c
sè thËp ph©n kiÓu dÊu ph¶y cè ®Þnh cã thªm sè thø hai sau dÊu ‘”:” thø hai chØ
sè sè thËp ph©n sau dÊu ph¶y.
VÝ dô:
Write (a:10, b:10:2, c:10:4); sÏ cho ra mµn h×nh
1.23456+01 300.00 -0.0070
§Þnh khu«n còng dïng cho c¸c biÕn nguyªn, biÕn ký tù, biÕn dßng vµ c¸c
kiÓu biÕn kh¸c theo nguyªn t¾c trªn. §Þnh khu«n liªn quan chñ yÕu ®Õn c¸ch
tr×nh bµy mµn h×nh sao cho ®Ñp, dÔ ®äc vµ râ rµng.
Víi tÊt c¶ c¸c ®iÒu võa tr×nh bµy ë trªn chóng ta ®· cã thÓ viÕt mét ch−¬ng
tr×nh PASCAL hoµn chØnh, vÝ dô ®Ó tÝnh tÝch cña hai sè a vµ b, tøc lµ S = a . b.
VÝ dô:
Program nhan;
Var A,B,S : real;
BEGIN
Write(‘ nhap A va B : ‘); readln(A, B);
S:=A*B;
Writeln(‘ Tich S = ‘, S:10:4);
Readln;
END.
To¸n tö ®iÒu khiÓn
To¸n tö ®iÒu khiÓn cña PASCAL cã 2 vÕ:
IF THEN ELSE ;
NÕu ®iÒu kiÖn logic sau IF ®−îc tho¶ m·n th× thùc hiÖn c©u lÖnh 1 sau
THEN. NÕu kh«ng th× thùc hiÖn c©u lÖnh 2 sau ELSE.
15
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
VÝ dô:
If (i=k) then a:=b else a:=d;
Trong tr−êng hîp ®¬n gi¶n nhÊt ta chØ cÇn ®Õn vÕ ®Çu:
IF THEN ;
NÕu ®iÒu kiÖn logic sau IF tho¶ m·n th× thùc hiÖn c©u lÖnh 1 sau THEN.
VÝ dô:
If (i=k) then a:=b;
Trong nh÷ng tr−êng hîp phøc t¹p, sau THEN vµ ELSE chóng ta cã thÓ
ph¶i thùc hiÖn nhiÒu c©u lÖnh, khi ®ã ph¶i dïng c¸c to¸n tö hîp thµnh b¾t ®Çu
b»ng BEGIN vµ kÕt thóc b»ng END.
IF THEN
BEGIN
C©u lÖnh 1;. . .; C©u lÖnh n;
END
ELSE
BEGIN
C©u lÖnh 2; ...; C©u lÖnh m;
END;
Chó ý lµ c©u lÖnh tr−íc ELSE kh«ng cã dÊu “;”.
D−íi ®©y lµ vÝ dô ®o¹n ch−¬ng tr×nh sö dông to¸n tö IF … THEN.
VÝ dô 1: Gi¶i ph−¬ng tr×nh bËc hai:
…
If (delta>=0) then
Begin
x1:= (- b + sqrt(delta))/2/a;
x2:= (- b - sqrt(delta))/2/a;
End
Else
16
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
Begin
AA: = -b/2/a; { phÇn thùc cña nghiÖm phøc }
BB:= sqrt(-delta)/2/a; { phÇn ¶o cña nghiÖm phøc }
End;
…
VÝ dô2: TÝnh tæng n sè nguyªn ®Çu tiªn
…
i:=1;
sum:=0;
1: sum:=sum+i;
i:=i+1;
If (i
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
sum2:=0;
1: if (i mod 2 =0) then sum1:=sum1+a[i] else sum2:=sum2+a[i];
i:=i+1;
if i
- TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn
HiÖn nay, cã nhiÒu d¹ng FORTRAN kh¸c nhau dùa trªn FORTRAN c¬ së
(Basic FORTRAN). FORTRAN chuÈn (standard FORTRAN) Tõ phiªn b¶n thø
7 trë ®i ng«n ng÷ FORTRAN ®−îc ký hiÖu lµ “Fortran” (Fortran 90). HiÖn nay
®· cã phiªn b¶n 9 (Fortran 2003) vµ phiªn b¶n 10 (Fortran 2008).
ë ®©y, chóng t«i chØ giíi thiÖu nh÷ng nÐt, nh÷ng kh¸i niÖm c¬ b¶n chung
nhÊt ®Ó ng−êi häc cã thÓ n¾m ®−îc c¬ së cña ng«n ng÷ vµ lËp ®−îc nh÷ng
ch−¬ng tr×nh kh«ng phøc t¹p (vÒ mÆt ng«n ng÷ vµ kü thuËt lËp tr×nh mµ kh«ng
®Ò cËp ®Õn tÝnh phøc t¹p vÒ mÆt chuyªn m«n) vµ kh«ng dïng bé nhí phô.
Muèn lËp ch−¬ng tr×nh b»ng ng«n ng÷ FORTRAN, ph¶i ®äc tµi liÖu
h−íng dÉn ®Ó biÕt ®Æc ®iÓm, nh÷ng h¹n chÕ hay më réng cña d¹ng FORTRAN,
thñ tôc ®−a dÞch vµ cho thùc hiÖn ch−¬ng tr×nh nh− thÕ nµo.
Chõng nµo cµng ®i s©u vµo gi¶i quyÕt c¸c bµi to¸n thùc tiÔn ta míi cµng
thÊy kiÕn thøc ®· häc lµ ch−a ®Çy ®ñ, míi thÊy cÇn bæ sung nh÷ng g×, vµ thÊy râ
thªm mÆt m¹nh vµ mÆt yÕu cña tõng lo¹i ng«n ng÷. Quy m« bµi to¸n t¨ng lªn th×
khã kh¨n còng gÊp béi, bÊy giê míi thÊy yªu cÇu bøc thiÕt vÒ thuËt to¸n, ng«n
ng÷, cÊu tróc d÷ liÖu vµ cÊu tróc ch−¬ng tr×nh vµ míi cã h−íng ®Ó tù bæ sung
thªm.
2.4.2. ChØ thÞ vµ th«ng b¸o
Ch−¬ng tr×nh FORTRAN lµ mét d·y c¸c c©u lÖnh thuéc 2 lo¹i: ChØ thÞ hay
th«ng b¸o. Ch−¬ng tr×nh lµ sù kÕt hîp gi÷a thuËt to¸n vµ d÷ liÖu. Nã gåm mét
mÆt lµ c¸c th«ng b¸o ®Ó m« t¶ d÷ liÖu vµ mét mÆt lµ c¸c chØ thÞ ®Ó thùc hiÖn c¸c
sù t¸c ®éng lªn d÷ liÖu ®ã theo mét thuËt to¸n (gi¶i thuËt) cho bµi to¸n.
ChØ thÞ (Statement) lµ c¸c c©u lÖnh ®−îc thùc hiÖn vµ sÏ ®−îc ch−¬ng tr×nh
dÞch biÕn thµnh d·y lÖnh m¸y trong ch−¬ng tr×nh ®Ých. ChØ thÞ cã thÓ thùc hiÖn lµ:
- Vµo/ ra d÷ liÖu.
- Trao ®æi th«ng tin gi÷a c¸c phÇn cña ch−¬ng tr×nh, gi÷a bé nhí trong vµ
bé nhí ngoµi,
- TÝnh to¸n sè häc, logic.
- KiÓm tra vµ quyÕt ®Þnh lùa chän.
- §iÒu khiÓn.
19
nguon tai.lieu . vn