7 8

Giáo trình Fortran
Ebook made by: Nguyễn Trung Hiếu – Email: mystery_kid1412@yahoo.com.vn - Blog: http://tusachnho.kute.pro
Ch­¬ng 1
K h¸ i ni Öm vÒl Ëp tr×nh m¸ y tÝnh ®Ógi ¶i
c¸ c bµi to¸ n øng dông
1.1. PhÇn cøng vµ phÇn mÒm m¸ y t Ýnh
M¸ y tÝnh ®­î c thi Õt kÕ®Óthùc hi Ön nh÷ng thao t¸ c tu©n theo mét tËp nh÷ng c©u l Önh do ng­êi dï ng vi Õt ra, gäi l µ ch­¬ng tr×nh.
C¸ c m¸ y tÝnh cã cÊu t¹ o chung bª n trong nh­ trª n h×nh 1.1. Ng­êi dï ng sö dông bµn phÝm, chuét hoÆc nh÷ng thi Õt bÞnhËp d÷ l i Öu kh¸ c ®Ó®­a th«ng ti n vµo m¸ y
tÝnh. Bé xö l ý (processor) l µ mét phÇn cña m¸ y tÝnh ki Óm so¸ t tÊt c¶ c¸ c phÇn kh¸ c. Bé xö l ý nhËn d÷ l i Öu vµo vµ l ­u chóng ë bé nhí (memory). Nã nhËn bi Õt c¸ c l Önh cña
ch­¬ng tr×nh. NÕu ta muèn céng hai gi ¸ trÞ, bé xö l ý sÏ l Êy hai gi ¸ trÞ®ã tõ bé nhí vµ göi ®Õn khèi xö l ý sè häc l «gi c (AL U). K hèi nµy thùc hi Ön phÐp céng vµ bé xö l ý
l ­u kÕt qu¶ vµo bé nhí . Trong khi xö l ý, bé xö l ý vµ khèi sè häc l «gi c sö dông mét l ­î ng bé nhí nhá gäi l µ bé nhí trong (i nternal memory). PhÇn l í n d÷ l i Öu ®­î c l ­u ë
bé nhí ngoµi (external memory) nh­ ®Üa cøng, ®Üa mÒm, chóng còng nèi ví i bé xö l ý. Bé xö l ý, bé nhí trong vµ ALU gäi chung l µ khèi xö l ý trung t©m hay CPU.
9 10
Trong ch­¬ng tr×nh, ta th­êng l Önh cho m¸ y tÝnh i n kÕt qu¶ tÝnh to¸ n l ª n mµn h×nh hay m¸ y i n nèi ví i m¸ y tÝnh vµ l µ nh÷ng thi Õt bÞxuÊt d÷ l i Öu.
PhÇn mÒm chøa nh÷ng chØdÉn hoÆc l Önh mµ ta muèn m¸ y tÝnh thùc hi Ön. PhÇn mÒm cã thÓ®­î c vi Õt b»ng nhi Òu ng«n ng÷ vµ cho nhi Òu môc ®Ých. Nh÷ng ch­¬ng
tr×nh thùc hi Ön nh÷ng thao t¸ c chung, th­êng ®­î c nhi Òu ng­êi sö dông gäi l µ nh÷ng phÇn mÒm c«ng cô. HÖ®i Òu hµnh l µ tËp hî p c¸ c ch­¬ng tr×nh gi óp ng­êi dï ng gi ao
ti Õp ví i m¸ y tÝnh. HÖ®i Òu hµnh t¹ o mét m«i tr­êng thuËn ti Ön cho ng­êi dï ng “ gi ao ti Õp” ®­î c ví i m¸ y tÝnh, thùc hi Ön nh÷ng ch­¬ng tr×nh øng dông nh­ c¸ c bé bi ª n
dÞch ng«n ng÷ l Ëp tr×nh, c¸ c phÇn mÒm c«ng cô... HÖ®i Òu hµnh gåm mét sè ch­¬ng tr×nh cho phÐp thao t¸ c ví i f i l e nh­ i n, sao chÐp, hi Ón thÞdanh s¸ ch f i l e... Nh÷ng hÖ
®i Òu hµnh hi Ön ®¹ i nh­ Wi ndows cßn gi óp m¸ y tÝnh nhËn bi Õt vµ qu¶n l ý c«ng vi Öc cña rÊt nhi Òu thi Õt bÞngo¹ i vi nèi kÌ m ví i m¸ y tÝnh nh­ c¸ c thi Õt bÞnhËp, xuÊt d÷ l i Öu,
mµn h×nh, m¸ y i n, m¸ y quÐt ¶nh, l oa, c¸ c m¸ y quan tr¾c chuyª n dông...
Ext ernal memory
I nt ernal memory
Processor
ALU
CPU
I nput Output

H×nh 1.1. S¬ ®å khèi cña mét m¸ y tÝnh
Th«ng th­êng hi Ön nay c¸ c chuyª n gi a l Ëp ch­¬ng tr×nh vi Õt ra rÊt nhi Òu ch­¬ng tr×nh ®Óm¸ y tÝnh thùc hi Ön, tõ nh÷ng ch­¬ng tr×nh ®¬n gi ¶n ®Ógi ¶i c¸ c bµi to¸ n
nhá, tÝnh to¸ n mét vµi gi ¸ trÞ, ®Õn nh÷ng ch­¬ng tr×nh ®å sé xö l ý th«ng ti n phøc t¹ p, th«ng mi nh, gi ¶i nh÷ng bµi to¸ n khoa häc kÜthuËt l í n, chÕb¶n v¨ n b¶n, thi Õt kÕ®å
häa, c¸ c ch­¬ng tr×nh nghe nh¹ c, xem phi m, trß ch¬i , truy cËp I nternet. Nh÷ng ch­¬ng tr×nh t­¬ng ®èi l í n vµ phøc t¹ p th­êng ®­î c gäi l µ nh÷ng phÇn mÒm. Ng­êi dï ng
m¸ y tÝnh cã thÓsö dông nh÷ng ch­¬ng tr×nh ®ã. Ngµy nay chóng ta cã c¶m gi ¸ c r»ng m¸ y tÝnh l µm ®­î c tÊt c¶ mäi vi Öc. Tuy nhi ª n, ph¶i nhí r»ng tÊt c¶ nh÷ng g×m¸ y
tÝnh l µm ®­î c l µ do nã l µm theo mét ch­¬ng tr×nh do con ng­êi t¹ o ra.
11 12
1.2. Thùc hi Ön mét ch­¬ng t r×nh m¸ y t Ýnh
Thùc hi Ön mét ch­¬ng tr×nh m¸ y tÝnh th­êng cßn ®­î c gäi t¾t l µ ch¹ y ch­¬ng tr×nh. Khi ng­êi dï ng m¸ y tÝnh muèn nã l µm mét vi Öc g×®ã, thÝdô gi ¶i mét bµi to¸ n,
th×ng­êi dï ng ph¶i vi Õt ra mét ch­¬ng tr×nh ®Ócho m¸ y thùc hi Ön. Ng­êi l Ëp tr×nh th­êng vi Õt c¸ c ch­¬ng tr×nh m¸ y tÝnh b»ng ng«n ng÷ bËc cao ví i nh÷ng c©u l Önh
gi èng nh­ nh÷ng c©u ti Õng Anh, dÔhäc vµ sö dông. Ng«n ng÷ Fortran còng thuéc l o¹ i ®ã. Mçi mét b­í c ta muèn m¸ y tÝnh thùc hi Ön ph¶i ®­î c m« t¶ ra theo mét có ph¸ p
ng«n ngò ®Æc thï (l anguage syntax). Tuy nhi ª n, ch­¬ng tr×nh ta vi Õt nh­ vËy vÉn ph¶i ®­î c mét ch­¬ng tr×nh chuyª n (bé bi ª n dÞch - compi l er) dÞch thµnh ng«n ng÷ m¸ y
th×m¸ y tÝnh mí i hi Óu vµ thùc hi Ön ®­î c. Khi compi l er dÞch c¸ c dßng l Önh ta vi Õt, nã tù ®éng t×m c¸ c l çi dÞch, hay l çi có ph¸ p (syntax error), tøc c¸ c l çi vÒchÝnh t¶, c¸ c
dÊu ph©n c¸ ch... NÕu ch­¬ng tr×nh vi Õt ra cã l çi dÞch, bé bi ª n dÞch sÏ th«ng b¸ o ®Óng­êi vi Õt ch­¬ng tr×nh söa. Sau khi ®· söa hÕt l çi , ta ch¹ y l ¹ i ch­¬ng tr×nh b¾t ®Çu tõ
b­í c dÞch. Mét khi dÞch xong, mét ch­¬ng tr×nh so¹ n th¶o l i ª n kÕt (l i nkage edi tor program) sÏ thùc hi Ön vi Öc hoµn tÊt s½n sµng cho b­í c thùc hi Ön. ChÝnh l µ ë b­í c nµy
c¸ c l Önh ta vi Õt ®­î c thùc hi Ön trong m¸ y tÝnh. L çi ch­¬ng tr×nh còng cã thÓxuÊt hi Ön trong b­í c nµy, gäi l µ l çi trong khi ch¹ y ch­¬ng tr×nh (run-ti me error) hay l çi l «gi c.
Nh÷ng l çi nµy kh«ng l i ª n quan tí i có ph¸ p cña l Önh, mµ l i ª n quan tí i l «gi c cña c¸ c l Önh, chØl é ra khi m¸ y tÝnh thùc thi c©u l Önh. ThÝdô, l Önh
B A X / ·
l µ mét c©u l Önh ®óng, b¶o m¸ y tÝnh l Êy A chi a cho B vµ gäi kÕt qu¶ l µ X . Tuy nhi ª n, gi ¶ sö nÕu B b»ng kh«ng, phÐp tÝnh chi a cho sè kh«ng l µ phÐp tÝnh sai , kh«ng cã
nghÜa vµ ta ®­î c th«ng b¸ o l çi ch¹ y ch­¬ng tr×nh. C¸ c l çi l «gi c kh«ng ph¶i bao gi ê còng ®­î c th«ng b¸ o. ThÝdô, nÕu trong ch­¬ng tr×nh thay v×chi a mét sè cho 0.10 ta
vi Õt thµnh nh©n ví i 0.10, khi ch¹ y ch­¬ng tr×nh sÏ ch¼ng cã l çi nµo ®­î c th«ng b¸ o, nh­ng ®¸ p sè bµi to¸ n, tøc kÕt qu¶ mµ ta mong ®î i , sÏ l µ sai .
1.3. Quy t r×nh gi ¶i bµi t o¸ n t rª n m¸ y t Ýnh
Nh×n chung c«ng vi Öc gi ¶i mét bµi to¸ n b»ng m¸ y tÝnh gåm n¨ m b­í c sau:
1) Ph¸ t bi Óu bµi to¸ n mét c¸ ch râ rµng.
2) M« t¶ th«ng ti n nhËp vµo vµ xuÊt ra.
3) Gi ¶i bµi to¸ n b»ng tay ®èi ví i tËp d÷ l i Öu ®¬n gi ¶n.
4) Ph¸ t tri Ón c¸ ch gi ¶i bµi to¸ n thµnh d¹ ng tæng qu¸ t.
5) Ki Óm tra ®¸ p sè ví i nhi Òu tËp d÷ l i Öu kh¸ c nhau.
B©y gi ê ta mi nh häa n¨ m b­í c trª n qua thÝdô bµi to¸ n tÝnh gi ¸ trÞtrung b×nh cña mét tËp sè l i Öu thùc nghi Öm.
B­í c 1: Ta ph¸ t bi Óu bµi to¸ n mét c¸ ch râ rµng nh­ sau: “ TÝnh trÞsè trung b×nh cña tËp c¸ c gi ¸ trÞsè l i Öu thùc nghi Öm" .
B­í c 2: ChØra cô thÓsè l i Öu vµo vµ ra l µ g×, h×nh thøc ra sao. NÕu cã tê ghi mét sè gi ¸ trÞcña sè l i Öu, ®ßi hái nhËp vµo m¸ y qua bµn phÝm, khi nµo hÕt sè l i Öu th×gâ
gi ¸ trÞ0.0 ®Ób¸ o hÕt, sau ®ã mí i tÝnh trÞsè trung b×nh vµ i n ra kÕt qu¶ l µ trÞsè trung b×nh ®ã. VËy th×ph¶i m« t¶ ë b­í c 2 nh­ sau: " § Çu vµo l µ chuçi c¸ c gi ¸ trÞsè thùc
kh¸ c kh«ng. § Çu ra l µ gi ¸ trÞtrung b×nh, sÏ l µ mét sè thùc ®­î c i n trª n mµn h×nh" . Gi ¶ sö nÕu ®Çu vµo l µ mét sè sè l i Öu nh­ trª n nh­ng ®· ®­î c ghi vµo mét tÖp (f i l e)
13 14
trong æcøng, quy c¸ ch ghi còng cã nh÷ng ®Æc ®i Óm nhÊt ®Þnh, th×b­í c m« t¶ vµo vµ ra sÏ hoµn toµn kh¸ c vµ c¸ ch gi ¶i còng sÏ kh¸ c. Khi ®ã ta ph¶i m« t¶ râ c¸ ch thøc sè
l i Öu ghi trong f i l e. ThÝdô, ta cã thÓm« t¶ d÷ l i Öu ®Çu vµo vµ ®Çu ra nh­ sau: D÷ l i Öu ®Çu vµo l µ mét chuçi sè thùc ®­î c ghi trong f i l e v¨ n b¶n cã tª n l µ SOL I EU.DAT ví i
quy c¸ ch ghi nh­ sau: dßng trª n cï ng ghi mét sè nguyª n chØsè phÇn tö cña chuçi , c¸ c dßng ti Õp sau l Çn l ­î t ghi c¸ c sè thùc, mçi sè trª n mét dßng.
B­í c 3: Dï ng m¸ y tÝnh tay tÝnh thö ví i mét tËp ®¬n gi ¶n gåm n¨ m sè l i Öu: thÝdô:
Thø tù Gi ¸ trÞ
1 23.43
2 37.43
3 34.91
4 28.37
5 30.62
Trung b×nh = 30.95
TËp sè l i Öu nµy vµ kÕt qu¶ sÏ ®­î c dï ng ®Óki Óm tra ë b­í c 5.
B­í c 4: Trong b­í c nµy ta kh¸ i qu¸ t l ¹ i nh÷ng thao t¸ c cÇn l µm ë b­í c 3. TuÇn tù nh÷ng thao t¸ c nµy ®ÓdÉn ®Õn gi ¶i ®­î c bµi to¸ n chÝnh l µ thuËt gi ¶i hay thuËt to¸ n
(al gori thm). Ta sÏ m« t¶ tuÇn tù tõ ®Çu ®Õn cuèi qu¸ tr×nh gi ¶i . Chi a qu¸ tr×nh thµnh mét sè khèi vµ l i Öt kª nh÷ng khèi ®ã ra. Sau nµy ch­¬ng tr×nh m¸ y tÝnh sÏ tuÇn tù thùc
hi Ön c¸ c khèi chi a ®ã. Trong mçi khèi ta l ¹ i chi ti Õt ho¸ thª m ra ®Õn møc cã thÓchuyÓn thµnh nh÷ng l Önh m¸ y tÝnh. VËy ë ®©y ®· ¸ p dông hai ph­¬ng ph¸ p: ph©n khèi vµ
chi ti Õt ho¸ tõng khèi . Ví i bµi to¸ n ®ang xÐt, tr­êng hî p d÷ l i Öu ®Çu vµo cÇn nhËp tõ bµn phÝm, ta chi a thµnh ba khèi :
- NhËp c¸ c gi ¸ trÞsè vµ l Êy tæng cña chóng.
- Chi a tæng cho sè gi ¸ trÞ.
- I n trÞsè trung b×nh.
Cô thÓho¸ tõng khèi sÏ dÉn tí i gi ¶ tr×nh cña ch­¬ng tr×nh nh­ sau:
1. Cho tæng cña c¸ c gi ¸ trÞb»ng kh«ng.
2. Cho sè sè l i Öu vµo b»ng kh«ng.
3. NhËp vµo tõng gi ¸ trÞvµ ki Óm tra chõng nµo gi ¸ trÞnhËp vµo cßn kh¸ c sè 0.0 th×:
- Céng thª m gi ¸ trÞ®ã vµo tæng.
- Céng thª m 1 vµo sè sè l i Öu.
4. Chi a tæng cho sè sè l i Öu ®Ó®­î c gi ¸ trÞtrung b×nh.
5. I n gi ¸ trÞtrung b×nh.
V×thuËt gi ¶i ®· ®­î c m« t¶ kh¸ chi ti Õt, ta chuyÓn thuËt gi ¶i ®ã thµnh ch­¬ng tr×nh nh­ sau:
PROGRAM TGTTB
15 16
I NTEGER DEM
REAL X, TONG, TB
TONG = 0.0
DEM = 0
5 READ* , X
I F (X .NE. 0.0) THEN
TONG = TONG + X
DEM = DEM + 1
GOTO 5
END I F
TB = TONG / REAL(DEM)
PRI NT 6, TB
6 FORMAT ( 1X , 'TRUNG BI NH BA NG ' , F6.2)
STOP
END
B­í c 5: Trong b­í c nµy ta thö ch¹ y ch­¬ng tr×nh ®· vi Õt ví i tËp sè l i Öu ®· ®­î c thö b»ng c¸ ch tÝnh tay ë môc 3. § Çu ra trª n mµn h×nh m¸ y tÝnh ph¶i nh­ sau:

TRUNG BI NH BANG 30.95

Ngoµi ra, ta cã thÓch¹ y thö ví i mét sè tËp sè l i Öu kh¸ c nhau ®Óti n ch¾c vµo tÝnh ®óng ®¾n l «gi c vµ hoµn h¶o cña ch­¬ng tr×nh ®· x©y dùng.
Nh÷ng kh¸ i ni Öm thuËt gi ¶i vµ gi ¶ tr×nh trª n ®©y cã ý nghÜa rÊt quan träng. C¸ ch gi ¶i , ph­¬ng ph¸ p gi ¶i mét bµi to¸ n chÝnh l µ thuËt gi ¶i . C¸ c bµi to¸ n khoa häc kÜ
thuËt thùc hi Ön trª n m¸ y tÝnh th­êng cã thuËt gi ¶i l µ nh÷ng ph­¬ng ph¸ p cña to¸ n häc hoÆc cña c¸ c khoa häc chuyª n ngµnh mµ ng­êi l Ëp tr×nh ®· bi Õt. Mét sè nhi Öm vô,
bµi to¸ n kh¸ c cã thÓcã c¸ ch gi ¶i xuÊt ph¸ t tõ ki nh nghi Öm thùc tÕ, tõ suy nghÜl «gi c th­êng ngµy cña chóng ta.
ThÝdô, khi gi ¶i ph­¬ng tr×nh bËc hai 0
2
· + + c bx x a b»ng m¸ y tÝnh, ta cã thÓtÝnh gi ¸ trÞcña bi Öt thøc ∆ . Sau ®ã tï y gi ¸ trÞcña ∆ cã thÓl µ: 0 < ∆ ph­¬ng tr×nh
v« nghi Öm, 0 · ∆ ph­¬ng tr×nh cã mét nghi Öm kÐp vµ 0 > ∆ ph­¬ng tr×nh cã hai nghi Öm ri ª ng bi Öt mµ ®­a ra th«ng b¸ o kÕt qu¶. Trong thÝdô nµy, thuËt to¸ n l µ ph­¬ng
ph¸ p quen thuéc mµ chóng ta ®· häc trong ®¹ i sè.
Mét thÝdô kh¸ c: Cã mét danh s¸ ch si nh vi ª n cï ng ví i ®i Óm cña m«n thi . S¾p xÕp l ¹ i danh s¸ ch ®ã sao cho ng­êi cã ®i Óm thi cao h¬n th×ë dßng trª n. Ta cã thÓl µm
nh­ sau:
T¹ m thêi xem ng­êi thø nhÊt l µ ng­êi ®øng ®Çu danh s¸ ch. Dï ng ngãn tay trá dâi theo tõng ng­êi cßn l ¹ i , kÓtõ ng­êi thø hai cho ®Õn hÕt danh s¸ ch, nÕu ai cã ®i Óm
thi cao h¬n th×chuyÓn ng­êi ®ã l ª n ®Çu danh s¸ ch vµ ng­êi ®ang ë ®Çu danh s¸ ch chuyÓn xuèng chç cña ng­êi võa ®­î c thay. KÕt qu¶ ta ®­î c danh s¸ ch mí i ví i ng­êi
cã ®i Óm thi cao nhÊt ë dßng ®Çu. Nh­ng tõ dßng thø hai ®Õn dßng cuèi cï ng cña danh s¸ ch cã thÓthø tù vÉn cßn l én xén.
B©y gi ê ta chØcßn vi Öc s¾p xÕp l ¹ i tõ dßng thø hai trë ®i . Ta theo dâi tõ ng­êi thø ba cho ®Õn ng­êi cuèi cï ng, nÕu ai cã ®i Óm thi cao h¬n th×®­î c ®­a l ª n dßng thø
hai vµ ng­êi ®ang ë dßng thø hai sÏ bÞ®­a xuèng dßng cña ng­êi võa thay thÕ. KÕt qu¶ l µ ng­êi ë dßng thø hai trong danh s¸ ch mí i sÏ l µ ng­êi cã ®i Óm thi cao thø nh×.
17 18
Nh­ng tõ dßng thø ba ®Õn cuèi danh s¸ ch vÉn cßn l én xén.
Ti Õp tôc, ta ph¶i s¾p xÕp l ¹ i danh s¸ ch kÓtõ dßng thø ba theo ®óng c¸ ch nh­ trª n. L Æp l ¹ i c«ng vi Öc nh­ vËy cho ®Õn dßng tr­í c dßng cuèi cï ng, ta sÏ ®­î c danh
s¸ ch hoµn chØnh s¾p xÕp theo thø tù gi ¶m dÇn cña ®i Óm thi .
Ta thÊy, trong tr­êng hî p nµy thuËt gi ¶i cña bµi to¸ n chÝnh l µ c¸ i c¸ ch mµ chóng ta cã thÓvÉn th­êng l µm trong thùc tÕ®êi sèng khi ph¶i s¾p xÕp l ¹ i danh s¸ ch theo
thø tù nh­ng kh«ng dï ng m¸ y tÝnh. Vµ c¸ ch l µm “ b»ng tay” nµy còng cã thÓ®­î c ¸ p dông l µm thuËt to¸ n cho c¸ c l o¹ i bµi to¸ n s¾p xÕp trong m¸ y tÝnh.
Chóng t«i gi í i thi Öu chi ti Õt hai thÝdô võa råi cèt l µ ®Ósi nh vi ª n ý thøc ®­î c r»ng t­ duy thuËt gi ¶i , suy nghÜvÒc¸ ch gi ¶i l µ b­í c quan träng nhÊt khi b¾t tay vµo x©y
dùng ch­¬ng tr×nh m¸ y tÝnh. Cã x¸ c ®Þnh ®­î c thuËt gi ¶i th×mí i nãi ®Õn l Ëp ®­î c ch­¬ng tr×nh ®Ógi ¶i bµi to¸ n trª n m¸ y tÝnh.
Cßn gi ¶ tr×nh gi èng nh­ nh÷ng l êi chØdÉn vÒph­¬ng ph¸ p, c¸ ch gi ¶i cho ai ®ã tuÇn tù thùc hi Ön c¸ c b­í c cña thuËt gi ¶i bµi to¸ n ®ÓdÉn tí i kÕt qu¶. B¹ n h· y t­ëng
t­î ng trong ®êi sèng nÕu b¹ n muèn nhê ai ®ã thùc hi Ön mét nhi Öm vô. NÕu nhi Öm vô ®ã kh«ng qu¸ tÇm th­êng, th×th­êng Ýt ra b¹ n ph¶i gi ¶i thÝch tãm t¾t yª u cÇu, tuÇn
tù thùc hi Ön nhi Öm vô cho ng­êi ta - b¹ n ®· ®Æt ch­¬ng tr×nh cho ng­êi ta thùc hi Ön. Nh­ vËy, ta thÊy thùc chÊt gi ¶ tr×nh ®· l µ mét ch­¬ng tr×nh, chØcã ®i Òu nã ®­î c vi Õt
ra ng¾n gän b»ng vµi c©u, vµi kÝhi Öu quen dï ng, ch­a ®­î c vi Õt b»ng mét ng«n ng÷ l Ëp tr×nh cô thÓmµ th«i . Mét ch­¬ng tr×nh m¸ y tÝnh vi Õt b»ng ng«n ng÷ Fortran hay
bÊt kú mét ng«n ng÷ nµo kh¸ c ch¼ng qua chØl µ nh÷ng l êi chØdÉn nµy ®­î c vi Õt theo qui ­í c kÝhi Öu ®Óm¸ y tÝnh hi Óu ®­î c mµ l µm thay cho ta.
1.4. Nh÷ng ch­¬ng t r×nh Fort ran hoµn chØnh
Ch­¬ng tr×nh TGTTB ë môc tr­í c cã thÓl µ mét thÝdô vÒmét ch­¬ng tr×nh hoµn chØnh. Nh­ vËy ta thÊy mét ch­¬ng tr×nh hoµn chØnh b¾t ®Çu b»ng l Önh PROGRAM
chØsù b¾t ®Çu cña ch­¬ng tr×nh. D¹ ng tæng qu¸ t cña l Önh nµy nh­ sau:
PROGRA M Tª n ch­¬ng tr×nh
trong ®ã tª n ch­¬ng tr×nh l µ mét x©u ký tù gåm tõ mét ®Õn s¸ u ký tù, b¾t ®Çu b»ng ch÷ c¸ i vµ chØchøa c¸ c ch÷ c¸ i l a ti nh vµ ch÷ sè. K Õt thóc ch­¬ng tr×nh l µ hai l Önh:
STOP
END
L Önh PROGRAM vµ l Önh STOP l µ c¸ c l Önh tuú chän, cã thÓkh«ng nhÊt thi Õt ph¶i cã. NÕu ta kh«ng vi Õt, chóng cã thÓ®­î c ch­¬ng tr×nh dÞch tù thª m vµo. PhÇn
th©n ch­¬ng tr×nh gåm tÊt c¶ c¸ c l Önh kh¸ c nh»m thùc hi Ön bµi to¸ n ®­î c gi ¶i vµ chi a thµnh hai nhãm: nhãm c¸ c l Önh thùc hi Ön (executabl e statement) vµ nhãm c¸ c l Önh
kh«ng thùc hi Ön (non-executabl e statement) hay gäi l µ c¸ c l Önh m« t¶, l Önh khai b¸ o. Nhãm c¸ c l Önh m« t¶ ph¶i n»m ë phÝa trª n cña th©n ch­¬ng tr×nh.
Nh­ vËy c¸ c ch­¬ng tr×nh Fortran cã thÓcã cÊu tróc tæng qu¸ t nh­ sau:
PROGRAM Tª n ch­¬ng tr×nh
C¸ c l Önh kh«ng thùc hi Ön (Non-executabl e statements)
19 20
C¸ c l Önh thùc hi Ön (Executabl e statements)
STOP
END
Trong ch­¬ng tr×nh tÝnh gi ¸ trÞtrung b×nh cña chuçi sè thùc ë thÝdô trª n, ta thÊy sau tõ khãa PROGRAM l µ tª n ch­¬ng tr×nh - ®ã l µ côm ch÷ TGTTB. Nhãm c¸ c
l Önh kh«ng thùc hi Ön (nh÷ng l Önh m« t¶) gåm 2 l Önh:
I NTEGER DEM
REAL X, TONG, TB
cßn nhãm l Önh thùc hi Ön gåm c¸ c l Önh ë ti Õp sau hai l Önh trª n:
TONG = 0.0
DEM = 0
5 REA D* , X
I F (X .NE. 0.0) THEN
TONG = TONG + X
DEM = DEM + 1
GOTO 5
END I F
TB = TONG / REAL (DEM)
PRI NT 6, TB
6 FORMA T (1X, 'TRUNG BI NH BANG ' , F6.2)
Nh÷ng l Önh thùc hi Ön th­êng l µ nh÷ng l Önh g¸ n, l Önh tÝnh to¸ n c¸ c phÐp tÝnh, l Önh chuyÓn ®i Òu khi Ón, ®äc, ghi sè l i Öu vµ mét sè l Önh kh¸ c. Cuèi cï ng ch­¬ng tr×nh
cã l Önh STOP vµ END.
Trong thùc tÕcã thÓcã nh÷ng ch­¬ng tr×nh l í n h¬n rÊt nhi Òu, gåm hµng ngh×n dßng l Önh vµ cã cÊu tróc phøc t¹ p. Nh­ng ta vÉn thÊy nã cã phÇn ®Çu, phÇn th©n vµ
phÇn cuèi , trong phÇn th©n ch­¬ng tr×nh còng chØcã hai nhãm l Önh gi èng nh­ trong ch­¬ng tr×nh ®¬n gi ¶n trª n ®©y.
1.5. Quy c¸ ch so¹ n t h¶o mét ch­¬ng t r×nh Fort ran
C¸ c ch­¬ng tr×nh Fortran ®­î c so¹ n th¶o nhê mét bé so¹ n th¶o (edi tor) hoÆc phÇn mÒm so¹ n v¨ n b¶n nµo ®ã. C¸ c l Önh cña mét ch­¬ng tr×nh ®­î c vi Õt thµnh c¸ c
dßng nèi ti Õp nhau, mçi l Önh trª n mét dßng mí i . Trª n mµn h×nh so¹ n th¶o chuÈn
(* )
ng­êi ta quy ­í c c¸ c cét tõ 1 ®Õn 5 (h×nh 1.2) dï ng ®Óghi sè hi Öu l Önh hay gäi l µ nh· n

(* )
Tr­í c ®©y ng­êi ta ph¶i dï ng gi Êy chuyª n dông, gäi l µ bl ank, ®Óvi Õt ch­¬ng t r×nh Fortran. Sau ®ã t õng l Önh ch­¬ng t r×nh tõ gi Êy chuÈn ®­î c ghi vµo mét tê b×a chuyª n dông cã
h×nh d¸ ng ®Æc bi Öt b»ng m¸ y ®ôc l ç gi óp t ù ®éng m· hãa tõng ký tù cña dßng l Önh thµnh mét hµng l ç ví i vÞt rÝkh¸ c nhau. Ngµy nay c¸ c bé so¹ n t h¶o cã thÓgi óp chóng t a vi Õt c¸ c
21 22
l Önh, cét 6 chuyª n dï ng ®Óghi ký tù nèi dßng l Önh, néi dung c¸ c dßng l Önh chØ®­î c ghi trª n c¸ c cét tõ 7 ®Õn 72. TÊt c¶ c¸ c th«ng ti n ë qu¸ cét 72 bÞbá qua.



L Önh For tr an
K ý tù nèi dßng
Nh· n l Önh
C¸ c cét
1-5
Cét
6
C¸ c cét
7- 72

H×nh 1.2. Quy c¸ ch vi Õt l Önh Fortran trª n mµn h×nh so¹ n th¶o
Nh· n l Önh l µ nh÷ng sè nguyª n d­¬ng, kh¸ c kh«ng, dï ng ®ÓchØsè hi Öu cña dßng l Önh. ChØnh÷ng dßng l Önh nµo cÇn ®­î c chuyÓn ®i Òu khi Ón tí i bëi nh÷ng dßng
l Önh kh¸ c mí i nhÊt thi Õt ph¶i cã nh· n l Önh. DÊu nèi dßng l Önh cã thÓl µ bÊt cø ký tù nµo ngoµi ký tù trèng vµ sè kh«ng, th­êng ng­êi ta hay dï ng dÊu * hoÆc dÊu +, ®ÓchØ
r»ng dßng hi Ön t¹ i l µ phÇn nèi ti Õp cña l Önh ë dßng trª n ®ã. Trong c¸ c dßng l Önh cã thÓcã nh÷ng ký tù trèng ®ÓdÔ®äc. Trong ch­¬ng tr×nh so¹ n th¶o cã thÓcã nh÷ng
dßng ghi chó (comment l i nes); nh÷ng dßng nµy kh«ng thuéc néi dung ch­¬ng tr×nh, kh«ng ®­î c dÞch khi dÞch ch­¬ng tr×nh, mµ chØcã t¸ c dông gî i nhí cho ng­êi l Ëp
tr×nh khi theo dâi ki Óm tra ch­¬ng tr×nh. TÊt c¶ c¸ c dßng ghi chó ph¶i b¾t ®Çu b»ng mét ch÷ c¸ i , th­êng ng­êi ta dï ng ch÷ C (ch÷ c¸ i ®Çu ti ª n cña tõ comment), ®øng ë
cét thø nhÊt cña c¸ c cét dï ng ®Óghi nh· n. Trong s¸ ch nµy sÏ l u«n sö dông ch÷ c¸ i C ®Ó®¸ nh dÊu dßng ghi chó trong c¸ c ch­¬ng tr×nh.
X©y dùng mét ch­¬ng tr×nh m¸ y t Ýnh nãi chung l µ mét c«ng vi Öc khã vµ ®ßi hái t Ýnh cÈn thËn, tØmØ. Ki nh nghi Öm cho thÊy r»ng ngay c¶ ®èi ví i ng­êi l Ëp tr×nh t hµnh th¹ o,
khi vi Õt mét ch­¬ng tr×nh dï ®¬n gi ¶n vÉn cã thÓm¾c l çi , trong ®ã cã c¶ nh÷ng l çi kh«ng ngê tí i . Do ®ã, ë mét sè s¸ ch d¹ y ng«n ng÷ l Ëp tr×nh, ng­êi ta cßn khuyª n ng­êi häc
ngay t õ ®Çu chó ý l uyÖn thãi quen, hay phong c¸ ch (styl e) so¹ n th¶o ch­¬ng tr×nh. Mét ch­¬ng t r×nh ®Ñp l µ ch­¬ng tr×nh tÝnh ®óng c¸ i mµ ta cÇn tÝnh, nh­ng ®¬n gi ¶n, dÔhi Óu vµ
s¸ ng sña vÒc¸ ch t r×nh bµy. Trong tµi l i Öu nµy dÇn dÇn còng sÏ cã nh÷ng chØdÉn, nh÷ng l êi khuyª n quan t räng cho ng­êi häc rÌ n l uyÖn phong c¸ ch so¹ n ch­¬ng tr×nh. ChÞu khã
rÌ n l uyÖn nh÷ng thãi quen t èt còng gãp phÇn gi óp chóng ta ti Õn xa.
Bµi tËp
1. NÕu dï ng ch÷ C l µm dÊu nèi dßng l Önh th×cã ®­î c kh«ng?
2. C¸ c nh· n trong ch­¬ng tr×nh cã cÇn t¨ ng dÇn kh«ng?
3. Nª u c¸ c b­í c gi ¶i bµi to¸ n s¾p xÕp chuçi sè nguyª n nhËp tõ bµn phÝm theo thø tù l í n dÇn. Vi Õt gi ¶ tr×nh cho bµi to¸ n ®ã.



l Önh trùc ti Õp tõ bµn phÝm, khi vi Õt c¸ c ký tù vµ ký hi Öu hi Ön t rª n mµn h×nh ®ÓdÔtheo dâi vµ chØnh söa gi èng nh­ ta so¹ n t h¶o mét v¨ n b¶n bÊt kú, sau ®ã l ­u trong m¸ y t Ýnh d­í i
d¹ ng f i l e nguån.
23 24
Ch­¬ng 2
Nh÷ng yÕu tè c¬ b¶n cña Fortran
2.1. D÷ l i Öu vµ c¸ ch bi Óu di Ôn d÷ l i Öu t rong Fort ran
Fortran cã thÓthao t¸ c ví i s¸ u l o¹ i (ki Óu) d÷ l i Öu c¬ b¶n th­êng gÆp trong thùc tÕl µ: c¸ c sè nguyª n, sè thùc, sè phøc, sè thùc ®é chÝnh x¸ c gÊp ®«i , c¸ c gi ¸ trÞl «gi c
vµ d÷ l i Öu v¨ n b¶n. Trong ch­¬ng nµy ta sÏ l µm quen ví i c¸ c d÷ l i Öu ki Óu sè nguyª n, sè thùc, gi ¸ trÞl «gi c vµ v¨ n b¶n (chuçi ký tù).
Sè nguyª n l µ l i Öt c¸ c sè thËp ph©n ví i dÊu +, − hoÆc kh«ng cã dÊu. ThÝdô:
0 ; 6 ; −400 ; +1234
C¸ c sè nguyª n ®­î c bi Óu di Ôn d­í i d¹ ng I . Gi ¸ trÞcùc ®¹ i cña sè nguyª n gäi l µ kh¶ n¨ ng bi Óu di Ôn sè nguyª n cña m¸ y tÝnh.
Trong Fortran cã hai d¹ ng bi Óu di Ôn sè thùc. D­í i d¹ ng F sè thùc gåm phÇn nguyª n vµ phÇn thËp ph©n, c¸ ch nhau bëi dÊu chÊm. Sè thùc cã thÓcã dÊu dÊu +, −
hoÆc kh«ng cã dÊu. NÕu phÇn nguyª n hoÆc phÇn thËp ph©n b»ng kh«ng, cã thÓkh«ng cÇn vi Õt ra c¸ c phÇn ®ã. DÊu chÊm thËp ph©n nhÊt thi Õt ph¶i cã mÆt. ThÝdô:
−2.583 ; 14.3 ; 0.8 ; 12. ; .7 ; 14.
Gi ¸ trÞcùc ®¹ i vµ sè ch÷ sè cã nghÜa cùc ®¹ i trong d¹ ng F phô thuéc vµo d¹ ng khai b¸ o sè thùc.
D¹ ng E bi Óu di Ôn sè thùc thµnh hai phÇn: phÇn h»ng thùc n»m trong kho¶ng tõ 0,1 ®Õn 1,0 vµ phÇn bËc. BËc b¾t ®Çu b»ng ch÷ E , ti Õp sau l µ h»ng nguyª n gåm
kh«ng qu¸ hai ch÷ sè thËp ph©n, cã thÓcã dÊu hoÆc kh«ng dÊu. ThÝdô sè 25000 cã thÓvi Õt d­í i d¹ ng E l µ 0.25E05. Sè ch÷ sè cã nghÜa cña phÇn h»ng thùc vµ h»ng
nguyª n còng tï y thuéc l o¹ i sè thùc khai b¸ o.
H»ng ví i ®é chÝnh x¸ c gÊp ®«i (d¹ ng D ) cã thÓvi Õt nh­ sè ví i dÊu chÊm thËp ph©n, chøa tõ 8 ®Õn 16 ch÷ sè cã nghÜa, hoÆc nh­ sè d¹ ng mò ví i ch÷ D thay v× E ,
trong ®ã phÇn h»ng thùc cã thÓchøa tí i 16 ch÷ sè cã nghÜa. ThÝdô:
2.71828182 ; 0.27182818D+1
TrÞtuyÖt ®èi cùc ®¹ i cña c¸ c sè thùc th­êng vµ ®é chÝnh x¸ c gÊp ®«i b»ng
79
10

®Õn
75
10 .
Sè phøc bi Óu di Ôn b»ng mét cÆp h»ng thùc trong dÊu ngoÆc ®¬n vµ c¸ ch nhau bëi dÊu ph¶y. ThÝdô (2.1, 0.5E2) bi Óu di Ôn sè phøc i 50 1 , 2 + trong to¸ n häc.
Hai sè trong dÊu ngoÆc øng ví i c¸ c phÇn thùc vµ phÇn ¶o ph¶i cï ng ®é chÝnh x¸ c bi Óu di Ôn.
C¸ c gi ¸ trÞd÷ l i Öu v¨ n b¶n dï ng ®Óbi Óu di Ôn c¸ c ®o¹ n v¨ n b¶n nh­ tª n c¸ c ®¹ i l ­î ng, c¸ c kh¸ i ni Öm, thÝdô côm ch÷ " Toc do" , "Temperature" , " BAO CAO SO 1" ...
Ng­êi ta cßn gäi d÷ l i Öu v¨ n b¶n l µ d÷ l i Öu ký tù, x©u ký tù, d÷ l i Öu ch÷.
C¸ c ch÷ sè 1, 2, ..., 9, 0 khi dï ng ví i t­ c¸ ch l µ ®Óbi Óu di Ôn c¸ c gi ¸ trÞsè t­¬ng øng th×chóng còng l µ nh÷ng d÷ l i Öu ki Óu v¨ n b¶n.
25 26
D÷ l i Öu l «gi c dï ng ®ÓchØkh¶ n¨ ng cã hay kh«ng cña mét sù ki Ön, ®óng hay sai cña mét bi Óu thøc quan hÖ. Ng­êi ta dï ng hai gi ¸ trÞl «gi c l µ .TRUE. vµ .FA L SE. ®Ó
chØhai tr¹ ng th¸ i ®èi l Ëp nhau trong nh÷ng thÝdô trª n vµ ng«n ng÷ Fortran cã thÓxö l ý ví i nh÷ng gi ¸ trÞl «gi c, tøc thùc hi Ön nh÷ng phÐp tÝnh ®èi ví i c¸ c gi ¸ trÞl «gi c nh­
trong to¸ n häc cã thÓthùc hi Ön.
Së dÜm¸ y tÝnh l µm ®­î c nh÷ng vi Öc nh­ chóng ta thÊy l µ v×nã cã thÓxö l ý th«ng ti n, so s¸ nh, tÝnh to¸ n ®­î c ví i nh÷ng ki Óu d÷ l i Öu nµy vµ ®­a ra nh÷ng kÕt l uËn,
th«ng b¸ o... TÊt c¶ nh÷ng th«ng ti n chóng ta gÆp trong ®êi sèng thùc tÕ®Òu cã thÓ®­î c bi Óu di Ôn b»ng nh÷ng d÷ l i Öu ki Óu nµy hoÆc ki Óu kh¸ c.
Trª n ®©y l µ nh÷ng ki Óu d÷ l i Öu c¬ b¶n cña ng«n ng÷ l Ëp tr×nh Fortran. Sau nµy vµ ë c¸ c ch­¬ng kh¸ c, chóng ta sÏ thÊy cßn cã nh÷ng ki Óu d÷ l i Öu kh¸ c ®­î c tæchøc
dùa trª n nh÷ng ki Óu d÷ l i Öu c¬ b¶n võa tr×nh bµy.
ë ®©y chóng ta cÇn l ­u ý r»ng nh÷ng kh¸ i ni Öm d÷ l i Öu trong m¸ y tÝnh nh­ sè nguyª n, sè thùc... nãi chung gi èng ví i nh÷ng kh¸ i ni Öm t­¬ng øng trong ®êi sèng hoÆc
trong to¸ n häc. Nh­ng ®ång thêi còng cã nh÷ng nÐt kh¸ c bi Öt. ThÝdô, Fortran chØhi Óu vµ tÝnh to¸ n ®­î c ví i nh÷ng sè nguyª n l o¹ i th­êng kh«ng l í n h¬n
9
10 2 ⋅ , ng«n
ng÷ l Ëp tr×nh Pascal chØl µm vi Öc ví i nh÷ng sè nguyª n kh«ng l í n h¬n 32767 vµ kh«ng nhá h¬n −32768, trong khi hµng ngµy chóng ta cã thÓvi Õt trª n gi Êy hoÆc tÝnh to¸ n
c¸ c phÐp tÝnh ví i nh÷ng sè nguyª n cã gi ¸ trÞtï y ý. T×nh h×nh còng t­¬ng tù nh­ vËy ®èi ví i c¸ c sè thùc. VËy trong m¸ y tÝnh cã nh÷ng gi í i h¹ n nhÊt ®Þnh trong vi Öc bi Óu
di Ôn c¸ c sè, kh«ng ph¶i sè nµo m¸ y tÝnh còng bi Óu di Ôn ®­î c vµ tÝnh to¸ n ®­î c. Tuy nhi ª n, ví i nh÷ng gi í i h¹ n nh­ hi Ön nay, Fortran vÉn cho phÐp chóng ta l Ëp c¸ c
ch­¬ng tr×nh ®ÓtÝnh to¸ n, xö l ý ví i tÊt c¶ nh÷ng gi ¸ trÞsè gÆp trong ®êi sèng vµ khoa häc kü thuËt.
2.2. H»ng vµ bi Õn
M¸ y tÝnh xö l ý d÷ l i Öu hay thùc hi Ön nh÷ng tÝnh to¸ n ví i nh÷ng ®¹ i l ­î ng. TÊt c¶ nh÷ng ®¹ i l ­î ng ®ã ph¶i ®­î c l ­u gi ÷ trong m¸ y tÝnh. Nh÷ng ®¹ i l ­î ng kh«ng ®æi
trong suèt qu¸ tr×nh thùc hi Ön cña ch­¬ng tr×nh gäi l µ c¸ c h»ng, cßn nh÷ng ®¹ i l ­î ng cã thÓnhËn nh÷ng gi ¸ trÞkh¸ c nhau gäi l µ c¸ c bi Õn. V í i mçi h»ng hoÆc bi Õn, trong
bé nhí m¸ y tÝnh gi µnh ra mét ®Þa chØ®Ól ­u gi ¸ trÞ. Tª n l µ ký hi Öu quy ­í c cña ®Þa chØ®ã.
2.2.1. Tª n bi Õn vµ tª n h»ng
Tª n bi Õn trong Fortran chuÈn ®­î c bi Óu di Ôn b»ng tËp hî p tõ 1 ®Õn 6 c¸ c ch÷ c¸ i trong b¶ng ch÷ c¸ i l a ti nh (26 ch÷ c¸ i ) hoÆc c¸ c ch÷ sè 0, 1, ..., 9, nh­ng ph¶i b¾t
®Çu b»ng ch÷ c¸ i .
Trong mét ch­¬ng tr×nh c¸ c tª n bi Õn kh«ng ®­î c trï ng nhau. Trong c¸ c phi ª n b¶n Fortran hi Ön nay, ®Ódï ng l µm tª n kh«ng ph©n bi Öt ch÷ c¸ i hoa vµ ch÷ c¸ i th­êng.
Ngoµi ra, cßn mét vµi ký tù kh¸ c còng cã thÓdï ng ®ÓcÊu t¹ o tª n. Phi ª n b¶n Fortran 90 cho phÐp ®Æt tª n ví i sè ký tù dµi h¬n 6 vµ trong tª n cã thÓcã mét sè ký tù kh¸ c
n÷a. Tuy nhi ª n, si nh vi ª n nª n tËp thãi quen ®Æt tª n gän gµng theo Fortran chuÈn, bëi v×tËp hî p 6 ký tù ®· rÊt ®ñ ®Óchóng ta m« t¶ c¸ c bµi to¸ n, kÓc¶ nh÷ng bµi to¸ n l í n
vµ phøc t¹ p.
ThÝdô, c¸ c tª n sau ®©y
X ; A ; X1 ; B2T5 ; SOHANG ; SUM l µ hî p l Ö, cßn c¸ c tª n sau ®©y l µ sai :
27 28
1NGAY ; HE SO ; B* T
v×trong tª n thø nhÊt ký tù ®Çu ti ª n l µ ch÷ sè, trong tª n thø hai cã ký tù dÊu c¸ ch, trong tª n thø ba cã ký tù (* ) kh«ng ph¶i l µ nh÷ng ký tù dï ng ®Ó®Æt tª n.
Quy t¾c ®Æt tª n bi Õn trª n ®©y còng ¸ p dông ®èi ví i tª n ch­¬ng tr×nh, tª n h»ng, tª n c¸ c ch­¬ng tr×nh con vµ tª n f i l e. (Ri ª ng ví i tª n f i l e cã thÓcã thª m phÇn më réng
gåm kh«ng qu¸ ba ch÷ c¸ i hoÆc ch÷ sè ng¨ n ví i phÇn tª n chÝnh bëi dÊu chÊm).

2.2.2. M « t¶ (khai b¸ o) ki Óu bi Õn vµ ki Óu h»ng
Ki Óu cña bi Õn t­¬ng øng ví i ki Óu d÷ l i Öu mµ nã bi Óu di Ôn. C¸ c bi Õn nguyª n bi Óu di Ôn c¸ c d÷ l i Öu sè nguyª n, c¸ c bi Õn thùc - sè thùc... Trong ch­¬ng tr×nh ph¶i chØrâ
c¸ c bi Õn ®­î c sö dông bi Óu di Ôn d÷ l i Öu ki Óu nµo (nguyª n, thùc, l «gi c, phøc, v¨ n b¶n, sè thùc ®é chÝnh x¸ c th­êng hay ®é chÝnh x¸ c gÊp ®«i ...).
Mçi bi Õn chØl ­u gi ÷ ®­î c nh÷ng gi ¸ trÞ®óng ki Óu cña nã. Mét bi Õn ®· m« t¶ ki Óu l µ sè nguyª n th×kh«ng thÓdï ng ®Ól ­u gi ¸ trÞsè thùc hay gi ¸ trÞl «gi c.
C¸ ch m« t¶ Èn chØdï ng ®èi ví i c¸ c bi Õn nguyª n vµ thùc: dï ng tª n bi Õn nguyª n b¾t ®Çu b»ng mét trong s¸ u ch÷ c¸ i I , J, K, L, M, N, cßn tª n bi Õn thùc b¾t ®Çu b»ng
mét trong nh÷ng ch÷ c¸ i ngoµi s¸ u ch÷ c¸ i trª n. Nãi chung, ng­êi mí i häc l Ëp tr×nh kh«ng bao gi ê nª n dï ng c¸ ch m« t¶ Èn.
C¸ ch m« t¶ hi Ön dï ng c¸ c l Önh m« t¶ hi Ön nh­ I NTEGER, REAL , CHARACTER, L OGI CAL , DOUBL E PRECI SI ON, COMPL EX... ®ÓchØki Óu d÷ l i Öu mµ c¸ c bi Õn bi Óu
di Ôn. D­í i ®©y l µ quy t¾c vi Õt nh÷ng l Önh m« t¶ ki Óu d÷ l i Öu: tuÇn tù nguyª n, thùc, l «gi c, phøc, thùc ®é chÝnh x¸ c gÊp ®«i vµ ký tù v¨ n b¶n:
I NTEGER Danh s¸ ch c¸ c bi Õn nguyª n
REA L Danh s¸ ch c¸ c bi Õn thùc
L OGI CA L Danh s¸ ch c¸ c bi Õn l «gi c
COM PL EX Danh s¸ ch c¸ c bi Õn phøc
DOUBL E PRECI SI ON Danh s¸ ch c¸ c bi Õn ®é chÝnh x¸ c ®«i
CHA RA CTER Danh s¸ ch c¸ c bi Õn ký tù
Trong danh s¸ ch c¸ c bi Õn sÏ l i Öt kª c¸ c tª n bi Õn, nÕu cã h¬n mét bi Õn th×c¸ c bi Õn ph¶i c¸ ch nhau bëi dÊu ph¶y.
ThÝdô:
I NTEGER I , TT, DEM
REAL X1, APSUAT, MAX, TI ME, DELTA
COMPLEX P1, P2, SOPH
29 30
chØr»ng c¸ c bi Õn I , TT, DEM bi Óu di Ôn c¸ c gi ¸ trÞsè nguyª n, c¸ c bi Õn X1, APSUAT, MAX, TI ME, DELTA bi Óu di Ôn c¸ c gi ¸ trÞsè thùc, cßn ba bi Õn P1, P2, SOPH - sè
phøc.
Nh÷ng gi ¸ trÞ®­î c gi ÷ nguyª n nhÊt qu¸ n trong suèt ch­¬ng tr×nh (tøc c¸ c h»ng sè) th­êng ®­î c g¸ n vµo c¸ c ®Þa chØnhí th«ng qua tª n trong l Önh khai b¸ o h»ng cã
d¹ ng:
PA RA METER (ten1 = bi Óu thøc 1, tª n 2 = bi Óu t høc 2, ...)
ThÝdô, trong ch­¬ng tr×nh nÕu ta nhi Òu l Çn dï ng ®Õn gi ¸ trÞsè 141593 , 3 · π th×ta cã thÓg¸ n gi ¸ trÞ3,141593 cho mét tª n h»ng l µ PI b»ng l Önh
PARAMETER (PI = 3.141593)
L Önh sau ®©y
PARAMETER (HSMSD = 0.0026, RO = 1.0028)
khai b¸ o hai h»ng sè: HSMSD vµ RO, HSMSD ®­î c g¸ n gi ¸ trÞb»ng 0,0026, cßn RO ®­î c g¸ n gi ¸ trÞ1,0028.
Trong ch­¬ng tr×nh tÊt c¶ nh÷ng l Önh khai b¸ o (m« t¶) võa gi í i thi Öu trª n ®©y thuéc l o¹ i c¸ c l Önh kh«ng thùc hi Ön vµ chóng ph¶i n»m ë ®Çu ch­¬ng tr×nh, tr­í c tÊt c¶
c¸ c l Önh thùc hi Ön.
Kh¸ i ni Öm vÒtª n, ki Óu d÷ l i Öu cña bi Õn, cña h»ng l µ nh÷ng kh¸ i ni Öm c¬ b¶n, quan träng trong ng«n ng÷ l Ëp tr×nh.
ë ®Çu môc nµy ®· nãi mét tª n thùc chÊt l µ ký hi Öu quy ­í c cña mét ®Þa chØtrong bé nhí cña m¸ y tÝnh ®Ól ­u gi ¸ trÞ. LÖnh khai b¸ o bi Õn mí i chØ®Æt tª n cho mét ®Þa
chØtrong bé nhí vµ quy ®Þnh trong ®Þa chØ®ã cã thÓl ­u gi ÷ d÷ l i Öu ki Óu g×. Cßn cô thÓtrong « nhí ®ã ®· cã chøa gi ¸ trÞch­a hay chøa gi ¸ trÞb»ng bao nhi ª u th×tï y
thuéc vµo c¸ c l Önh thùc hi Ön ë trong ch­¬ng tr×nh, t¹ i tõng ®o¹ n cña ch­¬ng tr×nh. § i Òu nµy gi èng nh­ ta quy ­í c ®Þnh ra mét ng¨ n trong tñ v¨ n phßng ®Óchuyª n gi ÷ c¸ c
c«ng v¨ n, cßn trong ng¨ n Êy cã c«ng v¨ n hay kh«ng, hoÆc cã mÊy c«ng v¨ n th×tï y thuéc l óc nµy hay l óc kh¸ c. D­í i ®©y nª u mét thÝdô ®Ómi nh häa ý nghÜa cña vi Öc ®Æt
tª n bi Õn vµ m« t¶ ki Óu (d÷ l i Öu) cña bi Õn, ®ång thêi theo dâi gi ¸ trÞcña bi Õn t¹ i tõng thêi ®i Óm cña ch­¬ng tr×nh. Gi ¶ sö ta vi Õt mét ch­¬ng tr×nh ®ÓtÝnh di Ön tÝch s cña
h×nh tam gi ¸ c khi gi ¸ trÞ®é dµi ®¸ y b b»ng 5,0 cm, chi Òu cao h b»ng 3,2 cm, i n kÕt qu¶ tÝnh l ª n mµn h×nh. Ch­¬ng tr×nh sau ®©y sÏ thùc hi Ön nh÷ng vi Öc ®ã:
REAL DAY, CAO ! (1)
DAY = 5.0 ! (2)
CA O = 3.2 ! (3)
DAY = 0.5 * DAY * CAO ! (4)
PRI NT * , ‘ DI EN TI CH TAM GI A C BANG’ , DAY ! (5)
END ! (6)
Trong ch­¬ng tr×nh nµy cã s¸ u l Önh. L Önh (1) khai b¸ o hai bi Õn tª n l µ DAY vµ CAO dù ®Þnh ®Ól ­u gi ¸ trÞsè thùc t­¬ng øng cña ®¸ y b vµ chi Òu cao h cña tam
gi ¸ c. LÖnh (2) g¸ n gi ¸ trÞ 0 , 5 · b (cm) cho bi Õn DAY. LÖnh (3) g¸ n gi ¸ trÞ 5 , 3 · h (cm) cho bi Õn CAO. LÖnh (4) tÝnh gi ¸ trÞcña bi Óu thøc h b × × 5 , 0 , tøc di Ön tÝch s cña
tam gi ¸ c, b»ng 8 (cm
2
) vµ g¸ n cho bi Õn DAY. LÖnh (5) i n l ª n mµn h×nh dßng ch÷ DI EN TI CH TAM GI A C BANG vµ sau ®ã l µ gi ¸ trÞcña bi Õn DAY. LÖnh (6) l µ l Önh kÕt
31 32
thóc ch­¬ng tr×nh. Si nh vi ª n mí i häc l Ëp tr×nh th­êng cã thÓkh«ng hi Óu l Önh thø n¨ m, khi thÊy i n di Ön tÝch h×nh tam gi ¸ c mµ l ¹ i i n gi ¸ trÞcña bi Õn DAY. Trong ®Çu hä
quen nghÜkhai b¸ o DAY cã nghÜa DA Y l µ ®é dµi c¹ nh ®¸ y tam gi ¸ c. Nh­ng nÕu hi Óu ®­î c r»ng l Önh (1) khai b¸ o REAL DAY, CAO thùc ra mí i chØdù ®Þnh dï ng hai
tª n DAY vµ CAO ®Ól ­u c¸ c sè thùc, kh«ng cÇn bi Õt sè thùc ®ã b»ng bao nhi ª u. ë ch­¬ng tr×nh trª n, khi l Önh (2) thùc hi Ön xong th×trong bi Õn DAY (trong « nhí cã tª n l µ
DAY) mí i thùc sù cã sè 5,0, tøc ®é dµi ®¸ y tam gi ¸ c. Nh­ng khi ch­¬ng tr×nh ch¹ y xong l Önh (4) th×trong bi Õn DAY ®· l µ sè 8,0 chø kh«ng ph¶i l µ sè 5,0 n÷a. Vµ khi
thùc hi Ön xong l Önh (5) th×trª n mµn h×nh sÏ i n ®óng gi ¸ trÞdi Ön tÝch tam gi ¸ c. N¾m v÷ng ®­î c ®i Òu nµy cã nghÜa l µ ®· hi Óu ®­î c ý nghÜa cña bi Õn, tª n bi Õn vµ tuÇn tù l µm
vi Öc cña ch­¬ng tr×nh, tøc c¸ c gi ¸ trÞ®­î c l ­u trong m¸ y tÝnh nh­ thÕnµo trong khi ch­¬ng tr×nh ch¹ y.
D­í i ®©y l µ hai l êi khuyª n ®Çu ti ª n cã l Ï quan träng nhÊt ®èi ví i si nh vi ª n mí i häc l Ëp tr×nh:
1) Sau khi t×m hi Óu xong bµi to¸ n cÇn gi ¶i , ph¶i c©n nh¾c tõng ®¹ i l ­î ng trong bµi to¸ n cã ki Óu d÷ l i Öu l µ sè nguyª n, sè thùc, ký tù v¨ n b¶n... ®Ó®Æt tª n vµ khai b¸ o
ki Óu cho ®óng. Ki nh nghi Öm cho thÊy r»ng si nh vi ª n nµo vi Õt ®­î c nh÷ng l Önh khai b¸ o hÖthèng c¸ c tª n bi Õn ®óng, võa ®ñ, s¸ ng sña trong phÇn khai b¸ o ë ®Çu ch­¬ng
tr×nh th×th­êng l µ sau ®ã vi Õt ®­î c ch­¬ng tr×nh ®óng. Cßn nh÷ng si nh vi ª n kh«ng bi Õt ®Æt tª n cho c¸ c bi Õn, võa b¾t tay vµo so¹ n th¶o ch­¬ng tr×nh ®· l oay hoay ví i l Önh
më f i l e d÷ l i Öu, tÝnh c¸ i nµy c¸ i ki a, th×th­êng l µ kh«ng hi Óu g×vµ kh«ng bao gi ê l µm ®­î c bµi tËp.
2) Nª n tu©n thñ c¸ ch ®Æt tª n cña Fortran chuÈn. Ta cã quyÒn chän nh÷ng ch÷ c¸ i , ch÷ sè nµo ®Ót¹ o thµnh tª n l µ tï y ý, song nª n ®Æt tª n cã tÝnh gî i nhí ®Õn nh÷ng
®¹ i l ­î ng t­¬ng øng trong bµi tËp. ThÝdô, ví i bµi to¸ n võa nãi tí i trong môc nµy ta cã ba ®¹ i l ­î ng l µ: ®é dµi c¹ nh ®¸ y, ®­êng cao vµ di Ön tÝch tam gi ¸ c. Nª n khai b¸ o tª n
ba bi Õn t­¬ng øng b»ng ba tõ t¾t cña ti Õng Vi Öt ví i l Önh sau:
REAL DAY, CAO, DTI CH
hoÆc b»ng ba tõ t¾t cña ti Õng Anh ví i l Önh:
REAL BASE, HEI GHT, SQRE
hoÆc b»ng ba ch÷ c¸ i ®óng nh­ trong ®Çu ®Òbµi tËp ví i l Önh:
REAL B, H, S
®Òu l µ nh÷ng l êi khai b¸ o ®óng, dÔhi Óu, trong ®ã l êi khai b¸ o trª n cï ng cã l Ï l µ tèt nhÊt, l êi khai b¸ o sau cï ng th×h¬i qu¸ ng¾n gän. Cßn ví i cï ng môc ®Ých khai b¸ o mµ
dï ng l Önh sau ®©y th×mÆc dï kh«ng sai , nh­ng hoµn toµn kh«ng nª n, rÊt dÔg©y nhÇm l Én, mÖt mái trong khi ki Óm tra ch­¬ng tr×nh:
REAL X, I C, DT
2.3. Bi Õn cã chØsè (m¶ng)
2.3.1. K h¸ i ni Öm m¶ng
M¶ng l µ tËp hî p cã s¾p xÕp cña c¸ c ®¹ i l ­î ng ®­î c ký hi Öu b»ng mét tª n duy nhÊt. C¸ c thµnh phÇn cña tËp hî p gäi l µ nh÷ng phÇn tö m¶ng. Mçi phÇn tö ®­î c x¸ c
®Þnh theo tª n cña m¶ng vµ vÞtrÝcña phÇn tö ®ã trong m¶ng, tøc trÞsè cña c¸ c chØsè. Tª n m¶ng ®­î c ®Æt tu©n theo quy t¾c nh­ tª n bi Õn. C¸ c chØsè n»m trong dÊu ngoÆc
33 34
®¬n vµ nÕu cã h¬n mét chØsè th×c¸ c chØsè ph¶i c¸ ch nhau bëi dÊu ph¶y.
ThÝdô: A(1), A(2), A(3) t­¬ng øng ví i c¸ ch vi Õt th«ng th­êng cho c¸ c bi Õn
3 2 1
, , a a a trong to¸ n häc. VËy ë ®©y ta ®· ®Æt cho tËp hî p c¶ 3 gi ¸ trÞnµy mét tª n chung
l µ A, nh­ng ®ÓchØgi ¸ trÞthø nhÊt ta thª m chØsè 1 vµo tª n - A(1), ®ÓchØgi ¸ trÞthø hai ta thª m chØsè 2 - A(2) vµ ®ÓchØgi ¸ trÞthø ba ta thª m chØsè 3 - A(3).
T­¬ng tù, c¸ c phÇn tö cña ma trËn hai chi Òu trong ®¹ i sè

,
`

.
|
23 22 21
13 12 11
a a a
a a a

®­î c vi Õt trong Fortran l µ A(1,1), A(1,2), A(1,3), A(2,1), A(2,2), A(2,3) (chØsè thø nhÊt - sè hi Öu dßng, chØsè thø hai - sè hi Öu cét).
Thª m mét thÝdô n÷a vÒm¶ng. Mét n¨ m cã 12 th¸ ng, mçi th¸ ng cã mét tª n, thÝdô trong ti Õng Vi Öt: Th¸ ng Gi ª ng, Th¸ ng Hai , ..., Th¸ ng M­êi hai , trong ti Õng A nh:
January, February, ..., December. Ta hoµn toµn cã thÓgép 12 tª n ti Õng A nh cña c¸ c th¸ ng trong n¨ m vµo thµnh mét m¶ng cã tª n chung l µ EMONTH. V Ëy m¶ng
EMONTH sÏ l µ m¶ng cã 12 gi ¸ trÞ(12 phÇn tö), mçi phÇn tö l µ mét tõ chØtª n mét th¸ ng. Khi nãi ®Õn January tøc l µ nãi tí i gi ¸ trÞthø nhÊt cña m¶ng EMONTH, ta vi Õt
EMONTH(1), nãi ®Õn December l µ nãi tí i gi ¸ trÞthø 12 cña m¶ng EMONTH, ta vi Õt EMONTH(12).
Trong Fortran I V , mét phi ª n b¶n tr­í c ®©y cña ng«n ngò Fortran, cho phÐp dï ng c¸ c m¶ng tèi ®a 7 chØsè. Chi Òu cña m¶ng øng ví i sè chØsè, cßn kÝch th­í c cña
m¶ng øng ví i sè phÇn tö chøa trong m¶ng.
ChØsè cña m¶ng cã thÓ®­î c x¸ c ®Þnh b»ng c¸ c h»ng hoÆc bi Õn nguyª n d­¬ng ví i trÞsè l í n h¬n 0. Còng cã thÓchØsè x¸ c ®Þnh b»ng bi Óu thøc sè häc bÊt kú. NÕu
dï ng bi Óu thøc ki Óu thùc, th×sau khi tÝnh gi ¸ trÞcña bi Óu thøc, gi ¸ trÞsè thùc ®­î c chuyÓn thµnh sè nguyª n, tøc c¾t bá phÇn thËp ph©n.
Trong môc 2.1 chóng ta ®· nãi vÒc¸ c ki Óu d÷ l i Öu c¬ b¶n. Mçi mét bi Õn ki Óu d÷ l i Öu c¬ b¶n trong mét thêi ®i Óm ch¹ y ch­¬ng tr×nh chØl ­u (chøa) ®­î c mét gi ¸ trÞ.
B©y gi ê ta thÊy m¶ng l µ mét thÝdô vÒki Óu d÷ l i Öu mí i cÊu t¹ o tõ c¸ c ki Óu c¬ b¶n - mét bi Õn m¶ng trong mét thêi ®i Óm cã thÓl ­u ®­î c nhi Òu gi ¸ trÞsè nguyª n, sè thùc,
chuçi ký tù... Nh­ng cÇn l ­u ý r»ng tÊt c¶ c¸ c phÇn tö cña m¶ng, tøc tÊt c¶ c¸ c gi ¸ trÞcña m¶ng ph¶i cã cï ng ki Óu d÷ l i Öu. ThÝdô ví i m¶ng EMONTH võa xÐt, ta kh«ng
thÓ®­a mét gi ¸ trÞký tù January vµo phÇn tö EMONTH(1) vµ sè thùc 1.27 vµo EMONTH(2).
M¶ng l µ mét yÕu tè rÊt quan träng trong Fortran. Sau nµy ta sÏ thÊy sö dông m¶ng trong ng«n ng÷ l Ëp tr×nh cã thÓgi óp vi Õt nh÷ng ®o¹ n ch­¬ng tr×nh rÊt ng¾n gän,
trong s¸ ng. § Æc bi Öt trong c¸ c vßng l Æp, chØb»ng vµi dßng l Önh cã thÓkhi Õn m¸ y tÝnh thùc hi Ön nhi Òu tri Öu phÐp tÝnh sè häc.
2.3.2. M « t¶ m¶ng
M« t¶ m¶ng thùc hi Ön ngay ë ®Çu ch­¬ng tr×nh vµ chøa th«ng ti n vÒtª n, chi Òu vµ kÝch th­í c m¶ng ví i to¸ n tö DI MENSI ON:
DI M ENSI ON ) ..., , , ( MAT ), ..., , , ( A
2 1 2 1 k
m m m n n n
l

trong ®ã - MAT A, tª n c¸ c m¶ng; −
k
m m m n n n ,..., , , ,..., ,
2 1 2 1 l
c¸ c gi í i h¹ n trª n cña c¸ c chØsè − chØra b»ng c¸ c h»ng nguyª n d­¬ng (gi í i h¹ n d­í i l u«n b»ng 1 vµ
kh«ng cÇn chØ®Þnh trong m« t¶).
35 36
Theo m« t¶ nµy, m¸ y tÝnh sÏ gi µnh trong bé nhí nh÷ng vï ng ®Þa chØ®Ól ­u tÊt c¶ c¸ c phÇn tö cña c¸ c m¶ng. C¸ c phÇn tö cña m¶ng nhi Òu chi Òu ®­î c l ­u l i ª n ti Õp
nhau sao cho chØsè thø nhÊt bi Õn ®æi nhanh nhÊt, chØsè sau cï ng bi Õn ®æi chËm nhÊt.
Cã thÓm« t¶ m¶ng b»ng c¸ c l Önh m« t¶ ki Óu hi Ön nh­ ®èi ví i c¸ c bi Õn th«ng th­êng, thÝdô:
REAL MAX, L (7), A(20,21)
Trong l Önh m« t¶ nµy bi Õn MAX ®­î c khai b¸ o l µ bi Õn sè thùc, cã thÓgäi l µ bi Õn ®¬n, cßn m¶ng L (bi Õn cã chØsè) l µ m¶ng mét chi Òu ví i 7 phÇn tö sè thùc, m¶ng A
l µ m¶ng hai chi Òu (hai chØsè) ví i gi í i h¹ n trª n cña chØsè thø nhÊt l µ 20, cña chØsè thø hai l µ 21, nã gåm 420 phÇn tö.
V×c¸ c gi í i h¹ n chØsè (kÝch th­í c m¶ng) ph¶i ®­î c chØ®Þnh tr­í c ë phÇn khai b¸ o b»ng c¸ c h»ng nguyª n d­¬ng, kh«ng thÓl µ c¸ c bi Õn, nª n trong thùc ti Ôn l Ëp tr×nh
ph¶i chó ý c©n nh¾c chän c¸ c gi í i h¹ n chØsè sao cho chóng kh«ng qu¸ l í n l µm tèn bé nhí , nh­ng còng ph¶i võa ®ñ ®Óbi Óu di Ôn hÕt c¸ c phÇn tö cã thÓcã cña m¶ng. ThÝ
dô cÇn bi Óu di Ôn mét b¶ng sè c¸ c gi ¸ trÞnhi Öt ®é trung b×nh tõng th¸ ng trong 100 n¨ m th×ta khai b¸ o m¶ng TEM(100,12) l µ hî p l ý. NÕu dù ®Þnh gi ¶i hÖph­¬ng tr×nh ®¹ i
sè tuyÕn tÝnh kh«ng qu¸ 20 ph­¬ng tr×nh, ta nª n khai b¸ o c¸ c m¶ng REAL A(20,21), X(20) l µ võa ®ñ ®Óbi Óu di Ôn ma trËn c¸ c hÖsè
j i
a
,
(kÓc¶ c¸ c hÖsè tù do) vµ
c¸ c nghi Öm
i
x . Ví i m¶ng EMONTH võa nh¾c trong môc nµy th×l Önh khai b¸ o sau:
CHARACTER* 9 EMONTH(12)
l µ hoµn toµn hî p l ý v×mét n¨ m chØcã 12 th¸ ng vµ tª n th¸ ng dµi nhÊt (ví i ti Õng Anh) l µ September gåm 9 ch÷ c¸ i .
2.4. C¸ c hµm chuÈn
Mét sè phÐp tÝnh nh­ l Êy c¨ n bËc hai cña mét sè, tÝnh trÞtuyÖt ®èi cña mét sè, tÝnh hµm si n cña mét gãc... th­êng xuyª n gÆp trong nhi Òu thuËt to¸ n, nª n ®­î c x©y
dùng s½n thµnh c¸ c hµm gäi l µ c¸ c hµm ri ª ng cã cña Fortran (i ntri nsi c f uncti ons) hay cßn gäi l µ c¸ c hµm chuÈn.
B¶ng 2.1 l i Öt kª mét sè hµm chuÈn cña Fortran th­êng dï ng trong s¸ ch nµy.
Mçi hµm chuÈn cã mét tª n cña nã. Tª n cña hµm ®­î c ti Õp nèi ví i ®Çu vµo, gäi l µ ®èi sè cña hµm, n»m trong cÆp dÊu ngoÆc ®¬n. § èi sè cña c¸ c hµm chuÈn cã thÓl µ
c¸ c h»ng, bi Õn, hay bi Óu thøc. NÕu mét hµm cã nhi Òu ®èi sè th×c¸ c ®èi sè ®­î c vi Õt c¸ ch nhau b»ng dÊu ph¶y. Khi cho c¸ c gi ¸ trÞcô thÓvµo c¸ c ®èi sè th×hµm tÝnh ra
mét gi ¸ trÞcña hµm. V×vËy c¸ c hµm th­êng dï ng ®ÓtÝnh mét gi ¸ trÞnµo ®ã ®Óg¸ n vµo mét bi Õn kh¸ c, ng­êi ta gäi l µ gäi hµm ra ®ÓtÝnh. Hµm kh«ng bao gi ê cã mÆt ë
bª n tr¸ i dÊu ‘ = ’ cña l Önh g¸ n.
B¶ng 2.1. Mét sè hµm chuÈn cña Fortran
Tª n hµm vµ
®èi sè
Gi ¸ trÞhµm
SQRT (X) x C¨ n bËc hai cña x
37 38
A BS (X ) x TrÞtuyÖt ®èi cña x
SI N (X)
) sin(x x tÝnh b»ng ra®i an
COS (X)
) cos(x x tÝnh b»ng ra®i an
TA N (X) ) ( tg x x tÝnh b»ng ra®i an
EXP (X )
x
e e n©ng l ª n l uü thõa x
L OG (X)
) ln(x Logari t tù nhi ª n cña x
L OG10 (X ) ) lg( x Logari t c¬ sè 10 cña x
I NT (X) ChuyÓn phÇn nguyª n cña sè thùc x thµnh sè nguyª n
REA L (I ) Gi ¸ trÞthùc cña I (chuyÓn mét gi ¸ trÞnguyª n thµnh gi ¸ trÞthùc)
MOD (I ,J) LÊy phÇn d­ nguyª n cña phÐp chi a hai sè J I /
ThÝdô, nh÷ng l Önh sau ®©y gäi c¸ c hµm ®ÓtÝnh mét sè gi ¸ trÞ:
S = SI N (0.5)
TG = TAN (S)
C = COS (ANGLE * 3.141593 / 180.0)
Trong l Önh thø nhÊt ta göi gi ¸ trÞh»ng 0,5 (ra®i an) cho ®èi sè cña hµm SI N ®Ónã tÝnh ra gi ¸ trÞsi n cña gãc 0,5 vµ g¸ n gi ¸ trÞ®ã cho bi Õn S. Trong l Önh thø hai , ta ®·
göi gi ¸ trÞcña bi Õn S vµo ®èi sè cña hµm TAN ®ÓtÝnh ra tang. Cßn trong l Önh thø ba, ta ®· göi mét bi Óu thøc vµo ®èi sè cña hµm COS ®Ónã tÝnh ra gi ¸ trÞc«si n cña mét
gãc cã ®é l í n b»ng gi ¸ trÞcña bi Óu thøc ®ã. Trong tr­êng hî p nµy, m¸ y tÝnh tr­í c hÕt ph¶i tÝnh (­í c l ­î ng) gi ¸ trÞcña bi Óu thøc ®èi sè, sau ®ã mí i tÝnh c«si n theo gi ¸ trÞ
nhËn ®­î c.
ThÊy r»ng mét hµm bi Óu di Ôn mét gi ¸ trÞ. Gi ¸ trÞnµy cã thÓ®­î c dï ng trong c¸ c tÝnh to¸ n kh¸ c hoÆc l ­u ë ®Þa chØnhí kh¸ c. Mét hµm chuÈn còng cã thÓl µm ®èi sè
cña mét hµm chuÈn kh¸ c:
XL G = LOG(ABS(X))
Trong Fortran cã mét sè hµm chuÈn cho ra gi ¸ trÞví i ki Óu cï ng ki Óu ví i ®èi sè cña m×nh, chóng ®­î c gäi l µ c¸ c hµm tù si nh (generi c f uncti on). ThÝdô hµm ABS(X),
nÕu ®èi sè X l µ sè nguyª n th×gi ¸ trÞhµm ABS(X) còng l µ sè nguyª n, nÕu X l µ sè thùc - A BS(X) còng l µ sè thùc. Mét sè hµm chØ®Þnh ki Óu cña ®Çu vµo vµ ®Çu ra. ThÝdô
hµm I ABS l µ hµm ®ßi hái ®èi sè nguyª n vµ cho ra gi ¸ trÞtuyÖt ®èi l µ sè nguyª n. Danh s¸ ch ®Çy ®ñ h¬n vÒc¸ c hµm chuÈn cña Fortran ®­î c dÉn trong phô l ôc 1.
Khi dï ng mét hµm chuÈn nµo ®ã ph¶i ®äc kü l êi m« t¶ xem nã tÝnh ra gi ¸ trÞg×, ®i Òu ki Ön cña c¸ c ®èi sè ra sao. ThÝdô c¸ c hµm l ­î ng gi ¸ c ph¶i dï ng ®èi sè l µ
ra®i an, nÕu ta cho gi ¸ trÞ®èi sè l µ ®é th×kÕt qu¶ tÝnh sÏ sai .
39 40
2.5. L Önh g¸ n vµ c¸ c t o¸ n t ö sè häc
2.5.1. L Önh g¸ n
C¸ c tÝnh to¸ n trong Fortran cã thÓchØ®Þnh b»ng l Önh g¸ n ví i d¹ ng tæng qu¸ t nh­ sau:
Tª n bi Õn = Bi Óu t høc
Bª n tr¸ i dÊu l Önh g¸ n (dÊu =) l µ tª n mét bi Õn. Bi Óu thøc bª n ph¶i cã thÓl µ mét h»ng, mét bi Õn, mét bi Óu thøc sè häc gåm c¸ c to¸ n tö sè häc (b¶ng 2.2) thùc hi Ön
gi ÷a c¸ c to¸ n h¹ ng l µ c¸ c h»ng, bi Õn vµ hµm chuÈn hay mét bi Óu thøc l «gi c. Khi thùc hi Ön l Önh g¸ n, tr­í c hÕt m¸ y ­í c l ­î ng (tÝnh) gi ¸ trÞcña bi Óu thøc bª n ph¶i , råi g¸ n
gi ¸ trÞ®ã cho bi Õn bª n tr¸ i , tøc l ­u gi ¸ trÞtÝnh ®­î c cña bi Óu thøc bª n ph¶i vµo ®Þa chØnhí cã tª n bi Õn bª n tr¸ i . K i Óu d÷ l i Öu cña bi Õn vµ cña bi Óu thøc ph¶i phï hî p.
ThÝdô c¸ c l Önh g¸ n:
PI = 3.141593
S = PI * BKI NH * * 2
I = I +1
LÖnh thø nhÊt g¸ n h»ng sè 3,141593 cho bi Õn cã tª n l µ PI . L Önh thø hai g¸ n gi ¸ trÞcña bi Óu thøc
2
) BKINH ( PI × cho bi Õn cã tª n l µ S. L Önh thø ba l Êy gi ¸ trÞhi Ön t¹ i cña
bi Õn I céng thª m mét ®¬n vÞvµ l ¹ i g¸ n cho chÝnh bi Õn I .
ë trª n ®· nãi , ki Óu d÷ l i Öu cña bi Õn vµ cña bi Óu thøc ph¶i phï hî p. Tr­êng hî p bi Õn bª n tr¸ i l µ bi Õn thùc, cßn bi Óu thøc bª n ph¶i l µ gi ¸ trÞnguyª n th×m¸ y tÝnh sÏ
chuyÓn gi ¸ trÞnguyª n ®ã thµnh gi ¸ trÞthùc (sè thùc ví i phÇn thËp ph©n b»ng kh«ng) råi mí i g¸ n cho bi Õn. Khi bi Õn bª n tr¸ i l µ bi Õn nguyª n, bi Óu thøc bª n ph¶i cã gi ¸ trÞ
thùc, th×m¸ y tÝnh c¾t bá phÇn thËp ph©n cña gi ¸ trÞthùc, ®æi sè thùc nhËn ®­î c thµnh sè nguyª n råi mí i g¸ n nã cho bi Õn nguyª n. C¸ c tr­êng hî p g¸ n sai kh¸ c ch­¬ng
tr×nh dÞch sÏ b¸ o l çi .
Kh«ng nª n quan ni Öm l Önh g¸ n nh­ dÊu b»ng trong to¸ n häc.
2.5.2. C¸ c phÐp tÝnh sè häc ®¬n gi ¶n
C¸ c phÐp tÝnh sè häc hay cßn gäi l µ c¸ c to¸ n tö sè häc gåm cã c¸ c phÐp tÝnh céng, trõ, nh©n, chi a vµ n©ng l ª n l uü thõa ®­î c ký hi Öu b»ng c¸ c to¸ n tö trong Fortran
nh­ trong b¶ng 2.2.
Gäi l µ nh÷ng phÐp tÝnh sè häc bëi v×c¸ c to¸ n h¹ ng cña c¸ c phÐp tÝnh l µ nh÷ng gi ¸ trÞsè, thÝdô sè nguyª n, sè thùc, sè phøc. Sau nµy chóng ta sÏ thÊy m¸ y tÝnh cã thÓ
tÝnh to¸ n ví i nh÷ng gi ¸ trÞki Óu kh¸ c nh­ gi ¸ trÞl «gi c, gi ¸ trÞv¨ n b¶n...
B¶ng 2.2. C¸ c phÐp tÝnh sè häc
41 42
PhÐp tÝnh D¹ ng ®¹ i sè Trong Fortran
Céng B A + A + B
Trõ B A − A − B
Nh©n B A × A * B
Chi a
B
A
A / B
Luü thõa
3
A
A* * 3
2.5.3. ¦ í c l ­î ng bi Óu thøc sè häc
Khi tÝnh gi ¸ trÞcña bi Óu thøc sè häc, nÕu bi Óu thøc ®ã gåm nhi Òu phÐp tÝnh ®¬n, th×m¸ y sÏ tÝnh to¸ n tõng phÐp tÝnh ®¬n ®ÓnhËn c¸ c kÕt qu¶ trung gi an, sau ®ã tÝnh
gi ¸ trÞcuèi cï ng cña bi Óu thøc gäi l µ ­í c l ­î ng. Møc ­u ti ª n khi ­í c l ­î ng gi ¸ trÞcña mét bi Óu thøc sè häc gåm nhi Òu phÐp tÝnh ®¬n nª u trong b¶ng 2.3.
NÕu dÊu ©m ®øng tr­í c tª n bi Õn ®Çu ti ª n trong bi Óu thøc, th×nã ®­î c tÝnh ví i cï ng møc ­u ti ª n nh­ phÐp trõ. ThÝdô: −A* * 2 b»ng −(A* * 2), −A * B b»ng −(A* B) vµ
−A+B b»ng (−A)+B.
B¶ng 2.3. Møc ­u ti ª n c¸ c phÐp tÝnh sè häc
¦ u ti ª n PhÐp tÝnh
1 DÊu ngoÆc
2 N©ng l ª n l uü thõa
3 Nh©n vµ chi a
4 Céng vµ trõ
Khi c¸ c phÐp tÝnh ë cï ng møc ­u ti ª n th×tÊt c¶ c¸ c phÐp tÝnh ®­î c thùc hi Ön tõ tr¸ i sang ph¶i , thÝdô:
B − C + D ®­î c ­í c l ­î ng b»ng (B − C) + D
Ri ª ng phÐp n©ng l ª n l uü thõa th×thùc hi Ön tõ ph¶i sang tr¸ i :
A * * B * * C ®­î c ­í c l ­î ng b»ng A * * (B * * C)
ThÝdô: 2 * * 3 * * 2 b»ng
9
2 hay 512 chø kh«ng ph¶i l µ
64 8 2 * * ) 3 * * 2 (
2
· · .
43 44
2.5.4. K h¸ i ni Öm vÒc¾t vµ c¸ c phÐp tÝnh hçn hî p
Khi mét phÐp tÝnh sè häc thùc hi Ön ví i hai sè thùc th×®­a ra kÕt qu¶ l µ gi ¸ trÞthùc. ThÝdô, khi tÝnh chu vi h×nh trßn ví i ®­êng kÝnh DK I NH l µ sè thùc, ta cã thÓ
dï ng mét trong hai l Önh sau:
CHUVI = PI * DKI NH
CHUVI = 3.141593 * DKI NH
PhÐp tÝnh sè häc gi ÷a hai sè nguyª n cho ra kÕt qu¶ l µ sè nguyª n. ThÝdô, cho hai sè nguyª n I vµ J, trong ®ã I nhá h¬n hoÆc b»ng J, tÝnh sè sè nguyª n I NTERV n»m
trong kho¶ng [ I , J] cã thÓthùc hi Ön b»ng l Önh:
I NTERV = J − I + 1
Gi ¶ sö SI DE bi Óu di Ôn gi ¸ trÞthùc vµ LENGTH bi Óu di Ôn gi ¸ trÞnguyª n. B©y gi ê xÐt l Önh:
L ENGTH = SI DE * 3.5
PhÐp tÝnh nh©n gi ÷a hai gi ¸ trÞthùc sÏ cho kÕt qu¶ sè thùc. Tuy nhi ª n, gi ¸ trÞthùc ®­î c l ­u vµo bi Õn nguyª n. Khi ®ã m¸ y tÝnh sÏ bá qua phÇn thËp ph©n vµ chØl ­u
phÇn nguyª n cña sè thùc; ki Óu l µm trßn nµy gäi l µ c¾t, nã kh¸ c ví i l µm trßn th«ng th­êng cho kÕt qu¶ l µ sè nguyª n gÇn nhÊt ví i gi ¸ trÞcña sè thùc.
Khi c¸ c phÐp tÝnh sè häc thùc hi Ön gi ÷a c¸ c bi Õn cã ki Óu kh¸ c nhau (hçn hî p) th­êng cho kÕt qu¶ rÊt bÊt ngê. Ta xÐt thÝdô tÝnh thÓtÝch V cña h×nh cÇu b¸ n kÝnh
thùc R. NÕu dï ng l Önh:
V = (4/3)* 3.141593* R* * 3
ta sÏ thu ®­î c kÕt qu¶ sai do nguyª n nh©n phÐp chi a hai sè nguyª n 4/3 cho gi ¸ trÞtrung gi an b»ng 1, kh«ng ph¶i 1,333333. Do ®ã, l Önh ®óng ®ÓtÝnh V sÏ l µ:
V = (4./3.)* 3.141593* R* * 3
V×c¸ c phÐp tÝnh hçn hî p ®«i khi cho kÕt qu¶ bÊt ngê, ta nª n cè g¾ng tr¸ nh dï ng nh÷ng bi Óu thøc sè häc cã phÐp tÝnh hçn hî p.
2.5.5. K h¸ i ni Öm vÒsè qu¸ bÐvµ sè qu¸ l í n (underf l ow vµ over f l ow)
V×c¸ c gi ¸ trÞl í n nhÊt vµ bÐnhÊt cã thÓl ­u trong mét bi Õn tuú thuéc vµo chÝnh hÖm¸ y tÝnh, mét phÐp tÝnh cã thÓ®­a ra kÕt qu¶ qu¸ l í n hoÆc qu¸ bÐ. XÐt c¸ c thÝdô
sau:
1) X = 0.25E20 2) A = 0.25E−20
Y = 0.10E30 B = 0.10E+20
Z = X * Y C = A / B
KÕt qu¶ sè cña phÐp nh©n trong thÝdô 1 b»ng 0.25E49, râ rµng l µ cã thÓqu¸ l í n, kh«ng l ­u gi ÷ ®­î c trong m¸ y tÝnh ví i bËc cùc ®¹ i l µ 38, cßn kÕt qu¶ sè cña phÐp
chi a trong thÝdô 2 b»ng 0.25E−49 sÏ qu¸ bÐ. Trong nh÷ng tr­êng hî p nµy c¸ c l Önh Fortran hoµn toµn ®óng, nh­ng l çi sÏ ph¸ t si nh khi ch¹ y ch­¬ng tr×nh. C¸ c l çi do bËc
45 46
qu¸ l í n hoÆc qu¸ bÐth­êng bÞg©y bëi nh÷ng l çi ë nh÷ng ®o¹ n tr­í c cña ch­¬ng tr×nh, thÝdô mét bi Õn ch­a ®­î c g¸ n gi ¸ trÞ®óng l ¹ i cã mÆt trong bi Óu thøc sè häc.
Bµi t Ëp
1. H· y bi Óu di Ôn thµnh d¹ ng F vµ d¹ ng E nh÷ng sè thùc sau:
a) 3,14 b) 3,141593 c) 0,0026 d)
3
10 5 , 2 ×
e) −14,0 f ) 28,34 g)
23
10 023 , 6 ×
2. X¸ c ®Þnh nh÷ng tª n sai trong nh÷ng tª n sau ®©y:
a) AVERG b) PTBACHAI c) REAL
d) 2L OG ®) GPTB2 e) HS-A1
f ) X1 g) THA NG* 1 h) MONTH2
3. Vi Õt thµnh d¹ ng Fortran nh÷ng bi Óu thøc tÝnh sau ®©y:
a) ThÓtÝch V cña h×nh cÇu theo c«ng thøc
3

3
4
R V π · ( − R b¸ n kÝnh).
b) Hai nghi Öm
1
x vµ
2
x cña ph­¬ng tr×nh bËc hai
a
ac b b
x
2
4
2
2 , 1
− t −
· ( − c b, a , c¸ c hÖsè cña ph­¬ng tr×nh)
c) Gi ¸ trÞhµm
) 2 cos( sin
2
1
2
1
2
− · x x y (khi x cho b»ng ®é).
d) Gi ¸ trÞhµm mËt ®é ph©n bè Gauss
2

2

2
1
) (
x
e x F

·
π

e) Thª m mét ®¬n vÞvµo bi Õn nguyª n I vµ l ­u vµo bi Õn I
f ) Kho¶ng c¸ ch DI ST gi ÷a hai ®i Óm A vµ B nÕu bi Õt c¸ c to¹ ®é t­¬ng øng cña hai ®i Óm ®ã l µ ) , ( ), , (
b b a a
y x y x .
47 48
4. ¦ í c l ­î ng gi ¸ trÞcña c¸ c bi Óu thøc Fortran sau ®©y:
4/3* 3.141593* (3/2)* * 3
SQRT (I +I /2) (nÕu I = 1)
SI N ((30/180)* PI ) (nÕu PI = 3.141593)
COS (60/180* 3.141593)
5. H· y ®äc chÝnh x¸ c b»ng ng«n ng÷ Fortran nh÷ng l Önh vi Õt d­í i ®©y:
a) I = I + K +1
b) SS = 0.5 * SI N (A* 3.1416 / 180.)
c) ERR = A BS (X1 - X2)
6. Hai ®o¹ n ch­¬ng tr×nh sau nh»m tÝnh trÞsè trung b×nh A cña ba sè nguyª n 3 , 2 , 1
3 2 1
· · · i i i vµ i n kÕt qu¶ l ª n mµn h×nh. H· y thö xem kÕt qu¶ cã ®óng kh«ng.
NÕu thÊy sai th×chØra t¹ i sao vµ kh¾c phôc b»ng c¸ ch nµo?
a) I 1 = 1
I 2 = 2
I 3 = 3
PRI NT 4 , (I 1 + I 2 + I 3)/3
4 FORMAT (1X, ' A = ',F4.1)
b) I 1 = 1
I 2 = 2
I 3 = 3
PRI NT 2, 1/3* (I 1+I 2+I 3)
2 FORMAT (3X, F4.1)
7. Gi ¶ sö c¸ c cung ®Þa l ý (t¸ m cung) ®­î c ®¸ nh sè hi Öu theo qui ­í c nh­ sau: 1 - b¾c; 2 - ®«ng b¾c; 3 - ®«ng; 4 - ®«ng nam; 5 - nam; 6 - t©y nam; 7 - t©y; 8 - t©y b¾c.
H­í ng gi ã quan tr¾c ®­î c b»ng 165
o
. H· y vi Õt bi Óu thøc Fortran ®ÓtÝnh sè hi Öu cung cña h­í ng gi ã ®ã.


49 50
Ch­¬ng 3
NhËp vµ xuÊt d÷ l i Öu ®¬n gi ¶n
3.1. C¸ c l Önh x uÊt vµ nhËp d÷ l i Öu
M¸ y tÝnh cã thÓnhËp d÷ l i Öu tõ c¸ c nguån, c¸ c thi Õt bÞkh¸ c nhau. T­¬ng tù, ta còng cã thÓh­í ng sù xuÊt d÷ l i Öu ra c¸ c thi Õt bÞkh¸ c nhau. Trong ch­¬ng nµy, ta xÐt
c¸ ch nhËp d÷ l i Öu tõ bµn phÝm vµ xuÊt d÷ l i Öu ra mµn h×nh hoÆc m¸ y i n. Vi Öc xuÊt vµ nhËp d÷ l i Öu cã dï ng c¸ c f i l e d÷ l i Öu sÏ ®­î c xÐt trong ch­¬ng 6.
L Önh xuÊt d÷ l i Öu ®Þnh h­í ng ra mµn h×nh:
PRI NT * , Danh s¸ ch c¸ c môc i n
L Önh nhËp d÷ l i Öu tõ bµn phÝm:
REA D * , Danh s¸ ch c¸ c bi Õn
C¸ c môc i n trong l Önh i n cã thÓl µ mét h»ng, mét bi Õn, mét bi Óu thøc. NÕu trong danh s¸ ch c¸ c môc i n cã tõ hai môc trë l ª n, th×c¸ c môc ph¶i c¸ ch nhau bëi dÊu
ph¶y. Trong danh s¸ ch c¸ c bi Õn cña l Önh nhËp (®äc) d÷ l i Öu, nÕu cã h¬n mét bi Õn cÇn ®äc d÷ l i Öu, th×nh÷ng bi Õn ®ã ph¶i ®­î c l i Öt kª c¸ ch nhau bëi dÊu ph¶y. C¸ c môc
®­î c i n ra trª n mét dßng mµn h×nh theo thø tù ®­î c l i Öt kª trong danh s¸ ch. NÕu trong danh s¸ ch kh«ng cã mét môc i n nµo, th×m¸ y tÝnh chØ®¬n gi ¶n l µ xuèng mét dßng
trª n mµn h×nh. ThÝdô, xÐt ®o¹ n ch­¬ng tr×nh sau ®©y:
GOC = 30.0
PRI NT* , ' Khi X = ', GOC , ' 1/2 Si nX = ', 0.5 * SI N (GOC *
* 3.141593 / 180.)
Ghi chó: Trong l Önh PRI NT võa råi cã mét dÊu nèi dßng. ë ®©y ®· dï ng dÊu hoa thÞbª n trong h×nh nh÷ nhËt nhá * ®Óph©n bi Öt ví i dÊu hoa thÞb×nh th­êng l µ ký
hi Öu cña phÐp tÝnh nh©n. Tõ nay vÒsau trong s¸ ch nµy ë nh÷ng dßng l Önh nµo cã dÊu nèi dßng sÏ quy ­í c dï ng ký hi Öu nµy. Cßn khi so¹n ch­¬ng tr×nh trª n mµn h×nh
m¸ y tÝnh, th×nh­ ®· nãi trong môc 1.5, chóng 1 ta chØcÇn vi Õt dÊu hoa thÞvµo vÞtrÝthø 6 cña dßng l Önh.
Ta thÊy trong danh s¸ ch c¸ c môc i n cña l Önh PRI NT cã 4 môc l i Öt kª theo thø tù l µ:
1) Côm ch÷ ' Khi X ='
2) Bi Õn cã tª n l µ GOC l ­u gi ¸ trÞ30°
3) Côm ch÷ ' 1/2 Si nX ='
4) Bi Óu thøc
51 52
0.5 * SI N (GOC * 3.141593 / 180.0)
bi Óu thÞnöa si n cña gãc 30° ®· ®æi thµnh ra®i an.
Nh­ vËy, môc i n thø nhÊt vµ thø ba l µ nh÷ng h»ng v¨ n b¶n, môc i n thø 2 l µ gi ¸ trÞcña bi Õn sè thùc GOC vµ môc i n thø t­ l µ mét bi Óu thøc sè thùc. Tr­í c khi i n môc
thø t­, m¸ y tÝnh ph¶i tÝnh gi ¸ trÞcña bi Óu thøc nµy (b»ng 0,25), råi sau ®ã mí i i n gi ¸ trÞ®ã l ª n mµn h×nh. KÕt qu¶ trª n mµn h×nh sÏ nh­ sau:


H· y chó ý r»ng ví i l Önh PRI NT * trª n ®©y c¸ c môc i n l µ nh÷ng côm d÷ l i Öu v¨ n b¶n ®­î c i n ra ®óng nh­ ta nh×n thÊy trong dßng l Önh, tõng ký tù mét, kÓc¶ dÊu
trèng. C¸ c gi ¸ trÞcña bi Õn vµ bi Óu thøc thùc ®­î c i n ra sau mét kho¶ng trèng vµ sè nh÷ng ch÷ sè cã nghÜa sau dÊu chÊm thËp ph©n kh¸ c nhau. NÕu gi ¸ trÞcña c¸ c bi Õn l µ
nh÷ng sè kh¸ nhá hoÆc kh¸ l í n, th×m¸ y sÏ i n ra nh÷ng gi ¸ trÞ®ã d­í i d¹ ng bi Óu di Ôn E hoÆc D (xem môc 2.1). Ki Óu i n d÷ l i Öu nh­ trª n gäi l µ i n kh«ng ®­î c ®Þnh d¹ ng
hay i n kh«ng cã f ormat.
Chó ý r»ng, trong READ * , sau dÊu ph¶y l µ danh s¸ ch c¸ c bi Õn, khi thùc hi Ön l Önh nµy, m¸ y tÝnh chê ta gâ tõ bµn phÝm nh÷ng gi ¸ trÞ(c¸ c ký tù v¨ n b¶n, sè nguyª n,
sè thùc...) t­¬ng xøng vÒki Óu ví i danh s¸ ch bi Õn, mçi gi ¸ trÞc¸ ch nhau mét dÊu ph¶y hay Ýt nhÊt mét dÊu trèng, ri ª ng nh÷ng ký tù v¨ n b¶n ph¶i n»m trong cÆp dÊu nh¸ y
trª n (' '). KÕt thóc danh s¸ ch c¸ c gi ¸ trÞph¶i gâ l Önh phÝm Enter (↵). M¸ y tÝnh sÏ tuÇn tù g¸ n nh÷ng gi ¸ trÞnhËn tõ bµn phÝm vµo nh÷ng bi Õn t­¬ng øng trong danh s¸ ch
bi Õn cña l Öng REA D. NÕu ta gâ ch­a ®ñ sè gi ¸ trÞtheo danh s¸ ch bi Õn, th×m¸ y chê ta gâ cho ®Õn khi ®ñ c¸ c gi ¸ trÞmí i kÕt thóc thùc hi Ön l Önh READ. NÕu ki Óu d÷ l i Öu
gâ vµo sai so ví i ki Óu d÷ l i Öu cña bi Õn, th×l Ëp tøc ch­¬ng tr×nh ngõng thùc hi Ön vµ b¸ o l çi ch¹ y ch­¬ng tr×nh. ThÝdô l Önh
READ * , I , NAM , TEMP , GHI CHU
®ßi hái ta gâ vµo tõ bµn phÝm mét sè nguyª n cho bi Õn I , mét sè nguyª n n÷a cho bi Õn NAM vµ mét sè thùc cho bi Õn TEMP, mét x©u ký tù cho bi Õn v¨ n b¶n GHI CHU,
muèn nhËp ®óng yª u cÇu ta cã thÓgâ vµo bµn phÝm nh­ sau:
1 1982 25.36 'SL quan trac' ↵ hay 1,1982,25.36,'SL quan trac' ↵.
L Önh i n cã quy c¸ ch (cã ®Þnh d¹ng):
PRI NT k , Danh s¸ ch c¸ c môc i n
Còng gi èng nh­ l Önh i n kh«ng ®Þnh d¹ ng, danh s¸ ch c¸ c môc i n chØra nh÷ng h»ng, bi Õn hay c¸ c bi Óu thøc cÇn i n theo thø tù l i Öt kª . Tham sè k nguyª n d­¬ng chØ
tí i nh· n cña l Önh FORMAT m« t¶ quy c¸ ch i n th«ng ti n ra mµn h×nh nh­ vÞtrÝi n, kho¶ng c¸ ch gi ÷a c¸ c môc i n, sè ch÷ sè thËp ph©n cÇn i n ®èi ví i gi ¸ trÞsè thùc... D¹ ng
tæng qu¸ t cña l Önh FORMAT nh­ sau:
k FORM A T (Danh s¸ ch c¸ c ®Æc t¶)
Khi X = 30.00000 1/2 SinX =
0.2500000
53 54
trong ®ã k l µ nh· n cña dßng l Önh FORMAT. Danh s¸ ch c¸ c ®Æc t¶ n»m trong cÆp dÊu ngoÆc ®¬n b¸ o cho m¸ y tÝnh bi Õt vÒc¸ ch d· n dßng theo chi Òu th¼ng ®øng vµ bè trÝ
c¸ c ký tù trong dßng th«ng ti n i n ra. NÕu i n ra trª n gi Êy m¸ y i n, th×tuú chän d· n dßng b¸ o cho m¸ y i n ®i Òu khi Ón kÐo gi Êy ®Ói n sang ®Çu trang mí i , xuèng dßng mí i ,
xuèng hai dßng mí i hay i n ngay trª n dßng hi Ön thêi ... M¸ y tÝnh sÏ thi Õt l Ëp mçi dßng i n bª n trong bé nhí tr­í c khi thùc sù i n dßng ®ã l ª n gi Êy. Vï ng bé nhí bª n trong
®ã gäi l µ vï ng ®Öm buf f er. Nh÷ng ký tù ®Çu ti ª n trong vï ng buf f er gäi l µ ký tù ®i Òu khi Ón kÐo gi Êy cña m¸ y i n cã nh÷ng ý nghÜa nh­ sau:
1 Sang trang mí i
DÊu trèng Xuèng mét dßng
0 Xuèng hai dßng
+ Kh«ng xuèng dßng
B©y gi ê ta l µm quen ví i nh÷ng ®Æc t¶ ®¬n gi ¶n sau ®©y. Trong ch­¬ng 4 sÏ cßn trë l ¹ i vÊn ®Ò®Þnh d¹ ng phøc t¹ p h¬n khi l µm vi Öc ví i c¸ c f i l e d÷ l i Öu.
3.2. C¸ c ®Æc t ¶ t rong l Önh FORMA T
1) C¸ c ®Æc t ¶ v¨ n b¶n th­êng dï ng ®ÓxuÊt d÷ l i Öu l µ nh÷ng ký tù, c¸ c ®o¹ n v¨ n b¶n, hay dï ng i n ti ª u ®Òc¸ c b¸ o c¸ o. § Æc t¶ v¨ n b¶n cho phÐp ®­a c¸ c ký tù trùc
ti Õp vµo buf f er. C¸ c ký tù ph¶i n»m trong cÆp dÊu nh¸ y trª n hay dÊu ngoÆc kÐp. ThÝdô:
PRI NT 4
4 FORMAT ('1' , 'KET QUA THI NGHI EM')
Ta còng cã thÓdï ng ®Æc t¶ wH trong ®ã − w sè vÞtrÝ®ÓxuÊt d÷ l i Öu v¨ n b¶n. ThÝdô
PRI NT 5 , Y
5 FORMAT (16H TI CH PHAN BANG , F9.3)
2) § Æc t¶ n X sÏ chÌ n n dÊu trèng vµo b¶n ghi , th­êng dï ng ®Óc¨ n gi ÷a c¸ c ti ª u ®Òb¸ o c¸ o, thÝdô:
PRI NT 35
35 FORMAT ('1' , 25X , 'THI NGHI EM SO 1')
3) § Æc t¶ A w dï ng cho c¸ c h»ng vµ bi Õn x©u ký tù, c¸ c th«ng ti n v¨ n b¶n, tuú chän w b¸ o cho m¸ y tÝnh sè vÞtrÝgi µnh cho mét bi Õn x©u ký tù (v¨ n b¶n) cÇn i n.
Môc v¨ n b¶n i n ra c¨ n l Òbª n tr¸ i .
4) § Æc t¶ I w dï ng cho sè nguyª n, trong ®ã w sè vÞtrÝdï ng ®Ói n gi ¸ trÞsè nguyª n.
55 56
5) § Æc t¶ F w. d dï ng bi Óu di Ôn d¹ ng thËp ph©n cña sè thùc, − w tæng sè vÞtrÝdµnh cho sè thùc kÓc¶ dÊu chÊm thËp ph©n, − d sè ch÷ sè thËp ph©n sau dÊu chÊm.
Trong hai ®Æc t¶ I w vµ F w. d c¸ c sè i n ra ®­î c c¨ n l Òbª n ph¶i . NÕu ®Æc t¶ thi Õu vÞtrÝ®Óbi Óu di Ôn gi ¸ trÞ, th×gi ¸ trÞsè sÏ kh«ng ®­î c i n ra, mµ t¹ i c¸ c vÞtrÝi n sÏ xuÊt
hi Ön c¸ c dÊu sao (* ) ®Ób¸ o hi Öu cho ta bi Õt r»ng ®Æc t¶ cña l Önh FORMAT kh«ng phï hî p, cÊp thi Õu vÞtrÝso ví i gi ¸ trÞcña ®¹ i l ­î ng cÇn i n.
6) § Æc t¶ E w. d dï ng ghi ra d­í i d¹ ng l uü thõa nh÷ng gi ¸ trÞrÊt l í n hoÆc rÊt nhá vµ khi ta ch­a h×nh dung râ vÒ®é l í n cña ®¹ i l ­î ng.
Th«ng th­êng hai l Önh PRI NT vµ FORMAT ®i kÌ m gÇn nhau. ThÝdô:
PRI NT 5 , I , NAM, TEMP, GHI CHU
5 FORMAT (1X, I 3, I 8, F10.2, 1X, A20)
Sau l Önh READ vµ c¸ c d÷ l i Öu ®­î c gâ vµo tõ bµn phÝm ®· nãi trong môc 3.2.1, th×kÕt qu¶ cÆp l Önh i n nµy trª n mµn h×nh sÏ nh­ sau:


7) C¸ c ®Æc t¶ A w, I w, F w . d vµ E w. d còng dï ng ví i l Önh ®äc sè l i Öu.
8) § èi ví i c¸ c gi ¸ trÞl «gi c trong Fortran dï ng ®Æc t¶ L w , trong ®ã − w sè vÞtrÝgi µnh cho d÷ l i Öu. ThÝdô theo l Önh
16 FORMAT (L5)
nÕu t¹ i mét trong 5 vÞtrÝgi µnh cho bi Õn cã ch÷ T, th×gi ¸ trÞ.TRUE. sÏ ®­î c g¸ n vµo bi Õn l «gi c trong l Önh ®äc. Khi xuÊt, ch÷ c¸ i T hoÆc F (t­¬ng øng ví i .TRUE. hoÆc
.FA L SE. sÏ i n ra t¹ i vÞtrÝthø 5, tøc vÞtrÝcuèi cï ng bª n ph¶i trong 5 vÞtrÝ.
9) Chóng ta cã thÓsö dông mét sè ®Æc ®i Óm bæsung trong c¸ ch vi Õt c¸ c ®Æc t¶ cña l Önh FORMAT nh»m n©ng cao chÊt l ­î ng b¶n ghi , theo ®óng ý ®Þnh bi Óu di Ôn
cña m×nh hay l µm cho l Önh FORMA T tr«ng ng¾n gän. Cã thÓdï ng nh÷ng c¸ ch d­í i ®©y:
C¸ ch vi Õt l Æp l ¹ i c¸ c ®Æc t¶: ThÝdô nh÷ng cÆp l Önh sau ®©y hoµn toµn t­¬ng ®­¬ng:
10 FORMAT (3X, I 2, 3X, I 2)
10 FORMAT (2 (3X, I 2))
20 FORMAT (1X, F4.1, F4.1, 1X, I 3, 1X, I 3, 1X, I 3)
20 FORMAT (1X, 2F4.1, 3 (1X, I 3))
Dï ng dÊu g¹ ch chÐo (/ ) trong l Önh FORMA T chØkÕt thóc dßng i n tr­í c khi b¾t ®Çu c¸ c ®Æc t¶ sau nã. ThÝdô, khi cÇn i n dßng ti ª u ®Òcña mét b¶ng sè cï ng ví i
nh÷ng ti ª u ®Òcét, chóng ta cã thÓdï ng:
PRI NT 5
1 1982 25.36 SL
quan trac
57 58
5 FORMAT (1X, 'KET QUA QUAN TRAC' // 2X, 'Gi o', 3X,
* 'Toc do', 3X, 'Huong')
Sau khi i n xong ®o¹ n v¨ n b¶n KET QUA QUAN TRAC, dÊu g¹ ch chÐo thø nhÊt chØdÉn cho m¸ y kÕt thóc dßng, xuèng dßng mí i , dÊu g¹ ch chÐo thø hai chØdÉn bá
qua ngay dßng nµy kh«ng i n, ph¸ t si nh ra mét dßng trèng tr­í c khi i n c¸ c ti ª u ®Òcét ë dßng thø ba nh­ ta thÊy d­í i ®©y:

K ET QU A Q U A N T RA C
Gi o T oc do H uong

Dï ng ®Æc t¶ b¶ng T, TR, TL ®Óc¨ n l Òtr¸ i c¸ c ti ª u ®Òcét mét b¶ng sè. ThÝdô c¸ c cÆp l Önh cï ng nh· n sau ®©y sÏ l µ t­¬ng ®­¬ng ví i nhau:
600 FORMAT (F6.1, 15X, I 7)
600 FORMAT (F6.1, T22, I 7)
ë l Önh thø hai : sau khi ghi ra sè thùc ví i 6 vÞtrÝ, nh¶y ngay tí i vÞtrÝ22 ®Ób¾t ®Çu ghi sè nguyª n.
85 FORMAT (1X, 25X, 'Do cao', 5X, 'Huong')
85 FORMAT (T27, 'Do cao', TR5, 'Huong')
ë l Önh thø hai : nh¶y ngay tí i vÞtrÝthø 27 ®Óghi ti ª u ®Ò" Do cao" , sau ®ã do cã ®Æc t¶ TR5 xuÊt ph¸ t tõ vÞtrÝhi Ön thêi sÏ nh¶y sang ph¶i 5 vÞtrÝ®Óghi ti ª u ®Ò" Huong" .
§ Æc t¶ \ cã t¸ c dông ng¨ n kh«ng xuèng dßng trong mét l Önh i n hoÆc ®äc. Cã thÓdï ng ®Æc t¶ nµy trong tr­êng hî p muèn vi Õt mét l êi nh¾c yª u cÇu ng­êi dï ng nhËp
th«ng ti n tõ bµn phÝm nh­ng sau khi vi Õt l êi nh¾c th×kh«ng xuèng dßng, con nh¸ y ®øng trª n cï ng dßng ngay sau l êi nh¾c chê ng­êi dï ng nhËp th«ng ti n tõ bµn phÝm theo
yª u cÇu cña l Önh ®äc. ThÝdô nhãm l Önh sau ®©y sÏ l µm chøc n¨ ng ®ã:
PRI NT 7
7 FORMAT (1X, 'Ten f i l e so l i eu: ', \)
REA D (* , '(A 50)') NA ME
V Òsè l ­î ng c¸ c ®Æc t¶: Khi sè c¸ c ®Æc t¶ nhi Òu h¬n sè môc trong danh s¸ ch c¸ c môc i n, thÝdô:
PRI NT 1, TOCDO, KHOANG
1 FORMAT (4 F5.2)
m¸ y sÏ chän l Êy sè tèi ®a c¸ c ®Æc t¶ cÇn dï ng, sè ®Æc t¶ cßn l ¹ i bÞbá qua. Trong tr­êng hî p nµy l Önh i n cã 2 môc i n - 2 gi ¸ trÞsè thùc, nh­ng l Önh FORMAT cã 4 ®Æc t¶
sè thùc, nh­ vËy sè ®Æc t¶ l µ thõa. M¸ y sÏ chän l Êy hai ®Æc t¶ vµ i n b×nh th­êng nh­ chóng ta mong muèn.
59 60
Khi sè ®Æc t¶ Ýt h¬n sè môc i n, thÝdô trong l Önh i n sau:
PRI NT 20, TEM, VOL
20 FORMAT (1X, f 6.2)
Trong tr­êng hî p nµy m¸ y c¨ n c¸ c môc i n vµ ®Æc t¶ cho ®Õn hÕt danh s¸ ch ®Æc t¶, sau ®ã cã thÓx¶y ra hai kh¶ n¨ ng:
1) I n l u«n buf f er hi Ön t¹ i vµ b¾t ®Çu mét buf f er mí i .
2) Quay trë l ¹ i ®Çu danh s¸ ch ®Æc t¶ cho ®Õn khi gÆp dÊu ngoÆc ®¬n tr¸ i vµ l ¹ i c¨ n tõng cÆp môc i n, ®Æc t¶ cho c¸ c môc i n cßn l ¹ i .
Trong l Önh i n trª n gi ¸ trÞcña TEM ®­î c c¨ n theo ®Æc t¶ F6.2. V×kh«ng cã ®Æc t¶ cho VOL nª n ta l µm nh­ sau:
1) I n gi ¸ trÞcña TEM sau mét vÞtrÝtrèng.
2) Khi quay trë l ¹ i vÒphÝa ®Çu cña danh s¸ ch c¸ c ®Æc t¶ (dÊu ngoÆc tr¸ i ) vµ c¨ n F6.2 cho gi ¸ trÞVOL. Sau ®ã ta ®¹ t tí i ®Çu cña danh s¸ ch vµ dÊu trèng ®Ói n VOL .
Do ®ã TEM vµ VOL ®­î c i n trª n hai dßng ri ª ng bi Öt.
Trong Fortran 90 cho phÐp c¸ c tham sè ®é réng ®Æc t¶, sè l Çn l Æp cña ®Æc t¶ cã thÓl µ bi Õn. ThÝdô FORMAT (<M>F8.2).
Bµi t Ëp
1. Vi Õt ®o¹ n ch­¬ng tr×nh ®äc gi ¸ trÞvµo hai bi Õn thùc A vµ B, ®æi gi ¸ trÞcña hai bi Õn ®ã cho nhau.
2. § i Òu g×sÏ x¶y ra khi thùc hi Ön ch­¬ng tr×nh sau vµ ta nhËp vµo bµn phÝm l Çn l ­î t sè 1, dÊu ph¶y, sè 10 vµ dÊu chÊm råi gâ phÝm Enter.
PRI NT * , ' Cho cac gi a tri cua hai so nguyen I 1, I 2 ! '
REA D * , I DAU, I CUOI
PRI NT 4, I DAU, I CUOI
4 FORMAT (1X, 'I 1 = ', I 5, 'I 2 = ', I 5)
END
3. M« t¶ nh÷ng g×sÏ i n l ª n mµn h×nh khi thùc hi Ön c¸ c l Önh d­í i ®©y:
REAL X
X = −27.632
PRI NT 5 , X
5 FORMAT (1X, 'X = ', F7.1, ' DEGREES')
4. M« t¶ nh÷ng g×sÏ i n ra m¸ y i n khi thùc hi Ön nh÷ng l Önh d­í i ®©y:
A = 3.184
PRI NT 1
1 FORMAT (1X, '0')
61 62
PRI NT 2
2 FORMAT ('+' , '- = ' , F5.2)
5. M« t¶ nh÷ng g×sÏ i n l ª n mµn h×nh khi thùc hi Ön c¸ c l Önh d­í i ®©y:
REAL DI ST , VEL
DI ST = 28732.5
VEL = −2.6
PRI NT 10, DI ST, VEL
10 FORMAT (1X, 'DI STA NCE = ' , E10.3,
* 5X , 'VEL OCI TY = ' , F5.2)
6. V i Õt ®o¹ n ch­¬ng tr×nh nhËp vµo tõ bµn phÝm tª n 5 m«n thi cña häc kú cï ng ví i ®i Óm thi tõng m«n cña m×nh. TÝnh ®i Óm trung b×nh vµ i n l ª n mµn h×nh thµnh mét
b¶ng cã h×nh thøc nh­ sau:
BANG DI EM THI HOC K Y
--------------------------------------------
TT TEN MON HOC DI EM
--------------------------------------------
1 Tª n m«n thø 1 8
2 Tª n m«n thø 2 7
3 Tª n m«n thø 3 8
4 Tª n m«n thø 4 7
5 Tª n m«n thø 5 9
--------------------------------------------
Di em trung bi nh hoc ky 7,8

Ch­¬ng 4
C¸ c cÊu tróc ®i Òu khi Ón
Trong c¸ c ch­¬ng tr­í c ta ®· xÐt mét vµi ch­¬ng tr×nh ®¬n gi ¶n. ThÊy r»ng nh÷ng ch­¬ng tr×nh nµy thùc sù rÊt ®¬n gi ¶n, chØgåm mét vµi l Önh thùc hi Ön tuÇn tù l µ
63 64
dÉn ®Õn kÕt qu¶ bµi to¸ n cÇn gi ¶i . Trong ch­¬ng nµy, sÏ gi í i thi Öu nh÷ng l Önh cña Fortran cho phÐp ta ®i Òu khi Ón ®­î c thø tù c¸ c b­í c cÇn thùc hi Ön. Sù ®i Òu khi Ón ®­î c
thùc hi Ön th«ng qua nh÷ng l Önh cho phÐp ta chän nh÷ng nh¸ nh kh¸ c nhau trong ch­¬ng tr×nh vµ nh÷ng l Önh cho phÐp ta l Æp l ¹ i nh÷ng phÇn nµo ®ã cña ch­¬ng tr×nh.
Nh÷ng l Önh nh­ vËy gäi l µ nh÷ng l Önh ®i Òu khi Ón.
4.1. Kh¸ i ni Öm vÒcÊu t róc t huËt t o¸ n
4.1.1. C¸ c thao t¸ c c¬ b¶n. Gi ¶ tr×nh vµ l ­u ®å
Trong môc 1.3, ch­¬ng 1 ®· s¬ l ­î c nãi vÒquy tr×nh n¨ m b­í c gi ¶i bµi to¸ n. § èi ví i nh÷ng bµi to¸ n phøc t¹ p vÒc¸ ch gi ¶i th×b­í c 4 l µ b­í c khã kh¨ n nhÊt. Ng­êi
l Ëp tr×nh ph¶i m« t¶ tuÇn tù c¸ c c«ng ®o¹ n tõ ®Çu ®Õn cuèi qu¸ tr×nh gi ¶i , chi a qu¸ tr×nh nµy thµnh mét sè khèi vµ l i Öt kª nh÷ng khèi ®ã ra ®Ósau nµy ch­¬ng tr×nh m¸ y
tÝnh sÏ tuÇn tù thùc hi Ön. Trong mçi khèi ng­êi l Ëp tr×nh l ¹ i ph¶i chi ti Õt ho¸ thª m ®Õn møc cã thÓchuyÓn thµnh nh÷ng l Önh m¸ y tÝnh. C¸ ch chi a khèi vµ chi ti Õt ho¸ tõng
khèi nh­ vËy cã thÓgäi l µ ph­¬ng ph¸ p chi a vµ chi nh phôc. KÕt qu¶ cuèi cï ng cña chi a khèi vµ chi ti Õt ho¸ tõng khèi chÝnh l µ thuËt gi ¶i (al gori thm).
B¶ng 4.1. C¸ c thao t¸ c c¬ b¶n vµ quy ­í c t­¬ng øng trong gi ¶ tr×nh vµ l ­u ®å
D¹ ng thao t¸ c Chó gi ¶i gi ¶ t r×nh Bi Óu t­î ng l ­u ®å
TÝnh to¸ n N TONG TB / ←

TB = TONG / N



NhËp d÷ l i Öu § äc A , B

§ äc A, B



XuÊt d÷ l i Öu I n A, B

I n A, B



So s¸ nh NÕu A > B

§
↓ S
A > B ? →

65 66
B¾t ®Çu thuËt gi ¶i Tª n bµi to¸ n

B¾t ®Çu


K Õt thóc thuËt gi ¶i

KÕt thóc


Nh÷ng h×nh thøc ®Óbi Óu di Ôn trùc quan thuËt gi ¶i sao cho dÔdµng chuyÓn thµnh ch­¬ng tr×nh l µ gi ¶ tr×nh vµ l ­u ®å. Mét ng­êi l Ëp tr×nh cã thÓchän h×nh thøc nµy
hoÆc h×nh thøc ki a. Theo c¸ ch gi ¶ tr×nh, mçi cÊu tróc cña thuËt gi ¶i ®­î c quy ­í c bëi mét chó gi ¶i ng¾n gän gÇn gi èng ví i ng«n ng÷ vi Õt cña chóng ta; cßn trong c¸ ch
bi Óu di Ôn l ­u ®å, mçi cÊu tróc ®ã ®­î c m« t¶ b»ng mét bi Óu t­î ng h×nh häc.
DÇn dÇn ta sÏ thÊy r»ng, nãi chung nh÷ng thao t¸ c c¬ b¶n trong mét thuËt gi ¶i th­êng l µ nh÷ng tÝnh to¸ n, nhËp, xuÊt d÷ l i Öu vµ so s¸ nh. Nãi chung mét ch­¬ng tr×nh
m¸ y tÝnh dï ®¬n gi ¶n hay phøc t¹ p ®Õn ®©u còng chØgåm cã nh÷ng thao t¸ c c¬ b¶n ®ã. Mét sè thao t¸ c (hay l Önh) cã thÓnhãm l ¹ i ví i nhau t¹ o thµnh mét khèi hay mét
khèi cÊu tróc. Nh÷ng chó gi ¶i gi ¶ tr×nh vµ nh÷ng bi Óu t­î ng l ­u ®å chÝnh l µ ®ÓthÓhi Ön nh÷ng thao t¸ c c¬ b¶n ®ã (xem b¶ng 4.1).
4.1.2. C¸ c cÊu tróc tæng qu¸ t t rong thuËt gi ¶i
C¸ c b­í c trong mét thuËt gi ¶i cã thÓph©n chi a thµnh ba d¹ ng cÊu tróc tæng qu¸ t - ®ã l µ cÊu tróc tuÇn tù, l ùa chän vµ l Æp. CÊu tróc tuÇn tù l µ chuçi c¸ c b­í c thùc hi Ön
mét c¸ ch kÕti Õp nhau. CÊu tróc l ùa chän (hay cßn gäi l µ cÊu tróc rÏ nh¸ nh) cho phÐp so s¸ nh hai gi ¸ trÞ, sau ®ã tuú kÕt qu¶ so s¸ nh mµ ®Þnh ra mét chuçi c¸ c b­í c kh¸ c
nhau ph¶i thùc hi Ön. CÊu tróc l Æp ®­î c dï ng khi qu¸ tr×nh gi ¶i cÇn l Æp l ¹ i mét sè thao t¸ c cho ®Õn khi tho¶ m· n mét ®i Òu ki Ön. Trong thuËt gi ¶i phøc t¹ p h¬n mét chót cã
thÓthÊy c¸ c cÊu tróc tæng qu¸ t nµy l ång vµo nhau, trong cÊu tróc l Æp cã nh÷ng ®o¹ n gåm nh÷ng thao t¸ c tuÇn tù ®­î c thùc hi Ön, cã nh÷ng ®o¹ n xuÊt hi Ön sù rÏ nh¸ nh tuú
theo mét ®i Òu ki Ön so s¸ nh nµo ®ã.
4.1.3. ThÝdô øng dông thuËt to¸ n cÊu tróc
B©y gi ê ta t×m hi Óu ph­¬ng ph¸ p x©y dùng thuËt gi ¶i theo kü thuËt chi a khèi vµ chi ti Õt ho¸ tõng khèi , ph©n tÝch cÊu tróc thuËt gi ¶i th«ng qua mét thÝdô cô thÓvÒbµi
to¸ n ph©n tÝch c¸ c sè l i Öu thùc nghi Öm.
1) Ph¸ t bi Óu bµi to¸ n: X¸ c ®Þnh gi ¸ trÞl í n nhÊt, nhá nhÊt vµ bi ª n ®é c¸ c gi ¸ trÞcña tËp sè l i Öu quan tr¾c.
2) M« t¶ d÷ l i Öu vµo vµ ra: D÷ l i Öu vµo l µ mét chuçi c¸ c sè l i Öu quan tr¾c. § Çu ra l µ trÞcùc ®¹ i , cùc ti Óu vµ bi ª n ®é c¸ c gi ¸ trÞ.
3) TÝnh thö ví i tËp sè l i Öu quan tr¾c sau:
Chuçi sè l i Öu t hö:
40.56
55.92
67 68
66.31
58.35
62.88
41.99
49.70
53.21
Thùc hi Ön t×m trÞcùc ®¹ i nh­ sau: Tr­í c hÕt so s¸ nh sè thø nhÊt cña chuçi ví i sè thø hai ®Óx¸ c ®Þnh sè l í n h¬n, coi l µ cùc ®¹ i t¹ m thêi . B©y gi ê xÐt sè thø ba vµ so
s¸ nh nã ví i cùc ®¹ i t¹ m thêi . NÕu cùc ®¹ i t¹ m thêi l í n h¬n, ta xÐt tí i sè thø t­; nh­ng nÕu sè thø ba l í n h¬n cùc ®¹ i t¹ m thêi , ta thay thÕsè ®ã vµo cùc ®¹ i t¹ m thêi . Ti Õp
tôc qu¸ tr×nh nµy ví i toµn bé chuçi sè l i Öu sÏ dÉn tí i kÕt qu¶ l µ cùc ®¹ i t¹ m thêi chÝnh l µ trÞcùc ®¹ i trong c¶ chuçi . Mét qu¸ tr×nh t­¬ng tù sÏ cho phÐp t×m cùc ti Óu. Ví i
tËp sè l i Öu ®ang xÐt, kÕt qu¶ l µ:
Gi ¸ trÞcùc ®¹ i = 66.31
Gi ¸ trÞcùc ti Óu = 40.56
TÝnh bi ª n ®é b»ng hi Öu gi ÷a cùc ®¹ i vµ cùc ti Óu = 66.31 − 40.56 = 25.73
4) X©y dùng thuËt gi ¶i : Kh¸ i qu¸ t l ¹ i c¸ c b­í c thùc hi Ön ë b­í c (3) ta cã thÓchi a bµi to¸ n thµnh ba khèi :
- § äc sè l i Öu vµ x¸ c ®Þnh c¸ c trÞcùc ®¹ i vµ cùc ti Óu
- TÝnh hi Öu gi ÷a cùc ®¹ i vµ cùc ti Óu ®ÓnhËn bi ª n ®é
- I n cùc ®¹ i , cùc ti Óu vµ bi ª n ®é
Ví i thÝdô nµy, ta chi ti Õt ho¸ c¸ ch gi ¶i b»ng gi ¶ tr×nh. Râ rµng khèi thø nhÊt ®ßi hái ph¶i chi ti Õt ho¸ nhi Òu h¬n n÷a, v×nã võa bao gåm c¶ vi Öc chän trÞcùc ®¹ i , cùc
ti Óu xuÊt ph¸ t, võa bao gåm c¶ qu¸ tr×nh l Æp (l Æp ®Ó®äc sè l i Öu vµ l Æp ®ÓcËp nhËt cùc trÞkhi cÇn). Cùc ®¹ i vµ cùc ti Óu xuÊt ph¸ t th­êng ®­î c g¸ n b»ng gi ¸ trÞcña quan
tr¾c thø nhÊt, do ®ã ta ®äc mét sè l i Öu ®Çu ®Óg¸ n cho chóng. Sau ®ã ta ®äc sè thø hai vµ ®i vµo vßng l Æp. "Chõng nµo sè kh«ng ph¶i l µ zero" , ta cËp nhËt trÞcùc ®¹ i vµ cùc
ti Óu nÕu cÇn thi Õt. B©y gi ê ta m« t¶ nh÷ng b­í c ®· ®ñ chi ti Õt nµy b»ng gi ¶ tr×nh nh­ sau:
Gi ¶ tr×nh: § äc sè
Cùc ®¹ i ← Sè
Cùc ti Óu ← Sè
§ äc sè
Chõng nµo sè kh«ng b»ng zero th×
NÕu sè > Cùc ®¹ i th×
Cùc ®¹ i ← Sè
69 70
NÕu sè < Cùc t i Óu th×
Cùc ti Óu ← Sè
§ äc sè
Bi ª n ®é ← Cùc ®¹ i − Cùc t i Óu
I n 'GI A TRI CUC DA I = ', Cùc ®¹ i
I n 'GI A TRI CUC TI EU = ', Cùc ti Óu
I n 'BI EN DO GI A TRI = ', Bi ª n ®é
§ ©y l µ mét thuËt gi ¶i ®¬n gi ¶n. ChØcã mét khèi thø nhÊt cÇn chi ti Õt ho¸ . ThÊy r»ng khi thuËt gi ¶i ®· chi ti Õt ho¸ tí i møc nh­ vËy, th×vi Öc chuyÓn thµnh ch­¬ng
tr×nh Fortran sÏ kh«ng cßn l µ vÊn ®Òkhã kh¨ n. Trong c¸ c môc ti Õp sau, ta sÏ nghi ª n cøu c¸ c l Önh Fortran chuyª n trî gi óp cho vi Öc thi Õt kÕc¸ c cÊu tróc ®i Òu khi Ón cña bµi
to¸ n nµy vµ nhi Òu bµi to¸ n t­¬ng tù.
4.2. CÊu t róc I F vµ c¸ c l Önh t ­¬ng øng
4.2.1. Bi Óu t høc l «gi c
Bi Óu thøc l «gi c ®­î c t¹ o bëi c¸ c to¸ n tö quan hÖ:
.EQ. b»ng .NE. kh«ng b»ng
.L T. nhá h¬n .L E. nhá h¬n hoÆc b»ng
.GT. l í n h¬n .GE. l í n h¬n hoÆc b»ng
nèi hai bi Õn sè ë hai bª n.
Tuú theo quan hÖgi ÷a hai bi Õn sè ®ã mµ bi Óu thøc l «gi c cã mét trong hai gi ¸ trÞl «gi c:
®óng (.TRUE.) hoÆc sai (.FA L SE.).
ThÝdô, xÐt bi Óu thøc A .EQ. B trong ®ã A vµ B l µ c¸ c bi Õn sè thùc. NÕu gi ¸ trÞcña A b»ng gi ¸ trÞcña B th×bi Óu thøc l «gi c sÏ cã gi ¸ trÞl µ ®óng .TRUE.. NÕu kh«ng
th×bi Óu thøc cã gi ¸ trÞl µ sai .FA L SE.. T­¬ng tù, nÕu X b»ng 4,5 th×bi Óu thøc X .GT. 3.0 cã gi ¸ trÞb»ng ®óng .TRUE..
Ta cã thÓnèi hai bi Óu thøc l «gi c b»ng mét trong c¸ c to¸ n tö l «gi c .OR. vµ .A ND. thµnh mét bi Óu thøc l «gi c kÕt hî p.
Khi hai bi Óu thøc l «gi c nèi ví i nhau bëi .OR. th×bi Óu thøc l «gi c kÕt hî p sÏ cã gi ¸ trÞl µ ®óng nÕu mét hoÆc c¶ hai bi Óu thøc cã gi ¸ trÞl µ ®óng. Ta cã thÓgäi .OR. l µ
71 72
to¸ n tö céng l «gi c.
Khi hai bi Óu thøc nèi ví i nhau bëi .A ND. th×bi Óu thøc kÕt hî p cã gi ¸ trÞ®óng chØkhi c¶ hai bi Óu thøc cã gi ¸ trÞl µ ®óng. Ta cã thÓgäi to¸ n tö .A ND. l µ to¸ n tö nh©n
l «gi c.
To¸ n tö .NOT. cã thÓ®øng tr­í c bi Óu thøc l «gi c vµ ®æi gi ¸ trÞcña nã thµnh gi ¸ trÞng­î c l ¹ i . ThÝdô, nÕu A . GT. B l µ ®óng (gi ¸ trÞb»ng .TRUE.) th×.NOT. A . GT. B
l µ sai (.FA L SE.).
Mét bi Óu thøc l «gi c cã thÓchøa nhi Òu to¸ n tö l «gi c, thÝdô nh­ trong bi Óu thøc sau:
.NOT. (A .L T. 15.4) .OR. KT .EQ. I SUM
QuyÒn ­u ti ª n tõ cao nhÊt xuèng thÊp nhÊt l µ
.NOT., .A ND. vµ .OR.
Trong bi Óu thøc trª n, bi Óu thøc A .LT. 15.4 sÏ ®­î c ­í c l ­î ng tr­í c ti ª n, sau ®ã gi ¸ trÞcña nã (.TRUE. hoÆc .FAL SE.) ®­î c ®æi ng­î c l ¹ i . Gi ¸ trÞnµy sÏ ®­î c xÐt
cï ng ví i gi ¸ trÞcña KT .EQ. I SUM. ThÝdô, nÕu A l µ 5.0, KT l µ 5 vµ I SUM l µ 5, th×bi Óu thøc bª n tr¸ i cña to¸ n tö .OR. cã gi ¸ trÞsai .FALSE., bi Óu thøc bª n ph¶i cã gi ¸ trÞ
®óng .TRUE. vµ toµn bé bi Óu thøc sÏ cã gi ¸ trÞl µ ®óng .TRUE..
Gi ¸ trÞcña bi Óu thøc l «gi c cã thÓ®­î c g¸ n cho bi Õn l «gi c b»ng l Önh g¸ n gi èng nh­ l Önh g¸ n dï ng ví i c¸ c bi Õn sè vµ bi Óu thøc sè, thÝdô:
L OGI CAL DONE, OK
DONE = .FALSE.
OK = DONE .AND. I .GT. 24
Khi so s¸ nh hai bi Óu thøc l «gi c hay hai bi Õn l «gi c cã t­¬ng ®­¬ng nhau hay kh«ng, trong Fortran kh«ng dï ng c¸ c to¸ n tö quan hÖnh­ khi so s¸ nh hai bi Óu thøc sè,
mµ dï ng c¸ c to¸ n tö l «gi c .EQV . vµ .NEQV ..
B¶ng 4.2. tãm t¾t quy t¾c ­í c l ­î ng cña c¸ c to¸ n tö l «gi c cho mäi tr­êng hî p cã thÓx¶y ra.
B¶ng 4.2. C¸ c to¸ n tö l «gi c
A B .NOT. A A .A ND.B A .OR.B A .EQV .B A .NEQV .B
Fal se Fal se True Fal se Fal se True Fal se
Fal se True True Fal se True Fal se True
True Fal se Fal se Fal se True Fal se True
73 74
True True Fal se True True True Fal se
Khi c¸ c to¸ n tö sè häc, quan hÖvµ l «gi c cï ng cã mÆt trong mét bi Óu thøc th×c¸ c to¸ n tö sè häc thùc hi Ön tr­í c ti ª n; sau ®ã c¸ c to¸ n tö quan hÖdï ng ®Óph¸ t si nh
c¸ c gi ¸ trÞTRUE hoÆc FALSE; vµ c¸ c gi ¸ trÞnµy ®­î c ®¸ nh gi ¸ b»ng c¸ c to¸ n tö l «gi c theo thø tù ­u ti ª n .NOT., .AND., vµ .OR.. C¸ c quan hÖ.EQV. vµ .NEQV. ®­î c
thùc hi Ön sau cï ng.
4.2.2. L Önh I F l «gi c
1) C¸ c l Önh I F l «gi c cã thÓcã mét sè d¹ ng sö dông. D¹ ng thø nhÊt gäi l µ L ogi cal I F vi Õt nh­ sau:
I F (Bi Óu thøc l «gi c) L Önh t hùc hi Ön
Theo l Önh nµy, nÕu bi Óu thøc l «gi c ë trong cÆp dÊu ngoÆc ®¬n cã gi ¸ trÞTrue th×thùc hi Ön l Önh n»m trª n cï ng dßng ví i bi Óu thøc l «gi c, nÕu bi Óu thøc l «gi c cã gi ¸ trÞ
Fal se th×kh«ng thùc hi Ön l Önh cï ng dßng mµ chuyÓn ngay tí i l Önh ti Õp theo phÝa d­í i trong ch­¬ng tr×nh. Chó ý r»ng l Önh thùc hi Ön ghi sau bi Óu thøc l «gi c cã thÓl µ mét
trong nh÷ng l Önh tÝnh to¸ n (g¸ n), xuÊt, nhËp d÷ l i Öu..., nh­ng kh«ng thÓl µ mét l Önh I F kh¸ c. Bi Óu thøc l «gi c bao gi ê còng ph¶i ®Æt trong cÆp dÊu ngoÆc ®¬n. ThÝdô,
nh÷ng l Önh I F sau ®©y l µ nh÷ng l Önh ®óng:
I F (A. GT. 0.0) SUM = SUM + A
I F (TI ME .GT. 1.5) READ * , DI ST
2) D¹ ng thø hai gäi l µ Bl ock I F: NÕu bi Óu thøc l «gi c cã gi ¸ trÞTrue m¸ y thùc hi Ön c¸ c l Önh tõ l Önh 1 ®Õn l Önh n , sau ®ã chuyÓn tí i l Önh ti Õp sau END I F. NÕu bi Óu
thøc l «gi c cã gi ¸ trÞFal se, ®i Òu khi Ón chuyÓn ngay xuèng l Önh ®øng sau END I F:


IF (Bi Óu thøc l «gi c) THEN
l Önh 1
. . .
l Önh n
END IF

3) D¹ ng thø ba gäi l µ d¹ ng I F − EL SE: Khi bi Óu thøc l «gi c cã gi ¸ trÞTrue c¸ c l Önh tõ 1 ®Õn n ®­î c thùc hi Ön, nÕu bi Óu thøc l «gi c cã gi ¸ trÞFal se c¸ c l Önh tõ 1 + n
®Õn m ®­î c thùc hi Ön:
75 76


IF (Bi Óu thøc l «gi c) THEN
l Önh 1
...
l Önh n
ELSE
l Önh n+ 1
...
l Önh m
END IF

4) D¹ ng thø t­ gäi l µ I F − EL SE I F: NÕu bi Óu thøc l «gi c 1 cã gi ¸ trÞTrue th×l o¹ t c¸ c l Önh tõ 1 ®Õn m ®­î c thùc hi Ön; nÕu bi Óu thøc l «gi c 1 cã trÞFal se, bi Óu thøc
l «gi c 2 cã trÞTrue th×l o¹ t l Önh tõ 1 + m ®Õn n thùc hi Ön; nÕu c¸ c bi Óu thøc l «gi c 1 vµ 2 l µ Fal se vµ bi Óu thøc l «gi c 3 True th×c¸ c l Önh tõ 1 + n tí i p thùc hi Ön. NÕu
kh«ng mét bi Óu thøc l «gi c nµo cã gi ¸ trÞTrue th×chØcã c¸ c l Önh tõ 1 + p tí i q ®­î c thùc hi Ön. Trong thùc tÕta cã thÓcÊu t¹ o sè nh¸ nh EL SE I F nhi Òu h¬n hoÆc Ýt h¬n,
chø kh«ng nhÊt thi Õt chØl µ hai nh¸ nh nh­ ®· vi Õt d­í i ®©y:

IF (Bi Óu thøc l «gi c 1) THEN
l Önh 1
...
l Önh m
ELSE IF (Bi Óu thøc l «gi c 2) THEN
l Önh m+ 1
...
l Önh n
ELSE IF (Bbi Óu thøc l «gi c 3) THEN
l Önh n+ 1
...
l Önh p
ELSE
l Önh p+ 1
...
l Önh q
END IF


ThÝdô 1: Sö dông c¸ c l Önh I F l «gi c ®Ó®i Òu khi Ón rÏ nh¸ nh. LËp ch­¬ng tr×nh gi ¶i hÖph­¬ng tr×nh bËc hai
77 78
0
2
· + + c bx ax (c¸ c hÖsè c b a , , nhËp tõ bµn phÝm, 0 ≠ a ).
Ta cã thÓcô thÓhãa thuËt gi ¶i cña bµi to¸ n nµy b»ng l ­u ®å nh­ trª n h×nh 4.1. Tõ ®ã vi Õt m· nguån cña ch­¬ng tr×nh Fortran nh­ d­í i ®©y.

B¾t ®Çu
In ‘Nhap HS’
§ äc a, b, c
TÝnh ∆
∆ < 0
↓ §
S




S ↓
∆ = 0
I n - b / (2a)
∆ · ∆
a = 2a
→ KÕt t hóc
I n (- b + ∆) / a
I n (- b - ∆) / a



I n ‘V« nghi Öm’

§

H×nh 4.1. L­u ®å thuËt gi ¶i bµi to¸ n cña thÝdô 1
PRI NT * , ' HE SO A BANG'
REA D * , A
PRI NT * , ' HE SO B BANG'
REA D * , B
PRI NT * , ' HE SO C BANG'
REA D * , C
DEL T = B* * 2 − 4.* A* C
I F (DEL T .LT. 0.) THEN
79 80
PRI NT * , ' PHUONG TRI NH VO NGHI EM'
EL SE I F (DELT .EQ. 0.) THEN
PRI NT 5 , −B / (2.0 * A)
5 FORMAT (1X, 'NGHI EM KEP BANG' , F10.2)
EL SE
DELT = SQRT (DELT)
A = 2. * A
PRI NT 7 , (−B + DELT) / A , (−B − DELT) / A
7 FORMAT (1X, 'HAI NGHI EM: X1 = ',
* F10.2, 5X, 'X2 = ', F10.2)
END I F
END
4.2.3. L Önh I F sè häc
L Önh I F sè häc cho phÐp thùc hi Ön rÏ nh¸ nh ch­¬ng tr×nh thµnh ba nh¸ nh tï y thuéc vµo gi ¸ trÞcña bi Óu thøc sè häc, d¹ ng tæng qu¸ t cña l Önh nµy vi Õt nh­ sau:
I F (Bi Óu thøc sè häc)
3 2 1
, , n n n
trong ®ã −
3 2 1
, , n n n nh· n cña c¸ c l Önh thùc hi Ön. NÕu bi Óu thøc sè häc cã gi ¸ trÞ©m th×®i Òu khi Ón ®­î c chuyÓn tí i l Önh cã nh· n l µ
1
n , b»ng kh«ng − nh· n
2
n , vµ d­¬ng
− nh· n
3
n .
ThÝdô, theo l Önh
I F (I − 10) 4, 8, 7
nÕu 10 < I ®i Òu khi Ón chuyÓn ®Õn l Önh cã nh· n l µ 4, nÕu − · 10 I chuyÓn ®Õn nh· n 8 vµ nÕu − > 10 I chuyÓn ®Õn nh· n 7.
Trong l Önh
I F (X − 3.5) 3, 6, 6
khi 5 , 3 ≥ X ®i Òu khi Ón chuyÓn tí i l Önh cã nh· n l µ 6, khi 5 , 3 < X ®i Òu khi Ón chuyÓn tí i l Önh cã nh· n l µ 3.
81 82
ThÝdô 2: Dï ng l Önh I F sè häc ®Óthi Õt kÕvßng l Æp. Vi Õt ch­¬ng tr×nh tÝnh vµ i n gi ¸ trÞhµm
) 1 ( cos ) (
3
+ ·

x t e x f
x
,
trong ®ã x bi Õn thi ª n tõ 1 ®Õn 3 ví i b­í c 0,1 vµ 1 , 0 · t .
L ­u ®å gi ¶i bµi to¸ n nµy tham kh¶o trª n h×nh 4.2.

B¾t ®Çu
TÝnh F

S




X > 3
T = 0.1
X = 1.0
X = X + 0.1
KÕt t hóc

I n X, F

§


H×nh 4.2. L­u ®å thuËt gi ¶i bµi to¸ n cña thÝdô 2

T = 0.1
X = 1.0
12 F = EXP (− X * * 3) * COS (T * X + 1)
WRI TE (6 , 9) X , F
9 FORMAT (F5.2, E12.2)
X = X + 0.1
83 84
I F (X − 3.0) 12 , 12 , 4
4 STOP
END
4.2.4. L Önh chuyÓn ®i Òu khi Ón v« ®i Òu ki Ön GO TO
L Önh nµy cã d¹ ng
GO TO n
trong ®ã − n nh· n cña l Önh mµ ®i Òu ki Ón cÇn chuyÓn tí i .
L Önh cÇn chuyÓn tí i nhÊt thi Õt ph¶i cã nh· n. Ngoµi ra trong ch­¬ng tr×nh kh«ng thÓcã nh÷ng l Önh cã cï ng nh· n nh­ nhau. L Önh GO TO cã thÓchuyÓn ®i Òu khi Ón
tí i bÊt kú l Önh thùc hi Ön nµo ®øng tr­í c hoÆc ®øng sau l Önh GO TO. ThÝdô:

GO TO 5 7 I = I + 1
. . . X (I )=Y (I )
5 X = X + 1.0 GO TO 7
ThÝdô 3: Vi Õt ch­¬ng tr×nh nhËp n phÇn tö cña m¶ng mét chi Òu X, s¾p xÕp l ¹ i c¸ c phÇn tö m¶ng ®ã theo thø tù t¨ ng dÇn vµ i n ra mµn h×nh.

REAL X (20), TG

I NTEGER N, I , J, K

N = 10

PRI NT * , 'NHAP CAC PHAN TU MANG'
I = 0
7 I = I + 1
PRI NT * , 'PHAN TU ', I
READ * , X (I )
I F (I .L T. N) GOTO 7
C S¾p xÕp m¶ng X theo thø tù t¨ ng dÇn
I = 1
2 K = I
85 86
J = I + 1
1 I F (X (J) .LT. X (K)) K = J
J = J + 1
I F (J .LE. N) GOTO 1
TG = X(I )
X(I ) = X(K)
X(K) = TG
I = I + 1
I F (I . L T. N) GOTO 2
C LÇn l ­î t i n c¸ c gi ¸ trÞcña m¶ng X ®· s¾p xÕp
I = 1
3 PRI NT 8 , X(I )
8 FORMAT (F12.2)
I = I + 1
I F (I .L E. N) GOTO 3
END
4.2.5. L Önh GO TO tÝnh to¸ n
L Önh GO TO tÝnh to¸ n dï ng ®Óthùc hi Ön chuyÓn ®i Òu khi Ón tí i mét trong sè nh÷ng l Önh cã nh· n ®­î c l i Öt kª trong l Önh GOTO tuú thuéc vµo gi ¸ trÞcña mét bi Õn
trong l Önh. D¹ ng tæng qu¸ t cña l Önh nh­ sau:
GO TO (
m
n n n ..., , ,
2 1
) , i
trong ®ã −
m
n n n ..., , ,
2 1
c¸ c nh· n cña nh÷ng l Önh thùc hi Ön, − i bi Õn nguyª n kh«ng chØsè. Theo l Önh nµy, ®i Òu khi Ón ®­î c chuyÓn tí i mét trong c¸ c l Önh
m
n n n ..., , ,
2 1

tuú thuéc vµo gi ¸ trÞcña i , cô thÓkhi 1 · i ®i Òu khi Ón sÏ chuyÓn tí i l Önh cã nh· n
1
n , khi − · 2 i nh· n
2
n , ..., khi − · m i nh· n
m
n . NÕu gi ¸ trÞcña i n»m ngoµi
kho¶ng m i ≤ ≤ 1 th×®i Òu khi Ón chuyÓn xuèng l Önh ®øng sau l Önh GO TO ®Óthùc hi Ön.
ThÝdô, theo l Önh
GO TO (17 , 2 , 115 , 19) , KA
khi KA = 1 ®i Òu khi Ón chuyÓn tí i l Önh cã nh· n l µ 17, khi KA = 2 ®i Òu khi Ón chuyÓn tí i l Önh cã nh· n l µ 2, khi KA = 3 ®i Òu khi Ón chuyÓn tí i l Önh cã nh· n l µ 115 vµ khi
KA = 4 ®i Òu khi Ón chuyÓn tí i l Önh cã nh· n l µ 19.
87 88
ThÝdô 4: øng dông l Önh GOTO tÝnh to¸ n. Vi Õt ch­¬ng tr×nh tÝnh gi ¸ trÞcña ®a thøc L ej andre ví i 4 , 0 · x theo c«ng thøc
¹
¹
¹
¹
¹
¹
¹
'
¹
· −
· −
·
·
·
3 khi ) 3 5 (
2
1

2 khi ) 1 3 (
2
1

1 khi
0 khi 1
) (
3
2
l
l
l
l
l
x x
x
x
x P
REAL X, P
I NTEGER L , I
X = 0.4
L = 0
28 I = L + 1
GO TO (12, 17, 21, 6) , I
12 P = 1.0
GO TO 24
17 P = X
GO TO 24
21 P = 0.5 * (3.0 * X * * 2 − 1.0)
GO TO 24
6 P = 0.5 * (5.0 * X * * 3 − 3.0 * X)
24 WRI TE (* , 8) L , P
8 FORMAT (I 3 , F12.5)
L = L + 1
I F (L − 3) 28 , 28 , 30
30 STOP
END
ThÝdô 5: S¾p xÕp danh s¸ ch. Vi Õt ch­¬ng tr×nh nhËp hä tª n vµ ®i Óm ba m«n häc cña nhãm gåm n si nh vi ª n. TÝnh ®i Óm trung b×nh céng ba m«n häc. I n b¶ng cã
ti ª u ®Òvµ c¸ c cét thø tù, hä tª n, ®i Óm ba m«n vµ ®i Óm trung b×nh, ghi chó xÕp l o¹ i theo ®i Óm trung b×nh: trung b×nh 0 . 6 < , kh¸ 9 , 8 6 ÷ , gi ái 0 , 9 > . Danh s¸ ch xÕp theo
thø tù tõ cao xuèng thÊp dùa theo ®i Óm trung b×nh.
89 90

PARAMETER (N = 15)
I NTEGER I , J , K , D1 (50) , D2 (50) , D3 (50), I D
REAL D , TB (50)
CHARACTER * 20 TEN (50) , TENTG
C NhËp hä tª n, ®i Óm thi vµ tÝnh ®i Óm trung b×nh
I = 0
7 I = I + 1
PRI NT * , ' NHAP SI NH VI EN ' , I
READ (* , '(A20)') TEN(I )
READ * , D1 (I ) , D2 (I ) , D3 (I )
TB (I ) = (D1 (I ) + D2 (I ) + D3 (I )) / 3.0
I F (I .LT. N) GO TO 7
C S¾p xÕp danh s¸ ch theo thø tù ®i Óm trung b×nh gi ¶m dÇn

I = 1
2 K = I
J = I + 1
1 I F (TB(J) .GT. TB(K)) K = J
J = J + 1
I F (J .L E. N) GO TO 1
TENTG = TEN (I )
TEN (I ) = TEN (K)
TEN (K) = TENTG
I D = D1 (I )
D1 (I ) = D1 (K)
D1 (K) = I D
I D = D2 (I )
D2 (I ) = D2 (K)
91 92
D2 (K) = I D
I D = D3 (I )
D3 (I ) = D3 (K)
D3 (K) = I D
D = TB (I )
TB (I ) = TB (K)
TB (K) = D
I = I + 1
I F (I .LT. N) GO TO 2
C I n ti ª u ®Òdanh s¸ ch l ª n mµn h×nh
PRI NT 100
100 FORMAT (21X , 'BA NG DI EM' // , 1X , 'TT' , 7X,
* 'HO TEN' ,9X , 'D1 D2 D3 TB XEP LOAI ' /)
C I n tõng si nh vi ª n theo danh s¸ ch
60 FORMAT (1X, I 2, 1X, A20, I 3, I 3, I 3, F5.1, 1X, 'GI OI ')
50 FORMAT (1X, I 2, 1X, A20, I 3, I 3, I 3, F5.1, 1X, 'KHA')
40 FORMAT (1X, I 2, 1X, A20, I 3, I 3, I 3, F5.1, 1X,
* 'TRUNG BI NH')
I = 1
3 I F (TB (I ) .LT. 9.0) THEN
I F (TB (I ) .L T. 6.0) THEN
PRI NT 40 , I , TEN (I ) , D1 (I ) , D2 (I ) , D3 (I ) , TB (I )
EL SE
PRI NT 50 , I , TEN (I ) , D1 (I ) , D2 (I ) , D3 (I ) , TB (I )
END I F
93 94
ELSE
PRI NT 60 , I , TEN (I ) , D1 (I ) , D2 (I ) , D3 (I ) , TB (I )
END I F
I = I + 1
I F (I . LE. N) GO TO 3
STOP
END

ThÝdô 6: Vi Õt ch­¬ng t r×nh t Ýnh t Ých ph©n x¸ c ®Þnh:

·
b
a
x x I sin
2

theo c«ng thøc h×nh thang ví i sai sè − · b a , ; 0001 , 0 ε cho tr­í c.
Gî i ý: ë b­í c xÊp xØ®Çu, xem sè h×nh thang con 1 · n , tÝch ph©n b»ng
) ( ) ( 5 , 0
1
a b y y S
b a
− + · .
B­í c xÊp xØsau t¨ ng sè h×nh thang con n thª m 1 vµ tÝch ph©n b»ng (h×nh 4.3)


− + ·
+ +
n
i
i i i i
x x y y S ) ( ) ( 5 , 0
1 1 2

Ti Õp tôc t¨ ng n ®Õn khi ε < − S
2 1
S .
a x ·
1
b x
n
·
2
x
1
y
2
y
) (x f y ·




H×nh 4.3. Mi nh häa s¬ ®å tÝnh
gÇn ®óng tÝch ph©n x¸ c ®Þnh theo
ph­¬ng ph¸ p h×nh thang
95 96


EPSI L = 0.0001

A = 0.0

B = 3.141593

S1 = 0.5 * (A * * 2 * SI N (A) + B * * 2 * SI N (B)) * (B−A)

SOHI NH = 2.0
7 DX = (B−A) / SOHI NH
HI NH = 1.0
X1 = A
Y1 = X1 * * 2 * SI N (X1)
S2 = 0.0
5 X2 = X1 + DX
Y2 = X2 * * 2 * SI N (X2)
S2 = S2 + 0.5* (Y1 + Y2) * DX
I F (HI NH .LT. SOHI NH) THEN
HI NH = HI NH + 1.0
X1 = X2
Y1 = Y2
GOTO 5
END I F
I F (ABS (S2−S1) .GT. EPSI L ) THEN
SOHI NH = SOHI NH + 1.0
S1 = S2
GOTO 7
END I F
PRI NT 3 , S2
97 98
3 FORMAT (1X , 'TI CH PHAN BANG', F15.4)
END
ThÝdô 7: V ßng l Æp ®ÓtÝnh tæng chuçi . B×nh ph­¬ng cña si n cña gãc x tÝnh theo c«ng thøc chuçi nh­ sau:


·
− +

· − + − ·
1
2 1 2 1 6 5 4 3
2 2
! ) 2 (
2 ) 1 (
...
! 6
2
! 4
2
sin
n
n n n
n
x x x
x x




.
H· y vi Õt ch­¬ng tr×nh ®äc vµo mét gãc x b»ng ®é, ®æi ra ra®i an, tÝnh vµ i n ra b¶ng so s¸ nh kÕt qu¶ tÝnh x
2
sin theo c«ng thøc nµy ví i nh÷ng sè sè h¹ ng chuçi n l Î
tõ 1 ®Õn 15. ThÊy r»ng sè h¹ ng ®Çu khi 1 · n l µ
2
x , mçi sè h¹ ng ti Õp sau b»ng sè h¹ ng tr­í c nh©n ví i
) 1 2
2
2


n ( n
x

.
Trong thÝdô nµy, ta øng dông ph­¬ng ph¸ p chi a khèi bµi to¸ n vµ chi ti Õt ho¸ tõng khèi nh­ ®· tr×nh bµy trong môc 4.1 ®Óx©y dùng thuËt gi ¶i vµ di Ôn ®¹ t thuËt gi ¶i
®ã b»ng l ­u ®å, sau ®ã dÉn ch­¬ng tr×nh Fortran.
ThÊy r»ng bµi to¸ n cã thÓchi a thµnh ba khèi sau:
Khèi 1: NhËp gi ¸ trÞgãc x .
Khèi 2: I n ti ª u ®Òcña b¶ng kÕt qu¶.
Khèi 3: TÝnh gi ¸ trÞ x
2
sin theo c«ng thøc chuçi vµ i n ra kÕt qu¶ kh¶o s¸ t ví i sè sè h¹ ng chuçi tõ 1 ®Õn 15.
B©y gi ê ta ph©n tÝch chi ti Õt tõng khèi ®ÓdÉn l ­u ®å thùc hi Ön trong mçi khèi .
ThÊy r»ng khèi 1 cã thÓchi ti Õt ho¸ thµnh ba b­í c con: V×c«ng thøc khai tri Ón chuçi trª n ®©y héi tô nhanh ®èi ví i nh÷ng gãc x nhá, do ®ã nÕu x n»m trong
kho¶ng:
180 90 ≤ < x ta thay b»ng gãc x − 180 ,
nÕu x n»m trong kho¶ng:
270 180 ≤ < x ta thay b»ng gãc 180 − x ,
nÕu x n»m trong kho¶ng:
360 270 ≤ < x ta thay b»ng gãc 360 − x .
Sau ®ã ®æi x thµnh ra®i an (h×nh 4.4).
99 100

Read X
X > 270
F
X = X − 360
X >180
X =X − 180
T
T
F
X = 180 − X
X > 90
T
F
X = X*3.1415 / 180
K
h
è
i

1






↓ ↓
↓ ↓ ↓



H×nh 4.4. L­u ®å khèi 1 (thÝdô 7)

Pri nt ti ª u ®Òb¶ng
Pri nt ti ª u ®Òcét
K
h
è
i

2



H×nh 4.5. L­u ®å khèi 2 (thÝdô 7)
101 102
Ta thÊy khèi 2 chØgåm hai vi Öc tuÇn tù l µ i n dßng ti ª u ®Òcña b¶ng kh¶o s¸ t, i n c¸ c ti ª u ®Ò®Çu b¶ng (h×nh 4.5).

S = 0
N = 1
THEM = X
2

S = S + THEM
N l Î
Pri nt N, S, si n
2
X
T
F
N = N + 1
THEM = THEM *2 * X
2
/ (N* (2N−1)
N>15
T
F






K hèi 3

H×nh 4.6. L­u ®å khèi 3 (thÝdô 7)
Khèi 3 l µ phøc t¹ p nhÊt cÇn ®­î c chi ti Õt ho¸ mét c¸ ch tèi ®a. Ta thÊy khèi nµy gåm c¸ c b­í c cô thÓsau:
• G¸ n 0 cho bi Õn S (gi ¸ trÞkhëi t¹ o cña x
2
sin cÇn tÝnh).
• G¸ n 1 cho N (b¾t ®Çu xÐt sè h¹ ng thø nhÊt).
• G¸ n
2
x cho bi Õn THEM (gi ¸ trÞcña sè h¹ ng thø nhÊt).
• Chõng nµo 15 ≤ N thùc hi Ön tuÇn tù 4 b­í c sau:
♦ Céng sè h¹ ng (THEM) vµo bi Õn S.
103 104
♦ NÕu N l Î i n gi ¸ trÞ x S N
2
sin , , (tÝnh theo hµm chuÈn).
♦ T¨ ng thª m 1 ®¬n vÞcho N .
♦ TÝnh l ¹ i bi Õn THEM b»ng c¸ ch nh©n chÝnh nã ví i
) 1 2
2
2


N ( N
X
.
Gi ¶ tr×nh nµy t­¬ng ®­¬ng ví i l ­u ®å khèi trª n h×nh 4.6.
Nh­ vËy, ta ®· chi ti Õt ho¸ tÊt c¶ c¸ c b­í c trong ba khèi d­í i d¹ ng c¸ c l ­u ®å. C«ng vi Öc cßn l ¹ i ®¬n gi ¶n l µ g¾n c¬ häc ba l ­u ®å l ¹ i ta ®­î c l ­u ®å chung cña toµn
thuËt to¸ n. Tõ ®ã dÔdµng chuyÓn sang ch­¬ng tr×nh Fortran d­í i ®©y:

PRI NT * , ' HAY CHO MOT GOC BANG DO'

READ * , X

I F (X .GT. 90.0) THEN

I F (X .GT. 270.0) THEN

X = X − 360.0

EL SE I F (X .GT. 180.0) THEN

X = X − 180.0

EL SE
X = 180.0 − X
END I F
END I F
X = X * 3.141593 / 180.0
PRI NT 2
2 FORMAT (1X, 35H KHAO SAT CONG THUC BI NH
* PHUONG SI N // , 1X , 2H N, 17H THEO CONG THUC,
* 17H THEO HAM CHUAN)
S = 0.
105 106
N = 1
THEM = X * * 2
5 S = S + THEM
I F (MOD (N , 2) .EQ. 1) PRI NT 4 , N , S , SI N (X) * * 2
4 FORMAT (1X , I 2 , 2F17.7)
N = N + 1
THEM = − THEM * 2.0 * X* * 2 / (N * (2 * N −1))
I F (N .L E. 15) GO TO 5
END
ThÝdô 8: Néi suy tuyÕn t Ýnh chuçi sè l i Öu quan tr¾c. Gi ¶ sö cã nh÷ng sè l i Öu quan tr¾c vÒnhi Öt ®é n­í c bi Ón t¹ i c¸ c tÇng s©u ë ®i Óm cã täa ®é 120
o
K§ -20
o
V B ®­î c
cho trong b¶ng 4.3. LËp ch­¬ng tr×nh nhËp nh÷ng sè l i Öu nµy vµ néi suy gi ¸ trÞnhi Öt ®é cho mét ®é s©u bÊt kú nhËp tõ bµn phÝm, th«ng b¸ o l ª n mµn h×nh kÕt qu¶ néi suy
d­í i d¹ ng nh­ sau:
DO SA U = .... M
NHI ET DO = ..... DO C
Ph©n tÝch bµi to¸ n nµy, ta thÊy cã thÓchi a nã thµnh ba khèi : 1) NhËp tõ bµn phÝm mét gi ¸ trÞ®é s©u t¹ i ®ã cÇn néi suy nhi Öt ®é; 2) NhËp sè l i Öu vÒ®é s©u vµ nhi Öt ®é
vµo m¸ y tÝnh; 3) Néi suy gi ¸ trÞnhi Öt ®é t¹ i ®é s©u cÇn t×m vµ i n kÕt qu¶ l ª n mµn h×nh.
Khèi thø nhÊt rÊt ®¬n gi ¶n vµ quen thuéc. § Óthùc hi Ön khèi thø hai ta tæchøc mét vßng l Æp ®ÓtuÇn tù nhËp ®é s©u vµ nhi Öt ®é t¹ i c¸ c ®i Óm nót (xem l ­u ®å cña khèi
2 trª n h×nh 4.7).
B¶ng 4.3. Ph©n bè nhi Öt ®é n­í c bi Ón (
o
C) theo ®é s©u (m)
§ é s©u 0 5 10 20 30 40 50 60
Nhi Öt ®é 24,31 24,26 24,20 24,18 24,13 24,05 23,98 23,89
§ é s©u 70 80 90 100 120 140 160 180
Nhi Öt ®é 23,87 23,57 23,14 22,74 21,31 20,03 18,49 17,58
§ é s©u 200 220 240 260 280 300 350 400
Nhi Öt ®é 16,66 15,61 14,73 13,97 13,47 12,93 11,40 10,18
107 108
§ é s©u 500 600 700 800 900 1000 1200 1400
Nhi Öt ®é 9,39 8,56 8,49 7,83 7,27 6,71 6,16 5,44





H×nh 4.7. L­u ®å khèi 2 (thÝdô 8) - nhËp
chuçi ®é s©u vµ nhi Öt ®é

N = 32
K = 1
K = K + 1
K > N
T



K
h
è
i

2
§ äc H (K)
§ äc T (K)

F

B©y gi ê ta cô thÓhãa thª m khèi thø 3 vµ sau ®ã dÉn ch­¬ng tr×nh Fortran hoµn chØnh cña bµi to¸ n nµy.
Nh­ ®· thÊy, c¸ c gi ¸ trÞquan tr¾c nhi Öt ®é ®­î c cho chØt¹ i 32 ®é s©u gäi l µ 32 ®i Óm nót. Muèn néi suy gi ¸ trÞnhi Öt ®é t¹ i ®é s©u bÊt kú ta cÇn t×m xem ®é s©u ®ã
n»m gi ÷a hai nót nµo. Gäi ®é s©u cÇn néi suy nhi Öt ®é l µ
0
h . Gi ¶ sö ®é s©u nµy n»m gi ÷a c¸ c ®é s©u nót
i
h vµ
1 + i
h , tøc tháa m· n bÊt ®¼ng thøc kÐp:
1 0 +
≤ ≤
i i
h h h ,
trong ®ã i cã thÓbi Õn thi ª n tõ 1 ®Õn 31. Nh­ vËy, ®Ót×m i , ta ph¶i gi ¶ sö 1 · i vµ ki Óm tra bÊt ®¼ng thøc kÐp trª n ®©y. NÕu bÊt ®¼ng thøc kh«ng tháa m· n, th×ta t¨ ng i
l ª n mét ®¬n vÞvµ ti Õp tôc cho tí i khi bÊt ®¼ng thøc tháa m· n.
109 110

I = 1

T0 = T(I) + (T(I +1)-T(I)) × (H0 - H(I)) / (H(I +1)-H(I))
H (I +1) ≥ H0 ≥ H (I)
T



K
h
è
i

3

I = I + 1


In H0, T0
F

H×nh 4.8. L­u ®å khèi 3 (thÝdô 8) - néi suy gi ¸ trÞnhi Öt ®é vµ i n kÕt qu¶
Khi t×m ®­î c i , gi ¸ trÞ
0
t cÇn néi suy cã thÓtÝnh theo c«ng thøc néi suy tuyÕn tÝnh nh­ sau:
i i
i i i
i
h h
h h t t
t t

− −
+ ·
+
+
1
0 1
0
) ( ) (
.
TÊt c¶ nh÷ng ®i Òu võa ph©n tÝch ®­î c thÓhi Ön trª n l ­u ®å khèi ë h×nh 4.8. D­í i ®©y l µ ch­¬ng tr×nh cña bµi to¸ n
I NTEGER N, I , K
REAL H0, T0, H (40), T (40)
C I n l êi nh¾c vµ nhËp ®é s©u cÇn néi suy nhi Öt ®é
PRI NT * , ' NHAP DO SAU XAC DI NH NHI ET DO'
READ * , H0
C I n l êi nh¾c vµ nhËp 32 cÆp gi ¸ trÞ®é s©u vµ nhi Öt ®é
N = 32
111 112
K = 1
5 PRI NT * , ‘ NHAP DO SAU VA NHI ET DO TANG ‘ , K
READ * , H(K), T(K)
K = K +1
I F (K .GT. N) GOTO 4
GOTO 5
C Néi suy gi ¸ trÞnhi Öt ®é t¹ i ®é s©u H0
4 I = N - 1
I F (H0 .GT. H(N)) GOTO 1
I = 1
2 I F (H0 .GE. H (I ) .AND. H0 .L E. H (I +1)) GOTO 1
I = I + 1
GOTO 2
1 T0 = T(I ) + (T(I +1)-T (I ))* (H0-H(I )) / (H(I +1)-H(I ))
PRI NT 3, H0
PRI NT 6, T0
3 FORMAT (1X, ‘ DO SAU = ‘ , F6.1, ‘ M’ )
6 FORMAT (1X,’ NHI ET DO = ‘ , F5.1, ’ DO C’ )
END
Qua thÝdô ë môc 4.1.3 vµ nh÷ng thÝdô ë ch­¬ng nµy ta thÊy vi Öc ¸ p dông quy tr×nh 5 b­í c gi ¶i bµi to¸ n vµ chi Õn l ­î c chi a khèi vµ chi ti Õt ho¸ tõng khèi ®Óph¸ t
tri Ón thuËt gi ¶i l µ mét c«ng cô l Ëp tr×nh rÊt hi Öu qu¶. Bµi to¸ n dï l í n, cã cÊu tróc phøc t¹ p còng trë nª n s¸ ng tá, trùc quan.
Tõ thêi ®i Óm nµy si nh vi ª n cÇn rÌ n l uyÖn cho m×nh thãi quen ¸ p dông ph­¬ng ph¸ p trª n ngay c¶ ví i nh÷ng bµi tËp ®¬n gi ¶n còng nh­ ví i nh÷ng bµi to¸ n t­¬ng ®èi
phøc t¹ p khi thi Õt kÕthuËt gi ¶i . Cßn chän c«ng cô gi ¶ tr×nh hay l ­u ®å l µ tuú thÝch.
Bµi t Ëp
1. H· y thÓhi Ön b»ng gi ¶ tr×nh hoÆc l ­u ®å thuËt to¸ n s¾p xÕp c¸ c phÇn tö cña m¶ng mét chi Òu theo thø tù gi ¶m dÇn.
2. Cho c¸ c gi ¸ trÞ:
.TRUE. DONE 1 I 2 . 1 B 2 . 2 A · · − · ·
113 114
X¸ c ®Þnh gi ¸ trÞcña c¸ c bi Óu thøc l «gi c sau ®©y:
1) A . L T. B2) A − B .GE. 6.5
3) I . NE. 5 4) A + B .GE. B
5) I . L E. I −5 6) .NOT. (A . EQ. 2 * B)
7) (A .L T. 10.0) . AND. (B .GT. 5.0)
8) (ABS (I ) .GT. 2) . OR. DONE
9) A . L T. B .NEQV . DONE
3. Vi Õt ch­¬ng tr×nh tÝnh gi ¸ trÞcña y theo c«ng thøc
¹
'
¹
>

·
, 0 khi
; 0 khi

3
2
x x
x x
y
ví i x cho tr­í c.
4. V i Õt ch­¬ng tr×nh ®äc tõ bµn phÝm mét trÞsè nhi Öt ®é Cel si us, l i Öt kª trª n mµn h×nh ba ph­¬ng ¸ n chuyÓn ®æi : sang ®é Fahrenhei t, Kel vi n vµ Ranki n. Theo ng­êi
dï ng chØ®Þnh ph­¬ng ¸ n chuyÓn ®æi mµ i n ra nhi Öt ®é ®· cho vµ kÕt qu¶ chuyÓn ®æi kÌ m c¸ c ký hi Öu nhi Öt ®é t­¬ng øng. C¸ c c«ng thøc chuyÓn ®æi nh­ sau:
K R
C F
R F
5
9
F 32
5
9
R 67 , 459
T T
T T
T T
·
+ ·
− ·
o
o

5. Vi Õt ch­¬ng tr×nh tÝnh tÝch ph©n

·
15
1
) ( dx x y I ví i hµm ) (x y cho d­í i d¹ ng b¶ng c¸ c gi ¸ trÞthùc nghi Öm nh­ trong b¶ng 4.4.
B¶ng 4.4
x 1,0 2,1 3,0 3,9 4,8 6,2 7,1 7,8
y
3,3 4,7 7,3 8,7 11,3 12,7 15,3 16,7
x 9,4 10,1 11,3 12,1 13,5 13,9 15,0
y
19,3 20,7 23,3 24,7 27,3 28,7 31,3
6. V i Õt ch­¬ng tr×nh cho phÐp ®äc vµo tõ bµn phÝm mét trÞsè cña x vµ x¸ c ®Þnh trÞsè cña hµm y b»ng c¸ ch néi suy tuyÕn tÝnh theo b¶ng gi ¸ trÞthùc nghi Öm (thÝdô
b¶ng 4.4).
115 116
7. HÖsè nhí t ph©n tö (
1 1 − −
⋅ ⋅ s cm g ) cña n­í c bi Ón phô thuéc vµo nhi Öt ®é t (°) vµ ®é muèi S (%o) theo b¶ng 4.5. Vi Õt ch­¬ng tr×nh néi suy tuyÕn tÝnh b¶ng nµy
cho mét cÆp trÞsè bÊt kú cña
o
t vµ S .
8. Vi Õt ch­¬ng tr×nh tÝnh sè π theo c«ng thøc khai tri Ón chuçi sau ®©y ví i sai sè kh«ng qu¸ 0,0001:
....
9
1
7
1
5
1
3
1
1
4
+ − + − ·
π

B¶ng 4.5
§ é muèi 0° 5° 10° 15° 20° 25° 30°
0 17,94 15,19 13,10 11,45 10,09 8,95 8,00
5 18,06 15,28 13,20 11,54 10,18 9,08 8,09
10 18,18 15,39 13,28 11,68 10,27 9,18 8,17
15 18,30 15,53 13,41 11,77 10,40 9,26 8,27
20 18,41 15,66 13,57 11,90 10,47 9,35 8,34
25 18,53 15,79 13,73 12,03 10,58 9,48 8,43
30 18,64 15,93 13,84 12,12 10,68 9,58 8,52
35 18,83 16,07 14,00 12,23 10,82 9,67 8,59
9. Vi Õt ch­¬ng tr×nh cho phÐp l i ª n tôc nhËp tõ bµn phÝm hai sè nguyª n bÊt kú, t×m vµ i n l ª n mµn h×nh ­í c sè chung l í n nhÊt cña nh÷ng sè ®ã d­í i d¹ ng th«ng b¸ o:
USCL N CUA CAC SO: 36 VA 24 BANG 12
vµ kÕt thóc khi nµo ng­êi dï ng nhËp vµo hai sè b»ng nhau hoÆc mét trong hai sè b»ng 1.
10. LËp l ­u ®å thuËt gi ¶i ®Ógi ¶i gÇn ®óng ph­¬ng tr×nh ) (x f x · b»ng ph­¬ng ph¸ p l Æp Si edel . XÊp xØban ®Çu
0
x vµ sai sè cho phÐp ε ®­î c cho tr­í c. NÕu t×m
®­î c nghi Öm ví i ®é chÝnh x¸ c ®· cho th×i n gi ¸ trÞnghi Öm kÌ m theo sè b­í c l Æp, cßn nÕu sau 100 l Çn l Æp mµ ch­a nhËn ®­î c nghi Öm th×th«ng b¸ o l ª n mµn h×nh dßng ch÷
'KHONG TI M DUOC NGHI EM'. (Gî i ý: Theo ph­¬ng ph¸ p l Æp Sei del , ng­êi ta thÕgi ¸ trÞ
0
x tuú chän vµo bi Óu thøc ) (x f ë vÕph¶i cña ph­¬ng tr×nh ) (x f x · ®Ó
tÝnh ra gi ¸ trÞ −
1
x gäi l µ xÊp xØbËc 1, sau ®ã ki Óm tra nÕu kh¸ c nhau gi ÷a
1
x vµ
0
x l í n h¬n sai sè cho phÐp ε th×gi ¸ trÞ
1
x l ¹ i ®­î c thÕvµo vÕph¶i vµ ti Õp tôc tÝnh
2
x
(xÊp xØbËc 2)..., qu¸ tr×nh nµy ti Õp di Ôn cho ®Õn khi chª nh l Öch gi ÷a hai b­í c xÊp xØl i Òn nhau kh«ng l í n h¬n ε th×ng­êi ta chÊp nhËn gi ¸ trÞxÊp xØcuèi cï ng l µm
nghi Öm cña ph­¬ng tr×nh ) (x f x · .

117 118
Ch­¬ng 5
CÊu tróc l Æp ví i l Önh DO
Trong ch­¬ng 4 ®· xÐt sù ®i Òu khi Ón ®­î c thùc hi Ön th«ng qua nh÷ng l Önh cho phÐp ch­¬ng tr×nh chän nh÷ng nh¸ nh kh¸ c nhau ®Óthùc hi Ön. § ång thêi , ta còng ®·
mét sè l Çn sö dông kÕt hî p l Önh I F l «gi c vµ l Önh chuyÓn ®i Òu khi Ón v« ®i Òu ki Ön GOTO ®Ótæchøc nh÷ng vßng l Æp d¹ ng:
n I F (Bi Óu thøc l «gi c) THEN
L Önh 1
L Önh 2
. . .
L Önh m
GOTO n
END I F
CÊu tróc nµy gäi l µ vßng l Æp cã ®i Òu ki Ön (Whi l e L oop): Khi vµ chõng nµo bi Óu thøc l «gi c trong l Önh I F cã gi ¸ trÞ.TRUE. th×nhãm l Önh tõ l Önh 1 ®Õn l Önh m l Çn
l ­î t thùc hi Ön, nh­ng l Önh GOTO ë cuèi l u«n l u«n chuyÓn ®i Òu khi Ón l ª n nh· n n vµ h×nh thµnh vßng l Æp. V ßng l Æp nµy cã nh÷ng ®Æc ®i Óm sau:
1) Tr­êng hî p bi Óu thøc l «gi c cã gi ¸ trÞ.FALSE. ngay tõ ®Çu, th×qu¸ tr×nh l Æp sÏ kh«ng x¶y ra;
2) Trong nhãm l Önh tõ l Önh 1 ®Õn l Önh m bª n trong vßng l Æp nhÊt thi Õt ph¶i cã mét l Önh nµo ®ã l µm thay ®æi gi ¸ trÞcña bi Óu thøc l «gi c thµnh .FAL SE., vËy sè l Çn
l Æp phô thuéc vµo gi ¸ trÞkhëi ®Çu cña bi Óu thøc l «gi c vµ sù bi Õn ®æi gi ¸ trÞcña nã bª n trong chÝnh vßng l Æp.
Trong bµi nµy ta xÐt mét cÊu tróc l Æp kh¸ c mµ ®i Òu ki Ön vµ sè l Çn l Æp ®­î c x¸ c ®Þnh ngay tõ khi b¾t ®Çu qu¸ tr×nh l Æp ví i vi Öc sö dông vßng l Æp DO (DO L oop).
Trong ch­¬ng ti Õp sau sÏ xÐt mét tÝnh n¨ ng quan träng cña vßng l Æp DO, gäi l µ vßng l Æp Èn, ®Ótæchøc nhËp, xuÊt c¸ c bi Õn cã chØsè rÊt hay gÆp trong thùc ti Ôn.
5.1. Vßng l Æp DO
5.1.1. Có ph¸ p cña l Önh DO vµ vßng l Æp DO
D¹ ng tæng qu¸ t cña l Önh DO nh­ sau:
DO inc , lim , ini ind n ·
trong ®ã h»ng n l µ nh· n cña l Önh kÕt thóc cña vßng l Æp, − ind l µ mét bi Õn sè ®­î c dï ng nh­ l µ chØsè ®Õm vßng l Æp, − ini gi ¸ trÞ®Çu g¸ n cho chØsè ®Õm, − lim gi ¸ trÞ
119 120
cuèi dï ng ®Óx¸ c ®Þnh khi nµo vßng l Æp DO kÕt thóc vµ − inc gi a sè, gi ¸ trÞ®­î c céng vµo chØsè ®Õm mçi l Çn vßng l Æp thùc hi Ön.
Nh÷ng gi ¸ trÞ®Çu, gi ¸ trÞcuèi vµ gi a sè gäi l µ c¸ c tham sè cña vßng l Æp. NÕu trong l Önh DO kh«ng ghi gi a sè th×ngÇm ®Þnh l µ 1. Khi gi ¸ trÞcña chØsè ®Õm l í n h¬n
gi ¸ trÞcuèi th×®i Òu khi Ón ®­î c chuyÓn cho l Önh ®øng sau l Önh kÕt thóc vßng l Æp. LÖnh kÕt thóc vßng l Æp th­êng dï ng l µ l Önh CONTI NUE, cã d¹ ng tæng qu¸ t l µ
n CONTI NUE
trong ®ã nh· n n phï hî p ví i nh· n mµ l Önh DO ë trª n ®· chØ®Þnh.
VËy d¹ ng tæng qu¸ t cña vßng l Æp DO cã thÓvi Õt nh­ sau:

DO inc lim ini ind n , , ·
L Önh 1
. . .
L Önh m
n CONTI NUE
Ta l Êy thÝdô gi ¶i bµi to¸ n tÝnh tæng cña 50 sè nguyª n d­¬ng ®Çu ti ª n

·
+ + + + ·
50
1
50 49 . . . 2 1
i
i
®Ómi nh häa vßng l Æp DO vµ so s¸ nh nã ví i vßng l Æp Whi l e mµ ta ®· xÐt ë bµi tr­í c:
V ßng l Æp DO V ßng l Æp Whi l e
SUM = 0.0 SUM = 0.0

DO 10 NUM = 1, 50 NUM = 1

SUM = SUM + NUM 10 I F (NUM .L E. 50) THEN
10
CONTI NUE SUM = SUM + NUM

NUM = NUM + 1

GO TO 10

END I F
121 122
Trong vßng l Æp DO trª n ®©y chØsè ®Õm NUM ®­î c khëi x­í ng b»ng 1. Vßng ti Õp tôc l Æp cho ®Õn khi gi ¸ trÞcña NUM l í n h¬n 50. V×tham sè thø ba bá qua nª n
NUM tù ®éng t¨ ng l ª n 1 ë cuèi mçi l Çn l Æp. Ta thÊy r»ng vßng l Æp DO vi Õt ng¾n gän h¬n vßng l Æp Whi l e, nh­ng c¶ hai tÝnh cï ng mét gi ¸ trÞcña bi Õn SUM. Tuy nhi ª n,
trong vßng l Æp Whi l e ë mçi l Çn l Æp bi Óu thøc l «gi c l u«n ph¶i ®­î c ­í c l ­î ng l ¹ i v×mçi l Çn bi Õn NUM ®­î c thay bëi gi ¸ trÞmí i .. Trong khi ®ã ë vßng l Æp DO sè l Çn l Æp ®·
®­î c tÝnh tr­í c trong l Önh DO. § ã l µ sù kh¸ c nhau c¬ b¶n cña hai l o¹ i vßng l Æp.
Ng­êi ta còng cã thÓdï ng có ph¸ p sau ®©y cho vßng l Æp DO:

DO inc ini ind , , lim ·
L Önh 1
. . .
L Önh m
END DO
5.1.2. Nh÷ng quy t¾c cÊu tróc vµ t hùc hi Ön vßng l Æp DO
1) ChØsè ®Õm ph¶i l µ mét bi Õn sè, bi Õn ®ã cã thÓl µ ki Óu nguyª n hoÆc thùc, nh­ng kh«ng thÓl µ bi Õn cã chØsè.
2) C¸ c tham sè cña vßng DO cã thÓl µ h»ng, bi Õn hay bi Óu thøc nguyª n hoÆc thùc. Gi a sè cã thÓl µ sè d­¬ng, sè ©m, nh­ng kh«ng thÓb»ng kh«ng.
3) Vßng DO cã thÓdï ng bÊt kú l Önh thùc hi Ön nµo kh«ng ph¶i l µ mét l Önh chuyÓn ®i Òu khi Ón, l Önh I F hay mét l Önh DO kh¸ c l µm l Önh cuèi vßng. LÖnh CONTI NUE
l µ mét l Önh thùc hi Ön chuyª n dï ng l µm l Önh cuèi vßng; mÆc dï cã thÓdï ng nh÷ng l Önh kh¸ c, nh­ng nãi chung nª n dï ng l Önh CONTI NUE ®ÓchØcuèi vßng l Æp mét c¸ ch
t­êng mi nh.
4) Sù ki Óm tra kÕt thóc l Æp thùc hi Ön ë ®Çu vßng l Æp. NÕu gi ¸ trÞ®Çu cña chØsè ®Õm l í n h¬n gi ¸ trÞcuèi vµ gi a sè l µ sè d­¬ng th×sù l Æp kh«ng di Ôn ra, c¸ c l Önh bª n
trong vßng l Æp bÞbá qua vµ ®i Òu khi Ón chuyÓn tí i l Önh ®øng sau l Önh cuèi cï ng cña vßng l Æp.
5) Kh«ng ®­î c thay ®æi gi ¸ trÞcña chØsè ®Õm b»ng mét l Önh nµo kh¸ c bª n trong vßng DO trong khi thùc hi Ön vßng l Æp.
6) Sau khi vßng l Æp ®· b¾t ®Çu thùc hi Ön th×nh÷ng thay ®æi c¸ c gi ¸ trÞcña c¸ c tham sè kh«ng cã ¶nh h­ëng g×tí i sù l Æp.
7) NÕu gi a sè l µ ©m, sù l Æp sÏ kÕt thóc khi gi ¸ trÞchØsè ®Õm nhá h¬n gi ¸ trÞcuèi .
8) Ta cã thÓtho¸ t ra khái vßng DO tr­í c khi nã kÕt thóc l Æp. Khi ®ã gi ¸ trÞcña chØsè ®Õm sÏ b»ng gi ¸ trÞngay tr­í c khi tho¸ t. (Nh­ng nãi chung kh«ng nª n l µm
®i Òu nµy. NÕu ta muèn tho¸ t ra khái vßng l Æp tr­í c khi nã kÕt thóc mét c¸ ch tù nhi ª n, th×ta cÊu tróc l ¹ i vßng l Æp theo ki Óu vßng l Æp Whi l e ®Ógi ÷ tÝnh cÊu tróc cña ch­¬ng
tr×nh).
9) Thùc hi Ön xong vßng l Æp, chØsè ®Õm chøa mét gi ¸ trÞv­î t qu¸ gi ¸ trÞcuèi .
10) Bao gi ê còng ®i vµo vßng l Æp th«ng qua l Önh DO ®Óvßng l Æp ®­î c khëi x­í ng mét c¸ ch ®óng ®¾n. Kh«ng bao gi ê ®­î c dï ng l Önh GO TO chuyÓn tõ bª n ngoµi
123 124
vµo bª n trong vßng DO.
11) Sè l Çn l Æp cã thÓtÝnh b»ng c«ng thøc
1
inc
ini lim
+
]
]
]

-

trong ®ã dÊu ngoÆc vu«ng chØsù c¾t bá thËp ph©n cña th­¬ng sè. NÕu gi ¸ trÞnµy ©m th×sù l Æp kh«ng x¶y ra.
5.1.3. ThÝdô øng dông vßng l Æp DO
ThÝdô 9: L Ëp vßng l Æp b»ng l Önh DO. LËp b¶ng gi ¸ trÞcña ®a thøc 5 , 4 3
2
+ t trª n ®o¹ n t tõ 1 ®Õn 10 ví i b­í c 1 · ∆t .
PRI NT * , ' POLYNOMI AL MODEL'
PRI NT *
PRI NT * , 'TI ME POLYNOMI AL'
DO 15 I = 1, 10
POLY = 3. * REAL (I ) * * 2 + 4.5
PRI NT 10 , I , POLY
10 FORMA T (1X, I 2, 8X, F6.2)
15 CONTI NUE
END
ThÝdô 10: T×m phÇn tö cùc ®¹ i cña chuçi sè
10 2 1
..., , , b b b . Ta gi ¶i bµi to¸ n nµy theo thuËt gi ¶i bi Óu di Ôn bëi gi ¶ tr×nh sau:

1) ví i i tõ 1 ®Õn 10
nhËp
i
b
2)
1 max
b b ←
3) ví i i tõ 2 ®Õn 10
nÕu
max
b b
i
> th×
i
b b ←
max

4) i n
max
b
Tõ gi ¶ tr×nh nµy dÔdµng chuyÓn thµnh ch­¬ng tr×nh Fortran d­í i ®©y:
125 126
REAL B(10)
DO 2 I = 1, 10
READ * , B (I )
2 CONTI NUE
BMAX = B (1)
DO 3 I = 2, 10
I F (BMAX .LT. B (I )) BMAX = B (I )
3 CONTI NUE
PRI NT * , ' B MAX = ' , BMAX
END
ThÝdô 11: Tæchøc vßng l Æp ví i b­í c sè t hËp ph©n. I n b¶ng gi ¸ trÞhµm ) ( sin x y · t¹ i . 1 ...; ; 2 , 0 ; 1 , 0 ; 0 · x Ta ®­a ra mét bi Õn nguyª n I sao cho bi Õn nµy sÏ nhËn
c¸ c gi ¸ trÞ1, 2, ..., 11 t­¬ng øng ví i . 1 ...; ; 2 , 0 ; 1 , 0 ; 0 · x Khi ®ã ) 1 ( 1 , 0 − · i x .
DO 17 I = 1, 11
X = 0.1 * (I − 1)
Y = SI N (X)
PRI NT 10 , X, Y
10 FORMAT (20X, F4.2, 10X, E10.3)
17 CONTI NUE
END
H· y l ­u ý r»ng ë ®©y ta ®· tr¸ nh sö dông vßng l Æp DO ví i c¸ c tham sè thùc nh­:
DO 15 X = 0.0 , 1.0 , 0.1
®Óphßng ngõa hi Ön t­î ng c¾t trong m¸ y tÝnh. Gi ¶ sö r»ng gi ¸ trÞ0.1 ®­î c l ­u nh­ mét gi ¸ trÞh¬i nhá h¬n 0.1 trong hÖm¸ y tÝnh ®ang dï ng, mçi l Çn thª m 0.1 cho chØsè
®Õm, m¸ y cã thÓthª m Ýt h¬n theo dù ®Þnh. Ngoµi ra, trong tr­êng hî p nµy ta cã thÓthùc hi Ön l Æp qu¸ mÊt mét l Çn theo dù ®Þnh v×gi ¸ trÞgi í i h¹ n cuèi còng cã thÓkh«ng
chÝnh x¸ c b»ng 1.0.
5.2. Vßng DO l ång nhau
Vßng DO cã thÓ®­î c l ång trong mét vßng DO kh¸ c, còng gi èng nh­ cÊu tróc I F l ång trong cÊu tróc I F kh¸ c. Khi tæchøc c¸ c vßng DO l ång h· y tu©n thñ nh÷ng quy
127 128
t¾c sau ®©y:
1) Vßng DO l ång bª n trong kh«ng thÓdï ng chÝnh chØsè ®Õm cï ng ví i vßng DO ngoµi chøa nã.
2) Vßng DO l ång ph¶i kÕt thóc bª n trong vßng DO ngoµi .
3) C¸ c vßng DO ®éc l Ëp nhau cã thÓdï ng cï ng chØsè ®Õm, thËm chÝkhi chóng cï ng n»m trong mét vßng DO ngoµi .
4) Khi mét vßng DO l ång bª n trong mét vßng DO kh¸ c, th×vßng DO trong thùc hi Ön trän vÑn tõng l Çn l Æp ë vßng DO ngoµi .
5) MÆc dï c¸ c vßng DO l ång cã thÓdï ng cï ng mét dßng l Önh cuèi CONTI NUE, nh­ng ta nª n kÕt thóc mçi vßng b»ng mét l Önh CONTI NUE ri ª ng bi Öt ®Ól µm s¸ ng
râ ch­¬ng tr×nh.
D­í i ®©y dÉn mét sè thÝdô vÒc¸ c vßng DO ®óng vµ c¸ c vßng DO sai :
a) Nh÷ng vßng DO ®óng:
DO 15 I = 1, 5
DO 15 I = 1, 5
DO 10 J = 1, 8 DO 10 K = 1, 8
DO 5 K = 2, 10, 2 . . .
. . . 10 CONTI NUE
5 CONTI NUE DO 5 K = 2, 10, 2
10 CONTI NUE . . .
15 CONTI NUE 5 CONTI NUE
15 CONTI NUE
b) Nh÷ng vßng DO sai :
DO 15 I = 1, 5 DO 20 J = 1, 5
DO 10 J = 1, 8 DO 10 J = 1, 8
DO 5 K = 2, 10, 2 . . .
. . . 10 CONTI NUE
10 CONTI NUE DO 15 K = 2, 10, 2
. . . DO 15 K = 2, 10, 2
5 CONTI NUE . . .
15 CONTI NUE 15 CONTI NUE
20 CONTI NUE
ThÝdô 12: Tæchøc vßng DO l ång nhau. Vi Õt ch­¬ng tr×nh nhËp 15 phÇn tö cña m¶ng sè thùc X, s¾p xÕp l ¹ i c¸ c phÇn tö m¶ng theo thø tù gi ¶m dÇn vµ i n l ª n mµn
h×nh c¸ c m¶ng cò vµ mí i thµnh hai cét.
129 130
REAL X(15), Y(15)
N = 15
DO 3 I =1, N
READ * , X (I )
Y (I ) = X (I )
3 CONTI NUE
DO 2 I = 1, N−1
K = I
DO 4 J = I + 1, N
I F (Y (K) .L T. Y (J)) K = J
4 CONTI NUE
I F (K .NE. I ) THEN
TG = Y (I )
Y (I ) = Y (K)
Y (K) = TG
END I F
2 CONTI NUE
DO 7 I = 1, N
PRI NT 5 , X (I ), Y (I )
7 CONTI NUE
5 FORMAT (1X, 2F10.2)
END
Trong thÝdô nµy, ta thÊy cã mÆt ba vßng DO ®éc l Ëp nhau:
DO 3 I =1, N (dßng thø 3)
DO 2 I =1, N−1 (dßng thø 7)
DO 7 I = 1, N (dßng thø 18)
do ®ã, chóng cã thÓdï ng cï ng mét chØsè ®Õm l µ bi Õn I . Bª n trong vßng DO thø hai , ta thÊy xuÊt hi Ön mét vßng DO thø t­:
DO 4 J = I + 1, N (dßng thø 9),
vßng DO nµy l µ vßng DO l ång, nã ph¶i cã chØsè ®Õm ri ª ng vµ ta dï ng l Önh kÕt thóc nã l µ l Önh
131 132
4 CONTI NUE
®ÓnhÊn m¹ nh sù ph©n bi Öt ví i vßng DO ngoµi cã l Önh kÕt thóc l µ
2 CONTI NUE
ThÝdô 13: TÝnh gi ai thõa. Khi sè nguyª n N kh«ng ©m, bi Óu thøc ! N gäi l µ gi ai thõa cña N . C¸ c gi ¸ trÞcña gi ai thõa ®­î c tÝnh theo quy l uËt:

. . .
6 3 2 1 ! 3
2 2 1 ! 2
1 ! 1
1 ! 0
· × × ·
· × ·
·
·

Gi ¸ trÞcña gi ai thõa cña sè nguyª n N còng cßn ®­î c ­í c l ­î ng b»ng c«ng thøc Sti rl i ng cã d¹ ng:
N
e
N
N N
,
`

.
|
· 2 ! π
trong ®ã 718282 , 2 · e . Vi Õt ch­¬ng tr×nh i n c¸ c gi ¸ trÞgi ai thõa cña c¸ c sè nguyª n tõ 0 ®Õn 10 theo c¸ ch tÝnh chÝnh x¸ c vµ theo c«ng thøc ­í c l ­î ng
cña Sti rl i ng.
PRI NT 4
4 FORMAT (1X, 'GI AI THUA CUA CAC SO TU 0 DEN 10'
* //1X, T3, 'N', T12, 'N! ', T16, 'STI RL I NG''S FORMULA' /)
FAC = 1.
DO 7 I = 0, 10
I F (I .GT. 1) FAC = FAC * I
PRI NT 5, I , FAC, SQRT (2.* 3.141593* I )* (I / 2.718282)* * I
5 FORMAT (1X, I 2, F10.0, F20.0)
7 CONTI NUE
END
Trong ch­¬ng tr×nh nµy, v×gi ai thõa ®­î c tÝnh l i ª n tôc ví i c¸ c sè tõ 0 ®Õn 10, nª n gi ai thõa cña mét sè sau ®­î c tÝnh b»ng tÝch cña sè ®ã nh©n ví i gi ai thõa cña sè
tr­í c nã. H· y chó ý c¸ ch dï ng dÊu g¹ ch chÐo ®Ót¹ o xuèng dßng khi i n ti ª u ®Ò: hai dÊu g¹ ch chÐo ®Çu chØ®Þnh cho l Önh PRI NT i n xong dßng ch÷ GI A I THUA CUA
CAC SO TU 0 DEN 10 th×xuèng dßng hai l Çn, sau khi i n dßng ti ª u ®Òcét, dÊu g¹ ch chÐo thø ba g©y xuèng dßng mét l Çn ®ÓchuÈn bÞi n d÷ l i Öu theo dßng l Önh i n trong
vßng l Æp DO. C¸ c ®Æc t¶ T3, T12, T16 trong dßng l Önh 4 FORMAT chØ®Þnh xuÊt ch÷ N ë vÞtrÝ3, N! ë vÞtrÝ12 vµ 13, ch÷ STI RLI NG'S FORMULA b¾t ®Çu ë vÞtrÝthø
133 134
16 cña dßng ti ª u ®Òcét. KÕt qu¶ xuÊt ra cña ch­¬ng tr×nh nµy sÏ cã d¹ ng d­í i ®©y:
GI A TRI GI AI THUA CAC SO TU 0 DEN 10

N N! STI RL I NG'S FORMUL A

0 1. 0.
1 1. 1.
2 2. 2.
3 6. 6.
4 24. 24.
5 120. 118.
6 720. 710.
7 5040. 4980.
8 40320. 39902.
9 362880. 359537.
10 3628800. 3598694.
Bµi tËp
1. TÝnh sè l Çn l Æp trong c¸ c tr­êng hî p dï ng l Önh DO sau ®©y. Gi ¶ thi Õt r»ng c¸ c chØsè ®Õm l µ nh÷ng bi Õn nguyª n:
1) DO 5 I = 1, 8 2) DO 10 COUNT = -4, 4
3) DO 10 K = 15, 3, −1 4) DO 10 TI ME = −5, 15, 3
5) DO 10 TI ME = 50, 250, 25 6) DO 10 I ND = 72, 432, 4
2. X¸ c ®Þnh gi ¸ trÞcña bi Õn nguyª n I DEM sau khi nh÷ng vßng DO d­í i ®©y thùc hi Ön xong. Gi ¶ sö bi Õn nµy ®­î c g¸ n gi ¸ trÞkh«ng tr­í c mçi vßng l Æp.
1) DO 5 I = 1, 8 2) DO 5 I DEX =0, 7
I DEM = I DEM + 1 I DEM = I DEM − 2
5 CONTI NUE 5 CONTI NUE
3) DO 5 NUM = 8, 0, −1 4) DO 5 M = 5, 5
I DEM = I DEM + 2 I DEM = I DEM + (−1) * * M
5 CONTI NUE 5 CONTI NUE
3. Mét hßn ®¸ ®­î c nÐm ví i tèc ®é ban ®Çu v vµ nghi ª ng mét gãc θ so ví i mÆt ®Êt. NÕu bá qua l ùc c¶n ma s¸ t ví i kh«ng khÝth×kho¶ng c¸ ch d theo chi Òu ngang
kÓtõ vÞtrÝban ®Çu vµ ®é cao h (tÝnh b»ng mÐt) cña nã t¹ i thêi gi an t (gi ©y) bi Óu thÞb»ng c¸ c ph­¬ng tr×nh sau:
135 136
,
2
1
sin
, cos
2
t g t v h
t v d
− ·
·
θ
θ

trong ®ã − g gi a tèc träng l ùc (
2
m/s 8 , 9 ). Vi Õt ch­¬ng tr×nh ®äc vËn tèc ban ®Çu vµ gãc vµ sau ®ã i n b¶ng c¸ c kho¶ng c¸ ch vµ ®é cao cña hßn ®¸ ví i thêi gi an c¸ ch nhau
0,25 gi ©y cho tí i khi ®é cao trë thµnh gi ¸ trÞ©m, tøc l óc hßn ®¸ r¬i xuèng mÆt ®Êt.
4. H· y tæchøc l ¹ i c¸ c vßng l Æp trong thÝdô 13 b»ng c¸ ch sö dông kÕt hî p l Önh I F l «gi c vµ l Önh chuyÓn ®i Òu khi Ón v« ®i Òu ki Ön GOTO. Ph©n tÝch sù kh¸ c nhau cña
hai c¸ ch tæchøc vßng l Æp.
5. Gi ¶ sö c¸ c gi ¸ trÞquan tr¾c hai ®¹ i l ­î ng x vµ y ®­î c cho nh­ trong b¶ng 4.4 (trang 79). H· y vi Õt ch­¬ng tr×nh tÝnh c¸ c ®Æc tr­ng thèng kª : trung b×nh
y x
m m , ,
ph­¬ng sai
y x
D D , , ®é l Öch b×nh ph­¬ng trung b×nh
y x
σ σ , , hÖsè t­¬ng quan r gi ÷a hai ®¹ i l ­î ng vµ l Ëp ph­¬ng tr×nh håi quy d¹ ng:
b x a y + · ,
trong ®ã:
r a
x
y
σ
σ
· ,
x y
m a m b − · ,
n
x
m
n
i
i
x

·
·
1
,
2 1
2
1
x
n
i
i
x
m
n
x
D −

·

·
,
x x
D · σ
n
y
m
n
i
i
y

·
·
1
,
2 1
2
1
y
n
i
i
y
m
n
y
D −

·

·
,
x x
D · σ
y x
y x
n
i
i i
m m
n
y x
r
σ σ


·

·
1
1
.
6. Vi Õt ch­¬ng tr×nh tÝnh trÞgÇn ®óng cña tÝch ph©n

·
b
a
xdx x I sin
2

137 138
theo c«ng thøc h×nh thang ví i sai sè kh«ng l í n h¬n 0,0001, x¸ c ®Þnh sè h×nh thang cÇn chi a ®Ó®¹ t sai sè ®ã. Ch­¬ng tr×nh cho phÐp nhËp tõ bµn phÝm c¸ c cËn tÝch ph©n
vµ i n kÕt qu¶ l ª n mµn h×nh thµnh c¸ c dßng nh­ sau (thÝdô nÕu 5 , 0 · a vµ 5 , 1 · b ):
A = 0.5
B = 1.5
SO HI NH THANG = 16
TI CH PHAN BANG = 0.9604
7. Vi Õt ch­¬ng tr×nh cho phÐp nhËp tõ bµn phÝm mét gãc a tÝnh b»ng ®é, ®æi gãc ®ã thµnh ra®i an vµ tÝnh gi ¸ trÞgÇn ®óng cña a cos ví i ®é chÝnh x¸ c tí i 0,0001
theo c«ng thøc khai tri Ón sau ®©y:
...
! 6 ! 4 ! 2
1 cos
6 4 2
+ − + − ·

a a a
a

I n kÕt qu¶ l ª n mµn h×nh thµnh mét dßng nh­ sau (thÝdô):
A = 60.000 (DO) cos A = 0.5000 cos A theo hµm chuÈn = 0.5000
8. Vi Õt ch­¬ng tr×nh cho phÐp nhËp tõ bµn phÝm hai sè nguyª n (nhá h¬n 10) tuÇn tù chØsè dßng vµ sè cét cña mét ma trËn. Sau ®ã tÝnh c¸ c phÇn tö cña ma trËn sao
cho mçi phÇn tö l µ mét sè nguyª n gåm hai ch÷ sè, ch÷ sè ®Çu chØsè thø tù dßng vµ ch÷ sè sau chØsè thø tù cét. I n ma trËn ®ã l ª n gi ÷a mµn h×nh d­í i d¹ ng b¶ng sè th¼ng
dßng, th¼ng cét, thÝdô:
11 12 13 14
21 22 23 24
31 32 33 34
41 42 43 44
51 52 53 54
61 62 63 64


Ch­¬ng 6
139 140
Fi l e d÷ l i Öu vµ tæchøc f i l e d÷ l i Öu trong Fortran
6.1. Kh¸ i ni Öm vÒf i l e d÷ l i Öu vµ t æchøc l ­u t r÷ d÷ l i Öu
ë c¸ c ch­¬ng tr­í c, trong qu¸ tr×nh thùc hi Ön ch­¬ng tr×nh, khi nµo cÇn ta ®· sö dông l Önh REA D ®ÓnhËp th«ng ti n vµo qua bµn phÝm cho ch­¬ng tr×nh xö l ý. ThÝ
dô: khi ch¹ y ch­¬ng tr×nh gi ¶i ph­¬ng tr×nh bËc hai trong thÝdô 1 ë ch­¬ng 4, ta ph¶i nhËp ba hÖsè c b a , , . Ví i mét l ­î ng th«ng ti n kh«ng nhi Òu, thÝdô mét vµi gi ¸ trÞ
sè hay mét vµi ký tù v¨ n b¶n, th×h×nh thøc gi ao ti Õp nµy gi ÷a ng­êi vµ m¸ y l µ b×nh th­êng. Nh­ng khi l µm vi Öc ví i nhi Òu sè l i Öu, sÏ l µ bÊt ti Ön nÕu ph¶i nhËp d÷ l i Öu b»ng
tay nh­ vËy mçi l Çn ch¹ y ch­¬ng tr×nh. ThÝdô, trong bµi to¸ n ®· xÐt ë thÝdô 8 (trang 74) ta ph¶i nhËp tõ bµn phÝm hai chuçi gi ¸ trÞ®é s©u vµ nhi Öt ®é gåm vµi chôc sè
l i Öu ë c¸ c tÇng kh¸ c nhau (64 sè) chØ®Ónéi suy mét gi ¸ trÞnhi Öt ®é. Ngoµi ra, nÕu trong khi ch¹ y ch­¬ng tr×nh mµ ta gâ nhÇm sè l i Öu th×ph¶i ch¹ y l ¹ i ch­¬ng tr×nh tõ ®Çu
vµ ®­¬ng nhi ª n ph¶i nhËp l ¹ i sè l i Öu mét l Çn n÷a. C«ng vi Öc ®ã tá ra rÊt mÖt mái vµ kh«ng tèi ­u.
V×vËy, ng­êi ta th­êng nhËp d÷ l i Öu vµo m¸ y mét l Çn vµ l ­u trong m¸ y (®Üa cøng, ®Üa mÒm...) d­í i d¹ ng c¸ c tÖp (f i l e). Trong tr­êng hî p nµy ng­êi sö dông m¸ y
ph¶i dï ng mét phÇn mÒm so¹ n th¶o nµo ®ã ®ÓnhËp d÷ l i Öu vµo m¸ y vµ l ­u l ¹ i d­í i d¹ ng c¸ c f i l e. Ngoµi ra, d÷ l i Öu (th­êng l µ nh÷ng gi ¸ trÞsè) còng cã thÓdo mét thi Õt bÞ
quan tr¾c cã bé phËn ghi l ­u vµo ®Üa tõ, b¨ ng tõ, æcøng m¸ y tÝnh theo mét quy c¸ ch nµo ®ã sau nµy m¸ y tÝnh cã thÓ®äc ®­î c. D÷ l i Öu còng cã thÓl µ kÕt qu¶ tÝnh to¸ n, xö
l ý cña mét ch­¬ng tr×nh m¸ y tÝnh, sau ®ã ®­î c ghi l ¹ i thµnh f i l e ®Óng­êi sö dông m¸ y xem nh­ l µ kÕt qu¶ tÝnh to¸ n ®Óph©n tÝch, nhËn xÐt, sau nµy cã thÓi n ra gi Êy nh­
l µ mét b¶n b¸ o c¸ o, hay ®Ómét ch­¬ng tr×nh kh¸ c ®äc vµ ti Õp tôc xö l ý, chÕbi Õn.
Trong ch­¬ng nµy chóng ta sÏ nghi ª n cøu nh÷ng l Önh cña Fortran thao t¸ c ví i d÷ l i Öu, t×m hi Óu nh÷ng ®Æc ®i Óm cña chóng ®Óh×nh thµnh kü thuËt tæchøc l ­u d÷ l i Öu
trong m¸ y tÝnh.
Fi l e d÷ l i Öu l µ f i l e trong m¸ y tÝnh chøa nh÷ng th«ng ti n cã quan hÖví i nhau theo mét nghÜa nµo ®ã mµ mét ch­¬ng tr×nh cã thÓ®äc, hay truy cËp ®­î c nÕu ta muèn
ch­¬ng tr×nh xö l ý tù ®éng nh÷ng th«ng ti n ®ã.
Ch­¬ng tr×nh m¸ y tÝnh truy cËp ®Õn c¸ c f i l e theo tª n cña chóng. Tª n f i l e ®­î c ®Æt tu©n theo quy t¾c tª n nh­ ®èi ví i c¸ c bi Õn. Ngoµi ra tª n f i l e cßn cã thÓcã mét
phÇn më réng, cßn gäi l µ ®u«i f i l e, gåm tæhî p kh«ng qu¸ ba ch÷ c¸ i hoÆc ch÷ sè. PhÇn më réng nµy ®øng sau phÇn tª n chÝnh cña f i l e vµ ng¨ n c¸ ch b»ng dÊu chÊm.
Trong thùc hµnh ng­êi ta th­êng ®Æt tª n f i l e b»ng tËp hî p mét sè ch÷ c¸ i vµ ch÷ sè cã ý nghÜa gî i cho ng­êi dï ng dÔnhí ®ã l µ f i l e chøa nh÷ng d÷ l i Öu g×. ThÝdô,
nÕu chóng ta cã nh÷ng sè l i Öu quan tr¾c vÒnhi Öt ®é kh«ng khÝcña mét sè th¸ ng muèn l ­u trong mét sè f i l e th×cã thÓnª n ®Æt tª n c¸ c f i l e ®ã l µ NHI ET.1, NHI ET.2 v.v...
ë ®©y ngô ý muèn dï ng côm ch÷ NHI ET ®ÓchØc¸ c f i l e ®ã l ­u tr÷ sè l i Öu vÒnhi Öt ®é, cßn phÇn ®u«i cña tª n f i l e nh»m chØsè l i Öu vÒnhi Öt nh­ng ri ª ng cho th¸ ng 1, th¸ ng
2... C¸ c f i l e trong m¸ y tÝnh l ¹ i cã thÓ®­î c ghi vµo nh÷ng th­ môc cã tª n kh¸ c nhau. Trong mçi th­ môc l ¹ i cã thÓgåm mét sè th­ môc con còng cã tª n cña chóng, h×nh
thµnh mét c©y th­ môc. Mét nhãm f i l e cã quan hÖt­¬ng ®èi ví i nhau theo nghÜa nµo ®ã cã thÓghi chung vµo mét th­ môc, mét sè f i l e kh¸ c th×cã thÓghi trong nh÷ng th­
môc kh¸ c. Ki nh nghi Öm cho thÊy r»ng vi Öc tæchøc l ­u c¸ c f i l e trong m¸ y tÝnh mét c¸ ch cã hÖthèng, khoa häc sÏ gi ¶m nhÑvµ n©ng cao hi Öu qu¶ c«ng vi Öc cña ng­êi sö
dông m¸ y tÝnh.
XÐt vÒph­¬ng di Ön l ­u tr÷ d÷ l i Öu l ©u dµi th×ng­êi ta th­êng cè g¾ng ghi trong f i l e sao cho phong phó th«ng ti n, ®¸ p øng vi Öc xö l ý nhi Òu môc ®Ých. ThÝdô, ví i f i l e
chøa nh÷ng sè l i Öu c¸ c tham sè khÝt­î ng thuû v¨ n ë mét tr¹ m quan tr¾c nµo ®ã, th×ngoµi nh÷ng gi ¸ trÞsè cña c¸ c tham sè ®ã, nª n cã thª m nh÷ng th«ng ti n vÒtª n tr¹ m,
141 142
täa ®é tr¹ m, thêi kú quan tr¾c, cã thÓghi tª n c¸ c tham sè quan tr¾c mét c¸ ch t­êng mi nh...
Tuú theo ®Æc ®i Óm vµ kh¶ n¨ ng xö l ý cña ch­¬ng tr×nh hay phÇn mÒm mµ ng­êi ta ghi c¸ c d÷ l i Öu trong f i l e sao cho gän, dÔ®äc, dÔchuyÓn ®æi tõ ®Þnh d¹ ng
(f ormat) nµy sang ®Þnh d¹ ng kh¸ c, tøc xu thÕchuÈn ho¸ ®Þnh d¹ ng d÷ l i Öu ®Ónhi Òu ch­¬ng tr×nh, nhi Òu phÇn mÒm cã thÓ®äc ®­î c.
Trong ch­¬ng nµy chóng ta häc c¸ ch l µm vi Öc ví i nh÷ng f i l e d÷ l i Öu sè, l µm thÕnµo ®Ó®äc th«ng ti n tõ f i l e d÷ l i Öu hi Ön tån t¹ i vµ l µm thÕnµo ®Ót¹ o ra f i l e d÷ l i Öu
mí i trong ch­¬ng tr×nh Fortran mµ chóng ta vi Õt.
6.2. C¸ c l Önh nhËp, xuÊt d÷ l i Öu ví i f i l e
§ Ósö dông c¸ c f i l e ví i ch­¬ng tr×nh cña m×nh, chóng ta ph¶i dï ng nh÷ng l Önh mí i ®Óthao t¸ c ví i f i l e vµ nh÷ng më réng ®èi ví i mét sè l Önh ®· nghi ª n cøu trong
c¸ c ch­¬ng tr­í c. Nh÷ng l Önh nµy truy cËp ®Õn tª n f i l e mµ ta ®· g¸ n khi t¹ o l Ëp f i l e. NÕu ta t¹ o l Ëp mét f i l e d÷ l i Öu b»ng phÇn mÒm so¹ n th¶o, ta g¸ n tª n cho f i l e khi nhËp
d÷ l i Öu. NÕu ta t¹ o ra mét f i l e b»ng mét ch­¬ng tr×nh, ta ph¶i dï ng mét l Önh trong ch­¬ng tr×nh cÊp cho f i l e mét tª n nhÊt ®Þnh.
NÕu mét f i l e chuÈn bÞ®­î c dï ng trong ch­¬ng tr×nh, f i l e ®ã ph¶i ®­î c më ra tr­í c khi cã mét thao t¸ c nµo ®ã ví i nã. LÖnh më f i l e OPEN b¸ o cho ch­¬ng tr×nh mét
sè th«ng ti n cÇn thi Õt vÒf i l e nh­ tª n f i l e, f i l e ®ã më ra ®Ó®äc hay ®Óghi d÷ l i Öu. Ngoµi ra l Önh OPEN g¾n f i l e ®­î c më ví i mét sè hi Öu f i l e ®Ókhi nµo ch­¬ng tr×nh truy
cËp f i l e th×nã sö dông sè hi Öu ®ã. D¹ ng tæng qu¸ t cña l Önh OPEN mµ ta sö dông trong ch­¬ng nµy nh­ sau:
OPEN (UNI T = bi Óu thøc nguyª n, FI L E = tª n f i l e, STA TUS = v¨ n b¶n)
trong ®ã bi Óu thøc nguyª n chØ®Þnh mét sè hi Öu thi Õt bÞ®­î c g¸ n cho f i l e, tª n f i l e chØ®Þnh mét tª n mµ ta ®· g¸ n cho f i l e khi t¹ o l Ëp ra nã vµ v¨ n b¶n STATUS b¸ o cho
ch­¬ng tr×nh bi Õt f i l e më ra ®Ó®äc hay ®Óghi , f i l e ®· tån t¹ i hay chuÈn bÞt¹ o ra. NÕu l µ f i l e ®Ó®äc, ta chØ®Þnh
STA TUS = ' OL D'
nÕu f i l e më ra ®ÓxuÊt, ta chØ®Þnh
STA TUS = 'NEW'
cßn
STA TUS = 'UNK NOWN'
cho phÐp më f i l e mí i hoÆc ghi ®Ì l ª n f i l e ®· tån t¹ i .
L Önh OPEN ph¶i ®øng trª n nh÷ng l Önh READ hoÆc WRI TE sö dông f i l e.
§ Ó®äc f i l e d÷ l i Öu, ta sö dông l Önh REA D më réng d­í i d¹ ng:
REA D (Sè hi Öu thi Õt bÞ, * ) Danh s¸ ch c¸ c bi Õn
143 144
§ Óghi th«ng ti n vµo f i l e d÷ l i Öu ta sö dông l Önh WRI TE. Gi èng nh­ l Önh PRI NT, l Önh WRI TE cã thÓsö dông ®ÓxuÊt th«ng ti n ra d­í i d¹ ng danh s¸ ch l i Öt kª vµ
d­í i d¹ ng ghi kh«ng ®Þnh d¹ ng hoÆc cã ®Þnh d¹ ng:
WRI TE (Sè hi Öu t hi Õt bÞ, * ) Danh s¸ ch c¸ c bi Óu t høc
WRI TE (Sè hi Öu thi Õt bÞ, n ) Danh s¸ ch c¸ c bi Óu thøc
trong ®ã n l µ nh· n cña l Önh FORMAT (®Þnh d¹ ng) t­¬ng øng. Trong tÊt c¶ c¸ c d¹ ng tæng qu¸ t trª n ®©y sè hi Öu thi Õt bÞphï hî p ví i sè hi Öu thi Õt bÞ®· g¸ n trong l Önh
OPEN. DÊu sao * ®øng sau sè hi Öu thi Õt bÞchØr»ng ta ®ang sö dông c¸ ch nhËp vµ xuÊt kh«ng ®Þnh d¹ ng (kh«ng f ormat).
C¸ c m¸ y tÝnh cã thÓcã mét sè thi Õt bÞnhËp hoÆc xuÊt ®i kÌ m. Mçi thi Õt bÞ®­î c g¸ n mét sè hi Öu. ThÝdô, nÕu m¸ y i n l azer ®­î c g¸ n sè hi Öu 8 th×l Önh i n sau ®©y sÏ
ghi gi ¸ trÞcña c¸ c bi Õn X vµ Y ra m¸ y i n l aser
WRI TE (8 , * ) X, Y
§ a sè c¸ c hÖm¸ y tÝnh g¸ n thi Õt bÞnhËp chuÈn (bµn phÝm) b»ng sè 5 vµ thi Õt bÞxuÊt chuÈn (mµn h×nh) b»ng sè 6; nh÷ng thi Õt bÞnµy ®· ®­î c dï ng ngÇm ®Þnh ví i c¸ c
l Önh READ * hay PRI NT * . Do ®ã kh«ng nª n dï ng nh÷ng sè hi Öu thi Õt bÞ®· g¸ n tr ­í c nµy cho c¸ c f i l e d÷ l i Öu. Ta cã thÓdï ng bÊt kú nh÷ng sè hi Öu kh¸ c trong c¸ c sè
nguyª n tõ 1 ®Õn 15 ®ÓchØ®¬n vÞf i l e.
Sau khi kÕt thóc ®äc hoÆc ghi f i l e, c¸ c f i l e tù ®éng ®ãng l ¹ i tr­í c khi ch­¬ng tr×nh kÕt thóc. Còng cã nh÷ng tr­êng hî p ta muèn chñ t©m ®ãng hay t¸ ch mét f i l e khái
ch­¬ng tr×nh cña m×nh, vµ ®i Òu nµy nª n l µm. Ta sÏ dï ng l Önh ®ãng f i l e cã d¹ ng tæng qu¸ t nh­ sau:
CL OSE (UNI T = Bi Óu t høc nguyª n)
Nh÷ng l Önh më, ®ãng f i l e, xuÊt nhËp th«ng ti n ví i f i l e trª n ®©y cßn cã nhi Òu tuú chän bæsung kh¸ c n÷a, sÏ ®­î c nh¾c tí i ë nh÷ng n¬i thÝch hî p trong c¸ c môc vµ
c¸ c ch­¬ng sau.
D­í i ®©y tãm t¾t mét sè quy t¾c quan träng cÇn nhí khi ®äc d÷ l i Öu tõ c¸ c f i l e:
1. Mçi l Önh READ sÏ b¾t ®Çu ®äc ví i mét dßng d÷ l i Öu mí i , gäi l µ mét b¶n ghi (record). NÕu cßn thõa c¸ c gi ¸ trÞë dßng tr­í c, th×nh÷ng gi ¸ trÞ®ã bÞbá qua kh«ng
®äc.
2. NÕu mét dßng kh«ng chøa ®ñ c¸ c gi ¸ trÞso ví i danh s¸ ch c¸ c bi Õn cÇn ®äc trong l Önh READ, th×c¸ c dßng d÷ l i Öu sau ®ã sÏ tù ®éng ®­î c ®äc cho ®Õn khi ®ñ gi ¸
trÞcho c¸ c bi Õn l i Öt kª trong l Önh READ.
3. Mét l Önh READ kh«ng cÇn ph¶i ®äc tÊt c¶ c¸ c gi ¸ trÞtrª n dßng d÷ l i Öu hi Ön thêi . Nh­ng nã ph¶i ®äc tÊt c¶ nh÷ng gi ¸ trÞtrª n dßng ë tr­í c gi ¸ trÞmµ ta muèn nã
®äc. ThÝdô nÕu mét f i l e cã 5 gi ¸ trÞghi trª n mét dßng vµ ta cÇn c¸ c gi ¸ trÞthø ba vµ thø t­, ta ph¶i ®äc qua c¸ c gi ¸ trÞthø nhÊt vµ thø hai ®Ó®¹ t tí i c¸ c gi ¸ trÞthø ba vµ thø
t­, nh­ng ta kh«ng cÇn ph¶i ®äc gi ¸ trÞthø n¨ m.
§ Ósö dông ®óng l Önh READ, ta cÇn bi Õt c¸ c gi ¸ trÞ®· ®­î c ghi trong f i l e nh­ thÕnµo. ThÝdô, gi ¶ sö r»ng mçi dßng cña f i l e d÷ l i Öu chøa hai sè tuÇn tù bi Óu thÞthêi
145 146
gi an TI ME vµ sè ®o nhi Öt ®é TEMP vµ ba dßng ®Çu ti ª n ghi nh­ sau:
0.0 28.3 (dßng 1)
0.1 29.1 (dßng 2)
0.2 29.5 (dßng 3)
th×l Önh sau ®©y sÏ ®äc ®­î c ®óng mét cÆp gi ¸ trÞthêi gi an vµ nhi Öt ®é tõ f i l e d÷ l i Öu
READ (10, * ) TI ME, TEMP
Nh­ng sÏ l µ sai nÕu ta dï ng hai l Önh sau
READ (10, * ) TI ME
READ (10, * ) TEMP
Thùc hi Ön hai l Önh nµy sÏ ®äc hai dßng cña f i l e d÷ l i Öu: gi ¸ trÞcña bi Õn TI ME sÏ b»ng 0.0 vµ gi ¸ trÞcña bi Õn TEMP sÏ b»ng 0.1. Trong tr ­êng hî p nµy ch­¬ng tr×nh
vÉn l µm vi Öc b×nh th­êng nh­ng kÕt qu¶ xö l ý sÏ sai . ThÝdô nµy mi nh ho¹ sù quan träng cña vi Öc ki Óm tra ch­¬ng tr×nh cña chóng ta ®èi ví i d÷ l i Öu ®· bi Õt, tr­í c khi sö
dông nã ví i f i l e d÷ l i Öu kh¸ c.
6.3. Kü t huËt ®äc c¸ c f i l e d÷ l i Öu
§ Ó®äc c¸ c d÷ l i Öu tõ f i l e d÷ l i Öu, tr­í c hÕt ta ph¶i bi Õt mét sè th«ng ti n vÒf i l e. Ngoµi tª n f i l e, ta ph¶i bi Õt d÷ l i Öu g×®­î c l ­u trong f i l e vµ cô thÓghi nh­ thÕnµo: cã
bao nhi ª u sè ghi trª n mét dßng vµ c¸ c ®¬n vÞ®o cña mçi gi ¸ trÞ. Ta còng ph¶i bi Õt trong f i l e cã th«ng ti n g×®Æc bi Öt cã Ých ®Óph©n ®Þnh ®­î c sè dßng ghi trong f i l e, hay
®Óx¸ c ®Þnh khi nµo ta ®· ®äc hÕt dßng ghi cuèi cï ng. Th«ng ti n nµy quan träng, v×nÕu ta thùc hi Ön mét l Önh READ sau khi tÊt c¶ c¸ c dßng ghi trong f i l e ®· ®­î c ®äc hÕt
råi th×sÏ bÞl çi thùc hi Ön ch­¬ng tr×nh. Ta cã thÓtr¸ nh l çi ®ã b»ng c¸ ch sö dông th«ng ti n vÒf i l e ®ÓquyÕt ®Þnh xem l o¹ i vßng l Æp nµo nª n dï ng khi ®äc f i l e. ThÝdô, nÕu ta
bi Õt cã 200 dßng ghi trong f i l e th×®­¬ng nhi ª n cã thÓdï ng vßng l Æp DO thùc hi Ön 200 l Çn ®äc vµ tÝnh to¸ n ví i sè l i Öu ®äc ®­î c. Nhi Òu khi ta kh«ng bi Õt tr­í c cã bao
nhi ª u dßng ghi trong f i l e, nh­ng ta bi Õt dßng ghi cuèi cï ng chøa nh÷ng gi ¸ trÞ®Æc bi Öt l µm cho ch­¬ng tr×nh cña chóng ta cã thÓki Óm tra ®­î c. ThÝdô, nÕu mét f i l e chøa
c¸ c sè l i Öu vÒthêi gi an vµ sè ®o nhi Öt ®é d­í i d¹ ng hai cét, th×c¶ hai cét ë dßng cuèi cï ng nª n chøa hai sè −999 ®Óký hi Öu r»ng ®©y l µ dßng cuèi cï ng cña f i l e. Trong
tr­êng hî p nµy ta cã thÓl Ëp vßng l Æp Whi l e ®Ó®äc c¸ c dßng sè l i Öu vµ ®i Òu ki Ön kÕt thóc vßng l Æp nµy l µ hai gi ¸ trÞthêi gi an vµ nhi Öt ®é ®Òu b»ng −999. Cã tr­êng hî p ta
kh«ng bi Õt cã bao nhi ª u dßng ghi vµ ë cuèi f i l e còng kh«ng cã c¸ c gi ¸ trÞ®Æc bi Öt ®ÓnhËn bi Õt. Khi ®ã ta ph¶i nhê ®Õn c¸ c tuú chän (opti ons) cña l Önh READ.
6.3.1. Sè dßng ghi ®­î c chØ®Þnh
NÕu ta bi Õt ch¾c sè dßng ghi , cã thÓdï ng vßng l Æp DO ®Óxö l ý f i l e. Khi t¹ o l Ëp f i l e, ngay ë dßng ghi ®Çu, ta nª n ghi mét sè th«ng ti n chuyª n dông vÒf i l e, trong ®ã
cã sè dßng ghi (sè sè l i Öu) trong f i l e. VÒsau, mçi l Çn bæsung sè l i Öu vµo f i l e d÷ l i Öu, ta cÇn söa l ¹ i dßng ghi nµy. Khi xö l ý f i l e, ta ®äc sè nµy vµo mét bi Õn. Sau ®ã dï ng
vßng l Æp DO ví i bi Õn ®ã l µm gi í i h¹ n cuèi cña vßng l Æp ®Ó®äc hÕt sè l i Öu trong f i l e.
147 148
ThÝdô 14: C¸ ch ®äc f i l e cã th«ng ti n vÒsè dßng sè l i Öu ë dßng ®Çu f i l e. Gi ¶ sö f i l e cã tª n l µ SOL I EU.DAT chøa c¸ c gi ¸ trÞtrung b×nh ngµy cña nhi Öt ®é, ®é Èm
kh«ng khÝvµ ¸ p suÊt khÝquyÓn t¹ i mét tr¹ m quan tr¾c trong nhi Òu ngµy. Mçi dßng cña f i l e ghi tuÇn tù ba ®¹ i l ­î ng trª n cho mét ngµy. Ri ª ng dßng thø nhÊt ghi tæng sè sè
l i Öu (sè ngµy). § o¹ n ch­¬ng tr×nh ®äc sè l i Öu tõ f i l e nµy vµ tÝnh gi ¸ trÞtrung b×nh cña ba ®¹ i l ­î ng cã thÓnh­ sau:
I NTEGER N, K
REA L ND, DA, AS, NDTB, DATB, A STB
OPEN (UNI T = 2, FI L E = 'SOL I EU.DAT', STATUS = 'OL D')
REA D (2 ,* ) N
I F (N .L T. 1) THEN
PRI NT * , ' TRONG FI L E K HONG CO SO L I EU '
EL SE
NDTB = 0.0
DA TB = 0.0
ASTB = 0.0
DO 15 K = 1, N
REA D (2, * ) ND, DA, AS
NDTB = NDTB + ND
DATB = DATB + DA
ASTB = ASTB + AS
15 CONTI NUE
NDTB = NDTB / REAL (N)
DA TB = DATB / REAL (N)
ASTB = A STB / REAL (N)
PRI NT 25 , N, NDTB, DATB, ASTB
END I F
25 FORMAT (1X, 'SO NGAY = ' , I 5 , ' ND =' , F6.2 , ' DA =' ,
* F6.2 , ' AS =' , F7.1)
149 150
CL OSE (2)
END
Trong thÝdô nµy, sè sè l i Öu ®­î c ®äc tõ dßng thø nhÊt cña f i l e vµ g¸ n vµo bi Õn N . LÖnh I F ki Óm tra nÕu 1 < N th×th«ng b¸ o kh«ng cã sè l i Öu; nÕu cã sè l i Öu th×®äc
hÕt tÊt c¶ sè l i Öu vµ tÝnh c¸ c gi ¸ trÞtrung b×nh. Vµ ta thÊy bi Õn N ®­î c dï ng l µm tham sè gi í i h¹ n cuèi cña l Önh DO.
6.3.2. Dßng ký hi Öu kÕt t hóc d÷ l i Öu
Nh÷ng gi ¸ trÞ®Æc bi Öt dï ng ®Ó®¸ nh dÊu sù kÕt thóc cña f i l e d÷ l i Öu gäi l µ ký hi Öu kÕt thóc (Trai l er hay Fl ags). Khi t¹ o l Ëp f i l e, ta thª m mét sè con sè ®Æc bi Öt trong
dßng ghi cuèi cï ng. VÒsau, nÕu ta thª m hoÆc xo¸ ®i mét sè sè l i Öu trong f i l e, sÏ kh«ng ph¶i söa l ¹ i sè ghi tæng sè sè l i Öu. Tuy nhi ª n, nÕu dï ng ph­¬ng ph¸ p nµy ®Ó®¸ nh
dÊu hÕt f i l e, th×ph¶i cÈn thËn sao cho ch­¬ng tr×nh cña chóng ta kh«ng ®­î c ®­a nh÷ng gi ¸ trÞ®Æc bi Öt vµo xö l ý nh­ c¸ c gi ¸ trÞb×nh th­êng kh¸ c. Cã thÓchóng ta ph¶i
ghi chó vÒ®i Òu nµy ë dßng ®Çu f i l e. Ngoµi ra, nÕu dßng sè l i Öu b×nh th­êng chøa bao nhi ª u gi ¸ trÞth×dßng ký hi Öu kÕt thóc còng nª n cã chõng ®ã gi ¸ trÞ®Æc bi Öt ®Ó®¶m
b¶o cho l Önh ®äc kh«ng m¾c l çi ch¹ y ch­¬ng tr×nh. Ng­êi ta th­êng chän c¸ c gi ¸ trÞ®Æc bi Öt sao cho chóng kh¸ c h¼n ví i nh÷ng gi ¸ trÞb×nh th­êng, dÔnhËn ra khi xem
b»ng m¾t c¸ c sè l i Öu trong f i l e, thÝdô nh­ sè nguyª n l í n nhÊt 32767, mét tËp hî p c¸ c sè chÝn nh­ 99999. Ta còng cã thÓdï ng c¸ ch nµy ®Ó®¸ nh dÊu nh÷ng gi ¸ trÞkhuyÕt
trong c¸ c chuçi sè l i Öu (Fl ags - cê hi Öu b¸ o hÕt f i l e hoÆc khuyÕt sè l i Öu).
ThÝdô 15: C¸ ch ®äc f i l e cã dßng sè l i Öu ®¸ nh dÊu hÕt f i l e ë cuèi f i l e vµ cê hi Öu b¸ o khuyÕt sè l i Öu. Gi ¶ sö f i l e d÷ l i Öu ví i néi dung nh­ trong thÝdô 14, nh­ng ®­î c
t¹ o ra theo c¸ ch ®¸ nh dÊu kÕt thóc d÷ l i Öu b»ng dßng gåm ba côm sè 99999. Ngoµi ra, trong c¸ c dßng sè l i Öu b×nh th­êng cã nh÷ng gi ¸ trÞkhuyÕt, kh«ng quan tr¾c, ®­î c
®¸ nh dÊu b»ng con sè 32767. Ch­¬ng tr×nh sau ®©y cho phÐp ®äc vµ tÝnh to¸ n ®óng c¸ c trÞsè trung b×nh cña ba ®¹ i l ­î ng:
I NTEGER N1, N2, N3
REAL ND, DA, AS, NDTB, DATB, ASTB
OPEN (UNI T = 2, FI L E = 'SOLI EU.DAT', STATUS = 'OLD')
N1 = 0
N2 = 0
N3 = 0
NDTB = 0.0
DATB = 0.0
ASTB = 0.0
60 READ (2, * ) ND, DA, AS

I F (ND.NE. 99999 . OR. DA .NE. 99999 . OR. A S .NE. 99999) THEN
151 152
I F (ND .NE. 32767.) THEN
NDTB = NDTB + ND
N1 = N1 + 1
END I F
I F (DA .NE. 32767.) THEN
DATB = DATB + DA
N2 = N2 + 1
END I F
I F (A S .NE. 32767.) THEN
ASTB = ASTB + AS
N3 = N3 + 1
END I F
GOTO 60
END I F
CL OSE (2)
I F (N1 .EQ. 0 .A ND. N2 .EQ. 0 .A ND. N3 .EQ. 0) THEN
PRI NT * , ' TRONG FI L E KHONG CO SO L I EU '
EL SE
I F (N1 .GT. 0) PRI NT * , ' NHI ET DO TRUNG BI NH = ',
* NDTB / REAL (N1)
I F (N2 .GT. 0) PRI NT * , ' DO AM TRUNG BI NH = ',
* DA TB / REAL (N2)
I F (N3 .GT. 0) PRI NT * , ' AP SUAT TRUNG BI NH = ',
* ASTB / REAL (N3)
END I F
END
6.3.3. Sö dông t uú chän END
Tr­êng hî p kh«ng bi Õt sè dßng d÷ l i Öu trong f i l e vµ kh«ng cã dßng th«ng ti n vÒdÊu hi Öu kÕt thóc d÷ l i Öu trong f i l e, ta ph¶i sö dông mét kü thuËt kh¸ c. L Önh READ
153 154
trong Fortran cã mét tuú chän gi óp ki Óm tra sù kÕt thóc cña f i l e vµ rÏ nh¸ nh sang mét l Önh ®­î c chØ®Þnh nÕu ph¸ t hi Ön hÕt f i l e. L Önh READ ví i tuú chän nµy cã d¹ ng
sau:
REA D (Sè hi Öu f i l e , * , END = n ) Danh s¸ ch c¸ c bi Õn
Khi nµo cßn d÷ l i Öu trong f i l e l Önh nµy thùc hi Ön gi èng nh­ l Önh
READ (Sè hi Öu f i l e , * ) Danh s¸ ch c¸ c bi Õn
Tuy nhi ª n, nÕu dßng d÷ l i Öu cuèi cï ng ®· ®äc xong vµ ta thùc hi Ön l Önh READ ví i tï y chän END th×thay v×ph¹ m l çi thùc hi Ön l Önh, ®i Òu khi Ón ®­î c chuyÓn tí i
l Önh cã nh· n n trong tuú chän END. NÕu l Önh READ thùc hi Ön mét l Çn n÷a sau khi ®· ®¹ t ®Õn cuèi f i l e, th×l çi ch¹ y ch­¬ng tr×nh sÏ xuÊt hi Ön.
L Önh READ ví i tuú chän END thùc sù l µ mét d¹ ng ®Æc bi Öt cña vßng l Æp ®i Òu ki Ön Whi l e:
5 READ (10, * , END = 15) TEMP
SUM = SUM + TEMP
N = N +1
GOTO 5
15 PRI NT * , SUM
D¹ ng ®Æc bi Öt nµy cña vßng l Æp ®i Òu ki Ön chØnª n thùc hi Ön khi nµo ta kh«ng bi Õt sè dßng d÷ l i Öu vµ kh«ng cã dßng ký hi Öu b¸ o hÕt d÷ l i Öu. Vi Öc chän kü thuËt hî p
l ý ®Ó®äc d÷ l i Öu tõ f i l e phô thuéc vµo th«ng ti n trong f i l e d÷ l i Öu.
ThÝdô 16: Sö dông t ï y chän END. Ví i f i l e d÷ l i Öu néi dung nh­ trong thÝdô 14, gi ¶ sö kh«ng cã dßng ®Çu ti ª n th«ng b¸ o vÒ®é dµi chuçi d÷ l i Öu, ta thùc hi Ön
ch­¬ng tr×nh tÝnh c¸ c trÞsè trung b×nh nh­ sau:
I NTEGER N, K
REAL ND, DA, AS, NDTB, DATB, ASTB
OPEN (UNI T = 2, FI L E = 'SOLI EU.DAT', STATUS = 'OLD')
NDTB = 0.0
DATB = 0.0
ASTB = 0.0
N = 0
C NÕu ®äc hÕt sè l i Öu tï y chän END = 15 sÏ chuyÓn ®Õn l Önh 15
5 REA D (2, * , END = 15) ND, DA , A S
NDTB = NDTB + ND
155 156
DATB = DATB + DA
ASTB = ASTB + AS
N = N + 1
GOTO 5
15 CLOSE (2)

I F (N .EQ. 0) THEN
PRI NT * , ' TRONG FI LE KHONG CO DU LI EU'
ELSE
NDTB = NDTB / REAL (N)
DATB = DATB / REAL (N)
ASTB = ASTB / REAL (N)
PRI NT 25 , N, NDTB, DATB, ASTB
END I F
25 FORMAT (1X, ' SO NGAY = ', I 5 , ' ND =' , F6.2 , ' DA =' ,
* F6.2 , ' AS =' , F7.1)

END

6.4. T¹ o l Ëp c¸ c f i l e d÷ l i Öu
§ Ót¹ o mí i f i l e d÷ l i Öu, chóng ta sö dông c¸ c l Önh OPEN vµ WRI TE. Tuy nhi ª n, tr­í c khi ta b¾t ®Çu vi Õt c¸ c l Önh Fortran, cÇn c©n nh¾c xem sau nµy ®äc f i l e d÷ l i Öu
sÏ sö dông kü thuËt nµo trong ba kü thuËt ®· m« t¶ trong môc 6.3.
Khi t¹ o l Ëp f i l e ví i dßng ký hi Öu b¸ o hÕt d÷ l i Öu ph¶i cÈn thËn l ùa chän gi ¸ trÞdï ng l µm ký hi Öu. Ph¶i ti n ch¾c r»ng gi ¸ trÞ®­î c chän l µm gi ¸ trÞb¸ o hÕt d÷ l i Öu
kh«ng thÓnµo nhÇm ví i gi ¸ trÞd÷ l i Öu thùc sù. Cã thÓchóng ta ph¶i cã ghi chó ë ®Çu f i l e ®Ómäi ng­êi dï ng f i l e ®­î c bi Õt.
NÕu ta quyÕt ®Þnh t¹ o f i l e ví i th«ng ti n b¸ o tæng sè dßng d÷ l i Öu trª n ®Çu f i l e, th×ph¶i chó ý cËp nhËt dßng ®Çu f i l e mçi khi bæsung hoÆc c¾t bí t sè dßng d÷ l i Öu.
NÕu sè dßng d÷ l i Öu kh«ng ®óng, th×hoÆc ch­¬ng tr×nh ®äc sÏ ®äc sè dßng d÷ l i Öu Ýt h¬n sè dßng thùc cã, hoÆc ch­¬ng tr×nh cè ®äc nhi Òu dßng h¬n trong f i l e thùc cã vµ
dÉn ®Õn l çi trong khi ch¹ y ch­¬ng tr×nh.
So s¸ nh ba ph­¬ng ¸ n tæchøc th«ng ti n d÷ l i Öu ë trª n, ta thÊy vÒph­¬ng di Ön tèi ­u ch­¬ng tr×nh th×c¸ ch dï ng sè b¸ o sè dßng d÷ l i Öu ë ®Çu f i l e l µ tèt h¬n c¶, v×khi
®äc ®­î c tæng sè dßng sè l i Öu ta cã thÓ®äc hÕt d÷ l i Öu b»ng vßng l Æp DO, trong khi hai ph­¬ng ¸ n sau ch­¬ng tr×nh l u«n l u«n ph¶i ki Óm tra bi Óu thøc l «gi c trong khi ®äc
l Æp. Ngoµi ra rÊt cã thÓcã nh÷ng nhi Öm vô xö l ý kh«ng cÇn ®äc hÕt f i l e, mµ chØcÇn ®äc sè l ­î ng sè l i Öu cña f i l e ë dßng ®Çu.
157 158
6.5. Kü t huËt t rî gi óp t ×m l çi ch­¬ng t r×nh
ThËt v« nghÜa nÕu mét ch­¬ng tr×nh xö l ý d÷ l i Öu mµ l ¹ i ®äc sai d÷ l i Öu trong f i l e. Mµ ®i Òu nµy kh«ng ph¶i l µ kh«ng bao gi ê x¶y ra. Tr­êng hî p sè dßng d÷ l i Öu thùc
tÕtrong f i l e cã Ýt h¬n sè vßng l Æp ®äc d÷ l i Öu th×ch­¬ng tr×nh sÏ b¸ o l çi ch¹ y ch­¬ng tr×nh. Khi ®ã chóng ta buéc ph¶i xem l ¹ i ch­¬ng tr×nh hoÆc xem l ¹ i f i l e d÷ l i Öu vµ dÔ
dµng ph¸ t hi Ön l çi ë ®©u. Tuy nhi ª n cã nh÷ng tr­êng hî p l çi ch¹ y ch­¬ng tr×nh kh«ng ph¸ t si nh, nh­ng kÕt qu¶ ch­¬ng tr×nh cho ra sai . NÕu kÕt qu¶ sai v« l ý, râ rµng th×
chóng ta còng bi Õt vµ t×m nguyª n nh©n ë ch­¬ng tr×nh hay ë f i l e d÷ l i Öu. § ¸ ng sî nhÊt l µ nh÷ng tr­êng hî p ®äc “ nhÇm d÷ l i Öu” , ®äc h¬i thi Õu d÷ l i Öu. Khi ®ã ch­¬ng
tr×nh l µm vi Öc b×nh th­êng, kÕt qu¶ tá ra chÊp nhËn ®­î c, nh­ng thùc chÊt l µ sai hoÆc kh«ng chÝnh x¸ c. Do ®ã, trong l Ëp tr×nh ph¶i rÊt thËn träng ví i f i l e d÷ l i Öu.
Khi t×m l çi mét ch­¬ng tr×nh l µm vi Öc ví i c¸ c f i l e d÷ l i Öu, ®i Òu rÊt quan träng l µ ki Óm tra xem c¸ c l Önh nhËp, xuÊt d÷ l i Öu cã l µm vi Öc ®óng ®¾n, chÝnh x¸ c kh«ng.
Trong thùc tÕc¸ c f i l e d÷ l i Öu cã thÓdo b¶n th©n ng­êi l Ëp tr×nh x©y dùng, còng cã thÓng­êi l Ëp tr×nh nhËn ®­î c trong qu¸ tr×nh trao ®æi d÷ l i Öu ví i ®ång nghi Öp cña
m×nh. Trong nh÷ng tr­êng hî p ®ã, tr­í c khi vi Õt nh÷ng l Önh ®äc f i l e d÷ l i Öu ph¶i nghi ª n cøu kÜcÊu tróc cña f i l e, ®äc kÜtµi l i Öu m« t¶ f i l e, ph¶i ti n ch¾c tuyÖt ®èi nh÷ng
th«ng ti n trong f i l e l µ nh÷ng th«ng ti n g×, c¸ ch thøc ghi ë trong ®ã ra sao th×mí i ®äc f i l e ®óng vµ chÝnh x¸ c. § Æc bi Öt l Çn ®Çu ti ª n l µm vi Öc ví i mét l o¹ i f i l e ph¶i ki Óm tra
kÜl ­ì ng kÕt qu¶ ®äc f i l e.
H· y nª n nhí r»ng trong sè nh÷ng yÕu tè cña Fortran th×vÊn ®Òl µm vi Öc ví i f i l e cã thÓxem l µ vÊn ®Òkhã nhÊt vµ l ý thó nhÊt.
Ví i c¸ c f i l e d÷ l i Öu nhËp, ta nª n thö ch­¬ng tr×nh ví i mét f i l e d÷ l i Öu nhá, sao cho ta cã thÓi n l ª n mµn h×nh tõng dßng d÷ l i Öu khi ch­¬ng tr×nh ®äc vµo. H· y ki Óm
tra xem ch­¬ng tr×nh cã bá qua dßng d÷ l i Öu, hoÆc mét gi ¸ trÞnµo kh«ng. NÕu f i l e d÷ l i Öu cã ghi sè dßng d÷ l i Öu, th×h· y i n sè ®ã ra sau khi ®äc.
Ví i c¸ c f i l e d÷ l i Öu xuÊt, sau khi t¹ o l Ëp ra nã, h· y më ra xem l ¹ i néi dung f i l e. Nª n xem cÊu tróc f i l e cã nh­ ta dù ®Þnh kh«ng, nh÷ng gi ¸ trÞcã ®óng l µ n»m ë
nh÷ng chç nã cÇn n»m kh«ng. Ngoµi ra cÇn ph¶i ki Óm tra f i l e ®Çu ra trong nhi Òu ph­¬ng ¸ n ch¹ y ch­¬ng tr×nh. RÊt cã thÓtrong mét tr­êng hî p ta thÊy mäi chuyÖn ®Òu
æn, nh­ng ®Õn tr­êng hî p kh¸ c th×t×nh h×nh kh«ng ph¶i nh­ vËy. ChØcã ki Óm tra kÜth×mí i tr¸ nh ®­î c nh÷ng l çi ti Òm Èn khã nhËn bi Õt trong ch­¬ng tr×nh.
Bµi tËp
1. Fi l e d÷ l i Öu LAB1 chøa nh÷nng th«ng ti n vÒthêi gi an vµ nhi Öt ®é trª n mçi dßng nh­ sau:
0.026.5 (dßng 1)
0.528.7 (dßng 2)
1.029.1 (dßng 3)
1.529.2 (dßng 4)
2.029.4 (dßng 5)
2.529.7 (dßng 6)
H· y cho bi Õt gi ¸ trÞcña c¸ c bi Õn sau khi mçi nhãm l Önh d­í i ®©y thùc hi Ön. Gi ¶ sö r»ng tr­í c khi thùc hi Ön mçi nhãm l Önh ®ã, th×f i l e d÷ l i Öu ®· ®­î c më vµ ch­a
tõng cã mét l Önh READ nµo ®­î c thùc hi Ön:
159 160
1) REA D (1, * ) TI M, TEM
2) REA D (1, * ) TI M1, TEM1, TI M2, TEM2
3) REA D (1, * ) TI M
4) REA D (1, * ) TI M1, TEM1
REA D (1, * ) TEM
REA D (1, * ) TI M2, TEM2
5) REA D (1, * ) TI M1
6) REA D (1, * ) TI M1, TI M2
REA D (1, * ) TEM1
REA D (1, * ) TEM1, TEM2
REA D (1, * ) TI M2
REA D (1, * ) TEM2
2. Fi l e d÷ l i Öu cã tª n CONDAO.TEM cã néi dung ghi nh­ sau: Dßng thø nhÊt - ti ª u ®Òb¸ o r»ng ®©y l µ sè l i Öu vÒbi Õn thi ª n nhi Öt ®é kh«ng khÝt¹ i tr¹ m C«n § ¶o.
Dßng thø hai - ®¬n vÞ®o (°C). Dßng thø ba tuÇn tù ghi c¸ c tham sè: sè n¨ m quan tr¾c, th¸ ng, n¨ m b¾t ®Çu vµ th¸ ng, n¨ m kÕt thóc quan tr¾c. Dßng thø t­ gåm 12 cét ghi
c¸ c th¸ ng trong n¨ m. C¸ c dßng ti Õp sau tuÇn tù ghi nh÷ng gi ¸ trÞnhi Öt ®é øng ví i tõng th¸ ng thµnh 12 cét, trong ®ã nh÷ng th¸ ng khuyÕt sè l i Öu ®­î c ghi b»ng sè −9.9
(b¶ng phÝa d­í i ).
OSCI L L ATI ON OF TEMPERATURE OF THE AI R AT STATI ON CONDAO
degree C
12 1 1979 12 1990
1 2 3 4 5 6 7 8 9 10 11 12
25.2 25.7 27.3 28.7 29.0 27.7 27.2 27.5 27.2 -9.9 26.8 25.3
25.0 25.6 27.2 28.5 28.6 27.6 27.8 27.0 27.4 26.7 26.8 25.8
24.6 25.0 26.9 28.6 28.1 28.0 28.0 27.9 26.9 27.0 26.3 25.0
24.5 25.2 -9.9 -9.9 28.3 27.8 27.2 27.2 27.4 26.7 27.4 26.1
25.3 25.7 26.6 28.2 29.1 28.2 28.0 27.5 26.9 27.2 25.9 25.5
24.7 25.1 25.9 27.9 27.8 27.2 27.2 27.8 26.3 26.5 26.9 25.8
25.4 26.4 27.0 27.3 27.7 28.3 27.5 28.0 26.8 26.5 26.9 25.7
24.5 24.8 25.6 28.1 28.8 28.2 27.8 27.6 26.8 26.8 26.4 25.5
25.2 25.2 27.0 28.9 28.5 28.0 28.6 27.7 27.3 26.9 27.2 25.9
161 162
25.8 26.6 27.1 28.3 28.1 28.0 27.3 27.6 27.2 27.0 26.1 24.8
25.3 24.7 25.9 27.2 27.6 27.9 27.7 27.3 27.4 26.6 26.7 25.4
25.6 26.0 27.2 29.0 28.5 28.3 28.2 27.8 27.6 27.4 26.6 25.8
H· y l Ëp ®o¹ n ch­¬ng tr×nh ®äc f i l e nµy vµ i n l ¹ i l ª n mµn h×nh toµn bé d÷ l i Öu gèc cï ng bi Õn tr×nh n¨ m trung b×nh cña nhi Öt ®é kh«ng khÝë dßng cuèi cï ng.
3. L Ëp ®o¹ n ch­¬ng tr×nh ®äc f i l e d÷ l i Öu ví i néi dung nh­ trong bµi tËp 2 vµ ghi l ¹ i thµnh f i l e cï ng tª n, ¸ p dông kü thuËt dï ng dßng ký hi Öu ®¸ nh dÊu kÕt thóc d÷
l i Öu trong môc 6.3.2.
4. Trong f i l e tª n l µ DATA1, mçi dßng ghi thêi gi an tÝnh b»ng gi ©y vµ nhi Öt ®é tÝnh b»ng ®é C. Dßng cuèi cï ng l µ dßng b¸ o hÕt d÷ l i Öu chøa gi ¸ trÞ−999.9 cho c¶
thêi gi an vµ nhi Öt ®é. H· y ®äc f i l e d÷ l i Öu nµy vµ s¾p xÕp gi ¸ trÞnhi Öt ®é theo thø tù gi ¶m dÇn. I n chuçi nhi Öt ®é ®· s¾p xÕp thµnh d¹ ng 10 gi ¸ trÞmét dßng. Gi ¶ sö trong
f i l e cã kh«ng qu¸ 200 dßng d÷ l i Öu.
5. Trong f i l e tª n l µ DATA2, mçi dßng ghi thêi gi an tÝnh b»ng gi ©y vµ nhi Öt ®é tÝnh b»ng ®é C. Kh«ng cã dßng ti ª u ®Òvµ kh«ng cã dßng b¸ o hÕt d÷ l i Öu. H· y ®äc f i l e
d÷ l i Öu nµy vµ i n ra sè gi ¸ trÞnhi Öt ®é, gi ¸ trÞnhi Öt ®é trung b×nh vµ sè gi ¸ trÞnhi Öt ®é l í n h¬n trung b×nh. Gi ¶ sö trong f i l e cã kh«ng qu¸ 200 dßng d÷ l i Öu.
6. Vi Õt ch­¬ng tr×nh söa l ¹ i f i l e CONDAO.TEM trong bµi tËp 2 sao cho ë mçi dßng sè l i Öu cã chØn¨ m quan tr¾c t­¬ng øng ë ®Çu dßng, gi ¸ trÞnhi Öt ®é trung b×nh
n¨ m ë cuèi dßng vµ gi ¸ trÞnhi Öt ®é trung b×nh nhi Òu n¨ m cña tõng th¸ ng ë dßng d­í i cï ng.
7. V i Õt ch­¬ng tr×nh t×m nghi Öm gÇn ®óng ví i sai sè cho phÐp 0,0001 cña ph­¬ng tr×nh 0 7 , 3
3
1
· − + −

x e e
x x
trong kho¶ng [ 0, 2] theo ph­¬ng ph¸ p l Æp vµ
i n th«ng b¸ o kÕt qu¶ l ª n mµn h×nh ví i 4 ch÷ sè thËp ph©n.
8. Vi Õt ch­¬ng tr×nh nhËp mét sè tù nhi ª n n nhá h¬n 21, mét sè thùc x bÊt kú nhá h¬n 1. X¸ c ®Þnh tæng:
nx x x
nx x x
x x x
x x x
x x
x x
x
x
cos ... 2 cos cos
sin ... 2 sin sin
...
3 cos 2 cos cos
3 sin 2 sin sin
2 cos cos
2 sin sin
cos
sin
+ + +
+ + +
+ +
+ +
+ +
+
+
+
+

Ch­¬ng 7
Sö dông bi Õn cã chØsè trong Fortran
163 164
Trong ch­¬ng 2, môc 2.3 ®· xÐt c¸ ch khai b¸ o ki Óu bi Õn cã chØsè vµ kh¸ i ni Öm m¶ng trong Fortran, nª u mét sè ®Æc ®i Óm vÒl ­u gi ÷ ®èi ví i c¸ c bi Õn cã chØsè hay
gäi l µ bi Õn m¶ng.
Ch­¬ng nµy sÏ cung cÊp thª m ph­¬ng ph¸ p l ­u gi ÷ vµ xö l ý nh÷ng nhãm gi ¸ trÞmµ kh«ng cÇn cung cÊp tª n mét c¸ ch t­êng mi nh cho tõng gi ¸ trÞ®ã. Trong thùc tÕ,
ta th­êng xö l ý mét nhãm c¸ c gi ¸ trÞÝt nhi Òu l i ª n hÖhoÆc hoµn toµn kh«ng l i ª n hÖví i nhau. Trong tr­êng hî p nµy, nÕu sö dông bi Õn m¶ng, c¶ nhãm d÷ l i Öu sÏ cã mét tª n
chung, nh­ng nh÷ng gi ¸ trÞri ª ng bi Öt cã chØsè ri ª ng duy nhÊt. Kü thuËt nµy cho phÐp ta ph©n tÝch d÷ l i Öu sö dông c¸ c vßng l Æp mét c¸ ch thuËn ti Ön. Trong c¸ c môc d­í i
®©y sÏ bæsung thª m nh÷ng cÊu tróc, nh÷ng l Önh cña Fortran cho phÐp thao t¸ c thuËn l î i ví i c¸ c bi Õn m¶ng, kü thuËt ®äc d÷ l i Öu tõ f i l e ®Óg¸ n vµo c¸ c bi Õn m¶ng v.v...
M¶ng l µ yÕu tè quan träng vµ m¹ nh mÏ nhÊt cña Fortran. NÕu so s¸ nh ví i mét sè ng«n ng÷ l Ëp tr×nh kh¸ c, thÝdô nh­ Pascal , ta thÊy trong Fortran cho phÐp khai b¸ o
nh÷ng m¶ng d÷ l i Öu rÊt l í n vµ thao t¸ c rÊt mÒm dÎ o. Nhi Òu khi kh¶ n¨ ng khai b¸ o m¶ng d÷ l i Öu l í n l µm cho thuËt gi ¶i cña ch­¬ng tr×nh xö l ý trë nª n ®¬n gi ¶n. Ngoµi ra,
sö dông m¶ng ®óng ®¾n vµ thµnh th¹ o sÏ gi óp chóng ta vi Õt nh÷ng ch­¬ng tr×nh hoÆc nh÷ng ®o¹ n ch­¬ng tr×nh rÊt ng¾n gän.
7.1. M¶ng mét chi Òu
Trong l Ëp tr×nh, m¶ng mét chi Òu th­êng dï ng ®Óbi Óu di Ôn mét dßng hoÆc mét cét d÷ l i Öu.
VÒph­¬ng di Ön ng«n ng÷, mét m¶ng l µ mét nhãm ®Þa chØl ­u gi ÷ trong bé nhí m¸ y tÝnh cã cï ng tª n. Tõng thµnh phÇn cña m¶ng ®­î c gäi l µ phÇn tö m¶ng vµ ®­î c
ph©n bi Öt ví i phÇn tö kh¸ c bëi tª n chung kÌ m theo chØsè trong cÆp dÊu ngoÆc. Nh÷ng chØsè ®­î c bi Óu di Ôn b»ng nh÷ng sè nguyª n l i ª n ti Õp nhau, th­êng l µ b¾t ®Çu (chØ
sè ®Çu) b»ng sè nguyª n 1. Nh÷ng tr­êng hî p dï ng chØsè ®Çu kh¸ c 1 th­êng l i ª n quan tí i tÝnh thuËn ti Ön thao t¸ c c¸ c c«ng thøc to¸ n häc hoÆc ph­¬ng di Ön thùc ti Ôn. ThÝ
dô muèn bi Óu di Ôn c¸ c hÖsè a cña ph­¬ng tr×nh håi quy nhi Òu bi Õn l i ª n hÖgi ÷a ®¹ i l ­î ng y vµ c¸ c ®¹ i l ­î ng
m
x x x ..., , ,
2 1

m m
x a x a x a a y + + + + · ...
2 2 1 1 0

ta cã thÓdï ng m¶ng mét chi Òu ví i tª n A ®ÓchØtÊt c¶ c¸ c hÖsè, kÓc¶ hÖsè tù do, cña ph­¬ng tr×nh håi quy nµy vµ khai b¸ o nh­ sau:
REA L A (0 : 20)
Trong tr­êng hî p nµy phÇn tö thø nhÊt A(0) cña m¶ng A bi Óu di Ôn hÖsè
0
a . Nh­ vËy rÊt thuËn ti Ön trong khi sö dông c¸ c c«ng thøc cña ®¹ i sè.
NÕu ta cã tËp hî p sè l i Öu vÒl ­î ng m­a n¨ m trong thÕkû nµy t¹ i mét tr¹ m khÝt­î ng nµo ®ã, ta cã thÓdï ng m¶ng
REAL RAI N (1900 : 2000)
Trong tr­êng hî p nµy, nÕu muèn truy cËp l ­î ng m­a n¨ m 1985, ta chØ®Þnh phÇn tö m¶ng RAI N (1985).
§ Ó®äc d÷ l i Öu vµo mét m¶ng mét chi Òu tõ bµn phÝm hoÆc tõ f i l e d÷ l i Öu, ta sö dông l Önh READ. NÕu muèn ®äc toµn bé m¶ng, ta dï ng tª n m¶ng kh«ng cã c¸ c chØ
sè. Ta còng cã thÓchØ®Þnh nh÷ng phÇn tö cô thÓtrong l Önh READ, thÝdô
READ * , B
165 166
READ * , B(1), B(2), B(3)
CÇn chó ý r»ng, trong thÝdô nµy, nÕu m¶ng B theo khai b¸ o chøa 3 phÇn tö th×hai l Önh READ trª n t­¬ng ®­¬ng nhau. Nh­ng nÕu m¶ng B chøa 8 phÇn tö th×cã sù
kh¸ c nhau quan träng gi ÷a hai l Önh READ trª n ®©y, l µ v×: l Önh thø nhÊt ®äc vµo toµn bé 8 phÇn tö cña m¶ng B, trong khi l Önh thø hai chØ®äc c¸ c gi ¸ trÞcña ba phÇn tö
®Çu ti ª n.
C¸ c gi ¸ trÞcña bi Õn m¶ng cßn cã thÓ®äc ví i vßng l Æp DO Èn. ThÝdô, nÕu muèn ®äc 5 phÇn tö ®Çu ti ª n cña m¶ng B ta sö dông l Önh READ nh­ sau
REA D * , (B (I ) , I = 1 , 5)
Trong l Önh nµy, chóng ta thÊy kh«ng cã mÆt tõ khãa DO, chØcã chØsè I cña bi Õn m¶ng B bi Õn thi ª n tõ 1 tí i 5 ví i gi a sè b»ng 1. Nh­ vËy ví i mét l Önh READ m¸ y
®äc ®­î c l i ª n tôc 5 phÇn tö cña m¶ng B.
ThÝdô 17: Mét tËp hî p 50 sè l i Öu l ­î ng m­a n¨ m ®­î c l ­u trong f i l e d÷ l i Öu, mçi sè l i Öu mét dßng. Gi ¶ sö ®¬n vÞf i l e l µ 9. Vi Õt nhãm l Önh ®äc nh÷ng sè l i Öu nµy
vµo m¶ng LMUA.
C¸ ch 1: Dï ng l Önh READ ®äc tõng sè, nh­ng vßng l Æp thùc hi Ön 50 l Çn vµ ®äc toµn bé m¶ng:
REAL L MUA (50)
DO 10 I = 1 , 50
READ (9, * ) LMUA (I )
10 CONTI NUE
C¸ ch 2: Dï ng l Önh READ kh«ng chøa chØsè, nã sÏ ®äc toµn bé m¶ng, tøc ®äc l i Òn 50 phÇn tö:
REA L LMUA (50)
REA D (9, * ) LMUA
C¸ ch 3: L Önh READ chøa vßng l Æp Èn:
REA L LMUA (50)
REA D (9, * ) (LMUA (I ), I = 1, 50)
7.2. L Önh DA TA
L Önh DATA l µ l Önh ®Æc t¶, thuéc l o¹ i l Önh kh«ng thùc hi Ön. Nã dï ng ®Ókhëi t¹ o gi ¸ trÞban ®Çu cho c¸ c bi Õn ®¬n vµ c¸ c m¶ng. D¹ ng tæng qu¸ t cña l Önh DATA nh­
sau
167 168
DA TA Danh s¸ ch t ª n bi Õn / Danh s¸ ch h»ng /
Theo l Önh nµy c¸ c gi ¸ trÞd÷ l i Öu trong danh s¸ ch h»ng n»m trong hai dÊu g¹ ch chÐo ®­î c g¸ n cho c¸ c bi Õn trong danh s¸ ch tª n bi Õn theo tuÇn tù. Ki Óu cña c¸ c gi ¸ trÞ
d÷ l i Öu còng nª n phï hî p ki Óu cña c¸ c bi Õn, sao cho m¸ y tÝnh kh«ng ph¶i chuyÓn ®æi . C¸ c l Önh DATA ph¶i ®Æt tr­í c c¸ c l Önh thùc hi Ön, tøc ë gÇn ®Çu ch­¬ng tr×nh, ngay
sau nh÷ng l Önh m« t¶ ki Óu nh­ l Önh REAL , I NTEGER, LOGI CAL, DI MENSI ON...
ThÝdô, l Önh
DATA A , B, C , I / 0.0 , 32.75 , −2.5 , 10 /
sÏ khëi t¹ o gi ¸ trÞ0,0 cho bi Õn A, 32,75 cho bi Õn B, −2,5 cho bi Õn C vµ 10 cho bi Õn I .
Chó ý r»ng l Önh DATA chØkhëi t¹ o gi ¸ trÞë ®Çu ch­¬ng tr×nh. LÖnh DATA kh«ng thÓsö dông trong vßng l Æp ®Ót¸ i t¹ o gi ¸ trÞc¸ c bi Õn. NÕu cÇn t¸ i t¹ o c¸ c bi Õn, ta
ph¶i sö dông c¸ c l Önh g¸ n. L Önh DA TA còng kh«ng thÓn»m trong ch­¬ng tr×nh con.
NÕu c¸ c gi ¸ trÞl Æp l ¹ i trong danh s¸ ch h»ng, ta cã thÓdï ng c¸ ch vi Õt l Önh DATA ng¾n gän. ThÝdô, nÕu muèn khëi t¹ o gi ¸ trÞ1 cho c¸ c bi Õn I , J, K vµ gi ¸ trÞ0,5 cho
c¸ c bi Õn X, Y, Z, th×hai l Önh sau ®©y t­¬ng ®­¬ng nhau:
DATA I , J, K, X, Y, Z / 1, 1, 1, 0.5, 0.5, 0.5 /
DATA I , J, K, X, Y, Z / 3* 1, 3* 0.5 /
L Önh DATA cã thÓsö dông ®Ókhëi t¹ o mét hoÆc mét sè phÇn tö cña m¶ng. ThÝdô, c¸ c l Önh sau khëi t¹ o tÊt c¸ c c¸ c phÇn tö cña m¶ng J vµ TI ME:
I NTEGER J (5)
REA L TI ME (4)
DATA J, TI ME / 5* 0, 1.0, 2.0, 3.0, 4.0 /
Nhãm l Önh
REA L HOUR (5)
DATA HOUR (1) / 10.0 /
chØkhëi t¹ o mét gi ¸ trÞcña phÇn tö ®Çu ti ª n cña m¶ng HOUR, c¸ c phÇn tö tõ thø 2 ®Õn 5 cña nã ch­a bi Õt.
Cã thÓsö dông vßng DO Èn trong l Önh DATA. ThÝdô:
I NTEGER Y (100)
DATA (Y (I ), I = 1, 50) / 50* 0 /
khëi t¹ o gi ¸ trÞ0 cho 50 phÇn tö ®Çu cña m¶ng Y, 50 phÇn tö cßn l ¹ i ch­a ®­î c khëi t¹ o.
169 170
7.3. M¶ng hai chi Òu
C¸ c l Önh m« t¶ m¶ng hai chi Òu gi èng nh­ ví i m¶ng mét chi Òu, kh¸ c bi Öt duy nhÊt l µ dï ng hai tham sè kÝch th­í c m¶ng. Mçi phÇn tö m¶ng ®­î c truy cËp bëi tª n
m¶ng ví i hai chØsè n»m trong cÆp dÊu ngoÆc.
Trong thùc tÕl Ëp tr×nh ng­êi ta th­êng bi Óu di Ôn c¸ c ma trËn, c¸ c b¶ng d÷ l i Öu gåm mét sè cét, mçi cét cã mét sè dßng gi ¸ trÞthµnh m¶ng hai chi Òu.
ThÝdô, ma trËn c¸ c hÖsè ®øng tr­í c c¸ c Èn cña hÖph­¬ng tr×nh ®¹ i sè tuyÕn tÝnh ) 10 .. 1 , 10 .. 1 (
,
· · j i a
j i
th­êng bi Óu di Ôn b»ng m¶ng hai chi Òu A ví i l Önh m« t¶
nh­ sau
REA L A(10, 10)
C¸ c gi ¸ trÞquan tr¾c tõng gi ê vÒmùc n­í c bi Ón trong vßng mét th¸ ng cã thÓbi Óu di Ôn thµnh mét b¶ng sè l i Öu gåm 31 dßng, 24 cét. C¸ c dßng tuÇn tù øng ví i c¸ c
ngµy trong th¸ ng. C¸ c cét tuÇn tù øng ví i 24 gi ê trong mét ngµy. Trong Fortran, b¶ng sè l i Öu nµy cã thÓbi Óu di Ôn b»ng m¶ng hai chi Òu
REAL SLEV (31, 24)
theo c¸ ch nµy, khi thao t¸ c ví i mùc n­í c t¹ i mét ngµy, gi ê cô thÓnµo ®ã, ng­êi ta chØcÇn chØ®Þnh phÇn tö SL EV (I , J), ví i chØsè thø nhÊt I chØngµy, chØsè thø hai J chØ
gi ê trong ngµy ®ã. Khi cÇn tÝnh mùc n­í c trung b×nh ngµy, thÝdô cña ngµy thø nhÊt trong th¸ ng, ng­êi ta chØcÇn céng tÊt c¶ c¸ c phÇn tö ví i chØsè I = 1:
) 24 , 1 ( SLEV ... ) 2 , 1 ( SLV ) 1 , 1 ( SLEV + + +
Sö dông c¸ c m¶ng rÊt ti Ön l î i khi l Ëp ch­¬ng tr×nh ph©n tÝch, tÝnh to¸ n ví i nh÷ng ma trËn, nh÷ng tËp sè l i Öu l í n.
ThÝdô 18: L Ëp ma trËn ®¬n vÞ(ma trËn vu«ng ví i c¸ c phÇn tö trª n ®­êng chÐo chÝnh b»ng 1, cßn tÊt c¶ c¸ c phÇn tö kh¸ c b»ng 0). ThÝdô ma trËn kÝch th­í c 3 · n ,
tøc cã 3 dßng vµ 3 cét, sÏ l µ
]
]
]
]
]

1 0 0
0 1 0
0 0 1
.
§ o¹ n ch­¬ng tr×nh Fortran thùc hi Ön vi Öc nµy sÏ nh­ sau:
I NTEGER I DMA T(3,3)
DO I = 1, 3
DO J = 1, 3
I F (I .EQ. J) THEN
I DMA T (I , J) = 1
171 172
EL SE
I DMA T (I , J) = 0
ENDI F
END DO
END DO
ThÝdô 19: § äc c¸ c gi ¸ t rÞm¶ng hai chi Òu tõ f i l e d÷ l i Öu. Gi ¶ sö cã c¸ c sè l i Öu vÒl ­u l ­î ng n­í c trung b×nh n¨ m cña mét sè con s«ng. Nh÷ng sè l i Öu nµy ghi trong
f i l e SONG.LL G. Dßng trª n cï ng cña f i l e ghi hai sè nguyª n tuÇn tù chØsè n¨ m quan tr¾c vµ sè con s«ng. Sau ®ã cã n dßng, mçi dßng sè l i Öu tuÇn tù øng ví i mét n¨ m,
trong mçi dßng cã m gi ¸ trÞ, mçi gi ¸ trÞøng ví i mét con s«ng. Ta dï ng m¶ng hai chi Òu ®Óbi Óu di Ôn tËp sè l i Öu nµy, chØsè thø nhÊt cña m¶ng chØthø tù n¨ m, chØsè thø
hai chØthø tù con s«ng. § o¹ n ch­¬ng tr×nh sau ®©y cho phÐp ®äc sè l i Öu tõ f i l e, tÝnh l ­u l ­î ng trung b×nh cña tÊt c¶ c¸ c s«ng vµ i n kÕt qu¶ l ª n mµn h×nh.
REA L SL L (100, 15), TB (15)
OPEN (1, FI L E = 'SONG.L L G', STATUS = 'OL D')
REA D (1, * ) N, M
DO I = 1 , N
REA D (1, * ) (SL L (I , J) , J = 1 , M )
ENDDO
CL OSE (1)
DO J = 1, M
TB (J) = 0. 0
DO I = 1, N
TB (J) = TB (J) + SL L (I , J)
ENDDO
ENDDO
PRI NT 4, (TB (J) , J = 1 , M)
4 FORMAT (1X, 15 F8.0)
H· y l ­u ý c¸ ch ®äc sè l i Öu l ­î ng m­a trong ch­¬ng tr×nh nµy. Nh­ ®· m« t¶ c¸ ch ghi sè l i Öu trong f i l e, l ­î ng m­a ®­î c ghi thµnh n dßng, mçi dßng øng ví i mét
n¨ m, trª n mçi dßng l ¹ i cã m gi ¸ trÞl ­î ng m­a øng ví i m con s«ng. Muèn ®äc l i ª n tôc sè l i Öu trong n n¨ m ta ®· dï ng hai vßng DO l ång nhau:
DO I = 1 , N
REA D (1, * ) (SL L (I , J) , J = 1 , M)
173 174
END DO
trong ®ã vßng DO bª n trong l µ vßng DO Èn ví i chØsè J ch¹ y tõ 1 ®Õn M. B»ng vßng l Æp Èn nµy ta ®· ®äc ®­î c m gi ¸ trÞsè thùc øng ví i m s«ng trª n cï ng mét dßng.
Mét c¸ ch tæng qu¸ t, ®©y l µ c¸ ch ®äc th­êng dï ng nhÊt ®Ób»ng mét l Önh ®äc cã thÓnhËn l i ª n ti Õp tÊt c¶ c¸ c phÇn tö trª n mét hµng cña ma trËn.
NÕu ta dï ng hai vßng l Æp th«ng th­êng:
DO I = 1, N
DO J = 1, M
READ (1, * ) SLL (I , J)
END DO
END DO
th×sÏ ph¹ m sai l Çm, bëi v×hai vßng DO nµy t­¬ng ®­¬ng ví i m n× l Önh READ, vµ nh­ ta ®· bi Õt, mçi l Çn l Önh READ thùc hi Ön xong th×®Çu ®äc f i l e sÏ xuèng dßng
mí i . Nh­ vËy m¸ y sÏ ®äc m n× dßng trong khi trong f i l e chØcã n dßng sè l i Öu.
Ta ph¸ t tri Ón c¸ ch dï ng vßng DO Èn cho tr­êng hî p trª n cï ng mét dßng trong f i l e cã hai ®¹ i l ­î ng. ThÝdô, còng l µ f i l e sè l i Öu nh­ ®· m« t¶ trong thÝdô 19, nh­ng
trª n mçi dßng ngoµi m gi ¸ trÞl ­u l ­î ng cßn cã m gi ¸ trÞ®é ®ôc øng ví i m con s«ng. Trong tr­êng hî p nµy ta khai b¸ o thª m mét bi Õn DD (100, 15) vµ l Önh ®äc c¶ l ­u
l ­î ng vµ ®é ®ôc sÏ l µ:
DO I = 1 , N
175 176
REA D (1, * ) (SL L (I , J), J = 1 , M ) , (DD (I , J), J = 1, M)
END DO
Tr­êng hî p ë ®Çu mçi dßng cã ghi n¨ m quan tr¾c, ta sÏ dï ng
DO I = 1 , N
REA D (1, * ) NA M ( I ), (SL L (I , J) , J = 1, M ) , (DD ( I , J) , J = 1, M)
END DO
7.3. M¶ng nhi Òu chi Òu
Fortran cho phÐp sö dông c¸ c m¶ng ví i sè chi Òu tèi ®a b»ng 7. Chóng ta cã thÓh×nh dung m¶ng ba chi Òu gi èng nh­ h×nh hép ch÷ nhËt t¹ o bëi nhi Òu h×nh l Ëp ph­¬ng
con. C¸ c phÇn tö cña m¶ng ba chi Òu gi èng nh­ nh÷ng h×nh l Ëp ph­¬ng con, xÕp thµnh mét sè l í p, mçi l í p cã mét sè hµng vµ mçi hµng cã mét sè h×nh l Ëp ph­¬ng. Tõ ®ã
ta bi Óu di Ôn vÞtrÝcña mét phÇn tö nµo ®ã nh­ l µ vÞtrÝcña h×nh l Ëp ph­¬ng con: thø tù cña nã trong mét hµng b»ng chØsè I , thø tù hµng b»ng chØsè J vµ thø tù l í p b»ng
chØsè K.
ThÝdô, m¶ng ba chi Òu cã thÓ®Þnh nghÜa b»ng l Önh:
177 178
REAL T (3, 4, 4)
NÕu sö dông tª n m¶ng ba chi Òu kh«ng cã chØsè, ta xö l ý m¶ng ví i chØsè thø nhÊt bi Õn thi ª n nhanh nhÊt, chØsè thø hai bi Õn thi ª n nhanh thø hai vµ chØsè thø ba bi Õn
thi ª n chËm nhÊt. ThÝdô ví i m¶ng T, hai l Önh ®äc sau ®©y l µ t­¬ng ®­¬ng:
REA D* , T
REA D* ,(((T(I ,J,K ),I =1,3),J=1,4),K =1,4)
T­¬ng tù ta h×nh dung m¶ng bèn chi Òu nh­ l µ mét chuçi c¸ c m¶ng ba chi Òu...
H×nh 7.1. Bi Óu di Ôn m¶ng ba chi Òu trong bi Ón
Trong khÝt­î ng thñy v¨ n m¶ng ba chi Òu th­êng ®­î c dï ng ®Óbi Óu di Ôn nh÷ng sè l i Öu quan tr¾c trong kh«ng gi an ba chi Òu. ThÝdô, ta cã thÓbi Óu di Ôn tr­êng ¸ p
suÊt n­í c bi Ón t¹ i c¸ c ®i Óm nót ki nh, vÜtuyÕn cña mét mi Òn h×nh ch÷ nhËt trª n mÆt bi Ón vµ mét sè tÇng s©u. Trong tr­êng hî p nµy cã thÓquy ­í c chØsè thø nhÊt cña
m¶ng i bi Õn thi ª n theo trôc x h­í ng sang phÝa ®«ng, chØsè thø hai j bi Õn thi ª n theo trôc y h­í ng l ª n b¾c, cßn chØsè thø ba k bi Õn thi ª n theo trôc z h­í ng th¼ng
®øng tõ mÆt xuèng ®¸ y bi Ón ®ÓchØgi ¸ trÞ¸ p suÊt øng ví i ki nh ®é, vÜ®é vµ mét tÇng s©u nµo ®ã trong bi Ón (h×nh 7.1). Trong khÝt­î ng häc, hai chØsè ®Çu hoµn toµn t­¬ng
tù, cßn chØsè thø ba cña m¶ng ba chi Òu bi Õn thi ª n theo trôc z h­í ng th¼ng ®øng tõ mÆt ®Êt l ª n trª n, cã thÓdï ng ®ÓchØquan tr¾c t¹ i mét tÇng cao.
Theo quy ­í c ®ã th×m¶ng hai chi Òu l µ mét tr­êng hî p ri ª ng cña m¶ng ba chi Òu dï ng ®Óbi Óu thÞtr­êng yÕu tè khÝt­î ng thñy v¨ n nµo ®ã trª n mét mi Òn ph¼ng h×nh
ch÷ nhËt, thÝdô tr­êng khݸ p mÆt ®Êt, tr­êng nhi Öt ®é n­í c mÆt bi Ón... M¶ng bèn chi Òu cã thÓdï ng ®Óbi Óu di Ôn nh÷ng tr­êng ba chi Òu võa m« t¶ ë trª n nh­ng t¹ i nhi Òu
thêi ®i Óm t kh¸ c nhau.
Trong thñy v¨ n, chØsè thø nhÊt cña m¶ng ba chi Òu th­êng dï ng bi Óu di Ôn yÕu tè quan tr¾c t¹ i c¸ c ®é s©u kh¸ c nhau cña mét mÆt c¾t, däc theo s«ng ta cã cã thÓcã
nhi Òu mÆt c¾t ®­î c bi Óu di Ôn b»ng bi Õn thi ª n cña chØsè thø hai , yÕu tè quan tr¾c l ¹ i cã thÓbi Õn ®æi theo thêi gi an vµ ®­î c chØ®Þnh b»ng chØsè thø ba. NÕu xÐt nhi Òu s«ng
cï ng mét l óc, ta cÇn ®Õn m¶ng bèn chi Òu.
ChÝnh l µ trong khÝt­î ng, h¶i d­¬ng häc chóng ta ®­î c bi Õt tí i nh÷ng m« h×nh dù b¸ o thêi ti Õt hay hoµn l ­u vµ nhi Öt muèi ®¹ i d­¬ng th­êng sö dông c¸ c tr­êng ba
chi Òu ban ®Çu vµ ph¸ t si nh ra nh÷ng tr­êng bèn chi Òu ví i kÝch th­í c khæng l å (do ®é ph©n gi ¶i kh«ng gi an cao vµ b­í c thêi gi an m« pháng, dù b¸ o nhá) ph¶i l ­u tr÷ vµ
qu¶n l ý trong m¸ y tÝnh.
C¸ c m¶ng cã sè chi Òu l í n h¬n bèn cã thÓl µ khã h×nh dung trùc quan h¬n. Tuy nhi ª n, nÕu chóng ta quy ­í c râ rµng, nhÊt qu¸ n c¸ c chØsè thø nhÊt, thø hai ... t­¬ng
øng ví i bi Õn sè nµo trong thùc tÕvµ n¾m v÷ng quy t¾c bi Õn thi ª n chØsè cña m¶ng th×vÉn cã thÓtruy cËp, thao t¸ c ®óng ví i mét phÇn tö bÊt kú cña m¶ng trong ch­¬ng
tr×nh.
ThÝdô 20: TÝnh tÇn suÊt m­a. Sè l i Öu gi ¸ trÞngµy cña c¸ c yÕu tè khÝt­î ng thñy v¨ n t¹ i tr¹ m Hßn DÊu ®­î c l ­u trong f i l e HONDAU.MAT cã quy c¸ ch ghi nh­ sau:
Dßng trª n cï ng ghi tª n tr¹ m. Dßng thø 2 cã hai sè nguyª n vi Õt c¸ ch nhau l Çn l ­î t chØtæng sè ngµy quan tr¾c vµ sè yÕu tè ®­î c quan tr¾c. Dßng thø ba cã 6 sè nguyª n vi Õt
c¸ ch nhau l Çn l ­î t chØngµy, th¸ ng, n¨ m ®Çu vµ ngµy, th¸ ng, n¨ m cuèi quan tr¾c. Dßng thø 4 l µ ti ª u ®Òcét l i Öt kª tª n tÊt c¶ c¸ c yÕu tè ®­î c quan tr¾c, mçi tª n ®­î c ghi ví i
®é réng 8 vÞtrÝ. C¸ c dßng ti Õp theo l Çn l ­î t ghi gi ¸ trÞcña c¸ c yÕu tè, mçi dßng mét ngµy. Gi ¶ sö l ­î ng m­a ngµy ghi ë cét sè 6. Vi Õt ch­¬ng tr×nh ®äc vµ tÝnh xem trong
179 180
suèt thêi gi an quan tr¾c cã bao nhi ª u l Çn m­a kÐo dµi 1 ngµy, bao nhi ª u l Çn m­a kÐo dµi 2 ngµy l i Òn, bao nhi ª u l Çn m­a kÐo dµi 3 ngµy l i Òn...

REAL X (5000)
I NTEGER TS (5000)
OPEN (1, FI L E = 'HONDAU.MAT', STATUS = 'OL D')
READ (1, * )
READ (1, * ) N
READ (1, * )
READ (1, * )
DO I = 1, N
READ (1, * ) (X (I ), J = 1, 6)
END DO
CL OSE (1)
TS = 0
I = 1
100 I F (I .GT. N) GOTO 15
I F (X (I ) .EQ. 0.0) THEN
I = I + 1
GOTO 100
EL SE
J = 1
300 I F (I .EQ. N .OR. X(I + 1) .EQ. 0.0) THEN
TS (J) = TS (J) + 1
I = I + 1
GOTO 100
EL SE
J = J + 1
I = I + 1
GOTO 300
END I F
END I F
15 I = N
16 I F (TS (I ) .EQ. 0) THEN
I = I - 1
GOTO 16
EL SE
DO N = 1, I
PRI NT ‘ (2I 5)’ , N, TS (N)
END DO
END I F
181 182
END
ThÝdô 21: TÝnh ma t rËn t ­¬ng quan cña tËp sè l i Öu quan tr¾c c¸ c yÕu tè khÝt­î ng thñy v¨ n. Ví i f i l e sè l i Öu trong thÝdô 20, vi Õt ch­¬ng tr×nh ®äc c¸ c th«ng ti n cÇn
thi Õt trong f i l e vµ i n ma trËn t­¬ng quan cña c¸ c yÕu tè quan tr¾c l ª n mµn h×nh.
Ta thÊy, mét c¸ ch tù nhi ª n mçi chuçi gi ¸ trÞngµy cña mét yÕu tè quan tr¾c cã thÓ®­î c bi Óu di Ôn thµnh m¶ng mét chi Òu, chØsè m¶ng sÏ bi Õn thi ª n theo thø tù ngµy
quan tr¾c. Tuy nhi ª n, ta cã thÓgép tÊt c¶ c¸ c m¶ng mét chi Òu thµnh mét m¶ng hai chi Òu ví i chØsè thø hai bi Õn thi ª n theo thø tù yÕu tè quan tr¾c: 1, 2, ... B»ng c¸ ch dï ng
m¶ng hai chi Òu X (5000, 15) nh­ trong ch­¬ng tr×nh d­í i ®©y sÏ rÊt thuËn ti Ön cho vi Öc sö dông c¸ c vßng l Æp DO ví i tham sè ®Õm cña vßng DO ®ång thêi l µ chØsè cña
m¶ng.
REAL X (5000, 15), MX (15), DX (15) , R (15, 15)
OPEN (1, FI LE = 'HONDAU.MAT', STATUS = 'OLD')
READ (1, * )
READ (1, * ) N, M
READ (1, * )
READ (1, * )
DO I = 1, N
REA D (1, * ) ( X (I , J) , J = 1, M)
END DO
CLOSE (1)
C TÝnh trung b×nh vµ ®é l Öch qu©n ph­¬ng cña M yÕu tè
DO I = 1, M
MX (I ) = X (1, I )
DX ( I ) = X (1, I )* X (1, I )
DO J = 2, N
MX (I ) = MX (I ) + X (J, I )
DX (I ) = DX (I ) + X ( J, I ) * X (J, I )
END DO
MX (I ) = MX (I ) / N
DX ( I ) = SQRT (DX (I ) / N - MX ( I ) * MX (I ))
END DO
C TÝnh ma tr Ën t­¬ng quan
DO I = 1, M - 1
DO J = I + 1, M
R (I , J) = 0.0
DO K = 1, N
R (I , J) = R (I , J) + X (K , I ) * X (K, J)
END DO
R (I , J) = R (I , J) / N - MX ( I ) * MX (J)
R (I , J) = R (I , J) / (DX (I ) * DX (J))
END DO
183 184
END DO
DO I = 1, M
R (I , I ) = 1.0
END DO
DO I = 1, M
PRI NT 4, (R (K, I ), K = 1, I - 1), (R (I , J), J = I , M)
END DO
4 FORMA T (<M>F6.2)
END
7.4. Nh÷ng ®i Òu cÇn chó ý khi sö dông c¸ c m¶ng
Trong c¸ c môc tr­í c cña ch­¬ng nµy ta ®· häc sö dông mét m¶ng - mét nhãm c¸ c ®Þa chØl ­u gi ÷ c¸ c gi ¸ trÞcã mét tª n chung, nh­ng ph©n bi Öt ví i nhau bëi mét
hoÆc mét sè chØsè. M¶ng l µ mét yÕu tè m¹ nh mÏ nhÊt trong Fortran, v×nã cho phÐp l ­u gi ÷ mét tËp hî p d÷ l i Öu l í n ®ÓdÔxö l ý trong ch­¬ng tr×nh cña chóng ta.
MÆc dï ví i ti Ön l î i c¬ b¶n nh­ trª n, c¸ c m¶ng còng th­êng cã thÓg©y ra nh÷ng l çi mí i . Mét khi b¹ n dù ®Þnh sö dông m¶ng ®Óm« t¶ d÷ l i Öu, h· y tù hái "ta cã cÇn sö
dông d÷ l i Öu nµy nhi Òu l Çn kh«ng" vµ "d÷ l i Öu nµy cã cÇn ph¶i l ­u tr­í c khi ta sö dông nã kh«ng" . NÕu c©u tr¶ l êi cho c¸ c c©u hái trª n l µ " kh«ng", nª n h¹ n chÕdï ng
m¶ng, mµ dï ng c¸ c bi Õn ®¬n.
Mét khi m¶ng l µ cÇn thi Õt, nh­ng ch­¬ng tr×nh l µm vi Öc sai , tr­í c hÕt h· y ki Óm tra nh÷ng ®i Òu sau ®©y:
♠ KÝch th­í c m¶ng: M« t¶ m¶ng ph¶i chØra sè phÇn tö tèi ®a dù ®Þnh l ­u gi ÷ trong m¶ng. MÆc dï chóng ta kh«ng nhÊt thi Õt ph¶i dï ng hÕt tÊt c¶ c¸ c phÇn tö cña
m¶ng, nh­ng chóng ta kh«ng ®­î c sö dông nhi Òu phÇn tö h¬n so ví i sè phÇn tö ®· m« t¶ ë phÇn khai b¸ o cña ch­¬ng tr×nh. V Ëy ví i mçi bµi to¸ n cô thÓnÕu cÇn sö dông
m¶ng, h· y h×nh dung tr­í c kÝch th­í c tèi ®a cña mçi chi Òu cña m¶ng ®Ókhai b¸ o cho ®óng, cã thÓh¬i d­ ra mét Ýt, nh­ng d­ nhi Òu qu¸ sÏ tèn bé nhí , cßn khai b¸ o thi Õu
th×khi ch¹ y ch­¬ng tr×nh sÏ ph¸ t si nh l çi l «gi c.
♠ ChØsè m¶ng: H· y ki Óm tra tõng chØsè, ®Æc bi Öt nh÷ng chØsè l µ bi Óu thøc sè häc, ®Óti n ch¾c r»ng nã l µ sè nguyª n n»m trong gi í i h¹ n ®óng ®¾n, kh«ng v­î t ra
ngoµi kho¶ng bi Õn thi ª n cña chØsè. NÕu chØsè m¶ng v­î t ra ngoµi gi í i h¹ n cho phÐp th×h· y xem c¸ c bi Õn trong bi Óu thøc sè häc tÝnh chØsè cã bÞnhÇm kh«ng. Cã thÓ
dï ng l Önh i n l ª n mµn h×nh ®Ótheo dâi di Ôn bi Õn cña chØsè.
♠ Vßng l Æp DO: NÕu b¹ n dï ng chØsè m¶ng l µm tham sè ®Õm cña vßng l Æp DO, h· y ti n ch¾c r»ng b¹ n ®· sö dông ®óng tª n bi Õn trong ch­¬ng tr×nh cña b¹ n. ThÝdô,
nÕu trong mét vßng l Æp DO ví i m¶ng ba chi Òu b¹ n ®Þnh cho chØsè thø ba cña m¶ng (K) bi Õn thi ª n, h· y ki Óm tra xem b¹ n cã dï ng I thay v×K kh«ng. Lçi th­êng gÆp l µ
chØsè ®¶o ng­î c: H· y tù hái chç nµy cÇn B (K, L) hay B (L, K)? H· y cã ý thøc vÒ®Æt tª n cho chØsè. TËp qu¸ n chung l µ sö dông bi Õn I cho chØsè thø nhÊt, J - thø hai vµ
K - thø ba; nh­ vËy rÊt ti Ön l î i khi sö dông c¸ c vßng l Æp l ång nhau vµ chØsè ®Õm cña vßng l Æp DO ®ång thêi l µ chØsè m¶ng.
Bµi tËp
1. Fi l e d÷ l i Öu ví i ®¬n vÞf i l e 9 chøa 28 sè l i Öu l ­î ng m­a ngµy trong bèn tuÇn l Ôl i ª n ti Õp, ghi thµnh 4 dßng, mçi tuÇn mét dßng. Nhãm l Önh sau
185 186
REA L DMUA (28)
DO I = 1, 28
REA D (9, * ) DMUA (I )
END DO
cã ®äc ®óng c¸ c sè l i Öu l ­î ng m­a øng ví i tõng ngµy kh«ng. NÕu kh«ng ®óng, chØra ph­¬ng ¸ n ®äc ®óng.
2. Vi Õt ch­¬ng tr×nh cho phÐp ®äc tõ bµn phÝm ba sè nguyª n, ki Óm tra xem ba sè nguyª n ®ã cã thÓchØngµy, th¸ ng, n¨ m hî p l ý kh«ng. KÕt qu¶ ki Óm tra ghi thµnh
dßng th«ng b¸ o thÝch hî p l ª n mµn h×nh.
3. V i Õt ch­¬ng tr×nh ®äc mét chuçi Y gåm 20 gi ¸ trÞthùc tõ f i l e EXPER, trong ®ã mçi gi ¸ trÞghi trª n mét dßng. LËp mét chuçi Z gåm 20 gi ¸ trÞtho¶ m· n c¸ c ®i Òu
ki Ön:
) 19 .. 2 (
3
Y Y
;
1 i i 1
20 20 1 1
·
+ +
· · ·
+ −
i
Y
Z Y Z ; Y Z
i
i

I n chuçi xuÊt ph¸ t vµ chuçi mí i c¹ nh nhau thµnh b¶ng hai cét.
4. V i Õt ch­¬ng tr×nh däc f i l e RAI N chøa b¶ng d÷ l i Öu l ­î ng m­a gåm 12 dßng (mçi dßng t­¬ng øng mét th¸ ng) vµ 5 cét (mçi cét t­¬ng øng mét n¨ m trong c¸ c n¨ m
1978-1982). X¸ c ®Þnh vµ i n b¶ng th«ng ti n sau ®©y:
L UONG MUA TRUNG BI NH
1978 - XXX.XX
1979 - XXX.XX
1980 - XXX.XX
1981 - XXX.XX
1982 - XXX.XX
L UONG MUA CUC DAI
THANG XX NAM XXXX
L UONG MUA CUC TI EU
THANG XX NAM XXXX
5. Fi l e d÷ l i Öu tª n l µ SCS1.TEM ghi sè l i Öu vÒtr­êng nhi Öt ®é n­í c bi Ón trung b×nh th¸ ng 1 ë vï ng bi Ón § «ng cã quy c¸ ch ghi nh­ sau:
- Dßng thø nhÊt gåm tuÇn tù c¸ c tham sè: ki nh tuyÕn bi ª n phÝa t©y, ki nh tuyÕn bi ª n phÝa ®«ng, vÜtuyÕn bi ª n phÝa nam, vÜtuyÕn bi ª n phÝa b¾c (c¸ c sè thùc) cña vï ng,
187 188
b­í c l ­í i theo ph­¬ng t©y ®«ng, b­í c l ­í i theo ph­¬ng b¾c nam (®o b»ng phót, c¸ c sè nguyª n) cña l ­í i .
- Dßng thø hai ghi kÝch th­í c cña ma trËn sè l i Öu (c¸ c sè nguyª n) theo dßng (ph­¬ng b¾c nam), theo cét (ph­¬ng t©y ®«ng), theo chi Òu s©u tõ mÆt bi Ón xuèng d­í i
vµ mét sè nguyª n −32767 chØgi ¸ trÞkhuyÕt cña sè l i Öu nhi Öt ®é.
- PhÇn cßn l ¹ i gåm: mét sè nguyª n chØtÇng s©u quan tr¾c (mÐt) ghi ë mét dßng; sau ®ã l µ m¶ng sè l i Öu nhi Öt ®é øng ví i tÇng ®ã ghi thµnh c¸ c dßng tõ b¾c xuèng
nam, c¸ c cét tõ t©y sang ®«ng (c¸ c sè thùc kh«ng dÝnh nhau). Ti Õp tôc nh­ vËy cho ®Õn tÇng s©u d­í i cï ng.
H· y vi Õt ch­¬ng tr×nh ®äc d÷ l i Öu, chän ra mét prof i l nhi Öt ®é cho ®i Óm bÊt kú thuéc mi Òn tÝnh. KÕt qu¶ ghi l ª n mµn h×nh nh­ sau:
KI NH DO XXX.XX
VI DO XX.XX
TANG (m) NHI ET DO
XXXX XX.XX
XXXX XX.XX
. . . . .
6. Cho f i l e d÷ l i Öu SCS1.TEM ®· m« t¶ trong bµi tËp 5. H· y vi Õt ch­¬ng tr×nh ®äc d÷ l i Öu vµ tÝnh c¸ c gi ¸ trÞnhi Öt ®é trung b×nh cña tõng tÇng quan tr¾c vµ gi ¸ trÞ
nhi Öt ®é trung b×nh toµn bi Ón kÓtõ tÇng mÆt cho tí i tÇng quan tr¾c d­í i cï ng.
7. Cho f i l e d÷ l i Öu SCS1.TEM ®· m« t¶ trong bµi tËp 5. H· y vi Õt ch­¬ng tr×nh ®äc d÷ l i Öu vµ i n ra f i l e SECT17.TEM mét b¶ng sè l i Öu nhi Öt ®é n­í c cña mÆt c¾t däc
vÜtuyÕn 17°N ví i quy c¸ ch nh­ sau:
- Dßng trª n cï ng l µ ti ª u ®Ò:
" Ph©n bè nhi Öt ®é n­í c trª n mÆt c¾t däc vÜtuyÕn 17" .
- Dßng thø hai l i Öt kª c¸ c ki nh ®é tõ t©y sang ®«ng.
- C¸ c dßng ti Õp d­í i ghi ®é s©u tÇng quan tr¾c ë mçi ®Çu dßng t­¬ng øng, sau ®ã l µ c¸ c gi ¸ trÞnhi Öt ®é n­í c (l Êy ®Õn hai ch÷ sè thËp ph©n) ghi th¼ng cét ví i nh÷ng
ki nh ®é t­¬ng øng ®· l i Öt kª ë dßng thø hai . Nh÷ng gi ¸ trÞkhuyÕt (−32767) ghi b»ng sè 99.99 hoÆc n¨ m dÊu hoa thÞ(* * * * * ).

Ch­¬ng 8
189 190
Ch­¬ng tr×nh con l o¹ i hµm
Khi x©y dùng ch­¬ng tr×nh gi ¶i mét bµi to¸ n t­¬ng ®èi phøc t¹ p, ta sÏ thÊy ch­¬ng tr×nh th­êng dµi vµ khã ®äc. Nhi Òu khi cï ng mét sè thao t¸ c nh­ nhau ®­î c thùc
hi Ön l Æp l ¹ i ë mét sè chç trong mét ch­¬ng tr×nh còng l µm cho ch­¬ng tr×nh cña chóng ta trë thµnh dµi h¬n. Nh÷ng vÊn ®Ònµy cã thÓkh¾c phôc b»ng c¸ ch sö dông nh÷ng
ch­¬ng tr×nh con (subprogram) - l µ mét nhãm c¸ c l Önh ®­î c t¸ ch ri ª ng ra vµ sau ®ã sÏ ®­î c gäi thùc hi Ön khi cÇn trong ch­¬ng tr×nh cña chóng ta. Trong Fortran cã hai
l o¹ i ch­¬ng tr×nh con: ch­¬ng tr×nh con l o¹ i hµm (f uncti on) vµ ch­¬ng tr×nh con l o¹ i thñ tôc (subrouti ne). Trong môc 2.4 ch­¬ng 2 ®· gi í i thi Öu vµ thØnh tho¶ng trong c¸ c
bµi kh¸ c chóng ta ®· sö dông mét vµi hµm chuÈn hay hµm ri ª ng cña Fortran. ThÝdô, khi tÝnh si n cña mét gãc ta dï ng hµm SI N, khi cÇn gi ¸ trÞtuyÖt ®èi cña mét ®¹ i l ­î ng
ta dï ng hµm ABS... Nh÷ng hµm nµy thùc chÊt còng l µ nh÷ng ch­¬ng tr×nh con, nh­ng chóng ®· ®­î c x©y dùng s½n (hµm chuÈn) vµ n»m trong bé bi ª n dÞch, chóng ta chØ
vi Öc gäi trùc ti Õp trong ch­¬ng tr×nh khi cÇn. Trong ch­¬ng nµy sÏ tãm t¾t vÒnh÷ng ®Æc ®i Óm cña c¸ c hµm chuÈn. Sau ®ã ta häc c¸ ch tù x©y dùng nh÷ng ch­¬ng tr×nh con
l o¹ i hµm ®Ógi ¶i quyÕt nh÷ng bµi to¸ n ri ª ng cña m×nh. Nh÷ng ch­¬ng tr×nh con l o¹ i thñ tôc sÏ xÐt trong ch­¬ng 9.
8.1. C¸ c hµm chuÈn
Mét hµm tÝnh ra mét gi ¸ trÞ, thÝdô c¨ n bËc hai cña mét sè hay gi ¸ trÞtrung b×nh cña mét m¶ng. Fortran cã rÊt nhi Òu hµm chuÈn (xem danh s¸ ch c¸ c hµm chuÈn trong
phô l ôc 1).
Nh÷ng ®Æc ®i Óm chÝnh cña c¸ c hµm chuÈn l µ:
1) Tª n hµm vµ c¸ c gi ¸ trÞ®Çu vµo (c¸ c ®èi sè) cï ng thÓhi Ön mét gi ¸ trÞ.
2) Mét hµm kh«ng thÓ®­î c sö dông ë vÕtr¸ i cña dÊu = trong mét l Önh g¸ n.
3) Tª n cña hµm chuÈn x¸ c ®Þnh ki Óu d÷ l i Öu cña ®Çu ra cña hµm. ThÝdô, nÕu tª n b¾t ®Çu b»ng mét trong c¸ c ch÷ c¸ i tõ I ®Õn N th×gi ¸ trÞhµm l µ sè nguyª n.
4) C¸ c ®èi sè cña hµm th­êng cï ng ki Óu nh­ hµm, trõ mét sè ngo¹ i l Ö(xem phô l ôc 1).
5) C¸ c ®èi sè cña mét hµm ph¶i n»m trong cÆp dÊu ngoÆc ®¬n.
6) C¸ c ®èi sè cña mét hµm cã thÓl µ c¸ c h»ng, bi Õn, bi Óu thøc hay c¸ c hµm kh¸ c.
7) C¸ c hµm tù si nh (generi c f uncti on) chÊp nhËn nhi Òu ki Óu ®èi sè vµ tr¶ l ¹ i gi ¸ trÞhµm cï ng ki Óu ví i ®èi sè. (ThÝdô hµm ABS(X) nÕu ®èi sè X l µ sè nguyª n th×gi ¸
trÞhµm ABS(X) cho ra gi ¸ trÞtuyÖt ®èi l µ sè nguyª n, nÕu X thùc th×gi ¸ trÞhµm sÏ l µ thùc.)
ThÝdô 22: § äc tõ bµn phÝm mét sè nguyª n. Ki Óm tra xem nã l µ sè ch½n hay sè l Î vµ i n ra th«ng b¸ o thÝch hî p. Ta cã thÓsö dông hµm chuÈn MOD (I , J) trong bµi
tËp nµy. Hµm MOD cã hai ®èi sè nguyª n I vµ J. Hµm nµy tr¶ vÒsè d­ cña phÐp chi a I /J. VËy ch­¬ng tr×nh gi ¶i bµi tËp nµy cã thÓnh­ sau:
PRI NT * , ' NHAP MOT SO NGUYEN '
191 192
READ * , K
I F (MOD (K , 2) .EQ. 0) THEN
PRI NT 5, K
EL SE
PRI NT 8, K
END I F
5 FORMAT (1X, I 5, ' L A SO CHAN')
8 FORMAT (1X, I 5, ' L A SO L E')
8.2. C¸ c hµm ch­¬ng t r×nh con
Trong thùc tÕl Ëp tr×nh gi ¶i c¸ c bµi to¸ n khoa häc kü thuËt nhi Òu khi ®ßi hái nh÷ng hµm ch­a cã trong danh s¸ ch c¸ c hµm chuÈn cña Fortran. NÕu tÝnh to¸ n hay l Æp
l ¹ i th­êng xuyª n vµ ®ßi hái mét sè b­í c, ta nª n thùc hi Ön nh­ l µ mét hµm thay v×mçi l Çn cÇn l ¹ i ph¶i vi Õt ra c¸ c l Önh tÝnh to¸ n. Fortran cho phÐp chóng ta tù x©y dùng
nh÷ng hµm cña ri ª ng m×nh theo hai c¸ ch: hµm l Önh (statement f uncti on) vµ hµm ch­¬ng tr×nh con (f uncti on subprogram). NÕu tÝnh to¸ n cã thÓvi Õt trong mét l Önh g¸ n
duy nhÊt, th×ta sö dông hµm l Önh; ng­î c l ¹ i , nÕu ph¶i thùc hi Ön nhi Òu tÝnh to¸ n hay thao t¸ c mí i dÉn tí i mét gi ¸ trÞkÕt qu¶, th×ta dï ng hµm ch­¬ng tr×nh con.
8.2.1. Hµm l Önh
D¹ ng tæng qu¸ t cña hµm l Önh l µ
Tª n hµm (Danh s¸ ch ®èi sè) = Bi Óu thøc
Nh÷ng quy t¾c ph¶i tu©n thñ khi vi Õt vµ dï ng hµm l Önh:
1) Hµm l Önh ®­î c ®Þnh nghÜa ë ®Çu ch­¬ng tr×nh, cï ng ví i c¸ c l Önh khai b¸ o ki Óu d÷ l i Öu.
2) § Þnh nghÜa hµm l Önh gåm tª n cña hµm, sau ®ã ®Õn c¸ c ®èi sè n»m trong cÆp dÊu ngoÆc ®¬n ë vÕbª n tr¸ i cña dÊu b»ng; bi Óu thøc tÝnh gi ¸ trÞhµm ë vÕbª n ph¶i
cña dÊu b»ng.
3) Tª n hµm cã thÓkhai b¸ o trong l Önh khai b¸ o ki Óu; nÕu kh«ng th×ki Óu cña hµm sÏ ®­î c x¸ c ®Þnh theo c¸ ch ®Þnh ki Óu Èn.
ThÝdô 23: Di Ön tÝch cña tam gi ¸ c cã thÓtÝnh theo hai c¹ nh vµ gãc xen gi ÷a chóng:
) ( sin 0,5 gãc × × × · 2 c¹nh 1 c¹nh tÝch DiÖn .
Vi Õt ch­¬ng tr×nh ®äc ®é dµi ba c¹ nh cña mét tam gi ¸ c vµ c¸ c gãc ®èi di Ön mçi c¹ nh. TÝnh vµ i n di Ön tÝch cña tam gi ¸ c theo ba ph­¬ng ¸ n: trong mçi ph­¬ng ¸ n sö
193 194
dông mét cÆp c¹ nh vµ gãc t­¬ng øng.
Trong bµi tËp nµy ta ph¶i tÝnh di Ön tÝch tam gi ¸ c ba l Çn, do ®ã cã thÓdï ng hµm l Önh ®ÓtÝnh di Ön tÝch tam gi ¸ c. Ch­¬ng tr×nh cã thÓnh­ sau:

PROGRAM DTTG
REAL CA , CB, CC, A, B, C, DT, DT1, DT2, DT3,
* C1, C2, GOC
DT (C1, C2, GOC) = 0.5 * C1 * C2 * SI N (GOC)
PRI NT * , ' Nhap ba canh tam gi ac theo thu tu sau:'
PRI NT * , ' Canh A Canh B Canh C'
READ * , CA, CB, CC
PRI NT * , ' Nhap ba goc (radi an) theo thu tu sau:'
PRI NT * , ' Doi di en: canh A canh B canh C'
READ * , A, B, C
DT1 = DT (CB, CC, A )
DT2 = DT (CC, CA , B)
DT3 = DT (CA , CB, C)
PRI NT *
PRI NT * , 'Cac di en ti ch ti nh theo ba phuong an l a:'
PRI NT 5, DT1, DT2, DT3
5 FORMAT (1X, 3F7.2)
END
NhËn xÐt r»ng trong ch­¬ng tr×nh nµy hµm tÝnh di Ön tÝch tam gi ¸ c ®­î c ®Þnh nghÜa ë ®Çu ch­¬ng tr×nh bëi tª n DT vµ ba ®èi sè h×nh thøc C1, C2, GOC vµ gi ¸ trÞcña
hµm ®­î c tÝnh chØb»ng mét l Önh g¸ n (dßng l Önh thø ba). Trong ch­¬ng tr×nh, ë c¸ c dßng l Önh thø 10−12 ta gäi hµm ba l Çn, mçi l Çn ta chuyÓn c¸ c bi Õn kh¸ c nhau vµo vÞ
trÝcña c¸ c ®èi sè h×nh thøc. Ki Óu d÷ l i Öu cña hµm DT ®­î c m« t¶ t­êng mi nh t¹ i l Önh m« t¶ REAL ë ®Çu ch­¬ng tr×nh. Trong ch­¬ng tr×nh chÝnh c¸ c gãc ®­î c cho b»ng
ra®i an. NÕu c¸ c gãc nhËp vµo ®­î c cho b»ng ®é vµ ®Ókh«ng cÇn chuyÓn ®æi thµnh ra®i an tr­í c khi gäi hµm DT tÝnh c¸ c di Ön tÝch, ta cã thÓ®Þnh nghÜa l ¹ i hµm DT nh­
sau:
DT(C1, C2, GOC) = 0.5* C1* C2* SI N (GOC * 3.14159 / 180.0)
8.2.2. Hµm ch­¬ng t r×nh con
195 196
Thùc chÊt cña hµm ch­¬ng tr×nh con l µ mét hµm do ng­êi l Ëp tr×nh tù x©y dùng, do ®ã ng­êi ta cßn gäi l µ hµm do ng­êi dï ng ®Þnh nghÜa. Hµm l o¹ i nµy kh¸ c ví i
hµm l Önh ë chç nã ®­î c tÝnh kh«ng ph¶i b»ng mét l Önh g¸ n duy nhÊt mµ b»ng mét sè l Önh. Hµm ch­¬ng tr×nh con b¾t ®Çu ví i l Önh kh«ng thùc hi Ön ®Ó®Æc t¶ hµm b»ng
mét tª n vµ mét danh s¸ ch ®èi sè nh­ sau
FUNCTI ON Tª n hµm (danh s¸ ch ®èi sè)
Sau c¸ c l Önh m« t¶ vµ tÝnh to¸ n, l Önh RETURN chuyÓn ®i Òu khi Ón vÒch­¬ng tr×nh chÝnh vµ l Önh END b¸ o cho ch­¬ng tr×nh dÞch sù kÕt thóc cña ch­¬ng tr×nh con.
Tª n hµm ®­î c chän theo quy t¾c nh­ tª n h»ng, tª n bi Õn cña Fortran. Tª n hµm cã ý nghÜa m« t¶ Èn ki Óu gi ¸ trÞcña hµm nÕu trong ch­¬ng tr×nh chÝnh ch­a khai b¸ o t­êng
mi nh. Trong danh s¸ ch ®èi sè nÕu cã tõ hai ®èi sè trë l ª n th×c¸ c ®èi sè c¸ ch nhau bëi dÊu ph¶y. Tª n c¸ c ®èi sè còng cã ý nghÜa m« t¶ Èn ki Óu d÷ l i Öu cña ®èi sè. Tuy
nhi ª n, nª n m« t¶ t­êng mi nh c¸ c ®èi sè cña hµm trong phÇn khai b¸ o c¸ c bi Õn cña hµm. Trong phÇn khai b¸ o nµy, ngoµi c¸ c ®èi sè cßn cã thÓkhai b¸ o c¸ c bi Õn kh¸ c
®­î c dï ng chØtrong néi bé hµm ch­¬ng tr×nh con. VËy h×nh d¸ ng tæng qu¸ t cña mét hµm chu¬ng tr×nh con nh­ sau:
FUNCTI ON Tª n (®èi sè 1, ®èi sè 2, ...)
C¸ c l Önh m« t¶ c¸ c ®èi sè, c¸ c bi Õn côc bé
C¸ c l Önh thùc hi Ön
RETURN
END
C¸ c hµm ch­¬ng tr×nh con ®­î c vi Õt t¸ ch ra khái ch­¬ng tr×nh chÝnh vµ n»m sau l Önh END cña ch­¬ng tr×nh chÝnh. Trong ch­¬ng tr×nh chÝnh, khi cÇn tí i hµm con
ng­êi ta th­êng dï ng l Önh g¸ n ®Óg¸ n gi ¸ trÞtÝnh ®­î c bëi hµm con vµo mét bi Õn hoÆc dï ng trùc ti Õp tª n hµm con trong c¸ c bi Óu thøc. Nh÷ng gi ¸ trÞcña c¸ c ®èi sè thùc tÕ
göi vµo c¸ c ®èi sè h×nh thøc ph¶i phï hî p vÒki Óu vµ ®óng tuÇn tù nh­ trong danh s¸ ch ®èi sè. Ta xÐt thÝdô vÒx©y dùng hµm con vµ c¸ ch dï ng nã trong ch­¬ng tr×nh
chÝnh qua thÝdô 24 d­í i ®©y.
ThÝdô 24: C¸ c m« h×nh sè th­êng tÝnh ra c¸ c gi ¸ trÞcña c¸ c thµnh phÇn ki nh h­í ng
k
V vµ vÜh­í ng
v
V cña tèc ®é gi ã ë nh÷ng ®i Óm kh¸ c nhau. Tõ nh÷ng cÆp gi ¸
trÞthµnh phÇn ki nh h­í ng vµ vÜh­í ng cÇn tÝnh ra tèc ®é V vµ h­í ng gi ã d . Tèc ®é gi ã tÝnh b»ng c«ng thøc
2 2
v k
V V V + · ,
cßn h­í ng gi ã (gãc gi ÷a vect¬ gi ã vµ h­í ng b¾c) tÝnh theo c«ng thøc
¹
¹
¹
¹
¹
'
¹
> < −
< < +
< ≥ −
> ≥
·
nÕu
nÕu
nÕu
nÕu
0 , 0 360
0 , 0 180
0 , 0 180
0 , 0
k v
k v
k v
k v
V V
V V
V V
V V
d
α
α
α
α

197 198
trong ®ã arctg
k
v
V
V
π
α
180
· .
Gi ¶ sö c¸ c gi ¸ trÞcña c¸ c thµnh phÇn ki nh h­í ng vµ vÜh­í ng cña tèc ®é gi ã ®· l ­u trong f i l e GI OKV.KQ1 thµnh hai cét, dßng ®Çu ti ª n cña f i l e ghi sè dßng d÷ l i Öu
cã trong f i l e. Vi Õt ch­¬ng tr×nh ®äc f i l e GI OKV.KQ1 vµ ghi kÕt qu¶ tÝnh tèc ®é vµ h­í ng gi ã vµo f i l e mí i GI O.KQ2 thµnh 4 cét d¹ ng sau:
TT
k
V
v
V m/s HUONG
XX XX.X XX.X XXX XXX
XX XX.X XX.X XXX XXX
. . .
Khi l Ëp ch­¬ng tr×nh gi ¶i quyÕt nhi Öm vô nµy ta nhËn thÊy cÇn tÝnh m« ®un cña tèc ®é gi ã vµ h­í ng gi ã nhi Òu l Çn. VËy cã thÓsö dông c¸ c hµm, ngoµi ra, ®ÓtÝnh tèc
®é gi ã cã thÓdï ng l o¹ i hµm l Önh, ®ÓtÝnh h­í ng gi ã dï ng hµm ch­¬ng tr×nh con. Ch­¬ng tr×nh cã thÓnh­ sau:
REA L GI OK (200), GI OV (200), V , H, TOCDO, HUONG
I NTEGER I , N
C M« t¶ hµm l Önh tÝnh m« ®un tèc ®é gi ã
TOCDO (V K , V V ) = SQRT (V K * V K +V V * V V )
OPEN (1, FI L E = 'GI O.KQ1', STATUS = 'OL D')
REA D(1,* ) N
DO I = 1, N
REA D(1,* ) GI OK (I ), GI OV (I )
END DO
CL OSE (1)
OPEN (1, FI L E = 'GI O.KQ2', STATUS = 'UNKNOWN')
WRI TE (1, 4) ‘ TT’ , ‘ V K ’ , ‘ V V ’ , ‘ M/S’ , ‘ HUONG’
4 FORMAT(1X, I 3, 4F7.1)
DO I = 1, N
V = TOCDO (GI OK (I ), GI OV (I ))
H = HUONG (GI OV (I ), GI OK (I ) )
WRI TE (1, 5) I , GI OK (I ), GI OV (I ), V , H
5 FORMAT (1X, I 3, 4F7.1)
END DO
199 200
END
C Hµm ch­¬ng tr×nh con
FUNCTI ON HUONG (V V , V K )
REA L V V , V K, HG
I F (V K .EQ. 0.0) THEN
I F (V V .GE. 0.0) THEN
HG = 90.0
EL SE
HG = 270.0
ENDI F
EL SE
G = ATA N (A BS (V V / V K)) / 3.14159 * 180.0
I F (V K .GT. 0.0) THEN
I F (V V .GE. 0.0) THEN
HG = G
EL SE
HG = 360.0 - G
ENDI F
EL SE
I F (V V .GE. 0.0) THEN
HG = 180.0 - G
EL SE
HG = 180.0 + G
ENDI F
ENDI F
ENDI F
HUONG = HG
RETURN
END
Trong thÝdô nµy, ta thÊy vi Öc tÝnh m« ®un tèc ®é vµ h­í ng ®­î c thùc hi Ön nhi Òu l Çn. Do ®ã ®· tæchøc tÝnh chóng trong c¸ c hµm. V×gi ¸ trÞm« ®un tÝnh ®¬n gi ¶n
b»ng mét bi Óu thøc nª n ®· dï ng l o¹ i hµm l Önh, ®ã l µ hµm TOCDO ®­î c ®Þnh nghÜa ë dßng l Önh thø ba cña ch­¬ng tr×nh chÝnh. Vi Öc tÝnh h­í ng ph¶i thùc hi Ön nhê mét sè
201 202
phÐp tÝnh vµ thao t¸ c, do ®ã ®· dï ng l o¹ i hµm ch­¬ng tr×nh con HUONG. Ki Óu d÷ l i Öu cña hai hµm nµy ®­î c khai b¸ o t­êng mi nh ë phÇn khai b¸ o trong ch­¬ng tr×nh
chÝnh.
ThÝdô 25: ¦ í c l ­î ng nghi Öm cña ®a thøc bËc 4
4
4
3
3
2
2 1 0
) ( x a x a x a x a a x f + + + + ·
trª n kho¶ng [ −5, 5] .
§ Ógi ¶i bµi to¸ n nµy, ta sö dông hai ph­¬ng ph¸ p t×m nghi Öm cña ph­¬ng tr×nh l µ ph­¬ng ph¸ p t×m hÑp dÇn vµ ph­¬ng ph¸ p chi a ®«i .
Trong ph­¬ng ph¸ p t×m hÑp dÇn, mi Òn t×m nghi Öm ®­î c chi a thµnh nh÷ng kho¶ng ®ñ nhá sao cho thùc tÕcã thÓxem r»ng trong mét kho¶ng nµo ®ã chØcã mét
nghi Öm. XÐt c¸ c kho¶ng tõ tr¸ i sang ph¶i , ta sÏ t×m nh÷ng chç mµ ®å thÞcña ®a thøc c¾t trôc x : b»ng c¸ ch tÝnh c¸ c gi ¸ trÞcña ®a thøc t¹ i c¸ c ®Çu mót cña kho¶ng, nÕu dÊu
cña c¸ c gi ¸ trÞcña ®a thøc t¹ i c¸ c ®Çu mót kh¸ c nhau, th×®å thÞc¾t trôc x vµ Ýt nhÊt cã mét nghi Öm trong kho¶ng ®ã. Sau ®ã kho¶ng chøa nghi Öm l ¹ i ®­î c chi a ti Õp thµnh
c¸ c phô kho¶ng nhá h¬n vµ qu¸ tr×nh t×m l ¹ i b¾t ®Çu tõ ®Çu tr¸ i cho ®Õn khi x¸ c ®Þnh ®­î c kho¶ng chøa nghi Öm. Qu¸ tr×nh chi a kho¶ng vµ t×m l Æp l ¹ i cho ®Õn khi nghi Öm
®­î c x¸ c ®Þnh ®ñ ®é chÝnh x¸ c.
Ph­¬ng ph¸ p chi a ®«i b¾t ®Çu ví i mét kho¶ng ®· ®­î c bi Õt l µ chøa mét nghi Öm. Kh¸ c ví i ph­¬ng ph¸ p t×m hÑp dÇn chi a kho¶ng chøa nghi Öm thµnh nhi Òu phô
kho¶ng tr­í c khi t×m, ph­¬ng ph¸ p chi a ®«i chØchi a kho¶ng chøa nghi Öm thµnh hai nöa, sau ®ã x¸ c ®Þnh nöa nµo chøa nghi Öm. Sù chi a ®«i ti Õp tôc cho ®Õn khi t×m ®­î c
nghi Öm ví i ®é chÝnh x¸ c mong muèn.
Trong thÝdô nµy, ta kÕt hî p hai ph­¬ng ph¸ p: ph­¬ng ph¸ p t×m hÑp dÇn ®Óx¸ c ®Þnh kho¶ng chøa nghi Öm. Sau ®ã ph­¬ng ph¸ p chi a ®«i x¸ c ®Þnh nghi Öm ví i ®é
chÝnh x¸ c cÇn thi Õt. Gi ¶ sö ph­¬ng ph¸ p chi a ®«i ti Õp tôc l Æp cho ®Õn khi nöa kho¶ng nhá h¬n 0,01 vµ nghi Öm t×m ®­î c nÕu gi ¸ trÞtuyÖt ®èi cña ®a thøc kh«ng l í n h¬n
0,001.
I NTEGER I , N
REAL A (0 : 4)
REAL TRAI , PHAI , GI UA, KHOANG, NGHI EM
L OGI CAL XONG
PRI NT * , ' NHA P CAC HE SO A0, A1, A 2, A3, A4 '
READ* , A
PRI NT 5, A
5 FORMAT (/ , ' DA THUC:'
* / 1X, 9X, '4', 11X, '3', 11X, '2' / 1X, 4(F7.3, ' X + '), F7.3)
N = 0
DO I = 1, 40
TRA I = −5.0 + REAL (I -1) * 0.25
PHA I = TRAI + 0.25
I F (A BS(F(A , TRA I )) .L T. 0.001) THEN
203 204
PRI NT 15, TRA I , F(A, TRAI )
15 FORMAT (1X, 'NGHI EM = ', F7.3, 3X,
* 'F(NGHI EM) = ', F7.3)
N = N + 1
EL SE I F (F( A , TRA I )* F( A , PHA I ) .L T. 0.0) THEN
XONG = .FAL SE.
KHOANG = PHA I − TRAI
20 I F (K HOA NG .GT. 0.01 .A ND. .NOT. X ONG) THEN
GI UA = 0.5 * (TRAI + PHAI )
I F (A BS (F(A , GI UA )) .L T. 0.001) THEN
XONG = .TRUE.
EL SE I F (F( A , GI UA )* F(A , TRA I ) .LT. 0.0) THEN
PHAI = GI UA
EL SE
TRAI = GI UA
END I F
KHOANG = PHAI − TRA I
GOTO 20
END I F
I F (K HOANG .GT. 0.01) THEN
NGHI EM = GI UA
EL SE
NGHI EM = 0.5 * (TRAI + PHAI )
END I F
PRI NT 15, NGHI EM, F(A, NGHI EM)
N = N + 1
END I F
END DO
TRAI = 5.0
I F (A BS (F (A, TRAI )) .L T. 0.001) THEN
PRI NT 15, TRAI , F (A, TRAI )
N = N + 1
END I F
I F (N .EQ. 0) THEN
PRI NT * , ' KHONG NGHI EM TRONG K HOANG [ -5,5] '
END I F
END
205 206
REA L FUNCTI ON F (A , X )
REAL A(0 : 4), X
F=A (0) + A(1)* X + A(2)* X* * 2 + A(3)* X* * 3 + A(4)* X* * 4
RETURN
END
Trong ch­¬ng tr×nh nµy, ta ®· chi a mi Òn t×m nghi Öm [ −5, 5] thµnh 40 kho¶ng, mçi kho¶ng dµi 0,25 vµ thùc hi Ön vi Öc ki Óm tra tõ tr¸ i sang ph¶i xem trong nh÷ng
kho¶ng nµo cã thÓcã nghi Öm b»ng ph­¬ng ph¸ p t×m hÑp dÇn b»ng vßng DO. Trong mçi kho¶ng, nÕu gi ¸ trÞ®a thøc ë ®Çu mót tr¸ i cña kho¶ng kh«ng kh¸ c kh«ng qu¸
0,001 th×nhËn nghi Öm b»ng ®Çu mót tr¸ i vµ chuyÓn sang xÐt kho¶ng ti Õp sau ë bª n ph¶i . Cßn nÕu gi ¸ trÞ®a thøc ë hai ®Çu mót cña kho¶ng ®ang xÐt kh¸ c dÊu, th×ta t×m
nghi Öm theo ph­¬ng ph¸ p chi a ®«i . Qu¸ tr×nh l Æp ®Ól i ª n ti Õp chi a ®«i kho¶ng thùc hi Ön b»ng vßng l Æp I F l «gi c vµ l Önh GOTO v« ®i Òu ki Ön cho ®Õn khi kho¶ng trë nª n
nhá h¬n hoÆc b»ng 0,01 hoÆc gi ¸ trÞtuyÖt ®èi cña ®a thøc ë gi ÷a kho¶ng kh«ng l í n h¬n 0,001. Vi Öc tÝnh gi ¸ trÞ®a thøc thùc hi Ön nhi Òu l Çn ví i nh÷ng gi ¸ trÞ x kh¸ c nhau
nª n ta ®· tæchøc hµm F ®Óchuyª n l µm vi Öc nµy.
ThÝdô 26: Vi Õt ch­¬ng tr×nh ®äc l i ª n ti Õp tõ bµn phÝm ba sè nguyª n, ki Óm tra xem chóng cã tuÇn tù chØngµy th¸ ng n¨ m hî p l ý kh«ng vµ i n ra th«ng b¸ o phï hî p.
Ch­¬ng tr×nh kÕt thóc khi ta nhËp ngµy th¸ ng n¨ m ®Òu l µ nh÷ng sè kh«ng.
PROGRA M K TNGA Y
I NTEGER I D, I M, I Y
10 PRI NT * , 'HAY NHAP BA SO NGUYEN'
READ * , I D, I M, I Y
I F (I D .NE. 0 .A ND. I M .NE. 0 .AND. I Y .NE. 0) THEN
I F (OKDATE (I D, I M, I Y)) THEN
PRI NT* , 'CO THE L A NGAY THA NG NAM HOP L Y'
EL SE
PRI NT* , ‘ KHONG THE L A ’ ,
* ‘ NGAY THANG NAM HOP L Y’
ENDI F
GOTO 10
ENDI F
END
I NTEGER FUNCTI ON SNTT (M , Y )
I NTEGER M,Y
I F (M. EQ. 2) THEN
SNTT = 28
I F ((MOD (Y,100) .NE. 0 .AND. MOD (Y,4) .EQ. 0) .OR.
207 208
* (MOD (Y,100) .EQ. 0 .AND. MOD (Y/100, 4) .EQ .0))
* SNTT = 29
ELSE I F (M.EQ.4 .OR. M.EQ.6 .OR. M.EQ.9 .OR. M.EQ.11) THEN
SNTT = 30
EL SE
SNTT = 31
ENDI F
RETURN
END
L OGI CA L FUNCTI ON OK DA TE (D, M , Y )
I NTEGER D,M,Y,NNGAY
I F (D.L T.1.OR.D.GT.31.OR.M.L T.1.OR.M.GT.12) THEN
OKDATE = .FAL SE.
ELSE
NNGA Y = SNTT (M, Y )
OKDATE = D.LE.NNGAY
ENDI F
RETURN
END
Trong ch­¬ng tr×nh nµy dï ng hai hµm con: hµm OKDATE vµ hµm SNTT. Hµm OKDATE cã ba ®èi sè nguyª n D, M, Y vµ ®­a ra gi ¸ trÞl «gi c l µ .TRUE. nÕu D, M,
Y l µ nh÷ng sè nguyª n chØngµy th¸ ng hî p l ý. Hµm SNTT cã hai ®èi sè nguyª n vµ ®­a ra gi ¸ trÞnguyª n l µ sè ngµy cña th¸ ng ®ang xÐt. NhËn thÊy r»ng ch­¬ng tr×nh chÝnh
gäi hµm con OKDATE, vÒphÇn m×nh hµm con OKDATE trong khi thùc hi Ön l ¹ i gäi hµm con SNTT.
8.3. ChØdÉn gì rèi vµ phong c¸ ch vi Õt ch­¬ng t r×nh cã hµm con
Ki Óm tra sù l µm vi Öc ®óng ®¾n cña hµm tù x©y dùng còng gi èng nh­ ki Óm tra ch­¬ng tr×nh chÝnh. Nª n thö cho hµm con nh÷ng gi ¸ trÞ®èi sè kh¸ c nhau xem nã cã
®­a ra gi ¸ trÞhµm ®óng ®¾n kh«ng. NÕu hµm con l µm vi Öc kh«ng ®óng ®¾n, h· y ki Óm tra nh÷ng ®i Óm sau:
1) Sù phï hî p vÒki Óu vµ thø tù cña ®èi sè thùc tÕvµ ®èi sè h×nh thøc.
2) Kh¼ng ®Þnh r»ng tr­í c l Önh RETURN hµm ®· nhËn mét gi ¸ trÞ®óng.
3) I n ki Óm tra gi ¸ trÞc¸ c ®èi sè tr­í c vµ sau khi gäi hµm con.
209 210
4) Cã thÓdï ng l Önh PRI NT trong hµm con ®Ó®Þnh vÞchç l çi trong hµm con.
Sö dông hµm l Önh vµ hµm ch­¬ng tr×nh con sÏ l µm ch­¬ng tr×nh cã tÝnh cÊu tróc h¬n vµ dÔ®äc. Trong ch­¬ng tr×nh con còng nª n cã cÊu tróc s¸ ng râ. NÕu hµm dµi
vµ khã ®äc, h· y dï ng hµm con kh¸ c trong hµm con. Mét khi b¹ n quyÕt ®Þnh dï ng hµm con, h· y c©n nh¾c nh÷ng ®i Òu sau ®©y:
1) Chän tª n hµm con sao cho tª n cã tÝnh gî i nhí .
2) Nª n dï ng tª n c¸ c ®èi sè h×nh thøc trong hµm con trï ng ví i tª n cña c¸ c ®èi sè thùc tÕ. NÕu hµm ®­î c dï ng nhi Òu l Çn ví i nh÷ng ®èi sè thùc tÕkh¸ c nhau, th×h· y
chän tª n ®èi sè h×nh thøc hoµn toµn kh¸ c ®Ótr¸ nh sù nhÇm l Én ví i c¸ c bi Õn cña ch­¬ng tr×nh chÝnh. Cã thÓc¸ ch sau ®©y l µ mét c¸ ch nª n ®­î c dï ng: tª n c¸ c ®èi sè trong
hµm con ®Æt b»ng c¸ c tõ ti Õng Anh, cßn tª n c¸ c ®èi sè thùc tÕ- b»ng c¸ c tõ t­¬ng øng cña ti Õng Vi Öt.
Bµi tËp
1. Vi Õt ch­¬ng tr×nh i n gi ¸ trÞc¸ c bi Óu thøc sau:
4 2 4
2 2
3 2 1
sin
3 2 1
9 , 6
y y y
y
y y y
y
+ + +
·
+ + +
+
·
β
α

y y y
z z z
z z
2 2
2 2
4
sin 3 sin 2 1 sin
1
3 2 1
3 , 2
+ + +
·
+ + +
+
·
δ
γ

trong ch­¬ng tr×nh h· y x©y dùng hµm con tª n l µ DENOM ví i ®èi sè x chuyª n ®ÓtÝnh bi Óu thøc
2 2
3 2 1 x x x + + + .
2. H· y c¶i ti Õn ch­¬ng tr×nh t×m nghi Öm cña ®a thøc ë thÝdô 25 trang 139 sao cho nã cho phÐp ng­êi dï ng nhËp kho¶ng x¸ c ®Þnh nghi Öm thay v×dï ng kho¶ng [ −5,
5] .
3. H· y c¶i ti Õn ch­¬ng tr×nh t×m nghi Öm cña ®a thøc ë thÝdô 25 trang 139 sao cho nã cho phÐp ng­êi dï ng nhËp kÝch th­í c cña phô kho¶ng trong phÇn t×m hÑp dÇn.
4. Vi Õt hµm ch­¬ng tr×nh con nhËn gi ¸ trÞmét sè nguyª n vµ tr¶ vÒgi ai thõa cña sè nguyª n ®ã.
5. C«si n cña mét gãc tÝnh theo c«ng thøc chuçi
211 212
...
! 6 ! 4 ! 2
1 cos
6 4 2
+ − + − ·

x x x
x
trong ®ã x tÝnh b»ng ra®i an. H· y vi Õt hµm ch­¬ng tr×nh con COSX ví i ®Çu vµo l µ gãc tÝnh b»ng ®é, tÝnh ra c«si n cña gãc ®ã ví i ®é chÝnh x¸ c ≤ 0,000001, sö dông hµm
con tÝnh gi ai thõa ë bµi tËp 4. Sau ®ã vi Õt ch­¬ng tr×nh chÝnh i n b¶ng ba cét: cét thø nhÊt ( x ) chøa gãc tõ 0 ®Õn 360° ví i gi a sè 15°; cét thø hai chøa c«si n cña gãc tÝnh
theo hµm chuÈn COS cña Fortran vµ cét thø ba chøa c«si n tÝnh theo hµm con COSX.
6. Vi Õt hµm ch­¬ng tr×nh con MEDI AN (X,N) ví i ®Çu vµo l µ m¶ng REAL X(N) ®· s¾p xÕp t¨ ng hoÆc gi ¶m dÇn vµ sè gi ¸ trÞthùc tÕcña m¶ng N, tr¶ vÒgi ¸ trÞcña
trung vÞcña chuçi ) (n x theo ®Þnh nghÜa:
- nÕu n l Î trung vÞb»ng
,
`

.
|
+1
2
n
x ,
- nÕu n ch½n trung vÞb»ng
2
) 1 2 / ( ) 2 / ( + + n x n x
.
7. Vi Õt hµm ch­¬ng tr×nh con DAD (D1, M1, Y1, D2, M2, Y2) ví i 6 ®èi sè h×nh thøc ki Óu sè nguyª n: D1, M1, Y1, D2, M2, Y2 l Çn l ­î t chØngµy, th¸ ng, n¨ m cña
hai ngµy bÊt kú. Hµm nµy sÏ cã gi ¸ trÞl «gi c b»ng TRUE nÕu ngµy D2, M2, Y 2 l µ ngµy muén h¬n ngµy D1, M1, Y1, cßn nÕu kh«ng th×nã sÏ cã gi ¸ trÞFAL SE. Sau ®ã
h· y vi Õt mét ch­¬ng tr×nh chÝnh cho phÐp ta nhËp tõ bµn phÝm mét ngµy bÊt kú trong qu¸ khø hoÆc trong t­¬ng l ai , x¸ c ®Þnh vµ i n l ª n mµn h×nh thø trong tuÇn cña ngµy
®ã. Bi Õt r»ng ngµy 1-1-2001 l µ ngµy thø hai .

Ch­¬ng 9
Ch­¬ng tr×nh con l o¹ i thñ tôc
Trong ch­¬ng 8 chóng ta ®· nghi ª n cøu vÒc¸ c hµm chuÈn, c¸ c hµm l Önh vµ c¸ c hµm do ng­êi l Ëp tr×nh tù x©y dùng. Trong khi mét hµm chØgi í i h¹ n ë vi Öc tÝnh ra
mét gi ¸ trÞ, th×c¸ c thñ tôc ch­¬ng tr×nh con (hay cßn gäi l µ thñ tôc do ng­êi l Ëp tr×nh tù x©y dùng) cã thÓtÝnh ra mét sè gi ¸ trÞ, hoÆc thùc hi Ön mét sè thao t¸ c. Trong bµi
nµy ta häc c¸ ch vi Õt c¸ c thñ tôc vµ sö dông c¸ c thñ tôc trong c¸ c bµi to¸ n øng dông.
9.1. Khai b¸ o vµ gäi ch­¬ng t r×nh con t hñ t ôc
213 214
Nhi Òu quy t¾c vi Õt vµ sö dông c¸ c thñ tôc ch­¬ng tr×nh con gi èng nh­ c¸ c quy t¾c ®èi ví i c¸ c hµm ch­¬ng tr×nh con. D­í i ®©y l i Öt kª nh÷ng kh¸ c bi Öt gi ÷a c¸ c thñ
tôc vµ c¸ c hµm.
1) Mét thñ tôc kh«ng bi Óu di Ôn mét gi ¸ trÞ, do ®ã tª n cña nã chØl µ ®¹ i di Ön cho mét ®o¹ n ch­¬ng tr×nh, kh«ng chØ®Þnh ki Óu cña d÷ l i Öu ®Çu ra.
2) Dßng l Önh ®Çu ti ª n trong mét thñ tôc th«ng b¸ o tª n thñ tôc vµ danh s¸ ch ®èi sè
SUBROUTI NE Tª n thñ tôc (danh s¸ ch ®èi sè)
3) Ch­¬ng tr×nh chÝnh gäi mét thñ tôc b»ng l Önh CALL cã d¹ ng tæng qu¸ t nh­ sau:
CA L L Tª n t hñ tôc (danh s¸ ch ®èi sè)
4) Thñ tôc dï ng danh s¸ ch ®èi sè kh«ng chØcho ®Çu vµo mµ c¶ cho nh÷ng gi ¸ trÞgöi ra ch­¬ng tr×nh chÝnh gäi nã. C¸ c ®èi sè cña thñ tôc ®­î c dï ng trong l Önh
CAL L l µ nh÷ng ®èi sè thùc tÕ, cßn c¸ c ®èi sè sö dông trong thñ tôc l µ nh÷ng ®èi sè h×nh thøc. C¸ c ®èi sè trong l Önh CAL L ph¶i phï hî p vÒki Óu, sè l ­î ng vµ thø tù ví i
nh÷ng ®èi sè trong thñ tôc.
5) Mét thñ tôc cã thÓtÝnh ra mét gi ¸ trÞ, nhi Òu gi ¸ trÞhoÆc kh«ng gi ¸ trÞnµo c¶. Mét thñ tôc cã thÓsö dông mét gi ¸ trÞ®Çu vµo, nhi Òu gi ¸ trÞ®Çu vµo hoÆc kh«ng cã
gi ¸ trÞ®Çu vµo.
6) Nh· n l Önh, tª n bi Õn trong thñ tôc ®­î c chän ®éc l Ëp ví i ch­¬ng tr×nh chÝnh. Nh÷ng bi Õn dï ng trong thñ tôc mµ kh«ng ph¶i l µ c¸ c ®èi sè cña thñ tôc gäi l µ c¸ c
bi Õn côc bé, c¸ c gi ¸ trÞcña chóng kh«ng xö l ý ®­î c trong ch­¬ng tr×nh chÝnh.
7) CÇn ®Æc bi Öt thËn träng khi sö dông c¸ c m¶ng nhi Òu chi Òu trong c¸ c thñ tôc. Nª n chØ®Þnh c¶ kÝch th­í c khai b¸ o vµ kÝch th­í c sö dông thùc tÕví i c¸ c m¶ng hai
hoÆc nhi Òu chi Òu.
8) Gi èng nh­ c¸ c hµm, l Önh RETURN ë cuèi c¸ c thñ tôc dï ng ®ÓchuyÓn ®i Òu khi Ón trë vÒch­¬ng tr×nh chÝnh, l Önh END ®Ób¸ o kÕt thóc thñ tôc.
9) Trong l ­u ®å khèi c¸ c thao t¸ c ®­î c thùc hi Ön bª n trong thñ tôc ®­î c ký hi Öu b»ng bi Óu t­î ng ®å häa sau ®©y:




10) Mét thñ tôc cã thÓdï ng c¸ c hµm con kh¸ c hoÆc gäi c¸ c thñ tôc kh¸ c, nh­ng nã kh«ng thÓtù gäi chÝnh nã. (Trong Fortran 90 cho phÐp dï ng c¸ c thñ tôc ®Öquy
cã thÓtù gäi chÝnh m×nh.)
9.2. Nh÷ng t hÝdô øng dông ch­¬ng t r×nh con t hñ t ôc
215 216
Nh÷ng thÝdô d­í i ®©y gi óp chóng ta häc c¸ ch vi Õt c¸ c thñ tôc vµ sö dông nã trong ch­¬ng tr×nh chÝnh nh­ thÕnµo.
ThÝdô 27: Ch­¬ng tr×nh tÝnh c¸ c ®Æc t r­ng thèng kª : trung b×nh, ph­¬ng sai vµ ®é l Öch chuÈn cña chuçi x gåm n sè l i Öu quan tr¾c. C¸ c c«ng thøc sau tÝnh nh­ sau:
x x x
n
i
i
x
n
i
i
x
D m
n
x
D
n
x
m · −

· ·
∑ ∑
· ·
σ , ,
2 1
2
1
1
.
Ta thÊy r»ng mçi ®¹ i l ­î ng trª n cã thÓtÝnh ®­î c b»ng mét hµm ri ª ng bi Öt. Nh­ng ta còng cã thÓtÝnh l u«n mét l óc c¶ ba ®¹ i l ­î ng b»ng c¸ ch tæchøc tÝnh chóng
trong mét thñ tôc. Ch­¬ng tr×nh d­í i ®©y cho phÐp ®äc vµo kÝch th­í c n vµ c¸ c gi ¸ trÞcña chuçi x . Sau ®ã gäi thñ tôc STAT ®ÓtÝnh c¸ c ®Æc tr­ng thèng kª . Cuèi cï ng l µ
i n ra kÕt qu¶.
ThÊy r»ng thñ tôc STAT cã tÊt c¶ 5 ®èi sè h×nh thøc, trong ®ã hai ®èi sè ®Çu vµo l µ m¶ng mét chi Òu X vµ kÝch th­í c m¶ng N, ba ®èi sè ®Çu ra l µ A VER, VARI vµ
STDV. Khi gäi thñ tôc nµy trong ch­¬ng tr×nh chÝnh, ta göi vµo c¸ c ®èi sè thùc tÕl µ X, N, TBI NH, PSAI vµ DLC. KÕt qu¶ tÝnh trung b×nh, ph­¬ng sai vµ ®é l Öch chuÈn
trong thñ tôc ch­¬ng tr×nh con ®­î c l ­u vµo c¸ c bi Õn TBI NH, PSAI , DL C cña ch­¬ng tr×nh chÝnh. H· y chó ý r»ng: v×thñ tôc ch­¬ng tr×nh con l µ m«®un ®éc l Ëp, nª n tª n
c¸ c ®èi sè cña nã cã thÓtrï ng ví i tª n cña c¸ c bi Õn trong ch­¬ng tr×nh chÝnh, trong thÝdô nµy l µ ®èi sè X vµ N. ë ®©y ta thÊy, trong ch­¬ng tr×nh con, cã thÓ®Þnh nghÜa
kÝch th­í c cña m¶ng b»ng bi Õn N (trong l Önh REAL X(N)). Nhí r»ng ®i Òu nµy chØcho phÐp trong ch­¬ng tr×nh con.
PROGRAM THKE
I NTEGER N, I
REAL X(99), TBI NH, PSAI , DL C
PRI NT * , ' NHAP DO DAI CHUOI (<100)'
READ * , N
PRI NT * , ' NHAP CAC GI A TRI CUA X:'
5 FORMAT (1X, ' X(', I 2, '): ')
DO I = 1, N
WRI TE (* , 5) I
READ * , X (I )
ENDDO
CA L L STA T (X , N, TBI NH, PSA I , DL C)
WRI TE(* , 8) TBI NH, PSAI , DL C
8 FORMAT (1X, ' T. BI NH = ', F7.2, ' PH. SAI = ',
* F7.2, ' DL CHUAN = ', F7.2)
217 218
END
SUBROUTI NE STA T (X , N, A V ER, V A RI , STDV )
REAL X (N), AV ER, V A RI , STDV
I NTEGER N, I
AV ER = 0.0
V ARI = 0.0
DO I = 1, N
AV ER = AV ER + X (I )
V ARI = V ARI + X (I ) * X (I )
END DO
AV ER = A V ER / REAL (N)
V ARI = V ARI / REAL (N−1) − AV ER * A V ER
STDV = SQRT (V A RI )
RETURN
END
ThÝdô 28: Xö l ý ngµy t h¸ ng. Trong thùc tÕxö l ý sè l i Öu quan tr¾c khÝt­î ng thñy v¨ n, ta th­êng hay ph¶i ®Óý ®Õn ngµy th¸ ng cña sè l i Öu. Trong môc nµy sÏ xÐt mét
thÝdô vÒxö l ý ngµy th¸ ng ví i thÝdô sau: Vi Õt ch­¬ng tr×nh nhËp vµo mét ngµy th¸ ng n¨ m bÊt kú, i n ra ngµy th¸ ng n¨ m cña ngµy h«m sau. Vi Öc x¸ c ®Þnh ngµy th¸ ng n¨ m
cña ngµy h«m sau so ví i ngµy th¸ ng n¨ m hi Ön t¹ i sÏ ®­î c thùc hi Ön trong mét ch­¬ng tr×nh con thñ tôc, ta gäi tª n l µ thñ tôc HOMSAU. V×ë ®©y kÕt qu¶ sÏ cho ra ba gi ¸
trÞnguyª n tuÇn tù chØngµy, th¸ ng vµ n¨ m. Ch­¬ng tr×nh cã thÓnh­ sau:
PROGRA M TGNGA Y
I NTEGER I D, I M, I Y
PRI NT * , 'HAY NHAP NGA Y THANG NAM BAT KY'
READ * , I D, I M, I Y
CAL L HOM SA U (I D, I M , I Y )
PRI NT 20, I D, I M, I Y
20 FORMAT (1X, 'NGAY HOM SAU L A ', I 2, '−', I 2 , '−', I 4)
END
SUBROUTI NE HOM SA U (D, M, Y )
I NTEGER D, M, Y
219 220
D = D + 1
I F (D .GT. SNTT (M, Y)) THEN
D = 1
M = M + 1
I F (M .GT. 12) THEN
M = 1
Y = Y + 1
END I F
END I F
RETURN
END
I NTEGER FUNCTI ON SNTT (M, Y )
I NTEGER M, Y
I F (M .EQ. 2) THEN
SNTT = 28
I F ((MOD(Y ,100) .NE. 0 .AND. MOD(Y ,4) .EQ. 0) .OR.
* (MOD (Y,100) .EQ. 0 .AND. MOD (Y/ 100, 4) .EQ .0))
* SNTT = 29

EL SE I F (M.EQ.4.OR.M.EQ.6.OR.M.EQ.9.OR.M.EQ.11) THEN
SNTT = 30
EL SE
SNTT = 31
ENDI F
RETURN
END
C¸ c thao t¸ c ®ÓchuyÓn thµnh h«m sau ®­î c thùc hi Ön trong ch­¬ng tr×nh con thñ tôc HOMSAU. H· y chó ý r»ng trong thñ tôc con HOMSAU l ¹ i gäi thùc hi Ön mét
hµm con kh¸ c l µ SNTT ®ÓtÝnh sè ngµy cña th¸ ng ®ang xÐt. Hµm nµy ®· ®­î c nh¾c tí i trong thÝdô 26, trang 142, ë ®©y ghi l ¹ i ®Ósi nh vi ª n ti Ön theo dâi .
D­í i ®©y ta xÐt mét thÝdô vÒxö l ý sè l i Öu khÝt­î ng cã l i ª n quan tí i ngµy th¸ ng.
ThÝdô 29: TÝnh c¸ c gi ¸ trÞtrung b×nh t h¸ ng cña mét yÕu tè khÝt­î ng thñy v¨ n. Gi ¶ sö ví i f i l e d÷ l i Öu vÒc¸ c yÕu tè khÝt­î ng thñy v¨ n ®· m« t¶ trong thÝdô 20
(trang 124).
221 222
Nhí l ¹ i r»ng f i l e HONDAU.MAT cã quy c¸ ch ghi nh­ sau: Dßng trª n cï ng ghi tª n tr¹ m. Dßng thø 2 cã hai sè nguyª n vi Õt c¸ ch nhau l Çn l ­î t chØtæng sè ngµy quan
tr¾c vµ sè yÕu tè ®­î c quan tr¾c. Dßng thø ba cã 6 sè nguyª n vi Õt c¸ ch nhau l Çn l ­î t chØngµy, th¸ ng, n¨ m ®Çu vµ ngµy, th¸ ng, n¨ m cuèi quan tr¾c. Dßng thø 4 l µ ti ª u ®Ò
cét l i Öt kª tª n tÊt c¶ c¸ c yÕu tè ®­î c quan tr¾c, mçi tª n ®­î c ghi ví i ®é réng 8 vÞtrÝ. C¸ c dßng ti Õp theo l Çn l ­î t ghi gi ¸ trÞcña c¸ c yÕu tè, mçi dßng mét ngµy. C¸ c gi ¸ trÞ
ngµy cña nhi Öt ®é kh«ng khÝ®­î c ghi ë cét thø hai cña f i l e nµy. Vi Õt ch­¬ng tr×nh tÝnh gi ¸ trÞtrung b×nh th¸ ng cña nhi Öt ®é kh«ng khÝtrong tÊt c¶ c¸ c n¨ m quan tr¾c.
ë ®©y ta thÊy, muèn tÝnh trung b×nh th¸ ng chØvi Öc céng tÊt c¶ c¸ c gi ¸ trÞngµy vµ chi a tæng cho sè ngµy cña th¸ ng ®ang xÐt. Nh­ng v×sè ngµy trong mçi th¸ ng cã thÓ
kh¸ c nhau, nª n ta cÇn cã nh÷ng thñ tôc xö l ý ngµy th¸ ng. Ch­¬ng tr×nh sau ®©y sÏ thùc hi Ön ki Óu xö l ý nh­ vËy.
REAL X, TONG, TB (100, 12)
I NTEGER D1, M1, Y1, D2, M2, Y2, YDAU, M
OPEN (1, FI L E = ‘ HONDAU.MAT’ , STATUS = ‘ OL D’ )
READ (1, * )
READ (1, * ) N
READ (1, * ) D1, M1, Y 1, D2, M2, Y2
READ (1, * )
Y = Y1
2 I F (Y1 .GT. Y2) GOTO 4
READ (1, * ) X, X
I F (D1 .EQ. 1) THEN
TONG = 0.0
M = SNTT (M 1, Y 1)
END I F
TONG = TONG + X
I F (D1 .EQ. M) THEN
TB (I , M1) = TONG / M
END I F
CAL L HOM SA U (D1, M 1, Y 1)
GOTO 2
4 CL OSE (1)
PRI NT * , ‘ NHI ET DO K HONG K HI TRUNG BI NH THANG’
PRI NT ‘ (A5, 12I 5)’ , ‘ NAM’ , (J, J = 1, 12)
K = 1
DO I = Y , Y 2
PRI NT ‘ (A 5, 12F5.1)’ , I , (TB (K , J), J =1, 12)
K = K + 1
END DO
END
Ta thÊy trong ch­¬ng tr×nh nµy ®· sö dông hµm SNTT vµ thñ tôc HOMSAU mµ chóng ta ®· x©y dùng trong thÝdô 28. Hµm SNTT ®­î c gäi vµo mçi ngµy ®Çu th¸ ng
®ÓtÝnh sè ngµy cña th¸ ng ®ã vµ g¸ n vµo bi Õn M chuÈn bÞcho vi Öc tÝnh trung b×nh sau khi gi ¸ trÞnhi Öt ®é ngµy cuèi cï ng cña th¸ ng ®­î c céng vµo bi Õn TONG. Cßn thñ
223 224
tôc HOMSAU ®­î c gäi l i ª n tôc ®Ót¨ ng ngµy hi Ön hµnh l ª n mét ngµy sau khi mét sè l i Öu ®­î c ®äc.
Qua thÝdô 20 vµ thÝdô nµy, si nh vi ª n còng cÇn chó ý ghi nhí c¸ ch ®äc sè l i Öu ki Óu bá qua mét sè cét trong f i l e chøa b¶ng sè l i Öu cã nhi Òu cét.
D­í i ®©y l µ hai thÝdô l i ª n quan tí i c¸ c thñ tôc thao t¸ c chuçi th­êng cã thÓrÊt cã Ých trong thùc ti Ôn xö l ý thèng kª chuçi sè l i Öu khÝt­î ng thñy v¨ n.
ThÝdô 30: ChÌ n mét gi ¸ trÞvµo danh s¸ ch. Trong thÝdô nµy, ta vi Õt mét thñ tôc cho phÐp chÌ n mét gi ¸ trÞmí i vµo mét danh s¸ ch ®· s¾p xÕp. C¸ c ®èi sè cña thñ tôc
gåm m¶ng mét chi Òu X, bi Õn COUNT chØsè gi ¸ trÞd÷ l i Öu thùc tÕtrong m¶ng, bi Õn L I MI T chøa kÝch th­í c m« t¶ cña m¶ng vµ bi Õn NEW chøa gi ¸ trÞcÇn chÌ n vµo
m¶ng. Tr­êng hî p phÇn tö mí i ®­î c chÌ n vµo m¶ng ®· ®Çy, tøc gi ¸ trÞCOUNT b»ng gi ¸ trÞL I MI T th×gi ¸ trÞcuèi cï ng trong m¶ng sÏ bÞc¾t bá.
SUBROUTI NE I NSERT (L I M I T, NEW, COUNT, X )
I NTEGER L I MI T, NEW, COUNT, X (L I MI T), J, K
L OGI CAL DONE
DONE = .FAL SE.
J = 1
5 I F (J .L E. COUNT .AND. .NOT. DONE) THEN
I F (X (J) .L T. NEW) THEN
J = J + 1
EL SE
DONE = .TRUE.
END I F
GOTO 5
END I F
I F (J .GT. COUNT) THEN
I F (COUNT .L T. L I MI T) THEN
COUNT = COUNT + 1
X (COUNT) = NEW
END I F
EL SE
I F (COUNT .L T. L I MI T) COUNT = COUNT + 1
DO K = COUNT, J+1, −1
X (K) = X (K − 1)
225 226
END DO
X (J) = NEW
END I F
RETURN
END
ThÝdô 31: Xo¸ mét gi ¸ trÞkhái danh s¸ ch. Trong tr­êng hî p nµy, ta t×m trong danh s¸ ch gi ¸ trÞb»ng gi ¸ trÞ®Þnh xo¸ vµ l o¹ i gi ¸ trÞ®ã khái danh s¸ ch. Kh¸ c ví i thñ
tôc chÌ n, trong thñ tôc xo¸ kh«ng cÇn ®èi sè L I MI T v×khi xo¸ mét gi ¸ trÞkhái danh s¸ ch th×sè phÇn tö thùc cña m¶ng chØcã thÓnhá ®i , kh«ng sî chØsè m¶ng v­î t qu¸
kÝch th­í c m« t¶ cña m¶ng.
SUBROUTI NE DEL ETE (OL D, COUNT, X )
I NTEGER OL D, COUNT, X (COUNT), J, K
L OGI CAL DONE
DONE = .FAL SE.
J = 1
5 I F (J .L T. COUNT .AND. .NOT. DONE) THEN
I F (X (J) .L T. OL D) THEN
J = J + 1
EL SE
DONE = .TRUE.
END I F
GOTO 5
END I F
I F (J .GT. COUNT .OR. X (J) .GT. OL D) THEN

PRI NT * , 'GI A TRI XOA KHONG CO TRONG DANH SACH'

EL SE

COUNT = COUNT - 1

DO K = J, COUNT

X (K) = X (K + 1)

END DO

END I F
227 228

RETURN

END
9.3. Nh÷ng chØdÉn gì rèi khi sö dông c¸ c t hñ t ôc
1) Ki Óm tra xem c¸ c bi Õn, c¸ c bi Óu thøc trong danh s¸ ch ®èi sè ë l Önh CALL cã phï hî p vÒki Óu vµ thø tù nh­ trong l Önh khai b¸ o thñ tôc kh«ng.
2) Nª n khai b¸ o t­êng mi nh tÊt c¶ c¸ c bi Õn trong thñ tôc ®Ótr¸ nh ®Þnh ki Óu ngÇm ®Þnh sai .
3) Sö dông l Önh PRI NT trong thñ tôc ®Ó®Þnh vÞl çi .
4) Ki Óm tra thö tõng thñ tôc tr­í c khi gép chóng vµo ch­¬ng tr×nh chÝnh cï ng ví i nh÷ng ch­¬ng tr×nh con kh¸ c.
5) Ki Óm tra tõng thñ tôc ví i mét sè tËp d÷ l i Öu ®Óph¸ t hi Ön nh÷ng ®i Òu ki Ön ®Æc bi Öt g©y l çi .
6) Phong c¸ ch l Ëp tr×nh:
- Khi quyÕt ®Þnh sö dông ch­¬ng tr×nh con thñ tôc h· y chän tª n thñ tôc sao cho nã cã tÝnh gî i nhí .
- H· y sö dông tª n c¸ c bi Õn trong danh s¸ ch ®èi sè cña thñ tôc cï ng tª n ví i c¸ c bi Õn l µ ®èi sè thùc tÕtrong ch­¬ng tr×nh chÝnh. Trong tr­êng hî p thñ tôc ®­î c gäi
nhi Òu l Çn ví i nh÷ng ®èi sè thùc tÕkh¸ c nhau, h· y chän tª n trong danh s¸ ch ®èi sè kh¸ c bi Öt ®Ótr¸ nh nhÇm ví i c¸ c bi Õn trong ch­¬ng tr×nh chÝnh.
- Trong danh s¸ ch ®èi sè, nª n l i Öt kª ri ª ng c¸ c ®èi sè ®Çu vµo tr­í c, sau ®ã mí i ®Õn c¸ c ®èi sè ®Çu ra.
Bµi tËp
1. Gi ¶ sö cã m¶ng mét chi Òu X ví i 100 gi ¸ trÞthùc. H· y vi Õt mét thñ tôc t¹ o ra m¶ng Y theo c¸ ch mçi phÇn tö cña m¶ng Y b»ng phÇn tö t­¬ng øng cña m¶ng X trõ
®i phÇn tö nhá nhÊt.
2. Vi Õt mét thñ tôc nhËn mét m¶ng gi ¸ trÞthùc X ví i 50 hµng vµ 2 cét vµ tr¶ l ¹ i chÝnh m¶ng ®ã nh­ng d÷ l i Öu ®­î c s¾p xÕp l ¹ i theo chi Òu t¨ ng dÇn cña cét thø 2.
3. Vi Õt mét thñ tôc nhËn mét m¶ng gi ¸ trÞthùc X ví i n dßng m cét vµ tr¶ vÒmét m¶ng Y cï ng sè dßng, sè cét nh­ng d÷ l i Öu ®­î c bi Õn ®æi sao cho c¸ c phÇn tö
t­¬ng øng cña cét thø nhÊt vµ cét thø J ®­î c ®æi chç cho nhau.
4. Gi ¶ sö cho tr­í c hai ma trËn A ( n dßng, m cét) vµ ma trËn B ( m dßng, l cét). TÝch AB sÏ l µ ma trËn C ( n dßng, l cét) ví i c¸ c phÇn tö ®­î c tÝnh theo c«ng
thøc
) ..., , 1 ; ..., , 1 (
1
, , ,
l j n i b a c
m
k
j k k i j i
· · ·

·
.
Vi Õt thñ tôc TI CHMT (A, B, N, M, L, C) ví i c¸ c ®èi sè ®Çu vµo l µ ma trËn A , ma trËn B , c¸ c tham sè N, M, L vµ ®èi sè ®Çu ra l µ ma trËn C .
5. HÖph­¬ng tr×nh ®¹ i sè tuyÕn tÝnh n Èn
229 230
¹
¹
¹
¹
¹
'
¹
· + + +
· + + +
· + + +

...
... ... ... ... ...
...
...
2 2 1 1
2 2 2 22 1 21
1 1 2 12 1 11
n n nn n n
n n
n n
b x a x a x a
b x a x a x a
b x a x a x a

®­î c vi Õt d­í i d¹ ng ma trËn nh­ sau
A x = b
trong ®ã
( )

,
`

.
|
· ·
...
... ... ... ...
...
...

2 1
2 22 21
1 12 11
nn n n
n
n
ij
a a a
a a a
a a a
a A
;

,
`

.
|
·
...

2
1
n
b
b
b
b
;

,
`

.
|
·
...

2
1
n
x
x
x
x
.
H· y vi Õt thñ tôc GA USS (A , B, N, X) nhËn vµo c¸ c m¶ng A, B, sè Èn N cña hÖvµ tÝnh ra m¶ng X theo ph­¬ng ph¸ p l o¹ i bi Õn cña Gauss. Xem gi ¶i thÝch vÒph­¬ng
ph¸ p Gauss trong phô l ôc 2.

Ch­¬ng 10
K i Óu d÷ l i Öu v¨ n b¶n
Ngoµi nh÷ng d÷ l i Öu sè nh­ c¸ c sè nguyª n, sè thùc, m¸ y tÝnh cßn cã thÓl ­u gi ÷ vµ xö l ý nh÷ng d÷ l i Öu v¨ n b¶n nh­ nh÷ng ch÷ c¸ i , nh÷ng ®o¹ n v¨ n b¶n, nh÷ng ch÷
sè vµ mét sè ký hi Öu kh¸ c. Trong Fortran gäi chung nh÷ng dò l i Öu nµy l µ d÷ l i Öu ký tù. Trong bµi nµy chóng ta xÐt thª m nh÷ng ®Æc ®i Óm khai b¸ o nh÷ng d÷ l i Öu ký tù,
mét sè thao t¸ c ví i nh÷ng d÷ l i Öu ký tù vµ øng dông cña chóng trong xö l ý th«ng ti n.
10.1. TËp c¸ c ký t ù cña Fort ran
231 232
TËp ký tù cña Fortran gåm 26 ch÷ c¸ i ti Õng Anh, m­êi ch÷ sè tõ 0 ®Õn 9, dÊu trèng vµ 12 ký hi Öu sau ®©y:
+ − * / = ( ) , . ' $ :
Ngoµi ra cßn mét sè ký tù kh¸ c tï y thuéc vµo nh÷ng hÖm¸ y tÝnh kh¸ c nhau.
C¸ c h»ng ký tù bao gi ê còng n»m trong cÆp dÊu nh¸ y trª n. Trong h»ng ký tù dÊu nh¸ y trª n ' ®­î c bi Óu thÞb»ng hai dÊu nh¸ y trª n '' (kh«ng ph¶i dÊu ngoÆc kÐp). ThÝ
dô ch÷ LET'S cña ti Õng Anh sÏ ®­î c vi Õt l µ 'LET''S'.
Th«ng th­êng ng­êi ta xö l ý trong m¸ y tÝnh nh÷ng tõ, nh÷ng dßng ch÷ gåm mét sè ký tù ghÐp l ¹ i ví i nhau. Trong tr ­êng hî p ®ã ng­êi ta gäi l µ x©u ký tù. § é dµi
cña x©u ký tù l µ sè ký tù ®­î c ghÐp l ¹ i trong x©u ký tù ®ã. Mét ký tù còng cã thÓcoi l µ mét x©u ký tù ví i ®é dµi b»ng 1. Do ®ã, ta gäi chung d÷ l i Öu x©u ký tù l µ d÷ l i Öu
ký tù hay d÷ l i Öu v¨ n b¶n. D­í i ®©y l µ thÝdô vÒc¸ c h»ng ký tù vµ ®é dµi t­¬ng øng cña chóng:
'CHU NHAT' 8 ký t ù
'SENSOR 23' 9 ký t ù
'08: 40−13: 25' 11 ký tù
'L E QUY DON' 10 ký tù
' ' 2 ký t ù
'''''' 2 ký t ù
10.2. C¸ c d¹ ng khai b¸ o bi Õn ký t ù
♦ Bi Õn ký tù ®­î c khai b¸ o b»ng l Önh m« t¶ d¹ ng tæng qu¸ t nh­ sau:
CHA RA CTER * n Danh s¸ ch bi Õn
trong ®ã n chØsè ký tù (®é dµi ) trong mçi x©u ký tù. ThÝdô l Önh
CHARACTER * 8 TEN, NGAY
chØr»ng TEN vµ NGAY l µ nh÷ng bi Õn chøa 8 ký tù mçi bi Õn.
♦ L Önh CHA RA CTER bi Õn thÓsau ®©y cho phÐp ta khai b¸ o nh÷ng bi Õn ký tù ví i ®é dµi kh¸ c nhau trª n cï ng mét dßng l Önh
CHA RA CTER TI TL E * 10, NUOC * 2
♦ Mét m¶ng chøa mét sè phÇn tö, mçi phÇn tö cã gi ¸ trÞl µ mét x©u ký tù ®­î c khai b¸ o b»ng mét trong hai c¸ ch t­¬ng ®­¬ng nh­ sau:
233 234
CHA RA CTER * 4 NA ME (50)
CHA RA CTER NA ME (50) * 4
♦ C¸ c x©u ký tù còng cã thÓ®­î c dï ng trong c¸ c ch­¬ng tr×nh con. X©u ký tù ph¶i ®­î c khai b¸ o b»ng l Önh CHARACTER trong c¶ ch­¬ng tr×nh chÝnh vµ ch­¬ng
tr×nh con. Còng nh­ c¸ c m¶ng d÷ l i Öu sè nguyª n, sè thùc, trong ch­¬ng tr×nh con cã thÓkhai b¸ o bi Õn ký tù mµ kh«ng cÇn chØ®Þnh râ ®é dµi x©u vµ kÝch th­í c m¶ng. ThÝ
dô:
CHA RA CTER * (* ) BCC
CHA RA CTER * (* ) NA ME (N)
10.3. NhËp, x uÊt d÷ l i Öu ký t ù
Khi x©u ký tù ®­î c dï ng trong l Önh xuÊt toµn bé x©u ®­î c i n ra. Nh÷ng dÊu trèng ®­î c tù ®éng chÌ n vµo x©u ®Ót¸ ch ri ª ng x©u ký tù ví i nh÷ng môc i n kh¸ c cï ng
dßng. Trong l Önh nhËp, gi ¸ trÞcña bi Õn ký tù ph¶i ®­î c bao trong cÆp dÊu nh¸ y trª n. NÕu sè ký tù trong cÆp dÊu nh¸ y nhi Òu h¬n so ví i ®é dµi ®· m« t¶ cña bi Õn ký tù, th×
nh÷ng ký tù thõa ë bª n ph¶i sÏ bÞbá qua (bÞc¾t bá); nÕu sè ký tù Ýt h¬n − nh÷ng vÞtrÝthõa ë bª n ph¶i ®­î c tù ®éng ®i Òn b»ng c¸ c dÊu trèng. § Ói n x©u ký tù trong l Önh
xuÊt cã ®Þnh d¹ ng, cã thÓdï ng ®Æc t¶ A (chó ý, cã thÓkh«ng cÇn chØrâ sè vÞtrÝdµnh cho môc i n). ThÝdô: ví i ®o¹ n ch­¬ng tr×nh:
CHARACTER * 20 THU
PRI NT * , ' HAY NHAP MOT NGA Y TRONG TUAN'
REA D * , THU
PRI NT 5, THU
5 FORMAT (1X, 'NGAY VUA NHAP LA ', A)
END
th×t­¬ng t¸ c trª n mµn h×nh sÏ nh­ sau:





ThÊy r»ng sè ký tù gâ vµo bi Õn THU chØb»ng 8, kh«ng dµi tí i 20 nh­ ®· khai b¸ o. Nh­ng khi i n ra mµn h×nh ta kh«ng thÊy râ nh÷ng dÊu trèng ®­î c tù ®éng ®i Òn
HAY NHAP MOT NGAY TRONG TUAN
'CHU NHAT' ↵
NGAY VUA NHAP L A CHU NHAT
235 236
vµo phÝa bª n ph¶i . NÕu l Önh FORMAT cña l Önh i n cã d¹ ng
FORMAT (1X, A, ' LA NGAY VUA NHAP')
th×trª n mµn h×nh sÏ thÊy râ nh÷ng dÊu trèng nh­ sau:






10.4. Nh÷ng t hao t ¸ c ví i d÷ l i Öu ký t ù
10.4.1. G¸ n c¸ c gi ¸ trÞký tù
Nh÷ng gi ¸ trÞký tù cã thÓ®­î c g¸ n cho c¸ c bi Õn ký tù b»ng l Önh g¸ n vµ mét h»ng ký tù. NÕu h»ng cã ®é dµi nhá h¬n sè ký tù ®· khai b¸ o cña bi Õn, th×c¸ c dÊu trèng
sÏ tù ®éng ®­î c ®i Òn vµo bª n ph¶i ; nÕu h»ng cã ®é dµi l í n h¬n - c¸ c ký tù thõa sÏ bÞbá qua. ThÝdô:
CHARACTER * 4 MONHOC (3)
MONHOC (1) = 'TOAN'
MONHOC (2) = 'L Y'
MONHOC (3) = 'HOA HOC'
Trong nh÷ng l Önh trª n ®©y ta khai b¸ o m¶ng MONHOC gåm 3 phÇn tö, mçi phÇn tö l µ mét x©u dµi 4 ký tù. VËy trong MONHOC (1) sÏ l ­u 'TOAN', trong
MONHOC (2) sÏ l ­u 'LYbb', trong MONHOC (3) sÏ l ­u 'HOAb' (ch÷ b chØdÊu trèng). Qua thÝdô nµy ta thÊy tÇm quan träng cña vi Öc sö dông c¸ c x©u cã cï ng ®é dµi
m« t¶ cña bi Õn; nÕu kh«ng c¸ c l Önh sÏ xö l ý sai .
Mét bi Õn ký tù còng cã thÓ®­î c g¸ n gi ¸ trÞcña bi Õn ký tù kh¸ c b»ng l Önh g¸ n, thÝdô
CHARACTER * 4 L OAI 1, L OAI 2
LOAI 1 = 'GI OI '
LOAI 2 = L OAI 1
HAY NHAP MOT NGAY TRONG TUAN
'CHU NHAT'
CHU NHAT L A NGAY VUA NHAP
237 238
Sau l Önh g¸ n nµy, c¶ hai bi Õn LOAI 1 vµ LOAI 2 ®Òu l ­u x©u ký tù 'GI OI '.
L Önh DATA còng cã thÓdï ng ®Ókhëi x­í ng gi ¸ trÞcña c¸ c bi Õn ký tù. ThÝdô sau g¸ n 12 tª n th¸ ng ti Õng Anh vµo m¶ng THA NG:
CHARACTER * 3 THANG (12)

DA TA THA NG / ' Jan' , ' Feb', 'M ar' , 'A pr', 'M ay' , ' Jun',
*
'Jul ', 'A ug', 'Sep' , ' Oct', 'Nov', 'Dec' /
10.4.2. So s¸ nh c¸ c gi ¸ trÞký t ù
Bi Óu thøc l «gi c trong l Önh I F l «gi c còng cã thÓl µ mét phÐp so s¸ nh c¸ c bi Õn, h»ng ký tù. ThÝdô, nÕu c¸ c bi Õn THANG, CH, TG l µ nh÷ng bi Õn ký tù, c¸ c l Önh sau
®©y l µ nh÷ng l Önh ®óng:
I F (THANG .EQ. 'FEB') NGAY = 28
I F (CH (I ) .GT. CH (I +1)) THEN
TG = CH (I )
CH (I ) = CH (I +1)
CH (I +1) = TG
END I F
Khi ®¸ nh gi ¸ mét bi Óu thøc l «gi c ví i c¸ c x©u ký tù, tr­í c hÕt ch­¬ng tr×nh xÐt ®é dµi cña hai x©u. NÕu mét x©u ng¾n h¬n x©u kh¸ c, th×x©u ng¾n h¬n ®­î c bæsung
thª m c¸ c dÊu trèng ë bª n ph¶i sao cho hai x©u trë thµnh cã cï ng ®é dµi . Vi Öc so s¸ nh hai x©u ký tù cï ng ®é dµi thùc hi Ön tõ tr¸ i sang ph¶i theo tõng ký tù mét. Hai x©u
b»ng nhau nÕu chóng cã cï ng nh÷ng ký tù trong cï ng mét thø tù. C¸ c ký tù ®­î c so s¸ nh ví i nhau theo chuçi thø tù so s¸ nh (col l ati ng sequence). Chuçi nµy l i Öt kª c¸ c ký
tù tõ thÊp ®Õn cao. ThÝdô, mét phÇn cña chuçi thø tù so s¸ nh ®èi ví i c¸ c ký tù ASCI I l i Öt kª c¸ c ký tù d­í i ®©y:
Chuçi thø tù so s¸ nh cña c¸ c ký tù:
______________________________________
b''#$%& ()* +,-./
0123456789
:;=?@
ABCDEFGHI JKLMNOPQRSTUV WXYZ
______________________________________
Theo chuçi nµy, nh÷ng so s¸ nh sau l µ ®óng:
'A 1' < 'A2'
239 240
'JOHN' < 'JOHNSTON'
'175' < '176'
'THREE' < 'TWO'
'$' < 'DOL L AR'
NÕu c¸ c x©u ký tù chØchøa c¸ c ch÷ c¸ i , th×thø tù tõ thÊp ®Õn cao l µ thø tù al phabª , ®­î c gäi l µ thø tù tõ vùng (l exi cographi c orderi ng).
10.4.3. TrÝch ra x©u con
X©u con l µ mét phÇn ®­î c trÝch ra tõ x©u xuÊt ph¸ t vµ gi ÷ nguyª n thø tù ban ®Çu. Trong Fortran x©u con ®­î c vi Õt b»ng tª n cña x©u xuÊt ph¸ t, kÌ m theo hai bi Óu
thøc nguyª n n»m trong cÆp dÊu ngoÆc ®¬n, c¸ ch nhau bëi dÊu hai chÊm. Bi Óu thøc thø nhÊt chØvÞtrÝ®Çu ti ª n ë x©u xuÊt ph¸ t mµ tõ ®ã x©u con ®­î c trÝch ra. Bi Óu thøc
thø hai chØvÞtrÝcuèi cï ng. ThÝdô, nÕu x©u 'FORTRAN' ®­î c l ­u trong bi Õn LANG, ta cã thÓcã nh÷ng x©u con nh­ sau
Bi Õn X©u con
LANG (1 : 1) 'F'
LANG (1 : 7) 'FORTRAN'
LANG (2 : 3) 'OR'
LANG (7 : 7) 'N'
1) Ta cã thÓkh«ng vi Õt bi Óu thøc thø nhÊt trong cÆp dÊu ngoÆc ®¬n nÕu gi ¸ trÞcña nã b»ng 1 vµ cã thÓkh«ng vi Õt bi Óu thøc thø hai nÕu gi ¸ trÞcña nã b»ng ®é dµi cña
x©u xuÊt ph¸ t. Ta còng cã thÓkh«ng vi Õt c¶ hai bi Óu thøc. Nh­ng trong c¶ ba tr­êng hî p vÉn ph¶i cã dÊu hai chÊm (:) ë trong cÆp dÊu ngoÆc. ThÝdô:
LANG (:4) l µ 'FORT'
LANG (5:) l µ 'RAN'
LANG (:) l µ 'FORTRAN'
2) Khi phÐp trÝch ra x©u con sö dông cï ng mét tª n bi Õn, c¸ c bi Óu thøc trong cÆp dÊu ngoÆc ®¬n kh«ng ®­î c phñ l ª n nhau. ThÝdô, nÕu bi Õn L ANG chøa x©u
'FORMATS', th×l Önh
L A NG (7: 7) = L A NG (6: 6)
sÏ bi Õn gi ¸ trÞcña LANG thµnh 'FORMATT'. Nh­ng l Önh sau ®©y sÏ sai kh«ng thÓthùc hi Ön ®­î c
L A NG (3: 5) = L A NG (2: 4)
3) Nh÷ng tr­êng hî p nh­: c¸ c vÞtrÝ®Çu hoÆc cuèi kh«ng ph¶i l µ sè nguyª n, l µ sè ©m, vÞtrÝ®Çu l í n h¬n vÞtrÝcuèi , vÞtrÝ®Çu hoÆc vÞtrÝcuèi cã gi ¸ trÞl í n h¬n ®é dµi
m« t¶ cña x©u con, vi Öc trÝch ra x©u con sÏ kh«ng thÓthùc hi Ön ®óng ®¾n.
ThÝdô 32: § Õm sè ký tù trong mét v¨ n b¶n. Gi ¶ sö mét bøc ®i Ön dµi 50 ký tù. H· y ®Õm sè tõ trong bøc ®i Ön ®ã. Ta bi Õt r»ng trong mét v¨ n b¶n so¹ n ®óng th×c¸ c tõ
c¸ ch nhau b»ng mét dÊu trèng, do ®ã ta chØcÇn ®Õm sè dÊu trèng trong v¨ n b¶n vµ sè tõ sÏ b»ng sè dÊu trèng céng thª m mét. Ví i tr­êng hî p nµy ch­¬ng tr×nh sau sÏ
241 242
®Õm ®­î c ®óng sè tõ:
CHARACTER * 50 MESSGE
I NTEGER COUNT, I
COUNT = 0
DO 10 I = 1, 50
I F (M ESSGE (I : I ) .EQ. ' ') COUNT = COUNT + 1
10 CONTI NUE
PRI NT 5, COUNT + 1
5 FORMAT (1X, 'BUC DI EN GOM ', I 2, ' TU')
END
10.4.4. K Õt hî p c¸ c x©u ký tù
KÕt hî p hay céng l µ thao t¸ c ghÐp hai hoÆc mét sè x©u ký tù vµo thµnh mét x©u ký tù. Thao t¸ c nµy thùc hi Ön bëi hai dÊu g¹ ch chÐo //. ThÝdô muèn cã tõ WORKED
ta cã thÓdï ng phÐp kÕt hî p
'WORK' // 'ED'
Nhãm l Önh sau ®©y cho phÐp vi Õt ra ngµy th¸ ng theo quy c¸ ch ti Õng Vi Öt, tøc thª m c¸ c g¹ ch chÐo ng¨ n c¸ ch gi ÷a c¸ c ký hi Öu ngµy, th¸ ng vµ n¨ m:
CHA RA CTER DA Y * 2,MONTH* 2,Y EA R* 4,DA TE* 10
REA D * , DAY , MONTH, Y EA R
DA TE = DA Y / /'/' //MONTH//'/ '//Y EA R
PRI NT * , DA TE
END
Theo nhãm l Önh nµy, nÕu khi thùc hi Ön l Önh READ ta gâ tõ bµn phÝm '05' '10' '1999' ↵ th×trª n mµn h×nh sÏ i n ra:
05/10/1999.
10.4.5. Nh÷ng hµm chuÈn xö l ý x©u ký t ù
• Hµm I NDEX
Hµm nµy cã hai ®èi sè ki Óu x©u ký tù, ®­a ra mét sè nguyª n chØvÞtrÝcña x©u thø hai trong x©u thø nhÊt. ThÝdô nÕu ta cã bi Õn STR chøa mÖnh ®Ò'TO BE OR NOT
243 244
TO BE' vµ dï ng l Önh
K = I NDEX (STR, 'BE')
th×bi Õn K sÏ cã gi ¸ trÞ4 v×x©u 'BE' xuÊt hi Ön l Çn ®Çu ti ª n trong x©u STR ë vÞtrÝthø 4.
• Hµm L EN
Hµm L EN cã mét ®èi sè ki Óu x©u ký tù, nã ®­a ra mét sè nguyª n chØ®é dµi cña x©u ®ã. Hµm nµy rÊt cã Ých trong nh÷ng ch­¬ng tr×nh con chÊp nhËn c¸ c x©u ký tù
®é dµi bÊt kú nh­ng cÇn bi Õt ®é dµi thùc tÕë trong ch­¬ng tr×nh con.
ThÝdô 33: CÊu t¹ o tª n vi Õt t ¾t cña ng­êi . Vi Õt ch­¬ng tr×nh ®äc tõ bµn phÝm hä tª n ®Çy ®ñ (gåm hä, ch÷ ®Öm vµ tª n) cña mét ng­êi vµ i n l ª n mµn h×nh d¹ ng vi Õt t¾t.
(ThÝdô, nÕu nhËp vµo hä tª n ®Çy ®ñ nh­ sau:
TRAN CONG MI NH,
th×d¹ ng i n ra sÏ l µ
T. C. MI NH.
Ch­¬ng tr×nh NAMEED d­í i ®©y cho phÐp ta gâ tõ bµn phÝm mét x©u ký tù gåm c¶ hä, ch÷ ®Öm vµ tª n trª n cï ng mét dßng nh­ng c¸ ch nhau bëi mét dÊu trèng.
Thñ tôc con EXTR cho phÐp t¸ ch ri ª ng phÇn hä, ch÷ ®Öm vµ tª n dùa vµo vÞtrÝc¸ c dÊu trèng trong hä tª n ®Çy ®ñ. Sau ®ã thñ tôc EDI T ghÐp c¸ c ch÷ c¸ i ®Çu ti ª n cña phÇn
hä, ch÷ ®Öm kÌ m theo c¸ c dÊu chÊm vµ dÊu trèng ví i tª n ®ÓcÊu t¹ o thµnh tª n vi Õt t¾t.
PROGRAM NA MEED
CHARA CTER HO * 10, DEM * 10, TEN * 20, HOTEN * 25
PRI NT * , 'Nhap ho, chu dem, ten cach nhau 1 dau trong'
READ 5, HOTEN
5 FORMAT (A )
CAL L EXTR (HOTEN, HO, DEM, TEN)
CAL L EDI T (HO, DEM, TEN, HOTEN)
PRI NT * , HOTEN
END
SUBROUTI NE EX TR (XHOTEN, XHO, X DEM, XTEN)
CHARA CTER * (* ) XHO, XTEN, XDEM, XHOTEN
I NTEGER B1, B2
B1 = I NDEX (X HOTEN, ' ')
B2 = B1 + I NDEX ( X HOTEN (B1 + 1: ) , ' ')
245 246
X HO = X HOTEN (: B1-1)
X DEM = X HOTEN (B1+1: B2-1)
X TEN = X HOTEN (B2+1: )
RETURN
END
SUBROUTI NE EDI T (XHO, XDEM, XTEN, XHOTEN)
I NTEGER L
CHARA CTER * (* ) XHO, XTEN, XDEM, XHOTEN
X HOTEN = X HO(1: 1) / / ' .'
L = I NDEX (X HOTEN, ' ') + 1
X HOTEN (L : L + 2) = X DEM (1: 1) / / '. '
X HOTEN (L + 3: ) = X TEN
RETURN
END

• C¸ c hµm CHA R vµ I CHA R
C¸ c hµm nµy thao t¸ c ví i c¸ c ký tù trong chuçi thø tù so s¸ nh dï ng trong m¸ y tÝnh. NÕu mét m¸ y tÝnh cã 256 ký tù trong chuçi thø tù so s¸ nh cña nã, th×c¸ c ký tù
nµy ®­î c ®¸ nh sè tõ 0 ®Õn 255. Hµm CHA R nhËn mét ®èi sè nguyª n vµ ®­a ra mét ký tù trong chuçi thø tù so s¸ nh ë vÞtrÝøng ví i sè nguyª n ®ã. Hµm I CHA R l µ hµm
ng­î c cña hµm CHA R. Nã nhËn ®èi sè l µ bi Õn mét ký tù vµ tr¶ vÒmét sè nguyª n øng ví i vÞtrÝcña ký tù ®ã ë trong chuçi thø tù so s¸ nh.
V×c¸ c m¸ y tÝnh kh¸ c nhau cã c¸ c chuçi thø tù so s¸ nh kh¸ c nhau, nª n c¸ c hµm nµy cã thÓdï ng ®Óx¸ c ®Þnh vÞtrÝcña nh÷ng ký tù trong chuçi thø tù so s¸ nh.
ThÝdô, nÕu b¹ n muèn i n ra mµn h×nh tÊt c¶ c¸ c ký tù trong chuçi thø tù so s¸ nh ®­î c dï ng trong m¸ y tÝnh cña m×nh tõ vÞtrÝ0 ®Õn 255 cã thÓdï ng ch­¬ng tr×nh sau:
PROGRAM CSCHAR
DO I = 0, 255
PRI NT * , I , ' ', CHA R (I )
END DO
END
Ch­¬ng tr×nh sau ®©y cho phÐp i n ra mµn h×nh vÞtrÝcña c¸ c ch÷ c¸ i i n hoa ti Õng Anh, nh÷ng ch÷ c¸ i th­êng vµ nh÷ng ch÷ sè tõ 0 ®Õn 9 trong chuçi thø tù so s¸ nh
trong m¸ y tÝnh b¹ n ®ang dï ng:
PROGRAM COLSEQ
247 248
CHARACTER * 70 SET
SET (1: 26) = 'ABCDEFGHI JKLMNOPQRSTUVWXYZ'
SET (27: 52) = 'abcdef ghi j kl mnopqrstuvwxyz'
SET (53: 62) = '0123456789'
DO I = 1, 62
PRI NT * , SET (I : I ), I CHA R (SET (I : I ))
END DO
END
Ví i c¸ c m¸ y tÝnh th«ng dông ngµy nay, nÕu ch¹ y ch­¬ng tr×nh nµy, ta sÏ thÊy tËp c¸ c ch÷ sè tõ ‘ 0’ ®Õn ‘ 9’ tuÇn tù cã vÞtrÝtõ 48 ®Õn 57, tËp c¸ c ch÷ c¸ i hoa ti Õng
Anh tõ ‘ A ’ ®Õn ‘ Z’ cã vÞtrÝtõ 65 ®Õn 90 vµ tËp c¸ c ch÷ c¸ i th­êng ti Õng Anh tõ ‘ a’ ®Õn ‘ z’ cã vÞtrÝtõ 97 ®Õn 122 trong chuçi thø tù so s¸ nh. C¸ c vÞtrÝcßn l ¹ i trong chuçi
thø tù so s¸ nh sÏ øng ví i nh÷ng ký tù kh¸ c, trong ®ã cã nh÷ng ký tù chuyª n dï ng ®Óbi Óu di Ôn c¸ c ch÷ c¸ i Hy L ¹ p, c¸ c ký tù dï ng ®ÓkÎ bi Óu b¶ng... Ta cã thÓkhai th¸ c
nh÷ng chi ti Õt nµy ®Óvi Õt nh÷ng thñ tôc rÊt cã Ých nh­ i n bi Óu b¶ng kh¸ ®Ñp khi xuÊt d÷ l i Öu l ª n mµn h×nh, tù ®éng t¹ o c¸ c tª n f i l e trong ch­¬ng tr×nh... khi cÇn thi Õt.
• C¸ c hµm L GE, L GT, L L E, L L T
Nh÷ng hµm nµy cho phÐp ta so s¸ nh nh÷ng x©u v¨ n b¶n dùa trª n chuçi thø tù so s¸ nh ASCI I . Nh÷ng hµm nµy sÏ cã Ých nÕu mét ch­¬ng tr×nh cã so s¸ nh c¸ c x©u hay
s¾p xÕp ký tù vµ ®­î c dï ng trong c¸ c m¸ y tÝnh kh¸ c nhau. Nh÷ng hµm nµy tr¶ vÒmét gi ¸ trÞl «gi c - TRUE hoÆc FAL SE tuú thuéc kÕt qu¶ so s¸ nh hai ®èi sè ki Óu x©u ký
tù. ThÝdô, nÕu ta cã hai bi Õn ký tù XAU1, XAU2 th×L GE (XA U1, XA U2) sÏ cho gi ¸ trÞTRUE nÕu XAU1 l í n h¬n hoÆc b»ng XAU2 vÒph­¬ng di Ön tõ vùng. C¸ c hµm
L GT, L L E vµ L L T thùc hi Ön c¸ c phÐp so s¸ nh “ l í n h¬n vÒtõ vùng” , “ nhá h¬n hoÆc b»ng vÒtõ vùng” vµ “ nhá h¬n vÒtõ vùng” . Nhí r»ng c¸ c hµm nµy dùa trª n chuçi thø
tù so s¸ nh ASCI I chø kh«ng ph¶i chuçi thø tù so s¸ nh cña m¸ y tÝnh.
Trong Fortran 90 cßn cã c¸ c hµm A DJUSTL , A DJUSTR dï ng ®Ódån mét x©u ký tù vÒtr¸ i hoÆc vÒph¶i b»ng c¸ ch c¾t bá nh÷ng dÊu trèng ë phÝa tr¸ i hoÆc ë phÝa
ph¶i cña x©u ®ã. Hµm TRI M c¾t bá nh÷ng dÊu trèng ë ®u«i mét x©u v¨ n b¶n vµ gi ¶m ®é dµi x©u cho t­¬ng xøng
*
.
ThÝdô 34: S¾p xÕp danh s¸ ch theo thø tù al phabª . Vi Õt ch­¬ng tr×nh ®äc tõ bµn phÝm tª n vµ sè ®i Ön tho¹ i cña 20 ng­êi . I n l ª n mµn h×nh danh s¸ ch s¾p xÕp thø tù
al phabª theo tª n ng­êi . Trong thÝdô nµy ta sö dông c¸ c hµm so s¸ nh ®èi ví i b¶ng thø tù so s¸ nh ASCI I .
PROGRA M NM SORT
CHARA CTER * 8 TEN(20), TEL (20), TEMP

*
H×nh nh­ trong t hùc tÕhµm nµy vµ c¶ hµm L EN n÷a kh«ng l µm vi Öc ®óng nh­ ng­êi ta m« t ¶ nã trong tµi l i Öu, ®é dµi x©u v¨ n b¶n nhËn ®­î c vÉn chØl µ ®é dµi m« t¶ chø kh«ng
ph¶i ®é dµi thùc tÕ.
249 250
DO I = 1, 20
PRI NT * , 'NHA P TEN NGUOI THU ', I
REA D 5, TEN(I )
PRI NT * , 'SO DI EN THOA I '
REA D 5, TEL (I )
ENDDO
5 FORMAT (A )
DO I = 1, 19
K = I
DO J = I +1, 20
I F ( L GT (TEN (K ), TEN (J)) ) K = J
END DO
TEMP = TEN (K)
TEN (K ) = TEN (I )
TEN (I ) = TEMP
TEMP = TEL (K )
TEL (K) = TEL (I )
TEL (I ) = TEMP
PRI NT * , TEN (I ), TEL (I )
END DO
PRI NT * , TEN (20), TEL (20)
END
ThÝdô 35: M· ho¸ bøc ®i Ön. M· hãa bøc ®i Ön l µ l µm cho dßng v¨ n b¶n b×nh th­êng cña bøc ®i Ön cã mét d¹ ng kh¸ c th­êng chØcã ng­êi m· hãa mí i hi Óu ®­î c néi
dung cña nã. Ng­êi ta cã thÓm· ho¸ mét bøc ®i Ön theo c¸ ch sau: L Êy mét x©u gåm 62 ch÷ c¸ i vµ ch÷ sè l µm kho¸ . Tõng ch÷ c¸ i b×nh th­êng trong bøc ®i Ön ®­î c m· ho¸
b»ng mét ch÷ c¸ i trong kho¸ sao cho ch÷ A b×nh th­êng ®­î c thay b»ng ch÷ c¸ i ®Çu ti ª n trong kho¸ , ch÷ B ®­î c thay b»ng ch÷ c¸ i thø hai ... D­í i ®©y l µ mét ch­¬ng tr×nh
nhËn tõ bµn phÝm mét bøc ®i Ön vµ i n ra mµn h×nh d¹ ng m· ho¸ cña bøc ®i Ön ®ã. Trong ch­¬ng tr×nh nµy ta dï ng mét kho¸ l µ chuçi c¸ c ch÷ c¸ i vµ ch÷ sè s¾p xÕp theo thø
tù kh¸ c th­êng nh­ sau:
YXAZKLMBJOCFDVSWTREGHNI PUQ
yxazkl mbj ocf dvswtreghni puq9087564312
Vi Öc m· ho¸ c¸ c ch÷ c¸ i trong bøc ®i Ön ®­î c thùc hi Ön trong thñ tôc con ENCODE.
251 252
PROGRAM MSGCOD
CHARACTER DI EN* 255, MADI EN* 255,
CHARACTER KHOA* 62, A L PH* 62
AL PH = ‘ ABCDEFGHI JK L MNOPQRSTUV WXYZ’ //
* ‘ abcdef ghi j kl mnopqrstuvwxyz0123456789'
KHOA = 'YX AZKL MBJOCFDV SWTREGHNI PUQ’ //
* ‘ yxazkl mbj ocf dvswtreghni puq9087564312'
PRI NT* , 'ENTER A MESSEA GE’ ,
* ‘ (MAXI MUM 255 L ETTERS)'
READ (5, '(A 255)') DI EN
CAL L ENCODE (KHOA, AL PH, DI EN, MADI EN)
PRI NT 5, MADI EN
5 FORMA T (1X , / , 1X, 'THI S I S ENCODED AS' /, 1X, A /)
END

SUBROUTI NE ENCODE (KEY, AL P, MESSGE, SECRET)
CHARACTER MESSGE * (* ), SECRET * (* )
CHARACTER AL P * (* ), KEY * (* ), L ETTER
DO I = 1, L EN (MESSGE)
L ETTER = MESSGE (I : I )
J = I NDEX (AL P, L ETTER)
I F (J .EQ. 0) THEN
SECRET (I : I ) = L ETTER
EL SE
SECRET (I : I ) = KEY (J : J)
END I F
END DO
RETURN
END
Bµi tËp
1. C¸ c bi Õn K vµ J sÏ cã gi ¸ trÞb»ng bao nhi ª u sau khi thùc hi Ön nhãm l Önh sau ®©y:
253 254
CHARACTER * 18 STRG
I NTEGER K, J
STR = 'TO BE OR NOT TO BE'
K = I NDEX (STRG, 'BE')
J = I NDEX (STR (K + 1:), 'BE') + K
2. Gi ¶ sö c¸ c bøc ®i Ön ®­î c m· ho¸ b»ng mét kho¸ nh­ trong thÝdô 31, tøc dï ng chuçi c¸ c ch÷ c¸ i vµ ch÷ sè:
YXAZKLMBJOCFDVSWTREGHNI PUQ
yxazkl mbj ocf dvswtreghni puq9087564312
Ng­êi ta gi ¶i m· nh­ sau: Tõng ch÷ c¸ i trong m· ®i Ön sÏ ®­î c thay thÕbëi mét ch÷ c¸ i trong b¶ng ch÷ c¸ i al phabª theo quy t¾c: nÕu ch÷ c¸ i trong m· ®i Ön trï ng ví i
ch÷ c¸ i thø nhÊt trong kho¸ th×ch÷ c¸ i ®ã thay b»ng ch÷ A trong b¶ng ch÷ c¸ i al phabª , nÕu trï ng ví i ch÷ c¸ i thø hai th×thay nã b»ng ch÷ B... ThÝdô, gi ¶ sö m· ®i Ön l µ
dßng ch÷
DKKG YG YJRWSRG EY GHRZYU
th×theo quy t¾c trª n, ta cã bøc ®i Ön ®­î c gi ¶i m· nh­ sau:
MEET AT AI RPORT SA TURDAY
Vi Õt ch­¬ng tr×nh cho phÐp ®äc tõ bµn phÝm mét bøc ®i Ön d­í i d¹ ng m· ho¸ vµ i n l ª n mµn h×nh d¹ ng ®· gi ¶i m· cña nã.
3. Gi ¶ sö danh môc sè ®i Ön tho¹ i cña nh÷ng ng­êi quen cña b¹ n l ­u trong f i l e TELNUM d­í i d¹ ng nh÷ng dßng gåm tª n ng­êi ®Çy ®ñ vµ sè ®i Ön tho¹ i cña mçi
ng­êi ví i f ormat A30, A8. Fi l e kh«ng cã dßng ®Çu b¸ o th«ng ti n vÒsè dßng d÷ l i Öu vµ còng kh«ng cã dßng ký hi Öu cuèi f i l e b¸ o hÕt d÷ l i Öu. H· y vi Õt ch­¬ng tr×nh ®äc
vµo tõ bµn phÝm mét tª n ng­êi nµo ®ã, sau ®ã ki Óm tra xem ng­êi ®ã cã trong danh môc ®i Ön tho¹ i cña b¹ n kh«ng. NÕu kh«ng cã th×®­a ra th«ng b¸ o 'KHONG CO
TRONG DANH MUC', nÕu cã th×i n ra tª n ng­êi cï ng ví i sè ®i Ön tho¹ i t×m ®­î c sao cho sè ®i Ön tho¹ i ®­î c ®Æt trong cÆp dÊu ngoÆc ngay sau tª n.
4. Fi l e d÷ l i Öu ADDR chøa kho¶ng 50 tª n ng­êi vµ ®Þa chØ. Dßng thø nhÊt cña mçi ng­êi chøa hä tª n ®Çy ®ñ (30 ký tù) gåm hä, ch÷ ®Öm vµ tª n. Dßng thø hai chøa
®Þa chØsè nhµ vµ ®­êng phè (35 ký tù), tª n thµnh phè (15 ký tù) vµ sè ®i Ön tho¹ i (15 ký tù). Mçi x©u ký tù ®­î c ghi trong cÆp dÊu nh¸ y trª n. H· y vi Õt ch­¬ng tr×nh ®äc d÷
l i Öu vµ i n ra th«ng ti n vÒtõng ng­êi theo mÉu nh· n sau ®©y (thÝdô):
HUY, N. Q.
91 NGUYEN THI EN THUAT
NHA TRANG, (058)832536
255 256
Mçi nh· n c¸ ch nhau bèn dßng. Chó ý sau tª n thµnh phè l µ dÊu ph¶y, kh«ng nª n ®Ómét dÊu c¸ ch nµo tr­í c dÊu ph¶y ®ã.
5. Gi ¶ sö b¹ n ®· bi Õt r»ng ngµy ®Çu n¨ m cña mét n¨ m l µ ngµy thø mÊy trong tuÇn l Ô. H· y vi Õt ch­¬ng tr×nh i n tê l Þch th¸ ng Gi ª ng cña n¨ m ®ã d­í i d¹ ng dÔnh×n.
6. Gi ¶ sö b¹ n ®· bi Õt ngµy ®Çu n¨ m cña mét n¨ m nµo ®ã l µ thø mÊy trong tuÇn l Ô. H· y vi Õt ch­¬ng tr×nh i n tê l Þch cña mét th¸ ng, n¨ m bÊt kú trong t­¬ng l ai d­í i
d¹ ng dÔnh×n. Th¸ ng vµ n¨ m nhËp tõ bµn phÝm.
7. Vi Õt ch­¬ng tr×nh i n b¶ng c¸ c to¸ n tö l «gi c (b¶ng 4.2, ch­¬ng 4, trang 56).
8. V i Õt thñ tôc TDBANG (N, TENCOT) trong ®ã N l µ ®èi sè nguyª n, TENCOT l µ m¶ng mét chi Òu gåm N phÇn tö v¨ n b¶n chuyª n dï ng ®Ói n ra mét ti ª u ®Òcét cña
b¶ng. ThÝdô nÕu ch­¬ng tr×nh gäi thñ tôc nµy vµ chuyÓn ®èi sè thùc tÕb»ng 12 vµ mét m¶ng 12 tª n vi Õt t¾t th¸ ng ti Õng Anh ‘ JAN’ , ’ FEB’ , ‘ MA R’ , ‘ APR’ , ‘ MAY’ , ‘ JUN’ ,
’ JUL ’ , ‘ AUG’ , ‘ SEP’ , ‘ OCT’ , ‘ NOV ’ , ‘ DEC’ th×ch­¬ng tr×nh sÏ i n ra tÝt ®Çu b¶ng cã d¹ ng nh­ d­í i ®©y:
JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC

9. Sè l i Öu gi ¸ trÞngµy cña c¸ c yÕu tè khÝt­î ng thñy v¨ n t¹ i tr¹ m quan tr¾c ®­î c l ­u trong f i l e ASCI I cã quy c¸ ch ghi nh­ sau: Dßng trª n cï ng ghi tª n tr¹ m. Dßng thø
2 cã hai sè nguyª n vi Õt c¸ ch nhau l Çn l ­î t chØtæng sè ngµy quan tr¾c vµ sè yÕu tè ®­î c quan tr¾c. Dßng thø ba cã 6 sè nguyª n vi Õt c¸ ch nhau l Çn l ­î t chØngµy, th¸ ng,
n¨ m ®Çu vµ ngµy, th¸ ng, n¨ m cuèi quan tr¾c. Dßng thø 4 l µ ti ª u ®Òcét l i Öt kª tª n tÊt c¶ c¸ c yÕu tè ®­î c quan tr¾c, mçi tª n ®­î c ghi ví i ®é réng 8 vÞtrÝvµ c¨ n bª n ph¶i .
C¸ c dßng ti Õp theo l Çn l ­î t ghi gi ¸ trÞcña c¸ c yÕu tè, mçi dßng mét ngµy. TÝnh gi ¸ trÞtrung b×nh th¸ ng cña tÊt c¶ c¸ c yÕu tè trong tÊt c¶ c¸ c n¨ m quan tr¾c. KÕt qu¶ ghi
vµo nh÷ng f i l e mí i , mçi yÕu tè mét f i l e, sao cho tª n f i l e trï ng ví i tª n cña yÕu tè quan tr¾c.






257 258
Ch­¬ng 11
Nh÷ng ®Æc ®i Óm bæsung vÒf i l e
11.1. C¸ c f i l e néi t ¹ i (I nt ernal Fi l es)
Khi mét ®¬n vÞf i l e trong c¸ c l Önh nhËp hoÆc xuÊt l µ tª n cña mét bi Õn ký tù, th×l Önh sÏ chuyÓn d÷ l i Öu tõ mét vï ng l ­u gi ÷ néi t¹ i trong bé nhí sang mét vï ng kh¸ c.
Nh÷ng vï ng l ­u gi ÷ nµy ®­î c gäi l µ c¸ c f i l e néi t¹ i (i nternal f i l e). ThÝdô, ta cã thÓ®äc d÷ l i Öu tõ mét x©u ký tù thay v×®äc tõ mét dßng d÷ l i Öu trong f i l e th«ng th­êng
ví i nh÷ng l Önh sau ®©y:
CHARACTER * 13 DATA1
I NTEGER I , J
REA L X
DATA1 = '137 65 42.17'
REA D (DATA1, * ) I , J, X
Nh÷ng l Önh trª n ®©y cã nghÜa r»ng chóng ta khai b¸ o mét bi Õn cã ki Óu v¨ n b¶n DATA1 ví i ®é dµi 13 ký tù. Sau ®ã g¸ n cho bi Õn nµy dßng v¨ n b¶n:
‘ 137 65 42.17 ‘
§ ã l µ vi Öc b×nh th­êng, chóng ta ®· bi Õt tõ tr­í c ®Õn nay. Nh­ng h· y chó ý ®Õn l Önh cuèi cï ng. § ã l µ l Önh:
READ (DATA 1, * ) I , J, X
Tr«ng l Önh nµy gi èng nh­ mét l Önh ®äc d÷ l i Öu b×nh th­êng, chØcã kh¸ c l µ thay v×®¬n vÞf i l e trong cÆp dÊu ngoÆc ®¬n ta ®· ®­a tª n bi Õn DATA1 vµo ®ã. KÕt qu¶ l µ sau
l Önh ®äc nµy c¸ c ®o¹ n v¨ n b¶n bi Óu di Ôn nh÷ng ch÷ sè 137, 65 vµ 42.17 ®· ®­î c ®äc ra nh­ l µ nh÷ng sè nguyª n, sè thùc vµ g¸ n vµo c¸ c bi Õn nguyª n I , J vµ bi Õn thùc X
trong danh s¸ ch c¸ c bi Õn cÇn ®äc cña l Önh READ mét c¸ ch ®óng ®¾n. Sau nh÷ng l Önh nµy gi ¸ trÞc¸ c bi Õn sè sÏ nh­ sau:
I sÏ b»ng 137, J sÏ b»ng 65 vµ X b»ng 42.17.
§ ©y l µ mét ®Æc ®i Óm rÊt quan träng cña Fortran. Ta sÏ thÊy Ých l î i cña ®Æc ®i Óm nµy cña f i l e néi t¹ i qua thÝdô sau:
I NTEGER PTR
REA L A M OUNT
CHA RA CTER * 15 TEMP
. . .
. . .
259 260
REA D (12, 5) TEMP
5 FORM A T (A 10)
I F (I NDEX (TEMP, '$') .NE. 0) THEN
PTR = I NDEX (TEM P, '$' )
TEM P (PTR: PTR) = ' '
END I F
REA D (TEMP, * ) A MOUNT
Ví i ®o¹ n ch­¬ng tr×nh nµy d÷ l i Öu tõ trong ®¬n vÞf i l e (12) th«ng th­êng (f i l e ngo¹i ) ®­î c ®äc vµo bi Õn ký tù TEMP. Trong tr­êng hî p d÷ l i Öu cã kÌ m theo dÊu $ ë
bª n tr¸ i (c¸ ch vi Õt dÊu ®« l a ®»ng tr­í c vµ dÝnh l i Òn sè ti Òn cña nh÷ng ng­êi Mü th­êng l µm), th×l Önh ®äc
READ (12,5) TEMP
vÉn kh«ng m¾c l çi vÒki Óu d÷ l i Öu. Sau ®ã ta xö l ý, thay ký tù $ b»ng ký tù dÊu trèng vµ ®äc l Êy gi ¸ trÞsè thùc AMOUNT b»ng l Önh ®äc f i l e néi t¹ i
READ (TEMP, * ) A MOUNT
NhËn thÊy r»ng l Önh ®äc d÷ l i Öu tõ f i l e néi t¹ i hoµn toµn t­¬ng tù l Önh ®äc c¸ c f i l e th«ng th­êng. Thay v×sè hi Öu thi Õt bÞhay sè hi Öu f i l e, ta ghi tª n bi Õn (ë ®©y l µ bi Õn
TEMP) vµo vÞtrÝcña thi Õt bÞhay sè hi Öu f i l e.
B©y gi ê ta xÐt mét thÝdô vÒsö dông f i l e néi ®ÓchuyÓn ®æi d÷ l i Öu sè thµnh d÷ l i Öu v¨ n b¶n. Gi ¶ sö ta muèn t¹ o ra 12 tª n f i l e l Çn l ­î t l µ ‘ GI O.1’ , ‘ GI O.2’ , ...,
‘ GI O.12’ . § o¹ n ch­¬ng tr×nh sau ®©y cã thÓl µm ®­î c vi Öc ®ã:
I NTEGER J
CHARACTER * 6 TENF(12), TAM
DO J = 1, 12
I F (J .L T. 10) THEN
WRI TE (TA M, ‘ (I 1)’ ) J
EL SE
WRI TE (TA M, ‘ (I 2)’ ) J
END I F
TENF (J) = ‘ GI O’ // ‘ .’ // TAM
END DO
11.2. C¸ c f i l e t ruy nhËp t uÇn t ù (Sequent i al Fi l es)
261 262
C¸ c f i l e ®­î c sö dông trong tÊt c¶ c¸ c thÝdô tõ tr­í c tí i nay gäi l µ f i l e truy nhËp tuÇn tù v×mét khi f i l e ®· ®­î c t¹ o ra, ta kh«ng thÓcËp nhËt mét b¶n ghi ®¬n l Î nµo
trong nã. Muèn thay ®æi mét b¶n ghi , ta ph¶i ®äc c¸ c th«ng ti n trong b¶n ghi , söa ®æi nã vµ sau ®ã ghi vµo mét f i l e kh¸ c. B©y gi ê ta sÏ xÐt l Önh OPEN phøc t¹ p cã thª m
nh÷ng chØ®Þnh kh¸ c so ví i nh÷ng thÝdô tr­í c ®©y:
OPEN (UNI T = Bi Óu thøc nguyª n,
* FI L E = Bi Óu thøc ký tù,
*
A CCESS = Bi Óu thøc ký tù,
*
STA TUS = Bi Óu thøc ký tù,
*
FORM = Bi Óu thøc ký tù,
*
I OSTA T = Bi Õn nguyª n,
*
RECL = Bi Óu thøc nguyª n,
*
BL A NK = Bi Óu thøc ký tù,
*
ERR = Nh· n l Önh chuyÓn ®i Òu khi Ón)
Bi Óu thøc nguyª n trong chØ®Þnh UNI T, th­êng l µ mét h»ng, ®­î c sö dông trong c¸ c l Önh READ hoÆc WRI TE ®ÓchØ®¬n vÞf i l e ®­î c dï ng.
Bi Óu thøc ký tù trong chØ®Þnh FI L E l µ tª n cña f i l e cÇn më. Hai chØ®Þnh võa råi chóng ta ®· quen dï ng trong c¸ c ch­¬ng tr­í c.
Bi Óu thøc ký tù trong chØ®Þnh A CCESS ph¶i cã gi ¸ trÞb»ng 'DI RECT'' hoÆc ‘ SEQUENTI A L' dï ng ®ÓchØf i l e thuéc l o¹ i truy cËp trùc ti Õp hay truy cËp tuÇn tù. NÕu
v¾ng mÆt chØ®Þnh nµy th×ngÇm ®Þnh l µ 'SEQUENTI AL ' nh­ tr­í c ®©y chóng ta ®· dï ng.
Bi Óu thøc ký tù cña chØ®Þnh STA TUS cã thÓcã mét trong nh÷ng gi ¸ trÞl µ ‘ NEW' (®ÓchØf i l e mí i sÏ t¹ o ra b»ng l Önh WRI TE), hoÆc 'OL D' (f i l e ®ang tån t¹ i ), hoÆc
‘ UNK NOWN’ (ch­a râ), hoÆc 'SCRATCH' (f i l e xuÊt, sÏ bÞxo¸ khi ch­¬ng tr×nh kÕt thóc).
Bi Óu thøc ký tù trong chØ®Þnh FORM hoÆc cã gi ¸ trÞl µ 'FORMATTED' hoÆc l µ 'UNFORMA TTED' hay ‘ BI NARY’ . C¸ c f i l e FORMATTED cã thÓdï ng ví i c¶ l Önh
REA D vµ WRI TE cã ®Þnh d¹ ng hoÆc dï ng ví i c¸ c l Önh nhËp, xuÊt ®¬n gi ¶n. Trong f i l e UNFORMATTED d÷ l i Öu ®­î c truy cËp nh­ l µ c¸ c x©u nhÞph©n, kh«ng ph¶i l µ
c¸ c sè hay c¸ c ký tù. NÕu chØ®Þnh FORM v¾ng mÆt th×ngÇm ®Þnh sÏ l µ ‘ FORMATTED’ ®èi ví i c¸ c f i l e tuÇn tù vµ ‘ UNFORMATTED’ ®èi ví i c¸ c f i l e trùc ti Õp.
I OSTA T cã thÓdï ng ®Ókh«i phôc l çi khi më f i l e. NÕu kh«ng cã l çi khi më f i l e, bi Õn nguyª n sÏ cã gi ¸ trÞ0. NÕu cã l çi , thÝdô kh«ng t×m thÊy f i l e ví i tª n ®· chØ
®Þnh, th×mét gi ¸ trÞkh¸ c 0 sÏ ®­î c l ­u trong bi Õn. Ng­êi ta th­êng ki Óm tra gi ¸ trÞcña bi Õn nµy ®ÓquyÕt ®Þnh hµnh ®éng ti Õp theo. ThÝdô
CHARACTER TEN * 12, TEMP * 70
PRI NT * , ‘ GO TEN FI L E’
READ (* , ‘ (A 12)’ ) TEN
OPEN (UNI T=15, FI L E=TEN, STATUS=’ OL D’ , I OSTA T=I ERR)
263 264
I F (I ERR .EQ. 0) THEN
. . .
. . .
. . .
ELSE
PRI NT* , ‘ L OI MO FI LE ‘ ,I ERR
END I F
§ Æc t¶ I OSTAT còng cã thÓdï ng ví i c¸ c l Önh READ vµ WRI TE.
ChØ®Þnh RECL cÇn cho c¸ c f i l e truy cËp trùc ti Õp, kh«ng dï ng ví i c¸ c f i l e truy cËp tuÇn tù. Bi Óu thøc nguyª n nã chØ®Þnh ®é dµi cña mét b¶n ghi .
Bi Óu thøc ký tù cña chØ®Þnh BL A NK cã thÓl µ 'NULL' hoÆc 'ZERO'. NÕu ®Æc t¶ l µ 'NULL ' c¸ c dÊu trèng trong c¸ c tr­êng sè bÞbá qua, nÕu l µ 'ZERO' c¸ c dÊu trèng
®­î c xem l µ c¸ c sè 0. NgÇm ®Þnh l µ 'NUL L'.
ChØ®Þnh ERR l µ tuú chän vµ cã gi ¸ trÞ®Óxö l ý l çi . NÕu l çi x¶y ra trong khi thùc hi Ön l Önh OPEN hay mét l Önh nµo ®ã cã chøa chØ®Þnh nµy th×ch­¬ng tr×nh sÏ
chuyÓn ®i Òu khi Ón tí i l Önh cã nh· n ghi trong chØ®Þnh ERR thay v×t¹ o ra l çi thùc hi Ön ch­¬ng tr×nh. ChØ®Þnh ERR còng dï ng ví i c¸ c l Önh READ vµ WRI TE.
• L Önh CL OSE l µ mét l Önh thùc hi Ön, nã ng¾t mét f i l e ngo¹ i khái ch­¬ng tr×nh. D¹ ng tæng qu¸ t nh­ sau:
CL OSE (UNI T = Bi Óu thøc nguyª n,
* STA TUS = Bi Óu thøc ký tù,
* I OSTA T = Bi Õn nguyª n,
* ERR = Nh· n l Önh chuyÓn ®i Òu khi Ón)
L Önh CL OSE vµ c¸ c chØ®Þnh l µ tuú chän. ChØ®Þnh STATUS trong l Önh CL OSE cã gi ¸ trÞ‘ KEEP’ cã nghÜa f i l e ®­î c gi ÷ l ¹ i , ‘ DEL ETE’ cã nghÜa f i l e kh«ng cÇn n÷a
vµ nª n xo¸ ®i .
• L Önh REWI ND
REWI ND (UNI T = Bi Óu thøc nguyª n,
* I OSTA T = Bi Õn nguyª n,
* ERR = Nh· n l Önh ®i Òu khi Ón)
265 266
dï ng ®ÓchuyÓn vÒvÞtrÝb¶n ghi thø nhÊt trong f i l e tuÇn tù.
• L Önh BA CK SPA CE
BACKSPACE (UNI T = Bi Óu thøc nguyª n,
* I OSTA T = Bi Õn nguyª n,
* ERR = Nh· n l Önh ®i Òu khi Ón)
chuyÓn vÞtrÝ®äc ng­î c l ¹ i vÒphÝa tr­í c mét b¶n ghi trong f i l e tuÇn tù.
• L Önh ENDFI L E
ENDFI L E (UNI T = Bi Óu thøc nguyª n,
* I OSTA T = Bi Õn nguyª n,
* ERR = Nh· n l Önh ®i Òu khi Ón)
ghi vµo f i l e mét b¶n ghi chØsù kÕt thóc f i l e khi f i l e ®· ®­î c t¹ o ra.
11.3. C¸ c f i l e t ruy cËp t rùc t i Õp (Di rect -Access Fi l es)
C¸ c b¶n ghi trong c¸ c f i l e truy cËp trùc ti Õp ®­î c truy cËp kh«ng theo c¸ ch tuÇn tù, mµ theo thø tù ®­î c chØ®Þnh trong ch­¬ng tr×nh. Khi mét f i l e trùc ti Õp ®­î c më,
chØ®Þnh ACCESS trong l Önh OPEN ph¶i ®Æt l µ ‘ DI RECT’ vµ ®é dµi cña b¶n ghi ph¶i ®­î c cho ví i chØ®Þnh RECL. C¸ c l Önh READ vµ WRI TE ph¶i chøa chØ®Þnh REC ®Ó
cung cÊp sè hi Öu cña b¶n ghi cÇn truy cËp.
D¹ ng tæng qu¸ t cña c¸ c l Önh READ hoÆc WRI TE ví i f i l e truy cËp trùc ti Õp nh­ sau:
REA D (Sè hi Öu f i l e, nh· n l Önh FORMAT,
* REC = Bi Óu thø nguyª n) Danh s¸ ch bi Õn

WRI TE (Sè hi Öu f i l e, nh· n l Önh FORMAT,
* REC = Bi Óu thøc nguyª n) Danh s¸ ch bi Õn
Bi Óu thøc nguyª n trong chØ®Þnh REC dï ng ®ÓchØsè hi Öu b¶n ghi cÇn xö l ý. C¸ c chØ®Þnh ERR vµ I OSTAT cã thÓ®­î c sö dông ví i c¸ c l Önh READ hoÆc WRI TE
267 268
trùc ti Õp. Tuú chän END cã thÓchØdï ng ví i l Önh READ. Khi tæchøc f i l e truy cËp trùc ti Õp, ng­êi ta th­êng sö dông sè thø tù hoÆc sè hi Öu ph©n bi Öt - mét phÇn cña b¶n
ghi l µm sè hi Öu b¶n ghi . ThÝdô c¸ c sè hi Öu ph©n bi Öt cña si nh vi ª n trong mét tr­êng ®¹ i häc th­êng b¾t ®Çu b»ng 00001 råi ®Õn 00002... Do ®ã th«ng ti n vÒsi nh vi ª n sè
00210 cã thÓ®­î c l ­u trong b¶n ghi 210. § «i khi cã thÓthùc hi Ön mét sè tÝnh to¸ n ví i mét tr­êng cña b¶n ghi ®ÓnhËn ®­î c sè hi Öu cña nã.
Fi l e truy cËp trùc ti Õp th­êng ®­î c t¹ o ra b»ng c¸ ch ghi th«ng ti n vµo mét c¸ ch tuÇn tù, ví i b¶n ghi b¾t ®Çu b»ng 1 vµ t¨ ng l ª n 1 mçi l Çn cã mét b¶n ghi mí i ®­î c
vi Õt vµo. Fi l e nµy cã thÓxö l ý theo thø tù tuÇn tù b»ng c¸ ch thay ®æi sè hi Öu b¶n ghi tõ 1 ®Õn tæng sè tÊt c¶ c¸ c b¶n ghi . Tuy nhi ª n, ­u ®i Óm cña f i l e trùc ti Õp sÏ thÓhi Ön râ
khi chóng ta muèn cËp nhËt th«ng ti n trong mét sè b¶n ghi cña f i l e. Thay v×®äc tõng b¶n ghi mét c¸ ch tuÇn tù, t×m b¶n ghi mµ ta muèn cËp nhËt, ta chØcÇn chØ®Þnh sè
hi Öu b¶n ghi vµ b¶n ghi ®ã tù ®éng ®­î c xö l ý. Khi cËp nhËt th«ng ti n xong, ta cã thÓghi th«ng ti n mí i vµo b¶n ghi . NÕu trong l Önh READ ta chØ®Þnh mét sè hi Öu b¶n ghi
mµ b¶n ghi ®ã kh«ng tån t¹ i th×sÏ x¶y ra l çi . § Ókh«i phôc l çi , chØ®Þnh ERR cÇn ph¶i cã mÆt trong l Önh READ.
11.4. L Önh t ruy vÊn I NQUI RE
L Önh I NQUI RE cã hai d¹ ng:
I NQUI RE (FI L E = bi Óu thøc ký tù, danh s¸ ch chØ®Þnh truy vÊn)
I NQUI RE (UNI T = bi Óu thøc nguyª n, danh s¸ ch chØ®Þnh truy vÊn)
L Önh nµy l µ mét l Önh thùc hi Ön, nã truy vÊn th«ng ti n vÒf i l e hay sè hi Öu f i l e. B¶ng 9.1 l i Öt kª nh÷ng chØ®Þnh truy vÊn. ThÝdô:
I NQUI RE (FI L E = 'TSDATA', SEQUENTI AL = TRALOI )
I NQUI RE (UNI T = 12, SEQUENTI AL = TRAL OI )
B¶ng 11.1. C¸ c chØ®Þnh truy vÊn cña l Önh I NQUI RE
ChØ®Þnh t ruy vÊn K i Óu bi Õn
Gi ¸ t rÞt r uy vÊn
f i l e FI L E
Gi ¸ t r Þt ruy vÊn
®¬n vÞf i l e UNI T
ACCESS = CHARACTER
'SEQUENTI AL'
'DI RECT'
'SEQUENTI AL'
'DI RECT'
BLANK = CHARACTER
'NULL'
'ZERO'
'NULL'
'ZERO'
DI RECT = CHARACTER
'YES'
'NO'
_
ERR = I NTEGER Sè hi Öu l Önh xö l ý l çi Sè hi Öu l Önh xö l ý l çi
EXI ST = LOGI CAL
.TRUE.
.FALSE.
.TRUE.
.FALSE.
FORM = CHARACTER
'FORMATTED'
'UNFORM ATTED'
'FORMATTED'
'UNFORMATTED'
269 270
FORMATTED = CHARACTER
'YES'
'NO'
'UNKNOWN'

I OSTAT = I NTEGER M· l çi M· l çi
NAME = CHARACTER −
Tª n f i l e nÕu f i l e ®ã kh«ng
ph¶i l µ f i l e l o¹ i scrat ch
NAMED + = LOGI CAL _
.TRUE.
.FALSE.
NEXTREC = I NTEGER
Sè hi Öu b¶n ghi ti Õp
t heo t rong f i l e t ruy
cËp t rùc ti Õp
Sè hi Öu b¶n ghi ti Õp t heo
trong f i l e truy cËp trùc t i Õp
NUMBER + = I NTEGER § ¬n vÞf i l e −
OPEND = LOGI CAL
.TRUE.
.FALSE.
.TRUE.
.FALSE.
RECL = I NTEGER § é dµi b¶n ghi § é dµi b¶n ghi
SEQUENTI AL = CHARACTER
'YES'
'NO'
'UNKNOWN'

UNFORM ATTED = CHARACTER
'YES'
'NO'
'UNKNOWN'

ThÝdô 36: Sù t­¬ng t¸ c gi ÷a ng­êi dï ng vµ ch­¬ng tr×nh. Gi ¶ sö khi ch­¬ng tr×nh yª u cÇu ng­êi dï ng gâ mét tª n cña f i l e d÷ l i Öu ®Ómë ra l µm vi Öc trong ch­¬ng
tr×nh. Tr­êng hî p f i l e ®ã kh«ng tån t¹ i , ch­¬ng tr×nh sÏ kÕt thóc bëi l çi thùc hi Ön. NÕu ta dï ng l Önh I NQUI RE, ch­¬ng tr×nh cã thÓx¸ c ®Þnh f i l e ®ã cã tån t¹ i kh«ng vµ
nÕu kh«ng tån t¹ i , ch­¬ng tr×nh nh¾c ng­êi dï ng gâ mét tª n f i l e kh¸ c. C¸ c l Önh sau ®©y thùc hi Ön sù t­¬ng t¸ c nµy:
CHARACTER * 70 TENFI L, TI T
L OGI CAL XONG, OK, CO
XONG = .FALSE.
OK = .FALSE.
PRI NT * , 'NHAP TEN FI LE'
READ * , TENFI L
5 I F (.NOT. XONG) THEN
I NQUI RE (FI LE = TENFI L , EXI ST = CO)
I F (.NOT. CO) THEN
PRI NT * , 'FI LE KHONG TON TAI '
271 272
PRI NT * , 'NHAP TEN KHAC HOA C GO THOI '
READ * , TENFI L
I F (TENFI L .EQ. 'THOI ') XONG = .TRUE.
EL SE
XONG = .TRUE.
OK = .TRUE.
ENDI F
GOTO 5
ENDI F
I F (OK ) THEN
OPEN (UNI T = 10, FI LE = TENFI L, STATUS = 'OLD')
. . .
. . .
. . .
END I F
END
Bµi tËp
1. Vi Õt ch­¬ng tr×nh ®Õm vµ i n sè b¶n ghi trong c¸ c f i l e DATA1 vµ DATA2. Gi ¶ sö c¸ c f i l e ®ã l µ f i l e tuÇn tù vµ mçi b¶n ghi chøa hai gi ¸ trÞthùc ví i f ormat sau:
FORMAT (F6.2, 1X, F6.2)
NÕu l çi x¶y ra khi më f i l e, h· y i n th«ng b¸ o l çi thay v×i n sè b¶n ghi .
2. Fi l e TEM60.JAN l ­u tr­êng ba chi Òu nhi Öt ®é n­í c bi Ón § «ng th¸ ng Gi ª ng ®é ph©n gi ¶i 1
o
ki nh vÜcã quy c¸ ch ghi nh­ sau: Dßng ®Çu ti ª n gåm 5 sè nguyª n c¸ ch
nhau l Çn l ­î t chØki nh ®é mÐp tr¸ i , ki nh ®é mÐp ph¶i , vÜ®é mÐp trª n, vÜ®é mÐp d­í i cña mi Òn kh«ng gi an vµ sè tÇng s©u. Dßng thø hai ghi ®é s©u (sè nguyª n) cña tÇng
trª n cï ng. Sau ®ã l µ b¶ng gi ¸ trÞnhi Öt ®é (sè thùc c¸ ch nhau) ví i sè cét b»ng sè ®i Óm nót theo ki nh tuyÕn, sè dßng b»ng sè ®i Óm nót theo vÜtuyÕn. C¸ c tÇng ti Õp theo ghi
hoµn toµn t­¬ng tù. Gi ¸ trÞnhi Öt ®é khuyÕt hoÆc r¬i vµo vï ng ®Êt l i Òn ®­î c ghi b»ng sè 99.99. Vi Õt ch­¬ng tr×nh tÝnh gi ¸ trÞnhi Öt ®é n­í c trung b×nh toµn bi Ón § «ng.
3. V í i f i l e sè l i Öu cña bµi tËp 2, vi Õt ch­¬ng tr×nh ®äc th«ng ti n trong f i l e vµ t¹ o cho mçi ®i Óm nót thuéc mi Òn tÝnh mét f i l e ®Æt tª n theo quy t¾c sau: b¾t ®Çu b»ng ch÷
K, sau ®ã ®Õn c¸ c ch÷ sè chØki nh ®é ®i Óm, sau ®ã ch÷ V vµ c¸ c ch÷ sè chØvÜ®é ®i Óm, ®u«i f i l e l µ ‘ .BLN’ . Trong c¸ c f i l e cã quy c¸ ch ghi nh­ sau, dßng trª n cï ng cã mét
sè nguyª n chØsè tÇng quan tr¾c thùc tÕcña ®i Óm, mét dÊu c¸ ch vµ ch÷ sè 1. Sau ®ã l i Öt kª l i ª n ti Õp gi ¸ trÞnhi Öt ®é vµ tÇng s©u øng ví i nhi Öt ®é ®ã ví i dÊu ng­î c l ¹ i .
273 274
4. Gi ¶ sö cã f i l e d÷ l i Öu l ­u gi ¸ trÞquan tr¾c cña mét sè yÕu tè khÝt­î ng thñy v¨ n t¹ i tr¹ m h¶i v¨ n, cã quy c¸ ch ghi nh­ sau:
- Dßng thø nhÊt cã hai sè nguyª n 1 vµ 2 c¸ ch nhau mét dÊu trèng.
- Dßng thø hai ghi tª n tr¹ m (kh«ng qu¸ 100 ký tù).
- Dßng thø ba ghi hai sè nguyª n chØsè dßng d÷ l i Öu (kh«ng qu¸ 5000) vµ sè yÕu tè quan tr¾c (kh«ng qu¸ 12) c¸ ch nhau Ýt nhÊt mét dÊu trèng.
- Dßng thø t­ l Çn l ­î t ghi tª n c¸ c yÕu tè ®­î c quan tr¾c, mçi tª n ví i ®Þnh d¹ ng A8.
- Dßng thø 5 l Çn l ­î t ghi ®¬n vÞ®o cña tõng yÕu tè quan tr¾c, còng ví i ®Þnh d¹ ng A8.
- Mçi dßng trong c¸ c dßng ti Õp sau l Çn l ­î t ghi gi ¸ trÞquan tr¾c cña c¸ c yÕu tè, mçi gi ¸ trÞghi ví i ®Þnh d¹ ng F8.2.
Vi Õt ch­¬ng tr×nh cho phÐp nhËp tª n f i l e tõ bµn phÝm, ®äc d÷ l i Öu vµ l Ëp ph­¬ng tr×nh håi quy gi ÷a bi Õn thø nhÊt (bi Õn phô thuéc) vµ bi Õn thø hai (bi Õn ®éc l Ëp). I n
kÕt qu¶ ra mµn h×nh theo quy c¸ ch sau: gi ¶ sö tª n bi Õn thø nhÊt l µ Tw, bi Õn thø hai l µ Ta, ph­¬ng tr×nh ph¶i vi Õt cã d¹ ng:
Tw = 0.915 Ta + 1.237
(Ghi chó: xem c«ng thøc trong phô l ôc 3).
5. C¶i ti Õn ch­¬ng tr×nh trong bµi tËp 4 ®Ócho phÐp ng­êi dï ng tuú ý chØ®Þnh bi Õn phô thuéc vµ bi Õn ®éc l Ëp tõ bµn phÝm.
6. V í i f i l e d÷ l i Öu ®· m« t¶ trong bµi tËp 4, l Ëp ch­¬ng tr×nh tÝnh ph­¬ng tr×nh håi quy nhi Òu bi Õn gi ÷a yÕu tè quan tr¾c thø nhÊt (bi Õn phô thuéc) vµ c¸ c yÕu tè quan
tr¾c 2, 3, 6, 8, 9. I n kÕt qu¶ l ª n mµn h×nh d­í i d¹ ng ph­¬ng tr×nh håi quy ví i tª n c¸ c yÕu tè ®· ghi trong f i l e.
Gî i ý: Xem ph­¬ng ph¸ p thi Õt l Ëp ph­¬ng tr×nh håi quy tuyÕn tÝnh nhi Òu bi Õn trong phô l ôc 4.
7. Fi l e HESOA.MAT l ­u c¸ c gi ¸ trÞcña c¸ c hÖsè cña hÖph­¬ng tr×nh ®¹ i sè tuyÕn tÝnh theo quy c¸ ch nh­ sau: Dßng thø nhÊt cã mét sè nguyª n chØsè ph­¬ng tr×nh.
C¸ c dßng ti Õp sau ghi c¸ c gi ¸ trÞc¸ c hÖsè, kÓc¶ hÖsè tù do øng ví i tõng ph­¬ng tr×nh, mçi ph­¬ng tr×nh trª n mét dßng, mçi hÖsè ghi ví i ®Þnh d¹ ng F8.4, thÝdô:
4
1.1161 0.1254 0.1397 0.1490 1.5471
0.1582 1.1675 0.1768 0.1871 1.6471
0.1968 0.2071 1.2168 0.2271 1.7471
0.2368 0.2471 0.2568 1.2671 1.8471
Vi Õt ch­¬ng tr×nh ®äc f i l e vµ gi ¶i hÖph­¬ng tr×nh b»ng ph­¬ng ph¸ p l o¹ i bi Õn Gauss. KÕt qu¶ i n ra mµn h×nh gåm: vi Õt l ¹ i hÖph­¬ng tr×nh, sau ®ã c¸ ch ra mét dßng
råi ghi c¸ c nghi Öm ë dßng cuèi cï ng, thÝdô, øng ví i ma trËn c¸ c hÖsè nh­ trª n ph¶i cã kÕt qu¶ trª n mµn h×nh nh­ sau:
1.1161X1 + 0.1254X2 + 0.1397X3 + 0.1490X4 = 1.5471
275 276
0.1582X1 + 1.1675X2 + 0.1768X3 + 0.1871X4 = 1.6471
0.1968X1 + 0.2071X2 + 1.2168X3 + 0.2271X4 = 1.7471
0.2368X1 + 0.2471X2 + 0.2568X3 + 1.2671X4 = 1.8471
1.04059 0.98697 0.93505 0.88130
Gî i ý: Xem ph­¬ng ph¸ p gi ¶i hÖph­¬ng tr×nh ®¹ i sè tuyÕn tÝnh theo s¬ ®å l o¹ i bi Õn Gauss trong phô l ôc 2.
8. Fi l e HESOAB.MAT l ­u c¸ c gi ¸ trÞcña c¸ c hÖsè cña hÖph­¬ng tr×nh ®¹ i sè tuyÕn tÝnh theo quy c¸ ch nh­ ®· m« t¶ trong bµi tËp 7. Gi ¶ sö ma trËn c¸ c hÖsè
] [
j i
a A · l µ ma trËn ®èi xøng, tøc ) ..., , 2 , 1 , ( n j i a a
ji ij
· · .
H· y vi Õt ch­¬ng tr×nh ®äc f i l e c¸ c hÖsè vµ gi ¶i hÖph­¬ng tr×nh. I n kÕt qu¶ theo quy c¸ ch cña bµi tËp 7.
Gî i ý: Tr­êng hî p ma trËn c¸ c hÖsè A l µ ma trËn ®èi xøng, nª n dï ng ph­¬ng ph¸ p c¨ n bËc hai ®Ógi ¶i hÖph­¬ng tr×nh ®¹ i sè tuyÕn tÝnh (phô l ôc 2).

















277 278


Tµi l i Öu tham kh¶o
1. Etter D. M. Structured Fortran 77 f or engi neers and sci enti sts. Fourth edi ti on. The Benj ami n/Cummi ngs Publ i shi ng Co., I nc. Cal i f orni a, 1993, 616
p.
2. Kof f man El l i ot B., Fri edman Frank L . Fortran wi th engi neeri ng appl i cati ons. Fi f th Edi ti on. Addi son-Wesl ey Publ i shi ng Co. Massachusetts-...,
1993, 664 p.
3. N. V. Kopchenova and I .A. Maron. Computati onal Mathemati cs. Worked exampl es and probl ems wi th el ements of theory. Mi r Publ i shers,
Moscow, 1975
4. В а с и л ь е в и ч О. Б. С о в р е м е н н ы й Ф о р т р а н . “ Д и а л о г-М и ф и ” . М о с к в а , 1998, 397 c.
5. В а с и л ь е в и ч О. Б. Ф о р т р а н д л я п р о ф е с с и о н а л о в : М а т е м а т и ч е с к а я б и б л и о т е к а I MSL . “ Д и а л о н -
М и ф и ” , М о с к в а , 2000, 448 c.
6. Т ю р и н Ю. Н., М а к а р о в А. А. С т а т и с т и ч е с к и й а н а л и з д а н н ы х н ак о м п ь ю т е р е . “ И Н Ф Р А ” - М о с к в а , 1998,
528 с









279 280
























Phô l ôc 1: B¶ng c¸ c hµm chuÈn cña FORTRAN
281 282
Trong b¶ng c¸ c hµm chuÈn d­í i ®©y, tª n cña c¸ c ®èi sè sÏ chØki Óu d÷ l i Öu theo quy ­í c sau:
§ èi sè Ki Óu d÷ l i Öu
X → thùc
CHX → x©u ký tù
DX → ®é chÝnh x¸ c ®«i
CX → phøc
LX → l «gi c
I X → nguyª n
GX → tù si nh (i n ®Ëm, nghi ª ng)

Tª n hµm Ki Óu hµm § Þnh nghÜa
SQRT(X ) Thùc
X
DSQRT (DX) § é chÝnh x¸ c ®«i
DX
CSQRT (CX) Phøc CX
A BS (X ) Thùc X
I ABS (I X) Nguyª n IX
DABS (DX) § é chÝnh x¸ c ®«i DX
CABS (CX) Phøc CX
EXP (X ) Thùc
X
e
DEXP (DX) § é chÝnh x¸ c ®«i
DX
e
CEXP (CX) Phøc
CX
e

Tª n hµm Ki Óu hµm § Þnh nghÜa
L OG (GX) Ki Óu theo GX
GX
e
log
ALOG (X) Thùc
X
e
log
DOG (GX) § é chÝnh x¸ c ®«i
DX
e
log
CLOG (CX) Phøc CX
e
log
L OG10 (GX ) Ki Óu theo GX
GX
10
log
ALOG10 (X) Thùc
X
10
log
DLOG10 (DX) § é chÝnh x¸ c ®«i
DX
10
log
283 284
REA L( GX ) Thùc ChuyÓn GX thµnh gi ¸ trÞt hùc
FLOAT (I X) Thùc ChuyÓn I X t hµnh gi ¸ t rÞthùc
SNGL (DX) Thùc ChuyÓn DX thµnh ®é chÝnh x¸ c ®¬n
A NI NT(X ) Thùc L µm trßn tí i sè thùc gÇn nhÊt
DNI NT(DX) § é chÝnh x¸ c ®«i Lµm trßn tí i sè thùc gÇn nhÊt
NI NT(X) Nguyª n Lµm trßn tí i sè nguyª n gÇn nhÊt
I DNI NT (DX) Nguyª n Lµm trßn tí i sè nguyª n gÇn nhÊt
A I NT (X ) Thùc C¾t phÇn thËp ph©n cña X
DI NT (DX) § é chÝnh x¸ c ®«i C¾t phÇn thËp ph©n cña DX
I NT ( GX ) Nguyª n C¾t GX t hµnh sè nguyª n
I FI X (X) Nguyª n C¾t X thµnh sè nguyª n
I DI NT (DX) Nguyª n C¾t DX t hµnh sè nguyª n
SI GN (X , Y) Thùc G¸ n dÊu cña Y cho X
I SI GN (I X, I Y) Nguyª n G¸ n dÊu cña I Y cho IX
DSI GN (DX, DY) § é chÝnh x¸ c ®«i G¸ n dÊu cña DY cho DX
M OD (I X, I Y) Nguyª n LÊy sè d­ cña phÐp chi a I X / I Y
AMOD (X,Y) Thùc L Êy sè d­ cña phÐp chi a X / Y
DMOD (DX,DY) § é chÝnh x¸ c ®«i LÊy sè d­ cña phÐp chi a DX / DY
DI M (X ,Y ) Thùc X − (cùc t i Óu cña X vµ Y)
I DI M (I X,I Y) Nguyª n I X − (cùc ti Óu cña I X vµ I Y)
DDI M (DX,DY) § é chÝnh x¸ c ®«i DX − (cùc ti Óu cña DX vµ DY)

Tª n hµm K i Óu hµm § Þnh nghÜa
M A X (GX ,GY ,.. .) Ki Óu t heo GX, GY, ... Cùc ®¹ i cña (GX, GY, ...)
MAX0 (I X,I Y,...) Nguyª n Cùc ®¹ i cña (I X, I Y, ...)
AMAX1 (X,Y,...) Thùc Cùc ®¹ i cña (X, Y, ...)
DMAX1 (DX,DY,...) § é chÝnh x¸ c ®«i Cùc ®¹ i cña (DX, DY, ...)
AMAX0 (I X,I Y,...) Thùc Thùc, cùc ®¹ i cña (I X, I Y, ...)
MAX1 (X,Y,...) Nguyª n Cùc ®¹ i cña (X, Y, ...)
M I N ( GX ,GY, ... ) Ki Óu t heo GX,GY,... Cùc ti Óu cña (GX, GY, ...)
MI N0 (I X,I Y,...) Nguyª n Cùc ti Óu cña (I X, I Y, ...)
AMI N1 (X,Y,...) Thùc Cùc ti Óu cña (X, Y, ...)
285 286
DMI N1 (DX,DY,...) § é chÝnh x¸ c ®«i Cùc ti Óu cña (DX, DY, ...)
AMI N0 (I X,I Y,...) Thùc Cùc ti Óu cña (I X, I Y, ...)
MI N1 (X,Y,...) Nguyª n Cùc ti Óu cña (X, Y, ...)
SI N (X ) Thùc
X sin (X - ra®i an)
DSI N (DX) § é chÝnh x¸ c ®«i
DX sin (DX - ra®i an)
CSI N (CX) Phøc CX sin
COS (X) Thùc X cos (X - ra®i an)
DCOS (DX) § é chÝnh x¸ c ®«i
DX cos (DX - ra®i an)
CCOS (CX) Phøc CX cos
TAN ( X) Thùc
X tg (X - ra®i an)
DTAN (DX) § é chÝnh x¸ c ®«i DX tg (DX - ra®i an)
ASI N (X ) Thùc
X arcsin
DASI N (X) § é chÝnh x¸ c ®«i DX arcsin
ACOS (X ) Thùc X arccos
DACOS (DX) § é chÝnh x¸ c ®«i DX arccos
ATA N (X ) Thùc
X arctg
DATAN (DX) § é chÝnh x¸ c ®«i DX arctg

Tª n hµm Ki Óu hµm § Þnh nghÜa
ATA N2 ( X, Y) Thùc
) / ( arctg Y X
DATAN2 (DX,DY) § é chÝnh x¸ c ®«i
) / ( arctg DY DX
SI NH ( X) Thùc
X sh
DSI NH (DX) § é chÝnh x¸ c ®«i DX sh
COSH (X ) Thùc
X ch
DCOSH (DX) § é chÝnh x¸ c ®«i DX ch
TA NH (X) Thùc X th
DTANH (DX) § é chÝnh x¸ c ®«i DX th
287 288
DPROD (X, Y) § é chÝnh x¸ c ®«i TÝch cña X vµ Y
DBLE (X) § é chÝnh x¸ c ®«i ChuyÓn X t hµnh ®é chÝnh x¸ c ®«i
CM PLX (X) Phøc i X 0 +
CM PLX (X, Y) Phøc Yi X +
AI MAG (CX) Thùc PhÇn ¶o cña CX
REAL (CX) Thùc PhÇn t hùc cña CX
CONJG (CX) Phøc L i ª n hî p cña CX, bi a −
LEN (CHX) Nguyª n § é dµi cña x©u ký tù CHX
I NDEX (CHX, CHY) Nguyª n V Þt rÝcña x©u CHY trong x©u CHX
CHAR (I X) Ký tù
Ký tù øng ví i vÞt rÞthø I X trong
chuçi so s¸ nh
I CHAR (CHX) Nguyª n
V Þt rÝcña ký tù CHX t rong chuçi so
s¸ nh
LGE (CHX, CHY) L«gi c
Gi ¸ trÞcña bi Óu thøc (CHX l í n h¬n
hoÆc b»ng CHY vÒt õ vùng)
LGT (CHX, CHY) L«gi c
Gi ¸ trÞcña bi Óu thøc (CHX l í n h¬n
CHY vÒtõ vùng)
LLE (CHX, CHY) L«gi c
Gi ¸ trÞcña bi Óu thøc (CHX nhá h¬n
hoÆc b»ng CHY vÒt õ vùng)
LLT (CHX, CHY) L«gi c
Gi ¸ trÞcña bi Óu thøc (CHX nhá h¬n
CHY vÒtõ vùng)

Phô l ôc 2: Ph­¬ng ph¸ p Gauss gi ¶i hÖph­¬ng tr×nh ®¹ i sè tuyÕn tÝnh
¹
¹
¹
¹
¹
'
¹
· + + +
· + + +
· + + +

n n nn n n
n n
n n
b x a x a x a
b x a x a x a
b x a x a x a
...
... ... ... ... ...
...
...
2 2 1 1
2 2 2 22 1 21
1 1 2 12 1 11

289 290
hay A x = b (* )
( )

,
`

.
|
· ·
nn n n
n
n
ij
a a a
a a a
a a a
a A
...
... ... ... ...
...
...
2 1
2 22 21
1 12 11
;

,
`

.
|
·
n
b
b
b
b
...
2
1
;

,
`

.
|
·
n
x
x
x
x
...
2
1
.
NÕu ma trËn A kh«ng suy bi Õn, tøc
0 ≠ ·
nn n n
n
n
a a a
a a a
a a a
A
...
... ... ... ...
...
...
det
2 1
2 22 21
1 12 11

th×hÖ(* ) cã nghi Öm duy nhÊt. Cã thÓtÝnh nghi Öm theo c«ng thøc Cramer
A
A
x
i
i



det
det
·
,
trong ®ã −
i
A ma trËn A ví i cét i bÞthay thÕb»ng cét c¸ c sè h¹ ng tù do b .
1. Ph­¬ng ph¸ p l o¹ i bi Õn Gauss gi ¶i hÖph­¬ng tr×nh ®¹ i sè tuyÕn t Ýnh:
ThÝdô cho hÖ
¹
¹
¹
¹
¹
'
¹
· + + +
· + + +
· + + +
· + + +
45 4 44 3 43 2 42 1 41
35 4 34 3 33 2 32 1 31
25 4 24 3 23 2 22 1 21
15 4 14 3 13 2 12 1 11
a x a x a x a x a
a x a x a x a x a
a x a x a x a x a
a x a x a x a x a
(1)
Gi ¶ sö phÇn tö chÝnh 0
11
≠ a . Chi a ph­¬ng tr×nh thø nhÊt cho
11
a , ta cã
15 4 14 3 13 2 12 1
b x b x b x b x · + + + , (2)
291 292
ví i ) 5 , 4 , 3 , 2 (
11
1
1
· · j
a
a
b
j
j
.
Dï ng ph­¬ng tr×nh (2) ®Ól o¹ i Èn
1
x khái c¸ c ph­¬ng tr×nh sè 2, 3, 4 cña hÖ(1): Muèn vËy, nh©n ph­¬ng tr×nh (2) tuÇn tù ví i
41 31 21
, , a a a vµ tuÇn tù l Êy c¸ c ph­¬ng
tr×nh sè 2, 3, 4 trõ ®i c¸ c tÝch t­¬ng øng võa nhËn ®­î c, ta cã ba ph­¬ng tr×nh:
¹
¹
¹
'
¹
· + +
· + +
· + +
) 1 (
45 4
) 1 (
44 3
) 1 (
43 2
) 1 (
42
) 1 (
35 4
) 1 (
34 3
) 1 (
33 2
) 1 (
32
) 1 (
25 4
) 1 (
24 3
) 1 (
23 2
) 1 (
22

a x a x a x a
a x a x a x a
a x a x a x a
(3)
trong ®ã
) 5 , 4 , 3 , 2 ; 4 , 3 , 2 (
1 1
) 1 (
· · − · j i b a a a
j i ij ij
(4)
B©y gi ê chi a ph­¬ng tr×nh thø nhÊt cña hÖ(3) cho phÇn tö chÝnh
) 1 (
22
a ta cã:
) 1 (
25 4
) 1 (
24 3
) 1 (
23 2
b x b x b x · + + , (5)
trong ®ã
) 5 4 3 (
) 1 (
22
) 1 (
2 ) 1 (
2
, , j
a
a
b
j
j
· · .
B»ng c¸ ch t­¬ng tù nh­ khi l o¹ i
1
x , b©y gi ê ta l o¹ i
2
x khái c¸ c ph­¬ng tr×nh thø ba vµ thø t­, ta cã:
¹
¹
¹
'
¹
· +
· +
) 2 (
45 4
) 2 (
44 3
) 2 (
43
) 2 (
35 4
) 2 (
34 3
) 2 (
33
a x a x a
a x a x a
. (6)
trong ®ã
) 5 , 4 , 3 ; 4 , 3 (
) 1 (
2
) 1 (
2
) 1 ( ) 2 (
· · − · j i b a a a
j i ij ij
. (7)
Chi a ph­¬ng tr×nh thø nhÊt cña hÖ(6) cho phÇn tö chÝnh
) 2 (
33
a , ta cã:
) 2 (
35 4
) 2 (
34 3
b x b x · + , (8)
293 294
trong ®ã
) 5 , 4 (
) 2 (
33
) 2 (
3 ) 2 (
3
· · j
a
a
b
j
j
.
Sau ®ã nhê (8) ta l o¹ i
3
x khái ph­¬ng tr×nh thø hai cña hÖ(6), nhËn ®­î c:
) 3 (
45 4
) 3 (
44
a x a ·
trong ®ã
) 5 , 4 (
) 2 (
3
) 2 (
43
) 2 (
4
) 3 (
4
· − · j b a a a
j j j
(9)
Nh­ vËy ta ®· ®­a hÖ(1) vÒhÖt­¬ng ®­¬ng cã ma trËn c¸ c hÖsè l µ ma trËn tam gi ¸ c
¹
¹
¹
¹
¹
'
¹
·
· +
· + +
· + + +




) 3 (
45 4
) 3 (
44
) 2 (
35 4
) 2 (
34 3
) 1 (
25 4
) 1 (
24 3
) 1 (
23 2
15 4 14 3 13 2 12 1
a x a
b x b x
b x b x b x
b x b x b x b x
(10)
Tõ (10) x¸ c ®Þnh c¸ c Èn
¹
¹
¹
¹
¹
'
¹
− − − ·
− − ·
− ·
·
b x b x b x b x
b x b x b x
b x b x
a a x
) ( ) ( ) (
) ( ) (
) ( ) (
12 2 13 3 14 4 15 1
1
23 3
1
24 4
1
25 2
2
34 4
2
35 3
3
44
3
45 4
(11)
VËy thñ tôc gi ¶i hÖph­¬ng tr×nh ®¹ i sè tuyÕn tÝnh bËc nhÊt quy vÒhai qu¸ tr×nh:
a) Qu¸ tr×nh thuËn: ®­a hÖ(1) vÒd¹ ng tam gi ¸ c (10);
b) Qu¸ tr×nh nghÞch: t×m Èn theo c¸ c c«ng thøc (11).
NÕu phÇn tö chÝnh cña hÖb»ng kh«ng th×chØcÇn thay ®æi chç cña c¸ c ph­¬ng tr×nh trong hÖt­¬ng øng ®Ól µm cho phÇn tö chÝnh kh¸ c kh«ng.
Sè phÐp tÝnh sè häc N cÇn thùc hi Ön trong ph­¬ng ph¸ p Gauss b»ng
295 296
) 1 (
3
) 2 ( ) 1 ( 2
− +
+ +
· n n
n n n
N .
VËy sè phÐp tÝnh sè häc xÊp xØtû l Öví i l uü thõa bËc ba cña sè Èn.
2. Ph­¬ng ph¸ p c¨ n bËc gi ¶i hÖph­¬ng tr×nh ®¹ i sè tuyÕn tÝnh trong t r­êng hî p ma trËn A l µ ma t rËn ®èi xøng
Ph­¬ng ph¸ p nµy thuËn l î i trong tr­êng hî p hÖph­¬ng tr×nh
A x = b (12)
cã ma trËn A l µ ma trËn ®èi xøng, ®i Òu th­êng gÆp trong c¸ c bµi to¸ n kü thuËt.
Theo ph­¬ng ph¸ p nµy ma trËn A ®­î c bi Óu di Ôn thµnh tÝch cña hai ma trËn tam gi ¸ c chuyÓn vÞ
T T A ′ · (13)
trong ®ã

,
`

.
|
· ′

,
`

.
|
·
nn n n nn
n
n
t t t
t t
t
T ,
t
t t
t t t
T
...
... ... ... ...
0 ...
0 ...
... 0 0
... ... ... ...
... 0
...
2 1
22 12
11
2 22
1 12 11


Nh©n hai ma trËn T′ vµ T vµ cho tÝch b»ng ma trËn A , ta suy ra c¸ c«ng thøc tÝnh c¸ c phÇn tö
ij
t :
j i khi t
j i
t
t t a
t
n i t a t
j
t
a
t a t
ij
ii
i
k
kj ki ij
ij
i
k
ki ii ii
j
j
> ·
<

·
≤ < − ·
> · ·



·

·




0
) (
) 1 (
) 1 ( ,
1
1
1
1
2
11
1
1 11 11
(14)
Nh­ vËy ta ®· thay hÖ(12) b»ng hai hÖt­¬ng ®­¬ng
T' y = b, T x = y 15)
hay
297 298
¹
¹
¹
¹
¹
'
¹
· + + +
· +
·

n n nn n n
b y t y t y t
b y t y t
b y t
....
... .......... ..........
2 2 1 1
2 2 22 1 12
1 1 11
(16)

¹
¹
¹
¹
¹
'
¹
·
· + +
· + + +




n n nn
n n
n n
y x t
y x t x t
y x t x t x t
..... .......... ..........
...
....
2 2 2 22
1 1 2 12 1 11
(17)
Tõ ®ã suy ra c¸ c c«ng thøc tÝnh:
) 1 ( ,
1
1
11
1
1
>

· ·


·
i
t
y t b
y
t
b
y
ii
i
k
k ki i
i
(18) ) ( ,
1
n i
t
x t y
x
t
y
x
ii
n
i k
k ik i
i
nn
n
n
<

· ·

+ ·
(19)
VËy qu¸ tr×nh thuËn gåm tÝnh c¸ c phÇn tö cña ma trËn T theo c¸ c c«ng thøc (14). Qu¸ tr×nh nghÞch l µ tÝnh c¸ c ma trËn cét y vµ x theo c¸ c c«ng thøc (18), (19).



Phô l ôc 3: Ph­¬ng ph¸ p b×nh ph­¬ng nhá nhÊt trong ph©n tÝch håi quy
1. M « h×nh tuyÕn t Ýnh
299 300
M« h×nh håi quy tuyÕn tÝnh cã d¹ ng:
b ax x f y + · · ) ( .
Theo ph­¬ng ph¸ p b×nh ph­¬ng nhá nhÊt, c¸ c hÖsè håi quy a vµ b trong ph­¬ng tr×nh trª n ®­î c t×m sao cho tæng b×nh ph­¬ng sai sè b»ng

·
− − ·
n
k
k k
b ax y E
1
2
) (

cùc ti Óu. L Çn l ­î t l Êy ®¹ o hµm bi Óu thøc nµy theo a , b vµ cho b»ng kh«ng, ta ®­î c hÖph­¬ng tr×nh sau ®©y ®Óx¸ c ®Þnh a vµ b :
∑ ∑ ∑
· · ·
· +
n
k
k k
n
k
k
n
k
k
y x x b x a
1 1 1
2
,
∑ ∑
· ·
· +
n
k
k
n
k
k
y n b x a
1 1
.
VËy c¸ c hÖsè håi quy ®­î c tÝnh theo c¸ c c«ng thøc sau:
∑ ∑
∑ ∑ ∑
· ·
· · ·


·
n
k
k
n
k
k
n
k
k k
n
k
k
n
k
k
x n x
y x n y x
a
1
2 2
1
1 1 1
) (

(20)
∑ ∑
∑ ∑ ∑ ∑
· ·
· · · ·


·
n
k
k
n
k
k
n
k
k
n
k
k
n
k
k k
n
k
k
x n x
y x y x x
b
1
2 2
1
1 1
2
1 1
) (

, (21)
hay hÖsè b cßn cã thÓtÝnh theo c«ng thøc:
n
x a y
b
n
k
k
n
k
k ∑ ∑
· ·

·
1 1

. (22)
2. M « h×nh ®a thøc
Ph­¬ng ph¸ p b×nh ph­¬ng nhá nhÊt còng cã thÓ¸ p dông ®ÓtÝnh c¸ c hÖsè håi quy ®a thøc d¹ ng
301 302
m
n
x a x a x a a x f + + + + · ... ) (
2
2 1 0
.
thÝdô ®èi ví i m« h×nh bËc hai
2
2 1 0
) ( x a x a a x f + + · .
L Êy ®¹ o hµm tæng sai sè theo c¸ c hÖsè vµ cho b»ng kh«ng ta cã hÖsau ®©y ®Óx¸ c ®Þnh c¸ c hÖsè håi quy bËc hai :
¹
¹
¹
¹
¹
¹
¹
¹
¹
'
¹
· + +
· + +
· + +
∑ ∑ ∑ ∑
∑ ∑ ∑ ∑
∑ ∑ ∑
· · · ·
· · · ·
· · ·
n
k
k k
n
k
n
k
k k
n
k
k
n
k
k k
n
k
n
k
k k
n
k
k
n
k
k
n
k
k
n
k
k
y x x a x a x a
y x x a x a x a
y n a x a x a
1
2
1 1
2
0
3
1
1
4
2
1 1 1
0
2
1
1
3
2
1 1
0 1
1
2
2



(23)
VÒnguyª n t¾c ta cã thÓsö dông ph­¬ng ph¸ p nµy ®Ót×m ph­¬ng tr×nh ®a thøc bËc bÊt kú. Tuy nhi ª n trong thùc tÕph­¬ng ph¸ p trë thµnh kh«ng æn ®Þnh khi bËc ®a
thøc l í n h¬n v×c¸ c sai sè l µm trßn sè trong m¸ y tÝnh.
3. M « h×nh phi tuyÕn
Ph­¬ng ph¸ p b×nh ph­¬ng nhá nhÊt cã thÓ¸ p dông cho hµm bÊt kú, nh­ng hÖc¸ c ph­¬ng tr×nh ®Ót×m c¸ c hÖsè cã thÓphi tuyÕn, vµ do ®ã kh«ng thÓgi ¶i ®­î c b»ng
c¸ ch sö dông c¸ c ph­¬ng tr×nh tuyÕn tÝnh. Tuy nhi ª n, trong mét sè tr­êng hî p, mét hµm phi tuyÕn cã thÓchuyÓn thµnh mét hµm tuyÕn tÝnh. ThÝdô vÒmét hµm cã thÓ
tuyÕn tÝnh ho¸ l µ
a
x b x f ) ( · (24)
NÕu l Êy l oga hai vÕcña ph­¬ng tr×nh nµy, ta cã
b x a x f ln ln ) ( ln + · . (25)
NÕu ký hi Öu
) ( ln ) ( x f x g · (26)
b b ln
~
· (27)
x x ln
~
· (28)
303 304
y y ln
~
· (29)
ta cã
b x a x g
~
~
) ( + · (30)
Ví i ph­¬ng tr×nh (30) c¸ c hÖsè håi quy a vµ b
~
tÝnh theo c¸ c c«ng thøc
∑ ∑
∑ ∑ ∑
· ·
· · ·


·
n
k
k
n
k
k
n
k
k k
n
k
k
n
k
k
x n x
y x n y x
a
1
2 2
1
1 1 1
~
)
~
(
~ ~

~

~
(31)
∑ ∑
∑ ∑ ∑ ∑
· ·
· · · ·


·
n
k
k
n
k
k
n
k
k
n
k
k
n
k
k k
n
k
k
x n x
y x y x x
b
1
2 2
1
1 1
2
1 1
~
)
~
(
~

~

~ ~

~
~
(32)
VËy c«ng vi Öc tÝnh to¸ n gåm: chuyÓn ®æi c¸ c gi ¸ trÞsè l i Öu
k
x vµ
k
y theo c¸ c c«ng thøc (28), (29), tÝnh c¸ c tæng, kÕt qu¶ thÕvµo c¸ c ph­¬ng tr×nh (31), (32) ®Ót×m
a vµ b
~
. Gi ¶i ph­¬ng tr×nh (27) ®èi ví i b vµ ®Æt vµo ph­¬ng tr×nh (24).











305 306








Phô l ôc 4: S¬ ®å øng dông ph­¬ng ph¸ p håi quy nhi Òu bi Õn
Gi ¶ sö cã n quan tr¾c ®èi ví i bi Õn phô thuéc y vµ c¸ c bi Õn ®éc l Ëp
m
x x x ..., , ,
2 1
. Ph­¬ng tr×nh håi quy ®­î c thi Õt l Ëp nh­ sau:
m m
x a x a x a a y + + + + · ...
2 2 1 1 0
.
C¸ c hÖsè håi quy ) ,..., 1 ( m i a
i
· ®­î c chän sao cho tho¶ m· n
( )

·
· − − − − − ·
n
i
m m
x a x a x a a y
1
2
2 2 1 1 0
min ... δ
L Çn l ­î t l Êy ®¹ o hµm bi Óu thøc trª n theo
m
a a a a ,..., , ,
2 1 0
vµ cho c¸ c ®¹ o hµm b»ng kh«ng, ta cã hÖ 1 + m ph­¬ng tr×nh ®Óx¸ c ®Þnh c¸ c hÖsè a
[ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ]
m m m m m m m
m m
m m
m m
yx a x x a x x a x x a x
yx a x x a x x a x x a x
yx a x x a x x a x x a x
y a x a x a x na
· + + + +
· + + + +
· + + + +
· + + + +




...
... ... ... ... ... ...
...
...
...
2 2 1 1 0
2 2 2 2 2 1 2 1 0 2
1 1 2 1 2 1 1 1 0 1
2 2 1 1 0

(33)
307 308
HÖph­¬ng tr×nh nµy gäi l µ hÖph­¬ng tr×nh chÝnh t¾c ®Óx¸ c ®Þnh c¸ c hÖsè håi quy. D­í i d¹ ng ma trËn ta vi Õt hÖnµy nh­ sau:
[ ] [ ] [ ]
[ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ]

,
`

.
|
·

,
`

.
|

,
`

.
|
m m m m m m m
m
m
m
b
b
b
b
a
a
a
a
x x x x x x x
x x x x x x x
x x x x x x x
x x x n
... ...
.
...
... ... ... ... ...
...
...
...
2
1
0
2
1
0
2 1
2 2 2 2 1 2
1 1 2 1 1 1
2 1


(34)
ví i dÊu [ ] ký hi Öu phÐp l Êy tæng

n
1
.
§ Ót×m c¸ c hÖsè håi quy
m
a a a a ,..., , ,
2 1 0
ta ph¶i gi ¶i hÖph­¬ng tr×nh chÝnh t¾c theo ph­¬ng ph¸ p l o¹ i bi Õn Gauss hoÆc ph­¬ng ph¸ p c¨ n bËc hai ®· m« t¶ trong
phô l ôc 2 v×ma trËn hÖsè cña c¸ c ph­¬ng tr×nh chÝnh t¾c l µ ma trËn ®èi xøng. D­í i ®©y dÉn hai thñ tôc hç trî cho vi Öc l Ëp hÖph­¬ng tr×nh ®¹ i sè tuyÕn tÝnh chuÈn t¾c
(34) − SUBROUTI NE L HPTCT vµ gi ¶i hÖph­¬ng tr×nh ®ã b»ng ph­¬ng ph¸ p l o¹ i bi Õn Gauss − SUBROUTI NE GAUSS.
SUBROUTI NE L HPTCT ( Y , X , A , N, M )
I NTEGER N, M, I , J, K
REAL Y(10000), X (10000, 50), A (0 : 50, 0 : 51)
A (0, 0) = N
DO J = 1, M
A (0, J) = 0.0
DO K = 1, N
A (0, J) = A (0, J) + X (K, J)
END DO
END DO
A (0, M + 1) = 0.0
DO K = 1, N
A (0, M + 1) = A (0, M + 1) + Y (K)
END DO
DO I = 1, M
A (I , M + 1) = 0.0
DO K = 1, N
A (I , M + 1) = A (I , M + 1) + Y (K) * X(K, I )
END DO
309 310
END DO
DO I = 1, M
DO J = I , M
A (I , J) = 0.0
DO K = 1, N
A (I , J) = A (I , J) + X (K, I ) * X (K , J)
END DO
ENDDO
ENDDO
DO I = 1, M
DO J = 0, I - 1
A (I , J) = A (J, I )
END DO
END DO
RETURN
END

SUBROUTI NE GA USS (M , A , X )
I NTEGER M
REAL A (0 : 50, 0 : 51), X (0 : 50)
REAL MA X
DO I = 0, M - 1
K = I
MAX = ABS (A (K , K))
DO J = I + 1, M
I F (MAX .L T. ABS (A (J, I ))) THEN
MAX = ABS (A (J, I ))
K = J
END I F
END DO
I F (K .NE. I ) THEN
DO J = I , M + 1
MAX = A (I , J)
A (I , J) =A (K, J)
A (K, J) = MAX
END DO
END I F
311 312
DO J = I + 1, M + 1
A (I , J) = A (I , J) / A (I , I )
END DO
DO J = I + 1, M
DO K = I + 1, M + 1
A (J, K) = A (J, K) - A (J, I ) * A (I , K)
END DO
END DO
END DO
X (M) = A (M, M + 1) / A (M, M)
DO I = M - 1, 0, -1
X (I ) = A (I , M + 1)
DO J = I + 1, M
X (I ) = X (I ) - A (I , J) * X (J)
END DO
END DO
RETURN
END

Trong ch­¬ng tr×nh, ta th­êng lÖnh cho m¸y tÝnh in kÕt qu¶ tÝnh to¸n lªn mµn h×nh hay m¸y in nèi víi m¸y tÝnh vµ lµ nh÷ng thiÕt bÞ xuÊt d÷ liÖu. PhÇn mÒm chøa nh÷ng chØ dÉn hoÆc lÖnh mµ ta muèn m¸y tÝnh thùc hiÖn. PhÇn mÒm cã thÓ ®­îc viÕt b»ng nhiÒu ng«n ng÷ vµ cho nhiÒu môc ®Ých. Nh÷ng ch­¬ng tr×nh thùc hiÖn nh÷ng thao t¸c chung, th­êng ®­îc nhiÒu ng­êi sö dông gäi lµ nh÷ng phÇn mÒm c«ng cô. HÖ ®iÒu hµnh lµ tËp hîp c¸c ch­¬ng tr×nh gióp ng­êi dïng giao tiÕp víi m¸y tÝnh. HÖ ®iÒu hµnh t¹o mét m«i tr­êng thuËn tiÖn cho ng­êi dïng “giao tiÕp” ®­îc víi m¸y tÝnh, thùc hiÖn nh÷ng ch­¬ng tr×nh øng dông nh­ c¸c bé biªn dÞch ng«n ng÷ lËp tr×nh, c¸c phÇn mÒm c«ng cô... HÖ ®iÒu hµnh gåm mét sè ch­¬ng tr×nh cho phÐp thao t¸c víi file nh­ in, sao chÐp, hiÓn thÞ danh s¸ch file... Nh÷ng hÖ ®iÒu hµnh hiÖn ®¹i nh­ Windows cßn gióp m¸y tÝnh nhËn biÕt vµ qu¶n lý c«ng viÖc cña rÊt nhiÒu thiÕt bÞ ngo¹i vi nèi kÌm víi m¸y tÝnh nh­ c¸c thiÕt bÞ nhËp, xuÊt d÷ liÖu, mµn h×nh, m¸y in, m¸y quÐt ¶nh, loa, c¸c m¸y quan tr¾c chuyªn dông...

External memory

Internal memory

Input

Processor

Output

ALU

CPU

H×nh 1.1. S¬ ®å khèi cña mét m¸y tÝnh

Th«ng th­êng hiÖn nay c¸c chuyªn gia lËp ch­¬ng tr×nh viÕt ra rÊt nhiÒu ch­¬ng tr×nh ®Ó m¸y tÝnh thùc hiÖn, tõ nh÷ng ch­¬ng tr×nh ®¬n gi¶n ®Ó gi¶i c¸c bµi to¸n nhá, tÝnh to¸n mét vµi gi¸ trÞ, ®Õn nh÷ng ch­¬ng tr×nh ®å sé xö lý th«ng tin phøc t¹p, th«ng minh, gi¶i nh÷ng bµi to¸n khoa häc kÜ thuËt lín, chÕ b¶n v¨n b¶n, thiÕt kÕ ®å häa, c¸c ch­¬ng tr×nh nghe nh¹c, xem phim, trß ch¬i, truy cËp Internet. Nh÷ng ch­¬ng tr×nh t­¬ng ®èi lín vµ phøc t¹p th­êng ®­îc gäi lµ nh÷ng phÇn mÒm. Ng­êi dïng m¸y tÝnh cã thÓ sö dông nh÷ng ch­¬ng tr×nh ®ã. Ngµy nay chóng ta cã c¶m gi¸c r»ng m¸y tÝnh lµm ®­îc tÊt c¶ mäi viÖc. Tuy nhiªn, ph¶i nhí r»ng tÊt c¶ nh÷ng g× m¸y tÝnh lµm ®­îc lµ do nã lµm theo mét ch­¬ng tr×nh do con ng­êi t¹o ra.

9

10

1.2. Thùc hiÖn mét ch­¬ng tr×nh m¸y tÝnh
Thùc hiÖn mét ch­¬ng tr×nh m¸y tÝnh th­êng cßn ®­îc gäi t¾t lµ ch¹y ch­¬ng tr×nh. Khi ng­êi dïng m¸y tÝnh muèn nã lµm mét viÖc g× ®ã, thÝ dô gi¶i mét bµi to¸n, th× ng­êi dïng ph¶i viÕt ra mét ch­¬ng tr×nh ®Ó cho m¸y thùc hiÖn. Ng­êi lËp tr×nh th­êng viÕt c¸c ch­¬ng tr×nh m¸y tÝnh b»ng ng«n ng÷ bËc cao víi nh÷ng c©u lÖnh gièng nh­ nh÷ng c©u tiÕng Anh, dÔ häc vµ sö dông. Ng«n ng÷ Fortran còng thuéc lo¹i ®ã. Mçi mét b­íc ta muèn m¸y tÝnh thùc hiÖn ph¶i ®­îc m« t¶ ra theo mét có ph¸p ng«n ngò ®Æc thï (language syntax). Tuy nhiªn, ch­¬ng tr×nh ta viÕt nh­ vËy vÉn ph¶i ®­îc mét ch­¬ng tr×nh chuyªn (bé biªn dÞch - compiler) dÞch thµnh ng«n ng÷ m¸y th× m¸y tÝnh míi hiÓu vµ thùc hiÖn ®­îc. Khi compiler dÞch c¸c dßng lÖnh ta viÕt, nã tù ®éng t×m c¸c lçi dÞch, hay lçi có ph¸p (syntax error), tøc c¸c lçi vÒ chÝnh t¶, c¸c dÊu ph©n c¸ch... NÕu ch­¬ng tr×nh viÕt ra cã lçi dÞch, bé biªn dÞch sÏ th«ng b¸o ®Ó ng­êi viÕt ch­¬ng tr×nh söa. Sau khi ®· söa hÕt lçi, ta ch¹y l¹i ch­¬ng tr×nh b¾t ®Çu tõ b­íc dÞch. Mét khi dÞch xong, mét ch­¬ng tr×nh so¹n th¶o liªn kÕt (linkage editor program) sÏ thùc hiÖn viÖc hoµn tÊt s½n sµng cho b­íc thùc hiÖn. ChÝnh lµ ë b­íc nµy c¸c lÖnh ta viÕt ®­îc thùc hiÖn trong m¸y tÝnh. Lçi ch­¬ng tr×nh còng cã thÓ xuÊt hiÖn trong b­íc nµy, gäi lµ lçi trong khi ch¹y ch­¬ng tr×nh (run-time error) hay lçi l«gic. Nh÷ng lçi nµy kh«ng liªn quan tíi có ph¸p cña lÖnh, mµ liªn quan tíi l«gic cña c¸c lÖnh, chØ lé ra khi m¸y tÝnh thùc thi c©u lÖnh. ThÝ dô, lÖnh
X = A/ B

lµ mét c©u lÖnh ®óng, b¶o m¸y tÝnh lÊy A chia cho B vµ gäi kÕt qu¶ lµ X . Tuy nhiªn, gi¶ sö nÕu B b»ng kh«ng, phÐp tÝnh chia cho sè kh«ng lµ phÐp tÝnh sai, kh«ng cã nghÜa vµ ta ®­îc th«ng b¸o lçi ch¹y ch­¬ng tr×nh. C¸c lçi l«gic kh«ng ph¶i bao giê còng ®­îc th«ng b¸o. ThÝ dô, nÕu trong ch­¬ng tr×nh thay v× chia mét sè cho 0.10 ta viÕt thµnh nh©n víi 0.10, khi ch¹y ch­¬ng tr×nh sÏ ch¼ng cã lçi nµo ®­îc th«ng b¸o, nh­ng ®¸p sè bµi to¸n, tøc kÕt qu¶ mµ ta mong ®îi, sÏ lµ sai.

1.3. Quy tr×nh gi¶i bµi to¸n trªn m¸y tÝnh
Nh×n chung c«ng viÖc gi¶i mét bµi to¸n b»ng m¸y tÝnh gåm n¨m b­íc sau: 1) Ph¸t biÓu bµi to¸n mét c¸ch râ rµng. 2) M« t¶ th«ng tin nhËp vµo vµ xuÊt ra. 3) Gi¶i bµi to¸n b»ng tay ®èi víi tËp d÷ liÖu ®¬n gi¶n. 4) Ph¸t triÓn c¸ch gi¶i bµi to¸n thµnh d¹ng tæng qu¸t. 5) KiÓm tra ®¸p sè víi nhiÒu tËp d÷ liÖu kh¸c nhau. B©y giê ta minh häa n¨m b­íc trªn qua thÝ dô bµi to¸n tÝnh gi¸ trÞ trung b×nh cña mét tËp sè liÖu thùc nghiÖm. B­íc 1: Ta ph¸t biÓu bµi to¸n mét c¸ch râ rµng nh­ sau: “TÝnh trÞ sè trung b×nh cña tËp c¸c gi¸ trÞ sè liÖu thùc nghiÖm". B­íc 2: ChØ ra cô thÓ sè liÖu vµo vµ ra lµ g×, h×nh thøc ra sao. NÕu cã tê ghi mét sè gi¸ trÞ cña sè liÖu, ®ßi hái nhËp vµo m¸y qua bµn phÝm, khi nµo hÕt sè liÖu th× gâ gi¸ trÞ 0.0 ®Ó b¸o hÕt, sau ®ã míi tÝnh trÞ sè trung b×nh vµ in ra kÕt qu¶ lµ trÞ sè trung b×nh ®ã. VËy th× ph¶i m« t¶ ë b­íc 2 nh­ sau: "§Çu vµo lµ chuçi c¸c gi¸ trÞ sè thùc kh¸c kh«ng. §Çu ra lµ gi¸ trÞ trung b×nh, sÏ lµ mét sè thùc ®­îc in trªn mµn h×nh". Gi¶ sö nÕu ®Çu vµo lµ mét sè sè liÖu nh­ trªn nh­ng ®· ®­îc ghi vµo mét tÖp (file) 11 12

trong æ cøng, quy c¸ch ghi còng cã nh÷ng ®Æc ®iÓm nhÊt ®Þnh, th× b­íc m« t¶ vµo vµ ra sÏ hoµn toµn kh¸c vµ c¸ch gi¶i còng sÏ kh¸c. Khi ®ã ta ph¶i m« t¶ râ c¸ch thøc sè liÖu ghi trong file. ThÝ dô, ta cã thÓ m« t¶ d÷ liÖu ®Çu vµo vµ ®Çu ra nh­ sau: D÷ liÖu ®Çu vµo lµ mét chuçi sè thùc ®­îc ghi trong file v¨n b¶n cã tªn lµ SOLIEU.DAT víi quy c¸ch ghi nh­ sau: dßng trªn cïng ghi mét sè nguyªn chØ sè phÇn tö cña chuçi, c¸c dßng tiÕp sau lÇn l­ît ghi c¸c sè thùc, mçi sè trªn mét dßng. B­íc 3: Dïng m¸y tÝnh tay tÝnh thö víi mét tËp ®¬n gi¶n gåm n¨m sè liÖu: thÝ dô:
Thø tù 1 2 3 4 5 Trung b×nh = Gi¸ trÞ 23.43 37.43 34.91 28.37 30.62 30.95

TËp sè liÖu nµy vµ kÕt qu¶ sÏ ®­îc dïng ®Ó kiÓm tra ë b­íc 5. B­íc 4: Trong b­íc nµy ta kh¸i qu¸t l¹i nh÷ng thao t¸c cÇn lµm ë b­íc 3. TuÇn tù nh÷ng thao t¸c nµy ®Ó dÉn ®Õn gi¶i ®­îc bµi to¸n chÝnh lµ thuËt gi¶i hay thuËt to¸n (algorithm). Ta sÏ m« t¶ tuÇn tù tõ ®Çu ®Õn cuèi qu¸ tr×nh gi¶i. Chia qu¸ tr×nh thµnh mét sè khèi vµ liÖt kª nh÷ng khèi ®ã ra. Sau nµy ch­¬ng tr×nh m¸y tÝnh sÏ tuÇn tù thùc hiÖn c¸c khèi chia ®ã. Trong mçi khèi ta l¹i chi tiÕt ho¸ thªm ra ®Õn møc cã thÓ chuyÓn thµnh nh÷ng lÖnh m¸y tÝnh. VËy ë ®©y ®· ¸p dông hai ph­¬ng ph¸p: ph©n khèi vµ chi tiÕt ho¸ tõng khèi. Víi bµi to¸n ®ang xÐt, tr­êng hîp d÷ liÖu ®Çu vµo cÇn nhËp tõ bµn phÝm, ta chia thµnh ba khèi: - NhËp c¸c gi¸ trÞ sè vµ lÊy tæng cña chóng. - Chia tæng cho sè gi¸ trÞ. - In trÞ sè trung b×nh. Cô thÓ ho¸ tõng khèi sÏ dÉn tíi gi¶ tr×nh cña ch­¬ng tr×nh nh­ sau: 1. Cho tæng cña c¸c gi¸ trÞ b»ng kh«ng. 2. Cho sè sè liÖu vµo b»ng kh«ng. 3. NhËp vµo tõng gi¸ trÞ vµ kiÓm tra chõng nµo gi¸ trÞ nhËp vµo cßn kh¸c sè 0.0 th×: - Céng thªm gi¸ trÞ ®ã vµo tæng. - Céng thªm 1 vµo sè sè liÖu. 4. Chia tæng cho sè sè liÖu ®Ó ®­îc gi¸ trÞ trung b×nh. 5. In gi¸ trÞ trung b×nh. V× thuËt gi¶i ®· ®­îc m« t¶ kh¸ chi tiÕt, ta chuyÓn thuËt gi¶i ®ã thµnh ch­¬ng tr×nh nh­ sau:
PROGRAM TGTTB

13

14

5

6

INTEGER DEM REAL X, TONG, TB TONG = 0.0 DEM = 0 READ*, X IF (X .NE. 0.0) THEN TONG = TONG + X DEM = DEM + 1 GOTO 5 END IF TB = TONG / REAL(DEM) PRINT 6, TB FORMAT (1X, 'TRUNG BINH BANG ' , F6.2) STOP END

B­íc 5: Trong b­íc nµy ta thö ch¹y ch­¬ng tr×nh ®· viÕt víi tËp sè liÖu ®· ®­îc thö b»ng c¸ch tÝnh tay ë môc 3. §Çu ra trªn mµn h×nh m¸y tÝnh ph¶i nh­ sau: TRU NG BI N H BAN G 30.95 Ngoµi ra, ta cã thÓ ch¹y thö víi mét sè tËp sè liÖu kh¸c nhau ®Ó tin ch¾c vµo tÝnh ®óng ®¾n l«gic vµ hoµn h¶o cña ch­¬ng tr×nh ®· x©y dùng. Nh÷ng kh¸i niÖm thuËt gi¶i vµ gi¶ tr×nh trªn ®©y cã ý nghÜa rÊt quan träng. C¸ch gi¶i, ph­¬ng ph¸p gi¶i mét bµi to¸n chÝnh lµ thuËt gi¶i. C¸c bµi to¸n khoa häc kÜ thuËt thùc hiÖn trªn m¸y tÝnh th­êng cã thuËt gi¶i lµ nh÷ng ph­¬ng ph¸p cña to¸n häc hoÆc cña c¸c khoa häc chuyªn ngµnh mµ ng­êi lËp tr×nh ®· biÕt. Mét sè nhiÖm vô, bµi to¸n kh¸c cã thÓ cã c¸ch gi¶i xuÊt ph¸t tõ kinh nghiÖm thùc tÕ, tõ suy nghÜ l«gic th­êng ngµy cña chóng ta. ThÝ dô, khi gi¶i ph­¬ng tr×nh bËc hai a x 2 + bx + c = 0 b»ng m¸y tÝnh, ta cã thÓ tÝnh gi¸ trÞ cña biÖt thøc ∆ . Sau ®ã tïy gi¸ trÞ cña ∆ cã thÓ lµ: ∆ < 0 ph­¬ng tr×nh v« nghiÖm, ∆ = 0 ph­¬ng tr×nh cã mét nghiÖm kÐp vµ ∆ > 0 ph­¬ng tr×nh cã hai nghiÖm riªng biÖt mµ ®­a ra th«ng b¸o kÕt qu¶. Trong thÝ dô nµy, thuËt to¸n lµ ph­¬ng ph¸p quen thuéc mµ chóng ta ®· häc trong ®¹i sè. Mét thÝ dô kh¸c: Cã mét danh s¸ch sinh viªn cïng víi ®iÓm cña m«n thi. S¾p xÕp l¹i danh s¸ch ®ã sao cho ng­êi cã ®iÓm thi cao h¬n th× ë dßng trªn. Ta cã thÓ lµm nh­ sau: T¹m thêi xem ng­êi thø nhÊt lµ ng­êi ®øng ®Çu danh s¸ch. Dïng ngãn tay trá dâi theo tõng ng­êi cßn l¹i, kÓ tõ ng­êi thø hai cho ®Õn hÕt danh s¸ch, nÕu ai cã ®iÓm thi cao h¬n th× chuyÓn ng­êi ®ã lªn ®Çu danh s¸ch vµ ng­êi ®ang ë ®Çu danh s¸ch chuyÓn xuèng chç cña ng­êi võa ®­îc thay. KÕt qu¶ ta ®­îc danh s¸ch míi víi ng­êi cã ®iÓm thi cao nhÊt ë dßng ®Çu. Nh­ng tõ dßng thø hai ®Õn dßng cuèi cïng cña danh s¸ch cã thÓ thø tù vÉn cßn lén xén. B©y giê ta chØ cßn viÖc s¾p xÕp l¹i tõ dßng thø hai trë ®i. Ta theo dâi tõ ng­êi thø ba cho ®Õn ng­êi cuèi cïng, nÕu ai cã ®iÓm thi cao h¬n th× ®­îc ®­a lªn dßng thø hai vµ ng­êi ®ang ë dßng thø hai sÏ bÞ ®­a xuèng dßng cña ng­êi võa thay thÕ. KÕt qu¶ lµ ng­êi ë dßng thø hai trong danh s¸ch míi sÏ lµ ng­êi cã ®iÓm thi cao thø nh×. 15 16

Nh­ng tõ dßng thø ba ®Õn cuèi danh s¸ch vÉn cßn lén xén. TiÕp tôc, ta ph¶i s¾p xÕp l¹i danh s¸ch kÓ tõ dßng thø ba theo ®óng c¸ch nh­ trªn. LÆp l¹i c«ng viÖc nh­ vËy cho ®Õn dßng tr­íc dßng cuèi cïng, ta sÏ ®­îc danh s¸ch hoµn chØnh s¾p xÕp theo thø tù gi¶m dÇn cña ®iÓm thi. Ta thÊy, trong tr­êng hîp nµy thuËt gi¶i cña bµi to¸n chÝnh lµ c¸i c¸ch mµ chóng ta cã thÓ vÉn th­êng lµm trong thùc tÕ ®êi sèng khi ph¶i s¾p xÕp l¹i danh s¸ch theo thø tù nh­ng kh«ng dïng m¸y tÝnh. Vµ c¸ch lµm “b»ng tay” nµy còng cã thÓ ®­îc ¸p dông lµm thuËt to¸n cho c¸c lo¹i bµi to¸n s¾p xÕp trong m¸y tÝnh. Chóng t«i giíi thiÖu chi tiÕt hai thÝ dô võa råi cèt lµ ®Ó sinh viªn ý thøc ®­îc r»ng t­ duy thuËt gi¶i, suy nghÜ vÒ c¸ch gi¶i lµ b­íc quan träng nhÊt khi b¾t tay vµo x©y dùng ch­¬ng tr×nh m¸y tÝnh. Cã x¸c ®Þnh ®­îc thuËt gi¶i th× míi nãi ®Õn lËp ®­îc ch­¬ng tr×nh ®Ó gi¶i bµi to¸n trªn m¸y tÝnh. Cßn gi¶ tr×nh gièng nh­ nh÷ng lêi chØ dÉn vÒ ph­¬ng ph¸p, c¸ch gi¶i cho ai ®ã tuÇn tù thùc hiÖn c¸c b­íc cña thuËt gi¶i bµi to¸n ®Ó dÉn tíi kÕt qu¶. B¹n h·y t­ëng t­îng trong ®êi sèng nÕu b¹n muèn nhê ai ®ã thùc hiÖn mét nhiÖm vô. NÕu nhiÖm vô ®ã kh«ng qu¸ tÇm th­êng, th× th­êng Ýt ra b¹n ph¶i gi¶i thÝch tãm t¾t yªu cÇu, tuÇn tù thùc hiÖn nhiÖm vô cho ng­êi ta - b¹n ®· ®Æt ch­¬ng tr×nh cho ng­êi ta thùc hiÖn. Nh­ vËy, ta thÊy thùc chÊt gi¶ tr×nh ®· lµ mét ch­¬ng tr×nh, chØ cã ®iÒu nã ®­îc viÕt ra ng¾n gän b»ng vµi c©u, vµi kÝ hiÖu quen dïng, ch­a ®­îc viÕt b»ng mét ng«n ng÷ lËp tr×nh cô thÓ mµ th«i. Mét ch­¬ng tr×nh m¸y tÝnh viÕt b»ng ng«n ng÷ Fortran hay bÊt kú mét ng«n ng÷ nµo kh¸c ch¼ng qua chØ lµ nh÷ng lêi chØ dÉn nµy ®­îc viÕt theo qui ­íc kÝ hiÖu ®Ó m¸y tÝnh hiÓu ®­îc mµ lµm thay cho ta.

1.4. Nh÷ng ch­¬ng tr×nh Fortran hoµn chØnh
Ch­¬ng tr×nh TGTTB ë môc tr­íc cã thÓ lµ mét thÝ dô vÒ mét ch­¬ng tr×nh hoµn chØnh. Nh­ vËy ta thÊy mét ch­¬ng tr×nh hoµn chØnh b¾t ®Çu b»ng lÖnh PROGRAM chØ sù b¾t ®Çu cña ch­¬ng tr×nh. D¹ng tæng qu¸t cña lÖnh nµy nh­ sau: PROGRAM Tªn ch­ ¬ng tr×nh trong ®ã tªn ch­¬ng tr×nh lµ mét x©u ký tù gåm tõ mét ®Õn s¸u ký tù, b¾t ®Çu b»ng ch÷ c¸i vµ chØ chøa c¸c ch÷ c¸i la tinh vµ ch÷ sè. KÕt thóc ch­¬ng tr×nh lµ hai lÖnh: STOP END LÖnh PROGRAM vµ lÖnh STOP lµ c¸c lÖnh tuú chän, cã thÓ kh«ng nhÊt thiÕt ph¶i cã. NÕu ta kh«ng viÕt, chóng cã thÓ ®­îc ch­¬ng tr×nh dÞch tù thªm vµo. PhÇn th©n ch­¬ng tr×nh gåm tÊt c¶ c¸c lÖnh kh¸c nh»m thùc hiÖn bµi to¸n ®­îc gi¶i vµ chia thµnh hai nhãm: nhãm c¸c lÖnh thùc hiÖn (executable statement) vµ nhãm c¸c lÖnh kh«ng thùc hiÖn (non-executable statement) hay gäi lµ c¸c lÖnh m« t¶, lÖnh khai b¸o. Nhãm c¸c lÖnh m« t¶ ph¶i n»m ë phÝa trªn cña th©n ch­¬ng tr×nh. Nh­ vËy c¸c ch­¬ng tr×nh Fortran cã thÓ cã cÊu tróc tæng qu¸t nh­ sau: PROGRAM Tªn ch­¬ng tr×nh C¸c lÖnh kh«ng thùc hiÖn (Non-executable statements) 17 18

2) dïng ®Ó ghi sè hiÖu lÖnh hay gäi lµ nh·n (*) Tr­íc ®©y ng­êi ta ph¶i dïng giÊy chuyªn dông. F6. Sau ®ã tõng lÖnh ch­¬ng tr×nh tõ giÊy chuÈn ®­îc ghi vµo mét tê b×a chuyªn dông cã h×nh d¸ng ®Æc biÖt b»ng m¸y ®ôc lç gióp tù ®éng m· hãa tõng ký tù cña dßng lÖnh thµnh mét hµng lç víi vÞ trÝ kh¸c nhau. phÇn th©n vµ phÇn cuèi. Trªn mµn h×nh so¹n th¶o chuÈn (*) ng­êi ta quy ­íc c¸c cét tõ 1 ®Õn 5 (h×nh 1. ®Ó viÕt ch­¬ng tr×nh Fortran. C¸c lÖnh cña mét ch­¬ng tr×nh ®­îc viÕt thµnh c¸c dßng nèi tiÕp nhau. Cuèi cïng ch­¬ng tr×nh cã lÖnh STOP vµ END. ®äc. TB 6 FORMAT (1X. Trong thùc tÕ cã thÓ cã nh÷ng ch­¬ng tr×nh lín h¬n rÊt nhiÒu. 'TRUNG BINH BANG ' . TB cßn nhãm lÖnh thùc hiÖn gåm c¸c lÖnh ë tiÕp sau hai lÖnh trªn: TONG = 0. lÖnh tÝnh to¸n c¸c phÐp tÝnh.0 DEM = 0 5 READ*. Ngµy nay c¸c bé so¹n th¶o cã thÓ gióp chóng ta viÕt c¸c 19 20 . gåm hµng ngh×n dßng lÖnh vµ cã cÊu tróc phøc t¹p. mçi lÖnh trªn mét dßng míi. 0. Quy c¸ch so¹n th¶o mét ch­¬ng tr×nh Fortran C¸c ch­¬ng tr×nh Fortran ®­îc so¹n th¶o nhê mét bé so¹n th¶o (editor) hoÆc phÇn mÒm so¹n v¨n b¶n nµo ®ã. ghi sè liÖu vµ mét sè lÖnh kh¸c. ta thÊy sau tõ khãa PROGRAM lµ tªn ch­¬ng tr×nh . X IF (X . trong phÇn th©n ch­¬ng tr×nh còng chØ cã hai nhãm lÖnh gièng nh­ trong ch­¬ng tr×nh ®¬n gi¶n trªn ®©y. lÖnh chuyÓn ®iÒu khiÓn. gäi lµ blank.®ã lµ côm ch÷ TGTTB.5.2) Nh÷ng lÖnh thùc hiÖn th­êng lµ nh÷ng lÖnh g¸n. TONG.0) THEN TONG = TONG + X DEM = DEM + 1 GOTO 5 END IF TB = TONG / REAL(DEM) PRINT 6. Nhãm c¸c lÖnh kh«ng thùc hiÖn (nh÷ng lÖnh m« t¶) gåm 2 lÖnh: INTEGER DEM REAL X. 1.C¸c lÖnh thùc hiÖn (Executable statements) STOP END Trong ch­¬ng tr×nh tÝnh gi¸ trÞ trung b×nh cña chuçi sè thùc ë thÝ dô trªn.NE. Nh­ng ta vÉn thÊy nã cã phÇn ®Çu.

kh¸c kh«ng. trong ®ã cã c¶ nh÷ng lçi kh«ng ngê tíi. Do ®ã. Kinh nghiÖm cho thÊy r»ng ngay c¶ ®èi víi ng­êi lËp tr×nh thµnh th¹o. C¸c nh·n trong ch­¬ng tr×nh cã cÇn t¨ng dÇn kh«ng? 3. khi viÕt mét ch­¬ng tr×nh dï ®¬n gi¶n vÉn cã thÓ m¾c lçi. th­êng ng­êi ta dïng ch÷ C (ch÷ c¸i ®Çu tiªn cña tõ comment). TÊt c¶ c¸c dßng ghi chó ph¶i b¾t ®Çu b»ng mét ch÷ c¸i. 21 22 . ChÞu khã rÌn luyÖn nh÷ng thãi quen tèt còng gãp phÇn gióp chóng ta tiÕn xa. kh«ng ®­îc dÞch khi dÞch ch­¬ng tr×nh.lÖnh. NÕu dïng ch÷ C lµm dÊu nèi dßng lÖnh th× cã ®­îc kh«ng? 2. ë mét sè s¸ch d¹y ng«n ng÷ lËp tr×nh. TÊt c¶ c¸c th«ng tin ë qu¸ cét 72 bÞ bá qua. th­êng ng­êi ta hay dïng dÊu * hoÆc dÊu +.2. ®Ó chØ r»ng dßng hiÖn t¹i lµ phÇn nèi tiÕp cña lÖnh ë dßng trªn ®ã. sau ®ã l­u trong m¸y tÝnh d­íi d¹ng file nguån. DÊu nèi dßng lÖnh cã thÓ lµ bÊt cø ký tù nµo ngoµi ký tù trèng vµ sè kh«ng. nh÷ng lêi khuyªn quan träng cho ng­êi häc rÌn luyÖn phong c¸ch so¹n ch­¬ng tr×nh. hay phong c¸ch (style) so¹n th¶o ch­¬ng tr×nh. cét 6 chuyªn dïng ®Ó ghi ký tù nèi dßng lÖnh. nh­ng ®¬n gi¶n. ng­êi ta cßn khuyªn ng­êi häc ngay tõ ®Çu chó ý luyÖn thãi quen. Trong tµi liÖu nµy dÇn dÇn còng sÏ cã nh÷ng chØ dÉn. tØ mØ. néi dung c¸c dßng lÖnh chØ ®­îc ghi trªn c¸c cét tõ 7 ®Õn 72. Mét ch­¬ng tr×nh ®Ñp lµ ch­¬ng tr×nh tÝnh ®óng c¸i mµ ta cÇn tÝnh. ®øng ë cét thø nhÊt cña c¸c cét dïng ®Ó ghi nh·n. dïng ®Ó chØ sè hiÖu cña dßng lÖnh. nh÷ng dßng nµy kh«ng thuéc néi dung ch­¬ng tr×nh. ViÕt gi¶ tr×nh cho bµi to¸n ®ã. Quy c¸ch viÕt lÖnh Fortran trªn mµn h×nh so¹n th¶o Nh·n lÖnh lµ nh÷ng sè nguyªn d­¬ng. Trong s¸ch nµy sÏ lu«n sö dông ch÷ c¸i C ®Ó ®¸nh dÊu dßng ghi chó trong c¸c ch­¬ng tr×nh. Nªu c¸c b­íc gi¶i bµi to¸n s¾p xÕp chuçi sè nguyªn nhËp tõ bµn phÝm theo thø tù lín dÇn. khi viÕt c¸c ký tù vµ ký hiÖu hiÖn trªn mµn h×nh ®Ó dÔ theo dâi vµ chØnh söa gièng nh­ ta so¹n th¶o mét v¨n b¶n bÊt kú. ChØ nh÷ng dßng lÖnh nµo cÇn ®­îc chuyÓn ®iÒu khiÓn tíi bëi nh÷ng dßng lÖnh kh¸c míi nhÊt thiÕt ph¶i cã nh·n lÖnh. dÔ hiÓu vµ s¸ng sña vÒ c¸ch tr×nh bµy. Bµi tËp 1. Trong c¸c dßng lÖnh cã thÓ cã nh÷ng ký tù trèng ®Ó dÔ ®äc. C¸c cét 1-5 Cét 6 C¸c cét 7-72 LÖnh Fortran Ký tù nèi dßng Nh·n lÖnh H×nh 1. Trong ch­¬ng tr×nh so¹n th¶o cã thÓ cã nh÷ng dßng ghi chó (comment lines). X©y dùng mét ch­¬ng tr×nh m¸y tÝnh nãi chung lµ mét c«ng viÖc khã vµ ®ßi hái tÝnh cÈn thËn. lÖnh trùc tiÕp tõ bµn phÝm. mµ chØ cã t¸c dông gîi nhí cho ng­êi lËp tr×nh khi theo dâi kiÓm tra ch­¬ng tr×nh.

gi¸ trÞ l«gic vµ v¨n b¶n (chuçi ký tù).. 23 24 . Sè nguyªn lµ liÖt c¸c sè thËp ph©n víi dÊu +. chøa tõ 8 ®Õn 16 ch÷ sè cã nghÜa. 0. Sè phøc biÓu diÔn b»ng mét cÆp h»ng thùc trong dÊu ngoÆc ®¬n vµ c¸ch nhau bëi dÊu ph¶y. . sè phøc. c¸c kh¸i niÖm. .1. c¸c gi¸ trÞ l«gic vµ d÷ liÖu v¨n b¶n.0 vµ phÇn bËc. 0 khi dïng víi t­ c¸ch lµ ®Ó biÓu diÔn c¸c gi¸ trÞ sè t­¬ng øng th× chóng còng lµ nh÷ng d÷ liÖu kiÓu v¨n b¶n. ThÝ dô: −2.27182818D+1 TrÞ tuyÖt ®èi cùc ®¹i cña c¸c sè thùc th­êng vµ ®é chÝnh x¸c gÊp ®«i b»ng 10 −79 ®Õn 10 75 . hoÆc nh­ sè d¹ng mò víi ch÷ D thay v× E . 2. cã thÓ cã dÊu hoÆc kh«ng dÊu. Hai sè trong dÊu ngoÆc øng víi c¸c phÇn thùc vµ phÇn ¶o ph¶i cïng ®é chÝnh x¸c biÓu diÔn. +1234 C¸c sè nguyªn ®­îc biÓu diÔn d­íi d¹ng I . sè thùc ®é chÝnh x¸c gÊp ®«i. C¸c gi¸ trÞ d÷ liÖu v¨n b¶n dïng ®Ó biÓu diÔn c¸c ®o¹n v¨n b¶n nh­ tªn c¸c ®¹i l­îng. tiÕp sau lµ h»ng nguyªn gåm kh«ng qu¸ hai ch÷ sè thËp ph©n. 0. .Ch­¬ng 2 Nh÷ng yÕu tè c¬ b¶n cña Fortran 2. c¸ch nhau bëi dÊu chÊm. d÷ liÖu ch÷. trong ®ã phÇn h»ng thùc cã thÓ chøa tíi 16 ch÷ sè cã nghÜa. sè thùc. 14. 12. Sè thùc cã thÓ cã dÊu dÊu +. cã thÓ kh«ng cÇn viÕt ra c¸c phÇn ®ã. sè thùc. x©u ký tù. ThÝ dô (2. NÕu phÇn nguyªn hoÆc phÇn thËp ph©n b»ng kh«ng. Gi¸ trÞ cùc ®¹i vµ sè ch÷ sè cã nghÜa cùc ®¹i trong d¹ng F phô thuéc vµo d¹ng khai b¸o sè thùc. D¹ng E biÓu diÔn sè thùc thµnh hai phÇn: phÇn h»ng thùc n»m trong kho¶ng tõ 0. "BAO CAO SO 1". D÷ liÖu vµ c¸ch biÓu diÔn d÷ liÖu trong Fortran Fortran cã thÓ thao t¸c víi s¸u lo¹i (kiÓu) d÷ liÖu c¬ b¶n th­êng gÆp trong thùc tÕ lµ: c¸c sè nguyªn.. D­íi d¹ng F sè thùc gåm phÇn nguyªn vµ phÇn thËp ph©n.. 0. 6 .25E05. C¸c ch÷ sè 1. Trong ch­¬ng nµy ta sÏ lµm quen víi c¸c d÷ liÖu kiÓu sè nguyªn. thÝ dô côm ch÷ " Toc do". H»ng víi ®é chÝnh x¸c gÊp ®«i (d¹ng D ) cã thÓ viÕt nh­ sè víi dÊu chÊm thËp ph©n. Trong Fortran cã hai d¹ng biÓu diÔn sè thùc. BËc b¾t ®Çu b»ng ch÷ E .5E2) biÓu diÔn sè phøc 2.583 . − hoÆc kh«ng cã dÊu...7 . "Temperature".1 + 50 i trong to¸n häc. 14. Ng­êi ta cßn gäi d÷ liÖu v¨n b¶n lµ d÷ liÖu ký tù. Sè ch÷ sè cã nghÜa cña phÇn h»ng thùc vµ h»ng nguyªn còng tïy thuéc lo¹i sè thùc khai b¸o. ThÝ dô: 2. 9. ThÝ dô sè 25000 cã thÓ viÕt d­íi d¹ng E lµ 0. DÊu chÊm thËp ph©n nhÊt thiÕt ph¶i cã mÆt.1. ThÝ dô: 0 . − hoÆc kh«ng cã dÊu.3 . −400 .1 ®Õn 1. Gi¸ trÞ cùc ®¹i cña sè nguyªn gäi lµ kh¶ n¨ng biÓu diÔn sè nguyªn cña m¸y tÝnh.8 .71828182 .

. cßn c¸c tªn sau ®©y lµ sai: 25 26 . B2T5 .TRUE. nh­ng ph¶i b¾t ®Çu b»ng ch÷ c¸i. 2. tøc thùc hiÖn nh÷ng phÐp tÝnh ®èi víi c¸c gi¸ trÞ l«gic nh­ trong to¸n häc cã thÓ thùc hiÖn. víi nh÷ng giíi h¹n nh­ hiÖn nay. Ng­êi ta dïng hai gi¸ trÞ l«gic lµ . trong bé nhí m¸y tÝnh giµnh ra mét ®Þa chØ ®Ó l­u gi¸ trÞ.D÷ liÖu l«gic dïng ®Ó chØ kh¶ n¨ng cã hay kh«ng cña mét sù kiÖn. bëi v× tËp hîp 6 ký tù ®· rÊt ®ñ ®Ó chóng ta m« t¶ c¸c bµi to¸n. TÊt c¶ nh÷ng ®¹i l­îng ®ã ph¶i ®­îc l­u gi÷ trong m¸y tÝnh. Víi mçi h»ng hoÆc biÕn. ®Ó chØ hai tr¹ng th¸i ®èi lËp nhau trong nh÷ng thÝ dô trªn vµ ng«n ng÷ Fortran cã thÓ xö lý víi nh÷ng gi¸ trÞ l«gic. cßn nh÷ng ®¹i l­îng cã thÓ nhËn nh÷ng gi¸ trÞ kh¸c nhau gäi lµ c¸c biÕn. ng«n ng÷ lËp tr×nh Pascal chØ lµm viÖc víi nh÷ng sè nguyªn kh«ng lín h¬n 32767 vµ kh«ng nhá h¬n −32768. SOHANG .. trong khi hµng ngµy chóng ta cã thÓ viÕt trªn giÊy hoÆc tÝnh to¸n c¸c phÐp tÝnh víi nh÷ng sè nguyªn cã gi¸ trÞ tïy ý.. so s¸nh.2. 2. Nh÷ng ®¹i l­îng kh«ng ®æi trong suèt qu¸ tr×nh thùc hiÖn cña ch­¬ng tr×nh gäi lµ c¸c h»ng. kÓ c¶ nh÷ng bµi to¸n lín vµ phøc t¹p. Trªn ®©y lµ nh÷ng kiÓu d÷ liÖu c¬ b¶n cña ng«n ng÷ lËp tr×nh Fortran. Trong c¸c phiªn b¶n Fortran hiÖn nay. Tªn biÕn vµ tªn h»ng Tªn biÕn trong Fortran chuÈn ®­îc biÓu diÔn b»ng tËp hîp tõ 1 ®Õn 6 c¸c ch÷ c¸i trong b¶ng ch÷ c¸i la tinh (26 ch÷ c¸i) hoÆc c¸c ch÷ sè 0. Trong mét ch­¬ng tr×nh c¸c tªn biÕn kh«ng ®­îc trïng nhau. xö lý víi tÊt c¶ nh÷ng gi¸ trÞ sè gÆp trong ®êi sèng vµ khoa häc kü thuËt.. Sau nµy vµ ë c¸c ch­¬ng kh¸c. A .. Së dÜ m¸y tÝnh lµm ®­îc nh÷ng viÖc nh­ chóng ta thÊy lµ v× nã cã thÓ xö lý th«ng tin. cßn mét vµi ký tù kh¸c còng cã thÓ dïng ®Ó cÊu t¹o tªn. 9. SUM lµ hîp lÖ. Fortran vÉn cho phÐp chóng ta lËp c¸c ch­¬ng tr×nh ®Ó tÝnh to¸n.. kh«ng ph¶i sè nµo m¸y tÝnh còng biÓu diÔn ®­îc vµ tÝnh to¸n ®­îc. TÊt c¶ nh÷ng th«ng tin chóng ta gÆp trong ®êi sèng thùc tÕ ®Òu cã thÓ ®­îc biÓu diÔn b»ng nh÷ng d÷ liÖu kiÓu nµy hoÆc kiÓu kh¸c.2. Tªn lµ ký hiÖu quy ­íc cña ®Þa chØ ®ã. sè thùc.FALSE. sinh viªn nªn tËp thãi quen ®Æt tªn gän gµng theo Fortran chuÈn. Nh­ng ®ång thêi còng cã nh÷ng nÐt kh¸c biÖt. Tuy nhiªn.. Fortran chØ hiÓu vµ tÝnh to¸n ®­îc víi nh÷ng sè nguyªn lo¹i th­êng kh«ng lín h¬n 2 ⋅ 10 9 . 1.1. ®óng hay sai cña mét biÓu thøc quan hÖ. tÝnh to¸n ®­îc víi nh÷ng kiÓu d÷ liÖu nµy vµ ®­a ra nh÷ng kÕt luËn. vµ . chóng ta sÏ thÊy cßn cã nh÷ng kiÓu d÷ liÖu kh¸c ®­îc tæ chøc dùa trªn nh÷ng kiÓu d÷ liÖu c¬ b¶n võa tr×nh bµy. c¸c tªn sau ®©y X . X1 . VËy trong m¸y tÝnh cã nh÷ng giíi h¹n nhÊt ®Þnh trong viÖc biÓu diÔn c¸c sè. ®Ó dïng lµm tªn kh«ng ph©n biÖt ch÷ c¸i hoa vµ ch÷ c¸i th­êng. . T×nh h×nh còng t­¬ng tù nh­ vËy ®èi víi c¸c sè thùc. ThÝ dô. th«ng b¸o. H»ng vµ biÕn M¸y tÝnh xö lý d÷ liÖu hay thùc hiÖn nh÷ng tÝnh to¸n víi nh÷ng ®¹i l­îng. ThÝ dô. ë ®©y chóng ta cÇn l­u ý r»ng nh÷ng kh¸i niÖm d÷ liÖu trong m¸y tÝnh nh­ sè nguyªn. nãi chung gièng víi nh÷ng kh¸i niÖm t­¬ng øng trong ®êi sèng hoÆc trong to¸n häc. Ngoµi ra. Phiªn b¶n Fortran 90 cho phÐp ®Æt tªn víi sè ký tù dµi h¬n 6 vµ trong tªn cã thÓ cã mét sè ký tù kh¸c n÷a. Tuy nhiªn.

2. ng­êi míi häc lËp tr×nh kh«ng bao giê nªn dïng c¸ch m« t¶ Èn. DOUBLE PRECISION. B*T v× trong tªn thø nhÊt ký tù ®Çu tiªn lµ ch÷ sè. L. thùc ®é chÝnh x¸c gÊp ®«i vµ ký tù v¨n b¶n: INTEGER Danh s¸ch c¸c biÕn nguyªn REAL Danh s¸ch c¸c biÕn thùc LOGICAL Danh s¸ch c¸c biÕn l«gic COMPLEX Danh s¸ch c¸c biÕn phøc DOUBLE PRECISION Danh s¸ch c¸c biÕn ®é chÝnh x¸c ®«i CHARACTER Danh s¸ch c¸c biÕn ký tù Trong danh s¸ch c¸c biÕn sÏ liÖt kª c¸c tªn biÕn. tªn c¸c ch­¬ng tr×nh con vµ tªn file.. DEM REAL X1. cßn tªn biÕn thùc b¾t ®Çu b»ng mét trong nh÷ng ch÷ c¸i ngoµi s¸u ch÷ c¸i trªn. LOGICAL. ThÝ dô: INTEGER I. M« t¶ (khai b¸o) kiÓu biÕn vµ kiÓu h»ng KiÓu cña biÕn t­¬ng øng víi kiÓu d÷ liÖu mµ nã biÓu diÔn.. D­íi ®©y lµ quy t¾c viÕt nh÷ng lÖnh m« t¶ kiÓu d÷ liÖu: tuÇn tù nguyªn. tªn h»ng.. TIME. C¸c biÕn nguyªn biÓu diÔn c¸c d÷ liÖu sè nguyªn. MAX. N. Mét biÕn ®· m« t¶ kiÓu lµ sè nguyªn th× kh«ng thÓ dïng ®Ó l­u gi¸ trÞ sè thùc hay gi¸ trÞ l«gic. c¸c biÕn thùc . SOPH 27 28 . thùc. TT. CHARACTER. l«gic... thùc. Mçi biÕn chØ l­u gi÷ ®­îc nh÷ng gi¸ trÞ ®óng kiÓu cña nã. HE SO . REAL. C¸ch m« t¶ Èn chØ dïng ®èi víi c¸c biÕn nguyªn vµ thùc: dïng tªn biÕn nguyªn b¾t ®Çu b»ng mét trong s¸u ch÷ c¸i I. M. phøc. trong tªn thø ba cã ký tù (*) kh«ng ph¶i lµ nh÷ng ký tù dïng ®Ó ®Æt tªn. nÕu cã h¬n mét biÕn th× c¸c biÕn ph¶i c¸ch nhau bëi dÊu ph¶y.1NGAY .. l«gic.2. phøc. v¨n b¶n. (Riªng víi tªn file cã thÓ cã thªm phÇn më réng gåm kh«ng qu¸ ba ch÷ c¸i hoÆc ch÷ sè ng¨n víi phÇn tªn chÝnh bëi dÊu chÊm).2. sè thùc ®é chÝnh x¸c th­êng hay ®é chÝnh x¸c gÊp ®«i. J. Trong ch­¬ng tr×nh ph¶i chØ râ c¸c biÕn ®­îc sö dông biÓu diÔn d÷ liÖu kiÓu nµo (nguyªn. DELTA COMPLEX P1.). Quy t¾c ®Æt tªn biÕn trªn ®©y còng ¸p dông ®èi víi tªn ch­¬ng tr×nh. C¸ch m« t¶ hiÖn dïng c¸c lÖnh m« t¶ hiÖn nh­ INTEGER. COMPLEX. P2.sè thùc. K. Nãi chung. trong tªn thø hai cã ký tù dÊu c¸ch. ®Ó chØ kiÓu d÷ liÖu mµ c¸c biÕn biÓu diÔn. APSUAT.

§iÒu nµy gièng nh­ ta quy ­íc ®Þnh ra mét ng¨n trong tñ v¨n phßng ®Ó chuyªn gi÷ c¸c c«ng v¨n.. ®ång thêi theo dâi gi¸ trÞ cña biÕn t¹i tõng thêi ®iÓm cña ch­¬ng tr×nh. TIME. RO = 1..0 (cm) cho biÕn DAY. D­íi ®©y nªu mét thÝ dô ®Ó minh häa ý nghÜa cña viÖc ®Æt tªn biÕn vµ m« t¶ kiÓu (d÷ liÖu) cña biÕn. Cßn cô thÓ trong « nhí ®ã ®· cã chøa gi¸ trÞ ch­a hay chøa gi¸ trÞ b»ng bao nhiªu th× tïy thuéc vµo c¸c lÖnh thùc hiÖn ë trong ch­¬ng tr×nh. Ch­¬ng tr×nh sau ®©y sÏ thùc hiÖn nh÷ng viÖc ®ã: REAL DAY. Trong ch­¬ng tr×nh tÊt c¶ nh÷ng lÖnh khai b¸o (m« t¶) võa giíi thiÖu trªn ®©y thuéc lo¹i c¸c lÖnh kh«ng thùc hiÖn vµ chóng ph¶i n»m ë ®Çu ch­¬ng tr×nh. P2. ‘DIEN TICH TAM GIAC BANG’. Gi¶ sö ta viÕt mét ch­¬ng tr×nh ®Ó tÝnh diÖn tÝch s cña h×nh tam gi¸c khi gi¸ trÞ ®é dµi ®¸y b b»ng 5. ë ®Çu môc nµy ®· nãi mét tªn thùc chÊt lµ ký hiÖu quy ­íc cña mét ®Þa chØ trong bé nhí cña m¸y tÝnh ®Ó l­u gi¸ trÞ.2 DAY = 0. CAO DAY = 5.141593 th× ta cã thÓ g¸n gi¸ trÞ 3.sè phøc.5 (cm) cho biÕn CAO.5 * DAY * CAO PRINT *. LÖnh (5) in lªn mµn h×nh dßng ch÷ DIEN TICH TAM GIAC BANG vµ sau ®ã lµ gi¸ trÞ cña biÕn DAY.) ThÝ dô. cßn trong ng¨n Êy cã c«ng v¨n hay kh«ng.5 × b × h . tªn 2 = biÓu thøc 2.0028) khai b¸o hai h»ng sè: HSMSD vµ RO. Nh÷ng gi¸ trÞ ®­îc gi÷ nguyªn nhÊt qu¸n trong suèt ch­¬ng tr×nh (tøc c¸c h»ng sè) th­êng ®­îc g¸n vµo c¸c ®Þa chØ nhí th«ng qua tªn trong lÖnh khai b¸o h»ng cã d¹ng: PARAMETER (ten1 = biÓu thøc 1. LÖnh (4) tÝnh gi¸ trÞ cña biÓu thøc 0. LÖnh (6) lµ lÖnh kÕt 29 30 . trong ch­¬ng tr×nh nÕu ta nhiÒu lÇn dïng ®Õn gi¸ trÞ sè π = 3. LÖnh khai b¸o biÕn míi chØ ®Æt tªn cho mét ®Þa chØ trong bé nhí vµ quy ®Þnh trong ®Þa chØ ®ã cã thÓ l­u gi÷ d÷ liÖu kiÓu g×. APSUAT. tr­íc tÊt c¶ c¸c lÖnh thùc hiÖn.0 CAO = 3. kiÓu d÷ liÖu cña biÕn. in kÕt qu¶ tÝnh lªn mµn h×nh. SOPH . LÖnh (1) khai b¸o hai biÕn tªn lµ DAY vµ CAO dù ®Þnh ®Ó l­u gi¸ trÞ sè thùc t­¬ng øng cña ®¸y b vµ chiÒu cao h cña tam gi¸c. DEM biÓu diÔn c¸c gi¸ trÞ sè nguyªn.141593) LÖnh sau ®©y PARAMETER (HSMSD = 0.141593 cho mét tªn h»ng lµ PI b»ng lÖnh PARAMETER (PI = 3.0 cm.0026. tøc diÖn tÝch s cña tam gi¸c. HSMSD ®­îc g¸n gi¸ trÞ b»ng 0. hoÆc cã mÊy c«ng v¨n th× tïy thuéc lóc nµy hay lóc kh¸c.0028. chiÒu cao h b»ng 3. cßn ba biÕn P1. cßn RO ®­îc g¸n gi¸ trÞ 1.2 cm. cña h»ng lµ nh÷ng kh¸i niÖm c¬ b¶n. t¹i tõng ®o¹n cña ch­¬ng tr×nh.chØ r»ng c¸c biÕn I. LÖnh (2) g¸n gi¸ trÞ b = 5. LÖnh (3) g¸n gi¸ trÞ h = 3. TT. c¸c biÕn X1. DAY END ! (1) ! (2) ! (3) ! (4) ! (5) ! (6) Trong ch­¬ng tr×nh nµy cã s¸u lÖnh. b»ng 8 (cm2) vµ g¸n cho biÕn DAY.0026. DELTA biÓu diÔn c¸c gi¸ trÞ sè thùc. MAX. Kh¸i niÖm vÒ tªn. quan träng trong ng«n ng÷ lËp tr×nh. .

2) Nªn tu©n thñ c¸ch ®Æt tªn cña Fortran chuÈn.0 chø kh«ng ph¶i lµ sè 5. DTICH hoÆc b»ng ba tõ t¾t cña tiÕng Anh víi lÖnh: REAL BASE. Kh¸i niÖm m¶ng M¶ng lµ tËp hîp cã s¾p xÕp cña c¸c ®¹i l­îng ®­îc ký hiÖu b»ng mét tªn duy nhÊt. võa b¾t tay vµo so¹n th¶o ch­¬ng tr×nh ®· loay hoay víi lÖnh më file d÷ liÖu.1. ký tù v¨n b¶n. dÔ hiÓu. tøc c¸c gi¸ trÞ ®­îc l­u trong m¸y tÝnh nh­ thÕ nµo trong khi ch­¬ng tr×nh ch¹y. Trong ®Çu hä quen nghÜ khai b¸o DAY cã nghÜa DAY lµ ®é dµi c¹nh ®¸y tam gi¸c. s¸ng sña trong phÇn khai b¸o ë ®Çu ch­¬ng tr×nh th× th­êng lµ sau ®ã viÕt ®­îc ch­¬ng tr×nh ®óng.thóc ch­¬ng tr×nh. Mçi phÇn tö ®­îc x¸c ®Þnh theo tªn cña m¶ng vµ vÞ trÝ cña phÇn tö ®ã trong m¶ng. CAO thùc ra míi chØ dù ®Þnh dïng hai tªn DAY vµ CAO ®Ó l­u c¸c sè thùc. kh«ng cÇn biÕt sè thùc ®ã b»ng bao nhiªu. HEIGHT. Sinh viªn míi häc lËp tr×nh th­êng cã thÓ kh«ng hiÓu lÖnh thø n¨m. ®Ó ®Æt tªn vµ khai b¸o kiÓu cho ®óng. lêi khai b¸o sau cïng th× h¬i qu¸ ng¾n gän. tøc trÞ sè cña c¸c chØ sè. N¾m v÷ng ®­îc ®iÒu nµy cã nghÜa lµ ®· hiÓu ®­îc ý nghÜa cña biÕn. tÝnh c¸i nµy c¸i kia. nh­ng hoµn toµn kh«ng nªn. ThÝ dô. th× th­êng lµ kh«ng hiÓu g× vµ kh«ng bao giê lµm ®­îc bµi tËp. CAO.3. Vµ khi thùc hiÖn xong lÖnh (5) th× trªn mµn h×nh sÏ in ®óng gi¸ trÞ diÖn tÝch tam gi¸c. tøc ®é dµi ®¸y tam gi¸c. song nªn ®Æt tªn cã tÝnh gîi nhí ®Õn nh÷ng ®¹i l­îng t­¬ng øng trong bµi tËp. C¸c thµnh phÇn cña tËp hîp gäi lµ nh÷ng phÇn tö m¶ng. D­íi ®©y lµ hai lêi khuyªn ®Çu tiªn cã lÏ quan träng nhÊt ®èi víi sinh viªn míi häc lËp tr×nh: 1) Sau khi t×m hiÓu xong bµi to¸n cÇn gi¶i. Cßn víi cïng môc ®Ých khai b¸o mµ dïng lÖnh sau ®©y th× mÆc dï kh«ng sai.. võa ®ñ.. Nh­ng khi ch­¬ng tr×nh ch¹y xong lÖnh (4) th× trong biÕn DAY ®· lµ sè 8. khi thÊy in diÖn tÝch h×nh tam gi¸c mµ l¹i in gi¸ trÞ cña biÕn DAY.0 n÷a. BiÕn cã chØ sè (m¶ng) 2. SQRE hoÆc b»ng ba ch÷ c¸i ®óng nh­ trong ®Çu ®Ò bµi tËp víi lÖnh: REAL B. IC. Nh­ng nÕu hiÓu ®­îc r»ng lÖnh (1) khai b¸o REAL DAY. víi bµi to¸n võa nãi tíi trong môc nµy ta cã ba ®¹i l­îng lµ: ®é dµi c¹nh ®¸y. mÖt mái trong khi kiÓm tra ch­¬ng tr×nh: REAL X. ®­êng cao vµ diÖn tÝch tam gi¸c. ph¶i c©n nh¾c tõng ®¹i l­îng trong bµi to¸n cã kiÓu d÷ liÖu lµ sè nguyªn. Cßn nh÷ng sinh viªn kh«ng biÕt ®Æt tªn cho c¸c biÕn.3. ë ch­¬ng tr×nh trªn. ch÷ sè nµo ®Ó t¹o thµnh tªn lµ tïy ý. DT 2.0. Kinh nghiÖm cho thÊy r»ng sinh viªn nµo viÕt ®­îc nh÷ng lÖnh khai b¸o hÖ thèng c¸c tªn biÕn ®óng. C¸c chØ sè n»m trong dÊu ngoÆc 31 32 . Nªn khai b¸o tªn ba biÕn t­¬ng øng b»ng ba tõ t¾t cña tiÕng ViÖt víi lÖnh sau: REAL DAY. sè thùc. S ®Òu lµ nh÷ng lêi khai b¸o ®óng. tªn biÕn vµ tuÇn tù lµm viÖc cña ch­¬ng tr×nh. Tªn m¶ng ®­îc ®Æt tu©n theo quy t¾c nh­ tªn biÕn. Ta cã quyÒn chän nh÷ng ch÷ c¸i. rÊt dÔ g©y nhÇm lÉn. H. trong ®ã lêi khai b¸o trªn cïng cã lÏ lµ tèt nhÊt. khi lÖnh (2) thùc hiÖn xong th× trong biÕn DAY (trong « nhí cã tªn lµ DAY) míi thùc sù cã sè 5.

chuçi ký tù.. ta viÕt EMONTH(12). A(3) t­¬ng øng víi c¸ch viÕt th«ng th­êng cho c¸c biÕn a1 . 33 34 .. chØ sè thø hai .. A(2. nãi ®Õn December lµ nãi tíi gi¸ trÞ thø 12 cña m¶ng EMONTH.1).2. c¸c phÇn tö cña ma trËn hai chiÒu trong ®¹i sè  a11  a  21 a12 a 22 a13   a 23   ®­îc viÕt trong Fortran lµ A(1. chØ b»ng vµi dßng lÖnh cã thÓ khiÕn m¸y tÝnh thùc hiÖn nhiÒu triÖu phÐp tÝnh sè häc. Mét n¨m cã 12 th¸ng. VËy m¶ng EMONTH sÏ lµ m¶ng cã 12 gi¸ trÞ (12 phÇn tö).sè hiÖu dßng. ta viÕt EMONTH(1). m1 . mçi th¸ng cã mét tªn..tªn c¸c m¶ng.3).. a 2 . A(2. ChiÒu cña m¶ng øng víi sè chØ sè. Sau nµy ta sÏ thÊy sö dông m¶ng trong ng«n ng÷ lËp tr×nh cã thÓ gióp viÕt nh÷ng ®o¹n ch­¬ng tr×nh rÊt ng¾n gän... nl . §Æc biÖt trong c¸c vßng lÆp. m2 . M¶ng lµ mét yÕu tè rÊt quan träng trong Fortran. cßn kÝch th­íc cña m¶ng øng víi sè phÇn tö chøa trong m¶ng. sè thùc. Th¸ng Hai.2).. February. trong s¸ng... . T­¬ng tù. tøc tÊt c¶ c¸c gi¸ trÞ cña m¶ng ph¶i cã cïng kiÓu d÷ liÖu. MAT . Th¸ng M­êi hai.1 chóng ta ®· nãi vÒ c¸c kiÓu d÷ liÖu c¬ b¶n.mét biÕn m¶ng trong mét thêi ®iÓm cã thÓ l­u ®­îc nhiÒu gi¸ trÞ sè nguyªn.A(2) vµ ®Ó chØ gi¸ trÞ thø ba ta thªm chØ sè 3 . ThÝ dô: A(1). th× sau khi tÝnh gi¸ trÞ cña biÓu thøc.. mét phiªn b¶n tr­íc ®©y cña ng«n ngò Fortran. . m2 . nl ). Trong môc 2.3) (chØ sè thø nhÊt . mk ) trong ®ã A.2). A(2.. chiÒu vµ kÝch th­íc m¶ng víi to¸n tö DIMENSION: DIMENSION A ( n1 .sè hiÖu cét).. ThÝ dô víi m¶ng EMONTH võa xÐt. Ta hoµn toµn cã thÓ gép 12 tªn tiÕng Anh cña c¸c th¸ng trong n¨m vµo thµnh mét m¶ng cã tªn chung lµ EMONTH. tøc c¾t bá phÇn thËp ph©n. 2. . A(2). Mçi mét biÕn kiÓu d÷ liÖu c¬ b¶n trong mét thêi ®iÓm ch¹y ch­¬ng tr×nh chØ l­u (chøa) ®­îc mét gi¸ trÞ. M« t¶ m¶ng M« t¶ m¶ng thùc hiÖn ngay ë ®Çu ch­¬ng tr×nh vµ chøa th«ng tin vÒ tªn. trong tiÕng Anh: January.A(1). NÕu dïng biÓu thøc kiÓu thùc. Thªm mét thÝ dô n÷a vÒ m¶ng... thÝ dô trong tiÕng ViÖt: Th¸ng Giªng. n1 . ®Ó chØ gi¸ trÞ thø hai ta thªm chØ sè 2 . Còng cã thÓ chØ sè x¸c ®Þnh b»ng biÓu thøc sè häc bÊt kú.®¬n vµ nÕu cã h¬n mét chØ sè th× c¸c chØ sè ph¶i c¸ch nhau bëi dÊu ph¶y. December. Khi nãi ®Õn January tøc lµ nãi tíi gi¸ trÞ thø nhÊt cña m¶ng EMONTH.. ChØ sè cña m¶ng cã thÓ ®­îc x¸c ®Þnh b»ng c¸c h»ng hoÆc biÕn nguyªn d­¬ng víi trÞ sè lín h¬n 0. A(1. mk − c¸c giíi h¹n trªn cña c¸c chØ sè − chØ ra b»ng c¸c h»ng nguyªn d­¬ng (giíi h¹n d­íi lu«n b»ng 1 vµ kh«ng cÇn chØ ®Þnh trong m« t¶).. B©y giê ta thÊy m¶ng lµ mét thÝ dô vÒ kiÓu d÷ liÖu míi cÊu t¹o tõ c¸c kiÓu c¬ b¶n . nh­ng ®Ó chØ gi¸ trÞ thø nhÊt ta thªm chØ sè 1 vµo tªn .1).3.. n2 . cho phÐp dïng c¸c m¶ng tèi ®a 7 chØ sè. MAT ( m1 . . VËy ë ®©y ta ®· ®Æt cho tËp hîp c¶ 3 gi¸ trÞ nµy mét tªn chung lµ A. ta kh«ng thÓ ®­a mét gi¸ trÞ ký tù January vµo phÇn tö EMONTH(1) vµ sè thùc 1. A(1.. Trong Fortran IV. mçi phÇn tö lµ mét tõ chØ tªn mét th¸ng..A(3). gi¸ trÞ sè thùc ®­îc chuyÓn thµnh sè nguyªn. a3 trong to¸n häc.27 vµo EMONTH(2).. n 2 .. Nh­ng cÇn l­u ý r»ng tÊt c¶ c¸c phÇn tö cña m¶ng.

. nªn trong thùc tiÔn lËp tr×nh ph¶i chó ý c©n nh¾c chän c¸c giíi h¹n chØ sè sao cho chóng kh«ng qu¸ lín lµm tèn bé nhí. Khi cho c¸c gi¸ trÞ cô thÓ vµo c¸c ®èi sè th× hµm tÝnh ra mét gi¸ trÞ cña hµm. Mét sè hµm chuÈn cña Fortran Tªn hµm vµ ®èi sè SQRT (X) x Gi¸ trÞ hµm C¨n bËc hai cña x 35 36 . ThÝ dô cÇn biÓu diÔn mét b¶ng sè c¸c gi¸ trÞ nhiÖt ®é trung b×nh tõng th¸ng trong 100 n¨m th× ta khai b¸o m¶ng TEM(100. Tªn cña hµm ®­îc tiÕp nèi víi ®Çu vµo. biÕn.. m¶ng A lµ m¶ng hai chiÒu (hai chØ sè) víi giíi h¹n trªn cña chØ sè thø nhÊt lµ 20. chØ sè sau cïng biÕn ®æi chËm nhÊt. kh«ng thÓ lµ c¸c biÕn. NÕu dù ®Þnh gi¶i hÖ ph­¬ng tr×nh ®¹i sè tuyÕn tÝnh kh«ng qu¸ 20 ph­¬ng tr×nh. V× c¸c giíi h¹n chØ sè (kÝch th­íc m¶ng) ph¶i ®­îc chØ ®Þnh tr­íc ë phÇn khai b¸o b»ng c¸c h»ng nguyªn d­¬ng. th­êng xuyªn gÆp trong nhiÒu thuËt to¸n. X(20) lµ võa ®ñ ®Ó biÓu diÔn ma trËn c¸c hÖ sè a i . ng­êi ta gäi lµ gäi hµm ra ®Ó tÝnh.21) Trong lÖnh m« t¶ nµy biÕn MAX ®­îc khai b¸o lµ biÕn sè thùc.21).1. Hµm kh«ng bao giê cã mÆt ë bªn tr¸i dÊu ‘ = ’ cña lÖnh g¸n. B¶ng 2. ta nªn khai b¸o c¸c m¶ng REAL A(20. Mçi hµm chuÈn cã mét tªn cña nã. j (kÓ c¶ c¸c hÖ sè tù do) vµ c¸c nghiÖm x i . A(20. C¸c phÇn tö cña m¶ng nhiÒu chiÒu ®­îc l­u liªn tiÕp nhau sao cho chØ sè thø nhÊt biÕn ®æi nhanh nhÊt. V× vËy c¸c hµm th­êng dïng ®Ó tÝnh mét gi¸ trÞ nµo ®ã ®Ó g¸n vµo mét biÕn kh¸c. §èi sè cña c¸c hµm chuÈn cã thÓ lµ c¸c h»ng. cã thÓ gäi lµ biÕn ®¬n. Cã thÓ m« t¶ m¶ng b»ng c¸c lÖnh m« t¶ kiÓu hiÖn nh­ ®èi víi c¸c biÕn th«ng th­êng. hay biÓu thøc. thÝ dô: REAL MAX. gäi lµ ®èi sè cña hµm.Theo m« t¶ nµy. nh­ng còng ph¶i võa ®ñ ®Ó biÓu diÔn hÕt c¸c phÇn tö cã thÓ cã cña m¶ng. L(7). m¸y tÝnh sÏ giµnh trong bé nhí nh÷ng vïng ®Þa chØ ®Ó l­u tÊt c¶ c¸c phÇn tö cña c¸c m¶ng.1 liÖt kª mét sè hµm chuÈn cña Fortran th­êng dïng trong s¸ch nµy.12) lµ hîp lý. tÝnh trÞ tuyÖt ®èi cña mét sè. Víi m¶ng EMONTH võa nh¾c trong môc nµy th× lÖnh khai b¸o sau: CHARACTER*9 EMONTH(12) lµ hoµn toµn hîp lý v× mét n¨m chØ cã 12 th¸ng vµ tªn th¸ng dµi nhÊt (víi tiÕng Anh) lµ September gåm 9 ch÷ c¸i. B¶ng 2. n»m trong cÆp dÊu ngoÆc ®¬n. tÝnh hµm sin cña mét gãc. nã gåm 420 phÇn tö. nªn ®­îc x©y dùng s½n thµnh c¸c hµm gäi lµ c¸c hµm riªng cã cña Fortran (intrinsic functions) hay cßn gäi lµ c¸c hµm chuÈn.4. cña chØ sè thø hai lµ 21. cßn m¶ng L (biÕn cã chØ sè) lµ m¶ng mét chiÒu víi 7 phÇn tö sè thùc. NÕu mét hµm cã nhiÒu ®èi sè th× c¸c ®èi sè ®­îc viÕt c¸ch nhau b»ng dÊu ph¶y. C¸c hµm chuÈn Mét sè phÐp tÝnh nh­ lÊy c¨n bËc hai cña mét sè. 2.

0) Trong lÖnh thø nhÊt ta göi gi¸ trÞ h»ng 0. nÕu ta cho gi¸ trÞ ®èi sè lµ ®é th× kÕt qu¶ tÝnh sÏ sai.ABS (X) SIN (X) COS (X) TAN (X) EXP (X) LOG (X) LOG10 (X) INT (X) REAL (I) MOD (I. 37 38 . Mét hµm chuÈn còng cã thÓ lµm ®èi sè cña mét hµm chuÈn kh¸c: XLG = LOG(ABS(X)) Trong Fortran cã mét sè hµm chuÈn cho ra gi¸ trÞ víi kiÓu cïng kiÓu víi ®èi sè cña m×nh. Khi dïng mét hµm chuÈn nµo ®ã ph¶i ®äc kü lêi m« t¶ xem nã tÝnh ra gi¸ trÞ g×. ThÊy r»ng mét hµm biÓu diÔn mét gi¸ trÞ. ThÝ dô c¸c hµm l­îng gi¸c ph¶i dïng ®èi sè lµ ra®ian. Danh s¸ch ®Çy ®ñ h¬n vÒ c¸c hµm chuÈn cña Fortran ®­îc dÉn trong phô lôc 1. m¸y tÝnh tr­íc hÕt ph¶i tÝnh (­íc l­îng) gi¸ trÞ cña biÓu thøc ®èi sè. Trong lÖnh thø hai. nÕu ®èi sè X lµ sè nguyªn th× gi¸ trÞ hµm ABS(X) còng lµ sè nguyªn. Mét sè hµm chØ ®Þnh kiÓu cña ®Çu vµo vµ ®Çu ra. ta ®· göi mét biÓu thøc vµo ®èi sè cña hµm COS ®Ó nã tÝnh ra gi¸ trÞ c«sin cña mét gãc cã ®é lín b»ng gi¸ trÞ cña biÓu thøc ®ã. sau ®ã míi tÝnh c«sin theo gi¸ trÞ nhËn ®­îc. ThÝ dô hµm IABS lµ hµm ®ßi hái ®èi sè nguyªn vµ cho ra gi¸ trÞ tuyÖt ®èi lµ sè nguyªn.ABS(X) còng lµ sè thùc. nh÷ng lÖnh sau ®©y gäi c¸c hµm ®Ó tÝnh mét sè gi¸ trÞ: S = SIN (0. nÕu X lµ sè thùc . Trong tr­êng hîp nµy. ®iÒu kiÖn cña c¸c ®èi sè ra sao.5) TG = TAN (S) C = COS (ANGLE * 3.5 vµ g¸n gi¸ trÞ ®ã cho biÕn S. ta ®· göi gi¸ trÞ cña biÕn S vµo ®èi sè cña hµm TAN ®Ó tÝnh ra tang.J) x sin(x ) cos(x ) tg ( x) e x TrÞ tuyÖt ®èi cña x x tÝnh b»ng ra®ian x tÝnh b»ng ra®ian x tÝnh b»ng ra®ian e n©ng lªn luü thõa x Logarit tù nhiªn cña x Logarit c¬ sè 10 cña x ln(x ) lg( x ) ChuyÓn phÇn nguyªn cña sè thùc x thµnh sè nguyªn Gi¸ trÞ thùc cña I (chuyÓn mét gi¸ trÞ nguyªn thµnh gi¸ trÞ thùc) LÊy phÇn d­ nguyªn cña phÐp chia hai sè I / J ThÝ dô. Gi¸ trÞ nµy cã thÓ ®­îc dïng trong c¸c tÝnh to¸n kh¸c hoÆc l­u ë ®Þa chØ nhí kh¸c. chóng ®­îc gäi lµ c¸c hµm tù sinh (generic function). ThÝ dô hµm ABS(X).5 (ra®ian) cho ®èi sè cña hµm SIN ®Ó nã tÝnh ra gi¸ trÞ sin cña gãc 0. Cßn trong lÖnh thø ba.141593 / 180.

5. ë trªn ®· nãi.2.141593 cho biÕn cã tªn lµ PI. mét biÕn. råi g¸n gi¸ trÞ ®ã cho biÕn bªn tr¸i. C¸c phÐp tÝnh sè häc ®¬n gi¶n C¸c phÐp tÝnh sè häc hay cßn gäi lµ c¸c to¸n tö sè häc gåm cã c¸c phÐp tÝnh céng. biÓu thøc bªn ph¶i cã gi¸ trÞ thùc.141593 S = PI * BKINH **2 I = I +1 LÖnh thø nhÊt g¸n h»ng sè 3. B¶ng 2. Kh«ng nªn quan niÖm lÖnh g¸n nh­ dÊu b»ng trong to¸n häc. Sau nµy chóng ta sÏ thÊy m¸y tÝnh cã thÓ tÝnh to¸n víi nh÷ng gi¸ trÞ kiÓu kh¸c nh­ gi¸ trÞ l«gic. tr­íc hÕt m¸y ­íc l­îng (tÝnh) gi¸ trÞ cña biÓu thøc bªn ph¶i. ®æi sè thùc nhËn ®­îc thµnh sè nguyªn råi míi g¸n nã cho biÕn nguyªn. 2.2. kiÓu d÷ liÖu cña biÕn vµ cña biÓu thøc ph¶i phï hîp. th× m¸y tÝnh c¾t bá phÇn thËp ph©n cña gi¸ trÞ thùc. Gäi lµ nh÷ng phÐp tÝnh sè häc bëi v× c¸c to¸n h¹ng cña c¸c phÐp tÝnh lµ nh÷ng gi¸ trÞ sè. gi¸ trÞ v¨n b¶n. Khi biÕn bªn tr¸i lµ biÕn nguyªn. KiÓu d÷ liÖu cña biÕn vµ cña biÓu thøc ph¶i phï hîp.. LÖnh g¸n vµ c¸c to¸n tö sè häc 2. sè thùc.1.5.. LÖnh g¸n C¸c tÝnh to¸n trong Fortran cã thÓ chØ ®Þnh b»ng lÖnh g¸n víi d¹ng tæng qu¸t nh­ sau: Tªn biÕn = BiÓu thøc Bªn tr¸i dÊu lÖnh g¸n (dÊu =) lµ tªn mét biÕn. BiÓu thøc bªn ph¶i cã thÓ lµ mét h»ng.2. thÝ dô sè nguyªn. LÖnh thø ba lÊy gi¸ trÞ hiÖn t¹i cña biÕn I céng thªm mét ®¬n vÞ vµ l¹i g¸n cho chÝnh biÕn I. sè phøc.5. nh©n. tøc l­u gi¸ trÞ tÝnh ®­îc cña biÓu thøc bªn ph¶i vµo ®Þa chØ nhí cã tªn biÕn bªn tr¸i. chia vµ n©ng lªn luü thõa ®­îc ký hiÖu b»ng c¸c to¸n tö trong Fortran nh­ trong b¶ng 2. C¸c phÐp tÝnh sè häc 39 40 .2) thùc hiÖn gi÷a c¸c to¸n h¹ng lµ c¸c h»ng. biÕn vµ hµm chuÈn hay mét biÓu thøc l«gic. Khi thùc hiÖn lÖnh g¸n. mét biÓu thøc sè häc gåm c¸c to¸n tö sè häc (b¶ng 2. cßn biÓu thøc bªn ph¶i lµ gi¸ trÞ nguyªn th× m¸y tÝnh sÏ chuyÓn gi¸ trÞ nguyªn ®ã thµnh gi¸ trÞ thùc (sè thùc víi phÇn thËp ph©n b»ng kh«ng) råi míi g¸n cho biÕn. trõ. C¸c tr­êng hîp g¸n sai kh¸c ch­¬ng tr×nh dÞch sÏ b¸o lçi. ThÝ dô c¸c lÖnh g¸n: PI = 3.2. Tr­êng hîp biÕn bªn tr¸i lµ biÕn thùc. LÖnh thø hai g¸n gi¸ trÞ cña biÓu thøc PI × ( BKINH ) 2 cho biÕn cã tªn lµ S.

thÝ dô: B − C + D ®­îc ­íc l­îng b»ng (B − C) + D Riªng phÐp n©ng lªn luü thõa th× thùc hiÖn tõ ph¶i sang tr¸i: A ** B ** C ®­îc ­íc l­îng b»ng A ** (B ** C) ThÝ dô: 2 * *3 * *2 b»ng 2 9 hay 512 chø kh«ng ph¶i lµ (2 * *3) * *2 = 82 = 64 . Møc ­u tiªn c¸c phÐp tÝnh sè häc ¦u tiªn 1 2 3 4 DÊu ngoÆc N©ng lªn luü thõa Nh©n vµ chia Céng vµ trõ PhÐp tÝnh Khi c¸c phÐp tÝnh ë cïng møc ­u tiªn th× tÊt c¶ c¸c phÐp tÝnh ®­îc thùc hiÖn tõ tr¸i sang ph¶i.5. th× nã ®­îc tÝnh víi cïng møc ­u tiªn nh­ phÐp trõ. NÕu dÊu ©m ®øng tr­íc tªn biÕn ®Çu tiªn trong biÓu thøc. Møc ­u tiªn khi ­íc l­îng gi¸ trÞ cña mét biÓu thøc sè häc gåm nhiÒu phÐp tÝnh ®¬n nªu trong b¶ng 2. ¦íc l­îng biÓu thøc sè häc Khi tÝnh gi¸ trÞ cña biÓu thøc sè häc.3. 41 42 .3. −A*B b»ng −(A*B) vµ −A+B b»ng (−A)+B. B¶ng 2. nÕu biÓu thøc ®ã gåm nhiÒu phÐp tÝnh ®¬n. th× m¸y sÏ tÝnh to¸n tõng phÐp tÝnh ®¬n ®Ó nhËn c¸c kÕt qu¶ trung gian. sau ®ã tÝnh gi¸ trÞ cuèi cïng cña biÓu thøc gäi lµ ­íc l­îng.3.PhÐp tÝnh Céng Trõ Nh©n Chia Luü thõa D¹ng ®¹i sè A+B A−B A× B A B A 3 Trong Fortran A+B A−B A*B A/B A** 3 2. ThÝ dô: −A**2 b»ng −(A**2).

5.10E+20 C=A/B KÕt qu¶ sè cña phÐp nh©n trong thÝ dô 1 b»ng 0. nã kh¸c víi lµm trßn th«ng th­êng cho kÕt qu¶ lµ sè nguyªn gÇn nhÊt víi gi¸ trÞ cña sè thùc.141593*R**3 ta sÏ thu ®­îc kÕt qu¶ sai do nguyªn nh©n phÐp chia hai sè nguyªn 4/3 cho gi¸ trÞ trung gian b»ng 1.5 PhÐp tÝnh nh©n gi÷a hai gi¸ trÞ thùc sÏ cho kÕt qu¶ sè thùc. tÝnh sè sè nguyªn INTERV n»m trong kho¶ng [I. Trong nh÷ng tr­êng hîp nµy c¸c lÖnh Fortran hoµn toµn ®óng. lÖnh ®óng ®Ó tÝnh V sÏ lµ: V = (4. Ta xÐt thÝ dô tÝnh thÓ tÝch V cña h×nh cÇu b¸n kÝnh thùc R.2. Kh¸i niÖm vÒ sè qu¸ bÐ vµ sè qu¸ lín (underflow vµ overflow) V× c¸c gi¸ trÞ lín nhÊt vµ bÐ nhÊt cã thÓ l­u trong mét biÕn tuú thuéc vµo chÝnh hÖ m¸y tÝnh. NÕu dïng lÖnh: V = (4/3)*3. Kh¸i niÖm vÒ c¾t vµ c¸c phÐp tÝnh hçn hîp Khi mét phÐp tÝnh sè häc thùc hiÖn víi hai sè thùc th× ®­a ra kÕt qu¶ lµ gi¸ trÞ thùc.333333.10E30 Z=X*Y 2) A = 0.141593*R**3 V× c¸c phÐp tÝnh hçn hîp ®«i khi cho kÕt qu¶ bÊt ngê. kiÓu lµm trßn nµy gäi lµ c¾t.5. râ rµng lµ cã thÓ qu¸ lín.25E49. Khi c¸c phÐp tÝnh sè häc thùc hiÖn gi÷a c¸c biÕn cã kiÓu kh¸c nhau (hçn hîp) th­êng cho kÕt qu¶ rÊt bÊt ngê.25E−20 B = 0.5. khi tÝnh chu vi h×nh trßn víi ®­êng kÝnh DKINH lµ sè thùc. trong ®ã I nhá h¬n hoÆc b»ng J.141593 * DKINH PhÐp tÝnh sè häc gi÷a hai sè nguyªn cho ra kÕt qu¶ lµ sè nguyªn.25E20 Y = 0. kh«ng ph¶i 1. ThÝ dô.25E−49 sÏ qu¸ bÐ.4. Tuy nhiªn. XÐt c¸c thÝ dô sau: 1) X = 0. B©y giê xÐt lÖnh: LENGTH = SIDE * 3. nh­ng lçi sÏ ph¸t sinh khi ch¹y ch­¬ng tr×nh. cßn kÕt qu¶ sè cña phÐp chia trong thÝ dô 2 b»ng 0. ta nªn cè g¾ng tr¸nh dïng nh÷ng biÓu thøc sè häc cã phÐp tÝnh hçn hîp. kh«ng l­u gi÷ ®­îc trong m¸y tÝnh víi bËc cùc ®¹i lµ 38.)*3. C¸c lçi do bËc 43 44 . gi¸ trÞ thùc ®­îc l­u vµo biÕn nguyªn. J] cã thÓ thùc hiÖn b»ng lÖnh: INTERV = J − I + 1 Gi¶ sö SIDE biÓu diÔn gi¸ trÞ thùc vµ LENGTH biÓu diÔn gi¸ trÞ nguyªn. mét phÐp tÝnh cã thÓ ®­a ra kÕt qu¶ qu¸ lín hoÆc qu¸ bÐ. Khi ®ã m¸y tÝnh sÏ bá qua phÇn thËp ph©n vµ chØ l­u phÇn nguyªn cña sè thùc. Do ®ã. ThÝ dô./3. 2. cho hai sè nguyªn I vµ J. ta cã thÓ dïng mét trong hai lÖnh sau: CHUVI = PI * DKINH CHUVI = 3.

ViÕt thµnh d¹ng Fortran nh÷ng biÓu thøc tÝnh sau ®©y: a) ThÓ tÝch V cña h×nh cÇu theo c«ng thøc V = b) Hai nghiÖm x1 vµ x 2 cña ph­¬ng tr×nh bËc hai x1. H·y biÓu diÔn thµnh d¹ng F vµ d¹ng E nh÷ng sè thùc sau: a) 3. 3 c) Gi¸ trÞ hµm y= 1 2 sin x cos( 2 x − 1 2 ) 2 (khi x cho b»ng ®é). y a ). b.0 a) AVERG d) 2LOG f) X1 2.qu¸ lín hoÆc qu¸ bÐ th­êng bÞ g©y bëi nh÷ng lçi ë nh÷ng ®o¹n tr­íc cña ch­¬ng tr×nh. ( xb . c − c¸c hÖ sè cña ph­¬ng tr×nh) 4 π R 3 ( R − b¸n kÝnh).14 b) 3.023 × 10 d) 2. 45 46 − x2 2 . 2 = − b ± b 2 − 4ac 2a ( a. Bµi tËp 1.141593 f) 28. y b ) . X¸c ®Þnh nh÷ng tªn sai trong nh÷ng tªn sau ®©y: b) PTBACHAI c) REAL ®) GPTB2 g) THANG*1 e) HS-A1 h) MONTH2 3. thÝ dô mét biÕn ch­a ®­îc g¸n gi¸ trÞ ®óng l¹i cã mÆt trong biÓu thøc sè häc. d) Gi¸ trÞ hµm mËt ®é ph©n bè Gauss 1 F ( x) = e 2π e) Thªm mét ®¬n vÞ vµo biÕn nguyªn I vµ l­u vµo biÕn I f) Kho¶ng c¸ch DIST gi÷a hai ®iÓm A vµ B nÕu biÕt c¸c to¹ ®é t­¬ng øng cña hai ®iÓm ®ã lµ ( x a .5 × 10 23 3 e) −14.34 c) 0.0026 g) 6.

i 2 = 2.t©y b¾c.4. ¦íc l­îng gi¸ trÞ cña c¸c biÓu thøc Fortran sau ®©y: 4/3*3.1) I1 = 1 I2 = 2 I3 = 3 PRINT 2.X2) 6. (I1 + I2 + I3)/3 4 b) FORMAT (1X.141593*(3/2)**3 SQRT (I+I/2) (nÕu I = 1) SIN ((30/180)*PI) (nÕu PI = 3. 2 . 47 48 .®«ng. Gi¶ sö c¸c cung ®Þa lý (t¸m cung) ®­îc ®¸nh sè hiÖu theo qui ­íc nh­ sau: 1 . NÕu thÊy sai th× chØ ra t¹i sao vµ kh¾c phôc b»ng c¸ch nµo? a) I1 = 1 I2 = 2 I3 = 3 PRINT 4 .®«ng b¾c.5 * SIN (A*3.®«ng nam.nam. H·y thö xem kÕt qu¶ cã ®óng kh«ng. 8 . H·y ®äc chÝnh x¸c b»ng ng«n ng÷ Fortran nh÷ng lÖnh viÕt d­íi ®©y: a) I = I + K +1 b) SS = 0. ' A = '.t©y nam. 3 .1416 / 180.) c) ERR = ABS (X1 .t©y. 5 . H­íng giã quan tr¾c ®­îc b»ng 165o. F4.1) 7.F4.141593) COS (60/180*3. 1/3*(I1+I2+I3) 2 FORMAT (3X. H·y viÕt biÓu thøc Fortran ®Ó tÝnh sè hiÖu cung cña h­íng giã ®ã. i3 = 3 vµ in kÕt qu¶ lªn mµn h×nh. 4 . 7 .141593) 5. Hai ®o¹n ch­¬ng tr×nh sau nh»m tÝnh trÞ sè trung b×nh A cña ba sè nguyªn i1 = 1. 6 .b¾c.

' 1/2 SinX = '. NÕu trong danh s¸ch kh«ng cã mét môc in nµo. mét biÕn. ta xÐt c¸ch nhËp d÷ liÖu tõ bµn phÝm vµ xuÊt d÷ liÖu ra mµn h×nh hoÆc m¸y in. LÖnh xuÊt d÷ liÖu ®Þnh h­íng ra mµn h×nh: PRINT * . NÕu trong danh s¸ch c¸c môc in cã tõ hai môc trë lªn. Tõ nay vÒ sau trong s¸ch nµy ë nh÷ng dßng lÖnh nµo cã dÊu nèi dßng sÏ quy ­íc dïng ký hiÖu nµy.5. GOC . ë ®©y ®· dïng dÊu hoa thÞ bªn trong h×nh nh÷ nhËt nhá * ®Ó ph©n biÖt víi dÊu hoa thÞ b×nh th­êng lµ ký hiÖu cña phÐp tÝnh nh©n. xÐt ®o¹n ch­¬ng tr×nh sau ®©y: GOC = 30. Trong ch­¬ng nµy. 0. T­¬ng tù. Ta thÊy trong danh s¸ch c¸c môc in cña lÖnh PRINT cã 4 môc liÖt kª theo thø tù lµ: 1) Côm ch÷ ' Khi X =' 2) BiÕn cã tªn lµ GOC l­u gi¸ trÞ 30° 3) Côm ch÷ ' 1/2 SinX =' 4) BiÓu thøc 49 50 .Ch­¬ng 3 NhËp vµ xuÊt d÷ liÖu ®¬n gi¶n 3. ta còng cã thÓ h­íng sù xuÊt d÷ liÖu ra c¸c thiÕt bÞ kh¸c nhau. chóng 1 ta chØ cÇn viÕt dÊu hoa thÞ vµo vÞ trÝ thø 6 cña dßng lÖnh. c¸c thiÕt bÞ kh¸c nhau. nÕu cã h¬n mét biÕn cÇn ®äc d÷ liÖu. th× m¸y tÝnh chØ ®¬n gi¶n lµ xuèng mét dßng trªn mµn h×nh. Danh s¸ch c¸c biÕn C¸c môc in trong lÖnh in cã thÓ lµ mét h»ng. mét biÓu thøc. Danh s¸ch c¸c môc in LÖnh nhËp d÷ liÖu tõ bµn phÝm: READ * . Cßn khi so¹n ch­¬ng tr×nh trªn mµn h×nh m¸y tÝnh. Trong danh s¸ch c¸c biÕn cña lÖnh nhËp (®äc) d÷ liÖu. th× nh÷ng biÕn ®ã ph¶i ®­îc liÖt kª c¸ch nhau bëi dÊu ph¶y. C¸c môc ®­îc in ra trªn mét dßng mµn h×nh theo thø tù ®­îc liÖt kª trong danh s¸ch. th× nh­ ®· nãi trong môc 1.0 PRINT* . ThÝ dô. C¸c lÖnh xuÊt vµ nhËp d÷ liÖu M¸y tÝnh cã thÓ nhËp d÷ liÖu tõ c¸c nguån.141593 / 180.5 * SIN (GOC * * 3.) Ghi chó: Trong lÖnh PRINT võa råi cã mét dÊu nèi dßng.1. th× c¸c môc ph¶i c¸ch nhau bëi dÊu ph¶y. ' Khi X = '. ViÖc xuÊt vµ nhËp d÷ liÖu cã dïng c¸c file d÷ liÖu sÏ ®­îc xÐt trong ch­¬ng 6.

mét sè nguyªn n÷a cho biÕn NAM vµ mét sè thùc cho biÕn TEMP.0. môc in thø nhÊt vµ thø ba lµ nh÷ng h»ng v¨n b¶n. sè ch÷ sè thËp ph©n cÇn in ®èi víi gi¸ trÞ sè thùc. m¸y tÝnh chê ta gâ tõ bµn phÝm nh÷ng gi¸ trÞ (c¸c ký tù v¨n b¶n. kho¶ng c¸ch gi÷a c¸c môc in. KiÓu in d÷ liÖu nh­ trªn gäi lµ in kh«ng ®­îc ®Þnh d¹ng hay in kh«ng cã format.. KÕt qu¶ trªn mµn h×nh sÏ nh­ sau: Khi X = 30. NÕu kiÓu d÷ liÖu gâ vµo sai so víi kiÓu d÷ liÖu cña biÕn. D¹ng tæng qu¸t cña lÖnh FORMAT nh­ sau: k FORMAT (Danh s¸ch c¸c ®Æc t¶) 51 52 ..36 'SL quan trac' ↵ hay 1. m¸y tÝnh ph¶i tÝnh gi¸ trÞ cña biÓu thøc nµy (b»ng 0.0) biÓu thÞ nöa sin cña gãc 30° ®· ®æi thµnh ra®ian. th× lËp tøc ch­¬ng tr×nh ngõng thùc hiÖn vµ b¸o lçi ch¹y ch­¬ng tr×nh. riªng nh÷ng ký tù v¨n b¶n ph¶i n»m trong cÆp dÊu nh¸y trªn (' ').1). NÕu ta gâ ch­a ®ñ sè gi¸ trÞ theo danh s¸ch biÕn. Chó ý r»ng.1982. sè nguyªn. Tham sè k nguyªn d­¬ng chØ tíi nh·n cña lÖnh FORMAT m« t¶ quy c¸ch in th«ng tin ra mµn h×nh nh­ vÞ trÝ in.141593 / 180. tõng ký tù mét. NAM . Danh s¸ch c¸c môc in Còng gièng nh­ lÖnh in kh«ng ®Þnh d¹ng. mçi gi¸ trÞ c¸ch nhau mét dÊu ph¶y hay Ýt nhÊt mét dÊu trèng. TEMP .'SL quan trac' ↵. mét x©u ký tù cho biÕn v¨n b¶n GHICHU.. Tr­íc khi in môc thø t­.25). KÕt thóc danh s¸ch c¸c gi¸ trÞ ph¶i gâ lÖnh phÝm Enter (↵). muèn nhËp ®óng yªu cÇu ta cã thÓ gâ vµo bµn phÝm nh­ sau: 1 1982 25. NÕu gi¸ trÞ cña c¸c biÕn lµ nh÷ng sè kh¸ nhá hoÆc kh¸ lín. LÖnh in cã quy c¸ch (cã ®Þnh d¹ng): PRINT k .) t­¬ng xøng vÒ kiÓu víi danh s¸ch biÕn. môc in thø 2 lµ gi¸ trÞ cña biÕn sè thùc GOC vµ môc in thø t­ lµ mét biÓu thøc sè thùc.00000 1/2 SinX = 0. kÓ c¶ dÊu trèng. th× m¸y chê ta gâ cho ®Õn khi ®ñ c¸c gi¸ trÞ míi kÕt thóc thùc hiÖn lÖnh READ. danh s¸ch c¸c môc in chØ ra nh÷ng h»ng. biÕn hay c¸c biÓu thøc cÇn in theo thø tù liÖt kª. sè thùc..5 * SIN (GOC * 3.2500000 H·y chó ý r»ng víi lÖnh PRINT * trªn ®©y c¸c môc in lµ nh÷ng côm d÷ liÖu v¨n b¶n ®­îc in ra ®óng nh­ ta nh×n thÊy trong dßng lÖnh. Nh­ vËy. M¸y tÝnh sÏ tuÇn tù g¸n nh÷ng gi¸ trÞ nhËn tõ bµn phÝm vµo nh÷ng biÕn t­¬ng øng trong danh s¸ch biÕn cña lÖng READ. ThÝ dô lÖnh READ * . sau dÊu ph¶y lµ danh s¸ch c¸c biÕn. I . C¸c gi¸ trÞ cña biÕn vµ biÓu thøc thùc ®­îc in ra sau mét kho¶ng trèng vµ sè nh÷ng ch÷ sè cã nghÜa sau dÊu chÊm thËp ph©n kh¸c nhau.25. khi thùc hiÖn lÖnh nµy. th× m¸y sÏ in ra nh÷ng gi¸ trÞ ®ã d­íi d¹ng biÓu diÔn E hoÆc D (xem môc 2.36. trong READ *. råi sau ®ã míi in gi¸ trÞ ®ã lªn mµn h×nh. GHICHU ®ßi hái ta gâ vµo tõ bµn phÝm mét sè nguyªn cho biÕn I.

c¸c th«ng tin v¨n b¶n. Y 5 FORMAT (16H TICH PHAN BANG . 'THI NGHIEM SO 1') 3) §Æc t¶ A w dïng cho c¸c h»ng vµ biÕn x©u ký tù. Môc v¨n b¶n in ra c¨n lÒ bªn tr¸i. thÝ dô: PRINT 35 35 FORMAT ('1' . Trong ch­¬ng 4 sÏ cßn trë l¹i vÊn ®Ò ®Þnh d¹ng phøc t¹p h¬n khi lµm viÖc víi c¸c file d÷ liÖu. xuèng hai dßng míi hay in ngay trªn dßng hiÖn thêi. c¸c ®o¹n v¨n b¶n. xuèng dßng míi. NÕu in ra trªn giÊy m¸y in. C¸c ký tù ph¶i n»m trong cÆp dÊu nh¸y trªn hay dÊu ngoÆc kÐp. trong ®ã w sè vÞ trÝ dïng ®Ó in gi¸ trÞ sè nguyªn. 53 54 . Danh s¸ch c¸c ®Æc t¶ n»m trong cÆp dÊu ngoÆc ®¬n b¸o cho m¸y tÝnh biÕt vÒ c¸ch d·n dßng theo chiÒu th¼ng ®øng vµ bè trÝ c¸c ký tù trong dßng th«ng tin in ra. 4) §Æc t¶ I w dïng cho sè nguyªn. C¸c ®Æc t¶ trong lÖnh FORMAT 1) C¸c ®Æc t¶ v¨n b¶n th­êng dïng ®Ó xuÊt d÷ liÖu lµ nh÷ng ký tù. ThÝ dô PRINT 5 .trong ®ã k lµ nh·n cña dßng lÖnh FORMAT. tuú chän w b¸o cho m¸y tÝnh sè vÞ trÝ giµnh cho mét biÕn x©u ký tù (v¨n b¶n) cÇn in. 3. Vïng bé nhí bªn trong ®ã gäi lµ vïng ®Öm buffer. hay dïng in tiªu ®Ò c¸c b¸o c¸o. F9. ThÝ dô: PRINT 4 4 FORMAT ('1' . M¸y tÝnh sÏ thiÕt lËp mçi dßng in bªn trong bé nhí tr­íc khi thùc sù in dßng ®ã lªn giÊy. 'KET QUA THI NGHIEM') Ta còng cã thÓ dïng ®Æc t¶ w H trong ®ã w − sè vÞ trÝ ®Ó xuÊt d÷ liÖu v¨n b¶n.. th­êng dïng ®Ó c¨n gi÷a c¸c tiªu ®Ò b¸o c¸o.. th× tuú chän d·n dßng b¸o cho m¸y in ®iÒu khiÓn kÐo giÊy ®Ó in sang ®Çu trang míi. Nh÷ng ký tù ®Çu tiªn trong vïng buffer gäi lµ ký tù ®iÒu khiÓn kÐo giÊy cña m¸y in cã nh÷ng ý nghÜa nh­ sau: 1 DÊu trèng 0 + Sang trang míi Xuèng mét dßng Xuèng hai dßng Kh«ng xuèng dßng B©y giê ta lµm quen víi nh÷ng ®Æc t¶ ®¬n gi¶n sau ®©y.3) 2) §Æc t¶ n X sÏ chÌn n dÊu trèng vµo b¶n ghi.2. §Æc t¶ v¨n b¶n cho phÐp ®­a c¸c ký tù trùc tiÕp vµo buffer. 25X .

A20) Sau lÖnh READ vµ c¸c d÷ liÖu ®­îc gâ vµo tõ bµn phÝm ®· nãi trong môc 3. 1X. ThÝ dô.TRUE. I3.2.5) §Æc t¶ F w . GHICHU 5 FORMAT (1X. ThÝ dô theo lÖnh 16 FORMAT (L5) nÕu t¹i mét trong 5 vÞ trÝ giµnh cho biÕn cã ch÷ T. 6) §Æc t¶ E w . NÕu ®Æc t¶ thiÕu vÞ trÝ ®Ó biÓu diÔn gi¸ trÞ. ThÝ dô: PRINT 5 . TEMP. khi cÇn in dßng tiªu ®Ò cña mét b¶ng sè cïng víi nh÷ng tiªu ®Ò cét. F10. 8) §èi víi c¸c gi¸ trÞ l«gic trong Fortran dïng ®Æc t¶ L w . I2. 1X. Th«ng th­êng hai lÖnh PRINT vµ FORMAT ®i kÌm gÇn nhau. I3)) Dïng dÊu g¹ch chÐo (/) trong lÖnh FORMAT chØ kÕt thóc dßng in tr­íc khi b¾t ®Çu c¸c ®Æc t¶ sau nã. theo ®óng ý ®Þnh biÓu diÔn cña m×nh hay lµm cho lÖnh FORMAT tr«ng ng¾n gän.1. d c¸c sè in ra ®­îc c¨n lÒ bªn ph¶i. 1X. chóng ta cã thÓ dïng: PRINT 5 55 56 . I3. F4. d dïng ghi ra d­íi d¹ng luü thõa nh÷ng gi¸ trÞ rÊt lín hoÆc rÊt nhá vµ khi ta ch­a h×nh dung râ vÒ ®é lín cña ®¹i l­îng.36 SL 7) C¸c ®Æc t¶ A w . d − sè ch÷ sè thËp ph©n sau dÊu chÊm. sÏ ®­îc g¸n vµo biÕn l«gic trong lÖnh ®äc. th× gi¸ trÞ . I2)) 20 FORMAT (1X. NAM.1. mµ t¹i c¸c vÞ trÝ in sÏ xuÊt hiÖn c¸c dÊu sao (*) ®Ó b¸o hiÖu cho ta biÕt r»ng ®Æc t¶ cña lÖnh FORMAT kh«ng phï hîp. 3 (1X. th× gi¸ trÞ sè sÏ kh«ng ®­îc in ra.TRUE. d còng dïng víi lÖnh ®äc sè liÖu. F4. Cã thÓ dïng nh÷ng c¸ch d­íi ®©y: C¸ch viÕt lÆp l¹i c¸c ®Æc t¶: ThÝ dô nh÷ng cÆp lÖnh sau ®©y hoµn toµn t­¬ng ®­¬ng: 10 FORMAT (3X.FALSE. cÊp thiÕu vÞ trÝ so víi gi¸ trÞ cña ®¹i l­îng cÇn in. I3) 20 FORMAT (1X. w − tæng sè vÞ trÝ dµnh cho sè thùc kÓ c¶ dÊu chÊm thËp ph©n. 9) Chóng ta cã thÓ sö dông mét sè ®Æc ®iÓm bæ sung trong c¸ch viÕt c¸c ®Æc t¶ cña lÖnh FORMAT nh»m n©ng cao chÊt l­îng b¶n ghi. d vµ E w . I w . ch÷ c¸i T hoÆc F (t­¬ng øng víi . th× kÕt qu¶ cÆp lÖnh in nµy trªn mµn h×nh sÏ nh­ sau: 1 1982 quan trac 25. I. I3. Khi xuÊt. trong ®ã w − sè vÞ trÝ giµnh cho d÷ liÖu. hoÆc . tøc vÞ trÝ cuèi cïng bªn ph¶i trong 5 vÞ trÝ. 3X. d dïng biÓu diÔn d¹ng thËp ph©n cña sè thùc. I2) 10 FORMAT (2 (3X. F w .1. I8.2. sÏ in ra t¹i vÞ trÝ thø 5. Trong hai ®Æc t¶ I w vµ F w . 2F4.1. 1X.

'Ten file so lieu: '. 'Do cao'. 85 FORMAT (1X. TL ®Ó c¨n lÒ tr¸i c¸c tiªu ®Ò cét mét b¶ng sè. 3X.1. nh¶y ngay tíi vÞ trÝ 22 ®Ó b¾t ®Çu ghi sè nguyªn. nh­ vËy sè ®Æc t¶ lµ thõa. 'Huong') ë lÖnh thø hai: nh¶y ngay tíi vÞ trÝ thø 27 ®Ó ghi tiªu ®Ò "Do cao". I7) ë lÖnh thø hai: sau khi ghi ra sè thùc víi 6 vÞ trÝ. nh­ng lÖnh FORMAT cã 4 ®Æc t¶ sè thùc. T22. 'Huong') Sau khi in xong ®o¹n v¨n b¶n KET QUA QUAN TRAC. con nh¸y ®øng trªn cïng dßng ngay sau lêi nh¾c chê ng­êi dïng nhËp th«ng tin tõ bµn phÝm theo yªu cÇu cña lÖnh ®äc.2) m¸y sÏ chän lÊy sè tèi ®a c¸c ®Æc t¶ cÇn dïng. §Æc t¶ \ cã t¸c dông ng¨n kh«ng xuèng dßng trong mét lÖnh in hoÆc ®äc. 3X. ThÝ dô c¸c cÆp lÖnh cïng nh·n sau ®©y sÏ lµ t­¬ng ®­¬ng víi nhau: 600 FORMAT (F6. TOCDO. ThÝ dô nhãm lÖnh sau ®©y sÏ lµm chøc n¨ng ®ã: PRINT 7 7 FORMAT (1X. thÝ dô: PRINT 1. 25X. sè ®Æc t¶ cßn l¹i bÞ bá qua. Cã thÓ dïng ®Æc t¶ nµy trong tr­êng hîp muèn viÕt mét lêi nh¾c yªu cÇu ng­êi dïng nhËp th«ng tin tõ bµn phÝm nh­ng sau khi viÕt lêi nh¾c th× kh«ng xuèng dßng. 'Huong') 85 FORMAT (T27. \) READ (*. 'Gio'. '(A50)') NAME VÒ sè l­ îng c¸c ®Æc t¶: Khi sè c¸c ®Æc t¶ nhiÒu h¬n sè môc trong danh s¸ch c¸c môc in. Trong tr­êng hîp nµy lÖnh in cã 2 môc in . 15X. sau ®ã do cã ®Æc t¶ TR5 xuÊt ph¸t tõ vÞ trÝ hiÖn thêi sÏ nh¶y sang ph¶i 5 vÞ trÝ ®Ó ghi tiªu ®Ò "Huong". M¸y sÏ chän lÊy hai ®Æc t¶ vµ in b×nh th­êng nh­ chóng ta mong muèn.5 FORMAT (1X. I7) 600 FORMAT (F6. 'Do cao'. KHOANG 1 FORMAT (4 F5. dÊu g¹ch chÐo thø hai chØ dÉn bá qua ngay dßng nµy kh«ng in. 57 58 . TR5. dÊu g¹ch chÐo thø nhÊt chØ dÉn cho m¸y kÕt thóc dßng. 5X. TR. ph¸t sinh ra mét dßng trèng tr­íc khi in c¸c tiªu ®Ò cét ë dßng thø ba nh­ ta thÊy d­íi ®©y: K ET Q U A Q U A N T R A C G io To c do H uong Dïng ®Æc t¶ b¶ng T.1. * 'Toc do'. xuèng dßng míi.2 gi¸ trÞ sè thùc. 'KET QUA QUAN TRAC' // 2X.

184 PRINT 1 1 FORMAT (1X. sau ®ã cã thÓ x¶y ra hai kh¶ n¨ng: 1) In lu«n buffer hiÖn t¹i vµ b¾t ®Çu mét buffer míi. PRINT *. I2 ! ' READ * . ICUOI 4 FORMAT (1X. thÝ dô trong lÖnh in sau: PRINT 20. Do ®ã TEM vµ VOL ®­îc in trªn hai dßng riªng biÖt. VOL 20 FORMAT (1X. Trong lÖnh in trªn gi¸ trÞ cña TEM ®­îc c¨n theo ®Æc t¶ F6. ICUOI PRINT 4. sè 10 vµ dÊu chÊm råi gâ phÝm Enter. Bµi tËp 1. V× kh«ng cã ®Æc t¶ cho VOL nªn ta lµm nh­ sau: 1) In gi¸ trÞ cña TEM sau mét vÞ trÝ trèng. Sau ®ã ta ®¹t tíi ®Çu cña danh s¸ch vµ dÊu trèng ®Ó in VOL.Khi sè ®Æc t¶ Ýt h¬n sè môc in. ' DEGREES') 4. sè lÇn lÆp cña ®Æc t¶ cã thÓ lµ biÕn.632 PRINT 5 . ViÕt ®o¹n ch­¬ng tr×nh ®äc gi¸ trÞ vµo hai biÕn thùc A vµ B. I5) END 3. M« t¶ nh÷ng g× sÏ in ra m¸y in khi thùc hiÖn nh÷ng lÖnh d­íi ®©y: A = 3. 'I1 = '. 'I2 = '.2) Trong tr­êng hîp nµy m¸y c¨n c¸c môc in vµ ®Æc t¶ cho ®Õn hÕt danh s¸ch ®Æc t¶.2. 2) Khi quay trë l¹i vÒ phÝa ®Çu cña danh s¸ch c¸c ®Æc t¶ (dÊu ngoÆc tr¸i) vµ c¨n F6. ®Æc t¶ cho c¸c môc in cßn l¹i. F7. I5. §iÒu g× sÏ x¶y ra khi thùc hiÖn ch­¬ng tr×nh sau vµ ta nhËp vµo bµn phÝm lÇn l­ît sè 1.1. '0') 59 60 . 'X = '. IDAU. TEM. dÊu ph¶y. X 5 FORMAT (1X. ®æi gi¸ trÞ cña hai biÕn ®ã cho nhau. 2. IDAU.2). 2) Quay trë l¹i ®Çu danh s¸ch ®Æc t¶ cho ®Õn khi gÆp dÊu ngoÆc ®¬n tr¸i vµ l¹i c¨n tõng cÆp môc in. Trong Fortran 90 cho phÐp c¸c tham sè ®é réng ®Æc t¶.2 cho gi¸ trÞ VOL. f6. ThÝ dô FORMAT (<M>F8. ' Cho cac gia tri cua hai so nguyen I1. M« t¶ nh÷ng g× sÏ in lªn mµn h×nh khi thùc hiÖn c¸c lÖnh d­íi ®©y: REAL X X = −27.

2) 6.= ' . F5.3. DIST. ViÕt ®o¹n ch­¬ng tr×nh nhËp vµo tõ bµn phÝm tªn 5 m«n thi cña häc kú cïng víi ®iÓm thi tõng m«n cña m×nh.PRINT 2 2 FORMAT ('+' .5 VEL = −2. chØ gåm mét vµi lÖnh thùc hiÖn tuÇn tù lµ 61 62 . VEL 10 FORMAT (1X.2) 5.6 PRINT 10. TÝnh ®iÓm trung b×nh vµ in lªn mµn h×nh thµnh mét b¶ng cã h×nh thøc nh­ sau: BANG DIEM THI HOC KY -------------------------------------------TT TEN MON HOC DIEM -------------------------------------------1 Tªn m«n thø 1 2 Tªn m«n thø 2 3 Tªn m«n thø 3 4 Tªn m«n thø 4 5 Tªn m«n thø 5 -------------------------------------------- 8 7 8 7 9 Diem trung binh hoc ky 7. 'DISTANCE = ' .8 Ch­¬ng 4 C¸c cÊu tróc ®iÒu khiÓn Trong c¸c ch­¬ng tr­íc ta ®· xÐt mét vµi ch­¬ng tr×nh ®¬n gi¶n. ThÊy r»ng nh÷ng ch­¬ng tr×nh nµy thùc sù rÊt ®¬n gi¶n. 'VELOCITY = ' . '. * 5X . F5. M« t¶ nh÷ng g× sÏ in lªn mµn h×nh khi thùc hiÖn c¸c lÖnh d­íi ®©y: REAL DIST . E10. VEL DIST = 28732.

Gi¶ tr×nh vµ l­u ®å Trong môc 1. Ng­êi lËp tr×nh ph¶i m« t¶ tuÇn tù c¸c c«ng ®o¹n tõ ®Çu ®Õn cuèi qu¸ tr×nh gi¶i.1.1. ch­¬ng 1 ®· s¬ l­îc nãi vÒ quy tr×nh n¨m b­íc gi¶i bµi to¸n.dÉn ®Õn kÕt qu¶ bµi to¸n cÇn gi¶i. C¸c thao t¸c c¬ b¶n vµ quy ­íc t­¬ng øng trong gi¶ tr×nh vµ l­u ®å D¹ng thao t¸c Chó gi¶i gi¶ tr×nh BiÓu t­îng l­u ®å TÝnh to¸n TB ← TONG / N ↓ TB = TONG / N ↓ ↓ NhËp d÷ liÖu §äc A. §èi víi nh÷ng bµi to¸n phøc t¹p vÒ c¸ch gi¶i th× b­íc 4 lµ b­íc khã kh¨n nhÊt. C¸ch chia khèi vµ chi tiÕt ho¸ tõng khèi nh­ vËy cã thÓ gäi lµ ph­¬ng ph¸p chia vµ chinh phôc. 4. KÕt qu¶ cuèi cïng cña chia khèi vµ chi tiÕt ho¸ tõng khèi chÝnh lµ thuËt gi¶i (algorithm).3. Trong ch­¬ng nµy.1. Nh÷ng lÖnh nh­ vËy gäi lµ nh÷ng lÖnh ®iÒu khiÓn. B ↓ In A.1. B ↓ XuÊt d÷ liÖu In A. B ↓ So s¸nh NÕu A > B A>B? → § ↓S 63 64 . B §äc A. Trong mçi khèi ng­êi lËp tr×nh l¹i ph¶i chi tiÕt ho¸ thªm ®Õn møc cã thÓ chuyÓn thµnh nh÷ng lÖnh m¸y tÝnh. B¶ng 4. Sù ®iÒu khiÓn ®­îc thùc hiÖn th«ng qua nh÷ng lÖnh cho phÐp ta chän nh÷ng nh¸nh kh¸c nhau trong ch­¬ng tr×nh vµ nh÷ng lÖnh cho phÐp ta lÆp l¹i nh÷ng phÇn nµo ®ã cña ch­¬ng tr×nh. chia qu¸ tr×nh nµy thµnh mét sè khèi vµ liÖt kª nh÷ng khèi ®ã ra ®Ó sau nµy ch­¬ng tr×nh m¸y tÝnh sÏ tuÇn tù thùc hiÖn. sÏ giíi thiÖu nh÷ng lÖnh cña Fortran cho phÐp ta ®iÒu khiÓn ®­îc thø tù c¸c b­íc cÇn thùc hiÖn. Kh¸i niÖm vÒ cÊu tróc thuËt to¸n 4. C¸c thao t¸c c¬ b¶n.

Nh÷ng chó gi¶i gi¶ tr×nh vµ nh÷ng biÓu t­îng l­u ®å chÝnh lµ ®Ó thÓ hiÖn nh÷ng thao t¸c c¬ b¶n ®ã (xem b¶ng 4. §Çu ra lµ trÞ cùc ®¹i. Mét sè thao t¸c (hay lÖnh) cã thÓ nhãm l¹i víi nhau t¹o thµnh mét khèi hay mét khèi cÊu tróc. ph©n tÝch cÊu tróc thuËt gi¶i th«ng qua mét thÝ dô cô thÓ vÒ bµi to¸n ph©n tÝch c¸c sè liÖu thùc nghiÖm. cã nh÷ng ®o¹n xuÊt hiÖn sù rÏ nh¸nh tuú theo mét ®iÒu kiÖn so s¸nh nµo ®ã. Theo c¸ch gi¶ tr×nh. 1) Ph¸t biÓu bµi to¸n: X¸c ®Þnh gi¸ trÞ lín nhÊt.2. mçi cÊu tróc cña thuËt gi¶i ®­îc quy ­íc bëi mét chó gi¶i ng¾n gän gÇn gièng víi ng«n ng÷ viÕt cña chóng ta. nhËp. 4. Trong thuËt gi¶i phøc t¹p h¬n mét chót cã thÓ thÊy c¸c cÊu tróc tæng qu¸t nµy lång vµo nhau. 2) M« t¶ d÷ liÖu vµo vµ ra: D÷ liÖu vµo lµ mét chuçi c¸c sè liÖu quan tr¾c.1. CÊu tróc tuÇn tù lµ chuçi c¸c b­íc thùc hiÖn mét c¸ch kÕ tiÕp nhau.3. C¸c cÊu tróc tæng qu¸t trong thuËt gi¶i C¸c b­íc trong mét thuËt gi¶i cã thÓ ph©n chia thµnh ba d¹ng cÊu tróc tæng qu¸t . CÊu tróc lùa chän (hay cßn gäi lµ cÊu tróc rÏ nh¸nh) cho phÐp so s¸nh hai gi¸ trÞ. mçi cÊu tróc ®ã ®­îc m« t¶ b»ng mét biÓu t­îng h×nh häc. sau ®ã tuú kÕt qu¶ so s¸nh mµ ®Þnh ra mét chuçi c¸c b­íc kh¸c nhau ph¶i thùc hiÖn. Mét ng­êi lËp tr×nh cã thÓ chän h×nh thøc nµy hoÆc h×nh thøc kia. nhá nhÊt vµ biªn ®é c¸c gi¸ trÞ cña tËp sè liÖu quan tr¾c.®ã lµ cÊu tróc tuÇn tù. xuÊt d÷ liÖu vµ so s¸nh. CÊu tróc lÆp ®­îc dïng khi qu¸ tr×nh gi¶i cÇn lÆp l¹i mét sè thao t¸c cho ®Õn khi tho¶ m·n mét ®iÒu kiÖn. trong cÊu tróc lÆp cã nh÷ng ®o¹n gåm nh÷ng thao t¸c tuÇn tù ®­îc thùc hiÖn.1). cßn trong c¸ch biÓu diÔn l­u ®å. 4. Nãi chung mét ch­¬ng tr×nh m¸y tÝnh dï ®¬n gi¶n hay phøc t¹p ®Õn ®©u còng chØ gåm cã nh÷ng thao t¸c c¬ b¶n ®ã. cùc tiÓu vµ biªn ®é c¸c gi¸ trÞ. 3) TÝnh thö víi tËp sè liÖu quan tr¾c sau: Chuçi sè liÖu thö: 40. ThÝ dô øng dông thuËt to¸n cÊu tróc B©y giê ta t×m hiÓu ph­¬ng ph¸p x©y dùng thuËt gi¶i theo kü thuËt chia khèi vµ chi tiÕt ho¸ tõng khèi.56 55.1.B¾t ®Çu thuËt gi¶i Tªn bµi to¸n B¾t ®Çu ↓ KÕt thóc thuËt gi¶i ↓ KÕt thóc Nh÷ng h×nh thøc ®Ó biÓu diÔn trùc quan thuËt gi¶i sao cho dÔ dµng chuyÓn thµnh ch­¬ng tr×nh lµ gi¶ tr×nh vµ l­u ®å.92 65 66 . lùa chän vµ lÆp. nãi chung nh÷ng thao t¸c c¬ b¶n trong mét thuËt gi¶i th­êng lµ nh÷ng tÝnh to¸n. DÇn dÇn ta sÏ thÊy r»ng.

TiÕp tôc qu¸ tr×nh nµy víi toµn bé chuçi sè liÖu sÏ dÉn tíi kÕt qu¶ lµ cùc ®¹i t¹m thêi chÝnh lµ trÞ cùc ®¹i trong c¶ chuçi. Sau ®ã ta ®äc sè thø hai vµ ®i vµo vßng lÆp.88 41. cùc tiÓu vµ biªn ®é Víi thÝ dô nµy. ta cËp nhËt trÞ cùc ®¹i vµ cùc tiÓu nÕu cÇn thiÕt. coi lµ cùc ®¹i t¹m thêi. ta chi tiÕt ho¸ c¸ch gi¶i b»ng gi¶ tr×nh. cùc tiÓu xuÊt ph¸t. Râ rµng khèi thø nhÊt ®ßi hái ph¶i chi tiÕt ho¸ nhiÒu h¬n n÷a. ta thay thÕ sè ®ã vµo cùc ®¹i t¹m thêi.21 Thùc hiÖn t×m trÞ cùc ®¹i nh­ sau: Tr­íc hÕt so s¸nh sè thø nhÊt cña chuçi víi sè thø hai ®Ó x¸c ®Þnh sè lín h¬n. NÕu cùc ®¹i t¹m thêi lín h¬n. ta xÐt tíi sè thø t­. kÕt qu¶ lµ: Gi¸ trÞ cùc ®¹i = 66.73 4) X©y dùng thuËt gi¶i: Kh¸i qu¸t l¹i c¸c b­íc thùc hiÖn ë b­íc (3) ta cã thÓ chia bµi to¸n thµnh ba khèi: . v× nã võa bao gåm c¶ viÖc chän trÞ cùc ®¹i. nh­ng nÕu sè thø ba lín h¬n cùc ®¹i t¹m thêi.56 TÝnh biªn ®é b»ng hiÖu gi÷a cùc ®¹i vµ cùc tiÓu = 66.31 − 40. B©y giê ta m« t¶ nh÷ng b­íc ®· ®ñ chi tiÕt nµy b»ng gi¶ tr×nh nh­ sau: Gi¶ tr×nh: §äc sè Cùc ®¹i §äc sè Chõng nµo sè kh«ng b»ng zero th× NÕu sè > Cùc ®¹i th× Cùc ®¹i ← Sè Cùc tiÓu ← Sè ← Sè 68 67 .56 = 25. B©y giê xÐt sè thø ba vµ so s¸nh nã víi cùc ®¹i t¹m thêi.70 53. Mét qu¸ tr×nh t­¬ng tù sÏ cho phÐp t×m cùc tiÓu. Víi tËp sè liÖu ®ang xÐt.TÝnh hiÖu gi÷a cùc ®¹i vµ cùc tiÓu ®Ó nhËn biªn ®é .99 49.31 Gi¸ trÞ cùc tiÓu = 40.§äc sè liÖu vµ x¸c ®Þnh c¸c trÞ cùc ®¹i vµ cùc tiÓu . Cùc ®¹i vµ cùc tiÓu xuÊt ph¸t th­êng ®­îc g¸n b»ng gi¸ trÞ cña quan tr¾c thø nhÊt. võa bao gåm c¶ qu¸ tr×nh lÆp (lÆp ®Ó ®äc sè liÖu vµ lÆp ®Ó cËp nhËt cùc trÞ khi cÇn).35 62. "Chõng nµo sè kh«ng ph¶i lµ zero".66.31 58. do ®ã ta ®äc mét sè liÖu ®Çu ®Ó g¸n cho chóng.In cùc ®¹i.

lín h¬n .LE.2.OR. Biªn ®é §©y lµ mét thuËt gi¶i ®¬n gi¶n.TRUE. thµnh mét biÓu thøc l«gic kÕt hîp. lµ 69 70 . vµ .TRUE.AND. NÕu kh«ng th× biÓu thøc cã gi¸ trÞ lµ sai . . nÕu X b»ng 4. BiÓu thøc l«gic BiÓu thøc l«gic ®­îc t¹o bëi c¸c to¸n tö quan hÖ: . Cùc tiÓu In 'BIEN DO GIA TRI = '. Khi hai biÓu thøc l«gic nèi víi nhau bëi .) hoÆc sai (. kh«ng b»ng lín h¬n hoÆc b»ng nhá h¬n hoÆc b»ng nèi hai biÕn sè ë hai bªn..FALSE. b»ng nhá h¬n . Trong c¸c môc tiÕp sau. CÊu tróc IF vµ c¸c lÖnh t­¬ng øng 4.EQ. th× viÖc chuyÓn thµnh ch­¬ng tr×nh Fortran sÏ kh«ng cßn lµ vÊn ®Ò khã kh¨n.TRUE. ChØ cã mét khèi thø nhÊt cÇn chi tiÕt ho¸.5 th× biÓu thøc X .OR. T­¬ng tù. th× biÓu thøc l«gic kÕt hîp sÏ cã gi¸ trÞ lµ ®óng nÕu mét hoÆc c¶ hai biÓu thøc cã gi¸ trÞ lµ ®óng. B trong ®ã A vµ B lµ c¸c biÕn sè thùc.2.OR. NÕu gi¸ trÞ cña A b»ng gi¸ trÞ cña B th× biÓu thøc l«gic sÏ cã gi¸ trÞ lµ ®óng .NE.NÕu sè < Cùc tiÓu th× Cùc tiÓu §äc sè Biªn ®é ← Sè ← Cùc ®¹i − Cùc tiÓu In 'GIA TRI CUC DAI = '. Tuú theo quan hÖ gi÷a hai biÕn sè ®ã mµ biÓu thøc l«gic cã mét trong hai gi¸ trÞ l«gic: ®óng (.GT.FALSE.1. ThÊy r»ng khi thuËt gi¶i ®· chi tiÕt ho¸ tíi møc nh­ vËy. ThÝ dô.0 cã gi¸ trÞ b»ng ®óng .GE.).LT.. . . 4. xÐt biÓu thøc A . Cùc ®¹i In 'GIA TRI CUC TIEU = '. Ta cã thÓ nèi hai biÓu thøc l«gic b»ng mét trong c¸c to¸n tö l«gic .. Ta cã thÓ gäi . 3.GT.EQ. ta sÏ nghiªn cøu c¸c lÖnh Fortran chuyªn trî gióp cho viÖc thiÕt kÕ c¸c cÊu tróc ®iÒu khiÓn cña bµi to¸n nµy vµ nhiÒu bµi to¸n t­¬ng tù.

trong Fortran kh«ng dïng c¸c to¸n tö quan hÖ nh­ khi so s¸nh hai biÓu thøc sè.4 sÏ ®­îc ­íc l­îng tr­íc tiªn. C¸c to¸n tö l«gic A False False True B False True False . lµ to¸n tö nh©n l«gic. th× biÓu thøc bªn tr¸i cña to¸n tö . Gi¸ trÞ cña biÓu thøc l«gic cã thÓ ®­îc g¸n cho biÕn l«gic b»ng lÖnh g¸n gièng nh­ lÖnh g¸n dïng víi c¸c biÕn sè vµ biÓu thøc sè. Mét biÓu thøc l«gic cã thÓ chøa nhiÒu to¸n tö l«gic.AND.NEQV.FALSE. cã thÓ ®øng tr­íc biÓu thøc l«gic vµ ®æi gi¸ trÞ cña nã thµnh gi¸ trÞ ng­îc l¹i.to¸n tö céng l«gic. Khi hai biÓu thøc nèi víi nhau bëi . nÕu A.FALSE. vµ . OK = DONE . Gi¸ trÞ nµy sÏ ®­îc xÐt cïng víi gi¸ trÞ cña KT . tãm t¾t quy t¾c ­íc l­îng cña c¸c to¸n tö l«gic cho mäi tr­êng hîp cã thÓ x¶y ra.NOT. thÝ dô nh­ trong biÓu thøc sau: .AND.B False True True A.LT.OR..EQV. I . B lµ sai (.) ®­îc ®æi ng­îc l¹i.2.) th× . GT.NEQV. vµ . sau ®ã gi¸ trÞ cña nã (. hoÆc .FALSE.). 24 Khi so s¸nh hai biÓu thøc l«gic hay hai biÕn l«gic cã t­¬ng ®­¬ng nhau hay kh«ng. Trong biÓu thøc trªn.EQV. 15..AND.2. B lµ ®óng (gi¸ trÞ b»ng .NOT.GT.LT. GT. B¶ng 4.B False False False A. 15.NOT. .OR.NOT. Ta cã thÓ gäi to¸n tö . ThÝ dô. To¸n tö ... ThÝ dô. nÕu A lµ 5. th× biÓu thøc kÕt hîp cã gi¸ trÞ ®óng chØ khi c¶ hai biÓu thøc cã gi¸ trÞ lµ ®óng.EQ.NOT.B True False False A. mµ dïng c¸c to¸n tö l«gic .TRUE. ISUM QuyÒn ­u tiªn tõ cao nhÊt xuèng thÊp nhÊt lµ .FALSE.TRUE.OR. KT . biÓu thøc bªn ph¶i cã gi¸ trÞ ®óng . biÓu thøc A .TRUE. vµ toµn bé biÓu thøc sÏ cã gi¸ trÞ lµ ®óng .0. (A .TRUE. thÝ dô: LOGICAL DONE. B¶ng 4. OK DONE = . A.B False True True 71 72 .AND.EQ. cã gi¸ trÞ sai . KT lµ 5 vµ ISUM lµ 5. A True True False A.OR. ISUM.AND.4) .

®­îc thùc hiÖn sau cïng.NEQV. nh÷ng lÖnh IF sau ®©y lµ nh÷ng lÖnh ®óng: IF (A. BiÓu thøc l«gic bao giê còng ph¶i ®Æt trong cÆp dÊu ngoÆc ®¬n. vµ . vµ .. ®iÒu khiÓn chuyÓn ngay xuèng lÖnh ®øng sau END IF: IF (BiÓu thøc l«gic) THEN lÖnh 1 . 0.. 1.NOT. nÕu biÓu thøc l«gic cã gi¸ trÞ False th× kh«ng thùc hiÖn lÖnh cïng dßng mµ chuyÓn ngay tíi lÖnh tiÕp theo phÝa d­íi trong ch­¬ng tr×nh.5) READ *. . nÕu biÓu thøc l«gic ë trong cÆp dÊu ngoÆc ®¬n cã gi¸ trÞ True th× thùc hiÖn lÖnh n»m trªn cïng dßng víi biÓu thøc l«gic.AND. 4. sau ®ã c¸c to¸n tö quan hÖ dïng ®Ó ph¸t sinh c¸c gi¸ trÞ TRUE hoÆc FALSE. nhËp d÷ liÖu. GT. vµ c¸c gi¸ trÞ nµy ®­îc ®¸nh gi¸ b»ng c¸c to¸n tö l«gic theo thø tù ­u tiªn ..EQV.OR. D¹ng thø nhÊt gäi lµ Logical IF viÕt nh­ sau: IF (BiÓu thøc l«gic) LÖnh thùc hiÖn Theo lÖnh nµy.True True False True True True False Khi c¸c to¸n tö sè häc..2.. Chó ý r»ng lÖnh thùc hiÖn ghi sau biÓu thøc l«gic cã thÓ lµ mét trong nh÷ng lÖnh tÝnh to¸n (g¸n).2.GT. quan hÖ vµ l«gic cïng cã mÆt trong mét biÓu thøc th× c¸c to¸n tö sè häc thùc hiÖn tr­íc tiªn. DIST 2) D¹ng thø hai gäi lµ Block IF: NÕu biÓu thøc l«gic cã gi¸ trÞ True m¸y thùc hiÖn c¸c lÖnh tõ lÖnh 1 ®Õn lÖnh n .. nÕu biÓu thøc l«gic cã gi¸ trÞ False c¸c lÖnh tõ n + 1 ®Õn m ®­îc thùc hiÖn: 73 74 . nh­ng kh«ng thÓ lµ mét lÖnh IF kh¸c. NÕu biÓu thøc l«gic cã gi¸ trÞ False. sau ®ã chuyÓn tíi lÖnh tiÕp sau END IF. LÖnh IF l«gic 1) C¸c lÖnh IF l«gic cã thÓ cã mét sè d¹ng sö dông. xuÊt.. lÖnh n END IF 3) D¹ng thø ba gäi lµ d¹ng IF − ELSE: Khi biÓu thøc l«gic cã gi¸ trÞ True c¸c lÖnh tõ 1 ®Õn n ®­îc thùc hiÖn.0) SUM = SUM + A IF (TIME . ThÝ dô. C¸c quan hÖ ..

... lÖnh n ELSE lÖnh n+ 1 ... chø kh«ng nhÊt thiÕt chØ lµ hai nh¸nh nh­ ®· viÕt d­íi ®©y: IF (BiÓu thøc l«gic 1) THEN lÖnh 1 .. NÕu kh«ng mét biÓu thøc l«gic nµo cã gi¸ trÞ True th× chØ cã c¸c lÖnh tõ p + 1 tíi q ®­îc thùc hiÖn. nÕu biÓu thøc l«gic 1 cã trÞ False. biÓu thøc l«gic 2 cã trÞ True th× lo¹t lÖnh tõ m + 1 ®Õn n thùc hiÖn. lÖnh m END IF 4) D¹ng thø t­ gäi lµ IF − ELSE IF: NÕu biÓu thøc l«gic 1 cã gi¸ trÞ True th× lo¹t c¸c lÖnh tõ 1 ®Õn m ®­îc thùc hiÖn... lÖnh m ELSE IF (BiÓu thøc l«gic 2) THEN lÖnh m+ 1 .. LËp ch­¬ng tr×nh gi¶i hÖ ph­¬ng tr×nh bËc hai 75 76 . lÖnh q END IF ThÝ dô 1: Sö dông c¸c lÖnh IF l«gic ®Ó ®iÒu khiÓn rÏ nh¸nh. Trong thùc tÕ ta cã thÓ cÊu t¹o sè nh¸nh ELSE IF nhiÒu h¬n hoÆc Ýt h¬n.IF (BiÓu thøc l«gic) THEN lÖnh 1 .. lÖnh p ELSE lÖnh p+1 .. lÖnh n ELSE IF (BbiÓu thøc l«gic 3) THEN lÖnh n+1 . nÕu c¸c biÓu thøc l«gic 1 vµ 2 lµ False vµ biÓu thøc l«gic 3 True th× c¸c lÖnh tõ n + 1 tíi p thùc hiÖn..

' HE SO B BANG' READ * .*A*C IF (DELT .ax 2 + bx + c = 0 (c¸c hÖ sè a. L­u ®å thuËt gi¶i bµi to¸n cña thÝ dô 1 PRINT * . 0. A PRINT * .LT. b.) THEN 77 78 . c nhËp tõ bµn phÝm. ' HE SO C BANG' READ * .1.b + ∆) / a I n (.1.b / (2a) ↓§ I n ‘V« nghiÖ m’ a = 2a ↓ I n (.∆) / a ↓ ↓ → KÕ t hóc t H×nh 4. c TÝ ∆ nh § S ∆=0 S↓ ∆ = ∆ ↓ ↓ ↓ ∆<0 ← ↓ I n . B¾ ®Çu t In ‘N hap H S’ § äc a. ' HE SO A BANG' READ * .b . Ta cã thÓ cô thÓ hãa thuËt gi¶i cña bµi to¸n nµy b»ng l­u ®å nh­ trªn h×nh 4. b. B PRINT * . a ≠ 0 ). Tõ ®ã viÕt m· nguån cña ch­¬ng tr×nh Fortran nh­ d­íi ®©y. C DELT = B**2 − 4.

n2 . LÖnh IF sè häc LÖnh IF sè häc cho phÐp thùc hiÖn rÏ nh¸nh ch­¬ng tr×nh thµnh ba nh¸nh tïy thuéc vµo gi¸ trÞ cña biÓu thøc sè häc. F10. theo lÖnh IF (I − 10) 4. (−B + DELT) / A . 8. F10. 5X. khi X < 3. * A PRINT 7 . F10.EQ. Trong lÖnh IF (X − 3. 'HAI NGHIEM: X1 = '.5 ®iÒu khiÓn chuyÓn tíi lÖnh cã nh·n lµ 6. 'NGHIEM KEP BANG' .5) 3. 7 nÕu I < 10 ®iÒu khiÓn chuyÓn ®Õn lÖnh cã nh·n lµ 4. ThÝ dô.5 ®iÒu khiÓn chuyÓn tíi lÖnh cã nh·n lµ 3. 6. b»ng kh«ng − nh·n n 2 .PRINT * . −B / (2. (−B − DELT) / A 7 * FORMAT (1X. ' PHUONG TRINH VO NGHIEM' ELSE IF (DELT . n3 trong ®ã n1 . 79 80 .2) ELSE DELT = SQRT (DELT) A = 2. d¹ng tæng qu¸t cña lÖnh nµy viÕt nh­ sau: IF (BiÓu thøc sè häc) n1 . n2 . vµ d­¬ng − nh·n n3 .2) END IF END 4.3. 0.2. 6 khi X ≥ 3.0 *A) 5 FORMAT (1X. n3 − nh·n cña c¸c lÖnh thùc hiÖn.) THEN PRINT 5 . 'X2 = '.2. NÕu biÓu thøc sè häc cã gi¸ trÞ ©m th× ®iÒu khiÓn ®­îc chuyÓn tíi lÖnh cã nh·n lµ n1 . nÕu I = 10 − chuyÓn ®Õn nh·n 8 vµ nÕu I > 10 − chuyÓn ®Õn nh·n 7.

2. E12.0 12 9 F = EXP (− X ** 3) * COS (T * X + 1) WRITE (6 .2.1 . B¾ ®Çu t ↓ T = 0.ThÝ dô 2: Dïng lÖnh IF sè häc ®Ó thiÕt kÕ vßng lÆp. L­u ®å thuËt gi¶i bµi to¸n cña thÝ dô 2 T = 0.1 S ↓ X>3 ← ↓§ K Õ thóc t H×nh 4. 3 trong ®ã x biÕn thiªn tõ 1 ®Õn 3 víi b­íc 0.2.0 → ↓ TÝ F nh ↓ I n X. F ↓ X = X + 0.1 81 82 .1 vµ t = 0. ViÕt ch­¬ng tr×nh tÝnh vµ in gi¸ trÞ hµm f ( x) = e − x cos (t x + 1) .1 X = 1.2) X = X + 0. F FORMAT (F5.1 X = 1. 9) X . L­u ®å gi¶i bµi to¸n nµy tham kh¶o trªn h×nh 4.

s¾p xÕp l¹i c¸c phÇn tö m¶ng ®ã theo thø tù t¨ng dÇn vµ in ra mµn h×nh.LT.IF (X − 3. LÖnh GO TO cã thÓ chuyÓn ®iÒu khiÓn tíi bÊt kú lÖnh thùc hiÖn nµo ®øng tr­íc hoÆc ®øng sau lÖnh GO TO. LÖnh cÇn chuyÓn tíi nhÊt thiÕt ph¶i cã nh·n.0 7 I=I+1 X (I)=Y (I) GO TO 7 ThÝ dô 3: ViÕt ch­¬ng tr×nh nhËp n phÇn tö cña m¶ng mét chiÒu X. TG INTEGER N. X (I) IF (I . N) GOTO 7 I=1 K=I 83 84 7 C S¾p xÕp m¶ng X theo thø tù t¨ng dÇn 2 .. I.0) 12 . REAL X (20). J. 'PHAN TU '. K N = 10 PRINT * . ThÝ dô: GO TO 5 . Ngoµi ra trong ch­¬ng tr×nh kh«ng thÓ cã nh÷ng lÖnh cã cïng nh·n nh­ nhau. LÖnh chuyÓn ®iÒu khiÓn v« ®iÒu kiÖn GO TO LÖnh nµy cã d¹ng GO TO n trong ®ã n − nh·n cña lÖnh mµ ®iÒu kiÓn cÇn chuyÓn tíi. 12 ..4. 5 X = X + 1. 'NHAP CAC PHAN TU MANG' I=0 I=I+1 PRINT *. I READ *.2. 4 4 STOP END 4.

Theo lÖnh nµy.. . LT. X (K)) K = J J=J+1 IF (J . . n 2 .LE. n m tuú thuéc vµo gi¸ trÞ cña i .... n 2 .. 2 .. cô thÓ khi i = 1 ®iÒu khiÓn sÏ chuyÓn tíi lÖnh cã nh·n n1 .1 J=I+1 IF (X (J) .. LÖnh GO TO tÝnh to¸n LÖnh GO TO tÝnh to¸n dïng ®Ó thùc hiÖn chuyÓn ®iÒu khiÓn tíi mét trong sè nh÷ng lÖnh cã nh·n ®­îc liÖt kª trong lÖnh GOTO tuú thuéc vµo gi¸ trÞ cña mét biÕn trong lÖnh. 115 . n m ) . . NÕu gi¸ trÞ cña i n»m ngoµi kho¶ng 1 ≤ i ≤ m th× ®iÒu khiÓn chuyÓn xuèng lÖnh ®øng sau lÖnh GO TO ®Ó thùc hiÖn. i − biÕn nguyªn kh«ng chØ sè. . khi i = m − nh·n n m .. D¹ng tæng qu¸t cña lÖnh nh­ sau: GO TO ( n1 . N) GOTO 3 END C LÇn l­ît in c¸c gi¸ trÞ cña m¶ng X ®· s¾p xÕp 3 8 4. n m − c¸c nh·n cña nh÷ng lÖnh thùc hiÖn. N) GOTO 1 TG = X(I) X(I) = X(K) X(K) = TG I=I+1 IF (I. khi i = 2 − nh·n n 2 . N) GOTO 2 I=1 PRINT 8 . KA khi KA = 1 ®iÒu khiÓn chuyÓn tíi lÖnh cã nh·n lµ 17. n 2 . 19) .LT. 85 86 . khi KA = 2 ®iÒu khiÓn chuyÓn tíi lÖnh cã nh·n lµ 2.5. khi KA = 3 ®iÒu khiÓn chuyÓn tíi lÖnh cã nh·n lµ 115 vµ khi KA = 4 ®iÒu khiÓn chuyÓn tíi lÖnh cã nh·n lµ 19.2) I=I+1 IF (I . ThÝ dô.LE. X(I) FORMAT (F12. ®iÒu khiÓn ®­îc chuyÓn tíi mét trong c¸c lÖnh n1 .2.. i trong ®ã n1 .. theo lÖnh GO TO (17 ...

5) L=L+1 IF (L − 3) 28 . 21.4 L=0 I=L+1 GO TO (12.0 * X ** 2 − 1.0 . I P = 1. Danh s¸ch xÕp theo thø tù tõ cao xuèng thÊp dùa theo ®iÓm trung b×nh. In b¶ng cã tiªu ®Ò vµ c¸c cét thø tù. 8) L . giái > 9. ViÕt ch­¬ng tr×nh nhËp hä tªn vµ ®iÓm ba m«n häc cña nhãm gåm n sinh viªn. TÝnh ®iÓm trung b×nh céng ba m«n häc. P FORMAT (I3 . 87 88 . ViÕt ch­¬ng tr×nh tÝnh gi¸ trÞ cña ®a thøc Lejandre víi x = 0.9 . I X = 0.0 * X) WRITE (* .0 GO TO 24 P=X GO TO 24 P = 0. 28 .0 * X ** 3 − 3. 30 STOP END 1 khi l = 0 x khi l = 1 1 2 (3 x − 1) khi l = 2 2 1 (5 x 3 − 3 x) khi l = 3 2 28 12 17 21 6 24 8 30 ThÝ dô 5: S¾p xÕp danh s¸ch.4 theo c«ng thøc     Pl ( x) =      REAL X. F12.5 * (3. 6) . ghi chó xÕp lo¹i theo ®iÓm trung b×nh: trung b×nh < 6. P INTEGER L.0 . hä tªn. 17.ThÝ dô 4: øng dông lÖnh GOTO tÝnh to¸n. ®iÓm ba m«n vµ ®iÓm trung b×nh.5 * (5.0) GO TO 24 P = 0. kh¸ 6 ÷ 8.

J . '(A20)') TEN(I) READ * . D1 (I) . ' NHAP SINH VIEN ' .0 IF (I .PARAMETER (N = 15) INTEGER I . D1 (50) . TB (50) CHARACTER * 20 TEN (50) . TENTG C NhËp hä tªn. D2 (I) .GT.LE. D3 (50). K . I READ (* . ID REAL D . D2 (50) . TB(K)) K = J J=J+1 IF (J .LT. ®iÓm thi vµ tÝnh ®iÓm trung b×nh I=0 7 I=I+1 PRINT * . D3 (I) TB (I) = (D1 (I) + D2 (I) + D3 (I)) / 3. N) GO TO 1 TENTG = TEN (I) TEN (I) = TEN (K) TEN (K) = TENTG ID = D1 (I) D1 (I) = D1 (K) D1 (K) = ID ID = D2 (I) D2 (I) = D2 (K) 89 90 . N) GO TO 7 C S¾p xÕp danh s¸ch theo thø tù ®iÓm trung b×nh gi¶m dÇn I=1 2 1 K=I J=I+1 IF (TB(J) .

TEN (I) . I2. I .9X . I3. 9. 1X. D2 (I) . A20. I3.0) THEN IF (TB (I) . D3 (I) . 1X. D2 (I) . I2. TEN (I) .D2 (K) = ID ID = D3 (I) D3 (I) = D3 (K) D3 (K) = ID D = TB (I) TB (I) = TB (K) TB (K) = D I=I+1 IF (I . 1X. 6. I3. F5. 1X. I3. N) GO TO 2 C In tiªu ®Ò danh s¸ch lªn mµn h×nh PRINT 100 100 * FORMAT (21X . A20. 'GIOI') FORMAT (1X. D1 (I) . I3.1. D1 (I) . D3 (I) . TB (I) ELSE PRINT 50 . A20.LT. I2. * 'TRUNG BINH') I=1 3 IF (TB (I) . F5. 7X. 1X. I3. 1X. 'KHA') FORMAT (1X. 'HO TEN' . TB (I) END IF 91 92 . 1X .LT. 'BANG DIEM' // . 'TT' . I .1. I3. I3. 'D1 D2 D3 TB XEP LOAI' /) C In tõng sinh viªn theo danh s¸ch 60 50 40 FORMAT (1X. I3.1. F5.LT.0) THEN PRINT 40 .

xem sè h×nh thang con n = 1 .3.3) S 2 = ∑ 0. b − cho tr­íc. D1 (I) . I . Minh häa s¬ ®å tÝnh gÇn ®óng tÝch ph©n x¸c ®Þnh theo ph­¬ng ph¸p h×nh thang 93 94 .5 ( y i + y i +1 ) ( x i +1 − x i ) i n TiÕp tôc t¨ng n ®Õn khi S1 − S 2 < ε . LE.5 ( y a + y b ) (b − a ) . a.ELSE PRINT 60 . TB (I) END IF I=I+1 IF (I. y = f (x ) y2 y1 x1 = a x2 xn = b H×nh 4. TEN (I) . B­íc xÊp xØ sau t¨ng sè h×nh thang con n thªm 1 vµ tÝch ph©n b»ng ( h×nh 4. N) GO TO 3 STOP END ThÝ dô 6: ViÕt ch ­¬ng tr×nh tÝnh tÝch ph©n x¸c ®Þnh: I = ∫ x 2 sin x a b theo c«ng thøc h×nh thang víi sai sè ε = 0. Gîi ý: ë b­íc xÊp xØ ®Çu. D2 (I) . tÝch ph©n b»ng S1 = 0.0001. D3 (I) .

SOHINH) THEN HINH = HINH + 1.EPSIL = 0.0001 A = 0. EPSIL) THEN SOHINH = SOHINH + 1. S2 95 96 .0 X1 = A Y1 = X1 ** 2 * SIN (X1) S2 = 0.0 7 DX = (B−A) / SOHINH HINH = 1.5 * (A ** 2 * SIN (A) + B ** 2 * SIN (B) ) * (B−A) SOHINH = 2.LT.5*(Y1 + Y2) * DX IF (HINH .0 X1 = X2 Y1 = Y2 GOTO 5 END IF IF (ABS (S2−S1) .0 B = 3.GT.0 S1 = S2 GOTO 7 END IF PRINT 3 .0 5 X2 = X1 + DX Y2 = X2 ** 2 * SIN (X2) S2 = S2 + 0.141593 S1 = 0.

3 FORMAT (1X . nÕu x n»m trong kho¶ng: 180 < x ≤ 270 ta thay b»ng gãc x − 180 .. sau ®ã dÉn ch­¬ng tr×nh Fortran. Khèi 2: In tiªu ®Ò cña b¶ng kÕt qu¶. do ®ã nÕu x n»m trong kho¶ng: 90 < x ≤ 180 ta thay b»ng gãc 180 − x . mçi sè h¹ng tiÕp sau b»ng sè h¹ng tr­íc nh©n víi . B©y giê ta ph©n tÝch chi tiÕt tõng khèi ®Ó dÉn l­u ®å thùc hiÖn trong mçi khèi. ®æi ra ra®ian.4). Sau ®ã ®æi x thµnh ra®ian (h×nh 4. = ∑ . 97 98 . B×nh ph­¬ng cña sin cña gãc x tÝnh theo c«ng thøc chuçi nh­ sau: sin 2 x = x 2 − ∞ 23 x 4 25 x 6 ( −1) n +1 2 2 n −1 x 2n + − . 4! 6! ( 2n ) ! n =1 H·y viÕt ch­¬ng tr×nh ®äc vµo mét gãc x b»ng ®é. F15.4) END ThÝ dô 7: Vßng lÆp ®Ó tÝnh tæng chuçi. tÝnh vµ in ra b¶ng so s¸nh kÕt qu¶ tÝnh sin 2 x theo c«ng thøc nµy víi nh÷ng sè sè h¹ng chuçi n lÎ − 2 x2 tõ 1 ®Õn 15. 'TICH PHAN BANG'. ThÊy r»ng bµi to¸n cã thÓ chia thµnh ba khèi sau: Khèi 1: NhËp gi¸ trÞ gãc x . n ( 2n − 1) Trong thÝ dô nµy. nÕu x n»m trong kho¶ng: 270 < x ≤ 360 ta thay b»ng gãc x − 360 . ThÊy r»ng khèi 1 cã thÓ chi tiÕt ho¸ thµnh ba b­íc con: V× c«ng thøc khai triÓn chuçi trªn ®©y héi tô nhanh ®èi víi nh÷ng gãc x nhá. ThÊy r»ng sè h¹ng ®Çu khi n = 1 lµ x 2 . Khèi 3: TÝnh gi¸ trÞ sin 2 x theo c«ng thøc chuçi vµ in ra kÕt qu¶ kh¶o s¸t víi sè sè h¹ng chuçi tõ 1 ®Õn 15. ta øng dông ph­¬ng ph¸p chia khèi bµi to¸n vµ chi tiÕt ho¸ tõng khèi nh­ ®· tr×nh bµy trong môc 4.1 ®Ó x©y dùng thuËt gi¶i vµ diÔn ®¹t thuËt gi¶i ®ã b»ng l­u ®å..

L­u ®å khèi 1 (thÝ dô 7) Print tiªu ®Ò b¶ng Khèi 2 ↓ Print tiªu ®Ò cét H×nh 4.5. L­u ®å khèi 2 (thÝ dô 7) 99 100 .1415 / 180 ↓ ↓ H×nh 4.Read X ← Khèi 1 F ↓ X > 90 T↓ X > 270 T F ↓ ↓ X >180 F X = X − 360 ↓T X =X − 180 X = 180 − X ↓ ↓ ← ↓ X = X*3.4.

in c¸c tiªu ®Ò ®Çu b¶ng (h×nh 4. • G¸n x 2 cho biÕn THEM (gi¸ trÞ cña sè h¹ng thø nhÊt). Ta thÊy khèi nµy gåm c¸c b­íc cô thÓ sau: • G¸n 0 cho biÕn S (gi¸ trÞ khëi t¹o cña sin 2 x cÇn tÝnh).6. • G¸n 1 cho N (b¾t ®Çu xÐt sè h¹ng thø nhÊt). L­u ®å khèi 3 (thÝ dô 7) Khèi 3 lµ phøc t¹p nhÊt cÇn ®­îc chi tiÕt ho¸ mét c¸ch tèi ®a.Ta thÊy khèi 2 chØ gåm hai viÖc tuÇn tù lµ in dßng tiªu ®Ò cña b¶ng kh¶o s¸t.5). sin 2 X ← ↓ N=N+1 THEM = THEM *2 * X 2 / (N* (2N−1) ↓ F N>15 T H×nh 4. S. 101 102 . S=0 N=1 THEM = X 2 Khèi 3 ↓ S = S + THEM ↓ N lÎ F T ↓ Print N. • Chõng nµo N ≤ 15 thùc hiÖn tuÇn tù 4 b­íc sau: ♦ Céng sè h¹ng (THEM) vµo biÕn S.

141593 / 180. 180. 2H N. 1X . X IF (X .GT.0) THEN IF (X . N ( 2 N − 1) . 103 104 −2X2 .0 ELSE X = 180. Nh­ vËy. ♦ TÝnh l¹i biÕn THEM b»ng c¸ch nh©n chÝnh nã víi Gi¶ tr×nh nµy t­¬ng ®­¬ng víi l­u ®å khèi trªn h×nh 4. 90.♦ NÕu N lÎ in gi¸ trÞ N . ta ®· chi tiÕt ho¸ tÊt c¶ c¸c b­íc trong ba khèi d­íi d¹ng c¸c l­u ®å.6.0 PRINT 2 2 * * FORMAT (1X. S . ' HAY CHO MOT GOC BANG DO' READ *.GT. sin 2 x (tÝnh theo hµm chuÈn).0 − X END IF END IF X = X * 3.0) THEN X = X − 180. 35H KHAO SAT CONG THUC BINH PHUONG SIN // . 17H THEO HAM CHUAN) S = 0.0 ELSE IF (X . C«ng viÖc cßn l¹i ®¬n gi¶n lµ g¾n c¬ häc ba l­u ®å l¹i ta ®­îc l­u ®å chung cña toµn thuËt to¸n. Tõ ®ã dÔ dµng chuyÓn sang ch­¬ng tr×nh Fortran d­íi ®©y: PRINT * . 17H THEO CONG THUC.0) THEN X = X − 360. ♦ T¨ng thªm 1 ®¬n vÞ cho N . 270.GT.

..93 50 23. DO C Ph©n tÝch bµi to¸n nµy.18 105 106 . ta thÊy cã thÓ chia nã thµnh ba khèi: 1) NhËp tõ bµn phÝm mét gi¸ trÞ ®é s©u t¹i ®ã cÇn néi suy nhiÖt ®é.57 220 15.7)...3.14 240 14.47 40 24.89 180 17.49 350 11.31 280 13.05 140 20. 15) GO TO 5 END ThÝ dô 8: Néi suy tuyÕn tÝnh chuçi sè liÖu quan tr¾c..40 60 23. 2) . N . LËp ch­¬ng tr×nh nhËp nh÷ng sè liÖu nµy vµ néi suy gi¸ trÞ nhiÖt ®é cho mét ®é s©u bÊt kú nhËp tõ bµn phÝm. Khèi thø nhÊt rÊt ®¬n gi¶n vµ quen thuéc..73 20 24. 2F17.20 90 23.EQ. Ph©n bè nhiÖt ®é n­íc biÓn (oC) theo ®é s©u (m) §é s©u NhiÖt ®é §é s©u NhiÖt ®é §é s©u NhiÖt ®é 0 24. B¶ng 4.98 160 18. §Ó thùc hiÖn khèi thø hai ta tæ chøc mét vßng lÆp ®Ó tuÇn tù nhËp ®é s©u vµ nhiÖt ®é t¹i c¸c ®iÓm nót (xem l­u ®å cña khèi 2 trªn h×nh 4..58 400 10.13 120 21. I2 . Gi¶ sö cã nh÷ng sè liÖu quan tr¾c vÒ nhiÖt ®é n­íc biÓn t¹i c¸c tÇng s©u ë ®iÓm cã täa ®é 120oK§-20oVB ®­îc cho trong b¶ng 4. 1) PRINT 4 .0 * X**2 / (N * (2 * N −1)) IF (N . S .31 70 23.61 10 24. M NHIET DO = .26 80 23.74 260 13.18 100 22.3.03 300 12. 2) NhËp sè liÖu vÒ ®é s©u vµ nhiÖt ®é vµo m¸y tÝnh. SIN (X) ** 2 FORMAT (1X .66 5 24.97 30 24.N=1 THEM = X ** 2 5 4 S = S + THEM IF (MOD (N . th«ng b¸o lªn mµn h×nh kÕt qu¶ néi suy d­íi d¹ng nh­ sau: DO SAU = .LE.87 200 16. 3) Néi suy gi¸ trÞ nhiÖt ®é t¹i ®é s©u cÇn t×m vµ in kÕt qu¶ lªn mµn h×nh.7) N=N+1 THEM = − THEM * 2.

71 1200 6. c¸c gi¸ trÞ quan tr¾c nhiÖt ®é ®­îc cho chØ t¹i 32 ®é s©u gäi lµ 32 ®iÓm nót.56 700 8.44 N = 32 K=1 Khèi 2 §äc H (K) §äc T (K) K=K+1 ↓ ↓ ↓ H×nh 4.7. NÕu bÊt ®¼ng thøc kh«ng tháa m·n. L­u ®å khèi 2 (thÝ dô 8) . Nh­ ®· thÊy. ®Ó t×m i . ta ph¶i gi¶ sö i = 1 vµ kiÓm tra bÊt ®¼ng thøc kÐp trªn ®©y.nhËp chuçi ®é s©u vµ nhiÖt ®é K>N T → F B©y giê ta cô thÓ hãa thªm khèi thø 3 vµ sau ®ã dÉn ch­¬ng tr×nh Fortran hoµn chØnh cña bµi to¸n nµy. trong ®ã i cã thÓ biÕn thiªn tõ 1 ®Õn 31. th× ta t¨ng i lªn mét ®¬n vÞ vµ tiÕp tôc cho tíi khi bÊt ®¼ng thøc tháa m·n.49 800 7. Gäi ®é s©u cÇn néi suy nhiÖt ®é lµ h0 .83 900 7. Gi¶ sö ®é s©u nµy n»m gi÷a c¸c ®é s©u nót hi vµ hi +1 .§é s©u NhiÖt ®é 500 9.39 600 8. 107 108 . tøc tháa m·n bÊt ®¼ng thøc kÐp: hi ≤ h0 ≤ hi +1 .16 1400 5. Nh­ vËy. Muèn néi suy gi¸ trÞ nhiÖt ®é t¹i ®é s©u bÊt kú ta cÇn t×m xem ®é s©u ®ã n»m gi÷a hai nót nµo.27 1000 6.

T0.Khèi 3 I=1 ↓ T H (I +1) ≥ H0 ≥ H (I) F ↓ I=I+1 ↓ → T0 = T(I) + (T(I +1)-T(I)) × (H0 . K REAL H0. H0 In lêi nh¾c vµ nhËp 32 cÆp gi¸ trÞ ®é s©u vµ nhiÖt ®é N = 32 109 110 C . ' NHAP DO SAU XAC DINH NHIET DO' READ *.néi suy gi¸ trÞ nhiÖt ®é vµ in kÕt qu¶ Khi t×m ®­îc i . T0 H×nh 4. D­íi ®©y lµ ch­¬ng tr×nh cña bµi to¸n INTEGER N.8.H(I)) / (H(I +1)-H(I)) ↓ In H0.8. T (40) C In lêi nh¾c vµ nhËp ®é s©u cÇn néi suy nhiÖt ®é PRINT * . H (40). hi +1 − hi TÊt c¶ nh÷ng ®iÒu võa ph©n tÝch ®­îc thÓ hiÖn trªn l­u ®å khèi ë h×nh 4. I. gi¸ trÞ t 0 cÇn néi suy cã thÓ tÝnh theo c«ng thøc néi suy tuyÕn tÝnh nh­ sau: t0 = ti + (t i +1 − t i ) ( h0 − hi ) . L­u ®å khèi 3 (thÝ dô 8) .

T(K) K = K +1 IF (K . H(N)) GOTO 1 I=1 2 IF (H0 .2 I =1 DONE = . ‘ M’) 6 FORMAT (1X. Bµi tËp 1.1.LE. H(K). K READ *. Bµi to¸n dï lín.GE. H (I+1)) GOTO 1 I=I+1 GOTO 2 1 T0 = T(I) + (T(I+1)-T (I))*(H0-H(I)) / (H(I+1)-H(I)) PRINT 3.1.GT. 2. T0 3 FORMAT (1X.1. ‘DO SAU = ‘. Cßn chän c«ng cô gi¶ tr×nh hay l­u ®å lµ tuú thÝch.AND.GT. trùc quan. Cho c¸c gi¸ trÞ: A = 2. cã cÊu tróc phøc t¹p còng trë nªn s¸ng tá.2 111 B = −1. 112 C . H0 . 4 Tõ thêi ®iÓm nµy sinh viªn cÇn rÌn luyÖn cho m×nh thãi quen ¸p dông ph­¬ng ph¸p trªn ngay c¶ víi nh÷ng bµi tËp ®¬n gi¶n còng nh­ víi nh÷ng bµi to¸n t­¬ng ®èi phøc t¹p khi thiÕt kÕ thuËt gi¶i. N) GOTO 4 GOTO 5 Néi suy gi¸ trÞ nhiÖt ®é t¹i ®é s©u H0 I=N -1 IF (H0 .TRUE.’NHIET DO = ‘. ’ DO C’) END Qua thÝ dô ë môc 4. H0 PRINT 6.3 vµ nh÷ng thÝ dô ë ch­¬ng nµy ta thÊy viÖc ¸p dông quy tr×nh 5 b­íc gi¶i bµi to¸n vµ chiÕn l­îc chia khèi vµ chi tiÕt ho¸ tõng khèi ®Ó ph¸t triÓn thuËt gi¶i lµ mét c«ng cô lËp tr×nh rÊt hiÖu qu¶. F5. H·y thÓ hiÖn b»ng gi¶ tr×nh hoÆc l­u ®å thuËt to¸n s¾p xÕp c¸c phÇn tö cña m¶ng mét chiÒu theo thø tù gi¶m dÇn. ‘ NHAP DO SAU VA NHIET DO TANG ‘. H (I) .5 K =1 PRINT *. F6.

B2) I .EQ. víi x cho tr­íc. 5 4) I . 10.4 x y x y b¶ng 4.GE.1 24.3 11. C¸c c«ng thøc chuyÓn ®æi nh­ sau: TF = TR − 459.3 23.8 16.LT.0 31.4 19.5 A + B .3 3. I −5 A − B . (A .NOT.3 6. 1 15 B¶ng 4. 2 * B) (A .LT.1 15.OR.7 3.7 12.NEQV. (B . 5.7 6.67 o R 9 TF = TC + 32 o F 5 9 TR = T K 5 5.0 7. Theo ng­êi dïng chØ ®Þnh ph­¬ng ¸n chuyÓn ®æi mµ in ra nhiÖt ®é ®· cho vµ kÕt qu¶ chuyÓn ®æi kÌm c¸c ký hiÖu nhiÖt ®é t­¬ng øng.3 9.0) .3 13. 2) .7 4.1 4. 4.4).5 27.LE. B 6) .GT.7 7. 1. DONE 3.NE. ViÕt ch­¬ng tr×nh cho phÐp ®äc vµo tõ bµn phÝm mét trÞ sè cña x vµ x¸c ®Þnh trÞ sè cña hµm y b»ng c¸ch néi suy tuyÕn tÝnh theo b¶ng gi¸ trÞ thùc nghiÖm (thÝ dô 113 114 .1 20.4. liÖt kª trªn mµn h×nh ba ph­¬ng ¸n chuyÓn ®æi: sang ®é Fahrenheit.9 28. ViÕt ch­¬ng tr×nh tÝnh tÝch ph©n I = ∫ y ( x )dx víi hµm y (x ) cho d­íi d¹ng b¶ng c¸c gi¸ trÞ thùc nghiÖm nh­ trong b¶ng 4.7 10.7 13.3 2. DONE A .3 15.X¸c ®Þnh gi¸ trÞ cña c¸c biÓu thøc l«gic sau ®©y: 1) 3) 5) 7) 8) 9) A .0 3. y= 3  x khi x > 0. ViÕt ch­¬ng tr×nh ®äc tõ bµn phÝm mét trÞ sè nhiÖt ®é Celsius.GE.GT. B .3 7.0) (ABS (I) . ViÕt ch­¬ng tr×nh tÝnh gi¸ trÞ cña y theo c«ng thøc  x 2 khi x ≤ 0.9 8.2 12.AND. 6. Kelvin vµ Rankin.8 11.LT.

00 12.83 15. t×m vµ in lªn mµn h×nh ­íc sè chung lín nhÊt cña nh÷ng sè ®ã d­íi d¹ng th«ng b¸o: USCLN CUA CAC SO: 36 VA 24 BANG 12 vµ kÕt thóc khi nµo ng­êi dïng nhËp vµo hai sè b»ng nhau hoÆc mét trong hai sè b»ng 1.26 9. NÕu t×m ®­îc nghiÖm víi ®é chÝnh x¸c ®· cho th× in gi¸ trÞ nghiÖm kÌm theo sè b­íc lÆp.07 13.18 9. (Gîi ý: Theo ph­¬ng ph¸p lÆp Seidel.53 5° 15. 10.27 8. XÊp xØ ban ®Çu x0 vµ sai sè cho phÐp ε ®­îc cho tr­íc. qu¸ tr×nh nµy tiÕp diÔn cho ®Õn khi chªnh lÖch gi÷a hai b­íc xÊp xØ liÒn nhau kh«ng lín h¬n ε th× ng­êi ta chÊp nhËn gi¸ trÞ xÊp xØ cuèi cïng lµm nghiÖm cña ph­¬ng tr×nh x = f (x ) .23 10..5 §é muèi 0 5 10 15 20 25 0° 17.79 10° 13.73 15° 11.27 10.28 15.54 11.12 12.67 8. LËp l­u ®å thuËt gi¶i ®Ó gi¶i gÇn ®óng ph­¬ng tr×nh x = f (x ) b»ng ph­¬ng ph¸p lÆp Siedel..28 13.59 9.19 15..10 13.52 8.68 10.64 18.53 15.. 115 116 . HÖ sè nhít ph©n tö ( g ⋅ cm −1 ⋅ s−1 ) cña n­íc biÓn phô thuéc vµo nhiÖt ®é t (°) vµ ®é muèi S (%o) theo b¶ng 4.82 9.47 10.58 25° 8. ViÕt ch­¬ng tr×nh tÝnh sè π theo c«ng thøc khai triÓn chuçi sau ®©y víi sai sè kh«ng qu¸ 0.43 30 35 18. ViÕt ch­¬ng tr×nh néi suy tuyÕn tÝnh b¶ng nµy cho mét cÆp trÞ sè bÊt kú cña t o vµ S .17 8.03 20° 10.06 18.20 13. ViÕt ch­¬ng tr×nh cho phÐp liªn tôc nhËp tõ bµn phÝm hai sè nguyªn bÊt kú.39 15.00 8.0001: π 1 1 1 1 = 1 − + − + . sau ®ã kiÓm tra nÕu kh¸c nhau gi÷a x1 vµ x0 lín h¬n sai sè cho phÐp ε th× gi¸ trÞ x1 l¹i ®­îc thÕ vµo vÕ ph¶i vµ tiÕp tôc tÝnh x2 (xÊp xØ bËc 2).93 16.18 10.5.94 18. ng­êi ta thÕ gi¸ trÞ x0 tuú chän vµo biÓu thøc f (x) ë vÕ ph¶i cña ph­¬ng tr×nh x = f (x ) ®Ó tÝnh ra gi¸ trÞ x1 − gäi lµ xÊp xØ bËc 1. cßn nÕu sau 100 lÇn lÆp mµ ch­a nhËn ®­îc nghiÖm th× th«ng b¸o lªn mµn h×nh dßng ch÷ 'KHONG TIM DUOC NGHIEM'.09 8. 8.48 30° 8..58 9.77 11.7.40 10.41 18.35 9. 4 3 5 7 9 B¶ng 4.34 8.95 9.18 18.45 11.57 13.08 9.30 18.09 10.84 14.41 13.90 12.66 15.68 11..

lim . Vßng lÆp DO 5. Vßng lÆp nµy cã nh÷ng ®Æc ®iÓm sau: 1) Tr­êng hîp biÓu thøc l«gic cã gi¸ trÞ .TRUE. Trong ch­¬ng tiÕp sau sÏ xÐt mét tÝnh n¨ng quan träng cña vßng lÆp DO. 2) Trong nhãm lÖnh tõ lÖnh 1 ®Õn lÖnh m bªn trong vßng lÆp nhÊt thiÕt ph¶i cã mét lÖnh nµo ®ã lµm thay ®æi gi¸ trÞ cña biÓu thøc l«gic thµnh . lim − gi¸ trÞ 117 118 . vËy sè lÇn lÆp phô thuéc vµo gi¸ trÞ khëi ®Çu cña biÓu thøc l«gic vµ sù biÕn ®æi gi¸ trÞ cña nã bªn trong chÝnh vßng lÆp.. th× nhãm lÖnh tõ lÖnh 1 ®Õn lÖnh m lÇn l­ît thùc hiÖn. ®Ó tæ chøc nhËp.Ch­¬ng 5 CÊu tróc lÆp víi lÖnh DO Trong ch­¬ng 4 ®· xÐt sù ®iÒu khiÓn ®­îc thùc hiÖn th«ng qua nh÷ng lÖnh cho phÐp ch­¬ng tr×nh chän nh÷ng nh¸nh kh¸c nhau ®Ó thùc hiÖn. 5.1. Có ph¸p cña lÖnh DO vµ vßng lÆp DO D¹ng tæng qu¸t cña lÖnh DO nh­ sau: DO n ind = ini . gäi lµ vßng lÆp Èn. nh­ng lÖnh GOTO ë cuèi lu«n lu«n chuyÓn ®iÒu khiÓn lªn nh·n n vµ h×nh thµnh vßng lÆp. ini − gi¸ trÞ ®Çu g¸n cho chØ sè ®Õm.1. Trong bµi nµy ta xÐt mét cÊu tróc lÆp kh¸c mµ ®iÒu kiÖn vµ sè lÇn lÆp ®­îc x¸c ®Þnh ngay tõ khi b¾t ®Çu qu¸ tr×nh lÆp víi viÖc sö dông vßng lÆp DO (DO Loop).1. §ång thêi.. xuÊt c¸c biÕn cã chØ sè rÊt hay gÆp trong thùc tiÔn. ngay tõ ®Çu. LÖnh m GOTO n END IF CÊu tróc nµy gäi lµ vßng lÆp cã ®iÒu kiÖn (While Loop): Khi vµ chõng nµo biÓu thøc l«gic trong lÖnh IF cã gi¸ trÞ . ta còng ®· mét sè lÇn sö dông kÕt hîp lÖnh IF l«gic vµ lÖnh chuyÓn ®iÒu khiÓn v« ®iÒu kiÖn GOTO ®Ó tæ chøc nh÷ng vßng lÆp d¹ng: n IF (BiÓu thøc l«gic) THEN LÖnh 1 LÖnh 2 .FALSE.FALSE.. inc trong ®ã h»ng n lµ nh·n cña lÖnh kÕt thóc cña vßng lÆp. ind − lµ mét biÕn sè ®­îc dïng nh­ lµ chØ sè ®Õm vßng lÆp. th× qu¸ tr×nh lÆp sÏ kh«ng x¶y ra.

gi¸ trÞ cuèi vµ gia sè gäi lµ c¸c tham sè cña vßng lÆp. LÖnh kÕt thóc vßng lÆp th­êng dïng lµ lÖnh CONTINUE.cuèi dïng ®Ó x¸c ®Þnh khi nµo vßng lÆp DO kÕt thóc vµ inc − gia sè. NÕu trong lÖnh DO kh«ng ghi gia sè th× ngÇm ®Þnh lµ 1.0 DO 10 NUM = 1. + 49 + 50 i =1 50 ®Ó minh häa vßng lÆp DO vµ so s¸nh nã víi vßng lÆp While mµ ta ®· xÐt ë bµi tr­íc: Vßng lÆp DO SUM = 0. . . 50 SUM = SUM + NUM 10 CONTINUE 10 Vßng lÆp While SUM = 0. 50) THEN SUM = SUM + NUM NUM = NUM + 1 GO TO 10 END IF 119 120 .LE.0 NUM = 1 IF (NUM . lim .. Khi gi¸ trÞ cña chØ sè ®Õm lín h¬n gi¸ trÞ cuèi th× ®iÒu khiÓn ®­îc chuyÓn cho lÖnh ®øng sau lÖnh kÕt thóc vßng lÆp. gi¸ trÞ ®­îc céng vµo chØ sè ®Õm mçi lÇn vßng lÆp thùc hiÖn. Nh÷ng gi¸ trÞ ®Çu. VËy d¹ng tæng qu¸t cña vßng lÆp DO cã thÓ viÕt nh­ sau: DO n ind = ini . inc LÖnh 1 . LÖnh m n CONTINUE Ta lÊy thÝ dô gi¶i bµi to¸n tÝnh tæng cña 50 sè nguyªn d­¬ng ®Çu tiªn ∑ i = 1 + 2 + . cã d¹ng tæng qu¸t lµ n CONTINUE trong ®ã nh·n n phï hîp víi nh·n mµ lÖnh DO ë trªn ®· chØ ®Þnh..

nh­ng kh«ng thÓ b»ng kh«ng. Gia sè cã thÓ lµ sè d­¬ng. Tuy nhiªn. LÖnh m END DO 5. trong vßng lÆp While ë mçi lÇn lÆp biÓu thøc l«gic lu«n ph¶i ®­îc ­íc l­îng l¹i v× mçi lÇn biÕn NUM ®­îc thay bëi gi¸ trÞ míi. chØ sè ®Õm chøa mét gi¸ trÞ v­ît qu¸ gi¸ trÞ cuèi. nh­ng c¶ hai tÝnh cïng mét gi¸ trÞ cña biÕn SUM. Khi ®ã gi¸ trÞ cña chØ sè ®Õm sÏ b»ng gi¸ trÞ ngay tr­íc khi tho¸t. 4) Sù kiÓm tra kÕt thóc lÆp thùc hiÖn ë ®Çu vßng lÆp. th× ta cÊu tróc l¹i vßng lÆp theo kiÓu vßng lÆp While ®Ó gi÷ tÝnh cÊu tróc cña ch­¬ng tr×nh). Nh÷ng quy t¾c cÊu tróc vµ thùc hiÖn vßng lÆp DO 1) ChØ sè ®Õm ph¶i lµ mét biÕn sè. 5) Kh«ng ®­îc thay ®æi gi¸ trÞ cña chØ sè ®Õm b»ng mét lÖnh nµo kh¸c bªn trong vßng DO trong khi thùc hiÖn vßng lÆp. inc LÖnh 1 . Trong khi ®ã ë vßng lÆp DO sè lÇn lÆp ®· ®­îc tÝnh tr­íc trong lÖnh DO. sù lÆp sÏ kÕt thóc khi gi¸ trÞ chØ sè ®Õm nhá h¬n gi¸ trÞ cuèi. 2) C¸c tham sè cña vßng DO cã thÓ lµ h»ng. 8) Ta cã thÓ tho¸t ra khái vßng DO tr­íc khi nã kÕt thóc lÆp.2. biÕn hay biÓu thøc nguyªn hoÆc thùc. 7) NÕu gia sè lµ ©m. c¸c lÖnh bªn trong vßng lÆp bÞ bá qua vµ ®iÒu khiÓn chuyÓn tíi lÖnh ®øng sau lÖnh cuèi cïng cña vßng lÆp. 9) Thùc hiÖn xong vßng lÆp. LÖnh CONTINUE lµ mét lÖnh thùc hiÖn chuyªn dïng lµm lÖnh cuèi vßng.Trong vßng lÆp DO trªn ®©y chØ sè ®Õm NUM ®­îc khëi x­íng b»ng 1. 6) Sau khi vßng lÆp ®· b¾t ®Çu thùc hiÖn th× nh÷ng thay ®æi c¸c gi¸ trÞ cña c¸c tham sè kh«ng cã ¶nh h­ëng g× tíi sù lÆp.1. (Nh­ng nãi chung kh«ng nªn lµm ®iÒu nµy. Ta thÊy r»ng vßng lÆp DO viÕt ng¾n gän h¬n vßng lÆp While. biÕn ®ã cã thÓ lµ kiÓu nguyªn hoÆc thùc. lim .. V× tham sè thø ba bá qua nªn NUM tù ®éng t¨ng lªn 1 ë cuèi mçi lÇn lÆp. 10) Bao giê còng ®i vµo vßng lÆp th«ng qua lÖnh DO ®Ó vßng lÆp ®­îc khëi x­íng mét c¸ch ®óng ®¾n. Vßng tiÕp tôc lÆp cho ®Õn khi gi¸ trÞ cña NUM lín h¬n 50. sè ©m. Kh«ng bao giê ®­îc dïng lÖnh GO TO chuyÓn tõ bªn ngoµi 121 122 . lÖnh IF hay mét lÖnh DO kh¸c lµm lÖnh cuèi vßng. 3) Vßng DO cã thÓ dïng bÊt kú lÖnh thùc hiÖn nµo kh«ng ph¶i lµ mét lÖnh chuyÓn ®iÒu khiÓn. NÕu ta muèn tho¸t ra khái vßng lÆp tr­íc khi nã kÕt thóc mét c¸ch tù nhiªn. nh­ng nãi chung nªn dïng lÖnh CONTINUE ®Ó chØ cuèi vßng lÆp mét c¸ch t­êng minh.. NÕu gi¸ trÞ ®Çu cña chØ sè ®Õm lín h¬n gi¸ trÞ cuèi vµ gia sè lµ sè d­¬ng th× sù lÆp kh«ng diÔn ra. mÆc dï cã thÓ dïng nh÷ng lÖnh kh¸c. §ã lµ sù kh¸c nhau c¬ b¶n cña hai lo¹i vßng lÆp. Ng­êi ta còng cã thÓ dïng có ph¸p sau ®©y cho vßng lÆp DO: DO ind = ini.. nh­ng kh«ng thÓ lµ biÕn cã chØ sè.

11) Sè lÇn lÆp cã thÓ tÝnh b»ng c«ng thøc  lim -ini   inc  + 1   trong ®ã dÊu ngoÆc vu«ng chØ sù c¾t bá thËp ph©n cña th­¬ng sè.3.. 8X. 10 POLY = 3. ' POLYNOMIAL MODEL' PRINT * PRINT * . F6. ThÝ dô øng dông vßng lÆp DO ThÝ dô 9: LËp vßng lÆp b»ng lÖnh DO. 5. b10 .5 PRINT 10 .5 trªn ®o¹n t tõ 1 ®Õn 10 víi b­íc ∆t = 1 . NÕu gi¸ trÞ nµy ©m th× sù lÆp kh«ng x¶y ra..2) CONTINUE END ThÝ dô 10: T×m phÇn tö cùc ®¹i cña chuçi sè b1 . PRINT * . Ta gi¶i bµi to¸n nµy theo thuËt gi¶i biÓu diÔn bëi gi¶ tr×nh sau: 1) víi i tõ 1 ®Õn 10 nhËp bi 2) bmax ← b1 3) víi i tõ 2 ®Õn 10 nÕu bi > bmax th× bmax ← bi 4) in bmax Tõ gi¶ tr×nh nµy dÔ dµng chuyÓn thµnh ch­¬ng tr×nh Fortran d­íi ®©y: POLYNOMIAL' 123 124 . I2. I .vµo bªn trong vßng DO. 'TIME DO 15 I = 1. LËp b¶ng gi¸ trÞ cña ®a thøc 3 t 2 + 4. POLY 10 15 FORMAT (1X. .. * REAL (I) ** 2 + 4. b2 .1.

1. 1. 10 IF (BMAX .1 ®­îc l­u nh­ mét gi¸ trÞ h¬i nhá h¬n 0.. Khi tæ chøc c¸c vßng DO lång h·y tu©n thñ nh÷ng quy 125 126 .. BMAX END ThÝ dô 11: Tæ chøc vßng lÆp víi b­ íc sè thËp ph©n.1 * (I − 1) Y = SIN (X) PRINT 10 . . 0. 2. . . 1. Ngoµi ra. B (I) 2 CONTINUE BMAX = B (1) DO 3 I = 2.1 ®Ó phßng ngõa hiÖn t­îng c¾t trong m¸y tÝnh. In b¶ng gi¸ trÞ hµm y = sin ( x ) t¹i x = 0. 0..2. mçi lÇn thªm 0. B (I)) BMAX = B (I) 3 CONTINUE PRINT *.0 . 0. Y FORMAT (20X. 11 t­¬ng øng víi x = 0. Ta ®­a ra mét biÕn nguyªn I sao cho biÕn nµy sÏ nhËn c¸c gi¸ trÞ 1.1 cho chØ sè ®Õm.LT.0. 5. trong tr­êng hîp nµy ta cã thÓ thùc hiÖn lÆp qu¸ mÊt mét lÇn theo dù ®Þnh v× gi¸ trÞ giíi h¹n cuèi còng cã thÓ kh«ng chÝnh x¸c b»ng 1. DO 17 I = 1. Vßng DO lång nhau Vßng DO cã thÓ ®­îc lång trong mét vßng DO kh¸c.2. 1.. 10 READ *. 0..2. E10.0 . ' B MAX = ' .REAL B(10) DO 2 I = 1. X... còng gièng nh­ cÊu tróc IF lång trong cÊu tróc IF kh¸c. Gi¶ sö r»ng gi¸ trÞ 0.1.3) 10 17 CONTINUE END H·y l­u ý r»ng ë ®©y ta ®· tr¸nh sö dông vßng lÆp DO víi c¸c tham sè thùc nh­: DO 15 X = 0.1 (i − 1) . 10X. m¸y cã thÓ thªm Ýt h¬n theo dù ®Þnh.2. F4. Khi ®ã x = 0.. 11 X = 0. 0..1 trong hÖ m¸y tÝnh ®ang dïng.

10.. 4) Khi mét vßng DO lång bªn trong mét vßng DO kh¸c. 2 DO 15 K = 2. 10.. 2 . 10 CONTINUE . ViÕt ch­¬ng tr×nh nhËp 15 phÇn tö cña m¶ng sè thùc X. thËm chÝ khi chóng cïng n»m trong mét vßng DO ngoµi. 2) Vßng DO lång ph¶i kÕt thóc bªn trong vßng DO ngoµi. 15 CONTINUE 20 CONTINUE ThÝ dô 12: Tæ chøc vßng DO lång nhau. 10 CONTINUE DO 15 K = 2. 3) C¸c vßng DO ®éc lËp nhau cã thÓ dïng cïng chØ sè ®Õm... 127 128 DO 15 I = 1. 5 CONTINUE 10 CONTINUE 15 CONTINUE b) Nh÷ng vßng DO sai: . 2 ... nh­ng ta nªn kÕt thóc mçi vßng b»ng mét lÖnh CONTINUE riªng biÖt ®Ó lµm s¸ng râ ch­¬ng tr×nh. 5) MÆc dï c¸c vßng DO lång cã thÓ dïng cïng mét dßng lÖnh cuèi CONTINUE.... 8 DO 5 K = 2. 10. 10.. 5 CONTINUE 15 CONTINUE . 5 DO 10 K = 1. 2 . 5 DO 10 J = 1. 5 CONTINUE 15 CONTINUE DO 20 J = 1.. th× vßng DO trong thùc hiÖn trän vÑn tõng lÇn lÆp ë vßng DO ngoµi. D­íi ®©y dÉn mét sè thÝ dô vÒ c¸c vßng DO ®óng vµ c¸c vßng DO sai: a) Nh÷ng vßng DO ®óng: DO 15 I = 1.t¾c sau ®©y: 1) Vßng DO lång bªn trong kh«ng thÓ dïng chÝnh chØ sè ®Õm cïng víi vßng DO ngoµi chøa nã. 8 DO 15 I = 1. 8 DO 5 K = 2. 5 DO 10 J = 1. 2 . 10. 10 CONTINUE DO 5 K = 2. 5 DO 10 J = 1. 8 . s¾p xÕp l¹i c¸c phÇn tö m¶ng theo thø tù gi¶m dÇn vµ in lªn mµn h×nh c¸c m¶ng cò vµ míi thµnh hai cét....

vßng DO nµy lµ vßng DO lång. N (dßng thø 3) (dßng thø 7) (dßng thø 18) do ®ã. N−1 K=I DO 4 J = I + 1. Bªn trong vßng DO thø hai. ta thÊy xuÊt hiÖn mét vßng DO thø t­: DO 4 J = I + 1. N READ * . X (I). Y (J)) K = J CONTINUE IF (K . N DO 2 I =1. 2F10. Y (I) CONTINUE FORMAT (1X. N−1 DO 7 I = 1.LT.NE.2) END Trong thÝ dô nµy. chóng cã thÓ dïng cïng mét chØ sè ®Õm lµ biÕn I.3 4 2 7 5 REAL X(15). N (dßng thø 9). N PRINT 5 . nã ph¶i cã chØ sè ®Õm riªng vµ ta dïng lÖnh kÕt thóc nã lµ lÖnh 129 130 . X (I) Y (I) = X (I) CONTINUE DO 2 I = 1. Y(15) N = 15 DO 3 I =1. ta thÊy cã mÆt ba vßng DO ®éc lËp nhau: DO 3 I =1. N IF (Y (K) . I) THEN TG = Y (I) Y (I) = Y (K) Y (K) = TG END IF CONTINUE DO 7 I = 1.

0) CONTINUE END 5 7 Trong ch­¬ng tr×nh nµy. PRINT 4 4 * FORMAT (1X.718282 .718282)** I FORMAT (1X.0. Gi¸ trÞ cña giai thõa cña sè nguyªn N còng cßn ®­îc ­íc l­îng b»ng c«ng thøc Stirling cã d¹ng: N N ! = 2π N   e N trong ®ã e = 2. T12. ch÷ STIRLING'S FORMULA b¾t ®Çu ë vÞ trÝ thø 131 132 . N! ë vÞ trÝ 12 vµ 13. 10 IF (I . T16 trong dßng lÖnh 4 FORMAT chØ ®Þnh xuÊt ch÷ N ë vÞ trÝ 3. 'STIRLING''S FORMULA' /) FAC = 1. 'N'. biÓu thøc N ! gäi lµ giai thõa cña N . FAC. nªn giai thõa cña mét sè sau ®­îc tÝnh b»ng tÝch cña sè ®ã nh©n víi giai thõa cña sè tr­íc nã. H·y chó ý c¸ch dïng dÊu g¹ch chÐo ®Ó t¹o xuèng dßng khi in tiªu ®Ò: hai dÊu g¹ch chÐo ®Çu chØ ®Þnh cho lÖnh PRINT in xong dßng ch÷ GIAI THUA CUA CAC SO TU 0 DEN 10 th× xuèng dßng hai lÇn. Khi sè nguyªn N kh«ng ©m.4 CONTINUE ®Ó nhÊn m¹nh sù ph©n biÖt víi vßng DO ngoµi cã lÖnh kÕt thóc lµ 2 CONTINUE ThÝ dô 13: TÝnh giai thõa. C¸c gi¸ trÞ cña giai thõa ®­îc tÝnh theo quy luËt: 0 != 1 1! = 1 2 != 1 × 2 = 2 3!= 1 × 2 × 3 = 6 . T12. I2.. 1) FAC = FAC * I PRINT 5.*3. ViÕt ch­¬ng tr×nh in c¸c gi¸ trÞ giai thõa cña c¸c sè nguyªn tõ 0 ®Õn 10 theo c¸ch tÝnh chÝnh x¸c vµ theo c«ng thøc ­íc l­îng cña Stirling. F20. F10. .141593*I)*(I / 2. I. sau khi in dßng tiªu ®Ò cét. C¸c ®Æc t¶ T3. 'GIAI THUA CUA CAC SO TU 0 DEN 10' //1X. v× giai thõa ®­îc tÝnh liªn tôc víi c¸c sè tõ 0 ®Õn 10. T3.GT. 'N!'. DO 7 I = 0. SQRT (2. T16. dÊu g¹ch chÐo thø ba g©y xuèng dßng mét lÇn ®Ó chuÈn bÞ in d÷ liÖu theo dßng lÖnh in trong vßng lÆp DO.

25 2) DO 10 COUNT = -4. 6. 3 6. 10 3628800. 432. 4980. 359537. −1 5) DO 10 TIME = 50. Gi¶ thiÕt r»ng c¸c chØ sè ®Õm lµ nh÷ng biÕn nguyªn: 1) DO 5 I = 1. 2 2. 3 6) DO 10 IND = 72. Mét hßn ®¸ ®­îc nÐm víi tèc ®é ban ®Çu v vµ nghiªng mét gãc θ so víi mÆt ®Êt. 15. −1 IDEM = IDEM + 2 5 CONTINUE 5 2) DO 5 IDEX =0. 4 2. NÕu bá qua lùc c¶n ma s¸t víi kh«ng khÝ th× kho¶ng c¸ch d theo chiÒu ngang kÓ tõ vÞ trÝ ban ®Çu vµ ®é cao h (tÝnh b»ng mÐt) cña nã t¹i thêi gian t (gi©y) biÓu thÞ b»ng c¸c ph­¬ng tr×nh sau: 133 134 . 24. 5 120. 710. 0 1. 1 1. KÕt qu¶ xuÊt ra cña ch­¬ng tr×nh nµy sÏ cã d¹ng d­íi ®©y: GIA TRI GIAI THUA CAC SO TU 0 DEN 10 N N! STIRLING'S FORMULA 0. 5 IDEM = IDEM + (−1) **M 5 CONTINUE 3) 4) 3. Bµi tËp 1. 1. 8 3) DO 10 K = 15. 4 24. 250. 7 IDEM = IDEM − 2 CONTINUE DO 5 M = 5.16 cña dßng tiªu ®Ò cét. 2. 8 40320. 39902. X¸c ®Þnh gi¸ trÞ cña biÕn nguyªn IDEM sau khi nh÷ng vßng DO d­íi ®©y thùc hiÖn xong. 0. TÝnh sè lÇn lÆp trong c¸c tr­êng hîp dïng lÖnh DO sau ®©y. 1) 5 DO 5 I = 1. 3. 4 4) DO 10 TIME = −5. 9 362880. 7 5040. 8 IDEM = IDEM + 1 CONTINUE DO 5 NUM = 8. Gi¶ sö biÕn nµy ®­îc g¸n gi¸ trÞ kh«ng tr­íc mçi vßng lÆp. 3598694. 6 720. 118.

m y . σ xσ y 6. Dx = ∑ xi2 i =1 n n −1 2 − mx . 5. 2 trong ®ã g − gia tèc träng lùc ( 9. y σ x = Dx − m xm y r = n −1 . 4. b = m y − amx . ViÕt ch­¬ng tr×nh ®äc vËn tèc ban ®Çu vµ gãc vµ sau ®ã in b¶ng c¸c kho¶ng c¸ch vµ ®é cao cña hßn ®¸ víi thêi gian c¸ch nhau 0. H·y viÕt ch­¬ng tr×nh tÝnh c¸c ®Æc tr­ng thèng kª: trung b×nh m x .4 (trang 79). H·y tæ chøc l¹i c¸c vßng lÆp trong thÝ dô 13 b»ng c¸ch sö dông kÕt hîp lÖnh IF l«gic vµ lÖnh chuyÓn ®iÒu khiÓn v« ®iÒu kiÖn GOTO. trong ®ã: a= σy σx r. σ y . Ph©n tÝch sù kh¸c nhau cña hai c¸ch tæ chøc vßng lÆp. hÖ sè t­¬ng quan r gi÷a hai ®¹i l­îng vµ lËp ph­¬ng tr×nh håi quy d¹ng: y=a x+b.25 gi©y cho tíi khi ®é cao trë thµnh gi¸ trÞ ©m. tøc lóc hßn ®¸ r¬i xuèng mÆt ®Êt. D y .8 m/s 2 ). ViÕt ch­¬ng tr×nh tÝnh trÞ gÇn ®óng cña tÝch ph©n ∑ xi yi i =1 I = ∫ x 2 sin xdx a b 135 136 . mx = ∑ xi i =1 n n . σ x = Dx my = ∑ yi i =1 n n . ph­¬ng sai D x . Dy = n ∑ yi2 i =1 n n −1 − m2 . ®é lÖch b×nh ph­¬ng trung b×nh σ x . h = v t sin θ − 1 2 gt . Gi¶ sö c¸c gi¸ trÞ quan tr¾c hai ®¹i l­îng x vµ y ®­îc cho nh­ trong b¶ng 4.d = v t cos θ .

ch÷ sè ®Çu chØ sè thø tù dßng vµ ch÷ sè sau chØ sè thø tù cét.5 vµ b = 1. th¼ng cét. 2! 4! 6! 8. x¸c ®Þnh sè h×nh thang cÇn chia ®Ó ®¹t sai sè ®ã.theo c«ng thøc h×nh thang víi sai sè kh«ng lín h¬n 0.5000 a 2 a 4 a6 + − + ..0001 theo c«ng thøc khai triÓn sau ®©y: cos a = 1 − In kÕt qu¶ lªn mµn h×nh thµnh mét dßng nh­ sau (thÝ dô): A = 60.9604 7. In ma trËn ®ã lªn gi÷a mµn h×nh d­íi d¹ng b¶ng sè th¼ng dßng.5 ): A = 0. Ch­¬ng tr×nh cho phÐp nhËp tõ bµn phÝm c¸c cËn tÝch ph©n vµ in kÕt qu¶ lªn mµn h×nh thµnh c¸c dßng nh­ sau (thÝ dô nÕu a = 0. thÝ dô: 11 21 31 41 51 61 12 22 32 42 52 62 13 23 33 43 53 63 14 24 34 44 54 64 Ch­¬ng 6 137 138 . ®æi gãc ®ã thµnh ra®ian vµ tÝnh gi¸ trÞ gÇn ®óng cña cos a víi ®é chÝnh x¸c tíi 0.5 SO HINH THANG = 16 TICH PHAN BANG = 0.. Sau ®ã tÝnh c¸c phÇn tö cña ma trËn sao cho mçi phÇn tö lµ mét sè nguyªn gåm hai ch÷ sè. ViÕt ch­¬ng tr×nh cho phÐp nhËp tõ bµn phÝm hai sè nguyªn (nhá h¬n 10) tuÇn tù chØ sè dßng vµ sè cét cña mét ma trËn. ViÕt ch­¬ng tr×nh cho phÐp nhËp tõ bµn phÝm mét gãc a tÝnh b»ng ®é.000 (DO) cos A = 0.5 B = 1.0001.5000 cos A theo hµm chuÈn = 0.

. PhÇn më réng nµy ®øng sau phÇn tªn chÝnh cña file vµ ng¨n c¸ch b»ng dÊu chÊm.2 v. Ngoµi ra. d÷ liÖu (th­êng lµ nh÷ng gi¸ trÞ sè) còng cã thÓ do mét thiÕt bÞ quan tr¾c cã bé phËn ghi l­u vµo ®Üa tõ. ThÝ dô. nÕu trong khi ch¹y ch­¬ng tr×nh mµ ta gâ nhÇm sè liÖu th× ph¶i ch¹y l¹i ch­¬ng tr×nh tõ ®Çu vµ ®­¬ng nhiªn ph¶i nhËp l¹i sè liÖu mét lÇn n÷a.1. 139 140 . nªn cã thªm nh÷ng th«ng tin vÒ tªn tr¹m. C«ng viÖc ®ã tá ra rÊt mÖt mái vµ kh«ng tèi ­u. th× ngoµi nh÷ng gi¸ trÞ sè cña c¸c tham sè ®ã. cßn gäi lµ ®u«i file. Tªn file ®­îc ®Æt tu©n theo quy t¾c tªn nh­ ®èi víi c¸c biÕn. ®¸p øng viÖc xö lý nhiÒu môc ®Ých. víi file chøa nh÷ng sè liÖu c¸c tham sè khÝ t­îng thuû v¨n ë mét tr¹m quan tr¾c nµo ®ã. th¸ng 2. Trong ch­¬ng nµy chóng ta sÏ nghiªn cøu nh÷ng lÖnh cña Fortran thao t¸c víi d÷ liÖu. ThÝ dô. ng­êi ta th­êng nhËp d÷ liÖu vµo m¸y mét lÇn vµ l­u trong m¸y (®Üa cøng. File d÷ liÖu lµ file trong m¸y tÝnh chøa nh÷ng th«ng tin cã quan hÖ víi nhau theo mét nghÜa nµo ®ã mµ mét ch­¬ng tr×nh cã thÓ ®äc. t×m hiÓu nh÷ng ®Æc ®iÓm cña chóng ®Ó h×nh thµnh kü thuËt tæ chøc l­u d÷ liÖu trong m¸y tÝnh. trong bµi to¸n ®· xÐt ë thÝ dô 8 (trang 74) ta ph¶i nhËp tõ bµn phÝm hai chuçi gi¸ trÞ ®é s©u vµ nhiÖt ®é gåm vµi chôc sè liÖu ë c¸c tÇng kh¸c nhau (64 sè) chØ ®Ó néi suy mét gi¸ trÞ nhiÖt ®é. Mét nhãm file cã quan hÖ t­¬ng ®èi víi nhau theo nghÜa nµo ®ã cã thÓ ghi chung vµo mét th­ môc.. b. nÕu chóng ta cã nh÷ng sè liÖu quan tr¾c vÒ nhiÖt ®é kh«ng khÝ cña mét sè th¸ng muèn l­u trong mét sè file th× cã thÓ nªn ®Æt tªn c¸c file ®ã lµ NHIET. hay ®Ó mét ch­¬ng tr×nh kh¸c ®äc vµ tiÕp tôc xö lý. mét sè file kh¸c th× cã thÓ ghi trong nh÷ng th­ môc kh¸c. th× h×nh thøc giao tiÕp nµy gi÷a ng­êi vµ m¸y lµ b×nh th­êng. sÏ lµ bÊt tiÖn nÕu ph¶i nhËp d÷ liÖu b»ng tay nh­ vËy mçi lÇn ch¹y ch­¬ng tr×nh. Trong mçi th­ môc l¹i cã thÓ gåm mét sè th­ môc con còng cã tªn cña chóng. Ch­¬ng tr×nh m¸y tÝnh truy cËp ®Õn c¸c file theo tªn cña chóng. cßn phÇn ®u«i cña tªn file nh»m chØ sè liÖu vÒ nhiÖt nh­ng riªng cho th¸ng 1.1. æ cøng m¸y tÝnh theo mét quy c¸ch nµo ®ã sau nµy m¸y tÝnh cã thÓ ®äc ®­îc.v. sau nµy cã thÓ in ra giÊy nh­ lµ mét b¶n b¸o c¸o. hay truy cËp ®­îc nÕu ta muèn ch­¬ng tr×nh xö lý tù ®éng nh÷ng th«ng tin ®ã. ®Üa mÒm. ThÝ dô. XÐt vÒ ph­¬ng diÖn l­u tr÷ d÷ liÖu l©u dµi th× ng­êi ta th­êng cè g¾ng ghi trong file sao cho phong phó th«ng tin. b¨ng tõ. ta ph¶i nhËp ba hÖ sè a.) d­íi d¹ng c¸c tÖp (file). trong qu¸ tr×nh thùc hiÖn ch­¬ng tr×nh. Trong thùc hµnh ng­êi ta th­êng ®Æt tªn file b»ng tËp hîp mét sè ch÷ c¸i vµ ch÷ sè cã ý nghÜa gîi cho ng­êi dïng dÔ nhí ®ã lµ file chøa nh÷ng d÷ liÖu g×. xö lý cña mét ch­¬ng tr×nh m¸y tÝnh. Ngoµi ra. khi nµo cÇn ta ®· sö dông lÖnh READ ®Ó nhËp th«ng tin vµo qua bµn phÝm cho ch­¬ng tr×nh xö lý. sau ®ã ®­îc ghi l¹i thµnh file ®Ó ng­êi sö dông m¸y xem nh­ lµ kÕt qu¶ tÝnh to¸n ®Ó ph©n tÝch. D÷ liÖu còng cã thÓ lµ kÕt qu¶ tÝnh to¸n. h×nh thµnh mét c©y th­ môc. Kinh nghiÖm cho thÊy r»ng viÖc tæ chøc l­u c¸c file trong m¸y tÝnh mét c¸ch cã hÖ thèng. ThÝ dô: khi ch¹y ch­¬ng tr×nh gi¶i ph­¬ng tr×nh bËc hai trong thÝ dô 1 ë ch­¬ng 4. gåm tæ hîp kh«ng qu¸ ba ch÷ c¸i hoÆc ch÷ sè. Ngoµi ra tªn file cßn cã thÓ cã mét phÇn më réng. Nh­ng khi lµm viÖc víi nhiÒu sè liÖu. ë ®©y ngô ý muèn dïng côm ch÷ NHIET ®Ó chØ c¸c file ®ã l­u tr÷ sè liÖu vÒ nhiÖt ®é.File d÷ liÖu vµ tæ chøc file d÷ liÖu trong Fortran 6. thÝ dô mét vµi gi¸ trÞ sè hay mét vµi ký tù v¨n b¶n.. V× vËy. khoa häc sÏ gi¶m nhÑ vµ n©ng cao hiÖu qu¶ c«ng viÖc cña ng­êi sö dông m¸y tÝnh... Víi mét l­îng th«ng tin kh«ng nhiÒu. Trong tr­êng hîp nµy ng­êi sö dông m¸y ph¶i dïng mét phÇn mÒm so¹n th¶o nµo ®ã ®Ó nhËp d÷ liÖu vµo m¸y vµ l­u l¹i d­íi d¹ng c¸c file.. NHIET. Kh¸i niÖm vÒ file d÷ liÖu vµ tæ chøc l­u tr÷ d÷ liÖu ë c¸c ch­¬ng tr­íc. nhËn xÐt. C¸c file trong m¸y tÝnh l¹i cã thÓ ®­îc ghi vµo nh÷ng th­ môc cã tªn kh¸c nhau. c . chÕ biÕn.

STATUS = v¨n b¶n) trong ®ã biÓu thøc nguyªn chØ ®Þnh mét sè hiÖu thiÕt bÞ ®­îc g¸n cho file. cã thÓ ghi tªn c¸c tham sè quan tr¾c mét c¸ch t­êng minh. ta chØ ®Þnh STATUS = 'OLD' nÕu file më ra ®Ó xuÊt. ta sö dông lÖnh READ më réng d­íi d¹ng: READ (Sè hiÖu thiÕt bÞ . NÕu ta t¹o ra mét file b»ng mét ch­¬ng tr×nh. LÖnh OPEN ph¶i ®øng trªn nh÷ng lÖnh READ hoÆc WRITE sö dông file.2. Nh÷ng lÖnh nµy truy cËp ®Õn tªn file mµ ta ®· g¸n khi t¹o lËp file. C¸c lÖnh nhËp. lµm thÕ nµo ®Ó ®äc th«ng tin tõ file d÷ liÖu hiÖn tån t¹i vµ lµm thÕ nµo ®Ó t¹o ra file d÷ liÖu míi trong ch­¬ng tr×nh Fortran mµ chóng ta viÕt.täa ®é tr¹m. file ®· tån t¹i hay chuÈn bÞ t¹o ra.. D¹ng tæng qu¸t cña lÖnh OPEN mµ ta sö dông trong ch­¬ng nµy nh­ sau: OPEN (UNIT = biÓu thøc nguyªn. NÕu mét file chuÈn bÞ ®­îc dïng trong ch­¬ng tr×nh. FILE = tªn file. Ngoµi ra lÖnh OPEN g¾n file ®­îc më víi mét sè hiÖu file ®Ó khi nµo ch­¬ng tr×nh truy cËp file th× nã sö dông sè hiÖu ®ã. NÕu lµ file ®Ó ®äc. LÖnh më file OPEN b¸o cho ch­¬ng tr×nh mét sè th«ng tin cÇn thiÕt vÒ file nh­ tªn file. file ®ã ph¶i ®­îc më ra tr­íc khi cã mét thao t¸c nµo ®ã víi nã. NÕu ta t¹o lËp mét file d÷ liÖu b»ng phÇn mÒm so¹n th¶o. Trong ch­¬ng nµy chóng ta häc c¸ch lµm viÖc víi nh÷ng file d÷ liÖu sè. ta ph¶i dïng mét lÖnh trong ch­¬ng tr×nh cÊp cho file mét tªn nhÊt ®Þnh. dÔ chuyÓn ®æi tõ ®Þnh d¹ng (format) nµy sang ®Þnh d¹ng kh¸c. ta chØ ®Þnh STATUS = 'NEW' cßn STATUS = 'UNKNOWN' cho phÐp më file míi hoÆc ghi ®Ì lªn file ®· tån t¹i. ta g¸n tªn cho file khi nhËp d÷ liÖu. Tuú theo ®Æc ®iÓm vµ kh¶ n¨ng xö lý cña ch­¬ng tr×nh hay phÇn mÒm mµ ng­êi ta ghi c¸c d÷ liÖu trong file sao cho gän. 6. tøc xu thÕ chuÈn ho¸ ®Þnh d¹ng d÷ liÖu ®Ó nhiÒu ch­¬ng tr×nh. dÔ ®äc. file ®ã më ra ®Ó ®äc hay ®Ó ghi d÷ liÖu.. nhiÒu phÇn mÒm cã thÓ ®äc ®­îc. thêi kú quan tr¾c. chóng ta ph¶i dïng nh÷ng lÖnh míi ®Ó thao t¸c víi file vµ nh÷ng më réng ®èi víi mét sè lÖnh ®· nghiªn cøu trong c¸c ch­¬ng tr­íc. tªn file chØ ®Þnh mét tªn mµ ta ®· g¸n cho file khi t¹o lËp ra nã vµ v¨n b¶n STATUS b¸o cho ch­¬ng tr×nh biÕt file më ra ®Ó ®äc hay ®Ó ghi. xuÊt d÷ liÖu víi file §Ó sö dông c¸c file víi ch­¬ng tr×nh cña m×nh. §Ó ®äc file d÷ liÖu. *) Danh s¸ch c¸c biÕn 141 142 .

NÕu mét dßng kh«ng chøa ®ñ c¸c gi¸ trÞ so víi danh s¸ch c¸c biÕn cÇn ®äc trong lÖnh READ. 2. Ta cã thÓ dïng bÊt kú nh÷ng sè hiÖu kh¸c trong c¸c sè nguyªn tõ 1 ®Õn 15 ®Ó chØ ®¬n vÞ file. 3. c¸c file tù ®éng ®ãng l¹i tr­íc khi ch­¬ng tr×nh kÕt thóc. Nh­ng nã ph¶i ®äc tÊt c¶ nh÷ng gi¸ trÞ trªn dßng ë tr­íc gi¸ trÞ mµ ta muèn nã ®äc. ThÝ dô. vµ ®iÒu nµy nªn lµm. ThÝ dô. ta cÇn biÕt c¸c gi¸ trÞ ®· ®­îc ghi trong file nh­ thÕ nµo. §Ó sö dông ®óng lÖnh READ. NÕu cßn thõa c¸c gi¸ trÞ ë dßng tr­íc. lÖnh WRITE cã thÓ sö dông ®Ó xuÊt th«ng tin ra d­íi d¹ng danh s¸ch liÖt kª vµ d­íi d¹ng ghi kh«ng ®Þnh d¹ng hoÆc cã ®Þnh d¹ng: WRITE (Sè hiÖu thiÕt bÞ . th× nh÷ng gi¸ trÞ ®ã bÞ bá qua kh«ng ®äc. C¸c m¸y tÝnh cã thÓ cã mét sè thiÕt bÞ nhËp hoÆc xuÊt ®i kÌm. DÊu sao * ®øng sau sè hiÖu thiÕt bÞ chØ r»ng ta ®ang sö dông c¸ch nhËp vµ xuÊt kh«ng ®Þnh d¹ng (kh«ng format). nÕu m¸y in lazer ®­îc g¸n sè hiÖu 8 th× lÖnh in sau ®©y sÏ ghi gi¸ trÞ cña c¸c biÕn X vµ Y ra m¸y in laser WRITE (8 . *) Danh s¸ch c¸c biÓu thøc WRITE (Sè hiÖu thiÕt bÞ . Sau khi kÕt thóc ®äc hoÆc ghi file. Mçi thiÕt bÞ ®­îc g¸n mét sè hiÖu. Do ®ã kh«ng nªn dïng nh÷ng sè hiÖu thiÕt bÞ ®· g¸n tr­íc nµy cho c¸c file d÷ liÖu. Trong tÊt c¶ c¸c d¹ng tæng qu¸t trªn ®©y sè hiÖu thiÕt bÞ phï hîp víi sè hiÖu thiÕt bÞ ®· g¸n trong lÖnh OPEN. ®ãng file. gäi lµ mét b¶n ghi (record). Y §a sè c¸c hÖ m¸y tÝnh g¸n thiÕt bÞ nhËp chuÈn (bµn phÝm) b»ng sè 5 vµ thiÕt bÞ xuÊt chuÈn (mµn h×nh) b»ng sè 6. Còng cã nh÷ng tr­êng hîp ta muèn chñ t©m ®ãng hay t¸ch mét file khái ch­¬ng tr×nh cña m×nh. gi¶ sö r»ng mçi dßng cña file d÷ liÖu chøa hai sè tuÇn tù biÓu thÞ thêi 143 144 . n ) Danh s¸ch c¸c biÓu thøc trong ®ã n lµ nh·n cña lÖnh FORMAT (®Þnh d¹ng) t­¬ng øng. ta ph¶i ®äc qua c¸c gi¸ trÞ thø nhÊt vµ thø hai ®Ó ®¹t tíi c¸c gi¸ trÞ thø ba vµ thø t­. nh­ng ta kh«ng cÇn ph¶i ®äc gi¸ trÞ thø n¨m. Ta sÏ dïng lÖnh ®ãng file cã d¹ng tæng qu¸t nh­ sau: CLOSE (UNIT = BiÓu thøc nguyªn) Nh÷ng lÖnh më. Mét lÖnh READ kh«ng cÇn ph¶i ®äc tÊt c¶ c¸c gi¸ trÞ trªn dßng d÷ liÖu hiÖn thêi. sÏ ®­îc nh¾c tíi ë nh÷ng n¬i thÝch hîp trong c¸c môc vµ c¸c ch­¬ng sau. *) X. nh÷ng thiÕt bÞ nµy ®· ®­îc dïng ngÇm ®Þnh víi c¸c lÖnh READ * hay PRINT *. Gièng nh­ lÖnh PRINT. th× c¸c dßng d÷ liÖu sau ®ã sÏ tù ®éng ®­îc ®äc cho ®Õn khi ®ñ gi¸ trÞ cho c¸c biÕn liÖt kª trong lÖnh READ. D­íi ®©y tãm t¾t mét sè quy t¾c quan träng cÇn nhí khi ®äc d÷ liÖu tõ c¸c file: 1.§Ó ghi th«ng tin vµo file d÷ liÖu ta sö dông lÖnh WRITE. ThÝ dô nÕu mét file cã 5 gi¸ trÞ ghi trªn mét dßng vµ ta cÇn c¸c gi¸ trÞ thø ba vµ thø t­. Mçi lÖnh READ sÏ b¾t ®Çu ®äc víi mét dßng d÷ liÖu míi. xuÊt nhËp th«ng tin víi file trªn ®©y cßn cã nhiÒu tuú chän bæ sung kh¸c n÷a.

mçi lÇn bæ sung sè liÖu vµo file d÷ liÖu. Sè dßng ghi ®­îc chØ ®Þnh NÕu ta biÕt ch¾c sè dßng ghi. ThÝ dô nµy minh ho¹ sù quan träng cña viÖc kiÓm tra ch­¬ng tr×nh cña chóng ta ®èi víi d÷ liÖu ®· biÕt. Khi xö lý file. nÕu mét file chøa c¸c sè liÖu vÒ thêi gian vµ sè ®o nhiÖt ®é d­íi d¹ng hai cét. Cã tr­êng hîp ta kh«ng biÕt cã bao nhiªu dßng ghi vµ ë cuèi file còng kh«ng cã c¸c gi¸ trÞ ®Æc biÖt ®Ó nhËn biÕt.2 28. Khi ®ã ta ph¶i nhê ®Õn c¸c tuú chän (options) cña lÖnh READ. Khi t¹o lËp file.gian TIME vµ sè ®o nhiÖt ®é TEMP vµ ba dßng ®Çu tiªn ghi nh­ sau: 0. Ta cã thÓ tr¸nh lçi ®ã b»ng c¸ch sö dông th«ng tin vÒ file ®Ó quyÕt ®Þnh xem lo¹i vßng lÆp nµo nªn dïng khi ®äc file.1. *) TIME. ta ph¶i biÕt d÷ liÖu g× ®­îc l­u trong file vµ cô thÓ ghi nh­ thÕ nµo: cã bao nhiªu sè ghi trªn mét dßng vµ c¸c ®¬n vÞ ®o cña mçi gi¸ trÞ.5 (dßng 1) (dßng 2) (dßng 3) th× lÖnh sau ®©y sÏ ®äc ®­îc ®óng mét cÆp gi¸ trÞ thêi gian vµ nhiÖt ®é tõ file d÷ liÖu READ (10. Th«ng tin nµy quan träng. ThÝ dô. Trong tr­êng hîp nµy ch­¬ng tr×nh vÉn lµm viÖc b×nh th­êng nh­ng kÕt qu¶ xö lý sÏ sai.1 0. VÒ sau. 6. Sau ®ã dïng vßng lÆp DO víi biÕn ®ã lµm giíi h¹n cuèi cña vßng lÆp ®Ó ®äc hÕt sè liÖu trong file. nh­ng ta biÕt dßng ghi cuèi cïng chøa nh÷ng gi¸ trÞ ®Æc biÖt lµm cho ch­¬ng tr×nh cña chóng ta cã thÓ kiÓm tra ®­îc. Kü thuËt ®äc c¸c file d÷ liÖu §Ó ®äc c¸c d÷ liÖu tõ file d÷ liÖu. *) TIME READ (10. tr­íc hÕt ta ph¶i biÕt mét sè th«ng tin vÒ file. trong ®ã cã sè dßng ghi (sè sè liÖu) trong file. v× nÕu ta thùc hiÖn mét lÖnh READ sau khi tÊt c¶ c¸c dßng ghi trong file ®· ®­îc ®äc hÕt råi th× sÏ bÞ lçi thùc hiÖn ch­¬ng tr×nh.1 29. NhiÒu khi ta kh«ng biÕt tr­íc cã bao nhiªu dßng ghi trong file. tr­íc khi sö dông nã víi file d÷ liÖu kh¸c. Trong tr­êng hîp nµy ta cã thÓ lËp vßng lÆp While ®Ó ®äc c¸c dßng sè liÖu vµ ®iÒu kiÖn kÕt thóc vßng lÆp nµy lµ hai gi¸ trÞ thêi gian vµ nhiÖt ®é ®Òu b»ng −999. Ta còng ph¶i biÕt trong file cã th«ng tin g× ®Æc biÖt cã Ých ®Ó ph©n ®Þnh ®­îc sè dßng ghi trong file. ta ®äc sè nµy vµo mét biÕn.1.0 vµ gi¸ trÞ cña biÕn TEMP sÏ b»ng 0. nÕu ta biÕt cã 200 dßng ghi trong file th× ®­¬ng nhiªn cã thÓ dïng vßng lÆp DO thùc hiÖn 200 lÇn ®äc vµ tÝnh to¸n víi sè liÖu ®äc ®­îc. ngay ë dßng ghi ®Çu. ta nªn ghi mét sè th«ng tin chuyªn dông vÒ file. ta cÇn söa l¹i dßng ghi nµy. 6.3 29. th× c¶ hai cét ë dßng cuèi cïng nªn chøa hai sè −999 ®Ó ký hiÖu r»ng ®©y lµ dßng cuèi cïng cña file. *) TEMP Thùc hiÖn hai lÖnh nµy sÏ ®äc hai dßng cña file d÷ liÖu: gi¸ trÞ cña biÕn TIME sÏ b»ng 0.3. cã thÓ dïng vßng lÆp DO ®Ó xö lý file. hay ®Ó x¸c ®Þnh khi nµo ta ®· ®äc hÕt dßng ghi cuèi cïng. 145 146 .3. TEMP Nh­ng sÏ lµ sai nÕu ta dïng hai lÖnh sau READ (10. ThÝ dô. Ngoµi tªn file.0 0.

§o¹n ch­¬ng tr×nh ®äc sè liÖu tõ file nµy vµ tÝnh gi¸ trÞ trung b×nh cña ba ®¹i l­îng cã thÓ nh­ sau: INTEGER N. ' ND =' . N READ (2. ' DA =' .2 . ®é Èm kh«ng khÝ vµ ¸p suÊt khÝ quyÓn t¹i mét tr¹m quan tr¾c trong nhiÒu ngµy.1) 147 148 . K REAL ND. N.*) N IF (N . NDTB.2 .DAT'. ASTB END IF 25 * FORMAT (1X. Gi¶ sö file cã tªn lµ SOLIEU. STATUS = 'OLD') READ (2 .ThÝ dô 14: C¸ch ®äc file cã th«ng tin vÒ sè dßng sè liÖu ë dßng ®Çu file. I5 . ASTB OPEN (UNIT = 2. AS NDTB = NDTB + ND DATB = DATB + DA ASTB = ASTB + AS 15 CONTINUE NDTB = NDTB / REAL (N) DATB = DATB / REAL (N) ASTB = ASTB / REAL (N) PRINT 25 .0 DATB = 0. *) ND. Mçi dßng cña file ghi tuÇn tù ba ®¹i l­îng trªn cho mét ngµy. DATB. F6. Riªng dßng thø nhÊt ghi tæng sè sè liÖu (sè ngµy). AS. F6. ' TRONG FILE KHONG CO SO LIEU ' ELSE NDTB = 0. NDTB.DAT chøa c¸c gi¸ trÞ trung b×nh ngµy cña nhiÖt ®é. ' AS =' . DA. FILE = 'SOLIEU. DA.0 ASTB = 0. DATB.LT. F7.0 DO 15 K = 1. 1) THEN PRINT *. 'SO NGAY = ' .

DA. Gi¶ sö file d÷ liÖu víi néi dung nh­ trong thÝ dô 14.CLOSE (2) END Trong thÝ dô nµy. NDTB. nh­ng ®­îc t¹o ra theo c¸ch ®¸nh dÊu kÕt thóc d÷ liÖu b»ng dßng gåm ba côm sè 99999. th× ph¶i cÈn thËn sao cho ch­¬ng tr×nh cña chóng ta kh«ng ®­îc ®­a nh÷ng gi¸ trÞ ®Æc biÖt vµo xö lý nh­ c¸c gi¸ trÞ b×nh th­êng kh¸c. *) ND.cê hiÖu b¸o hÕt file hoÆc khuyÕt sè liÖu). N2. Dßng ký hiÖu kÕt thóc d÷ liÖu Nh÷ng gi¸ trÞ ®Æc biÖt dïng ®Ó ®¸nh dÊu sù kÕt thóc cña file d÷ liÖu gäi lµ ký hiÖu kÕt thóc (Trailer hay Flags). Khi t¹o lËp file. sÏ kh«ng ph¶i söa l¹i sè ghi tæng sè sè liÖu. 99999) THEN 149 150 . STATUS = 'OLD') N1 = 0 N2 = 0 N3 = 0 NDTB = 0. kh«ng quan tr¾c.0 ASTB = 0.2. Vµ ta thÊy biÕn N ®­îc dïng lµm tham sè giíi h¹n cuèi cña lÖnh DO. sè sè liÖu ®­îc ®äc tõ dßng thø nhÊt cña file vµ g¸n vµo biÕn N . FILE = 'SOLIEU. Ng­êi ta th­êng chän c¸c gi¸ trÞ ®Æc biÖt sao cho chóng kh¸c h¼n víi nh÷ng gi¸ trÞ b×nh th­êng. Ta còng cã thÓ dïng c¸ch nµy ®Ó ®¸nh dÊu nh÷ng gi¸ trÞ khuyÕt trong c¸c chuçi sè liÖu (Flags . DA.NE.OR. VÒ sau. mét tËp hîp c¸c sè chÝn nh­ 99999. ThÝ dô 15: C¸ch ®äc file cã dßng sè liÖu ®¸nh dÊu hÕt file ë cuèi file vµ cê hiÖu b¸o khuyÕt sè liÖu. AS.DAT'. Ngoµi ra. LÖnh IF kiÓm tra nÕu N < 1 th× th«ng b¸o kh«ng cã sè liÖu.0 DATB = 0. dÔ nhËn ra khi xem b»ng m¾t c¸c sè liÖu trong file. Tuy nhiªn.OR. DA .0 60 READ (2.3.NE. nÕu dïng ph­¬ng ph¸p nµy ®Ó ®¸nh dÊu hÕt file. Ch­¬ng tr×nh sau ®©y cho phÐp ®äc vµ tÝnh to¸n ®óng c¸c trÞ sè trung b×nh cña ba ®¹i l­îng: INTEGER N1. DATB. nÕu dßng sè liÖu b×nh th­êng chøa bao nhiªu gi¸ trÞ th× dßng ký hiÖu kÕt thóc còng nªn cã chõng ®ã gi¸ trÞ ®Æc biÖt ®Ó ®¶m b¶o cho lÖnh ®äc kh«ng m¾c lçi ch¹y ch­¬ng tr×nh. 99999 . Ngoµi ra. N3 REAL ND. nÕu ta thªm hoÆc xo¸ ®i mét sè sè liÖu trong file. thÝ dô nh­ sè nguyªn lín nhÊt 32767. 99999 . ®­îc ®¸nh dÊu b»ng con sè 32767. trong c¸c dßng sè liÖu b×nh th­êng cã nh÷ng gi¸ trÞ khuyÕt. Cã thÓ chóng ta ph¶i ghi chó vÒ ®iÒu nµy ë dßng ®Çu file. ASTB OPEN (UNIT = 2. 6. AS . AS IF (ND.NE. ta thªm mét sè con sè ®Æc biÖt trong dßng ghi cuèi cïng. nÕu cã sè liÖu th× ®äc hÕt tÊt c¶ sè liÖu vµ tÝnh c¸c gi¸ trÞ trung b×nh.

* DATB / REAL (N2) IF (N3 .EQ. 0 . 0) PRINT * . ' AP SUAT TRUNG BINH = '. 0) PRINT * . 0) THEN PRINT * . N3 . N2 .3. Sö dông tuú chän END Tr­êng hîp kh«ng biÕt sè dßng d÷ liÖu trong file vµ kh«ng cã dßng th«ng tin vÒ dÊu hiÖu kÕt thóc d÷ liÖu trong file. LÖnh READ 151 152 .) THEN DATB = DATB + DA N2 = N2 + 1 END IF IF (AS . NDTB / REAL (N1) * IF (N2 .GT.GT. ta ph¶i sö dông mét kü thuËt kh¸c.3. 0 . 32767.) THEN NDTB = NDTB + ND N1 = N1 + 1 END IF IF (DA .NE. ' DO AM TRUNG BINH = '. 32767. 32767.) THEN ASTB = ASTB + AS N3 = N3 + 1 END IF GOTO 60 END IF CLOSE (2) IF (N1 .EQ.GT.AND.EQ.NE. ' TRONG FILE KHONG CO SO LIEU ' ELSE IF (N1 . ' NHIET DO TRUNG BINH = '.IF (ND . 0) PRINT * .AND.NE. * ASTB / REAL (N3) END IF END 6.

DA.trong Fortran cã mét tuú chän gióp kiÓm tra sù kÕt thóc cña file vµ rÏ nh¸nh sang mét lÖnh ®­îc chØ ®Þnh nÕu ph¸t hiÖn hÕt file. ta thùc hiÖn ch­¬ng tr×nh tÝnh c¸c trÞ sè trung b×nh nh­ sau: INTEGER N. nÕu dßng d÷ liÖu cuèi cïng ®· ®äc xong vµ ta thùc hiÖn lÖnh READ víi tïy chän END th× thay v× ph¹m lçi thùc hiÖn lÖnh. NÕu lÖnh READ thùc hiÖn mét lÇn n÷a sau khi ®· ®¹t ®Õn cuèi file. END = 15) ND. END = 15) TEMP SUM = SUM + TEMP N = N +1 GOTO 5 15 PRINT * .0 DATB = 0. * . DA. *. DATB. END = n ) Danh s¸ch c¸c biÕn Khi nµo cßn d÷ liÖu trong file lÖnh nµy thùc hiÖn gièng nh­ lÖnh READ (Sè hiÖu file .DAT'. K REAL ND. *. gi¶ sö kh«ng cã dßng ®Çu tiªn th«ng b¸o vÒ ®é dµi chuçi d÷ liÖu.0 N=0 C NÕu ®äc hÕt sè liÖu tïy chän END = 15 sÏ chuyÓn ®Õn lÖnh 15 5 READ (2. LÖnh READ víi tuú chän nµy cã d¹ng sau: READ (Sè hiÖu file . NDTB. STATUS = 'OLD') NDTB = 0. ViÖc chän kü thuËt hîp lý ®Ó ®äc d÷ liÖu tõ file phô thuéc vµo th«ng tin trong file d÷ liÖu. AS. SUM D¹ng ®Æc biÖt nµy cña vßng lÆp ®iÒu kiÖn chØ nªn thùc hiÖn khi nµo ta kh«ng biÕt sè dßng d÷ liÖu vµ kh«ng cã dßng ký hiÖu b¸o hÕt d÷ liÖu. LÖnh READ víi tuú chän END thùc sù lµ mét d¹ng ®Æc biÖt cña vßng lÆp ®iÒu kiÖn While: 5 READ (10. AS NDTB = NDTB + ND 153 154 . *) Danh s¸ch c¸c biÕn Tuy nhiªn. FILE = 'SOLIEU. ®iÒu khiÓn ®­îc chuyÓn tíi lÖnh cã nh·n n trong tuú chän END. ThÝ dô 16: Sö dông tïy chän END. ASTB OPEN (UNIT = 2.0 ASTB = 0. th× lçi ch¹y ch­¬ng tr×nh sÏ xuÊt hiÖn. Víi file d÷ liÖu néi dung nh­ trong thÝ dô 14.

' DA =' . NÕu sè dßng d÷ liÖu kh«ng ®óng. So s¸nh ba ph­¬ng ¸n tæ chøc th«ng tin d÷ liÖu ë trªn. ' AS =' . hoÆc ch­¬ng tr×nh cè ®äc nhiÒu dßng h¬n trong file thùc cã vµ dÉn ®Õn lçi trong khi ch¹y ch­¬ng tr×nh.2 . Ph¶i tin ch¾c r»ng gi¸ trÞ ®­îc chän lµm gi¸ trÞ b¸o hÕt d÷ liÖu kh«ng thÓ nµo nhÇm víi gi¸ trÞ d÷ liÖu thùc sù. DATB. I5 . T¹o lËp c¸c file d÷ liÖu §Ó t¹o míi file d÷ liÖu. Ngoµi ra rÊt cã thÓ cã nh÷ng nhiÖm vô xö lý kh«ng cÇn ®äc hÕt file. 155 156 .2 . F7. NÕu ta quyÕt ®Þnh t¹o file víi th«ng tin b¸o tæng sè dßng d÷ liÖu trªn ®Çu file. Cã thÓ chóng ta ph¶i cã ghi chó ë ®Çu file ®Ó mäi ng­êi dïng file ®­îc biÕt. chóng ta sö dông c¸c lÖnh OPEN vµ WRITE. NDTB. mµ chØ cÇn ®äc sè l­îng sè liÖu cña file ë dßng ®Çu. ' TRONG FILE KHONG CO DU LIEU' ELSE NDTB = NDTB / REAL (N) DATB = DATB / REAL (N) ASTB = ASTB / REAL (N) PRINT 25 . th× hoÆc ch­¬ng tr×nh ®äc sÏ ®äc sè dßng d÷ liÖu Ýt h¬n sè dßng thùc cã. ta thÊy vÒ ph­¬ng diÖn tèi ­u ch­¬ng tr×nh th× c¸ch dïng sè b¸o sè dßng d÷ liÖu ë ®Çu file lµ tèt h¬n c¶.3. th× ph¶i chó ý cËp nhËt dßng ®Çu file mçi khi bæ sung hoÆc c¾t bít sè dßng d÷ liÖu. 0) THEN PRINT *. ' ND =' . ASTB END IF FORMAT (1X. Tuy nhiªn.EQ. tr­íc khi ta b¾t ®Çu viÕt c¸c lÖnh Fortran. trong khi hai ph­¬ng ¸n sau ch­¬ng tr×nh lu«n lu«n ph¶i kiÓm tra biÓu thøc l«gic trong khi ®äc lÆp. cÇn c©n nh¾c xem sau nµy ®äc file d÷ liÖu sÏ sö dông kü thuËt nµo trong ba kü thuËt ®· m« t¶ trong môc 6. ' SO NGAY = '.1) END 25 * 6. Khi t¹o lËp file víi dßng ký hiÖu b¸o hÕt d÷ liÖu ph¶i cÈn thËn lùa chän gi¸ trÞ dïng lµm ký hiÖu. N. v× khi ®äc ®­îc tæng sè dßng sè liÖu ta cã thÓ ®äc hÕt d÷ liÖu b»ng vßng lÆp DO. F6.15 DATB = DATB + DA ASTB = ASTB + AS N=N+1 GOTO 5 CLOSE (2) IF (N . F6.4.

Khi t×m lçi mét ch­¬ng tr×nh lµm viÖc víi c¸c file d÷ liÖu.7 (dßng 2) 1.529.2 (dßng 4) 2. Do ®ã. nh­ng ®Õn tr­êng hîp kh¸c th× t×nh h×nh kh«ng ph¶i nh­ vËy. Khi ®ã ch­¬ng tr×nh lµm viÖc b×nh th­êng. sao cho ta cã thÓ in lªn mµn h×nh tõng dßng d÷ liÖu khi ch­¬ng tr×nh ®äc vµo. ®äc h¬i thiÕu d÷ liÖu.529. trong lËp tr×nh ph¶i rÊt thËn träng víi file d÷ liÖu. nh÷ng gi¸ trÞ cã ®óng lµ n»m ë nh÷ng chç nã cÇn n»m kh«ng. Víi c¸c file d÷ liÖu xuÊt. nh­ng thùc chÊt lµ sai hoÆc kh«ng chÝnh x¸c. c¸ch thøc ghi ë trong ®ã ra sao th× míi ®äc file ®óng vµ chÝnh x¸c. chÝnh x¸c kh«ng. Trong nh÷ng tr­êng hîp ®ã. còng cã thÓ ng­êi lËp tr×nh nhËn ®­îc trong qu¸ tr×nh trao ®æi d÷ liÖu víi ®ång nghiÖp cña m×nh. xuÊt d÷ liÖu cã lµm viÖc ®óng ®¾n.6.029. File d÷ liÖu LAB1 chøa nh÷nng th«ng tin vÒ thêi gian vµ nhiÖt ®é trªn mçi dßng nh­ sau: 0. sau khi t¹o lËp ra nã. RÊt cã thÓ trong mét tr­êng hîp ta thÊy mäi chuyÖn ®Òu æn. Tuy nhiªn cã nh÷ng tr­êng hîp lçi ch¹y ch­¬ng tr×nh kh«ng ph¸t sinh. th× h·y in sè ®ã ra sau khi ®äc.5. ChØ cã kiÓm tra kÜ th× míi tr¸nh ®­îc nh÷ng lçi tiÒm Èn khã nhËn biÕt trong ch­¬ng tr×nh. tr­íc khi viÕt nh÷ng lÖnh ®äc file d÷ liÖu ph¶i nghiªn cøu kÜ cÊu tróc cña file. th× file d÷ liÖu ®· ®­îc më vµ ch­a tõng cã mét lÖnh READ nµo ®­îc thùc hiÖn: 157 158 . NÕu file d÷ liÖu cã ghi sè dßng d÷ liÖu. NÕu kÕt qu¶ sai v« lý. h·y më ra xem l¹i néi dung file.5 (dßng 1) 0. Tr­êng hîp sè dßng d÷ liÖu thùc tÕ trong file cã Ýt h¬n sè vßng lÆp ®äc d÷ liÖu th× ch­¬ng tr×nh sÏ b¸o lçi ch¹y ch­¬ng tr×nh. Mµ ®iÒu nµy kh«ng ph¶i lµ kh«ng bao giê x¶y ra.7 (dßng 6) H·y cho biÕt gi¸ trÞ cña c¸c biÕn sau khi mçi nhãm lÖnh d­íi ®©y thùc hiÖn. Gi¶ sö r»ng tr­íc khi thùc hiÖn mçi nhãm lÖnh ®ã. râ rµng th× chóng ta còng biÕt vµ t×m nguyªn nh©n ë ch­¬ng tr×nh hay ë file d÷ liÖu. nh­ng kÕt qu¶ ch­¬ng tr×nh cho ra sai. ph¶i tin ch¾c tuyÖt ®èi nh÷ng th«ng tin trong file lµ nh÷ng th«ng tin g×.029. hoÆc mét gi¸ trÞ nµo kh«ng.026.528. Kü thuËt trî gióp t×m lçi ch­¬ng tr×nh ThËt v« nghÜa nÕu mét ch­¬ng tr×nh xö lý d÷ liÖu mµ l¹i ®äc sai d÷ liÖu trong file. H·y nªn nhí r»ng trong sè nh÷ng yÕu tè cña Fortran th× vÊn ®Ò lµm viÖc víi file cã thÓ xem lµ vÊn ®Ò khã nhÊt vµ lý thó nhÊt.4 (dßng 5) 2. Bµi tËp 1. §Æc biÖt lÇn ®Çu tiªn lµm viÖc víi mét lo¹i file ph¶i kiÓm tra kÜ l­ìng kÕt qu¶ ®äc file. Ngoµi ra cÇn ph¶i kiÓm tra file ®Çu ra trong nhiÒu ph­¬ng ¸n ch¹y ch­¬ng tr×nh. ®äc kÜ tµi liÖu m« t¶ file.1 (dßng 3) 1. Nªn xem cÊu tróc file cã nh­ ta dù ®Þnh kh«ng. Víi c¸c file d÷ liÖu nhËp. §¸ng sî nhÊt lµ nh÷ng tr­êng hîp ®äc “nhÇm d÷ liÖu”. Khi ®ã chóng ta buéc ph¶i xem l¹i ch­¬ng tr×nh hoÆc xem l¹i file d÷ liÖu vµ dÔ dµng ph¸t hiÖn lçi ë ®©u. ®iÒu rÊt quan träng lµ kiÓm tra xem c¸c lÖnh nhËp. ta nªn thö ch­¬ng tr×nh víi mét file d÷ liÖu nhá. kÕt qu¶ tá ra chÊp nhËn ®­îc. Trong thùc tÕ c¸c file d÷ liÖu cã thÓ do b¶n th©n ng­êi lËp tr×nh x©y dùng. H·y kiÓm tra xem ch­¬ng tr×nh cã bá qua dßng d÷ liÖu.

3 27. th¸ng.8 28.6 25.5 27.2 28. C¸c dßng tiÕp sau tuÇn tù ghi nh÷ng gi¸ trÞ nhiÖt ®é øng víi tõng th¸ng thµnh 12 cét.9 27.2 3 27.9 -9.6 27.8 28. *) TEM1 READ (1.8 26.2 27.7 27.3 29. Dßng thø t­ gåm 12 cét ghi c¸c th¸ng trong n¨m.5 26.7 25. *) TIM1. *) TIM 4) READ (1.5 25. *) TIM.®¬n vÞ ®o (°C).8 27. OSCILLATION OF TEMPERATURE OF THE AIR AT STATION CONDAO degree C 12 1 1979 12 1990 1 25.9 26.5 25.4 27.6 24.2 27.2 25.2 12 25.7 27.3 27. *) TIM2 READ (1.0 27.2 27. n¨m b¾t ®Çu vµ th¸ng.9 26.4 24.2 25.8 25.0 27. *) TIM2.5 27.0 28. TIM2.2 26.6 25.2 26.9 159 160 .1 28.0 26.6 -9.1 25.2 27.9 (b¶ng phÝa d­íi).0 24.2 28.5 28.7 25.8 27.4 25.9 26. *) TEM READ (1.2 28.tiªu ®Ò b¸o r»ng ®©y lµ sè liÖu vÒ biÕn thiªn nhiÖt ®é kh«ng khÝ t¹i tr¹m C«n §¶o.4 24.5 25.9 27.8 25.9 5 29.8 26.9 26. Dßng thø ba tuÇn tù ghi c¸c tham sè: sè n¨m quan tr¾c. *) TIM1.7 25.9 26.2 27.1 28. *) TIM1. *) TEM1. TEM2 5) READ (1.9 26. TEM 2) READ (1.9 11 26.7 9 27.7 28.7 28.0 27.4 26.7 25. File d÷ liÖu cã tªn CONDAO.3 26. TEM1.6 27. *) TEM2 2. TEM1 READ (1.3 24.1 26.3 25.5 6 27.0 26.0 27. *) TIM1 6) READ (1.1 27. TEM2 READ (1.3 28.TEM cã néi dung ghi nh­ sau: Dßng thø nhÊt . trong ®ã nh÷ng th¸ng khuyÕt sè liÖu ®­îc ghi b»ng sè −9.3 28.7 27. TEM2 3) READ (1.4 26. n¨m kÕt thóc quan tr¾c.6 28.0 27.8 28.0 7 27.2 27.9 27.0 25.8 28.1) READ (1.9 27.8 28.9 28.6 28.8 26.3 10 -9.5 26.0 25.8 26.8 25.5 25.6 8 27. TIM2 READ (1.5 27. Dßng thø hai .0 4 28.2 2 25.

In chuçi nhiÖt ®é ®· s¾p xÕp thµnh d¹ng 10 gi¸ trÞ mét dßng..6 27.0 27.4 25.1 27.6 26. Gi¶ sö trong file cã kh«ng qu¸ 200 dßng d÷ liÖu.8 H·y lËp ®o¹n ch­¬ng tr×nh ®äc file nµy vµ in l¹i lªn mµn h×nh toµn bé d÷ liÖu gèc cïng biÕn tr×nh n¨m trung b×nh cña nhiÖt ®é kh«ng khÝ ë dßng cuèi cïng.7 − x = 0 trong kho¶ng [0. H·y ®äc file d÷ liÖu nµy vµ in ra sè gi¸ trÞ nhiÖt ®é.1 25. 5.3 27.25. H·y ®äc file d÷ liÖu nµy vµ s¾p xÕp gi¸ trÞ nhiÖt ®é theo thø tù gi¶m dÇn. gi¸ trÞ nhiÖt ®é trung b×nh n¨m ë cuèi dßng vµ gi¸ trÞ nhiÖt ®é trung b×nh nhiÒu n¨m cña tõng th¸ng ë dßng d­íi cïng...0 26. 6.7 26. + cos x cos x + cos 2 x cos x + cos 2 x + cos 3x cos x + cos 2 x + .7 26.6 24.8 25. mét sè thùc x bÊt kú nhá h¬n 1.5 28.9 cho c¶ thêi gian vµ nhiÖt ®é.1 26.3 27. Gi¶ sö trong file cã kh«ng qu¸ 200 dßng d÷ liÖu.3 27. 7..0 28. gi¸ trÞ nhiÖt ®é trung b×nh vµ sè gi¸ trÞ nhiÖt ®é lín h¬n trung b×nh. + sin nx + + + .6 27. ViÕt ch­¬ng tr×nh nhËp mét sè tù nhiªn n nhá h¬n 21.9 27. mçi dßng ghi thêi gian tÝnh b»ng gi©y vµ nhiÖt ®é tÝnh b»ng ®é C.3 27.4 26. mçi dßng ghi thêi gian tÝnh b»ng gi©y vµ nhiÖt ®é tÝnh b»ng ®é C.2.2 28.2 27.0 27. Kh«ng cã dßng tiªu ®Ò vµ kh«ng cã dßng b¸o hÕt d÷ liÖu.7 28. LËp ®o¹n ch­¬ng tr×nh ®äc file d÷ liÖu víi néi dung nh­ trong bµi tËp 2 vµ ghi l¹i thµnh file cïng tªn.2 27.9 28. Trong file tªn lµ DATA1. Dßng cuèi cïng lµ dßng b¸o hÕt d÷ liÖu chøa gi¸ trÞ −999.0001 cña ph­¬ng tr×nh in th«ng b¸o kÕt qu¶ lªn mµn h×nh víi 4 ch÷ sè thËp ph©n. X¸c ®Þnh tæng: sin x sin x + sin 2 x sin x + sin 2 x + sin 3 x sin x + sin 2 x + .4 27.. 3.3. ¸p dông kü thuËt dïng dßng ký hiÖu ®¸nh dÊu kÕt thóc d÷ liÖu trong môc 6.2 29..6 27.6 28.8 27.6 24. + cos nx e −x − 1 x e + 3. Trong file tªn lµ DATA2. 8. 2] theo ph­¬ng ph¸p lÆp vµ 3 Ch­¬ng 7 Sö dông biÕn cã chØ sè trong Fortran 161 162 . ViÕt ch­¬ng tr×nh t×m nghiÖm gÇn ®óng víi sai sè cho phÐp 0.3 25. 4. ViÕt ch­¬ng tr×nh söa l¹i file CONDAO.TEM trong bµi tËp 2 sao cho ë mçi dßng sè liÖu cã chØ n¨m quan tr¾c t­¬ng øng ë ®Çu dßng.8 25.

cña ph­¬ng tr×nh håi quy nµy vµ khai b¸o nh­ sau: REAL A (0 : 20) Trong tr­êng hîp nµy phÇn tö thø nhÊt A(0) cña m¶ng A biÓu diÔn hÖ sè a0 . B 163 164 . NÕu ta cã tËp hîp sè liÖu vÒ l­îng m­a n¨m trong thÕ kû nµy t¹i mét tr¹m khÝ t­îng nµo ®ã. VÒ ph­¬ng diÖn ng«n ng÷. M¶ng lµ yÕu tè quan träng vµ m¹nh mÏ nhÊt cña Fortran. nªu mét sè ®Æc ®iÓm vÒ l­u gi÷ ®èi víi c¸c biÕn cã chØ sè hay gäi lµ biÕn m¶ng.. Nh­ vËy rÊt thuËn tiÖn trong khi sö dông c¸c c«ng thøc cña ®¹i sè.1. ta dïng tªn m¶ng kh«ng cã c¸c chØ sè. kÓ c¶ hÖ sè tù do. . sö dông m¶ng ®óng ®¾n vµ thµnh th¹o sÏ gióp chóng ta viÕt nh÷ng ch­¬ng tr×nh hoÆc nh÷ng ®o¹n ch­¬ng tr×nh rÊt ng¾n gän.. + a m x m ta cã thÓ dïng m¶ng mét chiÒu víi tªn A ®Ó chØ tÊt c¶ c¸c hÖ sè. Trong c¸c môc d­íi ®©y sÏ bæ sung thªm nh÷ng cÊu tróc. x m y = a 0 + a1 x1 + a 2 x 2 + . nh­ng nh÷ng gi¸ trÞ riªng biÖt cã chØ sè riªng duy nhÊt.. nh÷ng lÖnh cña Fortran cho phÐp thao t¸c thuËn lîi víi c¸c biÕn m¶ng.Trong ch­¬ng 2.v. nÕu muèn truy cËp l­îng m­a n¨m 1985. nÕu sö dông biÕn m¶ng. kü thuËt ®äc d÷ liÖu tõ file ®Ó g¸n vµo c¸c biÕn m¶ng v. c¶ nhãm d÷ liÖu sÏ cã mét tªn chung. m¶ng mét chiÒu th­êng dïng ®Ó biÓu diÔn mét dßng hoÆc mét cét d÷ liÖu. ta sö dông lÖnh READ. Trong thùc tÕ. ThÝ dô muèn biÓu diÔn c¸c hÖ sè a cña ph­¬ng tr×nh håi quy nhiÒu biÕn liªn hÖ gi÷a ®¹i l­îng y vµ c¸c ®¹i l­îng x 1 . thÝ dô READ *. Ngoµi ra. Kü thuËt nµy cho phÐp ta ph©n tÝch d÷ liÖu sö dông c¸c vßng lÆp mét c¸ch thuËn tiÖn. ta chØ ®Þnh phÇn tö m¶ng RAIN (1985). mét m¶ng lµ mét nhãm ®Þa chØ l­u gi÷ trong bé nhí m¸y tÝnh cã cïng tªn. Tõng thµnh phÇn cña m¶ng ®­îc gäi lµ phÇn tö m¶ng vµ ®­îc ph©n biÖt víi phÇn tö kh¸c bëi tªn chung kÌm theo chØ sè trong cÆp dÊu ngoÆc. Nh÷ng tr­êng hîp dïng chØ sè ®Çu kh¸c 1 th­êng liªn quan tíi tÝnh thuËn tiÖn thao t¸c c¸c c«ng thøc to¸n häc hoÆc ph­¬ng diÖn thùc tiÔn. NÕu muèn ®äc toµn bé m¶ng. ta thÊy trong Fortran cho phÐp khai b¸o nh÷ng m¶ng d÷ liÖu rÊt lín vµ thao t¸c rÊt mÒm dÎo. Trong tr­êng hîp nµy. ta cã thÓ dïng m¶ng REAL RAIN (1900 : 2000) Trong tr­êng hîp nµy. M¶ng mét chiÒu Trong lËp tr×nh.. NhiÒu khi kh¶ n¨ng khai b¸o m¶ng d÷ liÖu lín lµm cho thuËt gi¶i cña ch­¬ng tr×nh xö lý trë nªn ®¬n gi¶n. 7. th­êng lµ b¾t ®Çu (chØ sè ®Çu) b»ng sè nguyªn 1. Ta còng cã thÓ chØ ®Þnh nh÷ng phÇn tö cô thÓ trong lÖnh READ. §Ó ®äc d÷ liÖu vµo mét m¶ng mét chiÒu tõ bµn phÝm hoÆc tõ file d÷ liÖu.. Nh÷ng chØ sè ®­îc biÓu diÔn b»ng nh÷ng sè nguyªn liªn tiÕp nhau.. NÕu so s¸nh víi mét sè ng«n ng÷ lËp tr×nh kh¸c. x 2 . Ch­¬ng nµy sÏ cung cÊp thªm ph­¬ng ph¸p l­u gi÷ vµ xö lý nh÷ng nhãm gi¸ trÞ mµ kh«ng cÇn cung cÊp tªn mét c¸ch t­êng minh cho tõng gi¸ trÞ ®ã.. ta th­êng xö lý mét nhãm c¸c gi¸ trÞ Ýt nhiÒu liªn hÖ hoÆc hoµn toµn kh«ng liªn hÖ víi nhau. thÝ dô nh­ Pascal. môc 2.3 ®· xÐt c¸ch khai b¸o kiÓu biÕn cã chØ sè vµ kh¸i niÖm m¶ng trong Fortran.

B(1).READ *. 5) Trong lÖnh nµy. *) (LMUA (I). chóng ta thÊy kh«ng cã mÆt tõ khãa DO. (B (I) . Gi¶ sö ®¬n vÞ file lµ 9. nÕu m¶ng B theo khai b¸o chøa 3 phÇn tö th× hai lÖnh READ trªn t­¬ng ®­¬ng nhau. LÖnh DATA LÖnh DATA lµ lÖnh ®Æc t¶. thuéc lo¹i lÖnh kh«ng thùc hiÖn. lµ v×: lÖnh thø nhÊt ®äc vµo toµn bé 8 phÇn tö cña m¶ng B. *) LMUA C¸ch 3: LÖnh READ chøa vßng lÆp Èn: REAL LMUA (50) READ (9. I = 1. ViÕt nhãm lÖnh ®äc nh÷ng sè liÖu nµy vµo m¶ng LMUA. Nh­ng nÕu m¶ng B chøa 8 phÇn tö th× cã sù kh¸c nhau quan träng gi÷a hai lÖnh READ trªn ®©y. 50) CONTINUE C¸ch 2: Dïng lÖnh READ kh«ng chøa chØ sè. nh­ng vßng lÆp thùc hiÖn 50 lÇn vµ ®äc toµn bé m¶ng: REAL LMUA (50) DO 10 I = 1 . mçi sè liÖu mét dßng. C¸c gi¸ trÞ cña biÕn m¶ng cßn cã thÓ ®äc víi vßng lÆp DO Èn. ThÝ dô 17: Mét tËp hîp 50 sè liÖu l­îng m­a n¨m ®­îc l­u trong file d÷ liÖu. Nã dïng ®Ó khëi t¹o gi¸ trÞ ban ®Çu cho c¸c biÕn ®¬n vµ c¸c m¶ng. chØ cã chØ sè I cña biÕn m¶ng B biÕn thiªn tõ 1 tíi 5 víi gia sè b»ng 1.2. trong khi lÖnh thø hai chØ ®äc c¸c gi¸ trÞ cña ba phÇn tö ®Çu tiªn. I = 1 . B(2). Nh­ vËy víi mét lÖnh READ m¸y ®äc ®­îc liªn tôc 5 phÇn tö cña m¶ng B. trong thÝ dô nµy. B(3) CÇn chó ý r»ng. nÕu muèn ®äc 5 phÇn tö ®Çu tiªn cña m¶ng B ta sö dông lÖnh READ nh­ sau READ *. nã sÏ ®äc toµn bé m¶ng. C¸ch 1: Dïng lÖnh READ ®äc tõng sè. tøc ®äc liÒn 50 phÇn tö: 7. *) LMUA (I) 10 REAL LMUA (50) READ (9. 50 READ (9. D¹ng tæng qu¸t cña lÖnh DATA nh­ sau 165 166 . ThÝ dô.

−2. LOGICAL. C .0 . ta ph¶i sö dông c¸c lÖnh g¸n. K vµ gi¸ trÞ 0. DIMENSION. K. TIME / 5*0. nÕu muèn khëi t¹o gi¸ trÞ 1 cho c¸c biÕn I. X. Chó ý r»ng lÖnh DATA chØ khëi t¹o gi¸ trÞ ë ®Çu ch­¬ng tr×nh.. 1. Y. 50 phÇn tö cßn l¹i ch­a ®­îc khëi t¹o. Y. I = 1.0 / chØ khëi t¹o mét gi¸ trÞ cña phÇn tö ®Çu tiªn cña m¶ng HOUR.0.0. 10 / sÏ khëi t¹o gi¸ trÞ 0. C¸c lÖnh DATA ph¶i ®Æt tr­íc c¸c lÖnh thùc hiÖn. tøc ë gÇn ®Çu ch­¬ng tr×nh. NÕu cÇn t¸i t¹o c¸c biÕn. NÕu c¸c gi¸ trÞ lÆp l¹i trong danh s¸ch h»ng. LÖnh DATA còng kh«ng thÓ n»m trong ch­¬ng tr×nh con. Z / 1. J. Z / 3*1. 32. 32. 3. 0. c¸c phÇn tö tõ thø 2 ®Õn 5 cña nã ch­a biÕt.0.0 cho biÕn A. B. KiÓu cña c¸c gi¸ trÞ d÷ liÖu còng nªn phï hîp kiÓu cña c¸c biÕn. Y. Cã thÓ sö dông vßng DO Èn trong lÖnh DATA.5. ThÝ dô: INTEGER Y (100) DATA (Y (I).75 cho biÕn B. INTEGER.5 / DATA I. X.5 cho c¸c biÕn X. LÖnh DATA kh«ng thÓ sö dông trong vßng lÆp ®Ó t¸i t¹o gi¸ trÞ c¸c biÕn. 50) / 50*0 / khëi t¹o gi¸ trÞ 0 cho 50 phÇn tö ®Çu cña m¶ng Y. 1.5 .DATA Danh s¸ch tªn biÕn / Danh s¸ch h»ng / Theo lÖnh nµy c¸c gi¸ trÞ d÷ liÖu trong danh s¸ch h»ng n»m trong hai dÊu g¹ch chÐo ®­îc g¸n cho c¸c biÕn trong danh s¸ch tªn biÕn theo tuÇn tù. 0. J. 0. ngay sau nh÷ng lÖnh m« t¶ kiÓu nh­ lÖnh REAL. lÖnh DATA A . 4. ta cã thÓ dïng c¸ch viÕt lÖnh DATA ng¾n gän. −2. I / 0. ThÝ dô. ThÝ dô. Z.75 .5.5 cho biÕn C vµ 10 cho biÕn I. 2. sao cho m¸y tÝnh kh«ng ph¶i chuyÓn ®æi. c¸c lÖnh sau khëi t¹o tÊt c¸c c¸c phÇn tö cña m¶ng J vµ TIME: INTEGER J (5) REAL TIME (4) DATA J. 1. K.5 / LÖnh DATA cã thÓ sö dông ®Ó khëi t¹o mét hoÆc mét sè phÇn tö cña m¶ng. ThÝ dô.. 167 168 .0 / Nhãm lÖnh REAL HOUR (5) DATA HOUR (1) / 10. J. th× hai lÖnh sau ®©y t­¬ng ®­¬ng nhau: DATA I. 3*0.

2) + . cßn tÊt c¶ c¸c phÇn tö kh¸c b»ng 0).10) th­êng biÓu diÔn b»ng m¶ng hai chiÒu A víi lÖnh m« t¶ nh­ sau REAL A(10. 10) C¸c gi¸ trÞ quan tr¾c tõng giê vÒ mùc n­íc biÓn trong vßng mét th¸ng cã thÓ biÓu diÔn thµnh mét b¶ng sè liÖu gåm 31 dßng. ng­êi ta chØ cÇn céng tÊt c¶ c¸c phÇn tö víi chØ sè I = 1: SLEV (1. J). 24) Sö dông c¸c m¶ng rÊt tiÖn lîi khi lËp ch­¬ng tr×nh ph©n tÝch. mçi cét cã mét sè dßng gi¸ trÞ thµnh m¶ng hai chiÒu. víi chØ sè thø nhÊt I chØ ngµy.. Mçi phÇn tö m¶ng ®­îc truy cËp bëi tªn m¶ng víi hai chØ sè n»m trong cÆp dÊu ngoÆc. C¸c cét tuÇn tù øng víi 24 giê trong mét ngµy.. ma trËn c¸c hÖ sè ®øng tr­íc c¸c Èn cña hÖ ph­¬ng tr×nh ®¹i sè tuyÕn tÝnh a i . chØ sè thø hai J chØ giê trong ngµy ®ã. c¸c b¶ng d÷ liÖu gåm mét sè cét.. ThÝ dô ma trËn kÝch th­íc n = 3 . + SLEV (1.   0 0 1    §o¹n ch­¬ng tr×nh Fortran thùc hiÖn viÖc nµy sÏ nh­ sau: INTEGER IDMAT(3. Trong thùc tÕ lËp tr×nh ng­êi ta th­êng biÓu diÔn c¸c ma trËn. J) = 1 169 170 . j (i = 1. ng­êi ta chØ cÇn chØ ®Þnh phÇn tö SLEV (I. 24 cét. ThÝ dô.7. b¶ng sè liÖu nµy cã thÓ biÓu diÔn b»ng m¶ng hai chiÒu REAL SLEV (31.. kh¸c biÖt duy nhÊt lµ dïng hai tham sè kÝch th­íc m¶ng. Trong Fortran. J) THEN IDMAT (I. 24) theo c¸ch nµy. khi thao t¸c víi mùc n­íc t¹i mét ngµy.10. sÏ lµ 1 0 0 0 1 0 . C¸c dßng tuÇn tù øng víi c¸c ngµy trong th¸ng. tÝnh to¸n víi nh÷ng ma trËn. thÝ dô cña ngµy thø nhÊt trong th¸ng. Khi cÇn tÝnh mùc n­íc trung b×nh ngµy. tøc cã 3 dßng vµ 3 cét. 3 DO J = 1. M¶ng hai chiÒu C¸c lÖnh m« t¶ m¶ng hai chiÒu gièng nh­ víi m¶ng mét chiÒu. nh÷ng tËp sè liÖu lín. giê cô thÓ nµo ®ã. ThÝ dô 18: LËp ma trËn ®¬n vÞ (ma trËn vu«ng víi c¸c phÇn tö trªn ®­êng chÐo chÝnh b»ng 1.3) DO I = 1.3. 1) + SLV (1. 3 IF (I . j = 1.EQ.

M TB (J) = 0. §o¹n ch­¬ng tr×nh sau ®©y cho phÐp ®äc sè liÖu tõ file. Sau ®ã cã n dßng. N READ (1. Nh­ ®· m« t¶ c¸ch ghi sè liÖu trong file. mçi gi¸ trÞ øng víi mét con s«ng. chØ sè thø nhÊt cña m¶ng chØ thø tù n¨m. N READ (1.LLG'. *) N. mçi dßng øng víi mét n¨m. J = 1 .0) 4 H·y l­u ý c¸ch ®äc sè liÖu l­îng m­a trong ch­¬ng tr×nh nµy. J) = 0 ENDIF END DO END DO ThÝ dô 19: §äc c¸c gi¸ trÞ m¶ng hai chiÒu tõ file d÷ liÖu. tÝnh l­u l­îng trung b×nh cña tÊt c¶ c¸c s«ng vµ in kÕt qu¶ lªn mµn h×nh. *) (SLL (I .0 DO I = 1.LLG. M DO I = 1 . mçi dßng sè liÖu tuÇn tù øng víi mét n¨m. REAL SLL (100. J = 1 . Dßng trªn cïng cña file ghi hai sè nguyªn tuÇn tù chØ sè n¨m quan tr¾c vµ sè con s«ng. Nh÷ng sè liÖu nµy ghi trong file SONG.ELSE IDMAT (I. 15). l­îng m­a ®­îc ghi thµnh n dßng. trªn mçi dßng l¹i cã m gi¸ trÞ l­îng m­a øng víi m con s«ng. M) 171 172 . FILE = 'SONG. trong mçi dßng cã m gi¸ trÞ. 15 F8. STATUS = 'OLD') READ (1. M) FORMAT (1X. Ta dïng m¶ng hai chiÒu ®Ó biÓu diÔn tËp sè liÖu nµy. J) . J) . TB (15) OPEN (1. J) ENDDO ENDDO PRINT 4. chØ sè thø hai chØ thø tù con s«ng. Muèn ®äc liªn tôc sè liÖu trong n n¨m ta ®· dïng hai vßng DO lång nhau: DO I = 1 . N TB (J) = TB (J) + SLL (I. Gi¶ sö cã c¸c sè liÖu vÒ l­u l­îng n­íc trung b×nh n¨m cña mét sè con s«ng. M) ENDDO CLOSE (1) DO J = 1. *) (SLL (I . (TB (J) . J = 1 .

Trong tr­êng hîp nµy ta khai b¸o thªm mét biÕn DD (100. bëi v× hai vßng DO nµy t­¬ng ®­¬ng víi n × m lÖnh READ. J) END DO END DO th× sÏ ph¹m sai lÇm. ThÝ dô. mçi lÇn lÖnh READ thùc hiÖn xong th× ®Çu ®äc file sÏ xuèng dßng míi. Mét c¸ch tæng qu¸t. N 173 174 . vµ nh­ ta ®· biÕt. 15) vµ lÖnh ®äc c¶ l­u l­îng vµ ®é ®ôc sÏ lµ: DO I = 1 . B»ng vßng lÆp Èn nµy ta ®· ®äc ®­îc m gi¸ trÞ sè thùc øng víi m s«ng trªn cïng mét dßng. còng lµ file sè liÖu nh­ ®· m« t¶ trong thÝ dô 19. ®©y lµ c¸ch ®äc th­êng dïng nhÊt ®Ó b»ng mét lÖnh ®äc cã thÓ nhËn liªn tiÕp tÊt c¶ c¸c phÇn tö trªn mét hµng cña ma trËn.END DO trong ®ã vßng DO bªn trong lµ vßng DO Èn víi chØ sè J ch¹y tõ 1 ®Õn M. Nh­ vËy m¸y sÏ ®äc n × m dßng trong khi trong file chØ cã n dßng sè liÖu. *) SLL (I. NÕu ta dïng hai vßng lÆp th«ng th­êng: DO I = 1. Ta ph¸t triÓn c¸ch dïng vßng DO Èn cho tr­êng hîp trªn cïng mét dßng trong file cã hai ®¹i l­îng. M READ (1. N DO J = 1. nh­ng trªn mçi dßng ngoµi m gi¸ trÞ l­u l­îng cßn cã m gi¸ trÞ ®é ®ôc øng víi m con s«ng.

(DD (I . ta sÏ dïng DO I = 1 . J) . M) . mçi líp cã mét sè hµng vµ mçi hµng cã mét sè h×nh lËp ph­¬ng.3. ThÝ dô. thø tù hµng b»ng chØ sè J vµ thø tù líp b»ng chØ sè K. M) END DO Tr­êng hîp ë ®Çu mçi dßng cã ghi n¨m quan tr¾c. J) . C¸c phÇn tö cña m¶ng ba chiÒu gièng nh­ nh÷ng h×nh lËp ph­¬ng con. J). *) NAM (I). Chóng ta cã thÓ h×nh dung m¶ng ba chiÒu gièng nh­ h×nh hép ch÷ nhËt t¹o bëi nhiÒu h×nh lËp ph­¬ng con. Tõ ®ã ta biÓu diÔn vÞ trÝ cña mét phÇn tö nµo ®ã nh­ lµ vÞ trÝ cña h×nh lËp ph­¬ng con: thø tù cña nã trong mét hµng b»ng chØ sè I. J = 1. M) . J). M¶ng nhiÒu chiÒu Fortran cho phÐp sö dông c¸c m¶ng víi sè chiÒu tèi ®a b»ng 7.READ (1. (DD (I . J = 1. *) (SLL (I . xÕp thµnh mét sè líp. M) END DO 7. (SLL (I. J = 1 . N READ (1. m¶ng ba chiÒu cã thÓ ®Þnh nghÜa b»ng lÖnh: 175 176 . J = 1.

K=1.1).. yÕu tè quan tr¾c l¹i cã thÓ biÕn ®æi theo thêi gian vµ ®­îc chØ ®Þnh b»ng chØ sè thø ba. thÝ dô tr­êng khÝ ¸p mÆt ®Êt. M¶ng bèn chiÒu cã thÓ dïng ®Ó biÓu diÔn nh÷ng tr­êng ba chiÒu võa m« t¶ ë trªn nh­ng t¹i nhiÒu thêi ®iÓm t kh¸c nhau. dù b¸o nhá) ph¶i l­u tr÷ vµ qu¶n lý trong m¸y tÝnh. däc theo s«ng ta cã cã thÓ cã nhiÒu mÆt c¾t ®­îc biÓu diÔn b»ng biÕn thiªn cña chØ sè thø hai. h¶i d­¬ng häc chóng ta ®­îc biÕt tíi nh÷ng m« h×nh dù b¸o thêi tiÕt hay hoµn l­u vµ nhiÖt muèi ®¹i d­¬ng th­êng sö dông c¸c tr­êng ba chiÒu ban ®Çu vµ ph¸t sinh ra nh÷ng tr­êng bèn chiÒu víi kÝch th­íc khæng lå (do ®é ph©n gi¶i kh«ng gian cao vµ b­íc thêi gian m« pháng. mçi dßng mét ngµy. C¸c dßng tiÕp theo lÇn l­ît ghi gi¸ trÞ cña c¸c yÕu tè. 4.. n¨m cuèi quan tr¾c. C¸c m¶ng cã sè chiÒu lín h¬n bèn cã thÓ lµ khã h×nh dung trùc quan h¬n.REAL T (3. nÕu chóng ta quy ­íc râ rµng. hai lÖnh ®äc sau ®©y lµ t­¬ng ®­¬ng: READ*. tr­êng nhiÖt ®é n­íc mÆt biÓn.MAT cã quy c¸ch ghi nh­ sau: Dßng trªn cïng ghi tªn tr¹m. Sè liÖu gi¸ trÞ ngµy cña c¸c yÕu tè khÝ t­îng thñy v¨n t¹i tr¹m Hßn DÊu ®­îc l­u trong file HONDAU. BiÓu diÔn m¶ng ba chiÒu trong biÓn Trong khÝ t­îng thñy v¨n m¶ng ba chiÒu th­êng ®­îc dïng ®Ó biÓu diÔn nh÷ng sè liÖu quan tr¾c trong kh«ng gian ba chiÒu.4) T­¬ng tù ta h×nh dung m¶ng bèn chiÒu nh­ lµ mét chuçi c¸c m¶ng ba chiÒu. vÜ ®é vµ mét tÇng s©u nµo ®ã trong biÓn (h×nh 7. n¨m ®Çu vµ ngµy. Tuy nhiªn.(((T(I. hai chØ sè ®Çu hoµn toµn t­¬ng tù.J=1.. Trong thñy v¨n. Trong khÝ t­îng häc.1. chØ sè thø hai biÕn thiªn nhanh thø hai vµ chØ sè thø ba biÕn thiªn chËm nhÊt. ThÝ dô víi m¶ng T. cßn chØ sè thø ba cña m¶ng ba chiÒu biÕn thiªn theo trôc z h­íng th¼ng ®øng tõ mÆt ®Êt lªn trªn. H×nh 7.I=1. t­¬ng øng víi biÕn sè nµo trong thùc tÕ vµ n¾m v÷ng quy t¾c biÕn thiªn chØ sè cña m¶ng th× vÉn cã thÓ truy cËp. Dßng thø ba cã 6 sè nguyªn viÕt c¸ch nhau lÇn l­ît chØ ngµy. ThÝ dô. Trong tr­êng hîp nµy cã thÓ quy ­íc chØ sè thø nhÊt cña m¶ng i biÕn thiªn theo trôc x h­íng sang phÝa ®«ng. cßn chØ sè thø ba k biÕn thiªn theo trôc z h­íng th¼ng ®øng tõ mÆt xuèng ®¸y biÓn ®Ó chØ gi¸ trÞ ¸p suÊt øng víi kinh ®é. chØ sè thø nhÊt cña m¶ng ba chiÒu th­êng dïng biÓu diÔn yÕu tè quan tr¾c t¹i c¸c ®é s©u kh¸c nhau cña mét mÆt c¾t. ViÕt ch­¬ng tr×nh ®äc vµ tÝnh xem trong 177 178 . vÜ tuyÕn cña mét miÒn h×nh ch÷ nhËt trªn mÆt biÓn vµ mét sè tÇng s©u.K). Gi¶ sö l­îng m­a ngµy ghi ë cét sè 6. mçi tªn ®­îc ghi víi ®é réng 8 vÞ trÝ. thao t¸c ®óng víi mét phÇn tö bÊt kú cña m¶ng trong ch­¬ng tr×nh. ChÝnh lµ trong khÝ t­îng. ta xö lý m¶ng víi chØ sè thø nhÊt biÕn thiªn nhanh nhÊt.. Dßng thø 2 cã hai sè nguyªn viÕt c¸ch nhau lÇn l­ît chØ tæng sè ngµy quan tr¾c vµ sè yÕu tè ®­îc quan tr¾c. 4) NÕu sö dông tªn m¶ng ba chiÒu kh«ng cã chØ sè. th¸ng. T READ*. Theo quy ­íc ®ã th× m¶ng hai chiÒu lµ mét tr­êng hîp riªng cña m¶ng ba chiÒu dïng ®Ó biÓu thÞ tr­êng yÕu tè khÝ t­îng thñy v¨n nµo ®ã trªn mét miÒn ph¼ng h×nh ch÷ nhËt. ThÝ dô 20: TÝnh tÇn suÊt m­ a. ta cÇn ®Õn m¶ng bèn chiÒu. NÕu xÐt nhiÒu s«ng cïng mét lóc.. nhÊt qu¸n c¸c chØ sè thø nhÊt. thø hai.J.. Dßng thø 4 lµ tiªu ®Ò cét liÖt kª tªn tÊt c¶ c¸c yÕu tè ®­îc quan tr¾c. ta cã thÓ biÓu diÔn tr­êng ¸p suÊt n­íc biÓn t¹i c¸c ®iÓm nót kinh. cã thÓ dïng ®Ó chØ quan tr¾c t¹i mét tÇng cao. th¸ng.4).3). chØ sè thø hai j biÕn thiªn theo trôc y h­íng lªn b¾c.

FILE = 'HONDAU.OR. N) GOTO 15 IF (X (I) . J = 1. *) READ (1. I PRINT ‘(2I5)’. *) (X (I).0) THEN TS (J) = TS (J) + 1 I=I+1 GOTO 100 ELSE J=J+1 I=I+1 GOTO 300 END IF END IF I=N IF (TS (I) .suèt thêi gian quan tr¾c cã bao nhiªu lÇn m­a kÐo dµi 1 ngµy. 0) THEN I=I-1 GOTO 16 ELSE DO N = 1.MAT'. TS (N) END DO END IF 100 300 15 16 179 180 .EQ.EQ. X(I + 1) . STATUS = 'OLD') READ (1. bao nhiªu lÇn m­a kÐo dµi 2 ngµy liÒn.EQ. 0. N . *) READ (1. bao nhiªu lÇn m­a kÐo dµi 3 ngµy liÒn. N. *) N READ (1. N READ (1. *) DO I = 1.GT.. 0.EQ. REAL X (5000) INTEGER TS (5000) OPEN (1.0) THEN I=I+1 GOTO 100 ELSE J=1 IF (I . 6) END DO CLOSE (1) TS = 0 I=1 IF (I ..

M READ (1. FILE = 'HONDAU. M R (I. Víi file sè liÖu trong thÝ dô 20. 15). *) (X (I.. Tuy nhiªn. J) / (DX (I) * DX (J)) END DO 181 182 . B»ng c¸ch dïng m¶ng hai chiÒu X (5000. mét c¸ch tù nhiªn mçi chuçi gi¸ trÞ ngµy cña mét yÕu tè quan tr¾c cã thÓ ®­îc biÓu diÔn thµnh m¶ng mét chiÒu. J) END DO R (I. M .MAT'.MX (I) * MX (I)) END DO C TÝnh ma trËn t­¬ng quan DO I = 1. chØ sè m¶ng sÏ biÕn thiªn theo thø tù ngµy quan tr¾c. 15) OPEN (1.END ThÝ dô 21: TÝnh ma trËn t ­¬ng quan cña tËp sè liÖu quan tr¾c c¸c yÕu tè khÝ t­ îng thñy v¨n. 2. J) = R (I. Ta thÊy. M MX (I) = X (1. J) = 0. J) = R (I.MX (I) * MX (J) R (I. J) / N . N READ (1. MX (15). J). STATUS = 'OLD') READ (1. *) DO I = 1.1 DO J = I + 1. I) * X(J. viÕt ch­¬ng tr×nh ®äc c¸c th«ng tin cÇn thiÕt trong file vµ in ma trËn t­¬ng quan cña c¸c yÕu tè quan tr¾c lªn mµn h×nh. DX (15) . I)*X (1. I) DX (I) = DX (I) + X (J. N R (I. REAL X (5000. I) DO J = 2. *) READ (1.. . M) END DO CLOSE (1) C TÝnh trung b×nh vµ ®é lÖch qu©n ph­¬ng cña M yÕu tè DO I = 1. I) * X (K.0 DO K = 1. J) + X (K. J = 1. R (15. ta cã thÓ gép tÊt c¶ c¸c m¶ng mét chiÒu thµnh mét m¶ng hai chiÒu víi chØ sè thø hai biÕn thiªn theo thø tù yÕu tè quan tr¾c: 1. I) END DO MX (I) = MX (I) / N DX (I) = SQRT (DX (I) / N . I) DX (I) = X (1. *) N. N MX (I) = MX (I) + X (J. *) READ (1. J) = R (I. 15) nh­ trong ch­¬ng tr×nh d­íi ®©y sÏ rÊt thuËn tiÖn cho viÖc sö dông c¸c vßng lÆp DO víi tham sè ®Õm cña vßng DO ®ång thêi lµ chØ sè cña m¶ng.

Nh÷ng ®iÒu cÇn chó ý khi sö dông c¸c m¶ng Trong c¸c môc tr­íc cña ch­¬ng nµy ta ®· häc sö dông mét m¶ng . c¸c m¶ng còng th­êng cã thÓ g©y ra nh÷ng lçi míi. K)? H·y cã ý thøc vÒ ®Æt tªn cho chØ sè. ThÝ dô. nh­ng ph©n biÖt víi nhau bëi mét hoÆc mét sè chØ sè. cã thÓ h¬i d­ ra mét Ýt. J). K = 1. I). J = I. (R (K. kh«ng v­ît ra ngoµi kho¶ng biÕn thiªn cña chØ sè. M¶ng lµ mét yÕu tè m¹nh mÏ nhÊt trong Fortran. Bµi tËp 1.4 END DO DO I = 1. h·y kiÓm tra xem b¹n cã dïng I thay v× K kh«ng. VËy víi mçi bµi to¸n cô thÓ nÕu cÇn sö dông m¶ng. h·y tù hái "ta cã cÇn sö dông d÷ liÖu nµy nhiÒu lÇn kh«ng" vµ "d÷ liÖu nµy cã cÇn ph¶i l­u tr­íc khi ta sö dông nã kh«ng". I . J . mçi tuÇn mét dßng. MÆc dï víi tiÖn lîi c¬ b¶n nh­ trªn. nh­ng chóng ta kh«ng ®­îc sö dông nhiÒu phÇn tö h¬n so víi sè phÇn tö ®· m« t¶ ë phÇn khai b¸o cña ch­¬ng tr×nh. Mét khi m¶ng lµ cÇn thiÕt. ghi thµnh 4 dßng. M R (I. Mét khi b¹n dù ®Þnh sö dông m¶ng ®Ó m« t¶ d÷ liÖu. Cã thÓ dïng lÖnh in lªn mµn h×nh ®Ó theo dâi diÔn biÕn cña chØ sè. File d÷ liÖu víi ®¬n vÞ file 9 chøa 28 sè liÖu l­îng m­a ngµy trong bèn tuÇn lÔ liªn tiÕp.thø hai vµ K . nh­ng ch­¬ng tr×nh lµm viÖc sai. L) hay B (L. NÕu c©u tr¶ lêi cho c¸c c©u hái trªn lµ "kh«ng". nªn h¹n chÕ dïng m¶ng. MÆc dï chóng ta kh«ng nhÊt thiÕt ph¶i dïng hÕt tÊt c¶ c¸c phÇn tö cña m¶ng. tr­íc hÕt h·y kiÓm tra nh÷ng ®iÒu sau ®©y: ♠ KÝch th­íc m¶ng: M« t¶ m¶ng ph¶i chØ ra sè phÇn tö tèi ®a dù ®Þnh l­u gi÷ trong m¶ng. ♠ ChØ sè m¶ng: H·y kiÓm tra tõng chØ sè.1). Nhãm lÖnh sau 183 184 . ♠ Vßng lÆp DO: NÕu b¹n dïng chØ sè m¶ng lµm tham sè ®Õm cña vßng lÆp DO. h·y h×nh dung tr­íc kÝch th­íc tèi ®a cña mçi chiÒu cña m¶ng ®Ó khai b¸o cho ®óng.mét nhãm c¸c ®Þa chØ l­u gi÷ c¸c gi¸ trÞ cã mét tªn chung. M) END DO FORMAT (<M>F6. mµ dïng c¸c biÕn ®¬n. nh­ vËy rÊt tiÖn lîi khi sö dông c¸c vßng lÆp lång nhau vµ chØ sè ®Õm cña vßng lÆp DO ®ång thêi lµ chØ sè m¶ng.0 END DO DO I = 1. cßn khai b¸o thiÕu th× khi ch¹y ch­¬ng tr×nh sÏ ph¸t sinh lçi l«gic. nh­ng d­ nhiÒu qu¸ sÏ tèn bé nhí. M PRINT 4.2) END 7.4. NÕu chØ sè m¶ng v­ît ra ngoµi giíi h¹n cho phÐp th× h·y xem c¸c biÕn trong biÓu thøc sè häc tÝnh chØ sè cã bÞ nhÇm kh«ng. TËp qu¸n chung lµ sö dông biÕn I cho chØ sè thø nhÊt. nÕu trong mét vßng lÆp DO víi m¶ng ba chiÒu b¹n ®Þnh cho chØ sè thø ba cña m¶ng (K) biÕn thiªn. ®Ó tin ch¾c r»ng nã lµ sè nguyªn n»m trong giíi h¹n ®óng ®¾n. v× nã cho phÐp l­u gi÷ mét tËp hîp d÷ liÖu lín ®Ó dÔ xö lý trong ch­¬ng tr×nh cña chóng ta. h·y tin ch¾c r»ng b¹n ®· sö dông ®óng tªn biÕn trong ch­¬ng tr×nh cña b¹n. (R (I. ®Æc biÖt nh÷ng chØ sè lµ biÓu thøc sè häc.thø ba. Lçi th­êng gÆp lµ chØ sè ®¶o ng­îc: H·y tù hái chç nµy cÇn B (K. I) = 1.

.XXX. vÜ tuyÕn biªn phÝa b¾c (c¸c sè thùc) cña vïng. ViÕt ch­¬ng tr×nh cho phÐp ®äc tõ bµn phÝm ba sè nguyªn. ViÕt ch­¬ng tr×nh däc file RAIN chøa b¶ng d÷ liÖu l­îng m­a gåm 12 dßng (mçi dßng t­¬ng øng mét th¸ng) vµ 5 cét (mçi cét t­¬ng øng mét n¨m trong c¸c n¨m 1978-1982). trong ®ã mçi gi¸ trÞ ghi trªn mét dßng. X¸c ®Þnh vµ in b¶ng th«ng tin sau ®©y: LUONG MUA TRUNG BINH 1978 . KÕt qu¶ kiÓm tra ghi thµnh dßng th«ng b¸o thÝch hîp lªn mµn h×nh.TEM ghi sè liÖu vÒ tr­êng nhiÖt ®é n­íc biÓn trung b×nh th¸ng 1 ë vïng biÓn §«ng cã quy c¸ch ghi nh­ sau: . 28 READ (9. th¸ng.XXX. chØ ra ph­¬ng ¸n ®äc ®óng. 3. *) DMUA (I) END DO cã ®äc ®óng c¸c sè liÖu l­îng m­a øng víi tõng ngµy kh«ng. Zi = In chuçi xuÊt ph¸t vµ chuçi míi c¹nh nhau thµnh b¶ng hai cét. 2. vÜ tuyÕn biªn phÝa nam.XX 1982 . LËp mét chuçi Z gåm 20 gi¸ trÞ tho¶ m·n c¸c ®iÒu kiÖn: Z1 = Y1. n¨m hîp lý kh«ng. ViÕt ch­¬ng tr×nh ®äc mét chuçi Y gåm 20 gi¸ trÞ thùc tõ file EXPER. File d÷ liÖu tªn lµ SCS1. Z 20 = Y20 .REAL DMUA (28) DO I = 1.XXX.XX 1981 .XX 1980 . 4.XX 1979 .19) 3 .XX LUONG MUA CUC DAI THANG XX NAM XXXX LUONG MUA CUC TIEU THANG XX NAM XXXX 5.XXX.XXX. NÕu kh«ng ®óng. kiÓm tra xem ba sè nguyªn ®ã cã thÓ chØ ngµy. kinh tuyÕn biªn phÝa ®«ng. 185 186 Yi −1 + Yi + Yi+1 (i = 2.Dßng thø nhÊt gåm tuÇn tù c¸c tham sè: kinh tuyÕn biªn phÝa t©y.

TEM mét b¶ng sè liÖu nhiÖt ®é n­íc cña mÆt c¾t däc vÜ tuyÕn 17°N víi quy c¸ch nh­ sau: . . 7. sau ®ã lµ m¶ng sè liÖu nhiÖt ®é øng víi tÇng ®ã ghi thµnh c¸c dßng tõ b¾c xuèng nam.. 6.. H·y viÕt ch­¬ng tr×nh ®äc d÷ liÖu vµ in ra file SECT17.. .XX VI DO XX. chän ra mét profil nhiÖt ®é cho ®iÓm bÊt kú thuéc miÒn tÝnh..XX XX.b­íc l­íi theo ph­¬ng t©y ®«ng. H·y viÕt ch­¬ng tr×nh ®äc d÷ liÖu. Cho file d÷ liÖu SCS1. XX.Dßng thø hai liÖt kª c¸c kinh ®é tõ t©y sang ®«ng.PhÇn cßn l¹i gåm: mét sè nguyªn chØ tÇng s©u quan tr¾c (mÐt) ghi ë mét dßng. TiÕp tôc nh­ vËy cho ®Õn tÇng s©u d­íi cïng. KÕt qu¶ ghi lªn mµn h×nh nh­ sau: KINH DO XXX. Nh÷ng gi¸ trÞ khuyÕt (−32767) ghi b»ng sè 99. sau ®ã lµ c¸c gi¸ trÞ nhiÖt ®é n­íc (lÊy ®Õn hai ch÷ sè thËp ph©n) ghi th¼ng cét víi nh÷ng kinh ®é t­¬ng øng ®· liÖt kª ë dßng thø hai. c¸c cét tõ t©y sang ®«ng (c¸c sè thùc kh«ng dÝnh nhau).99 hoÆc n¨m dÊu hoa thÞ (*****).TEM ®· m« t¶ trong bµi tËp 5.XX Ch­¬ng 8 187 188 . Cho file d÷ liÖu SCS1.TEM ®· m« t¶ trong bµi tËp 5.Dßng trªn cïng lµ tiªu ®Ò: "Ph©n bè nhiÖt ®é n­íc trªn mÆt c¾t däc vÜ tuyÕn 17". theo cét (ph­¬ng t©y ®«ng). c¸c sè nguyªn) cña l­íi. . b­íc l­íi theo ph­¬ng b¾c nam (®o b»ng phót. theo chiÒu s©u tõ mÆt biÓn xuèng d­íi vµ mét sè nguyªn −32767 chØ gi¸ trÞ khuyÕt cña sè liÖu nhiÖt ®é. H·y viÕt ch­¬ng tr×nh ®äc d÷ liÖu vµ tÝnh c¸c gi¸ trÞ nhiÖt ®é trung b×nh cña tõng tÇng quan tr¾c vµ gi¸ trÞ nhiÖt ®é trung b×nh toµn biÓn kÓ tõ tÇng mÆt cho tíi tÇng quan tr¾c d­íi cïng.C¸c dßng tiÕp d­íi ghi ®é s©u tÇng quan tr¾c ë mçi ®Çu dßng t­¬ng øng.XX TANG (m) NHIET DO XXXX XXXX .Dßng thø hai ghi kÝch th­íc cña ma trËn sè liÖu (c¸c sè nguyªn) theo dßng (ph­¬ng b¾c nam). .

5) C¸c ®èi sè cña mét hµm ph¶i n»m trong cÆp dÊu ngoÆc ®¬n. Sau ®ã ta häc c¸ch tù x©y dùng nh÷ng ch­¬ng tr×nh con lo¹i hµm ®Ó gi¶i quyÕt nh÷ng bµi to¸n riªng cña m×nh.Ch­¬ng tr×nh con lo¹i hµm Khi x©y dùng ch­¬ng tr×nh gi¶i mét bµi to¸n t­¬ng ®èi phøc t¹p. nÕu tªn b¾t ®Çu b»ng mét trong c¸c ch÷ c¸i tõ I ®Õn N th× gi¸ trÞ hµm lµ sè nguyªn. Nh÷ng ch­¬ng tr×nh con lo¹i thñ tôc sÏ xÐt trong ch­¬ng 9. J) trong bµi tËp nµy. KiÓm tra xem nã lµ sè ch½n hay sè lÎ vµ in ra th«ng b¸o thÝch hîp. 8. 2) Mét hµm kh«ng thÓ ®­îc sö dông ë vÕ tr¸i cña dÊu = trong mét lÖnh g¸n. biÓu thøc hay c¸c hµm kh¸c.) ThÝ dô 22: §äc tõ bµn phÝm mét sè nguyªn. 4) C¸c ®èi sè cña hµm th­êng cïng kiÓu nh­ hµm.. Ta cã thÓ sö dông hµm chuÈn MOD (I. 6) C¸c ®èi sè cña mét hµm cã thÓ lµ c¸c h»ng. ' NHAP MOT SO NGUYEN ' 189 190 . ThÝ dô. Nh÷ng hµm nµy thùc chÊt còng lµ nh÷ng ch­¬ng tr×nh con. ta sÏ thÊy ch­¬ng tr×nh th­êng dµi vµ khã ®äc. khi cÇn gi¸ trÞ tuyÖt ®èi cña mét ®¹i l­îng ta dïng hµm ABS. Trong môc 2. biÕn. VËy ch­¬ng tr×nh gi¶i bµi tËp nµy cã thÓ nh­ sau: PRINT *. nh­ng chóng ®· ®­îc x©y dùng s½n (hµm chuÈn) vµ n»m trong bé biªn dÞch. Hµm nµy tr¶ vÒ sè d­ cña phÐp chia I/J. Nh÷ng vÊn ®Ò nµy cã thÓ kh¾c phôc b»ng c¸ch sö dông nh÷ng ch­¬ng tr×nh con (subprogram) . nÕu X thùc th× gi¸ trÞ hµm sÏ lµ thùc. 3) Tªn cña hµm chuÈn x¸c ®Þnh kiÓu d÷ liÖu cña ®Çu ra cña hµm.. Trong ch­¬ng nµy sÏ tãm t¾t vÒ nh÷ng ®Æc ®iÓm cña c¸c hµm chuÈn. C¸c hµm chuÈn Mét hµm tÝnh ra mét gi¸ trÞ. Nh÷ng ®Æc ®iÓm chÝnh cña c¸c hµm chuÈn lµ: 1) Tªn hµm vµ c¸c gi¸ trÞ ®Çu vµo (c¸c ®èi sè) cïng thÓ hiÖn mét gi¸ trÞ.4 ch­¬ng 2 ®· giíi thiÖu vµ thØnh tho¶ng trong c¸c bµi kh¸c chóng ta ®· sö dông mét vµi hµm chuÈn hay hµm riªng cña Fortran.lµ mét nhãm c¸c lÖnh ®­îc t¸ch riªng ra vµ sau ®ã sÏ ®­îc gäi thùc hiÖn khi cÇn trong ch­¬ng tr×nh cña chóng ta. thÝ dô c¨n bËc hai cña mét sè hay gi¸ trÞ trung b×nh cña mét m¶ng. ThÝ dô.1. chóng ta chØ viÖc gäi trùc tiÕp trong ch­¬ng tr×nh khi cÇn. trõ mét sè ngo¹i lÖ (xem phô lôc 1). (ThÝ dô hµm ABS(X) nÕu ®èi sè X lµ sè nguyªn th× gi¸ trÞ hµm ABS(X) cho ra gi¸ trÞ tuyÖt ®èi lµ sè nguyªn. Trong Fortran cã hai lo¹i ch­¬ng tr×nh con: ch­¬ng tr×nh con lo¹i hµm (function) vµ ch­¬ng tr×nh con lo¹i thñ tôc (subroutine). Fortran cã rÊt nhiÒu hµm chuÈn (xem danh s¸ch c¸c hµm chuÈn trong phô lôc 1). 7) C¸c hµm tù sinh (generic function) chÊp nhËn nhiÒu kiÓu ®èi sè vµ tr¶ l¹i gi¸ trÞ hµm cïng kiÓu víi ®èi sè. khi tÝnh sin cña mét gãc ta dïng hµm SIN. Hµm MOD cã hai ®èi sè nguyªn I vµ J. NhiÒu khi cïng mét sè thao t¸c nh­ nhau ®­îc thùc hiÖn lÆp l¹i ë mét sè chç trong mét ch­¬ng tr×nh còng lµm cho ch­¬ng tr×nh cña chóng ta trë thµnh dµi h¬n.

ViÕt ch­¬ng tr×nh ®äc ®é dµi ba c¹nh cña mét tam gi¸c vµ c¸c gãc ®èi diÖn mçi c¹nh. ' LA SO LE') 8.5 8 READ *. Fortran cho phÐp chóng ta tù x©y dùng nh÷ng hµm cña riªng m×nh theo hai c¸ch: hµm lÖnh (statement function) vµ hµm ch­¬ng tr×nh con (function subprogram). K ELSE PRINT 8. th× ta dïng hµm ch­¬ng tr×nh con. ta nªn thùc hiÖn nh­ lµ mét hµm thay v× mçi lÇn cÇn l¹i ph¶i viÕt ra c¸c lÖnh tÝnh to¸n. C¸c hµm ch­¬ng tr×nh con Trong thùc tÕ lËp tr×nh gi¶i c¸c bµi to¸n khoa häc kü thuËt nhiÒu khi ®ßi hái nh÷ng hµm ch­a cã trong danh s¸ch c¸c hµm chuÈn cña Fortran. 2) §Þnh nghÜa hµm lÖnh gåm tªn cña hµm. nÕu ph¶i thùc hiÖn nhiÒu tÝnh to¸n hay thao t¸c míi dÉn tíi mét gi¸ trÞ kÕt qu¶. 8. biÓu thøc tÝnh gi¸ trÞ hµm ë vÕ bªn ph¶i cña dÊu b»ng. ' LA SO CHAN') FORMAT ( 1X. nÕu kh«ng th× kiÓu cña hµm sÏ ®­îc x¸c ®Þnh theo c¸ch ®Þnh kiÓu Èn. K IF (MOD (K. I5. th× ta sö dông hµm lÖnh.2. cïng víi c¸c lÖnh khai b¸o kiÓu d÷ liÖu.EQ. ThÝ dô 23: DiÖn tÝch cña tam gi¸c cã thÓ tÝnh theo hai c¹nh vµ gãc xen gi÷a chóng: DiÖn tÝch= 0. NÕu tÝnh to¸n cã thÓ viÕt trong mét lÖnh g¸n duy nhÊt. K END IF FORMAT ( 1X.2. NÕu tÝnh to¸n hay lÆp l¹i th­êng xuyªn vµ ®ßi hái mét sè b­íc. TÝnh vµ in diÖn tÝch cña tam gi¸c theo ba ph­¬ng ¸n: trong mçi ph­¬ng ¸n sö 191 192 .5 × c¹nh 1 × c¹nh 2 × sin (gãc) . 0) THEN PRINT 5. I5. ng­îc l¹i. 3) Tªn hµm cã thÓ khai b¸o trong lÖnh khai b¸o kiÓu. sau ®ã ®Õn c¸c ®èi sè n»m trong cÆp dÊu ngoÆc ®¬n ë vÕ bªn tr¸i cña dÊu b»ng. 2) .1. Hµm lÖnh D¹ng tæng qu¸t cña hµm lÖnh lµ Tªn hµm (Danh s¸ch ®èi sè) = BiÓu thøc Nh÷ng quy t¾c ph¶i tu©n thñ khi viÕt vµ dïng hµm lÖnh: 1) Hµm lÖnh ®­îc ®Þnh nghÜa ë ®Çu ch­¬ng tr×nh.

ë c¸c dßng lÖnh thø 10−12 ta gäi hµm ba lÇn. C2.5 * C1 * C2 * SIN (GOC) PRINT *.dông mét cÆp c¹nh vµ gãc t­¬ng øng. A) DT2 = DT (CC. ' Nhap ba goc (radian) theo thu tu sau:' PRINT *. NÕu c¸c gãc nhËp vµo ®­îc cho b»ng ®é vµ ®Ó kh«ng cÇn chuyÓn ®æi thµnh ra®ian tr­íc khi gäi hµm DT tÝnh c¸c diÖn tÝch. Trong bµi tËp nµy ta ph¶i tÝnh diÖn tÝch tam gi¸c ba lÇn.0) 8. CC. CB. ta cã thÓ ®Þnh nghÜa l¹i hµm DT nh­ sau: DT(C1. do ®ã cã thÓ dïng hµm lÖnh ®Ó tÝnh diÖn tÝch tam gi¸c. C1. KiÓu d÷ liÖu cña hµm DT ®­îc m« t¶ t­êng minh t¹i lÖnh m« t¶ REAL ë ®Çu ch­¬ng tr×nh. GOC) = 0. 3F7. CA.14159 / 180. DT3 FORMAT (1X. ' Nhap ba canh tam giac theo thu tu sau:' PRINT *. DT3. C2. mçi lÇn ta chuyÓn c¸c biÕn kh¸c nhau vµo vÞ trÝ cña c¸c ®èi sè h×nh thøc. B. Trong ch­¬ng tr×nh. GOC vµ gi¸ trÞ cña hµm ®­îc tÝnh chØ b»ng mét lÖnh g¸n (dßng lÖnh thø ba).5*C1*C2*SIN (GOC * 3. B. GOC DT (C1. DT. C. A. A. CC PRINT *. C) PRINT * PRINT *. C2. DT1. CB. DT2. C2. C DT1 = DT (CB. Trong ch­¬ng tr×nh chÝnh c¸c gãc ®­îc cho b»ng ra®ian. ' Doi dien: canh A canh B canh C' READ *. DT2. ' Canh A Canh B Canh C' READ *. B) DT3 = DT (CA. DT1.2. Ch­¬ng tr×nh cã thÓ nh­ sau: PROGRAM DTTG * REAL CA. CC. Hµm ch­¬ng tr×nh con 193 194 . CB. GOC) = 0. 'Cac dien tich tinh theo ba phuong an la:' PRINT 5.2) END 5 NhËn xÐt r»ng trong ch­¬ng tr×nh nµy hµm tÝnh diÖn tÝch tam gi¸c ®­îc ®Þnh nghÜa ë ®Çu ch­¬ng tr×nh bëi tªn DT vµ ba ®èi sè h×nh thøc C1.2. CA.

. Hµm lo¹i nµy kh¸c víi hµm lÖnh ë chç nã ®­îc tÝnh kh«ng ph¶i b»ng mét lÖnh g¸n duy nhÊt mµ b»ng mét sè lÖnh. Ta xÐt thÝ dô vÒ x©y dùng hµm con vµ c¸ch dïng nã trong ch­¬ng tr×nh chÝnh qua thÝ dô 24 d­íi ®©y. Tªn hµm cã ý nghÜa m« t¶ Èn kiÓu gi¸ trÞ cña hµm nÕu trong ch­¬ng tr×nh chÝnh ch­a khai b¸o t­êng minh. ThÝ dô 24: C¸c m« h×nh sè th­êng tÝnh ra c¸c gi¸ trÞ cña c¸c thµnh phÇn kinh h­íng Vk vµ vÜ h­íng Vv cña tèc ®é giã ë nh÷ng ®iÓm kh¸c nhau.) C¸c lÖnh m« t¶ c¸c ®èi sè. Tªn hµm ®­îc chän theo quy t¾c nh­ tªn h»ng. Trong danh s¸ch ®èi sè nÕu cã tõ hai ®èi sè trë lªn th× c¸c ®èi sè c¸ch nhau bëi dÊu ph¶y. lÖnh RETURN chuyÓn ®iÒu khiÓn vÒ ch­¬ng tr×nh chÝnh vµ lÖnh END b¸o cho ch­¬ng tr×nh dÞch sù kÕt thóc cña ch­¬ng tr×nh con. Vk > 0 195 196 . Tuy nhiªn. nªn m« t¶ t­êng minh c¸c ®èi sè cña hµm trong phÇn khai b¸o c¸c biÕn cña hµm. . VËy h×nh d¸ng tæng qu¸t cña mét hµm chu¬ng tr×nh con nh­ sau: FUNCTION Tªn (®èi sè 1. cßn h­íng giã (gãc gi÷a vect¬ giã vµ h­íng b¾c) tÝnh theo c«ng thøc α  180 − α d= 180 + α 360 − α  nÕu nÕu nÕu nÕu Vv ≥ 0. tªn biÕn cña Fortran. Tªn c¸c ®èi sè còng cã ý nghÜa m« t¶ Èn kiÓu d÷ liÖu cña ®èi sè. Vk < 0 Vv < 0. ®èi sè 2. Nh÷ng gi¸ trÞ cña c¸c ®èi sè thùc tÕ göi vµo c¸c ®èi sè h×nh thøc ph¶i phï hîp vÒ kiÓu vµ ®óng tuÇn tù nh­ trong danh s¸ch ®èi sè. ngoµi c¸c ®èi sè cßn cã thÓ khai b¸o c¸c biÕn kh¸c ®­îc dïng chØ trong néi bé hµm ch­¬ng tr×nh con. c¸c biÕn côc bé C¸c lÖnh thùc hiÖn RETURN END C¸c hµm ch­¬ng tr×nh con ®­îc viÕt t¸ch ra khái ch­¬ng tr×nh chÝnh vµ n»m sau lÖnh END cña ch­¬ng tr×nh chÝnh. Vk < 0 Vv < 0. Tèc ®é giã tÝnh b»ng c«ng thøc V = Vk2 + Vv2 . Trong phÇn khai b¸o nµy.Thùc chÊt cña hµm ch­¬ng tr×nh con lµ mét hµm do ng­êi lËp tr×nh tù x©y dùng. Tõ nh÷ng cÆp gi¸ trÞ thµnh phÇn kinh h­íng vµ vÜ h­íng cÇn tÝnh ra tèc ®é V vµ h­íng giã d . khi cÇn tíi hµm con ng­êi ta th­êng dïng lÖnh g¸n ®Ó g¸n gi¸ trÞ tÝnh ®­îc bëi hµm con vµo mét biÕn hoÆc dïng trùc tiÕp tªn hµm con trong c¸c biÓu thøc. do ®ã ng­êi ta cßn gäi lµ hµm do ng­êi dïng ®Þnh nghÜa. Hµm ch­¬ng tr×nh con b¾t ®Çu víi lÖnh kh«ng thùc hiÖn ®Ó ®Æc t¶ hµm b»ng mét tªn vµ mét danh s¸ch ®èi sè nh­ sau FUNCTION Tªn hµm (danh s¸ch ®èi sè) Sau c¸c lÖnh m« t¶ vµ tÝnh to¸n. Trong ch­¬ng tr×nh chÝnh. Vk > 0 Vv ≥ 0..

N V = TOCDO (GIOK (I). H. STATUS = 'UNKNOWN') WRITE (1. HUONG INTEGER I.1) END DO C 4 5 197 198 . Ch­¬ng tr×nh cã thÓ nh­ sau: REAL GIOK (200). XX.X XX. ‘VV’. H FORMAT (1X. ®Ó tÝnh tèc ®é giã cã thÓ dïng lo¹i hµm lÖnh. GIOV (200).. VV) = SQRT (VK*VK+VV*VV) OPEN (1. 4) ‘TT’. TOCDO. VËy cã thÓ sö dông c¸c hµm. GIOV (I)) H = HUONG (GIOV (I). GIOK (I)) WRITE (1. 5) I.X m/s HUONG XXX XXX XXX XXX Khi lËp ch­¬ng tr×nh gi¶i quyÕt nhiÖm vô nµy ta nhËn thÊy cÇn tÝnh m« ®un cña tèc ®é giã vµ h­íng giã nhiÒu lÇn. Vk π Gi¶ sö c¸c gi¸ trÞ cña c¸c thµnh phÇn kinh h­íng vµ vÜ h­íng cña tèc ®é giã ®· l­u trong file GIOKV. GIOV (I). 4F7. I3. ‘HUONG’ FORMAT(1X.1) DO I = 1.KQ1 thµnh hai cét. ®Ó tÝnh h­íng giã dïng hµm ch­¬ng tr×nh con. V. ViÕt ch­¬ng tr×nh ®äc file GIOKV.X Vv XX.. ‘VK’. FILE = 'GIO.KQ1 vµ ghi kÕt qu¶ tÝnh tèc ®é vµ h­íng giã vµo file míi GIO. GIOV (I) END DO CLOSE (1) OPEN (1. 4F7. GIOK (I). N M« t¶ hµm lÖnh tÝnh m« ®un tèc ®é giã TOCDO (VK. ‘M/S’. ngoµi ra.trong ®ã α = Vv 180 arctg .KQ1'. STATUS = 'OLD') READ(1.X XX. N READ(1.KQ2 thµnh 4 cét d¹ng sau: TT Vk XX XX .*) GIOK (I). I3.*) N DO I = 1. dßng ®Çu tiªn cña file ghi sè dßng d÷ liÖu cã trong file.KQ2'. FILE = 'GIO. V.

0 IF (VK . 0. V× gi¸ trÞ m« ®un tÝnh ®¬n gi¶n b»ng mét biÓu thøc nªn ®· dïng lo¹i hµm lÖnh.0 . 0. VK.0 . Do ®ã ®· tæ chøc tÝnh chóng trong c¸c hµm.0) THEN IF (VV . ®ã lµ hµm TOCDO ®­îc ®Þnh nghÜa ë dßng lÖnh thø ba cña ch­¬ng tr×nh chÝnh. ta thÊy viÖc tÝnh m« ®un tèc ®é vµ h­íng ®­îc thùc hiÖn nhiÒu lÇn.END C Hµm ch­¬ng tr×nh con FUNCTION HUONG (VV. 0.GE. 0.GT.0 ELSE HG = 270.0) THEN IF (VV . 0.0) THEN HG = G ELSE HG = 360.0) THEN HG = 180. VK) REAL VV.GE.14159 * 180.0 + G ENDIF ENDIF ENDIF HUONG = HG RETURN END Trong thÝ dô nµy.EQ. HG IF (VK .GE.G ENDIF ELSE IF (VV .G ELSE HG = 180.0) THEN HG = 90. ViÖc tÝnh h­íng ph¶i thùc hiÖn nhê mét sè 199 200 .0 ENDIF ELSE G = ATAN (ABS (VV / VK)) / 3.

01 vµ nghiÖm t×m ®­îc nÕu gi¸ trÞ tuyÖt ®èi cña ®a thøc kh«ng lín h¬n 0. 0. ta sÏ t×m nh÷ng chç mµ ®å thÞ cña ®a thøc c¾t trôc x : b»ng c¸ch tÝnh c¸c gi¸ trÞ cña ®a thøc t¹i c¸c ®Çu mót cña kho¶ng. '4'. 9X. ThÝ dô 25: ¦íc l­îng nghiÖm cña ®a thøc bËc 4 f ( x) = a0 + a1 x + a2 x 2 + a3 x 3 + a4 x 4 trªn kho¶ng [−5. PHAI. Sau ®ã ph­¬ng ph¸p chia ®«i x¸c ®Þnh nghiÖm víi ®é chÝnh x¸c cÇn thiÕt. Qu¸ tr×nh chia kho¶ng vµ t×m lÆp l¹i cho ®Õn khi nghiÖm ®­îc x¸c ®Þnh ®ñ ®é chÝnh x¸c. ta sö dông hai ph­¬ng ph¸p t×m nghiÖm cña ph­¬ng tr×nh lµ ph­¬ng ph¸p t×m hÑp dÇn vµ ph­¬ng ph¸p chia ®«i. A PRINT 5. KiÓu d÷ liÖu cña hai hµm nµy ®­îc khai b¸o t­êng minh ë phÇn khai b¸o trong ch­¬ng tr×nh chÝnh. Kh¸c víi ph­¬ng ph¸p t×m hÑp dÇn chia kho¶ng chøa nghiÖm thµnh nhiÒu phô kho¶ng tr­íc khi t×m. Trong thÝ dô nµy. A3.001) THEN 201 202 . 11X.0 + REAL (I-1) * 0. NGHIEM LOGICAL XONG PRINT * . KHOANG. Trong ph­¬ng ph¸p t×m hÑp dÇn. A1. sau ®ã x¸c ®Þnh nöa nµo chøa nghiÖm. TRAI)) . Sau ®ã kho¶ng chøa nghiÖm l¹i ®­îc chia tiÕp thµnh c¸c phô kho¶ng nhá h¬n vµ qu¸ tr×nh t×m l¹i b¾t ®Çu tõ ®Çu tr¸i cho ®Õn khi x¸c ®Þnh ®­îc kho¶ng chøa nghiÖm. ph­¬ng ph¸p chia ®«i chØ chia kho¶ng chøa nghiÖm thµnh hai nöa. do ®ã ®· dïng lo¹i hµm ch­¬ng tr×nh con HUONG. A4 ' READ*. INTEGER I. '3'. miÒn t×m nghiÖm ®­îc chia thµnh nh÷ng kho¶ng ®ñ nhá sao cho thùc tÕ cã thÓ xem r»ng trong mét kho¶ng nµo ®ã chØ cã mét nghiÖm. XÐt c¸c kho¶ng tõ tr¸i sang ph¶i. nÕu dÊu cña c¸c gi¸ trÞ cña ®a thøc t¹i c¸c ®Çu mót kh¸c nhau.phÐp tÝnh vµ thao t¸c. '2' / 1X. th× ®å thÞ c¾t trôc x vµ Ýt nhÊt cã mét nghiÖm trong kho¶ng ®ã. ' X + '). Gi¶ sö ph­¬ng ph¸p chia ®«i tiÕp tôc lÆp cho ®Õn khi nöa kho¶ng nhá h¬n 0. A2. 4(F7. ' NHAP CAC HE SO A0. 11X.LT.25 PHAI = TRAI + 0.25 IF (ABS(F(A. §Ó gi¶i bµi to¸n nµy. ' DA THUC:' * / 1X.3) N=0 DO I = 1.3. ta kÕt hîp hai ph­¬ng ph¸p: ph­¬ng ph¸p t×m hÑp dÇn ®Ó x¸c ®Þnh kho¶ng chøa nghiÖm. Ph­¬ng ph¸p chia ®«i b¾t ®Çu víi mét kho¶ng ®· ®­îc biÕt lµ chøa mét nghiÖm. 40 TRAI = −5. GIUA. 5]. N REAL A (0 : 4) REAL TRAI. Sù chia ®«i tiÕp tôc cho ®Õn khi t×m ®­îc nghiÖm víi ®é chÝnh x¸c mong muèn. F7.001. A 5 FORMAT (/.

15 *

20

PRINT 15, TRAI, F(A, TRAI) FORMAT (1X, 'NGHIEM = ', F7.3, 3X, 'F(NGHIEM) = ', F7.3) N=N+1 ELSE IF (F(A, TRAI)*F(A, PHAI) .LT. 0.0) THEN XONG = .FALSE. KHOANG = PHAI − TRAI IF (KHOANG .GT. 0.01 .AND. .NOT. XONG ) THEN GIUA = 0.5 *(TRAI + PHAI) IF (ABS (F(A, GIUA)) .LT. 0.001) THEN XONG = .TRUE.
ELSE IF (F(A, GIUA)*F(A, TRAI) .LT. 0.0) THEN

PHAI = GIUA ELSE TRAI = GIUA END IF KHOANG = PHAI − TRAI GOTO 20 END IF IF (KHOANG .GT. 0.01) THEN NGHIEM = GIUA ELSE NGHIEM = 0.5 *(TRAI + PHAI) END IF PRINT 15, NGHIEM, F(A, NGHIEM) N=N+1 END IF END DO TRAI = 5.0 IF (ABS (F (A, TRAI)) .LT. 0.001) THEN PRINT 15, TRAI, F (A, TRAI) N=N+1 END IF IF (N .EQ. 0) THEN PRINT *, ' KHONG NGHIEM TRONG KHOANG [-5,5]' END IF END

203

204

REAL FUNCTION F (A, X) REAL A(0 : 4), X F=A(0) + A(1)*X + A(2)*X**2 + A(3)*X**3 + A(4)*X**4 RETURN END

Trong ch­¬ng tr×nh nµy, ta ®· chia miÒn t×m nghiÖm [−5, 5] thµnh 40 kho¶ng, mçi kho¶ng dµi 0,25 vµ thùc hiÖn viÖc kiÓm tra tõ tr¸i sang ph¶i xem trong nh÷ng kho¶ng nµo cã thÓ cã nghiÖm b»ng ph­¬ng ph¸p t×m hÑp dÇn b»ng vßng DO. Trong mçi kho¶ng, nÕu gi¸ trÞ ®a thøc ë ®Çu mót tr¸i cña kho¶ng kh«ng kh¸c kh«ng qu¸ 0,001 th× nhËn nghiÖm b»ng ®Çu mót tr¸i vµ chuyÓn sang xÐt kho¶ng tiÕp sau ë bªn ph¶i. Cßn nÕu gi¸ trÞ ®a thøc ë hai ®Çu mót cña kho¶ng ®ang xÐt kh¸c dÊu, th× ta t×m nghiÖm theo ph­¬ng ph¸p chia ®«i. Qu¸ tr×nh lÆp ®Ó liªn tiÕp chia ®«i kho¶ng thùc hiÖn b»ng vßng lÆp IF l«gic vµ lÖnh GOTO v« ®iÒu kiÖn cho ®Õn khi kho¶ng trë nªn nhá h¬n hoÆc b»ng 0,01 hoÆc gi¸ trÞ tuyÖt ®èi cña ®a thøc ë gi÷a kho¶ng kh«ng lín h¬n 0,001. ViÖc tÝnh gi¸ trÞ ®a thøc thùc hiÖn nhiÒu lÇn víi nh÷ng gi¸ trÞ x kh¸c nhau nªn ta ®· tæ chøc hµm F ®Ó chuyªn lµm viÖc nµy. ThÝ dô 26: ViÕt ch­¬ng tr×nh ®äc liªn tiÕp tõ bµn phÝm ba sè nguyªn, kiÓm tra xem chóng cã tuÇn tù chØ ngµy th¸ng n¨m hîp lý kh«ng vµ in ra th«ng b¸o phï hîp. Ch­¬ng tr×nh kÕt thóc khi ta nhËp ngµy th¸ng n¨m ®Òu lµ nh÷ng sè kh«ng.
PROGRAM KTNGAY INTEGER ID, IM, IY PRINT *, 'HAY NHAP BA SO NGUYEN' READ *, ID, IM, IY IF (ID .NE. 0 .AND. IM .NE. 0 .AND. IY .NE. 0) THEN IF (OKDATE (ID, IM, IY)) THEN PRINT*, 'CO THE LA NGAY THANG NAM HOP LY' ELSE PRINT*, ‘KHONG THE LA ’, ‘NGAY THANG NAM HOP LY’ ENDIF GOTO 10 ENDIF END

10

*

INTEGER FUNCTION SNTT (M, Y) INTEGER M,Y IF (M. EQ. 2) THEN SNTT = 28 IF ((MOD (Y,100) .NE. 0 .AND. MOD (Y,4) .EQ. 0) .OR. 205 206

* *

(MOD (Y,100) .EQ. 0 .AND. MOD (Y/100, 4) .EQ .0)) SNTT = 29
ELSE IF (M.EQ.4 .OR. M.EQ.6 .OR. M.EQ.9 .OR. M.EQ.11) THEN

SNTT = 30 ELSE SNTT = 31 ENDIF RETURN END

LOGICAL FUNCTION OKDATE (D, M, Y) INTEGER D,M,Y,NNGAY IF (D.LT.1.OR.D.GT.31.OR.M.LT.1.OR.M.GT.12) THEN OKDATE = .FALSE. ELSE NNGAY = SNTT (M, Y) OKDATE = D.LE.NNGAY ENDIF RETURN END Trong ch­¬ng tr×nh nµy dïng hai hµm con: hµm OKDATE vµ hµm SNTT. Hµm OKDATE cã ba ®èi sè nguyªn D, M, Y vµ ®­a ra gi¸ trÞ l«gic lµ .TRUE. nÕu D, M, Y lµ nh÷ng sè nguyªn chØ ngµy th¸ng hîp lý. Hµm SNTT cã hai ®èi sè nguyªn vµ ®­a ra gi¸ trÞ nguyªn lµ sè ngµy cña th¸ng ®ang xÐt. NhËn thÊy r»ng ch­¬ng tr×nh chÝnh gäi hµm con OKDATE, vÒ phÇn m×nh hµm con OKDATE trong khi thùc hiÖn l¹i gäi hµm con SNTT.

8.3. ChØ dÉn gì rèi vµ phong c¸ch viÕt ch­¬ng tr×nh cã hµm con
KiÓm tra sù lµm viÖc ®óng ®¾n cña hµm tù x©y dùng còng gièng nh­ kiÓm tra ch­¬ng tr×nh chÝnh. Nªn thö cho hµm con nh÷ng gi¸ trÞ ®èi sè kh¸c nhau xem nã cã ®­a ra gi¸ trÞ hµm ®óng ®¾n kh«ng. NÕu hµm con lµm viÖc kh«ng ®óng ®¾n, h·y kiÓm tra nh÷ng ®iÓm sau: 1) Sù phï hîp vÒ kiÓu vµ thø tù cña ®èi sè thùc tÕ vµ ®èi sè h×nh thøc. 2) Kh¼ng ®Þnh r»ng tr­íc lÖnh RETURN hµm ®· nhËn mét gi¸ trÞ ®óng. 3) In kiÓm tra gi¸ trÞ c¸c ®èi sè tr­íc vµ sau khi gäi hµm con. 207 208

2) Nªn dïng tªn c¸c ®èi sè h×nh thøc trong hµm con trïng víi tªn cña c¸c ®èi sè thùc tÕ. Mét khi b¹n quyÕt ®Þnh dïng hµm con. Sö dông hµm lÖnh vµ hµm ch­¬ng tr×nh con sÏ lµm ch­¬ng tr×nh cã tÝnh cÊu tróc h¬n vµ dÔ ®äc.9 + y y + 1 + 2y + 3y 2 2 sin y y + 1 + 2y 2 + 3y 4 4 γ = δ = 2.3 z + z 4 z 2 + 1 + 2 z + 3z 2 1 sin 2 y + 1 + 2 sin y + 3 sin 2 y trong ch­¬ng tr×nh h·y x©y dùng hµm con tªn lµ DENOM víi ®èi sè x chuyªn ®Ó tÝnh biÓu thøc x 2 + 1 + 2 x + 3x 2 . H·y c¶i tiÕn ch­¬ng tr×nh t×m nghiÖm cña ®a thøc ë thÝ dô 25 trang 139 sao cho nã cho phÐp ng­êi dïng nhËp kho¶ng x¸c ®Þnh nghiÖm thay v× dïng kho¶ng [−5. 5]. C«sin cña mét gãc tÝnh theo c«ng thøc chuçi 209 210 . th× h·y chän tªn ®èi sè h×nh thøc hoµn toµn kh¸c ®Ó tr¸nh sù nhÇm lÉn víi c¸c biÕn cña ch­¬ng tr×nh chÝnh. ViÕt hµm ch­¬ng tr×nh con nhËn gi¸ trÞ mét sè nguyªn vµ tr¶ vÒ giai thõa cña sè nguyªn ®ã.4) Cã thÓ dïng lÖnh PRINT trong hµm con ®Ó ®Þnh vÞ chç lçi trong hµm con. NÕu hµm ®­îc dïng nhiÒu lÇn víi nh÷ng ®èi sè thùc tÕ kh¸c nhau. H·y c¶i tiÕn ch­¬ng tr×nh t×m nghiÖm cña ®a thøc ë thÝ dô 25 trang 139 sao cho nã cho phÐp ng­êi dïng nhËp kÝch th­íc cña phô kho¶ng trong phÇn t×m hÑp dÇn. h·y c©n nh¾c nh÷ng ®iÒu sau ®©y: 1) Chän tªn hµm con sao cho tªn cã tÝnh gîi nhí. Trong ch­¬ng tr×nh con còng nªn cã cÊu tróc s¸ng râ. 4. Cã thÓ c¸ch sau ®©y lµ mét c¸ch nªn ®­îc dïng: tªn c¸c ®èi sè trong hµm con ®Æt b»ng c¸c tõ tiÕng Anh. h·y dïng hµm con kh¸c trong hµm con. NÕu hµm dµi vµ khã ®äc. 2. cßn tªn c¸c ®èi sè thùc tÕ . 5.b»ng c¸c tõ t­¬ng øng cña tiÕng ViÖt. 3. ViÕt ch­¬ng tr×nh in gi¸ trÞ c¸c biÓu thøc sau: α= β= 6. Bµi tËp 1.

Sau ®ã h·y viÕt mét ch­¬ng tr×nh chÝnh cho phÐp ta nhËp tõ bµn phÝm mét ngµy bÊt kú trong qu¸ khø hoÆc trong t­¬ng lai. H·y viÕt hµm ch­¬ng tr×nh con COSX víi ®Çu vµo lµ gãc tÝnh b»ng ®é. Y1. BiÕt r»ng ngµy 1-1-2001 lµ ngµy thø hai.1. Trong bµi nµy ta häc c¸ch viÕt c¸c thñ tôc vµ sö dông c¸c thñ tôc trong c¸c bµi to¸n øng dông.nÕu n ch½n trung vÞ b»ng x (n / 2) + x ( n / 2 + 1) . Trong khi mét hµm chØ giíi h¹n ë viÖc tÝnh ra mét gi¸ trÞ. M2. Hµm nµy sÏ cã gi¸ trÞ l«gic b»ng TRUE nÕu ngµy D2. Y1. sö dông hµm con tÝnh giai thõa ë bµi tËp 4. cét thø hai chøa c«sin cña gãc tÝnh theo hµm chuÈn COS cña Fortran vµ cét thø ba chøa c«sin tÝnh theo hµm con COSX.000001. 6. D2. M2. th× c¸c thñ tôc ch­¬ng tr×nh con (hay cßn gäi lµ thñ tôc do ng­êi lËp tr×nh tù x©y dùng) cã thÓ tÝnh ra mét sè gi¸ trÞ. Y1. hoÆc thùc hiÖn mét sè thao t¸c. M2. Y2) víi 6 ®èi sè h×nh thøc kiÓu sè nguyªn: D1. 9. M1. ViÕt hµm ch­¬ng tr×nh con DAD (D1. Khai b¸o vµ gäi ch­¬ng tr×nh con thñ tôc 211 212 . D2. tr¶ vÒ gi¸ trÞ cña trung vÞ cña chuçi x (n) theo ®Þnh nghÜa: n  . th¸ng. Sau ®ã viÕt ch­¬ng tr×nh chÝnh in b¶ng ba cét: cét thø nhÊt ( x ) chøa gãc tõ 0 ®Õn 360° víi gia sè 15°.cos x = 1 − x 2 x 4 x6 + − + . cßn nÕu kh«ng th× nã sÏ cã gi¸ trÞ FALSE. n¨m cña hai ngµy bÊt kú. Y2 lµ ngµy muén h¬n ngµy D1. Ch­¬ng 9 Ch­¬ng tr×nh con lo¹i thñ tôc Trong ch­¬ng 8 chóng ta ®· nghiªn cøu vÒ c¸c hµm chuÈn.N) víi ®Çu vµo lµ m¶ng REAL X(N) ®· s¾p xÕp t¨ng hoÆc gi¶m dÇn vµ sè gi¸ trÞ thùc tÕ cña m¶ng N. 2  . c¸c hµm lÖnh vµ c¸c hµm do ng­êi lËp tr×nh tù x©y dùng. M1.. 2! 4! 6! trong ®ã x tÝnh b»ng ra®ian. x¸c ®Þnh vµ in lªn mµn h×nh thø trong tuÇn cña ngµy ®ã. tÝnh ra c«sin cña gãc ®ã víi ®é chÝnh x¸c ≤ 0.nÕu n lÎ trung vÞ b»ng x  + 1 .. Y2 lÇn l­ît chØ ngµy. 2 7. ViÕt hµm ch­¬ng tr×nh con MEDIAN (X. M1.

lÖnh RETURN ë cuèi c¸c thñ tôc dïng ®Ó chuyÓn ®iÒu khiÓn trë vÒ ch­¬ng tr×nh chÝnh.NhiÒu quy t¾c viÕt vµ sö dông c¸c thñ tôc ch­¬ng tr×nh con gièng nh­ c¸c quy t¾c ®èi víi c¸c hµm ch­¬ng tr×nh con. (Trong Fortran 90 cho phÐp dïng c¸c thñ tôc ®Ö quy cã thÓ tù gäi chÝnh m×nh. 9) Trong l­u ®å khèi c¸c thao t¸c ®­îc thùc hiÖn bªn trong thñ tôc ®­îc ký hiÖu b»ng biÓu t­îng ®å häa sau ®©y: ↓ ↓ 10) Mét thñ tôc cã thÓ dïng c¸c hµm con kh¸c hoÆc gäi c¸c thñ tôc kh¸c. D­íi ®©y liÖt kª nh÷ng kh¸c biÖt gi÷a c¸c thñ tôc vµ c¸c hµm. 5) Mét thñ tôc cã thÓ tÝnh ra mét gi¸ trÞ. nhiÒu gi¸ trÞ ®Çu vµo hoÆc kh«ng cã gi¸ trÞ ®Çu vµo. 8) Gièng nh­ c¸c hµm. 1) Mét thñ tôc kh«ng biÓu diÔn mét gi¸ trÞ. c¸c gi¸ trÞ cña chóng kh«ng xö lý ®­îc trong ch­¬ng tr×nh chÝnh. C¸c ®èi sè cña thñ tôc ®­îc dïng trong lÖnh CALL lµ nh÷ng ®èi sè thùc tÕ. lÖnh END ®Ó b¸o kÕt thóc thñ tôc. tªn biÕn trong thñ tôc ®­îc chän ®éc lËp víi ch­¬ng tr×nh chÝnh. 6) Nh·n lÖnh. Nªn chØ ®Þnh c¶ kÝch th­íc khai b¸o vµ kÝch th­íc sö dông thùc tÕ víi c¸c m¶ng hai hoÆc nhiÒu chiÒu. Mét thñ tôc cã thÓ sö dông mét gi¸ trÞ ®Çu vµo. Nh÷ng thÝ dô øng dông ch­¬ng tr×nh con thñ tôc 213 214 . cßn c¸c ®èi sè sö dông trong thñ tôc lµ nh÷ng ®èi sè h×nh thøc. do ®ã tªn cña nã chØ lµ ®¹i diÖn cho mét ®o¹n ch­¬ng tr×nh.2. Nh÷ng biÕn dïng trong thñ tôc mµ kh«ng ph¶i lµ c¸c ®èi sè cña thñ tôc gäi lµ c¸c biÕn côc bé. kh«ng chØ ®Þnh kiÓu cña d÷ liÖu ®Çu ra. nhiÒu gi¸ trÞ hoÆc kh«ng gi¸ trÞ nµo c¶. sè l­îng vµ thø tù víi nh÷ng ®èi sè trong thñ tôc. nh­ng nã kh«ng thÓ tù gäi chÝnh nã. 7) CÇn ®Æc biÖt thËn träng khi sö dông c¸c m¶ng nhiÒu chiÒu trong c¸c thñ tôc.) 9. C¸c ®èi sè trong lÖnh CALL ph¶i phï hîp vÒ kiÓu. 2) Dßng lÖnh ®Çu tiªn trong mét thñ tôc th«ng b¸o tªn thñ tôc vµ danh s¸ch ®èi sè SUBROUTINE Tªn thñ tôc (danh s¸ch ®èi sè) 3) Ch­¬ng tr×nh chÝnh gäi mét thñ tôc b»ng lÖnh CALL cã d¹ng tæng qu¸t nh­ sau: CALL Tªn thñ tôc (danh s¸ch ®èi sè) 4) Thñ tôc dïng danh s¸ch ®èi sè kh«ng chØ cho ®Çu vµo mµ c¶ cho nh÷ng gi¸ trÞ göi ra ch­¬ng tr×nh chÝnh gäi nã.

ThÊy r»ng thñ tôc STAT cã tÊt c¶ 5 ®èi sè h×nh thøc.Nh÷ng thÝ dô d­íi ®©y gióp chóng ta häc c¸ch viÕt c¸c thñ tôc vµ sö dông nã trong ch­¬ng tr×nh chÝnh nh­ thÕ nµo. PSAI. ph­¬ng sai vµ ®é lÖch chuÈn cña chuçi x gåm n sè liÖu quan tr¾c.2. Nhí r»ng ®iÒu nµy chØ cho phÐp trong ch­¬ng tr×nh con. nªn tªn c¸c ®èi sè cña nã cã thÓ trïng víi tªn cña c¸c biÕn trong ch­¬ng tr×nh chÝnh. trong ch­¬ng tr×nh con. F7. Ta thÊy r»ng mçi ®¹i l­îng trªn cã thÓ tÝnh ®­îc b»ng mét hµm riªng biÖt. N WRITE (*. DLC PRINT *. cã thÓ ®Þnh nghÜa kÝch th­íc cña m¶ng b»ng biÕn N (trong lÖnh REAL X(N)). SAI = '. Cuèi cïng lµ in ra kÕt qu¶. 8) TBINH. PSAI. PSAI vµ DLC. Ch­¬ng tr×nh d­íi ®©y cho phÐp ®äc vµo kÝch th­íc n vµ c¸c gi¸ trÞ cña chuçi x . trong ®ã hai ®èi sè ®Çu vµo lµ m¶ng mét chiÒu X vµ kÝch th­íc m¶ng N. KÕt qu¶ tÝnh trung b×nh. X (I) ENDDO CALL STAT (X. ' T. PSAI.2) 215 216 . DLC 8 * FORMAT (1X. 5) I READ *. N. Khi gäi thñ tôc nµy trong ch­¬ng tr×nh chÝnh. C¸c c«ng thøc sau tÝnh nh­ sau: mx = ∑ xi i =1 n n . '): ') DO I = 1. TBINH. TBINH. PSAI. trong thÝ dô nµy lµ ®èi sè X vµ N. ' PH. TBINH. N 5 PRINT *. F7. I REAL X(99). I2. PROGRAM THKE INTEGER N. Nh­ng ta còng cã thÓ tÝnh lu«n mét lóc c¶ ba ®¹i l­îng b»ng c¸ch tæ chøc tÝnh chóng trong mét thñ tôc. VARI vµ STDV. ta göi vµo c¸c ®èi sè thùc tÕ lµ X. F7. Sau ®ã gäi thñ tôc STAT ®Ó tÝnh c¸c ®Æc tr­ng thèng kª. N. DLC cña ch­¬ng tr×nh chÝnh. DLC) WRITE(*. Dx = ∑ xi2 i =1 n n −1 2 − mx. σ x = Dx . ' NHAP DO DAI CHUOI (<100)' READ *. ba ®èi sè ®Çu ra lµ AVER. ph­¬ng sai vµ ®é lÖch chuÈn trong thñ tôc ch­¬ng tr×nh con ®­îc l­u vµo c¸c biÕn TBINH. ' DL CHUAN = '.2. ThÝ dô 27: Ch ­ ¬ng tr×nh tÝnh c¸c ®Æc tr ­ng thèng kª: trung b×nh. BINH = '. ' X('. ' NHAP CAC GIA TRI CUA X:' FORMAT (1X. ë ®©y ta thÊy. H·y chó ý r»ng: v× thñ tôc ch­¬ng tr×nh con lµ m«®un ®éc lËp.

IY CALL HOMSAU (ID. Y) INTEGER D. '−'. N AVER = AVER + X (I) VARI = VARI + X (I) * X (I) END DO AVER = AVER / REAL (N) VARI = VARI / REAL (N−1) − AVER * AVER STDV = SQRT (VARI) RETURN END ThÝ dô 28: Xö lý ngµy th¸ng.END SUBROUTINE STAT (X. M. ta gäi tªn lµ thñ tôc HOMSAU. IM. Trong môc nµy sÏ xÐt mét thÝ dô vÒ xö lý ngµy th¸ng víi thÝ dô sau: ViÕt ch­¬ng tr×nh nhËp vµo mét ngµy th¸ng n¨m bÊt kú. in ra ngµy th¸ng n¨m cña ngµy h«m sau. ID.0 VARI = 0. IM. STDV) REAL X (N). ID. '−'. th¸ng vµ n¨m. 'NGAY HOM SAU LA '. M. Trong thùc tÕ xö lý sè liÖu quan tr¾c khÝ t­îng thñy v¨n. ta th­êng hay ph¶i ®Ó ý ®Õn ngµy th¸ng cña sè liÖu. STDV INTEGER N. I4) END SUBROUTINE HOMSAU (D. I2 . Ch­¬ng tr×nh cã thÓ nh­ sau: PROGRAM TGNGAY INTEGER ID. IY) PRINT 20. VARI. IM. AVER. VARI. IY 20 FORMAT (1X. IM.0 DO I = 1. N. I AVER = 0. IY PRINT *. AVER. 'HAY NHAP NGAY THANG NAM BAT KY' READ *. I2. V× ë ®©y kÕt qu¶ sÏ cho ra ba gi¸ trÞ nguyªn tuÇn tù chØ ngµy. ViÖc x¸c ®Þnh ngµy th¸ng n¨m cña ngµy h«m sau so víi ngµy th¸ng n¨m hiÖn t¹i sÏ ®­îc thùc hiÖn trong mét ch­¬ng tr×nh con thñ tôc. Y 217 218 .

EQ.OR. 12) THEN M=1 Y=Y+1 END IF END IF RETURN END INTEGER FUNCTION SNTT (M.OR. MOD(Y. 4) .0)) * SNTT = 29 ELSE IF (M. Y)) THEN D=1 M=M+1 IF (M . 219 220 . ThÝ dô 29: TÝnh c¸c gi¸ trÞ trung b×nh th¸ng cña mét yÕu tè khÝ t­ îng thñy v¨n. * (MOD (Y.M.M.EQ.OR. Y) INTEGER M. 0 .11) THEN SNTT = 30 ELSE SNTT = 31 ENDIF RETURN END C¸c thao t¸c ®Ó chuyÓn thµnh h«m sau ®­îc thùc hiÖn trong ch­¬ng tr×nh con thñ tôc HOMSAU.EQ.EQ.M.100) .GT.4) .OR.6.NE.EQ.9. ë ®©y ghi l¹i ®Ó sinh viªn tiÖn theo dâi.100) .EQ.AND.EQ. trang 142.GT. Gi¶ sö víi file d÷ liÖu vÒ c¸c yÕu tè khÝ t­îng thñy v¨n ®· m« t¶ trong thÝ dô 20 (trang 124). 0) . Y IF (M .EQ . D­íi ®©y ta xÐt mét thÝ dô vÒ xö lý sè liÖu khÝ t­îng cã liªn quan tíi ngµy th¸ng. 2) THEN SNTT = 28 IF ((MOD(Y. SNTT (M.D=D+1 IF (D . Hµm nµy ®· ®­îc nh¾c tíi trong thÝ dô 26. H·y chó ý r»ng trong thñ tôc con HOMSAU l¹i gäi thùc hiÖn mét hµm con kh¸c lµ SNTT ®Ó tÝnh sè ngµy cña th¸ng ®ang xÐt. 0 . MOD (Y/100.4.AND.

12F5. REAL X. mçi dßng mét ngµy.1)’. FILE = ‘HONDAU. J = 1.MAT’. C¸c dßng tiÕp theo lÇn l­ît ghi gi¸ trÞ cña c¸c yÕu tè. M1) = TONG / M END IF CALL HOMSAU (D1. M1. Y2 READ (1. TB (100. D2. th¸ng. n¨m ®Çu vµ ngµy. M1. M2. Y1. 12I5)’. n¨m cuèi quan tr¾c. ViÕt ch­¬ng tr×nh tÝnh gi¸ trÞ trung b×nh th¸ng cña nhiÖt ®é kh«ng khÝ trong tÊt c¶ c¸c n¨m quan tr¾c. STATUS = ‘OLD’) READ (1. ë ®©y ta thÊy. J =1.GT. (J. Y2. Y1) GOTO 2 4 CLOSE (1) PRINT *. M1. muèn tÝnh trung b×nh th¸ng chØ viÖc céng tÊt c¶ c¸c gi¸ trÞ ngµy vµ chia tæng cho sè ngµy cña th¸ng ®ang xÐt.Nhí l¹i r»ng file HONDAU. J). D2. 12) K=1 DO I = Y. 1) THEN TONG = 0. mçi tªn ®­îc ghi víi ®é réng 8 vÞ trÝ. M) THEN TB (I. nªn ta cÇn cã nh÷ng thñ tôc xö lý ngµy th¸ng. (TB (K. *) X. Y1) END IF TONG = TONG + X IF (D1 . ‘NAM’. *) D1. TONG. YDAU. Ch­¬ng tr×nh sau ®©y sÏ thùc hiÖn kiÓu xö lý nh­ vËy. C¸c gi¸ trÞ ngµy cña nhiÖt ®é kh«ng khÝ ®­îc ghi ë cét thø hai cña file nµy. ‘ NHIET DO KHONG KHI TRUNG BINH THANG’ PRINT ‘(A5. I. Dßng thø ba cã 6 sè nguyªn viÕt c¸ch nhau lÇn l­ît chØ ngµy. Hµm SNTT ®­îc gäi vµo mçi ngµy ®Çu th¸ng ®Ó tÝnh sè ngµy cña th¸ng ®ã vµ g¸n vµo biÕn M chuÈn bÞ cho viÖc tÝnh trung b×nh sau khi gi¸ trÞ nhiÖt ®é ngµy cuèi cïng cña th¸ng ®­îc céng vµo biÕn TONG. Y2) GOTO 4 READ (1. Cßn thñ 221 222 . Dßng thø 2 cã hai sè nguyªn viÕt c¸ch nhau lÇn l­ît chØ tæng sè ngµy quan tr¾c vµ sè yÕu tè ®­îc quan tr¾c. *) Y = Y1 2 IF (Y1 . Nh­ng v× sè ngµy trong mçi th¸ng cã thÓ kh¸c nhau. th¸ng. M OPEN (1. M2. X IF (D1 . *) READ (1.EQ. Y2 PRINT ‘(A5.0 M = SNTT (M1.MAT cã quy c¸ch ghi nh­ sau: Dßng trªn cïng ghi tªn tr¹m. Y1. *) N READ (1.EQ. Dßng thø 4 lµ tiªu ®Ò cét liÖt kª tªn tÊt c¶ c¸c yÕu tè ®­îc quan tr¾c. 12) INTEGER D1. 12) K=K+1 END DO END Ta thÊy trong ch­¬ng tr×nh nµy ®· sö dông hµm SNTT vµ thñ tôc HOMSAU mµ chóng ta ®· x©y dùng trong thÝ dô 28.

tôc HOMSAU ®­îc gäi liªn tôc ®Ó t¨ng ngµy hiÖn hµnh lªn mét ngµy sau khi mét sè liÖu ®­îc ®äc.LT. ta viÕt mét thñ tôc cho phÐp chÌn mét gi¸ trÞ míi vµo mét danh s¸ch ®· s¾p xÕp. NEW.NOT.FALSE. . SUBROUTINE INSERT (LIMIT. K LOGICAL DONE DONE = . LIMIT) THEN COUNT = COUNT + 1 X (COUNT) = NEW END IF ELSE IF (COUNT . tøc gi¸ trÞ COUNT b»ng gi¸ trÞ LIMIT th× gi¸ trÞ cuèi cïng trong m¶ng sÏ bÞ c¾t bá. J=1 5 IF (J . COUNT) THEN IF (COUNT . −1 X (K) = X (K − 1) 223 224 . NEW. C¸c ®èi sè cña thñ tôc gåm m¶ng mét chiÒu X. J+1. END IF GOTO 5 END IF IF (J . ThÝ dô 30: ChÌn mét gi¸ trÞ vµo danh s¸ch. COUNT.LT.TRUE. J. COUNT . biÕn COUNT chØ sè gi¸ trÞ d÷ liÖu thùc tÕ trong m¶ng. X) INTEGER LIMIT. X (LIMIT). sinh viªn còng cÇn chó ý ghi nhí c¸ch ®äc sè liÖu kiÓu bá qua mét sè cét trong file chøa b¶ng sè liÖu cã nhiÒu cét. COUNT. NEW) THEN J=J+1 ELSE DONE = .LE. Trong thÝ dô nµy. LIMIT) COUNT = COUNT + 1 DO K = COUNT. D­íi ®©y lµ hai thÝ dô liªn quan tíi c¸c thñ tôc thao t¸c chuçi th­êng cã thÓ rÊt cã Ých trong thùc tiÔn xö lý thèng kª chuçi sè liÖu khÝ t­îng thñy v¨n.GT. biÕn LIMIT chøa kÝch th­íc m« t¶ cña m¶ng vµ biÕn NEW chøa gi¸ trÞ cÇn chÌn vµo m¶ng. Tr­êng hîp phÇn tö míi ®­îc chÌn vµo m¶ng ®· ®Çy. DONE) THEN IF (X (J) .AND.LT. Qua thÝ dô 20 vµ thÝ dô nµy.

END IF GOTO 5 END IF IF (J . COUNT. K LOGICAL DONE DONE = . J. J=1 5 IF (J . Trong tr­êng hîp nµy.END DO X (J) = NEW END IF RETURN END ThÝ dô 31: Xo¸ mét gi¸ trÞ khái danh s¸ch. COUNT . COUNT X (K) = X (K + 1) END DO END IF 225 226 .NOT. X (J) .GT. OLD) THEN PRINT *.1 DO K = J. Kh¸c víi thñ tôc chÌn.LT.GT.OR.TRUE. kh«ng sî chØ sè m¶ng v­ît qu¸ kÝch th­íc m« t¶ cña m¶ng. OLD) THEN J=J+1 ELSE DONE = . . COUNT .AND. X) INTEGER OLD. SUBROUTINE DELETE (OLD. ta t×m trong danh s¸ch gi¸ trÞ b»ng gi¸ trÞ ®Þnh xo¸ vµ lo¹i gi¸ trÞ ®ã khái danh s¸ch. 'GIA TRI XOA KHONG CO TRONG DANH SACH' ELSE COUNT = COUNT . COUNT.LT. trong thñ tôc xo¸ kh«ng cÇn ®èi sè LIMIT v× khi xo¸ mét gi¸ trÞ khái danh s¸ch th× sè phÇn tö thùc cña m¶ng chØ cã thÓ nhá ®i. X (COUNT).FALSE. DONE) THEN IF (X (J) .

Trong danh s¸ch ®èi sè. HÖ ph­¬ng tr×nh ®¹i sè tuyÕn tÝnh n Èn 227 228 . B. Gi¶ sö cã m¶ng mét chiÒu X víi 100 gi¸ trÞ thùc. M. j = ∑ a i .. 6) Phong c¸ch lËp tr×nh: . 4.. . 5) KiÓm tra tõng thñ tôc víi mét sè tËp d÷ liÖu ®Ó ph¸t hiÖn nh÷ng ®iÒu kiÖn ®Æc biÖt g©y lçi. 2) Nªn khai b¸o t­êng minh tÊt c¶ c¸c biÕn trong thñ tôc ®Ó tr¸nh ®Þnh kiÓu ngÇm ®Þnh sai. m cét) vµ ma trËn B ( m dßng. N..Khi quyÕt ®Þnh sö dông ch­¬ng tr×nh con thñ tôc h·y chän tªn thñ tôc sao cho nã cã tÝnh gîi nhí. M. l cét) víi c¸c phÇn tö ®­îc tÝnh theo c«ng thøc ci . . j = 1. 4) KiÓm tra thö tõng thñ tôc tr­íc khi gép chóng vµo ch­¬ng tr×nh chÝnh cïng víi nh÷ng ch­¬ng tr×nh con kh¸c. . k bk . sau ®ã míi ®Õn c¸c ®èi sè ®Çu ra.. Gi¶ sö cho tr­íc hai ma trËn A ( n dßng. c¸c biÓu thøc trong danh s¸ch ®èi sè ë lÖnh CALL cã phï hîp vÒ kiÓu vµ thø tù nh­ trong lÖnh khai b¸o thñ tôc kh«ng. n. Bµi tËp 1. C) víi c¸c ®èi sè ®Çu vµo lµ ma trËn A .RETURN END 9. ma trËn B . Nh÷ng chØ dÉn gì rèi khi sö dông c¸c thñ tôc 1) KiÓm tra xem c¸c biÕn.3. TÝch AB sÏ lµ ma trËn C ( n dßng..H·y sö dông tªn c¸c biÕn trong danh s¸ch ®èi sè cña thñ tôc cïng tªn víi c¸c biÕn lµ ®èi sè thùc tÕ trong ch­¬ng tr×nh chÝnh. Trong tr­êng hîp thñ tôc ®­îc gäi nhiÒu lÇn víi nh÷ng ®èi sè thùc tÕ kh¸c nhau. L vµ ®èi sè ®Çu ra lµ ma trËn C . 2. c¸c tham sè N. 5. k =1 m ViÕt thñ tôc TICHMT (A. l cét). 3) Sö dông lÖnh PRINT trong thñ tôc ®Ó ®Þnh vÞ lçi. nªn liÖt kª riªng c¸c ®èi sè ®Çu vµo tr­íc. ViÕt mét thñ tôc nhËn mét m¶ng gi¸ trÞ thùc X víi 50 hµng vµ 2 cét vµ tr¶ l¹i chÝnh m¶ng ®ã nh­ng d÷ liÖu ®­îc s¾p xÕp l¹i theo chiÒu t¨ng dÇn cña cét thø 2.. l ) . ViÕt mét thñ tôc nhËn mét m¶ng gi¸ trÞ thùc X víi n dßng m cét vµ tr¶ vÒ mét m¶ng Y cïng sè dßng. H·y viÕt mét thñ tôc t¹o ra m¶ng Y theo c¸ch mçi phÇn tö cña m¶ng Y b»ng phÇn tö t­¬ng øng cña m¶ng X trõ ®i phÇn tö nhá nhÊt. . L. sè cét nh­ng d÷ liÖu ®­îc biÕn ®æi sao cho c¸c phÇn tö t­¬ng øng cña cét thø nhÊt vµ cét thø J ®­îc ®æi chç cho nhau. 3. h·y chän tªn trong danh s¸ch ®èi sè kh¸c biÖt ®Ó tr¸nh nhÇm víi c¸c biÕn trong ch­¬ng tr×nh chÝnh. j (i = 1.

...  .... bn        Ax=b trong ®ã    A = (a ij ) =     a11 a 21 .. TËp c¸c ký tù cña Fortran 229 230 . . sè Èn N cña hÖ vµ tÝnh ra m¶ng X theo ph­¬ng ph¸p lo¹i biÕn cña Gauss. a n1 a12 a 22 . Xem gi¶i thÝch vÒ ph­¬ng ph¸p Gauss trong phô lôc 2. a 2n   b2  x =  x 2  b = ..1... Trong bµi nµy chóng ta xÐt thªm nh÷ng ®Æc ®iÓm khai b¸o nh÷ng d÷ liÖu ký tù. sè thùc. a nn    n   n  H·y viÕt thñ tôc GAUSS (A.. N.. .. mét sè thao t¸c víi nh÷ng d÷ liÖu ký tù vµ øng dông cña chóng trong xö lý th«ng tin. ....... a n1 x1 ®­îc viÕt d­íi d¹ng ma trËn nh­ sau + + + a12 x 2 a 22 x 2 ... B.. an 2  x1  .. + + + a1n x n a 2n x n . a1n   b1       . Trong Fortran gäi chung nh÷ng dò liÖu nµy lµ d÷ liÖu ký tù. nh÷ng ch÷ sè vµ mét sè ký hiÖu kh¸c. a n 2 x2 + + + .. a nn x n = = = b1 b2 .  .  ....        x   b  . nh÷ng ®o¹n v¨n b¶n. 10..... . . X) nhËn vµo c¸c m¶ng A.a11 x1 a 21 x1 .. Ch­¬ng 10 KiÓu d÷ liÖu v¨n b¶n Ngoµi nh÷ng d÷ liÖu sè nh­ c¸c sè nguyªn.. m¸y tÝnh cßn cã thÓ l­u gi÷ vµ xö lý nh÷ng d÷ liÖu v¨n b¶n nh­ nh÷ng ch÷ c¸i. B. ..

m­êi ch÷ sè tõ 0 ®Õn 9. . ThÝ dô lÖnh CHARACTER * 8 TEN. ♦ LÖnh CHARACTER biÕn thÓ sau ®©y cho phÐp ta khai b¸o nh÷ng biÕn ký tù víi ®é dµi kh¸c nhau trªn cïng mét dßng lÖnh CHARACTER TITLE * 10. §é dµi cña x©u ký tù lµ sè ký tù ®­îc ghÐp l¹i trong x©u ký tù ®ã. dÊu trèng vµ 12 ký hiÖu sau ®©y: + − * / = ( ) . C¸c h»ng ký tù bao giê còng n»m trong cÆp dÊu nh¸y trªn. Mét ký tù còng cã thÓ coi lµ mét x©u ký tù víi ®é dµi b»ng 1. NGAY chØ r»ng TEN vµ NGAY lµ nh÷ng biÕn chøa 8 ký tù mçi biÕn. ThÝ dô ch÷ LET'S cña tiÕng Anh sÏ ®­îc viÕt lµ 'LET''S'. Do ®ã. C¸c d¹ng khai b¸o biÕn ký tù ♦ BiÕn ký tù ®­îc khai b¸o b»ng lÖnh m« t¶ d¹ng tæng qu¸t nh­ sau: CHARACTER * n Danh s¸ch biÕn trong ®ã n chØ sè ký tù (®é dµi) trong mçi x©u ký tù.TËp ký tù cña Fortran gåm 26 ch÷ c¸i tiÕng Anh. Trong tr­êng hîp ®ã ng­êi ta gäi lµ x©u ký tù.2. Th«ng th­êng ng­êi ta xö lý trong m¸y tÝnh nh÷ng tõ. NUOC * 2 ♦ Mét m¶ng chøa mét sè phÇn tö. ' $ : Ngoµi ra cßn mét sè ký tù kh¸c tïy thuéc vµo nh÷ng hÖ m¸y tÝnh kh¸c nhau. mçi phÇn tö cã gi¸ trÞ lµ mét x©u ký tù ®­îc khai b¸o b»ng mét trong hai c¸ch t­¬ng ®­¬ng nh­ sau: 231 232 . D­íi ®©y lµ thÝ dô vÒ c¸c h»ng ký tù vµ ®é dµi t­¬ng øng cña chóng: 'CHU NHAT' 'SENSOR 23' '08:40−13:25' 'LE QUY DON' ' ' '''''' 8 ký tù 9 ký tù 11 ký tù 10 ký tù 2 ký tù 2 ký tù 10. ta gäi chung d÷ liÖu x©u ký tù lµ d÷ liÖu ký tù hay d÷ liÖu v¨n b¶n. nh÷ng dßng ch÷ gåm mét sè ký tù ghÐp l¹i víi nhau. Trong h»ng ký tù dÊu nh¸y trªn ' ®­îc biÓu thÞ b»ng hai dÊu nh¸y trªn '' (kh«ng ph¶i dÊu ngoÆc kÐp).

ThÝ dô: CHARACTER * (*) BCC CHARACTER * (*) NAME (N) 10. A) END th× t­¬ng t¸c trªn mµn h×nh sÏ nh­ sau: HAY NHAP MOT NGAY TRONG TUAN 'CHU NHAT' ↵ NGAY VUA NHAP LA CHU NHAT ThÊy r»ng sè ký tù gâ vµo biÕn THU chØ b»ng 8. cã thÓ kh«ng cÇn chØ râ sè vÞ trÝ dµnh cho môc in). NhËp. THU 5 FORMAT (1X. §Ó in x©u ký tù trong lÖnh xuÊt cã ®Þnh d¹ng. gi¸ trÞ cña biÕn ký tù ph¶i ®­îc bao trong cÆp dÊu nh¸y trªn. NÕu sè ký tù trong cÆp dÊu nh¸y nhiÒu h¬n so víi ®é dµi ®· m« t¶ cña biÕn ký tù. Trong lÖnh nhËp. kh«ng dµi tíi 20 nh­ ®· khai b¸o. sè thùc. 'NGAY VUA NHAP LA '.CHARACTER * 4 NAME (50) CHARACTER NAME (50) * 4 ♦ C¸c x©u ký tù còng cã thÓ ®­îc dïng trong c¸c ch­¬ng tr×nh con. X©u ký tù ph¶i ®­îc khai b¸o b»ng lÖnh CHARACTER trong c¶ ch­¬ng tr×nh chÝnh vµ ch­¬ng tr×nh con. th× nh÷ng ký tù thõa ë bªn ph¶i sÏ bÞ bá qua (bÞ c¾t bá). xuÊt d÷ liÖu ký tù Khi x©u ký tù ®­îc dïng trong lÖnh xuÊt toµn bé x©u ®­îc in ra. cã thÓ dïng ®Æc t¶ A (chó ý.3. Nh÷ng dÊu trèng ®­îc tù ®éng chÌn vµo x©u ®Ó t¸ch riªng x©u ký tù víi nh÷ng môc in kh¸c cïng dßng. ThÝ dô: víi ®o¹n ch­¬ng tr×nh: CHARACTER * 20 THU PRINT *. ' HAY NHAP MOT NGAY TRONG TUAN' READ *. nÕu sè ký tù Ýt h¬n − nh÷ng vÞ trÝ thõa ë bªn ph¶i ®­îc tù ®éng ®iÒn b»ng c¸c dÊu trèng. Còng nh­ c¸c m¶ng d÷ liÖu sè nguyªn. THU PRINT 5. trong ch­¬ng tr×nh con cã thÓ khai b¸o biÕn ký tù mµ kh«ng cÇn chØ ®Þnh râ ®é dµi x©u vµ kÝch th­íc m¶ng. Nh­ng khi in ra mµn h×nh ta kh«ng thÊy râ nh÷ng dÊu trèng ®­îc tù ®éng ®iÒn 233 234 .

vµo phÝa bªn ph¶i. nÕu kh«ng c¸c lÖnh sÏ xö lý sai. th× c¸c dÊu trèng sÏ tù ®éng ®­îc ®iÒn vµo bªn ph¶i.4.4. trong MONHOC (2) sÏ l­u 'LYbb'. Mét biÕn ký tù còng cã thÓ ®­îc g¸n gi¸ trÞ cña biÕn ký tù kh¸c b»ng lÖnh g¸n. NÕu h»ng cã ®é dµi nhá h¬n sè ký tù ®· khai b¸o cña biÕn. Qua thÝ dô nµy ta thÊy tÇm quan träng cña viÖc sö dông c¸c x©u cã cïng ®é dµi m« t¶ cña biÕn. trong MONHOC (3) sÏ l­u 'HOAb' (ch÷ b chØ dÊu trèng). thÝ dô CHARACTER * 4 LOAI1. LOAI2 LOAI1 = 'GIOI' LOAI2 = LOAI1 235 236 . ' LA NGAY VUA NHAP') th× trªn mµn h×nh sÏ thÊy râ nh÷ng dÊu trèng nh­ sau: HAY NHAP MOT NGAY TRONG TUAN 'CHU NHAT' CHU NHAT LA NGAY VUA NHAP 10. Nh÷ng thao t¸c víi d÷ liÖu ký tù 10. nÕu h»ng cã ®é dµi lín h¬n . G¸n c¸c gi¸ trÞ ký tù Nh÷ng gi¸ trÞ ký tù cã thÓ ®­îc g¸n cho c¸c biÕn ký tù b»ng lÖnh g¸n vµ mét h»ng ký tù. VËy trong MONHOC (1) sÏ l­u 'TOAN'.1. NÕu lÖnh FORMAT cña lÖnh in cã d¹ng FORMAT (1X. ThÝ dô: CHARACTER * 4 MONHOC (3) MONHOC (1) = 'TOAN' MONHOC (2) = 'LY' MONHOC (3) = 'HOA HOC' Trong nh÷ng lÖnh trªn ®©y ta khai b¸o m¶ng MONHOC gåm 3 phÇn tö. mçi phÇn tö lµ mét x©u dµi 4 ký tù. A.c¸c ký tù thõa sÏ bÞ bá qua.

=?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ ______________________________________ Theo chuçi nµy. c¶ hai biÕn LOAI1 vµ LOAI2 ®Òu l­u x©u ký tù 'GIOI'.Sau lÖnh g¸n nµy. 'Aug'. LÖnh DATA còng cã thÓ dïng ®Ó khëi x­íng gi¸ trÞ cña c¸c biÕn ký tù. 'Oct'. c¸c lÖnh sau ®©y lµ nh÷ng lÖnh ®óng: IF (THANG .2.GT. CH (I+1)) THEN TG = CH (I) CH (I) = CH (I+1) CH (I+1) = TG END IF Khi ®¸nh gi¸ mét biÓu thøc l«gic víi c¸c x©u ký tù. 'Dec' / 10. th× x©u ng¾n h¬n ®­îc bæ sung thªm c¸c dÊu trèng ë bªn ph¶i sao cho hai x©u trë thµnh cã cïng ®é dµi. ThÝ dô. mét phÇn cña chuçi thø tù so s¸nh ®èi víi c¸c ký tù ASCII liÖt kª c¸c ký tù d­íi ®©y: Chuçi thø tù so s¸nh cña c¸c ký tù: ______________________________________ b''#$%&()*+. nÕu c¸c biÕn THANG. NÕu mét x©u ng¾n h¬n x©u kh¸c. nh÷ng so s¸nh sau lµ ®óng: 'A1' < 'A2' 237 238 . ThÝ dô sau g¸n 12 tªn th¸ng tiÕng Anh vµo m¶ng THANG: CHARACTER * 3 THANG (12) DATA THANG / 'Jan'. 'Apr'. * 'Jul'. 'Sep'.-. 'Feb'.4. C¸c ký tù ®­îc so s¸nh víi nhau theo chuçi thø tù so s¸nh (collating sequence). ViÖc so s¸nh hai x©u ký tù cïng ®é dµi thùc hiÖn tõ tr¸i sang ph¶i theo tõng ký tù mét. ThÝ dô.EQ. 'FEB') NGAY = 28 IF (CH (I) . 'Jun'. tr­íc hÕt ch­¬ng tr×nh xÐt ®é dµi cña hai x©u./ 0123456789 :. 'May'. CH. Hai x©u b»ng nhau nÕu chóng cã cïng nh÷ng ký tù trong cïng mét thø tù. 'Nov'. So s¸nh c¸c gi¸ trÞ ký tù BiÓu thøc l«gic trong lÖnh IF l«gic còng cã thÓ lµ mét phÐp so s¸nh c¸c biÕn. 'Mar'. Chuçi nµy liÖt kª c¸c ký tù tõ thÊp ®Õn cao. h»ng ký tù. TG lµ nh÷ng biÕn ký tù.

'JOHN' < 'JOHNSTON' '175' < '176' 'THREE' < 'TWO' '$' < 'DOLLAR'

NÕu c¸c x©u ký tù chØ chøa c¸c ch÷ c¸i, th× thø tù tõ thÊp ®Õn cao lµ thø tù alphabª, ®­îc gäi lµ thø tù tõ vùng (lexicographic ordering). 10.4.3. TrÝch ra x©u con X©u con lµ mét phÇn ®­îc trÝch ra tõ x©u xuÊt ph¸t vµ gi÷ nguyªn thø tù ban ®Çu. Trong Fortran x©u con ®­îc viÕt b»ng tªn cña x©u xuÊt ph¸t, kÌm theo hai biÓu thøc nguyªn n»m trong cÆp dÊu ngoÆc ®¬n, c¸ch nhau bëi dÊu hai chÊm. BiÓu thøc thø nhÊt chØ vÞ trÝ ®Çu tiªn ë x©u xuÊt ph¸t mµ tõ ®ã x©u con ®­îc trÝch ra. BiÓu thøc thø hai chØ vÞ trÝ cuèi cïng. ThÝ dô, nÕu x©u 'FORTRAN' ®­îc l­u trong biÕn LANG, ta cã thÓ cã nh÷ng x©u con nh­ sau BiÕn X©u con LANG (1 : 1) LANG (1 : 7) LANG (2 : 3) LANG (7 : 7) 'F' 'FORTRAN' 'OR' 'N'

1) Ta cã thÓ kh«ng viÕt biÓu thøc thø nhÊt trong cÆp dÊu ngoÆc ®¬n nÕu gi¸ trÞ cña nã b»ng 1 vµ cã thÓ kh«ng viÕt biÓu thøc thø hai nÕu gi¸ trÞ cña nã b»ng ®é dµi cña x©u xuÊt ph¸t. Ta còng cã thÓ kh«ng viÕt c¶ hai biÓu thøc. Nh­ng trong c¶ ba tr­êng hîp vÉn ph¶i cã dÊu hai chÊm (:) ë trong cÆp dÊu ngoÆc. ThÝ dô: LANG (:4) LANG (5:) LANG (:) lµ 'FORT' lµ 'RAN' lµ 'FORTRAN'

2) Khi phÐp trÝch ra x©u con sö dông cïng mét tªn biÕn, c¸c biÓu thøc trong cÆp dÊu ngoÆc ®¬n kh«ng ®­îc phñ lªn nhau. ThÝ dô, nÕu biÕn LANG chøa x©u 'FORMATS', th× lÖnh LANG (7: 7) = LANG (6: 6) sÏ biÕn gi¸ trÞ cña LANG thµnh 'FORMATT'. Nh­ng lÖnh sau ®©y sÏ sai kh«ng thÓ thùc hiÖn ®­îc LANG (3: 5) = LANG (2: 4) 3) Nh÷ng tr­êng hîp nh­: c¸c vÞ trÝ ®Çu hoÆc cuèi kh«ng ph¶i lµ sè nguyªn, lµ sè ©m, vÞ trÝ ®Çu lín h¬n vÞ trÝ cuèi, vÞ trÝ ®Çu hoÆc vÞ trÝ cuèi cã gi¸ trÞ lín h¬n ®é dµi m« t¶ cña x©u con, viÖc trÝch ra x©u con sÏ kh«ng thÓ thùc hiÖn ®óng ®¾n. ThÝ dô 32: §Õm sè ký tù trong mét v¨n b¶n. Gi¶ sö mét bøc ®iÖn dµi 50 ký tù. H·y ®Õm sè tõ trong bøc ®iÖn ®ã. Ta biÕt r»ng trong mét v¨n b¶n so¹n ®óng th× c¸c tõ c¸ch nhau b»ng mét dÊu trèng, do ®ã ta chØ cÇn ®Õm sè dÊu trèng trong v¨n b¶n vµ sè tõ sÏ b»ng sè dÊu trèng céng thªm mét. Víi tr­êng hîp nµy ch­¬ng tr×nh sau sÏ 239 240

®Õm ®­îc ®óng sè tõ: CHARACTER * 50 MESSGE INTEGER COUNT, I COUNT = 0 DO 10 I = 1, 50 IF (MESSGE (I: I) .EQ. ' ') COUNT = COUNT + 1 10 CONTINUE PRINT 5, COUNT + 1 5 FORMAT (1X, 'BUC DIEN GOM ', I2, ' TU') END 10.4.4. KÕt hîp c¸c x©u ký tù KÕt hîp hay céng lµ thao t¸c ghÐp hai hoÆc mét sè x©u ký tù vµo thµnh mét x©u ký tù. Thao t¸c nµy thùc hiÖn bëi hai dÊu g¹ch chÐo //. ThÝ dô muèn cã tõ WORKED ta cã thÓ dïng phÐp kÕt hîp 'WORK' // 'ED' Nhãm lÖnh sau ®©y cho phÐp viÕt ra ngµy th¸ng theo quy c¸ch tiÕng ViÖt, tøc thªm c¸c g¹ch chÐo ng¨n c¸ch gi÷a c¸c ký hiÖu ngµy, th¸ng vµ n¨m:

CHARACTER DAY*2,MONTH*2,YEAR*4,DATE*10 READ *, DAY, MONTH, YEAR DATE = DAY//'/'//MONTH//'/'//YEAR PRINT *, DATE END
Theo nhãm lÖnh nµy, nÕu khi thùc hiÖn lÖnh READ ta gâ tõ bµn phÝm '05' '10' '1999' ↵ th× trªn mµn h×nh sÏ in ra:

05/10/1999.
10.4.5. Nh÷ng hµm chuÈn xö lý x©u ký tù • Hµm INDEX Hµm nµy cã hai ®èi sè kiÓu x©u ký tù, ®­a ra mét sè nguyªn chØ vÞ trÝ cña x©u thø hai trong x©u thø nhÊt. ThÝ dô nÕu ta cã biÕn STR chøa mÖnh ®Ò 'TO BE OR NOT 241 242

TO BE' vµ dïng lÖnh K = INDEX (STR, 'BE') th× biÕn K sÏ cã gi¸ trÞ 4 v× x©u 'BE' xuÊt hiÖn lÇn ®Çu tiªn trong x©u STR ë vÞ trÝ thø 4. • Hµm LEN Hµm LEN cã mét ®èi sè kiÓu x©u ký tù, nã ®­a ra mét sè nguyªn chØ ®é dµi cña x©u ®ã. Hµm nµy rÊt cã Ých trong nh÷ng ch­¬ng tr×nh con chÊp nhËn c¸c x©u ký tù ®é dµi bÊt kú nh­ng cÇn biÕt ®é dµi thùc tÕ ë trong ch­¬ng tr×nh con. ThÝ dô 33: CÊu t¹o tªn viÕt t¾t cña ng ­êi. ViÕt ch­¬ng tr×nh ®äc tõ bµn phÝm hä tªn ®Çy ®ñ (gåm hä, ch÷ ®Öm vµ tªn) cña mét ng­êi vµ in lªn mµn h×nh d¹ng viÕt t¾t. (ThÝ dô, nÕu nhËp vµo hä tªn ®Çy ®ñ nh­ sau: TRAN CONG MINH, th× d¹ng in ra sÏ lµ T. C. MINH. Ch­¬ng tr×nh NAMEED d­íi ®©y cho phÐp ta gâ tõ bµn phÝm mét x©u ký tù gåm c¶ hä, ch÷ ®Öm vµ tªn trªn cïng mét dßng nh­ng c¸ch nhau bëi mét dÊu trèng. Thñ tôc con EXTR cho phÐp t¸ch riªng phÇn hä, ch÷ ®Öm vµ tªn dùa vµo vÞ trÝ c¸c dÊu trèng trong hä tªn ®Çy ®ñ. Sau ®ã thñ tôc EDIT ghÐp c¸c ch÷ c¸i ®Çu tiªn cña phÇn hä, ch÷ ®Öm kÌm theo c¸c dÊu chÊm vµ dÊu trèng víi tªn ®Ó cÊu t¹o thµnh tªn viÕt t¾t.
PROGRAM NAMEED CHARACTER HO *10, DEM *10, TEN *20, HOTEN *25 PRINT *, 'Nhap ho, chu dem, ten cach nhau 1 dau trong' READ 5, HOTEN 5 FORMAT (A) CALL EXTR (HOTEN, HO, DEM, TEN) CALL EDIT (HO, DEM, TEN, HOTEN) PRINT *, HOTEN END SUBROUTINE EXTR (XHOTEN, XHO, XDEM, XTEN) CHARACTER * (*) XHO, XTEN, XDEM, XHOTEN INTEGER B1, B2 B1 = INDEX (XHOTEN, ' ') B2 = B1 + INDEX (XHOTEN (B1 + 1:) , ' ')

243

244

ThÝ dô. XTEN. XHOTEN XHOTEN = XHO(1: 1) // '. nÕu b¹n muèn in ra mµn h×nh tÊt c¶ c¸c ký tù trong chuçi thø tù so s¸nh ®­îc dïng trong m¸y tÝnh cña m×nh tõ vÞ trÝ 0 ®Õn 255 cã thÓ dïng ch­¬ng tr×nh sau: PROGRAM CSCHAR DO I = 0.' L = INDEX (XHOTEN. Hµm ICHAR lµ hµm ng­îc cña hµm CHAR. CHAR (I) END DO END Ch­¬ng tr×nh sau ®©y cho phÐp in ra mµn h×nh vÞ trÝ cña c¸c ch÷ c¸i in hoa tiÕng Anh. XDEM.XHO = XHOTEN (:B1-1) XDEM = XHOTEN (B1+1: B2-1) XTEN = XHOTEN (B2+1:) RETURN END SUBROUTINE EDIT (XHO. Nã nhËn ®èi sè lµ biÕn mét ký tù vµ tr¶ vÒ mét sè nguyªn øng víi vÞ trÝ cña ký tù ®ã ë trong chuçi thø tù so s¸nh. XHOTEN) INTEGER L CHARACTER *(*) XHO. 255 PRINT *. ' XHOTEN (L + 3:) = XTEN RETURN END • C¸c hµm CHAR vµ ICHAR C¸c hµm nµy thao t¸c víi c¸c ký tù trong chuçi thø tù so s¸nh dïng trong m¸y tÝnh. XTEN. Hµm CHAR nhËn mét ®èi sè nguyªn vµ ®­a ra mét ký tù trong chuçi thø tù so s¸nh ë vÞ trÝ øng víi sè nguyªn ®ã. nªn c¸c hµm nµy cã thÓ dïng ®Ó x¸c ®Þnh vÞ trÝ cña nh÷ng ký tù trong chuçi thø tù so s¸nh. I. nh÷ng ch÷ c¸i th­êng vµ nh÷ng ch÷ sè tõ 0 ®Õn 9 trong chuçi thø tù so s¸nh trong m¸y tÝnh b¹n ®ang dïng: PROGRAM COLSEQ 245 246 . ' '. NÕu mét m¸y tÝnh cã 256 ký tù trong chuçi thø tù so s¸nh cña nã. ' ') + 1 XHOTEN (L: L + 2) = XDEM (1: 1) // '. V× c¸c m¸y tÝnh kh¸c nhau cã c¸c chuçi thø tù so s¸nh kh¸c nhau. th× c¸c ký tù nµy ®­îc ®¸nh sè tõ 0 ®Õn 255. XDEM.

TRUE hoÆc FALSE tuú thuéc kÕt qu¶ so s¸nh hai ®èi sè kiÓu x©u ký tù. Nh÷ng hµm nµy sÏ cã Ých nÕu mét ch­¬ng tr×nh cã so s¸nh c¸c x©u hay s¾p xÕp ký tù vµ ®­îc dïng trong c¸c m¸y tÝnh kh¸c nhau. XAU2) sÏ cho gi¸ trÞ TRUE nÕu XAU1 lín h¬n hoÆc b»ng XAU2 vÒ ph­¬ng diÖn tõ vùng. LLE vµ LLT thùc hiÖn c¸c phÐp so s¸nh “lín h¬n vÒ tõ vùng”. nÕu ch¹y ch­¬ng tr×nh nµy. ICHAR (SET (I : I)) END DO END Víi c¸c m¸y tÝnh th«ng dông ngµy nay. • C¸c hµm LGE. ®é dµi x©u v¨n b¶n nhËn ®­îc vÉn chØ lµ ®é dµi m« t¶ chø kh«ng ph¶i ®é dµi thùc tÕ. nÕu ta cã hai biÕn ký tù XAU1.. In lªn mµn h×nh danh s¸ch s¾p xÕp thø tù alphabª theo tªn ng­êi.. Trong thÝ dô nµy ta sö dông c¸c hµm so s¸nh ®èi víi b¶ng thø tù so s¸nh ASCII. TEL (20). Trong Fortran 90 cßn cã c¸c hµm ADJUSTL. C¸c vÞ trÝ cßn l¹i trong chuçi thø tù so s¸nh sÏ øng víi nh÷ng ký tù kh¸c. Nhí r»ng c¸c hµm nµy dùa trªn chuçi thø tù so s¸nh ASCII chø kh«ng ph¶i chuçi thø tù so s¸nh cña m¸y tÝnh.. C¸c hµm LGT. Nh÷ng hµm nµy tr¶ vÒ mét gi¸ trÞ l«gic . LLT Nh÷ng hµm nµy cho phÐp ta so s¸nh nh÷ng x©u v¨n b¶n dùa trªn chuçi thø tù so s¸nh ASCII. Ta cã thÓ khai th¸c nh÷ng chi tiÕt nµy ®Ó viÕt nh÷ng thñ tôc rÊt cã Ých nh­ in biÓu b¶ng kh¸ ®Ñp khi xuÊt d÷ liÖu lªn mµn h×nh. Hµm TRIM c¾t bá nh÷ng dÊu trèng ë ®u«i mét x©u v¨n b¶n vµ gi¶m ®é dµi x©u cho t­¬ng xøng *. SET (I : I). ThÝ dô 34: S¾p xÕp danh s¸ch theo thø tù alphabª. ta sÏ thÊy tËp c¸c ch÷ sè tõ ‘0’ ®Õn ‘9’ tuÇn tù cã vÞ trÝ tõ 48 ®Õn 57. tù ®éng t¹o c¸c tªn file trong ch­¬ng tr×nh. TEMP * H×nh nh­ trong thùc tÕ hµm nµy vµ c¶ hµm LEN n÷a kh«ng lµm viÖc ®óng nh­ ng­êi ta m« t¶ nã trong tµi liÖu. ADJUSTR dïng ®Ó dån mét x©u ký tù vÒ tr¸i hoÆc vÒ ph¶i b»ng c¸ch c¾t bá nh÷ng dÊu trèng ë phÝa tr¸i hoÆc ë phÝa ph¶i cña x©u ®ã. 247 248 . tËp c¸c ch÷ c¸i hoa tiÕng Anh tõ ‘A’ ®Õn ‘Z’ cã vÞ trÝ tõ 65 ®Õn 90 vµ tËp c¸c ch÷ c¸i th­êng tiÕng Anh tõ ‘a’ ®Õn ‘z’ cã vÞ trÝ tõ 97 ®Õn 122 trong chuçi thø tù so s¸nh. ThÝ dô. LLE. khi cÇn thiÕt. “nhá h¬n hoÆc b»ng vÒ tõ vùng” vµ “nhá h¬n vÒ tõ vùng”. ViÕt ch­¬ng tr×nh ®äc tõ bµn phÝm tªn vµ sè ®iÖn tho¹i cña 20 ng­êi.. trong ®ã cã nh÷ng ký tù chuyªn dïng ®Ó biÓu diÔn c¸c ch÷ c¸i Hy L¹p. XAU2 th× LGE (XAU1. c¸c ký tù dïng ®Ó kÎ biÓu b¶ng.CHARACTER *70 SET SET (1: 26) = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' SET (27: 52) = 'abcdefghijklmnopqrstuvwxyz' SET (53: 62) = '0123456789' DO I = 1. LGT. 62 PRINT *. PROGRAM NMSORT CHARACTER *8 TEN(20).

I READ 5. Ng­êi ta cã thÓ m· ho¸ mét bøc ®iÖn theo c¸ch sau: LÊy mét x©u gåm 62 ch÷ c¸i vµ ch÷ sè lµm kho¸. TEN(I) PRINT *.DO I = 1. 'SO DIEN THOAI' READ 5. M· hãa bøc ®iÖn lµ lµm cho dßng v¨n b¶n b×nh th­êng cña bøc ®iÖn cã mét d¹ng kh¸c th­êng chØ cã ng­êi m· hãa míi hiÓu ®­îc néi dung cña nã. TEL (20) END ThÝ dô 35: M· ho¸ bøc ®iÖn. D­íi ®©y lµ mét ch­¬ng tr×nh nhËn tõ bµn phÝm mét bøc ®iÖn vµ in ra mµn h×nh d¹ng m· ho¸ cña bøc ®iÖn ®ã.. 19 K=I DO J = I+1. Trong ch­¬ng tr×nh nµy ta dïng mét kho¸ lµ chuçi c¸c ch÷ c¸i vµ ch÷ sè s¾p xÕp theo thø tù kh¸c th­êng nh­ sau: YXAZKLMBJOCFDVSWTREGHNIPUQ yxazklmbjocfdvswtreghnipuq9087564312 ViÖc m· ho¸ c¸c ch÷ c¸i trong bøc ®iÖn ®­îc thùc hiÖn trong thñ tôc con ENCODE. 20 IF (LGT (TEN (K). Tõng ch÷ c¸i b×nh th­êng trong bøc ®iÖn ®­îc m· ho¸ b»ng mét ch÷ c¸i trong kho¸ sao cho ch÷ A b×nh th­êng ®­îc thay b»ng ch÷ c¸i ®Çu tiªn trong kho¸.. 'NHAP TEN NGUOI THU '. TEL (I) END DO PRINT *. TEN (J))) K = J END DO TEMP = TEN (K) TEN (K) = TEN (I) TEN (I) = TEMP TEMP = TEL (K) TEL (K) = TEL (I) TEL (I) = TEMP PRINT *. TEL (I) ENDDO 5 FORMAT (A) DO I = 1. 249 250 . 20 PRINT *. TEN (I). TEN (20). ch÷ B ®­îc thay b»ng ch÷ c¸i thø hai.

MADIEN*255. '(A255)') DIEN CALL ENCODE (KHOA. MADIEN) PRINT 5. LEN (MESSGE) LETTER = MESSGE (I : I) J = INDEX (ALP. ‘(MAXIMUM 255 LETTERS)' READ (5. ALPH*62 ALPH = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’ // ‘abcdefghijklmnopqrstuvwxyz0123456789' KHOA = 'YXAZKLMBJOCFDVSWTREGHNIPUQ’ // ‘yxazklmbjocfdvswtreghnipuq9087564312' PRINT*.EQ. 'ENTER A MESSEAGE’. SECRET * (*) CHARACTER ALP * (*). LETTER) IF (J . 'THIS IS ENCODED AS' /. MESSGE. SECRET) CHARACTER MESSGE * (*). A /) END SUBROUTINE ENCODE (KEY. MADIEN FORMAT (1X. LETTER DO I = 1. ALPH.* * * 5 PROGRAM MSGCOD CHARACTER DIEN*255. ALP. 0) THEN SECRET (I : I) = LETTER ELSE SECRET (I : I) = KEY (J : J) END IF END DO RETURN END Bµi tËp 1. 1X. KEY * (*). /. C¸c biÕn K vµ J sÏ cã gi¸ trÞ b»ng bao nhiªu sau khi thùc hiÖn nhãm lÖnh sau ®©y: 251 252 . 1X. CHARACTER KHOA*62. DIEN.

91 NGUYEN THIEN THUAT NHA TRANG. gi¶ sö m· ®iÖn lµ dßng ch÷ DKKG YG YJRWSRG EYGHRZYU th× theo quy t¾c trªn. File kh«ng cã dßng ®Çu b¸o th«ng tin vÒ sè dßng d÷ liÖu vµ còng kh«ng cã dßng ký hiÖu cuèi file b¸o hÕt d÷ liÖu. Gi¶ sö c¸c bøc ®iÖn ®­îc m· ho¸ b»ng mét kho¸ nh­ trong thÝ dô 31.CHARACTER *18 STRG INTEGER K. ta cã bøc ®iÖn ®­îc gi¶i m· nh­ sau: MEET AT AIRPORT SATURDAY ViÕt ch­¬ng tr×nh cho phÐp ®äc tõ bµn phÝm mét bøc ®iÖn d­íi d¹ng m· ho¸ vµ in lªn mµn h×nh d¹ng ®· gi¶i m· cña nã. nÕu trïng víi ch÷ c¸i thø hai th× thay nã b»ng ch÷ B. Dßng thø hai chøa ®Þa chØ sè nhµ vµ ®­êng phè (35 ký tù). (058)832536 253 254 . H·y viÕt ch­¬ng tr×nh ®äc d÷ liÖu vµ in ra th«ng tin vÒ tõng ng­êi theo mÉu nh·n sau ®©y (thÝ dô): HUY. H·y viÕt ch­¬ng tr×nh ®äc vµo tõ bµn phÝm mét tªn ng­êi nµo ®ã. ThÝ dô. A8. 4. nÕu cã th× in ra tªn ng­êi cïng víi sè ®iÖn tho¹i t×m ®­îc sao cho sè ®iÖn tho¹i ®­îc ®Æt trong cÆp dÊu ngoÆc ngay sau tªn. J STR = 'TO BE OR NOT TO BE' K = INDEX (STRG. sau ®ã kiÓm tra xem ng­êi ®ã cã trong danh môc ®iÖn tho¹i cña b¹n kh«ng. Q.. tªn thµnh phè (15 ký tù) vµ sè ®iÖn tho¹i (15 ký tù). NÕu kh«ng cã th× ®­a ra th«ng b¸o 'KHONG CO TRONG DANH MUC'. Dßng thø nhÊt cña mçi ng­êi chøa hä tªn ®Çy ®ñ (30 ký tù) gåm hä. tøc dïng chuçi c¸c ch÷ c¸i vµ ch÷ sè: YXAZKLMBJOCFDVSWTREGHNIPUQ yxazklmbjocfdvswtreghnipuq9087564312 Ng­êi ta gi¶i m· nh­ sau: Tõng ch÷ c¸i trong m· ®iÖn sÏ ®­îc thay thÕ bëi mét ch÷ c¸i trong b¶ng ch÷ c¸i alphabª theo quy t¾c: nÕu ch÷ c¸i trong m· ®iÖn trïng víi ch÷ c¸i thø nhÊt trong kho¸ th× ch÷ c¸i ®ã thay b»ng ch÷ A trong b¶ng ch÷ c¸i alphabª. 'BE') + K 2. Gi¶ sö danh môc sè ®iÖn tho¹i cña nh÷ng ng­êi quen cña b¹n l­u trong file TELNUM d­íi d¹ng nh÷ng dßng gåm tªn ng­êi ®Çy ®ñ vµ sè ®iÖn tho¹i cña mçi ng­êi víi format A30. 'BE') J = INDEX (STR (K + 1:). File d÷ liÖu ADDR chøa kho¶ng 50 tªn ng­êi vµ ®Þa chØ. ch÷ ®Öm vµ tªn. Mçi x©u ký tù ®­îc ghi trong cÆp dÊu nh¸y trªn. N. 3..

TÝnh gi¸ trÞ trung b×nh th¸ng cña tÊt c¶ c¸c yÕu tè trong tÊt c¶ c¸c n¨m quan tr¾c. ‘SEP’. 255 256 .2. n¨m cuèi quan tr¾c. Chó ý sau tªn thµnh phè lµ dÊu ph¶y. ’JUL’. kh«ng nªn ®Ó mét dÊu c¸ch nµo tr­íc dÊu ph¶y ®ã. trang 56). ’FEB’. th¸ng. ‘APR’. ‘AUG’. 6. H·y viÕt ch­¬ng tr×nh in tê lÞch cña mét th¸ng.Mçi nh·n c¸ch nhau bèn dßng. 8. ViÕt thñ tôc TDBANG (N. Gi¶ sö b¹n ®· biÕt r»ng ngµy ®Çu n¨m cña mét n¨m lµ ngµy thø mÊy trong tuÇn lÔ. 5. mçi tªn ®­îc ghi víi ®é réng 8 vÞ trÝ vµ c¨n bªn ph¶i. TENCOT lµ m¶ng mét chiÒu gåm N phÇn tö v¨n b¶n chuyªn dïng ®Ó in ra mét tiªu ®Ò cét cña b¶ng. KÕt qu¶ ghi vµo nh÷ng file míi. ViÕt ch­¬ng tr×nh in b¶ng c¸c to¸n tö l«gic (b¶ng 4. n¨m bÊt kú trong t­¬ng lai d­íi d¹ng dÔ nh×n. Sè liÖu gi¸ trÞ ngµy cña c¸c yÕu tè khÝ t­îng thñy v¨n t¹i tr¹m quan tr¾c ®­îc l­u trong file ASCII cã quy c¸ch ghi nh­ sau: Dßng trªn cïng ghi tªn tr¹m. n¨m ®Çu vµ ngµy. Th¸ng vµ n¨m nhËp tõ bµn phÝm. Gi¶ sö b¹n ®· biÕt ngµy ®Çu n¨m cña mét n¨m nµo ®ã lµ thø mÊy trong tuÇn lÔ. H·y viÕt ch­¬ng tr×nh in tê lÞch th¸ng Giªng cña n¨m ®ã d­íi d¹ng dÔ nh×n. Dßng thø 4 lµ tiªu ®Ò cét liÖt kª tªn tÊt c¶ c¸c yÕu tè ®­îc quan tr¾c. ‘MAR’. ThÝ dô nÕu ch­¬ng tr×nh gäi thñ tôc nµy vµ chuyÓn ®èi sè thùc tÕ b»ng 12 vµ mét m¶ng 12 tªn viÕt t¾t th¸ng tiÕng Anh ‘JAN’. sao cho tªn file trïng víi tªn cña yÕu tè quan tr¾c. th¸ng. TENCOT) trong ®ã N lµ ®èi sè nguyªn. mçi dßng mét ngµy. 7. mçi yÕu tè mét file. ch­¬ng 4. ‘DEC’ th× ch­¬ng tr×nh sÏ in ra tÝt ®Çu b¶ng cã d¹ng nh­ d­íi ®©y: JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC 9. ‘OCT’. ‘NOV’. C¸c dßng tiÕp theo lÇn l­ît ghi gi¸ trÞ cña c¸c yÕu tè. Dßng thø ba cã 6 sè nguyªn viÕt c¸ch nhau lÇn l­ît chØ ngµy. ‘JUN’. ‘MAY’. Dßng thø 2 cã hai sè nguyªn viÕt c¸ch nhau lÇn l­ît chØ tæng sè ngµy quan tr¾c vµ sè yÕu tè ®­îc quan tr¾c.

65 vµ 42.17 ‘ §ã lµ viÖc b×nh th­êng. sè thùc vµ g¸n vµo c¸c biÕn nguyªn I. ThÝ dô. chóng ta ®· biÕt tõ tr­íc ®Õn nay..Ch­¬ng 11 Nh÷ng ®Æc ®iÓm bæ sung vÒ file 11. Ta sÏ thÊy Ých lîi cña ®Æc ®iÓm nµy cña file néi t¹i qua thÝ dô sau: INTEGER PTR REAL AMOUNT CHARACTER * 15 TEMP .17 ®· ®­îc ®äc ra nh­ lµ nh÷ng sè nguyªn. *) I. J REAL X DATA1 = '137 65 42. KÕt qu¶ lµ sau lÖnh ®äc nµy c¸c ®o¹n v¨n b¶n biÓu diÔn nh÷ng ch÷ sè 137.17. J. .. *) I. 257 258 .. Nh­ng h·y chó ý ®Õn lÖnh cuèi cïng. chØ cã kh¸c lµ thay v× ®¬n vÞ file trong cÆp dÊu ngoÆc ®¬n ta ®· ®­a tªn biÕn DATA1 vµo ®ã. th× lÖnh sÏ chuyÓn d÷ liÖu tõ mét vïng l­u gi÷ néi t¹i trong bé nhí sang mét vïng kh¸c. Sau nh÷ng lÖnh nµy gi¸ trÞ c¸c biÕn sè sÏ nh­ sau: I sÏ b»ng 137. §ã lµ lÖnh: READ (DATA1. Nh÷ng vïng l­u gi÷ nµy ®­îc gäi lµ c¸c file néi t¹i (internal file).17' READ (DATA1. J vµ biÕn thùc X trong danh s¸ch c¸c biÕn cÇn ®äc cña lÖnh READ mét c¸ch ®óng ®¾n. §©y lµ mét ®Æc ®iÓm rÊt quan träng cña Fortran..1. J sÏ b»ng 65 vµ X b»ng 42. Sau ®ã g¸n cho biÕn nµy dßng v¨n b¶n: ‘137 65 42. X Nh÷ng lÖnh trªn ®©y cã nghÜa r»ng chóng ta khai b¸o mét biÕn cã kiÓu v¨n b¶n DATA1 víi ®é dµi 13 ký tù. J. X Tr«ng lÖnh nµy gièng nh­ mét lÖnh ®äc d÷ liÖu b×nh th­êng. C¸c file néi t¹i (Internal Files) Khi mét ®¬n vÞ file trong c¸c lÖnh nhËp hoÆc xuÊt lµ tªn cña mét biÕn ký tù. ta cã thÓ ®äc d÷ liÖu tõ mét x©u ký tù thay v× ®äc tõ mét dßng d÷ liÖu trong file th«ng th­êng víi nh÷ng lÖnh sau ®©y: CHARACTER * 13 DATA1 INTEGER I.

TAM DO J = 1. Thay v× sè hiÖu thiÕt bÞ hay sè hiÖu file.12’. Sau ®ã ta xö lý. 5) TEMP 5 FORMAT (A10) IF (INDEX (TEMP. . *) AMOUNT NhËn thÊy r»ng lÖnh ®äc d÷ liÖu tõ file néi t¹i hoµn toµn t­¬ng tù lÖnh ®äc c¸c file th«ng th­êng. ‘GIO. B©y giê ta xÐt mét thÝ dô vÒ sö dông file néi ®Ó chuyÓn ®æi d÷ liÖu sè thµnh d÷ liÖu v¨n b¶n.. '$') TEMP (PTR: PTR) = ' ' END IF READ (TEMP.. th× lÖnh ®äc READ (12. ‘(I1)’) J ELSE WRITE (TAM.2’.5) TEMP vÉn kh«ng m¾c lçi vÒ kiÓu d÷ liÖu. Trong tr­êng hîp d÷ liÖu cã kÌm theo dÊu $ ë bªn tr¸i (c¸ch viÕt dÊu ®« la ®»ng tr­íc vµ dÝnh liÒn sè tiÒn cña nh÷ng ng­êi Mü th­êng lµm). ‘(I2)’) J END IF TENF (J) = ‘GIO’ // ‘.2.NE. Gi¶ sö ta muèn t¹o ra 12 tªn file lÇn l­ît lµ ‘GIO. 10) THEN WRITE (TAM. *) AMOUNT Víi ®o¹n ch­¬ng tr×nh nµy d÷ liÖu tõ trong ®¬n vÞ file (12) th«ng th­êng (file ngo¹i) ®­îc ®äc vµo biÕn ký tù TEMP. 12 IF (J .READ (12.LT..1’. C¸c file truy nhËp tuÇn tù (Sequential Files) 259 260 . ta ghi tªn biÕn (ë ®©y lµ biÕn TEMP) vµo vÞ trÝ cña thiÕt bÞ hay sè hiÖu file. §o¹n ch­¬ng tr×nh sau ®©y cã thÓ lµm ®­îc viÖc ®ã: INTEGER J CHARACTER *6 TENF(12).’ // TAM END DO 11. thay ký tù $ b»ng ký tù dÊu trèng vµ ®äc lÊy gi¸ trÞ sè thùc AMOUNT b»ng lÖnh ®äc file néi t¹i READ (TEMP. 0) THEN PTR = INDEX (TEMP. ‘GIO. '$') .

söa ®æi nã vµ sau ®ã ghi vµo mét file kh¸c. BiÓu thøc ký tù trong chØ ®Þnh FILE lµ tªn cña file cÇn më. IOSTAT=IERR) 261 262 . Ng­êi ta th­êng kiÓm tra gi¸ trÞ cña biÕn nµy ®Ó quyÕt ®Þnh hµnh ®éng tiÕp theo. hoÆc 'SCRATCH' (file xuÊt. * * * * * * * * FILE = BiÓu thøc ký tù. ta kh«ng thÓ cËp nhËt mét b¶n ghi ®¬n lÎ nµo trong nã. RECL = BiÓu thøc nguyªn. hoÆc 'OLD' (file ®ang tån t¹i). ‘GO TEN FILE’ READ (*. NÕu kh«ng cã lçi khi më file. hoÆc ‘UNKNOWN’ (ch­a râ). FILE=TEN. TEMP *70 PRINT *. th× mét gi¸ trÞ kh¸c 0 sÏ ®­îc l­u trong biÕn. BiÓu thøc ký tù cña chØ ®Þnh STATUS cã thÓ cã mét trong nh÷ng gi¸ trÞ lµ ‘NEW' (®Ó chØ file míi sÏ t¹o ra b»ng lÖnh WRITE). Hai chØ ®Þnh võa råi chóng ta ®· quen dïng trong c¸c ch­¬ng tr­íc. ERR = Nh·n lÖnh chuyÓn ®iÒu khiÓn) BiÓu thøc nguyªn trong chØ ®Þnh UNIT. sÏ bÞ xo¸ khi ch­¬ng tr×nh kÕt thóc). NÕu v¾ng mÆt chØ ®Þnh nµy th× ngÇm ®Þnh lµ 'SEQUENTIAL' nh­ tr­íc ®©y chóng ta ®· dïng. ‘(A12)’) TEN OPEN (UNIT=15. STATUS = BiÓu thøc ký tù. IOSTAT cã thÓ dïng ®Ó kh«i phôc lçi khi më file. BiÓu thøc ký tù trong chØ ®Þnh FORM hoÆc cã gi¸ trÞ lµ 'FORMATTED' hoÆc lµ 'UNFORMATTED' hay ‘BINARY’. B©y giê ta sÏ xÐt lÖnh OPEN phøc t¹p cã thªm nh÷ng chØ ®Þnh kh¸c so víi nh÷ng thÝ dô tr­íc ®©y: OPEN (UNIT = BiÓu thøc nguyªn. xuÊt ®¬n gi¶n. FORM = BiÓu thøc ký tù. th­êng lµ mét h»ng. BLANK = BiÓu thøc ký tù. ACCESS = BiÓu thøc ký tù. NÕu cã lçi. biÕn nguyªn sÏ cã gi¸ trÞ 0. Muèn thay ®æi mét b¶n ghi. Trong file UNFORMATTED d÷ liÖu ®­îc truy cËp nh­ lµ c¸c x©u nhÞ ph©n. C¸c file FORMATTED cã thÓ dïng víi c¶ lÖnh READ vµ WRITE cã ®Þnh d¹ng hoÆc dïng víi c¸c lÖnh nhËp. ThÝ dô CHARACTER TEN *12. BiÓu thøc ký tù trong chØ ®Þnh ACCESS ph¶i cã gi¸ trÞ b»ng 'DIRECT'' hoÆc ‘SEQUENTIAL' dïng ®Ó chØ file thuéc lo¹i truy cËp trùc tiÕp hay truy cËp tuÇn tù. ta ph¶i ®äc c¸c th«ng tin trong b¶n ghi. IOSTAT = BiÕn nguyªn. kh«ng ph¶i lµ c¸c sè hay c¸c ký tù.C¸c file ®­îc sö dông trong tÊt c¶ c¸c thÝ dô tõ tr­íc tíi nay gäi lµ file truy nhËp tuÇn tù v× mét khi file ®· ®­îc t¹o ra. thÝ dô kh«ng t×m thÊy file víi tªn ®· chØ ®Þnh. NÕu chØ ®Þnh FORM v¾ng mÆt th× ngÇm ®Þnh sÏ lµ ‘FORMATTED’ ®èi víi c¸c file tuÇn tù vµ ‘UNFORMATTED’ ®èi víi c¸c file trùc tiÕp. ®­îc sö dông trong c¸c lÖnh READ hoÆc WRITE ®Ó chØ ®¬n vÞ file ®­îc dïng. STATUS=’OLD’.

. ‘LOI MO FILE ‘. D¹ng tæng qu¸t nh­ sau: CLOSE (UNIT = BiÓu thøc nguyªn. BiÓu thøc ký tù cña chØ ®Þnh BLANK cã thÓ lµ 'NULL' hoÆc 'ZERO'. kh«ng dïng víi c¸c file truy cËp tuÇn tù.. ChØ ®Þnh ERR còng dïng víi c¸c lÖnh READ vµ WRITE. nã ng¾t mét file ngo¹i khái ch­¬ng tr×nh.. ERR = Nh·n lÖnh chuyÓn ®iÒu khiÓn) LÖnh CLOSE vµ c¸c chØ ®Þnh lµ tuú chän. . NÕu ®Æc t¶ lµ 'NULL' c¸c dÊu trèng trong c¸c tr­êng sè bÞ bá qua. • LÖnh REWIND REWIND (UNIT = BiÓu thøc nguyªn. • LÖnh CLOSE lµ mét lÖnh thùc hiÖn. BiÓu thøc nguyªn nã chØ ®Þnh ®é dµi cña mét b¶n ghi. NgÇm ®Þnh lµ 'NULL'. nÕu lµ 'ZERO' c¸c dÊu trèng ®­îc xem lµ c¸c sè 0. ‘DELETE’ cã nghÜa file kh«ng cÇn n÷a vµ nªn xo¸ ®i..IERR END IF §Æc t¶ IOSTAT còng cã thÓ dïng víi c¸c lÖnh READ vµ WRITE.EQ. ERR = Nh·n lÖnh ®iÒu khiÓn) 263 264 . ChØ ®Þnh ERR lµ tuú chän vµ cã gi¸ trÞ ®Ó xö lý lçi.IF (IERR . ChØ ®Þnh STATUS trong lÖnh CLOSE cã gi¸ trÞ ‘KEEP’ cã nghÜa file ®­îc gi÷ l¹i. NÕu lçi x¶y ra trong khi thùc hiÖn lÖnh OPEN hay mét lÖnh nµo ®ã cã chøa chØ ®Þnh nµy th× ch­¬ng tr×nh sÏ chuyÓn ®iÒu khiÓn tíi lÖnh cã nh·n ghi trong chØ ®Þnh ERR thay v× t¹o ra lçi thùc hiÖn ch­¬ng tr×nh. * * * STATUS = BiÓu thøc ký tù. * * IOSTAT = BiÕn nguyªn. . IOSTAT = BiÕn nguyªn. ELSE PRINT*. ChØ ®Þnh RECL cÇn cho c¸c file truy cËp trùc tiÕp.. 0) THEN ..

C¸c lÖnh READ vµ WRITE ph¶i chøa chØ ®Þnh REC ®Ó cung cÊp sè hiÖu cña b¶n ghi cÇn truy cËp. ERR = Nh·n lÖnh ®iÒu khiÓn) 11. * REC = BiÓu thø nguyªn) Danh s¸ch biÕn WRITE (Sè hiÖu file. nh·n lÖnh FORMAT.dïng ®Ó chuyÓn vÒ vÞ trÝ b¶n ghi thø nhÊt trong file tuÇn tù. mµ theo thø tù ®­îc chØ ®Þnh trong ch­¬ng tr×nh. ERR = Nh·n lÖnh ®iÒu khiÓn) chuyÓn vÞ trÝ ®äc ng­îc l¹i vÒ phÝa tr­íc mét b¶n ghi trong file tuÇn tù. D¹ng tæng qu¸t cña c¸c lÖnh READ hoÆc WRITE víi file truy cËp trùc tiÕp nh­ sau: READ (Sè hiÖu file.3. Khi mét file trùc tiÕp ®­îc më. chØ ®Þnh ACCESS trong lÖnh OPEN ph¶i ®Æt lµ ‘DIRECT’ vµ ®é dµi cña b¶n ghi ph¶i ®­îc cho víi chØ ®Þnh RECL. • LÖnh ENDFILE ENDFILE (UNIT = BiÓu thøc nguyªn. nh·n lÖnh FORMAT. • LÖnh BACKSPACE BACKSPACE (UNIT = BiÓu thøc nguyªn. C¸c chØ ®Þnh ERR vµ IOSTAT cã thÓ ®­îc sö dông víi c¸c lÖnh READ hoÆc WRITE 265 266 . IOSTAT = BiÕn nguyªn. * * IOSTAT = BiÕn nguyªn. * * ghi vµo file mét b¶n ghi chØ sù kÕt thóc file khi file ®· ®­îc t¹o ra. * REC = BiÓu thøc nguyªn) Danh s¸ch biÕn BiÓu thøc nguyªn trong chØ ®Þnh REC dïng ®Ó chØ sè hiÖu b¶n ghi cÇn xö lý. C¸c file truy cËp trùc tiÕp (Direct-Access Files) C¸c b¶n ghi trong c¸c file truy cËp trùc tiÕp ®­îc truy cËp kh«ng theo c¸ch tuÇn tù.

B¶ng 9. Khi tæ chøc file truy cËp trùc tiÕp. §Ó kh«i phôc lçi. chØ ®Þnh ERR cÇn ph¶i cã mÆt trong lÖnh READ. 'FORMATTED' 'UNFORMATTED' Gi¸ trÞ truy vÊn ®¬n vÞ file UNIT 'SEQUENTIAL' 'DIRECT' 'NULL' 'ZERO' _ Sè hiÖu lÖnh xö lý lçi . LÖnh truy vÊn INQUIRE LÖnh INQUIRE cã hai d¹ng: INQUIRE ( FILE = biÓu thøc ký tù. Khi cËp nhËt th«ng tin xong.TRUE. SEQUENTIAL = TRALOI) INQUIRE (UNIT = 12. danh s¸ch chØ ®Þnh truy vÊn) INQUIRE ( UNIT = biÓu thøc nguyªn.TRUE.1. t×m b¶n ghi mµ ta muèn cËp nhËt. .. ta cã thÓ ghi th«ng tin míi vµo b¶n ghi. Thay v× ®äc tõng b¶n ghi mét c¸ch tuÇn tù. §«i khi cã thÓ thùc hiÖn mét sè tÝnh to¸n víi mét tr­êng cña b¶n ghi ®Ó nhËn ®­îc sè hiÖu cña nã.mét phÇn cña b¶n ghi lµm sè hiÖu b¶n ghi.FALSE. File nµy cã thÓ xö lý theo thø tù tuÇn tù b»ng c¸ch thay ®æi sè hiÖu b¶n ghi tõ 1 ®Õn tæng sè tÊt c¶ c¸c b¶n ghi. 'FORMATTED' 'UNFORMATTED' 267 268 . ­u ®iÓm cña file trùc tiÕp sÏ thÓ hiÖn râ khi chóng ta muèn cËp nhËt th«ng tin trong mét sè b¶n ghi cña file.FALSE. Tuú chän END cã thÓ chØ dïng víi lÖnh READ. SEQUENTIAL = TRALOI) B¶ng 11.4. víi b¶n ghi b¾t ®Çu b»ng 1 vµ t¨ng lªn 1 mçi lÇn cã mét b¶n ghi míi ®­îc viÕt vµo. NÕu trong lÖnh READ ta chØ ®Þnh mét sè hiÖu b¶n ghi mµ b¶n ghi ®ã kh«ng tån t¹i th× sÏ x¶y ra lçi. File truy cËp trùc tiÕp th­êng ®­îc t¹o ra b»ng c¸ch ghi th«ng tin vµo mét c¸ch tuÇn tù.. C¸c chØ ®Þnh truy vÊn cña lÖnh INQUIRE ChØ ®Þnh truy vÊn ACCESS = BLANK = DIRECT = ERR = EXIST = FORM = KiÓu biÕn CHARACTER CHARACTER CHARACTER INTEGER LOGICAL CHARACTER Gi¸ trÞ truy vÊn file FILE 'SEQUENTIAL' 'DIRECT' 'NULL' 'ZERO' 'YES' 'NO' Sè hiÖu lÖnh xö lý lçi . ta chØ cÇn chØ ®Þnh sè hiÖu b¶n ghi vµ b¶n ghi ®ã tù ®éng ®­îc xö lý.1 liÖt kª nh÷ng chØ ®Þnh truy vÊn. 11. Do ®ã th«ng tin vÒ sinh viªn sè 00210 cã thÓ ®­îc l­u trong b¶n ghi 210.trùc tiÕp. ThÝ dô c¸c sè hiÖu ph©n biÖt cña sinh viªn trong mét tr­êng ®¹i häc th­êng b¾t ®Çu b»ng 00001 råi ®Õn 00002. ng­êi ta th­êng sö dông sè thø tù hoÆc sè hiÖu ph©n biÖt . danh s¸ch chØ ®Þnh truy vÊn) LÖnh nµy lµ mét lÖnh thùc hiÖn. nã truy vÊn th«ng tin vÒ file hay sè hiÖu file. ThÝ dô: INQUIRE (FILE = 'TSDATA'. . Tuy nhiªn.

TRUE.FALSE. Tr­êng hîp file ®ã kh«ng tån t¹i.NOT. ch­¬ng tr×nh nh¾c ng­êi dïng gâ mét tªn file kh¸c. ch­¬ng tr×nh sÏ kÕt thóc bëi lçi thùc hiÖn. §é dµi b¶n ghi 'YES' 'NO' 'UNKNOWN' 'YES' 'NO' 'UNKNOWN' − M· lçi Tªn file nÕu file ®ã kh«ng ph¶i lµ file lo¹i scratch .NOT. ch­¬ng tr×nh cã thÓ x¸c ®Þnh file ®ã cã tån t¹i kh«ng vµ nÕu kh«ng tån t¹i. TENFIL 5 IF (. Gi¶ sö khi ch­¬ng tr×nh yªu cÇu ng­êi dïng gâ mét tªn cña file d÷ liÖu ®Ó më ra lµm viÖc trong ch­¬ng tr×nh.TRUE.FORMATTED = IOSTAT = NAME = NAMED + = NEXTREC = NUMBER + = OPEND = RECL = SEQUENTIAL = CHARACTER INTEGER CHARACTER LOGICAL INTEGER INTEGER LOGICAL INTEGER CHARACTER 'YES' 'NO' 'UNKNOWN' M· lçi − _ Sè hiÖu b¶n ghi tiÕp theo trong file truy cËp trùc tiÕp §¬n vÞ file . OK. . XONG) THEN INQUIRE (FILE = TENFIL. NÕu ta dïng lÖnh INQUIRE.TRUE. . CO) THEN PRINT *.FALSE. C¸c lÖnh sau ®©y thùc hiÖn sù t­¬ng t¸c nµy: CHARACTER *70 TENFIL. OK = . 'NHAP TEN FILE' READ *.FALSE.FALSE. . §é dµi b¶n ghi − UNFORMATTED = CHARACTER − ThÝ dô 36: Sù t­ ¬ng t¸c gi÷a ng ­êi dïng vµ ch­ ¬ng tr×nh. CO XONG = . 'FILE KHONG TON TAI' 269 270 . TIT LOGICAL XONG. PRINT *. Sè hiÖu b¶n ghi tiÕp theo trong file truy cËp trùc tiÕp − . EXIST = CO) IF (.FALSE.

ENDIF GOTO 5 ENDIF IF (OK) THEN OPEN (UNIT = 10. Dßng thø hai ghi ®é s©u (sè nguyªn) cña tÇng trªn cïng.TRUE.. Gi¸ trÞ nhiÖt ®é khuyÕt hoÆc r¬i vµo vïng ®Êt liÒn ®­îc ghi b»ng sè 99. ViÕt ch­¬ng tr×nh ®Õm vµ in sè b¶n ghi trong c¸c file DATA1 vµ DATA2. 3. Víi file sè liÖu cña bµi tËp 2. ViÕt ch­¬ng tr×nh tÝnh gi¸ trÞ nhiÖt ®é n­íc trung b×nh toµn biÓn §«ng.. F6. 'NHAP TEN KHAC HOAC GO THOI' READ *.PRINT *. 1X.BLN’.EQ. Gi¶ sö c¸c file ®ã lµ file tuÇn tù vµ mçi b¶n ghi chøa hai gi¸ trÞ thùc víi format sau: FORMAT (F6. mét dÊu c¸ch vµ ch÷ sè 1. C¸c tÇng tiÕp theo ghi hoµn toµn t­¬ng tù.TRUE. sau ®ã ch÷ V vµ c¸c ch÷ sè chØ vÜ ®é ®iÓm. viÕt ch­¬ng tr×nh ®äc th«ng tin trong file vµ t¹o cho mçi ®iÓm nót thuéc miÒn tÝnh mét file ®Æt tªn theo quy t¾c sau: b¾t ®Çu b»ng ch÷ K. 2. STATUS = 'OLD') . 'THOI') XONG = . dßng trªn cïng cã mét sè nguyªn chØ sè tÇng quan tr¾c thùc tÕ cña ®iÓm. 271 272 . vÜ ®é mÐp d­íi cña miÒn kh«ng gian vµ sè tÇng s©u. ELSE XONG = . OK = ..2) NÕu lçi x¶y ra khi më file. Sau ®ã lµ b¶ng gi¸ trÞ nhiÖt ®é (sè thùc c¸ch nhau) víi sè cét b»ng sè ®iÓm nót theo kinh tuyÕn. . Trong c¸c file cã quy c¸ch ghi nh­ sau.99. h·y in th«ng b¸o lçi thay v× in sè b¶n ghi. .. sè dßng b»ng sè ®iÓm nót theo vÜ tuyÕn. File TEM60. kinh ®é mÐp ph¶i. END IF END Bµi tËp 1.TRUE. Sau ®ã liÖt kª liªn tiÕp gi¸ trÞ nhiÖt ®é vµ tÇng s©u øng víi nhiÖt ®é ®ã víi dÊu ng­îc l¹i.JAN l­u tr­êng ba chiÒu nhiÖt ®é n­íc biÓn §«ng th¸ng Giªng ®é ph©n gi¶i 1o kinh vÜ cã quy c¸ch ghi nh­ sau: Dßng ®Çu tiªn gåm 5 sè nguyªn c¸ch nhau lÇn l­ît chØ kinh ®é mÐp tr¸i.2. sau ®ã ®Õn c¸c ch÷ sè chØ kinh ®é ®iÓm. FILE = TENFIL... ®u«i file lµ ‘. vÜ ®é mÐp trªn. TENFIL IF (TENFIL .

mçi hÖ sè ghi víi ®Þnh d¹ng F8.915 Ta + 1. . 3.5471 273 274 . .5471 0.1397X3 + 0. 5.2.Dßng thø 5 lÇn l­ît ghi ®¬n vÞ ®o cña tõng yÕu tè quan tr¾c. In kÕt qu¶ lªn mµn h×nh d­íi d¹ng ph­¬ng tr×nh håi quy víi tªn c¸c yÕu tè ®· ghi trong file.1675 0.2271 1.237 (Ghi chó: xem c«ng thøc trong phô lôc 3).1490X4 = 1.2671 1.1397 0. ViÕt ch­¬ng tr×nh cho phÐp nhËp tªn file tõ bµn phÝm.4. ph­¬ng tr×nh ph¶i viÕt cã d¹ng: Tw = 0.Dßng thø ba ghi hai sè nguyªn chØ sè dßng d÷ liÖu (kh«ng qu¸ 5000) vµ sè yÕu tè quan tr¾c (kh«ng qu¸ 12) c¸ch nhau Ýt nhÊt mét dÊu trèng.1254X2 + 0. KÕt qu¶ in ra mµn h×nh gåm: viÕt l¹i hÖ ph­¬ng tr×nh. 7.1490 1. Víi file d÷ liÖu ®· m« t¶ trong bµi tËp 4.Mçi dßng trong c¸c dßng tiÕp sau lÇn l­ît ghi gi¸ trÞ quan tr¾c cña c¸c yÕu tè.1968 0. 8. mçi gi¸ trÞ ghi víi ®Þnh d¹ng F8. thÝ dô: 4 1. sau ®ã c¸ch ra mét dßng råi ghi c¸c nghiÖm ë dßng cuèi cïng.8471 ViÕt ch­¬ng tr×nh ®äc file vµ gi¶i hÖ ph­¬ng tr×nh b»ng ph­¬ng ph¸p lo¹i biÕn Gauss.Dßng thø nhÊt cã hai sè nguyªn 1 vµ 2 c¸ch nhau mét dÊu trèng. còng víi ®Þnh d¹ng A8. In kÕt qu¶ ra mµn h×nh theo quy c¸ch sau: gi¶ sö tªn biÕn thø nhÊt lµ Tw.1871 1. File HESOA.7471 0. 6. thÝ dô. ®äc d÷ liÖu vµ lËp ph­¬ng tr×nh håi quy gi÷a biÕn thø nhÊt (biÕn phô thuéc) vµ biÕn thø hai (biÕn ®éc lËp).4.2471 0. lËp ch­¬ng tr×nh tÝnh ph­¬ng tr×nh håi quy nhiÒu biÕn gi÷a yÕu tè quan tr¾c thø nhÊt (biÕn phô thuéc) vµ c¸c yÕu tè quan tr¾c 2.Dßng thø t­ lÇn l­ît ghi tªn c¸c yÕu tè ®­îc quan tr¾c.1161X1 + 0.2568 1. biÕn thø hai lµ Ta. 6.MAT l­u c¸c gi¸ trÞ cña c¸c hÖ sè cña hÖ ph­¬ng tr×nh ®¹i sè tuyÕn tÝnh theo quy c¸ch nh­ sau: Dßng thø nhÊt cã mét sè nguyªn chØ sè ph­¬ng tr×nh. øng víi ma trËn c¸c hÖ sè nh­ trªn ph¶i cã kÕt qu¶ trªn mµn h×nh nh­ sau: 1. . . 9. C¶i tiÕn ch­¬ng tr×nh trong bµi tËp 4 ®Ó cho phÐp ng­êi dïng tuú ý chØ ®Þnh biÕn phô thuéc vµ biÕn ®éc lËp tõ bµn phÝm. cã quy c¸ch ghi nh­ sau: . mçi tªn víi ®Þnh d¹ng A8.6471 0.1254 0.2368 0. kÓ c¶ hÖ sè tù do øng víi tõng ph­¬ng tr×nh.1768 0.Dßng thø hai ghi tªn tr¹m (kh«ng qu¸ 100 ký tù). mçi ph­¬ng tr×nh trªn mét dßng. Gîi ý: Xem ph­¬ng ph¸p thiÕt lËp ph­¬ng tr×nh håi quy tuyÕn tÝnh nhiÒu biÕn trong phô lôc 4.1161 0. C¸c dßng tiÕp sau ghi c¸c gi¸ trÞ c¸c hÖ sè. .2168 0. Gi¶ sö cã file d÷ liÖu l­u gi¸ trÞ quan tr¾c cña mét sè yÕu tè khÝ t­îng thñy v¨n t¹i tr¹m h¶i v¨n.2071 1.1582 1.

File HESOAB.98697 0. H·y viÕt ch­¬ng tr×nh ®äc file c¸c hÖ sè vµ gi¶i hÖ ph­¬ng tr×nh. . Gi¶ sö ma trËn c¸c hÖ sè A = [ ai j ] lµ ma trËn ®èi xøng.2568X3 + 1.0. In kÕt qu¶ theo quy c¸ch cña bµi tËp 7.2271X4 = 1.MAT l­u c¸c gi¸ trÞ cña c¸c hÖ sè cña hÖ ph­¬ng tr×nh ®¹i sè tuyÕn tÝnh theo quy c¸ch nh­ ®· m« t¶ trong bµi tËp 7.1675X2 + 0. nªn dïng ph­¬ng ph¸p c¨n bËc hai ®Ó gi¶i hÖ ph­¬ng tr×nh ®¹i sè tuyÕn tÝnh (phô lôc 2). 2.. Gîi ý: Tr­êng hîp ma trËn c¸c hÖ sè A lµ ma trËn ®èi xøng.88130 Gîi ý: Xem ph­¬ng ph¸p gi¶i hÖ ph­¬ng tr×nh ®¹i sè tuyÕn tÝnh theo s¬ ®å lo¹i biÕn Gauss trong phô lôc 2.2168X3 + 0.1582X1 + 1.7471 0.93505 0. 275 276 . j = 1.1871X4 = 1.1968X1 + 0..2071X2 + 1. tøc a ij = a ji (i.2471X2 + 0.04059 0. 8. n) ..2368X1 + 0.6471 0.2671X4 = 1.1768X3 + 0.8471 1.

М о с . Moscow. M. Massachusetts-.. 616 p. Computational Mathematics. а c. N. “Ит Не Фр .М А с . е в и ч р ап н и а т е м а т б и б л и о т “Д и а IMSL. В а с и л ь Б. О. С о в р е м Ф о р т. а и н р о т а н а л и з н а о д а н к ю ” Ре о к в 528 с 277 278 .. 2000.Tµi liÖu tham kh¶o 1. е в и ч е н н ыр и а л и ф и й к в 397 5. 2. А.. Fortran with engineering applications. 664 p. Etter D. С в а т и с т и ч е с к и йн ы х м п ь . California. Fifth Edition. 1998.A. ф и к в 448 6. Maron. Addison-Wesley Publishing Co. а c. Fourth edition. The Benjamin/Cummings Publishing Co. М и ”. 1998. 1993. Worked examples and problems with elements of theory. “Д а н г-М о ”. Т ю р Ю. Structured Fortran 77 for engineers and scientists. М о с . V. В а с и л ь Б.. Koffman Elliot B.. Friedman Frank L.. Н. М а к а А. Inc. Mir Publishers. 3. Kopchenova and I. 1993. Ф о р т д л я р о ф е с с : М о н а л о в и ч е с к а я е к а л о н О. 1975 4.

Phô lôc 1: B¶ng c¸c hµm chuÈn cña FORTRAN 279 280 .

Trong b¶ng c¸c hµm chuÈn d­íi ®©y. nghiªng) KiÓu hµm X DX CX X IX DX CX eX e DX e CX §Þnh nghÜa CEXP (CX) Tªn hµm LOG (GX) ALOG (X) DOG (GX) CLOG (CX) LOG10 (GX) ALOG10 (X) DLOG10 (DX) Phøc KiÓu hµm KiÓu theo GX Thùc §é chÝnh x¸c ®«i Phøc KiÓu theo GX Thùc §é chÝnh x¸c ®«i §Þnh nghÜa log e GX log e X log e DX log e CX log 10 GX log 10 X log10 DX 281 282 . tªn cña c¸c ®èi sè sÏ chØ kiÓu d÷ liÖu theo quy ­íc sau: §èi sè X CHX DX CX LX IX GX Tªn hµm SQRT(X) DSQRT (DX) CSQRT (CX) ABS (X) IABS (IX) DABS (DX) CABS (CX) EXP (X) DEXP (DX) Thùc §é chÝnh x¸c ®«i Phøc Thùc Nguyªn §é chÝnh x¸c ®«i Phøc Thùc §é chÝnh x¸c ®«i → → → → → → → KiÓu d÷ liÖu thùc x©u ký tù ®é chÝnh x¸c ®«i phøc l«gic nguyªn tù sinh (in ®Ëm.

REA L(GX) FLOAT (IX) SNGL (DX) ANINT(X) DNINT(DX) NINT(X) IDNINT (DX) AINT (X) DINT (DX) INT (GX) IFIX (X) IDINT (DX) SIGN (X, Y) ISIGN (IX, IY) DSIGN (DX, DY) MOD (IX,IY) AMOD (X,Y) DMOD (DX,DY) DIM (X,Y) IDIM (IX,IY) DDIM (DX,DY)

Thùc Thùc Thùc Thùc §é chÝnh x¸c ®«i Nguyªn Nguyªn Thùc §é chÝnh x¸c ®«i Nguyªn Nguyªn Nguyªn Thùc Nguyªn §é chÝnh x¸c ®«i Nguyªn Thùc §é chÝnh x¸c ®«i Thùc Nguyªn §é chÝnh x¸c ®«i

ChuyÓn GX thµnh gi¸ trÞ thùc ChuyÓn IX thµnh gi¸ trÞ thùc ChuyÓn DX thµnh ®é chÝnh x¸c ®¬n Lµm trßn tíi sè thùc gÇn nhÊt Lµm trßn tíi sè thùc gÇn nhÊt Lµm trßn tíi sè nguyªn gÇn nhÊt Lµm trßn tíi sè nguyªn gÇn nhÊt C¾t phÇn thËp ph©n cña X C¾t phÇn thËp ph©n cña DX C¾t GX thµnh sè nguyªn C¾t X thµnh sè nguyªn C¾t DX thµnh sè nguyªn G¸n dÊu cña Y cho X G¸n dÊu cña IY cho IX G¸n dÊu cña DY cho DX LÊy sè d­ cña phÐp chia IX / IY LÊy sè d­ cña phÐp chia X / Y LÊy sè d­ cña phÐp chia DX / DY X − (cùc tiÓu cña X vµ Y) IX − (cùc tiÓu cña IX vµ IY) DX − (cùc tiÓu cña DX vµ DY)

Tªn hµm
MAX (GX,GY,...) MAX0 (IX,IY,...) AMAX1 (X,Y,...) DMAX1 (DX,DY,...) AMAX0 (IX,IY,...) MAX1 (X,Y,...) MIN (GX,GY,...) MIN0 (IX,IY,...) AMIN1 (X,Y,...) Nguyªn Thùc

KiÓu hµm
KiÓu theo GX, GY, ...

§Þnh nghÜa
Cùc ®¹i cña (GX, GY, ...) Cùc ®¹i cña (IX, IY, ...) Cùc ®¹i cña (X, Y, ...) Cùc ®¹i cña (DX, DY, ...) Thùc, cùc ®¹i cña (IX, IY, ...) Cùc ®¹i cña (X, Y, ...) Cùc tiÓu cña (GX, GY, ...) Cùc tiÓu cña (IX, IY, ...) Cùc tiÓu cña (X, Y, ...)

§é chÝnh x¸c ®«i Thùc Nguyªn KiÓu theo GX,GY,... Nguyªn Thùc

283

284

DMIN1 (DX,DY,...) AMIN0 (IX,IY,...) MIN1 (X,Y,...) SIN (X) DSIN (DX) CSIN (CX) COS (X) DCOS (DX) CCOS (CX) TAN (X) DTAN (DX) ASIN (X) DASIN (X) ACOS (X) DACOS (DX) ATAN (X) DATAN (DX)

§é chÝnh x¸c ®«i Thùc Nguyªn Thùc §é chÝnh x¸c ®«i Phøc Thùc §é chÝnh x¸c ®«i Phøc Thùc §é chÝnh x¸c ®«i Thùc §é chÝnh x¸c ®«i Thùc §é chÝnh x¸c ®«i Thùc §é chÝnh x¸c ®«i

Cùc tiÓu cña (DX, DY, ...) Cùc tiÓu cña (IX, IY, ...) Cùc tiÓu cña (X, Y, ...)

sin X (X - ra®ian) sin DX (DX - ra®ian) sin CX cos X (X - ra®ian) cos DX (DX - ra®ian) cos CX tgX (X - ra®ian) tgDX (DX - ra®ian) arcsin X arcsin DX arccos X arccos DX arctgX arctgDX

Tªn hµm
ATAN2 (X,Y) DATAN2 (DX,DY) SINH (X) DSINH (DX) COSH (X) DCOSH (DX) TANH (X) DTANH (DX) Thùc

KiÓu hµm

§Þnh nghÜa
arctg ( X / Y ) arctg ( DX / DY ) shX shDX chX chDX th X thDX

§é chÝnh x¸c ®«i Thùc §é chÝnh x¸c ®«i Thùc §é chÝnh x¸c ®«i Thùc §é chÝnh x¸c ®«i

285

286

DPROD (X, Y) DBLE (X) CMPLX (X) CMPLX (X, Y) AIMAG (CX) REAL (CX) CONJG (CX) LEN (CHX) INDEX (CHX, CHY) CHAR (IX) ICHAR (CHX) LGE (CHX, CHY) LGT (CHX, CHY) LLE (CHX, CHY) LLT (CHX, CHY)

§é chÝnh x¸c ®«i §é chÝnh x¸c ®«i Phøc Phøc Thùc Thùc Phøc Nguyªn Nguyªn Ký tù Nguyªn L«gic L«gic L«gic L«gic

TÝch cña X vµ Y ChuyÓn X thµnh ®é chÝnh x¸c ®«i

X + 0i X + Yi
PhÇn ¶o cña CX PhÇn thùc cña CX Liªn hîp cña CX, a − bi §é dµi cña x©u ký tù CHX VÞ trÝ cña x©u CHY trong x©u CHX Ký tù øng víi vÞ trÞ thø IX trong chuçi so s¸nh VÞ trÝ cña ký tù CHX trong chuçi so s¸nh Gi¸ trÞ cña biÓu thøc (CHX lín h¬n hoÆc b»ng CHY vÒ tõ vùng) Gi¸ trÞ cña biÓu thøc (CHX lín h¬n CHY vÒ tõ vùng) Gi¸ trÞ cña biÓu thøc (CHX nhá h¬n hoÆc b»ng CHY vÒ tõ vùng) Gi¸ trÞ cña biÓu thøc (CHX nhá h¬n CHY vÒ tõ vùng)

Phô lôc 2: Ph­¬ng ph¸p Gauss gi¶i hÖ ph­¬ng tr×nh ®¹i sè tuyÕn tÝnh
a11x1 a21x1 ... an1x1 + + + a12 x2 a22 x2 ... an2 x2
287

+ + +

... ... ... ...

+ + +

a1n xn a2n xn ... ann xn
288

= = =

b1 b2 ... bn

      

x =  ... a1n   b1      b2  . ... Ph­¬ng ph¸p lo¹i biÕn Gauss gi¶i hÖ ph­¬ng tr×nh ®¹i sè tuyÕn tÝnh: ThÝ dô cho hÖ det Ai .. 289 290 (2) ... b =  . Cã thÓ tÝnh nghiÖm theo c«ng thøc Cramer xi = trong ®ã Ai − ma trËn A víi cét i bÞ thay thÕ b»ng cét c¸c sè h¹ng tù do b ... det A a11x1 + a12 x2 + a13 x3 + a14 x4 = a15   a21x1 + a22 x2 + a23 x3 + a24 x4 = a25   a31x1 + a32 x2 + a33 x3 + a34 x4 = a35  a41x1 + a42 x2 + a43 x3 + a44 x4 = a45   Gi¶ sö phÇn tö chÝnh a11 ≠ 0 .... a2 n     .. Chia ph­¬ng tr×nh thø nhÊt cho a11 ...hay Ax=b (*)    A = aij =     a11 a21 .... an 1 an 2 . ann   n    x1   x2  . ta cã (1) x1 + b12 x2 + b13 x3 + b14 x4 = b15 . 1..  xn   NÕu ma trËn A kh«ng suy biÕn..... ann ≠ 0 th× hÖ (*) cã nghiÖm duy nhÊt. a1n . ( ) an1 an 2  .... a2n .  . . a12 a22 . tøc det A = a11 a12 a21 a22 .....  . .. ..       b  .

3. j = 3.víi b1 j = a1 j a11 ( j = 2. (8) 291 292 . 4. ta cã: (2 (2 (2 a33) x3 + a34) x4 = a35)   . nh©n ph­¬ng tr×nh (2) tuÇn tù víi a 21 . 3. 4. (1) (5) trong ®ã ( b21j) = ( a21j) (1 a22) ( j = 3. 4 trõ ®i c¸c tÝch t­¬ng øng võa nhËn ®­îc. 4. a 31 . a 41 vµ tuÇn tù lÊy c¸c ph­¬ng tr×nh sè 2. 4. 4 . Dïng ph­¬ng tr×nh (2) ®Ó lo¹i Èn x1 khái c¸c ph­¬ng tr×nh sè 2. j = 2. 3. 5) . (7) (2 (2 x3 + b34) x4 = b35 ) . 3. ta cã ba ph­¬ng tr×nh: (1 (1 (1 (1 a22) x2 + a23) x3 + a24) x4 = a25)   (1 (1 (1 (1 a32) x2 + a33) x3 + a34) x4 = a35)   (1 (1 (1 (1 a42) x2 + a43) x3 + a44) x4 = a45)  (3) trong ®ã ( aij1) = aij − ai1b1 j (i = 2. b©y giê ta lo¹i x2 khái c¸c ph­¬ng tr×nh thø ba vµ thø t­. 5) (4) B©y giê chia ph­¬ng tr×nh thø nhÊt cña hÖ (3) cho phÇn tö chÝnh a22 ta cã: (1 (1 (1 x2 + b23) x3 + b24) x4 = b25) . 5) . ta cã: (i = 3. 3. 5) . 4 cña hÖ (1): Muèn vËy. (2 (2 (2 a43) x3 + a44) x4 = a45)   (6) trong ®ã ( ( ( aij2 ) = aij1) − ai(1) b21j) 2 (2 Chia ph­¬ng tr×nh thø nhÊt cña hÖ (6) cho phÇn tö chÝnh a33) . B»ng c¸ch t­¬ng tù nh­ khi lo¹i x1 . 4.

5) . 5) (9) Nh­ vËy ta ®· ®­a hÖ (1) vÒ hÖ t­¬ng ®­¬ng cã ma trËn c¸c hÖ sè lµ ma trËn tam gi¸c x1 + b12 x 2 + b13 x 3 + b14 x 4 = b15   (1 (1 (1 x 2 + b23) x3 + b24) x 4 = b25)   (2 (2 x3 + b34 ) x 4 = b35 )  (3 (3 a 44 ) x 4 = a 45)   Tõ (10) x¸c ®Þnh c¸c Èn (3 (3 x 4 = a 45 ) a 44 )   ( ( x 3 = b352 ) − x 4 b 342 )   (1 (1 (1 x 2 = b 25 ) − x 4 b 24 ) − x 3 b 23 )  x1 = b15 − x 4 b14 − x 3 b13 − x 2 b12   (10) (11) VËy thñ tôc gi¶i hÖ ph­¬ng tr×nh ®¹i sè tuyÕn tÝnh bËc nhÊt quy vÒ hai qu¸ tr×nh: a) Qu¸ tr×nh thuËn: ®­a hÖ (1) vÒ d¹ng tam gi¸c (10).trong ®ã ( b32) = j ( a32j ) (2 a33) ( j = 4. nhËn ®­îc: (3 (3 a44) x4 = a45) trong ®ã ( ( (2 a 43j) = a 42j) − a 43) b3( 2j ) ( j = 4. Sè phÐp tÝnh sè häc N cÇn thùc hiÖn trong ph­¬ng ph¸p Gauss b»ng 293 294 . Sau ®ã nhê (8) ta lo¹i x 3 khái ph­¬ng tr×nh thø hai cña hÖ (6). NÕu phÇn tö chÝnh cña hÖ b»ng kh«ng th× chØ cÇn thay ®æi chç cña c¸c ph­¬ng tr×nh trong hÖ t­¬ng øng ®Ó lµm cho phÇn tö chÝnh kh¸c kh«ng. b) Qu¸ tr×nh nghÞch: t×m Èn theo c¸c c«ng thøc (11).

.. ta suy ra c¸ c«ng thøc tÝnh c¸c phÇn tö t ij : t 11 = t ii = a11 . Theo ph­¬ng ph¸p nµy ma trËn A ®­îc biÓu diÔn thµnh tÝch cña hai ma trËn tam gi¸c chuyÓn vÞ A = T′T trong ®ã  t11 t12 .     0 0 .. a ii − a ij − t ij = t ij = 0 t1 j = 2 ∑ t ki i −1 a1 j t 11 ( j > 1) (1 < i ≤ n ) k =1 (14) k =1 ∑ t ki t kj t ii i > j i −1 (i < j ) khi Nh­ vËy ta ®· thay hÖ (12) b»ng hai hÖ t­¬ng ®­¬ng T' y = b... 0  .. 2n ( n + 1) ( n + 2) + n ( n − 1) . Ph­¬ng ph¸p c¨n bËc gi¶i hÖ ph­¬ng tr×nh ®¹i sè tuyÕn tÝnh trong tr­êng hîp ma trËn A lµ ma trËn ®èi xøng Ph­¬ng ph¸p nµy thuËn lîi trong tr­êng hîp hÖ ph­¬ng tr×nh Ax=b cã ma trËn A lµ ma trËn ®èi xøng.. 3 2. t 2n .. hay 295 296 Tx=y 15) ...... t1n     0 t 22 ....N= VËy sè phÐp tÝnh sè häc xÊp xØ tû lÖ víi luü thõa bËc ba cña sè Èn.. t nn   (12) (13) Nh©n hai ma trËn T ′ vµ T vµ cho tÝch b»ng ma trËn A ... .... ®iÒu th­êng gÆp trong c¸c bµi to¸n kü thuËt. .. .. t  nn    t11  t T ′ =  12 .  t  1n t 22 . t 2n  T = .....   . 0   . ..

....... M« h×nh tuyÕn tÝnh 297 298 ....  t nn xn = yn   Tõ ®ã suy ra c¸c c«ng thøc tÝnh: i −1 (17) y1 = b1 ............... Qu¸ tr×nh nghÞch lµ tÝnh c¸c ma trËn cét y vµ x theo c¸c c«ng thøc (18)......... + t 2n xn = y2   .t11 y1 = b1 t12 y1 + t 22 y2 = b2 ... + t nn yn = bn        (16) t11 x1 + t12 x2 + . Phô lôc 3: Ph­¬ng ph¸p b×nh ph­¬ng nhá nhÊt trong ph©n tÝch håi quy 1...... + t1n xn = y1   t 22 x2 + ... ..... t nn xi = yi − k =i +1 ∑ t ik xk t ii n (i < n ) (19) VËy qu¸ tr×nh thuËn gåm tÝnh c¸c phÇn tö cña ma trËn T theo c¸c c«ng thøc (14)....... . (19). t1n y1 + t 2 n y2 + .. t11 yi = bi − ∑ t ki yk k =1 t ii (i > 1) (18) xn = yn .

LÇn l­ît lÊy ®¹o hµm biÓu thøc nµy theo a .M« h×nh håi quy tuyÕn tÝnh cã d¹ng: y = f ( x) = ax + b . (21) hay hÖ sè b cßn cã thÓ tÝnh theo c«ng thøc: b= 2. k =1 k =1 k =1 n n n a∑ x k + b n = ∑ y k . Theo ph­¬ng ph¸p b×nh ph­¬ng nhá nhÊt. b vµ cho b»ng kh«ng. ta ®­îc hÖ ph­¬ng tr×nh sau ®©y ®Ó x¸c ®Þnh a vµ b : 2 a ∑ x k + b ∑ xk = ∑ x k y k . c¸c hÖ sè håi quy a vµ b trong ph­¬ng tr×nh trªn ®­îc t×m sao cho tæng b×nh ph­¬ng sai sè b»ng E = ∑ ( y k − axk − b) 2 k =1 n cùc tiÓu. M« h×nh ®a thøc Ph­¬ng ph¸p b×nh ph­¬ng nhá nhÊt còng cã thÓ ¸p dông ®Ó tÝnh c¸c hÖ sè håi quy ®a thøc d¹ng ∑y k =1 n k −a n ∑x k =1 n k . (22) 299 300 . k =1 k =1 n n VËy c¸c hÖ sè håi quy ®­îc tÝnh theo c¸c c«ng thøc sau: a= ∑x ∑ y k =1 k k =1 n k =1 n n k − n ∑ xk yk k =1 n k =1 n 2 (∑ x k ) − n ∑ x k 2 (20) b= ∑ x k ∑ x k y k − ∑ x k2 ∑ y k k =1 k =1 k =1 k =1 2 (∑ x k ) 2 − n ∑ x k k =1 k =1 n n n n n n .

LÊy ®¹o hµm tæng sai sè theo c¸c hÖ sè vµ cho b»ng kh«ng ta cã hÖ sau ®©y ®Ó x¸c ®Þnh c¸c hÖ sè håi quy bËc hai:   a2     a2    a2   2 ∑ xk + a1 ∑ xk + a0 n = ∑ yk k =1 n k =1 n k =1 3 ∑ xk + a1 ∑ xk2 + a0 ∑ xk = ∑ xk yk 4 3 2 ∑ xk + a1 ∑ xk + a0 ∑ xk = ∑ xk2 yk k =1 k =1 k =1 k =1 k =1 n k =1 n k =1 n k =1 n n n n n n (23) VÒ nguyªn t¾c ta cã thÓ sö dông ph­¬ng ph¸p nµy ®Ó t×m ph­¬ng tr×nh ®a thøc bËc bÊt kú. ThÝ dô vÒ mét hµm cã thÓ tuyÕn tÝnh ho¸ lµ f ( x) = b x a NÕu lÊy loga hai vÕ cña ph­¬ng tr×nh nµy. Tuy nhiªn. 3.. nh­ng hÖ c¸c ph­¬ng tr×nh ®Ó t×m c¸c hÖ sè cã thÓ phi tuyÕn. Tuy nhiªn trong thùc tÕ ph­¬ng ph¸p trë thµnh kh«ng æn ®Þnh khi bËc ®a thøc lín h¬n v× c¸c sai sè lµm trßn sè trong m¸y tÝnh. trong mét sè tr­êng hîp. vµ do ®ã kh«ng thÓ gi¶i ®­îc b»ng c¸ch sö dông c¸c ph­¬ng tr×nh tuyÕn tÝnh. mét hµm phi tuyÕn cã thÓ chuyÓn thµnh mét hµm tuyÕn tÝnh. thÝ dô ®èi víi m« h×nh bËc hai f ( x) = a 0 + a1 x + a 2 x 2 . ta cã ln f ( x) = a ln x + ln b . NÕu ký hiÖu g ( x) = ln f ( x) (24) (25) (26) (27) (28) ~ b = ln b ~ = ln x x 301 302 ..f ( x) = a0 + a1 x + a 2 x 2 + . + a n x m . M« h×nh phi tuyÕn Ph­¬ng ph¸p b×nh ph­¬ng nhá nhÊt cã thÓ ¸p dông cho hµm bÊt kú.

(32) ®Ó t×m ~ a vµ b . (29).~ = ln y y ta cã (29) ~ g ( x ) = a~ + b x ~ Víi ph­¬ng tr×nh (30) c¸c hÖ sè håi quy a vµ b tÝnh theo c¸c c«ng thøc n n n (30) a= x y x y ∑ ~k ∑ ~k − n ∑ ~k ~k k =1 k =1 k =1 x x (∑ ~k ) 2 − n ∑ ~k2 k =1 k =1 n n n (31) ~ b= x x y x y ∑~ ∑~ ~ − ∑~ ∑ ~ k =1 k n n n ( ∑ ~k ) 2 − n ∑ ~k2 x x k =1 k =1 k =1 n k k k =1 n 2 k k =1 k (32) VËy c«ng viÖc tÝnh to¸n gåm: chuyÓn ®æi c¸c gi¸ trÞ sè liÖu x k vµ y k theo c¸c c«ng thøc (28). tÝnh c¸c tæng. Gi¶i ph­¬ng tr×nh (27) ®èi víi b vµ ®Æt vµo ph­¬ng tr×nh (24). kÕt qu¶ thÕ vµo c¸c ph­¬ng tr×nh (31). 303 304 .

. [xm ]a0 + + + + [x1 ]a1 [x1x1 ]a1 [x1 x2 ]a1 [x1xm ]a1 305 + + + + [x2 ]a2 [x2 x1 ]a2 [x2 x2 ]a2 [x2 xm ]a2 . + .. + am xm . C¸c hÖ sè håi quy a i (i = 1...... m) ®­îc chän sao cho tho¶ m·n δ = ∑ ( y − a0 − a1 x1 − a 2 x 2 − ... x 2 . + + .... ..Phô lôc 4: S¬ ®å øng dông ph­¬ng ph¸p håi quy nhiÒu biÕn Gi¶ sö cã n quan tr¾c ®èi víi biÕn phô thuéc y vµ c¸c biÕn ®éc lËp x1 ... x m .... Ph­¬ng tr×nh håi quy ®­îc thiÕt lËp nh­ sau: y = a0 + a1 x1 + a2 x2 + .. + [xm ]am [xm x1 ]am [xm x2 ]am [xm xm ]am 306 = = = = [yx1 ] [ yx2 ] [yxm ] (33) [y] .. . ta cã hÖ m + 1 ph­¬ng tr×nh ®Ó x¸c ®Þnh c¸c hÖ sè a na 0 [x1 ]a0 [x2 ]a0 . + .. . + .... a m vµ cho c¸c ®¹o hµm b»ng kh«ng.. − a m x m ) = min n 2 i =1 LÇn l­ît lÊy ®¹o hµm biÓu thøc trªn theo a 0 ........ a1 .. . a 2 ... + + .

0 DO K = 1... M + 1) = 0. . D­íi ®©y dÉn hai thñ tôc hç trî cho viÖc lËp hÖ ph­¬ng tr×nh ®¹i sè tuyÕn tÝnh chuÈn t¾c (34) − SUBROUTINE LHPTCT vµ gi¶i hÖ ph­¬ng tr×nh ®ã b»ng ph­¬ng ph¸p lo¹i biÕn Gauss − SUBROUTINE GAUSS. J) = 0. M A (I.     [xm xm ]  am   bm    (34) [xm ] [ ] ký hiÖu phÐp lÊy tæng ∑ ..  a2  =  b2       .   . J) = A (0. a1 . I.. N A (0...HÖ ph­¬ng tr×nh nµy gäi lµ hÖ ph­¬ng tr×nh chÝnh t¾c ®Ó x¸c ®Þnh c¸c hÖ sè håi quy. I) END DO 307 308 . J) + X (K. [x1 xm ] ... M.... M + 1) = A (0.. M A (0. A.. . N A (0.. X. N A (I. J..   a0   b0       [xm x1 ]   a1   b1  [xm x2 ]  .. D­íi d¹ng ma trËn ta viÕt hÖ nµy nh­ sau:  n   [x1 ]  [x ] 2   . N. K REAL Y(10000)....0 DO K = 1. . A(0 : 50. M + 1) + Y (K) * X(K. M + 1) = A (I. a2 ... M + 1) + Y (K) END DO DO I = 1. 50)..0 DO K = 1.. SUBROUTINE LHPTCT (Y. .. 0 : 51) A (0.   .. M) INTEGER N. J) END DO END DO A (0. 1 n §Ó t×m c¸c hÖ sè håi quy a0 . M + 1) = 0.. am ta ph¶i gi¶i hÖ ph­¬ng tr×nh chÝnh t¾c theo ph­¬ng ph¸p lo¹i biÕn Gauss hoÆc ph­¬ng ph¸p c¨n bËc hai ®· m« t¶ trong phô lôc 2 v× ma trËn hÖ sè cña c¸c ph­¬ng tr×nh chÝnh t¾c lµ ma trËn ®èi xøng. X(10000. 0) = N DO J = 1. [x2 xm ] [x1 ] [x2 ] .   [xm ] víi dÊu [x1 x1 ] [x2 x1 ] [x1 x2 ] [x2 x2 ] .

I) * X (K. I . J) = MAX END DO END IF 309 310 .1 A (I. ABS (A (J. I)) K=J END IF END DO IF (K . J) = A (J.END DO DO I = 1.LT. A. J) END DO ENDDO ENDDO DO I = 1. K)) DO J = I + 1. I) THEN DO J = I. M DO J = I. J) = 0. N A (I. J) + X (K.NE. M + 1 MAX = A (I.0 DO K = 1. J) = A (I. J) A (K. X (0 : 50) REAL MAX DO I = 0. 0 : 51). X) INTEGER M REAL A (0 : 50. I))) THEN MAX = ABS (A (J. J) A (I. J) =A (K. M IF (MAX . M A (I. M .1 K=I MAX = ABS (A (K. I) END DO END DO RETURN END SUBROUTINE GAUSS (M. M DO J = 0.

DO J = I + 1. I) END DO DO J = I + 1. -1 X (I) = A (I. M + 1 A (I.1. 0. K) . M X (I) = X (I) . M + 1 A (J. J) * X (J) END DO END DO RETURN END 311 312 . I) * A (I. M + 1) / A (M. K) = A (J. M DO K = I + 1.A (I. J) = A (I. M) DO I = M . M + 1) DO J = I + 1. J) / A (I.A (J. K) END DO END DO END DO X (M) = A (M.

Sign up to vote on this title
UsefulNot useful