You are on page 1of 112

NXB Nng nghip - H Ni - 2005

T kha: Ngn ng, lp trnh, Fortran, thut gii, gi trnh, lu , khai bo, hng, bin, file, lnh, tun t, r nhnh, lp, chng trnh con,
th tc, hm.

Ti liu trong Th vin in t Trng i hc Khoa hc T nhin c th c s dng cho mc ch hc tp v nghin cu c
nhn. Nghim cm mi hnh thc sao chp, in n phc v cc mc ch khc nu khng c s chp thun ca nh xut bn v
tc gi.






NGN NG LP TRNH FORTRAN
V NG DNG TRONG KH TNG THY VN

Phm Vn Hun

1
I HC QUC GIA H NI

PHM VN HUN



NGN NG LP TRNH FORTRAN
V NG DNG TRONG KH TNG THY VN













NH XUT BN NNG NGHIP 2005




2
MC LC

Gii thiu .............................................................................................................................................................................................................................. 5
Chng 1 - Khi nim v lp trnh my tnh gii cc bi ton ng dng................................................................................................................. 6
1.1. Phn cng v phn mm my tnh ........................................................................................................................................................................ 6
1.2. Thc hin mt chng trnh my tnh.................................................................................................................................................................. 7
1.3. Quy trnh gii bi ton trn my tnh.................................................................................................................................................................... 7
1.4. Nhng chng trnh Fortran hon chnh ........................................................................................................................................................... 10
1.5. Quy cch son tho mt chng trnh Fortran.................................................................................................................................................. 11
Chng 2 - Nhng yu t c bn ca Fortran ............................................................................................................................................................... 12
2.1. D liu v cch biu din d liu trong Fortran ................................................................................................................................................ 12
2.2. Hng v bin .......................................................................................................................................................................................................... 13
2.2.1. Tn bin v tn hng...................................................................................................................................................................................... 13
2.2.2. M t (khai bo) kiu bin v kiu hng ..................................................................................................................................................... 14
2.3. Bin c ch s (mng)............................................................................................................................................................................................. 16
2.3.1. Khi nim mng............................................................................................................................................................................................. 16
2.3.2. M t mng..................................................................................................................................................................................................... 17
2.4. Cc hm chun ...................................................................................................................................................................................................... 17
2.5. Lnh gn v cc ton t s hc ............................................................................................................................................................................ 18
2.5.1. Lnh gn ......................................................................................................................................................................................................... 18
2.5.2. Cc php tnh s hc n gin...................................................................................................................................................................... 19
2.5.3. c lng biu thc s hc........................................................................................................................................................................... 19
2.5.4. Khi nim v ct v cc php tnh hn hp................................................................................................................................................. 20
2.5.5. Khi nim v s qu b v s qu ln (underflow v overflow) ................................................................................................................ 20
Chng 3 - Nhp v xut d liu n gin..................................................................................................................................................................... 22
3.1. Cc lnh xut v nhp d liu.............................................................................................................................................................................. 22
3.2. Cc c t trong lnh FORMAT.......................................................................................................................................................................... 24
Chng 4 - Cc cu trc iu khin................................................................................................................................................................................ 27
4.1. Khi nim v cu trc thut ton......................................................................................................................................................................... 27
4.1.1. Cc thao tc c bn. Gi trnh v lu ..................................................................................................................................................... 27

3
4.1.2. Cc cu trc tng qut trong thut gii....................................................................................................................................................... 28
4.1.3. Th d ng dng thut ton cu trc........................................................................................................................................................... 28
4.2. Cu trc IF v cc lnh tng ng...................................................................................................................................................................... 29
4.2.1. Biu thc lgic................................................................................................................................................................................................ 29
4.2.2. Lnh IF lgic ................................................................................................................................................................................................. 30
4.2.3. Lnh IF s hc............................................................................................................................................................................................... 32
Chng 5 - Cu trc lp vi lnh DO............................................................................................................................................................................. 44
5.1. Vng lp DO........................................................................................................................................................................................................... 44
5.1.1. C php ca lnh DO v vng lp DO......................................................................................................................................................... 44
5.1.2. Nhng quy tc cu trc v thc hin vng lp DO.................................................................................................................................... 45
5.1.3. Th d ng dng vng lp DO...................................................................................................................................................................... 46
5.2. Vng DO lng nhau............................................................................................................................................................................................... 47
Chng 6 - File d liu v t chc file d liu trong Fortran....................................................................................................................................... 51
6.1. Khi nim v file d liu v t chc lu tr d liu.......................................................................................................................................... 51
6.2. Cc lnh nhp, xut d liu vi file ..................................................................................................................................................................... 52
6.3. K thut c cc file d liu................................................................................................................................................................................. 54
6.3.1. S dng ghi c ch nh............................................................................................................................................................................. 54
6.3.2. Dng k hiu kt thc d liu....................................................................................................................................................................... 55
6.3.3. S dng tu chn END.................................................................................................................................................................................. 56
6.4. To lp cc file d liu .......................................................................................................................................................................................... 58
6.5. K thut tr gip tm li chng trnh ............................................................................................................................................................... 58
Chng 7 - S dng bin c ch s trong Fortran ......................................................................................................................................................... 60
7.1. Mng mt chiu ..................................................................................................................................................................................................... 61
7.2. Lnh DATA............................................................................................................................................................................................................ 62
7.3. Mng hai chiu....................................................................................................................................................................................................... 62
7.3. Mng nhiu chiu .................................................................................................................................................................................................. 64
7.4. Nhng iu cn ch khi s dng cc mng ..................................................................................................................................................... 67
Chng 8 - Chng trnh con loi hm.......................................................................................................................................................................... 70
8.1. Cc hm chun ...................................................................................................................................................................................................... 70
8.2. Cc hm chng trnh con ................................................................................................................................................................................... 71

4
8.2.1. Hm lnh......................................................................................................................................................................................................... 71
8.2.2. Hm chng trnh con .................................................................................................................................................................................. 72
8.3. Ch dn g ri v phong cch vit chng trnh c hm con............................................................................................................................ 76
Chng 9 - Chng trnh con loi th tc ..................................................................................................................................................................... 78
9.1. Khai bo v gi chng trnh con th tc........................................................................................................................................................... 78
9.2. Nhng th d ng dng chng trnh con th tc ............................................................................................................................................. 79
9.3. Nhng ch dn g ri khi s dng cc th tc.................................................................................................................................................... 83
Chng 10 - Kiu d liu vn bn................................................................................................................................................................................... 85
10.1. Tp cc k t ca Fortran.................................................................................................................................................................................. 85
10.2. Cc dng khai bo bin k t............................................................................................................................................................................. 85
10.3. Nhp, xut d liu k t ..................................................................................................................................................................................... 86
10.4. Nhng thao tc vi d liu k t ....................................................................................................................................................................... 86
10.4.1. Gn cc gi tr k t.................................................................................................................................................................................... 86
10.4.2. So snh cc gi tr k t.............................................................................................................................................................................. 87
10.4.3. Trch ra xu con........................................................................................................................................................................................... 88
10.4.4. Kt hp cc xu k t.................................................................................................................................................................................. 88
10.4.5. Nhng hm chun x l xu k t............................................................................................................................................................. 89
Chng 11 - Nhng c im b sung v file................................................................................................................................................................. 94
11.1. Cc file ni ti (Internal Files)............................................................................................................................................................................ 94
11.2. Cc file truy nhp tun t (Sequential Files).................................................................................................................................................... 95
11.3. Cc file truy cp trc tip (Direct-Access Files) ............................................................................................................................................... 97
11.4. Lnh truy vn INQUIRE.................................................................................................................................................................................... 98
Ti liu tham kho ........................................................................................................................................................................................................... 101
Ph lc 1: Bng cc hm chun ca FORTRAN......................................................................................................................................................... 102
Ph lc 2: Phng php Gauss gii h phng trnh i s tuyn tnh................................................................................................................... 104
Ph lc 3: Phng php bnh phng nh nht trong phn tch hi quy................................................................................................................ 108
Ph lc 4: S ng dng phng php hi quy nhiu bin.................................................................................................................................... 110



5
Gii thiu
Gio trnh Ngn ng lp trnh Fortran v ng dng trong kh tng thy vn l tp hp nhng bi hc c s v lp trnh m tc gi dy trong mt s nm
gn y cho sinh vin cc ngnh kh tng hc, thy vn v hi dng hc Trng i hc Khoa hc T nhin, i hc Quc gia H Ni.
Sch ny nhm gii thiu cho sinh vin ln u tin hc lp trnh nhng khi nim c bn v lp trnh my tnh, tm tt nhng yu t c bn v cc lnh thng
dng, c im s dng chng trong ngn ng lp trnh Fortran. Mc tiu cui cng l gip sinh vin lm quen vi cc phng php xy dng thut gii cc bi ton
thng dng ca ton hc tnh ton, thng k ton hc v x l s liu, rn luyn k nng lp trnh gii nhng bi ton x l v phn tch s liu, tnh ton ng
dng mc ban u trong thi gian hc tp v nghin cu trng i hc.
Nhng th d v h thng bi tp t luyn trong sch ny c ngha minh ha, hng sinh vin ti vn dng cc lnh ca Fortran vit ra nhng chng trnh
ng dng nho nh c tnh c th, bc u lm quen vi nhng c th x l d liu quan trc trong chuyn mn kh tng thy vn. Nhng c im khc ca ni
dung ng dng lp trnh trong cc chuyn ngnh ny nh qun l c s d liu, cc phng php thng k hin i, cc phng php gii s tr nhng bi ton ng
lc kh quyn, i dng... cha c cp y do khun kh kin thc chuyn mn ca ngi hc, l i tng ca cc mn hc chuyn khc ca
chng trnh hc tp, nhng t y n thc ra cng khng xa.
V l ti liu hc tp v lp trnh c s, ni dung ngn ng trong sch ny cng khng bao qut ht nhng yu t trong th gii to ln ca Fortran. Nn bt u
bng nhng g n gin nhng c vic. Mt khi ngi hc bt u bit lp trnh, thy c ng dng my tnh c ch trong hc tp v nghin cu ca mnh s ny
sinh nhu cu tm hiu v khai thc Fortran trong rt nhiu ti liu tra cu v sch chuyn kho khc hoc h thng tr gip sn c ca Fortran.
Nh vy, sch ny khng ch l ti liu hc tp cho nhng sinh vin cc chuyn mn kh tng thy vn, m c th c ch cho sinh vin, hc vin cao hc nhiu
chuyn ngnh khc hoc bt k ai mun t hc lp trnh my tnh mt cch nh nhng.
Trong sch ny, mi chng c cu to nh mt bi hc. Mi chuyn t, khi nim xut hin ln u u c in nghing, cc cu lnh c in ch hoa m
v bao trong hp gip ngi c thun tin tra cu khi cha thuc chnh t cu lnh.
Nhng th d minh ha c chn lc sao cho n gin, nhng c tnh in hnh, gip ngi c lin tng n lp bi ton khc c th cng s dng cch
gii ny. Chng trnh th d lun nht qun p dng tng chia tr, tc phn nhim v ln thnh cc vic nh hn thc hin tng vic mt dn ti kt qu
cui cng. Vi cch trnh by ny, bn c s thy lp trnh khng cn l ci g rc ri, kh hiu, m n t nhin nh ta vn gii quyt bi ton khng bng my tnh.
Nhng tm tt kinh nghim g ri v li khuyn v rn luyn phong cch lp trnh mi bi hc c th rt c ch cho ngi hc. V y l li khuyn u tin
cho ngi mi hc lp trnh: Hy lun tng tng xem mnh s phi gii bi ton bng tay nh th no trc khi bt u ngh cch vit chng trnh my tnh.
Hy nh ly chnh t, c php ca cu lnh v vic ny khng kh, v lnh Fortran ging nh mt cu ting Anh n gin. Nhng hy rt ch ti chnh nhng iu
n gin, th d khi nhn dng lnh sau
PRINT * , danh sch cc mc cn in
th hy c gng c k hay hi li xem th no l danh sch, th no l mt mc in, mt mc in c th l nhng g.
Tc gi

6
Chng 1 - Khi nim v lp trnh my tnh
gii cc bi ton ng dng
1.1. Phn cng v phn mm my tnh
My tnh c thit k thc hin nhng thao tc tun theo mt tp
nhng cu lnh do ngi dng vit ra, gi l chng trnh.
Cc my tnh c cu to chung bn trong nh trn hnh 1.1. Ngi
dng s dng bn phm, chut hoc nhng thit b nhp d liu khc
a thng tin vo my tnh. B x l (processor) l mt phn ca my tnh
kim sot tt c cc phn khc. B x l nhn d liu vo v lu chng
b nh (memory). N nhn bit cc lnh ca chng trnh. Nu ta mun
cng hai gi tr, b x l s ly hai gi tr t b nh v gi n khi x
l s hc lgic (ALU). Khi ny thc hin php cng v b x l lu kt
qu vo b nh. Trong khi x l, b x l v khi s hc lgic s dng
mt lng b nh nh gi l b nh trong (internal memory). Phn ln d
liu c lu b nh ngoi (external memory) nh a cng, a mm,
chng cng ni vi b x l. B x l, b nh trong v ALU gi chung l
khi x l trung tm hay CPU.
Trong chng trnh, ta thng lnh cho my tnh in kt qu tnh ton
ln mn hnh hay my in ni vi my tnh v l nhng thit b xut d liu.
Phn mm cha nhng ch dn hoc lnh m ta mun my tnh thc
hin. Phn mm c th c vit bng nhiu ngn ng v cho nhiu mc
ch. Nhng chng trnh thc hin nhng thao tc chung, thng c
nhiu ngi s dng gi l nhng phn mm cng c. H iu hnh l tp
hp cc chng trnh gip ngi dng giao tip vi my tnh. H iu hnh
to mt mi trng thun tin cho ngi dng giao tip c vi my
tnh, thc hin nhng chng trnh ng dng nh cc b bin dch ngn
ng lp trnh, cc phn mm cng c... H iu hnh gm mt s chng
trnh cho php thao tc vi file nh in, sao chp, hin th danh sch file...
Nhng h iu hnh hin i nh Windows cn gip my tnh nhn bit v
qun l cng vic ca rt nhiu thit b ngoi vi ni km vi my tnh nh
cc thit b nhp, xut d liu, mn hnh, my in, my qut nh, loa, cc
my quan trc chuyn dng...
External memory
Internal memory
Processor
ALU
CPU
Input Output

Hnh 1.1. S khi ca mt my tnh

7
Thng thng hin nay cc chuyn gia lp chng trnh vit ra rt
nhiu chng trnh my tnh thc hin, t nhng chng trnh n gin
gii cc bi ton nh, tnh ton mt vi gi tr, n nhng chng trnh
s x l thng tin phc tp, thng minh, gii nhng bi ton khoa hc k
thut ln, ch bn vn bn, thit k ha, cc chng trnh nghe nhc,
xem phim, tr chi, truy cp Internet. Nhng chng trnh tng i ln
v phc tp thng c gi l nhng phn mm. Ngi dng my tnh c
th s dng nhng chng trnh . Ngy nay chng ta c cm gic rng
my tnh lm c tt c mi vic. Tuy nhin, phi nh rng tt c nhng
g my tnh lm c l do n lm vic theo mt chng trnh do con
ngi to ra.
1.2. Thc hin mt chng trnh my tnh
Thc hin mt chng trnh my tnh thng cn c gi tt l chy
chng trnh. Khi ngi dng my tnh mun n lm mt vic g , th d
gii mt bi ton, th ngi dng phi vit ra mt chng trnh cho my
thc hin. Ngi lp trnh thng vit cc chng trnh my tnh bng
ngn ng bc cao vi nhng cu lnh ging nh nhng cu ting Anh, d
hc v s dng. Ngn ng Fortran cng thuc loi . Mi mt bc ta
mun my tnh thc hin phi c m t ra theo mt c php ngn ng
c th (language syntax). Tuy nhin, chng trnh ta vit nh vy vn
phi c mt chng trnh chuyn (b bin dch - compiler) dch thnh
ngn ng my th my tnh mi hiu v thc hin c. Khi compiler dch
cc dng lnh ta vit, n t ng tm cc li dch, hay li c php (syntax
error), tc cc li v chnh t, cc du phn cch... Nu chng trnh vit ra
c li dch, b bin dch s thng bo ngi vit chng trnh sa. Sau
khi sa ht li, ta chy li chng trnh bt u t bc dch. Mt khi
dch xong, mt chng trnh son tho lin kt (linkage editor program) s
thc hin vic hon tt sn sng cho bc thc hin. Chnh l bc ny
cc lnh ta vit c thc hin trong my tnh. Li chng trnh cng c
th xut hin trong bc ny, gi l li trong khi chy chng trnh (run-
time error) hay li lgic. Nhng li ny khng lin quan ti c php ca
lnh, m lin quan ti lgic ca cc lnh, ch l ra khi my tnh thc thi cu
lnh. Th d, lnh
B A X / =
l mt cu lnh ng, bo my tnh ly A chia cho B v gi kt qu l X .
Tuy nhin, gi s nu B bng khng, php tnh chia cho s khng l php
tnh sai, khng c ngha v ta c thng bo li chy chng trnh. Cc
li lgic khng phi bao gi cng c thng bo. Th d, nu trong
chng trnh thay v chia mt s cho 0.10 ta vit thnh nhn vi 0.10, khi
chy chng trnh s chng c li no c thng bo, nhng p s bi
ton, tc kt qu m ta mong i, s l sai.
1.3. Quy trnh gii bi ton trn my tnh
Nhn chung cng vic gii mt bi ton bng my tnh gm nm bc
sau:
1) Pht biu bi ton mt cch r rng.
2) M t thng tin nhp vo v xut ra.
3) Gii bi ton bng tay i vi tp d liu n gin.
4) Pht trin cch gii bi ton thnh dng tng qut.
5) Kim tra p s vi nhiu tp d liu khc nhau.
By gi ta minh ha nm bc trn qua th d bi ton tnh gi tr
trung bnh ca mt tp s liu thc nghim.
Bc 1: Ta pht biu bi ton mt cch r rng nh sau: Tnh tr s
trung bnh ca tp cc gi tr s liu thc nghim.
Bc 2: Ch ra c th s liu vo v ra l g, hnh thc ra sao. Nu c

8
t ghi mt s gi tr ca s liu, i hi nhp vo my qua bn phm, khi
no ht s liu th g gi tr 0.0 bo ht, sau mi tnh tr s trung bnh
v in ra kt qu l tr s trung bnh . Vy th phi m t bc 2 nh
sau: u vo l chui cc gi tr s thc khc khng. u ra l gi tr
trung bnh, s l mt s thc c in trn mn hnh. Gi s nu u vo l
mt s s liu nh trn nhng c ghi vo mt tp (file) trong cng,
quy cch ghi cng c nhng c im nht nh, th bc m t vo v ra
s hon ton khc v cch gii cng s khc. Khi ta phi m t r cch
thc s liu ghi trong file. Th d, ta c th m t d liu u vo v u ra
nh sau: D liu u vo l mt chui s thc c ghi trong file vn bn
c tn l SOLIEU.DAT vi quy cch ghi nh sau: dng trn cng ghi mt
s nguyn ch s phn t ca chui, cc dng tip sau ln lt ghi cc s
thc, mi s trn mt dng.
Bc 3: Dng my tnh tay tnh th vi mt tp n gin gm nm s
liu: th d:
Th t Gi tr
1 23.43
2 37.43
3 34.91
4 28.37
5 30.62
Trung bnh = 30.95
Tp s liu ny v kt qu s c dng kim tra bc 5.
Bc 4: Trong bc ny ta khi qut li nhng thao tc cn lm
bc 3. Tun t nhng thao tc ny dn n gii c bi ton chnh l
thut gii hay thut ton (algorithm). Ta s m t tun t t u n cui
qu trnh gii. Chia qu trnh thnh mt s khi v lit k nhng khi ra.
Sau ny chng trnh my tnh s tun t thc hin cc khi chia . Trong
mi khi ta li chi tit ha thm ra n mc c th chuyn thnh nhng
lnh my tnh. Vy y p dng hai phng php: phn khi v chi
tit ho tng khi. Vi bi ton ang xt, trng hp d liu u vo cn
nhp t bn phm, ta chia thnh ba khi:
- Nhp cc gi tr s v ly tng ca chng.
- Chia tng cho s gi tr.
- In tr s trung bnh.
C th ho tng khi s dn ti gi trnh ca chng trnh nh sau:
1. Cho tng ca cc gi tr bng khng.
2. Cho s s liu vo bng khng.
3. Nhp vo tng gi tr v kim tra chng no gi tr nhp vo cn
khc s 0.0 th:
- Cng thm gi tr vo tng.
- Cng thm 1 vo s s liu.
4. Chia tng cho s s liu c gi tr trung bnh.
5. In gi tr trung bnh.
V thut gii c m t kh chi tit, ta chuyn thut gii thnh
chng trnh nh sau:
PROGRAM TGTTB
INTEGER DEM
REAL X, TONG, TB
TONG = 0.0
DEM = 0
5 READ*, X
IF (X .NE. 0.0) THEN
TONG = TONG + X
DEM = DEM + 1
GOTO 5
END IF

9
TB = TONG / REAL(DEM)
PRINT 6, TB
6 FORMAT (1X, 'TRUNG BINH BANG ' , F6.2)
STOP
END
Bc 5: Trong bc ny ta th chy chng trnh vit vi tp s
liu c th bng cch tnh tay mc 3. u ra trn mn hnh my
tnh phi nh sau:
TRUNG BINH BANG 30.95

Ngoi ra, ta c th chy th vi mt s tp s liu khc nhau tin
chc vo tnh ng n lgic v hon ho ca chng trnh xy dng.
Nhng khi nim thut gii v gi trnh trn y c ngha rt quan
trng. Cch gii, phng php gii mt bi ton chnh l thut gii. Cc bi
ton khoa hc k thut thc hin trn my tnh thng c thut gii l
nhng phng php ca ton hc hoc ca cc khoa hc chuyn ngnh m
ngi lp trnh bit. Mt s nhim v, bi ton khc c th c cch gii
xut pht t kinh nghim thc t, t cch suy ngh lgic thng ngy ca
chng ta.
Th d, khi gii phng trnh bc hai 0
2
= + + c bx x a bng my tnh,
ta c th tnh gi tr ca bit thc A . Sau ty gi tr ca A c th l:
0 < A phng trnh v nghim, 0 = A phng trnh c mt nghim kp v
0 > A phng trnh c hai nghim ring bit m a ra thng bo kt qu.
Trong th d ny, thut ton l phng php quen thuc m chng ta
hc trong i s.
Mt th d khc: C mt danh sch sinh vin cng vi im ca mn
thi. Sp xp li danh sch sao cho ngi c im thi cao hn th dng
trn. Ta c th lm nh sau:
Tm thi xem ngi th nht l ngi ng u danh sch. Dng
ngn tay tr di theo tng ngi cn li, k t ngi th hai cho n ht
danh sch, nu ai c im thi cao hn th chuyn ngi ln u danh
sch v ngi ang u danh sch chuyn xung ch ca ngi va c
thay. Kt qu ta c danh sch mi vi ngi c im thi cao nht dng
u. Nhng t dng th hai n dng cui cng ca danh sch c th th
t vn cn ln xn.
By gi ta ch cn vic sp xp li t dng th hai tr i. Ta theo di
t ngi th ba cho n ngi cui cng, nu ai c im thi cao hn th
c a ln dng th hai v ngi ang dng th hai s b a xung
dng ca ngi va thay th. Kt qu l ngi dng th hai trong danh
sch mi s l ngi c im thi cao th nh. Nhng t dng th ba n
cui danh sch vn cn ln xn.
Tip tc, ta phi sp xp li danh sch k t dng th ba theo ng
cch nh trn. Lp li cng vic nh vy cho n dng trc dng cui
cng, ta s c danh sch hon chnh sp xp theo th t gim dn ca
im thi.
Ta thy, trong trng hp ny thut gii ca bi ton chnh l ci cch
m chng ta c th vn thng lm trong thc t i sng khi phi sp xp
li danh sch theo th t nhng khng dng my tnh. V cch lm bng
tay ny cng c th c p dng lm thut ton cho cc loi bi ton sp
xp trong my tnh.
Chng ti gii thiu chi tit hai th d va ri ct l sinh vin
thc c rng t duy thut gii, suy ngh v cch gii l bc quan trng
nht khi bt tay vo xy dng chng trnh my tnh. C xc nh c
thut gii th mi ni n vic lp c chng trnh gii bi ton trn
my tnh.
Cn gi trnh ging nh nhng li ch dn v phng php, cch gii
cho ai tun t thc hin cc bc ca thut gii bi ton dn ti kt

10
qu. Bn hy tng tng trong i sng nu bn mun nh ai thc
hin mt nhim v. Nu nhim v khng qu tm thng, th thng t
ra bn phi gii thch tm tt yu cu, tun t thc hin nhim v cho
ngi ta - bn t chng trnh cho ngi ta thc hin. Nh vy, ta thy
thc cht gi trnh l mt chng trnh, ch c iu n c vit ra ngn
gn bng vi cu, vi k hiu quen dng, cha c vit bng mt ngn
ng lp trnh c th m thi. Mt chng trnh my tnh vit bng ngn
ng Fortran hay bt k mt ngn ng no khc chng qua ch l nhng li
ch dn ny c vit theo qui c k hiu my tnh hiu c m lm
thay cho ta.
1.4. Nhng chng trnh Fortran hon chnh
Chng trnh TGTTB mc trc c th l mt th d v mt
chng trnh hon chnh. Nh vy ta thy mt chng trnh hon chnh bt
u bng lnh PROGRAM ch s bt u ca chng trnh. Dng tng
qut ca lnh ny nh sau:
PROGRAM Tn chng trnh
trong tn chng trnh l mt xu k t gm t mt n su k t, bt
u bng ch ci v ch cha cc ch ci la tinh v ch s. Kt thc
chng trnh l hai lnh:
STOP
END
Lnh PROGRAM v lnh STOP l cc lnh tu chn, c th khng
nht thit phi c. Nu ta khng vit ra, chng c th c chng trnh
dch t thm vo. Phn thn chng trnh gm tt c cc lnh khc nhm
thc hin bi ton c gii v chia thnh hai nhm: nhm cc lnh thc
hin (executable statement) v nhm cc lnh khng thc hin (non-
executable statement) hay gi l cc lnh m t, lnh khai bo. Nhm cc
lnh m t phi nm pha trn ca thn chng trnh.
Nh vy cc chng trnh Fortran c th c cu trc tng qut nh
sau:
PROGRAM Tn chng trnh
Cc lnh khng thc hin (Non-executable statements)
Cc lnh thc hin (Executable statements)
STOP
END
Trong chng trnh tnh gi tr trung bnh ca chui s thc th d
trn, ta thy sau t kha PROGRAM l tn chng trnh - l cm ch
TGTTB. Nhm cc lnh khng thc hin (nhng lnh m t) gm 2 lnh:
INTEGER DEM
REAL X, TONG, TB
cn nhm lnh thc hin gm cc lnh tip sau hai lnh trn:
TONG = 0.0
DEM = 0
5 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
6 FORMAT (1X, 'TRUNG BINH BANG ' , F6.2)
Nhng lnh thc hin thng l nhng lnh gn, lnh tnh ton cc

11
php tnh, lnh chuyn iu khin, c, ghi s liu v mt s lnh khc.
Cui cng chng trnh c lnh STOP v END.
Trong thc t c th c nhng chng trnh ln hn rt nhiu, gm
hng nghn dng lnh v c cu trc phc tp. Nhng ta vn thy n c
phn u, phn thn v phn cui, trong phn thn chng trnh cng ch
c hai nhm lnh ging nh trong chng trnh n gin trn y.
1.5. Quy cch son tho mt chng trnh Fortran
Cc chng trnh Fortran c son tho nh mt b son tho
(editor) hoc phn mm son vn bn no . Cc lnh ca mt chng
trnh c vit thnh cc dng ni tip nhau, mi lnh trn mt dng mi.
Trn mn hnh son tho chun
(*)
ngi ta quy c cc ct t 1 n 5
(hnh 1.2) dng ghi s hiu lnh hay gi l nhn lnh, ct 6 chuyn dng
ghi k t ni dng lnh, ni dung cc dng lnh ch c ghi trn cc
ct t 7 n 72. Tt c cc thng tin qu ct 72 b b qua.
Lnh Fortran
K t ni dng
Nhn lnh
Cc ct
1-5
Ct
6
Cc ct
7-72

Hnh 1.2. Quy cch vit lnh Fortran trn mn hnh son tho

(*)
Trc y ngi ta phi dng giy chuyn dng, gi l blank, vit chng
trnh Fortran. Sau tng lnh chng trnh t giy chun c ghi vo mt t ba
chuyn dng c hnh dng c bit bng my c l gip t ng m ha tng k
t ca dng lnh thnh mt hng l vi v tr khc nhau. Ngy nay cc b son
tho c th gip chng ta vit cc lnh trc tip t bn phm, khi vit cc k t v
k hiu hin trn mn hnh d theo di v chnh sa ging nh ta son tho mt
vn bn bt k, sau lu trong my tnh di dng file ngun.
Nhn lnh l nhng s nguyn dng, khc khng, dng ch s
hiu ca dng lnh. Ch nhng dng lnh no cn c chuyn iu khin
ti bi nhng dng lnh khc mi nht thit phi c nhn lnh. Du ni
dng lnh c th l bt c k t no ngoi k t trng v s khng, thng
ngi ta hay dng du * hoc du +, ch rng dng hin ti l phn ni
tip ca lnh dng trn . Trong cc dng lnh c th c nhng k t
trng d c. Trong chng trnh son tho c th c nhng dng ghi
ch (comment lines); nhng dng ny khng thuc ni dung chng trnh,
khng c dch khi dch chng trnh, m ch c tc dng gi nh cho
ngi lp trnh khi theo di kim tra chng trnh. Tt c cc dng ghi ch
phi bt u bng mt ch ci, thng ngi ta dng ch C (ch ci u
tin ca t comment), ng ct th nht ca cc ct dng ghi nhn.
Trong sch ny s lun s dng ch ci C nh du dng ghi ch trong
cc chng trnh.
Xy dng mt chng trnh my tnh ni chung l mt cng vic kh
v i hi tnh cn thn, t m. Kinh nghim cho thy rng ngay c i vi
ngi lp trnh thnh tho, khi vit mt chng trnh d n gin vn c
th mc li, trong c c nhng li khng ng ti. Do , mt s sch
dy ngn ng lp trnh, ngi ta cn khuyn ngi hc ngay t u ch
luyn thi quen, hay phong cch (style) son tho chng trnh. Mt
chng trnh p l chng trnh tnh ng v nhanh ci m ta cn tnh,
nhng n gin, d hiu v sng sa v cch trnh by. Trong ti liu ny
dn dn cng s c nhng ch dn, nhng li khuyn quan trng cho ngi
hc rn luyn phong cch son chng trnh. Chu kh rn luyn nhng
thi quen tt cng gp phn gip chng ta tin xa.
Bi tp
1. Nu dng ch C lm du ni dng lnh th c c khng?
2. Cc nhn trong chng trnh c cn tng dn khng?
3. Nu cc bc gii bi ton sp xp chui s nguyn nhp t bn
phm theo th t ln dn. Vit gi trnh cho bi ton .

12

Chng 2 - Nhng yu t c bn ca Fortran
2.1. D liu v cch biu din d liu trong Fortran
Fortran c th thao tc vi su loi (kiu) d liu c bn thng gp
trong thc t l: cc s nguyn, s thc, s phc, s thc chnh xc gp
i, cc gi tr lgic v d liu vn bn. Trong chng ny ta s lm quen
vi cc d liu kiu s nguyn, s thc, gi tr lgic v vn bn (chui k
t).
S nguyn l lit cc s thp phn vi du +, hoc khng c du.
Th d:
0 ; 6 ; 400 ; +1234
Cc s nguyn c biu din di dng I . Gi tr cc i ca s
nguyn gi l kh nng biu din s nguyn ca my tnh.
Trong Fortran c hai dng biu din s thc. Di dng F s thc
gm phn nguyn v phn thp phn, cch nhau bi du chm. S thc c
th c du du +, hoc khng c du. Nu phn nguyn hoc phn thp
phn bng khng, c th khng cn vit ra cc phn . Du chm thp
phn nht thit phi c mt. Th d:
2.583 ; 14.3 ; 0.8 ; 12. ; .7 ; 14.
Gi tr cc i v s ch s c ngha cc i trong dng F ph thuc
vo dng, hay kiu (kind) khai bo ca s thc.
Dng E biu din s thc thnh hai phn: phn hng thc nm trong
khong t 0,1 n 1,0 v phn bc. Bc bt u bng ch E , tip sau l
hng nguyn gm khng qu hai ch s thp phn, c th c du hoc
khng du. Th d s 25000 c th vit di dng E l 0.25E05. S ch s
c ngha ca phn hng thc v hng nguyn cng ty thuc loi s thc
khai bo.
Hng vi chnh xc gp i (dng D) c th vit nh s vi du
chm thp phn, cha t 8 n 16 ch s c ngha, hoc nh s dng m
vi ch D thay v E , trong phn hng thc c th cha ti 16 ch s
c ngha. Th d:
2.71828182 ; 0.27182818D+1
Tr tuyt i cc i ca cc s thc thng v chnh xc gp i
bng
79
10

n
75
10 .
S phc biu din bng mt cp hng thc trong du ngoc n v
cch nhau bi du phy. Th d (2.1, 0.5E2) biu din s phc i 50 1 , 2 +
trong ton hc.
Hai s trong du ngoc ng vi cc phn thc v phn o phi cng
chnh xc biu din.
Cc gi tr d liu vn bn dng biu din cc on vn bn nh
tn cc i lng, cc khi nim, th d cm ch " Toc do", "Temperature",
"BAO CAO SO 1"... Ngi ta cn gi d liu vn bn l d liu k t, xu
k t, d liu ch.
Cc ch s 1, 2, ..., 9, 0 khi dng vi t cch l biu din cc gi tr
s tng ng th chng cng l nhng d liu kiu vn bn.
D liu lgic dng ch kh nng c hay khng ca mt s kin,
ng hay sai ca mt biu thc quan h. Ngi ta dng hai gi tr lgic l

13
.TRUE. v .FALSE. ch hai trng thi i lp nhau trong nhng th d
trn v ngn ng Fortran c th x l vi nhng gi tr lgic, tc thc hin
nhng php tnh i vi cc gi tr lgic nh trong ton hc c th thc
hin.
S d my tnh lm c nhng vic nh chng ta thy l v n c th
x l thng tin, so snh, tnh ton c vi nhng kiu d liu ny v a
ra nhng kt lun, thng bo... Tt c nhng thng tin chng ta gp trong
i sng thc t u c th c biu din bng nhng d liu kiu ny
hoc kiu khc.
Trn y l nhng kiu d liu c bn ca ngn ng lp trnh Fortran.
Sau ny v cc chng khc, chng ta s thy cn c nhng kiu d liu
khc c t chc da trn nhng kiu d liu c bn va trnh by.
y chng ta cn lu rng nhng khi nim d liu trong my
tnh nh s nguyn, s thc... ni chung ging vi nhng khi nim tng
ng trong i sng hoc trong ton hc. Nhng ng thi cng c nhng
nt khc bit. Th d, Fortran ch hiu v tnh ton c vi nhng s
nguyn loi thng khng ln hn
9
10 2 , ngn ng lp trnh Pascal ch
lm vic vi nhng s nguyn khng ln hn 32767 v khng nh hn
32768, trong khi hng ngy chng ta c th vit trn giy hoc tnh ton
cc php tnh vi nhng s nguyn c gi tr ty . Tnh hnh cng tng
t nh vy i vi cc s thc. Vy trong my tnh c nhng gii hn nht
nh trong vic biu din cc s, khng phi s no my tnh cng biu
din c v tnh ton c. Tuy nhin, vi nhng gii hn nh hin nay,
Fortran vn cho php chng ta lp cc chng trnh tnh ton, x l vi
tt c nhng gi tr s gp trong i sng v khoa hc k thut.
2.2. Hng v bin
My tnh x l d liu hay thc hin nhng tnh ton vi nhng i
lng. Tt c nhng i lng phi c lu gi trong my tnh. Nhng
i lng khng i trong sut qu trnh thc hin ca chng trnh gi l
cc hng, cn nhng i lng c th nhn nhng gi tr khc nhau gi l
cc bin. Vi mi hng hoc bin, trong b nh my tnh ginh ra mt a
ch lu gi tr. Tn chnh l k hiu quy c ca a ch .
2.2.1. Tn bin v tn hng
Tn bin trong Fortran chun c biu din bng tp hp t 1 n 6
cc ch ci trong bng ch ci la tinh (26 ch ci) hoc cc ch s 0, 1, ...,
9, nhng phi bt u bng ch ci.
Trong mt chng trnh cc tn bin khng c trng nhau. Trong
cc phin bn Fortran hin nay, dng lm tn khng phn bit ch ci
hoa v ch ci thng. Ngoi ra, cn mt vi k t khc cng c th dng
cu to tn. Phin bn Fortran 90 cho php t tn vi s k t di hn
6 v trong tn c th c mt s k t khc na. Tuy nhin, sinh vin nn
tp thi quen t tn gn gng theo Fortran chun, bi v tp hp 6 k t
rt chng ta m t cc bi ton, k c nhng bi ton ln v phc tp.
Th d, cc tn sau y
X ; A ; X1 ; B2T5 ; SOHANG ; SUM l hp l, cn cc tn sau y
l sai:
1NGAY ; HE SO ; B*T
v trong tn th nht k t u tin l ch s, trong tn th hai c k t du
cch, trong tn th ba c k t (*) khng phi l nhng k t dng t
tn.
Quy tc t tn bin trn y cng p dng i vi tn chng trnh,
tn hng, tn cc chng trnh con v tn file. (Ring vi tn file c th c
thm phn m rng gm khng qu ba ch ci hoc ch s ngn vi phn
tn chnh bi du chm).

14
2.2.2. M t (khai bo) kiu bin v kiu hng
Kiu ca bin tng ng vi kiu d liu m n biu din. Cc bin
nguyn biu din cc d liu s nguyn, cc bin thc - s thc... Trong
chng trnh phi ch r cc bin c s dng biu din d liu kiu no
(nguyn, thc, lgic, phc, vn bn, s thc chnh xc thng hay
chnh xc gp i...).
Mi bin ch lu gi c nhng gi tr ng kiu ca n. Mt bin
m t kiu l s nguyn th khng th dng lu gi tr s thc hay gi
tr lgic.
Cch m t n ch dng i vi cc bin nguyn v thc: dng tn
bin nguyn bt u bng mt trong su ch ci I, J, K, L, M, N, cn tn
bin thc bt u bng mt trong nhng ch ci ngoi su ch ci trn. Ni
chung, ngi mi hc lp trnh khng bao gi nn dng cch m t n.
Cch m t hin dng cc lnh m t hin nh INTEGER, REAL,
CHARACTER, LOGICAL, DOUBLE PRECISION, COMPLEX... ch
kiu d liu m cc bin biu din. Di y l quy tc vit nhng lnh m
t kiu d liu: tun t nguyn, thc, lgic, phc, thc chnh xc gp
i v k t vn bn:
INTEGER Danh sch cc bin nguyn
REAL Danh sch cc bin thc
LOGICAL Danh sch cc bin lgic
COMPLEX Danh sch cc bin phc
DOUBLE PRECISION Danh sch cc bin chnh xc i
CHARACTER Danh sch cc bin k t
Trong danh sch cc bin s lit k cc tn bin, nu c hn mt bin
th cc bin phi cch nhau bi du phy.
Th d:
INTEGER I, TT, DEM
REAL X1, APSUAT, MAX, TIME, DELTA
COMPLEX P1, P2, SOPH
ch rng cc bin I, TT, DEM biu din cc gi tr s nguyn, cc bin X1,
APSUAT, MAX, TIME, DELTA biu din cc gi tr s thc, cn ba bin
P1, P2, SOPH - s phc.
Nhng gi tr c gi nguyn nht qun trong sut chng trnh (tc
cc hng s) thng c gn vo cc a ch nh thng qua tn trong lnh
khai bo hng c dng:
PARAMETER (ten1 = biu thc 1, tn 2 = biu thc 2, ...)
Th d, trong chng trnh nu ta nhiu ln dng n gi tr s
141593 , 3 = t th ta c th gn gi tr 3,141593 cho mt tn hng l PI bng
lnh
PARAMETER (PI = 3.141593)
Lnh sau y
PARAMETER (HSMSD = 0.0026, RO = 1.0028)
khai bo hai hng s: HSMSD v RO, HSMSD c gn gi tr bng
0,0026, cn RO c gn gi tr 1,0028.
Trong chng trnh tt c nhng lnh khai bo (m t) va gii thiu
trn y thuc loi cc lnh khng thc hin v chng phi nm u
chng trnh, trc tt c cc lnh thc hin.
Khi nim v tn, kiu d liu ca bin, ca hng l nhng khi nim
c bn, quan trng trong ngn ng lp trnh.
u mc ny ni mt tn thc cht l k hiu quy c ca mt

15
a ch trong b nh ca my tnh lu gi tr. Lnh khai bo bin mi
ch t tn cho mt a ch trong b nh v quy nh trong a ch c th
lu gi d liu kiu g. Cn c th trong nh c cha gi tr cha
hay cha gi tr bng bao nhiu th ty thuc vo cc lnh thc hin trong
chng trnh, ti tng on ca chng trnh. iu ny ging nh ta quy
c nh ra mt ngn trong t vn phng chuyn gi cc cng vn, cn
trong ngn y c cng vn hay khng, hoc c my cng vn th ty thuc
lc ny hay lc khc. Di y nu mt th d minh ha ngha ca
vic t tn bin v m t kiu (d liu) ca bin, ng thi theo di gi tr
ca bin ti tng thi im ca chng trnh. Gi s ta vit mt chng
trnh tnh din tch s ca hnh tam gic khi gi tr di y b bng 5,0
cm, chiu cao h bng 3,2 cm, in kt qu tnh ln mn hnh. Chng trnh
sau y s thc hin nhng vic :
REAL DAY, CAO ! (1)
DAY = 5.0 ! (2)
CAO = 3.2 ! (3)
DAY = 0.5 * DAY * CAO ! (4)
PRINT *, DIEN TICH TAM GIAC BANG, DAY ! (5)
END ! (6)
Trong chng trnh ny c su lnh. Lnh (1) khai bo hai bin tn l
DAY v CAO d nh lu gi tr s thc tng ng ca y b v chiu
cao h ca tam gic. Lnh (2) gn gi tr 0 , 5 = b (cm) cho bin DAY. Lnh
(3) gn gi tr 5 , 3 = h (cm) cho bin CAO. Lnh (4) tnh gi tr ca biu
thc h b 5 , 0 , tc din tch s ca tam gic, bng 8 (cm
2
) v gn cho bin
DAY. Lnh (5) in ln mn hnh dng ch DIEN TICH TAM GIAC BANG
v sau l gi tr ca bin DAY. Lnh (6) l lnh kt thc chng trnh.
Sinh vin mi hc lp trnh thng c th khng hiu lnh th nm, khi
thy in din tch hnh tam gic m li in gi tr ca bin DAY. Trong u
h quen ngh khai bo DAY c ngha DAY l di cnh y tam gic.
Nhng nu hiu c rng lnh (1) khai bo REAL DAY, CAO thc ra
mi ch d nh dng hai tn DAY v CAO lu cc s thc, khng cn
bit s thc bng bao nhiu. chng trnh trn, khi lnh (2) thc hin
xong th trong bin DAY (trong nh c tn l DAY) mi thc s c s
5,0, tc di y tam gic. Nhng khi chng trnh chy xong lnh (4)
th trong bin DAY l s 8,0 ch khng phi l s 5,0 na. V khi thc
hin xong lnh (5) th trn mn hnh s in ng gi tr din tch tam gic.
Nm vng c iu ny c ngha l hiu c ngha ca bin, tn
bin v tun t lm vic ca chng trnh, tc cc gi tr c lu trong
my tnh nh th no trong khi chng trnh chy.
Di y l hai li khuyn u tin c l quan trng nht i vi sinh
vin mi hc lp trnh:
1) Sau khi tm hiu xong bi ton cn gii, phi cn nhc tng i
lng trong bi ton c kiu d liu l s nguyn, s thc, k t vn bn...
t tn v khai bo kiu cho ng. Kinh nghim cho thy rng sinh vin
no vit c nhng lnh khai bo h thng cc tn bin ng, va ,
sng sa trong phn khai bo u chng trnh th thng l sau vit
c chng trnh ng. Cn nhng sinh vin khng bit t tn cho cc
bin, va bt tay vo son tho chng trnh loay hoay vi lnh m file
d liu, tnh ci ny ci kia, th thng l khng hiu g v khng bao gi
lm c bi tp.
2) Nn tun th cch t tn ca Fortran chun. Ta c quyn chn
nhng ch ci, ch s no to thnh tn l ty , song nn t tn c
tnh gi nh n nhng i lng tng ng trong bi tp. Th d, vi bi
ton va ni ti trong mc ny ta c ba i lng l: di cnh y,
ng cao v din tch tam gic. Nn khai bo tn ba bin tng ng bng
ba t tt ca ting Vit vi lnh sau:
REAL DAY, CAO, DTICH
hoc bng ba t tt ca ting Anh vi lnh:

16
REAL BASE, HEIGHT, SQRE
hoc bng ba ch ci ng nh trong u bi tp vi lnh:
REAL B, H, S
u l nhng li khai bo ng, d hiu, trong li khai bo trn cng c
l l tt nht, li khai bo sau cng th hi qu ngn gn. Cn vi cng
mc ch khai bo m dng lnh sau y th mc d khng sai, nhng hon
ton khng nn, rt d gy nhm ln, mt mi trong khi kim tra chng
trnh:
REAL X, IC, DT
2.3. Bin c ch s (mng)
2.3.1. Khi nim mng
Mng l tp hp c sp xp ca cc i lng c k hiu bng mt
tn duy nht. Cc thnh phn ca tp hp gi l nhng phn t mng. Mi
phn t c xc nh theo tn ca mng v v tr ca phn t trong
mng, tc tr s ca cc ch s. Tn mng c t tun theo quy tc nh
tn bin. Cc ch s nm trong du ngoc n v nu c hn mt ch s th
cc ch s phi cch nhau bi du phy.
Th d: A(1), A(2), A(3) tng ng vi cch vit thng thng cho
cc bin
3 2 1
, , a a a trong ton hc. Vy y ta t cho tp hp c 3 gi
tr ny mt tn chung l A, nhng ch gi tr th nht ta thm ch s 1
vo tn - A(1), ch gi tr th hai ta thm ch s 2 - A(2) v ch gi tr
th ba ta thm ch s 3 - A(3).
Tng t, cc phn t ca ma trn hai chiu trong i s
|
|
.
|

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

c vit trong Fortran l A(1,1), A(1,2), A(1,3), A(2,1), A(2,2), A(2,3)
(ch s th nht - s hiu dng, ch s th hai - s hiu ct).
Thm mt th d na v mng. Mt nm c 12 thng, mi thng c
mt tn, th d trong ting Vit: Thng Ging, Thng Hai, ..., Thng Mi
hai, trong ting Anh: January, February, ..., December. Ta hon ton c th
gp 12 tn ting Anh ca cc thng trong nm vo thnh mt mng c tn
chung l EMONTH. Vy mng EMONTH s l mng c 12 gi tr (12
phn t), mi phn t l mt t ch tn mt thng. Khi ni n January tc
l ni ti gi tr th nht ca mng EMONTH, ta vit EMONTH(1), ni
n December l ni ti gi tr th 12 ca mng EMONTH, ta vit
EMONTH(12).
Trong Fortran IV, mt phin bn trc y ca ngn ng Fortran, cho
php dng cc mng ti a 7 ch s. Chiu ca mng ng vi s ch s, cn
kch thc ca mng ng vi s phn t cha trong mng.
Ch s ca mng c th c xc nh bng cc hng hoc bin
nguyn dng vi tr s ln hn 0. Cng c th ch s xc nh bng biu
thc s hc bt k. Nu dng biu thc kiu thc, th sau khi tnh gi tr
ca biu thc, gi tr s thc c chuyn thnh s nguyn, tc ct b phn
thp phn.
Trong mc 2.1 chng ta ni v cc kiu d liu c bn. Mi mt
bin kiu d liu c bn trong mt thi im chy chng trnh ch lu
(cha) c mt gi tr. By gi ta thy mng l mt th d v kiu d liu
mi cu to t cc kiu c bn - mt bin mng trong mt thi im c th
lu c nhiu gi tr s nguyn, s thc, chui k t... Nhng cn lu
rng tt c cc phn t ca mng, tc tt c cc gi tr ca mng phi c
cng kiu d liu. Th d vi mng EMONTH va xt, ta khng th a
mt gi tr k t January vo phn t EMONTH(1) v s thc 1.27 vo
EMONTH(2).
Mng l mt yu t rt quan trng trong Fortran. Sau ny ta s thy s

17
dng mng trong ngn ng lp trnh c th gip vit nhng on chng
trnh rt ngn gn, trong sng. c bit trong cc vng lp, ch bng vi
dng lnh c th khin my tnh thc hin nhiu triu php tnh s hc.
2.3.2. M t mng
M t mng thc hin ngay u chng trnh v cha thng tin v
tn, chiu v kch thc mng vi ton t DIMENSION:
DIMENSION ) ..., , , ( MAT ), ..., , , ( A
2 1 2 1 k
m m m n n n


trong - MAT A, tn cc mng;
k
m m m n n n ,..., , , ,..., ,
2 1 2 1
cc gii
hn trn ca cc ch s ch ra bng cc hng nguyn dng (gii hn
di lun bng 1 v khng cn ch nh trong m t).
Theo m t ny, my tnh s ginh trong b nh nhng vng a ch
lu tt c cc phn t ca cc mng. Cc phn t ca mng nhiu chiu
c lu lin tip nhau sao cho ch s th nht bin i nhanh nht, ch s
sau cng bin i chm nht.
C th m t mng bng cc lnh m t kiu hin nh i vi cc
bin thng thng, th d:
REAL MAX, L(7), A(20,21)
Trong lnh m t ny bin MAX c khai bo l bin s thc, c th
gi l bin n, cn mng L (bin c ch s) l mng mt chiu vi 7 phn
t s thc, mng A l mng hai chiu (hai ch s) vi gii hn trn ca ch
s th nht l 20, ca ch s th hai l 21, n gm 420 phn t.
V cc gii hn ch s (kch thc mng) phi c ch nh trc
phn khai bo bng cc hng nguyn dng, khng th l cc bin, nn
trong thc tin lp trnh phi ch cn nhc chn cc gii hn ch s sao
cho chng khng qu ln lm tn b nh, nhng cng phi va biu
din ht cc phn t c th c ca mng. Th d cn biu din mt bng s
cc gi tr nhit trung bnh tng thng trong 100 nm th ta khai bo
mng TEM(100,12) l hp l. Nu d nh gii h phng trnh i s
tuyn tnh khng qu 20 phng trnh, ta nn khai bo cc mng REAL
A(20,21), X(20) l va biu din ma trn cc h s
j i
a
,
(k c cc h
s t do) v cc nghim
i
x . Vi mng EMONTH va nhc trong mc ny
th lnh khai bo sau:
CHARACTER*9 EMONTH(12)
l hon ton hp l v mt nm ch c 12 thng v tn thng di nht (vi
ting Anh) l September gm 9 ch ci.
2.4. Cc hm chun
Mt s php tnh nh ly cn bc hai ca mt s, tnh tr tuyt i ca
mt s, tnh hm sin ca mt gc... thng xuyn gp trong nhiu thut
ton, nn c xy dng sn thnh cc hm gi l cc hm ring c ca
Fortran (intrinsic functions) hay cn gi l cc hm chun.
Bng 2.1 lit k mt s hm chun ca Fortran thng dng trong
sch ny.
Mi hm chun c mt tn ca n. Tn ca hm c tip ni vi u
vo, gi l i s ca hm, nm trong cp du ngoc n. i s ca cc
hm chun c th l cc hng, bin, hay biu thc. Nu mt hm c nhiu
i s th cc i s c vit cch nhau bng du phy. Khi cho cc gi tr
c th vo cc i s th hm tnh ra mt gi tr ca hm. V vy cc hm
thng dng tnh mt gi tr no gn vo mt bin khc, ngi ta
gi l gi hm ra tnh. Hm khng bao gi c mt bn tri du =
ca lnh gn.
Th d, nhng lnh sau y gi cc hm tnh mt s gi tr:

18
S = SIN (0.5)
TG = TAN (S)
C = COS (ANGLE * 3.141593 / 180.0)
Bng 2.1. Mt s hm chun ca Fortran
Tn hm v
i s
Gi tr hm
SQRT (X)
x Cn bc hai ca x
ABS (X)
x Tr tuyt i ca x
SIN (X) ) sin(x x tnh bng raian
COS (X) ) cos(x x tnh bng raian
TAN (X) ) ( tg x x tnh bng raian
EXP (X)
x
e e nng ln lu tha x
LOG (X) ) ln(x Logarit t nhin ca x
LOG10 (X) ) lg(x Logarit c s 10 ca x
INT (X) Chuyn phn nguyn ca s thc x thnh s nguyn
REAL (I)
Gi tr thc ca I (chuyn mt gi tr nguyn thnh
gi tr thc)
MOD (I,J) Ly phn d nguyn ca php chia hai s J I /

Trong lnh th nht ta gi gi tr hng 0,5 (raian) cho i s ca hm
SIN n tnh ra gi tr sin ca gc 0,5 v gn gi tr cho bin S. Trong
lnh th hai, ta gi gi tr ca bin S vo i s ca hm TAN tnh ra
tang. Cn trong lnh th ba, ta gi mt biu thc vo i s ca hm
COS n tnh ra gi tr csin ca mt gc c ln bng gi tr ca biu
thc . Trong trng hp ny, my tnh trc ht phi tnh (c lng)
gi tr ca biu thc i s, sau mi tnh csin theo gi tr nhn c.
Thy rng mt hm biu din mt gi tr. Gi tr ny c th c dng
trong cc tnh ton khc hoc lu a ch nh khc. Mt hm chun cng
c th lm i s ca mt hm chun khc:
XLG = LOG(ABS(X))
Trong Fortran c mt s hm chun cho ra gi tr vi kiu cng kiu
vi i s ca mnh, chng c gi l cc hm t sinh (generic function).
Th d hm ABS(X), nu i s X l s nguyn th gi tr hm ABS(X)
cng l s nguyn, nu X l s thc - ABS(X) cng l s thc. Mt s hm
ch nh kiu ca u vo v u ra. Th d hm IABS l hm i hi i
s nguyn v cho ra gi tr tuyt i l s nguyn. Danh sch y hn
v cc hm chun ca Fortran c dn trong ph lc 1.
Khi dng mt hm chun no phi c k li m t xem n tnh ra
gi tr g, iu kin ca cc i s ra sao. Th d cc hm lng gic phi
dng i s l raian, nu ta cho gi tr i s l th kt qu tnh s sai.
2.5. Lnh gn v cc ton t s hc
2.5.1. Lnh gn
Cc tnh ton trong Fortran c th ch nh bng lnh gn vi dng
tng qut nh sau:
Tn bin = Biu thc
Bn tri du lnh gn (du =) l tn mt bin. Biu thc bn phi c
th l mt hng, mt bin, mt biu thc s hc gm cc ton t s hc
(bng 2.2) thc hin gia cc ton hng l cc hng, bin v hm chun
hay mt biu thc lgic. Khi thc hin lnh gn, trc ht my c lng
(tnh) gi tr ca biu thc bn phi, ri gn gi tr cho bin bn tri, tc
lu gi tr tnh c ca biu thc bn phi vo a ch nh c tn bin bn

19
tri. Kiu d liu ca bin v ca biu thc phi ph hp.
Th d cc lnh gn:
PI = 3.141593
S = PI * BKINH **2
I = I +1
Lnh th nht gn hng s 3,141593 cho bin c tn l PI. Lnh th hai
gn gi tr ca biu thc
2
) BKINH ( PI cho bin c tn l S. Lnh th ba
ly gi tr hin ti ca bin I cng thm mt n v v li gn cho chnh
bin I.
trn ni, kiu d liu ca bin v ca biu thc phi ph hp.
Trng hp bin bn tri l bin thc, cn biu thc bn phi l gi tr
nguyn th my tnh s chuyn gi tr nguyn thnh gi tr thc (s thc
vi phn thp phn bng khng) ri mi gn cho bin. Khi bin bn tri l
bin nguyn, biu thc bn phi c gi tr thc, th my tnh ct b phn
thp phn ca gi tr thc, i s thc nhn c thnh s nguyn ri mi
gn n cho bin nguyn. Cc trng hp gn sai khc chng trnh dch s
bo li.
Khng nn quan nim lnh gn nh du bng trong ton hc.
2.5.2. Cc php tnh s hc n gin
Cc php tnh s hc hay cn gi l cc ton t s hc gm c cc
php tnh cng, tr, nhn, chia v nng ln lu tha c k hiu bng cc
ton t trong Fortran nh trong bng 2.2.
Gi l nhng php tnh s hc bi v cc ton hng ca cc php tnh
l nhng gi tr s, th d s nguyn, s thc, s phc. Sau ny chng ta s
thy my tnh c th tnh ton vi nhng gi tr kiu khc nh gi tr lgic,
gi tr vn bn...
Bng 2.2. Cc php tnh s hc
Php tnh Dng i s Trong Fortran
Cng B A + A + B
Tr B A A B
Nhn B A A * B
Chia
B
A

A / B
Lu tha
3
A
A** 3
2.5.3. c lng biu thc s hc
Khi tnh gi tr ca biu thc s hc, nu biu thc gm nhiu
php tnh n, th my s tnh ton tng php tnh n nhn cc kt qu
trung gian, sau tnh gi tr cui cng ca biu thc gi l c lng.
Mc u tin khi c lng gi tr ca mt biu thc s hc gm nhiu
php tnh n nu trong bng 2.3.
Nu du m ng trc tn bin u tin trong biu thc, th n c
tnh vi cng mc u tin nh php tr. Th d: A**2 bng (A**2),
A*B bng (A*B) v A+B bng (A)+B.
Bng 2.3. Mc u tin cc php tnh s hc
u tin Php tnh
1 Du ngoc
2 Nng ln lu tha
3 Nhn v chia
4 Cng v tr
Khi cc php tnh cng mc u tin th tt c cc php tnh c
thc hin t tri sang phi, th d:

20
B C + D c c lng bng (B C) + D
Ring php nng ln lu tha th thc hin t phi sang tri:
A ** B ** C c c lng bng A ** (B ** C)
Th d: 2 * * 3 * * 2 bng
9
2 hay 512 ch khng phi l
64 8 2 * * ) 3 * * 2 (
2
= = .
2.5.4. Khi nim v ct v cc php tnh hn hp
Khi mt php tnh s hc thc hin vi hai s thc th a ra kt qu
l gi tr thc. Th d, khi tnh chu vi hnh trn vi ng knh DKINH l
s thc, ta c th dng mt trong hai lnh sau:
CHUVI = PI * DKINH
CHUVI = 3.141593 * DKINH
Php tnh s hc gia hai s nguyn cho ra kt qu l s nguyn. Th
d, cho hai s nguyn I v J, trong I nh hn hoc bng J, tnh s s
nguyn INTERV nm trong khong [I, J] c th thc hin bng lnh:
INTERV = J I + 1
Gi s SIDE biu din gi tr thc v LENGTH biu din gi tr
nguyn. By gi xt lnh:
LENGTH = SIDE * 3.5
Php tnh nhn gia hai gi tr thc s cho kt qu s thc. Tuy nhin,
gi tr thc c lu vo bin nguyn. Khi my tnh s b qua phn
thp phn v ch lu phn nguyn ca s thc; kiu lm trn ny gi l ct,
n khc vi lm trn thng thng cho kt qu l s nguyn gn nht vi
gi tr ca s thc.
Khi cc php tnh s hc thc hin gia cc bin c kiu khc nhau
(hn hp) thng cho kt qu rt bt ng. Ta xt th d tnh th tch V ca
hnh cu bn knh thc R. Nu dng lnh:
V = (4/3)*3.141593*R**3
ta s thu c kt qu sai do nguyn nhn php chia hai s nguyn 4/3 cho
gi tr trung gian bng 1, khng phi 1,333333. Do , lnh ng tnh V
s l:
V = (4./3.)*3.141593*R**3
V cc php tnh hn hp i khi cho kt qu bt ng, ta nn c gng
trnh dng nhng biu thc s hc c php tnh hn hp.
2.5.5. Khi nim v s qu b v s qu ln (underflow v overflow)
V cc gi tr ln nht v b nht c th lu trong mt bin tu thuc
vo chnh h my tnh, mt php tnh c th a ra kt qu qu ln hoc
qu b. Xt cc th d sau:
1) X = 0.25E20 2) A = 0.25E20
Y = 0.10E30 B = 0.10E+20
Z = X * Y C = A / B
Kt qu s ca php nhn trong th d 1 bng 0.25E49, r rng l c
th qu ln, khng lu gi c trong my tnh vi bc cc i l 38, cn
kt qu s ca php chia trong th d 2 bng 0.25E49 s qu b. Trong
nhng trng hp ny cc lnh Fortran hon ton ng, nhng li s pht
sinh khi chy chng trnh. Cc li do bc qu ln hoc qu b thng b
gy bi nhng li nhng on trc ca chng trnh, th d mt bin
cha c gn gi tr ng li c mt trong biu thc s hc.
Bi tp
1. Hy biu din thnh dng F v dng E nhng s thc sau:
a) 3,14 b) 3,141593 c) 0,0026 d)
3
10 5 , 2

21
e) 14,0 f) 28,34 g)
23
10 023 , 6
2. Xc nh nhng tn sai trong nhng tn sau y:
a) AVERG b) PTBACHAI c) REAL
d) 2LOG ) GPTB2 e) HS-A1
f) X1 g) THANG*1 h) MONTH2
3. Vit thnh dng Fortran nhng biu thc tnh sau y:
a) Th tch V ca hnh cu theo cng thc
3

3
4
R V t = ( R bn knh).
b) Hai nghim
1
x v
2
x ca phng trnh bc hai
a
ac b b
x
2
4
2
2 , 1

= ( c b, a , cc h s ca phng trnh)
c) Gi tr hm ) 2 cos( sin
2
1
2
1
2
= x x y (khi x cho bng ).
d) Gi tr hm mt phn b Gauss
2

2

2
1
) (
x
e x F

=
t

e) Thm mt n v vo bin nguyn I v lu vo bin I
f) Khong cch DIST gia hai im A v B nu bit cc to tng
ng ca hai im l ) , ( ), , (
b b a a
y x y x .
4. c lng gi tr ca cc biu thc Fortran sau y:
4/3*3.141593*(3/2)**3
SQRT (I+I/2) (nu I = 1)
SIN ((30/180)*PI) (nu PI = 3.141593)
COS (60/180*3.141593)
5. Hy c chnh xc bng ngn ng Fortran nhng lnh vit di
y:
a) I = I + K +1
b) SS = 0.5 * SIN (A*3.1416 / 180.)
c) ERR = ABS (X1 - X2)
6. Hai on chng trnh sau nhm tnh tr s trung bnh A ca ba s
nguyn 3 , 2 , 1
3 2 1
= = = i i i v in kt qu ln mn hnh. Hy th xem kt
qu c ng khng. Nu thy sai th ch ra ti sao v khc phc bng cch
no?
a) I1 = 1
I2 = 2
I3 = 3
PRINT 4 , (I1 + I2 + I3)/3
4 FORMAT (1X, ' A = ',F4.1)
b) I1 = 1
I2 = 2
I3 = 3
PRINT 2, 1/3*(I1+I2+I3)
2 FORMAT (3X, F4.1)
7. Gi s cc cung a l (tm cung) c nh s hiu theo qui c
nh sau: 1 - bc; 2 - ng bc; 3 - ng; 4 - ng nam; 5 - nam; 6 - ty
nam; 7 - ty; 8 - ty bc. Hng gi quan trc c bng 165
o
. Hy vit
biu thc Fortran tnh s hiu cung ca hng gi .


22

Chng 3 - Nhp v xut d liu n gin
3.1. Cc lnh xut v nhp d liu
My tnh c th nhp d liu t cc ngun, cc thit b khc nhau.
Tng t, ta cng c th hng s xut d liu ra cc thit b khc nhau.
Trong chng ny, ta xt cch nhp d liu t bn phm v xut d liu ra
mn hnh hoc my in. Vic xut v nhp d liu c dng cc file d liu
s c xt trong chng 6.
Lnh xut d liu nh hng ra mn hnh:
PRINT * , Danh sch cc mc in
Lnh nhp d liu t bn phm:
READ * , Danh sch cc bin
Cc mc in trong lnh in c th l mt hng, mt bin, mt biu thc.
Nu trong danh sch cc mc in c t hai mc tr ln, th cc mc phi
cch nhau bi du phy. Trong danh sch cc bin ca lnh nhp (c) d
liu, nu c hn mt bin cn c d liu, th nhng bin phi c lit
k cch nhau bi du phy. Cc mc c in ra trn mt dng mn hnh
theo th t c lit k trong danh sch. Nu trong danh sch khng c
mt mc in no, th my tnh ch n gin l xung mt dng trn mn
hnh. Th d, xt on chng trnh sau y:
GOC = 30.0
PRINT* , ' Khi X = ', GOC , ' 1/2 SinX = ', 0.5 * SIN (GOC *
* 3.141593 / 180.)
Ghi ch: Trong lnh PRINT va ri c mt du ni dng. y
dng du hoa th bn trong hnh nh nht nh * phn bit vi du hoa
th bnh thng l k hiu ca php tnh nhn. T nay v sau trong sch
ny nhng dng lnh no c du ni dng s quy c dng k hiu ny.
Cn khi son chng trnh trn mn hnh my tnh, th nh ni trong
mc 1.5, chng 1, ch cn vit du hoa th vo v tr th 6 ca dng lnh.
Ta thy trong danh sch cc mc in ca lnh PRINT c 4 mc lit k
theo th t l:
1) Cm ch ' Khi X ='
2) Bin c tn l GOC lu gi tr 30
3) Cm ch ' 1/2 SinX ='
4) Biu thc
0.5 * SIN (GOC * 3.141593 / 180.0)
biu th na sin ca gc 30 i thnh raian.
Nh vy, mc in th nht v th ba l nhng hng vn bn, mc in
th 2 l gi tr ca bin s thc GOC v mc in th t l mt biu thc s
thc. Trc khi in mc th t, my tnh phi tnh gi tr ca biu thc ny
(bng 0,25), ri sau mi in gi tr ln mn hnh. Kt qu trn mn
hnh s nh sau:


Hy ch rng vi lnh PRINT * trn y cc mc in l nhng cm
Khi X = 30.00000 1/2 SinX = 0.2500000

23
d liu vn bn c in ra ng nh ta nhn thy trong dng lnh, tng k
t mt, k c du trng. Cc gi tr ca bin v biu thc thc c in ra
sau mt khong trng v s nhng ch s c ngha sau du chm thp phn
khc nhau. Nu gi tr ca cc bin l nhng s kh nh hoc kh ln, th
my s in ra nhng gi tr di dng biu din E hoc D (xem mc 2.1).
Kiu in d liu nh trn gi l in khng c nh dng hay in khng c
format.
Ch rng, trong READ *, sau du phy l danh sch cc bin, khi
thc hin lnh ny, my tnh ch ta g t bn phm nhng gi tr (cc k t
vn bn, s nguyn, s thc...) tng xng v kiu vi danh sch bin, mi
gi tr cch nhau mt du phy hay t nht mt du trng, ring nhng k
t vn bn phi nm trong cp du nhy trn (' '). Kt thc danh sch cc
gi tr phi g lnh phm Enter (.). My tnh s tun t gn nhng gi tr
nhn t bn phm vo nhng bin tng ng trong danh sch bin ca lng
READ. Nu ta g cha s gi tr theo danh sch bin, th my ch ta g
cho n khi cc gi tr mi kt thc thc hin lnh READ. Nu kiu d
liu g vo sai so vi kiu d liu ca bin, th lp tc chng trnh ngng
thc hin v bo li chy chng trnh. Th d lnh
READ * , I , NAM , TEMP , GHICHU
i hi ta g vo t bn phm mt s nguyn cho bin I, mt s nguyn
na cho bin NAM v mt s thc cho bin TEMP, mt xu k t cho bin
vn bn GHICHU, mun nhp ng yu cu ta c th g vo bn phm nh
sau:
1 1982 25.36 'SL quan trac' . hay 1,1982,25.36,'SL quan trac' .
Lnh in c quy cch (c nh dng):
PRINT k , Danh sch cc mc in
Cng ging nh lnh in khng nh dng, danh sch cc mc in ch ra
nhng hng, bin hay cc biu thc cn in theo th t lit k. Tham s k
nguyn dng ch ti nhn ca lnh FORMAT m t quy cch in thng tin
ra mn hnh nh v tr in, khong cch gia cc mc in, s ch s thp
phn cn in i vi gi tr s thc... Dng tng qut ca lnh FORMAT
nh sau:
k FORMAT (Danh sch cc c t)
trong k l nhn ca dng lnh FORMAT. Danh sch cc c t nm
trong cp du ngoc n bo cho my tnh bit v cch dn dng theo
chiu thng ng v b tr cc k t trong dng thng tin in ra. Nu in ra
trn giy my in, th tu chn dn dng bo cho my in iu khin ko giy
in sang u trang mi, xung dng mi, xung hai dng mi hay in
ngay trn dng hin thi... My tnh s thit lp mi dng in bn trong b
nh trc khi thc s in dng ln giy. Vng b nh bn trong gi l
vng m buffer. Nhng k t u tin trong vng buffer gi l k t iu
khin ko giy ca my in c nhng ngha nh sau:
1 Sang trang mi
Du trng Xung mt dng
0 Xung hai dng
+ Khng xung dng
By gi ta lm quen vi nhng c t n gin sau y. Trong
chng 4 s cn tr li vn nh dng phc tp hn khi lm vic vi cc
file d liu.

24
3.2. Cc c t trong lnh FORMAT
1) Cc c t vn bn thng dng xut d liu l nhng k t,
cc on vn bn, hay dng in tiu cc bo co. c t vn bn cho
php a cc k t trc tip vo buffer. Cc k t phi nm trong cp du
nhy trn hay du ngoc kp. Th d:
PRINT 4
4 FORMAT ('1' , 'KET QUA THI NGHIEM')
Ta cng c th dng c t wH trong w s v tr xut d liu
vn bn. Th d
PRINT 5 , Y
5 FORMAT (16H TICH PHAN BANG , F9.3)
2) c t n X s chn n du trng vo bn ghi, thng dng cn
gia cc tiu bo co, th d:
PRINT 35
35 FORMAT ('1' , 25X , 'THI NGHIEM SO 1')
3) c t Aw dng cho cc hng v bin xu k t, cc thng tin vn
bn, tu chn w bo cho my tnh s v tr ginh cho mt bin xu k t
(vn bn) cn in. Mc vn bn in ra cn l bn phi.
4) c t I w dng cho s nguyn, trong w s v tr dng in gi
tr s nguyn.
5) c t F w. d dng biu din dng thp phn ca s thc, w
tng s v tr dnh cho s thc k c du chm thp phn, d s ch s
thp phn sau du chm. Trong hai c t I w v F w. d cc s in ra c
cn l bn phi. Nu c t thiu v tr biu din gi tr, th gi tr s s
khng c in ra, m ti cc v tr in s xut hin cc du sao (*) bo
hiu cho ta bit rng c t ca lnh FORMAT khng ph hp, cp thiu v
tr so vi gi tr ca i lng cn in.
6) c t Ew. d dng ghi ra di dng lu tha nhng gi tr rt ln
hoc rt nh v khi ta cha hnh dung r v ln ca i lng.
Thng thng hai lnh PRINT v FORMAT i km gn nhau. Th d:
PRINT 5 , I, NAM, TEMP, GHICHU
5 FORMAT (1X, I3, I8, F10.2, 1X, A20)
Sau lnh READ v cc d liu c g vo t bn phm ni trong
mc 3.2.1, th kt qu cp lnh in ny trn mn hnh s nh sau:


7) Cc c t Aw, I w, F w. d v Ew. d cng dng vi lnh c s
liu.
8) i vi cc gi tr lgic trong Fortran dng c t Lw, trong
w s v tr ginh cho d liu. Th d theo lnh
16 FORMAT (L5)
nu ti mt trong 5 v tr ginh cho bin c ch T, th gi tr .TRUE. s
c gn vo bin lgic trong lnh c. Khi xut, ch ci T hoc F (tng
ng vi .TRUE. hoc .FALSE. s in ra ti v tr th 5, tc v tr cui cng
bn phi trong 5 v tr.
9) Chng ta c th s dng mt s c im b sung trong cch vit
cc c t ca lnh FORMAT nhm nng cao cht lng bn ghi, theo
ng nh biu din ca mnh hay lm cho lnh FORMAT trng ngn
gn. C th dng nhng cch di y:
Cch vit lp li cc c t: Th d nhng cp lnh sau y hon ton
1 1982 25.36 SL quan trac

25
tng ng:
10 FORMAT (3X, I2, 3X, I2)
10 FORMAT (2 (3X, I2))
20 FORMAT (1X, F4.1, F4.1, 1X, I3, 1X, I3, 1X, I3)
20 FORMAT (1X, 2F4.1, 3 (1X, I3))
Dng du gch cho (/) trong lnh FORMAT ch kt thc dng in
trc khi bt u cc c t sau n. Th d, khi cn in dng tiu ca mt
bng s cng vi nhng tiu ct, chng ta c th dng:
PRINT 5
5 FORMAT (1X, 'KET QUA QUAN TRAC' // 2X, 'Gio', 3X,
* 'Toc do', 3X, 'Huong')
Sau khi in xong on vn bn KET QUA QUAN TRAC, du gch
cho th nht ch dn cho my kt thc dng, xung dng mi, du gch
cho th hai ch dn b qua ngay dng ny khng in, pht sinh ra mt dng
trng trc khi in cc tiu ct dng th ba nh ta thy di y:
KET QUA QUAN TRAC
Gio Toc do Huong

Dng c t bng T, TR, TL cn l tri cc tiu ct mt bng
s. Th d cc cp lnh cng nhn sau y s l tng ng vi nhau:
600 FORMAT (F6.1, 15X, I7)
600 FORMAT (F6.1, T22, I7)
lnh th hai: sau khi ghi ra s thc vi 6 v tr, nhy ngay ti v tr 22
bt u ghi s nguyn.
85 FORMAT (1X, 25X, 'Do cao', 5X, 'Huong')
85 FORMAT (T27, 'Do cao', TR5, 'Huong')
lnh th hai: nhy ngay ti v tr th 27 ghi tiu "Do cao", sau
do c c t TR5 xut pht t v tr hin thi s nhy sang phi 5 v tr
ghi tiu "Huong".
c t \ c tc dng ngn khng xung dng trong mt lnh in hoc
c. C th dng c t ny trong trng hp mun vit mt li nhc yu
cu ngi dng nhp thng tin t bn phm nhng sau khi vit li nhc th
khng xung dng, con nhy ng trn cng dng ngay sau li nhc ch
ngi dng nhp thng tin t bn phm theo yu cu ca lnh c. Th d
nhm lnh sau y s lm chc nng :
PRINT 7
7 FORMAT (1X, 'Ten file so lieu: ', \)
READ (*, '(A50)') NAME
V s lng cc c t: Khi s cc c t nhiu hn s mc trong
danh sch cc mc in, th d:
PRINT 1, TOCDO, KHOANG
1 FORMAT (4 F5.2)
my s chn ly s ti a cc c t cn dng, s c t cn li b b qua.
Trong trng hp ny lnh in c 2 mc in - 2 gi tr s thc, nhng lnh
FORMAT c 4 c t s thc, nh vy s c t l tha. My s chn ly
hai c t v in bnh thng nh chng ta mong mun.
Khi s c t t hn s mc in, th d trong lnh in sau:
PRINT 20, TEM, VOL
20 FORMAT (1X, f6.2)
Trong trng hp ny my cn cc mc in v c t cho n ht danh sch
c t, sau c th xy ra hai kh nng:

26
1) In lun buffer hin ti v bt u mt buffer mi.
2) Quay tr li u danh sch c t cho n khi gp du ngoc n
tri v li cn tng cp mc in, c t cho cc mc in cn li.
Trong lnh in trn gi tr ca TEM c cn theo c t F6.2. V
khng c c t cho VOL nn ta lm nh sau:
1) In gi tr ca TEM sau mt v tr trng.
2) Khi quay tr li v pha u ca danh sch cc c t (du ngoc
tri) v cn F6.2 cho gi tr VOL. Sau ta t ti u ca danh sch v
du trng in VOL. Do TEM v VOL c in trn hai dng ring
bit.
Trong Fortran 90 cho php cc tham s rng c t, s ln lp ca
c t c th l bin. Th d FORMAT (<m>F<n>.<k>).
Bi tp
1. Vit on chng trnh c gi tr vo hai bin thc A v B, i gi
tr ca hai bin cho nhau.
2. iu g s xy ra khi thc hin chng trnh sau v ta nhp vo bn
phm ln lt s 1, du phy, s 10 v du chm ri g phm Enter.
PRINT *, ' Cho cac gia tri cua hai so nguyen I1, I2 ! '
READ * , IDAU, ICUOI
PRINT 4, IDAU, ICUOI
4 FORMAT (1X, 'I1 = ', I5, 'I2 = ', I5)
END
3. M t nhng g s in ln mn hnh khi thc hin cc lnh di y:
REAL X
X = 27.632
PRINT 5 , X
5 FORMAT (1X, 'X = ', F7.1, ' DEGREES')
4. M t nhng g s in ra my in khi thc hin nhng lnh di y:
A = 3.184
PRINT 1
1 FORMAT (1X, '0')
PRINT 2
2 FORMAT ('+' , '- = ' , F5.2)
5. M t nhng g s in ln mn hnh khi thc hin cc lnh di y:
REAL DIST , VEL
DIST = 28732.5
VEL = 2.6
PRINT 10, DIST, VEL
10 FORMAT (1X, 'DISTANCE = ' , E10.3,
* 5X , 'VELOCITY = ' , F5.2)
6. Vit on chng trnh nhp vo t bn phm tn 5 mn thi ca hc
k cng vi im thi tng mn ca mnh. Tnh im trung bnh v in ln
mn hnh thnh mt bng c hnh thc nh sau:
BANG DIEM THI HOC KY
--------------------------------------------
TT TEN MON HOC DIEM
--------------------------------------------
1 Tn mn th 1 8
2 Tn mn th 2 7
3 Tn mn th 3 8
4 Tn mn th 4 7
5 Tn mn th 5 9
--------------------------------------------
Diem trung binh hoc ky 7,8





27

Chng 4 - Cc cu trc iu khin
Trong cc chng trc ta xt mt vi chng trnh n gin.
Thy rng nhng chng trnh ny thc s rt n gin, ch gm mt vi
lnh thc hin tun t l dn n kt qu bi ton cn gii. Trong chng
ny, s gii thiu nhng lnh ca Fortran cho php ta iu khin c th
t cc bc cn thc hin. S iu khin c thc hin thng qua nhng
lnh cho php ta chn nhng nhnh khc nhau trong chng trnh v
nhng lnh cho php ta lp li nhng phn no ca chng trnh.
Nhng lnh nh vy gi l nhng lnh iu khin.
4.1. Khi nim v cu trc thut ton
4.1.1. Cc thao tc c bn. Gi trnh v lu
Trong mc 1.3, chng 1 s lc ni v quy trnh nm bc gii
bi ton. i vi nhng bi ton phc tp v cch gii th bc 4 l bc
kh khn nht. Ngi lp trnh phi m t tun t cc cng on t u
n cui qu trnh gii, chia qu trnh ny thnh mt s khi v lit k
nhng khi ra sau ny chng trnh my tnh s tun t thc hin.
Trong mi khi ngi lp trnh li phi chi tit ho thm n mc c th
chuyn thnh nhng lnh my tnh. Cch chia khi v chi tit ho tng
khi nh vy c th gi l phng php chia v chinh phc. Kt qu cui
cng ca chia khi v chi tit ho tng khi chnh l thut gii (algorithm).
Bng 4.1. Cc thao tc c bn v quy c tng ng trong gi trnh v lu
Dng thao tc Ch gii gi trnh Biu tng lu
Tnh ton N TONG TB / TB = TONG / N
+
+

Nhp d liu c A, B

c A, B
+
+

Xut d liu In A, B
In A, B
+
+

So snh Nu A > B


+ S
A > B ?

Bt u thut gii Tn bi ton
Bt u
+

Kt thc thut gii Kt thc
+

Nhng hnh thc biu din trc quan thut gii sao cho d dng
chuyn thnh chng trnh l gi trnh v lu . Mt ngi lp trnh c
th chn hnh thc ny hoc hnh thc kia. Theo cch gi trnh, mi cu
trc ca thut gii c quy c bi mt ch gii ngn gn gn ging vi
ngn ng vit ca chng ta; cn trong cch biu din lu , mi cu trc
c m t bng mt biu tng hnh hc.

28
Dn dn ta s thy rng, ni chung nhng thao tc c bn trong mt
thut gii thng l nhng tnh ton, nhp, xut d liu v so snh. Ni
chung mt chng trnh my tnh d n gin hay phc tp n u cng
ch gm c nhng thao tc c bn . Mt s thao tc (hay lnh) c th
nhm li vi nhau to thnh mt khi hay mt khi cu trc. Nhng ch
gii gi trnh v nhng biu tng lu chnh l th hin nhng thao
tc c bn (xem bng 4.1).
4.1.2. Cc cu trc tng qut trong thut gii
Cc bc trong mt thut gii c th phn chia thnh ba dng cu trc
tng qut - l cu trc tun t, la chn v lp. Cu trc tun t l chui
cc bc thc hin mt cch k tip nhau. Cu trc la chn (hay cn gi
l cu trc r nhnh) cho php so snh hai gi tr, sau tu kt qu so
snh m nh ra mt chui cc bc khc nhau phi thc hin. Cu trc
lp c dng khi qu trnh gii cn lp li mt s thao tc cho n khi
tho mn mt iu kin. Trong thut gii phc tp hn mt cht c th
thy cc cu trc tng qut ny lng vo nhau, trong cu trc lp c nhng
on gm nhng thao tc tun t c thc hin, c nhng on xut hin
s r nhnh tu theo mt iu kin so snh no .
4.1.3. Th d ng dng thut ton cu trc
By gi ta tm hiu phng php xy dng thut gii theo k thut
chia khi v chi tit ho tng khi, phn tch cu trc thut gii thng qua
mt th d c th v bi ton phn tch cc s liu thc nghim.
1) Pht biu bi ton: Xc nh gi tr ln nht, nh nht v bin
cc gi tr ca tp s liu quan trc.
2) M t d liu vo v ra: D liu vo l mt chui cc s liu quan
trc. u ra l tr cc i, cc tiu v bin cc gi tr.
3) Tnh th vi tp s liu quan trc sau:
Chui s liu th:
40.56
55.92
66.31
58.35
62.88
41.99
49.70
53.21
Thc hin tm tr cc i nh sau: Trc ht so snh s th nht ca
chui vi s th hai xc nh s ln hn, coi l cc i tm thi. By
gi xt s th ba v so snh n vi cc i tm thi. Nu cc i tm thi
ln hn, ta xt ti s th t; nhng nu s th ba ln hn cc i tm thi,
ta thay th s vo cc i tm thi. Tip tc qu trnh ny vi ton b
chui s liu s dn ti kt qu l cc i tm thi chnh l tr cc i trong
c chui. Mt qu trnh tng t s cho php tm cc tiu. Vi tp s liu
ang xt, kt qu l:
Gi tr cc i = 66.31
Gi tr cc tiu = 40.56
Tnh bin bng hiu gia cc i v cc tiu = 66.31 40.56 =
25.73
4) Xy dng thut gii: Khi qut li cc bc thc hin bc (3) ta
c th chia bi ton thnh ba khi:
- c s liu v xc nh cc tr cc i v cc tiu
- Tnh hiu gia cc i v cc tiu nhn bin
- In cc i, cc tiu v bin
Vi th d ny, ta chi tit ho cch gii bng gi trnh. R rng khi
th nht i hi phi chi tit ho nhiu hn na, v n va bao gm c vic

29
chn tr cc i, cc tiu xut pht, va bao gm c qu trnh lp (lp
c s liu v lp cp nht cc tr khi cn). Cc i v cc tiu xut
pht thng c gn bng gi tr ca quan trc th nht, do ta c mt
s liu u gn cho chng. Sau ta c s th hai v i vo vng lp.
"Chng no s khng phi l zero", ta cp nht tr cc i v cc tiu nu
cn thit. By gi ta m t nhng bc chi tit ny bng gi trnh
nh sau:
Gi trnh: c s
Cc i S
Cc tiu S
c s
Chng no s khng bng zero th
Nu s > Cc i th
Cc i S
Nu s < Cc tiu th
Cc tiu S
c s
Bin Cc i Cc tiu
In 'GIA TRI CUC DAI = ', Cc i
In 'GIA TRI CUC TIEU = ', Cc tiu
In 'BIEN DO GIA TRI = ', Bin
y l mt thut gii n gin. Ch c mt khi th nht cn chi tit
ho. Thy rng khi thut gii chi tit ho ti mc nh vy, th vic
chuyn thnh chng trnh Fortran s khng cn l vn kh khn. Trong
cc mc tip sau, ta s nghin cu cc lnh Fortran chuyn tr gip cho
vic thit k cc cu trc iu khin ca bi ton ny v nhiu bi ton
tng t.
4.2. Cu trc IF v cc lnh tng ng
4.2.1. Biu thc lgic
Biu thc lgic c to bi cc ton t quan h:
.EQ. bng .NE. khng bng
.LT. nh hn .LE. nh hn hoc bng
.GT. ln hn .GE. ln hn hoc bng
ni hai bin s hai bn.
Tu theo quan h gia hai bin s m biu thc lgic c mt trong
hai gi tr lgic:
ng (.TRUE.) hoc sai (.FALSE.).
Th d, xt biu thc A .EQ. B trong A v B l cc bin s thc.
Nu gi tr ca A bng gi tr ca B th biu thc lgic s c gi tr l ng
.TRUE.. Nu khng th biu thc c gi tr l sai .FALSE.. Tng t, nu
X bng 4,5 th biu thc X .GT. 3.0 c gi tr bng ng .TRUE..
Ta c th ni hai biu thc lgic bng mt trong cc ton t lgic
.OR. v .AND. thnh mt biu thc lgic kt hp.
Khi hai biu thc lgic ni vi nhau bi .OR. th biu thc lgic kt
hp s c gi tr l ng nu mt hoc c hai biu thc c gi tr l ng.
Ta c th gi .OR. l ton t cng lgic.

30
Khi hai biu thc ni vi nhau bi .AND. th biu thc kt hp c gi
tr ng ch khi c hai biu thc c gi tr l ng. Ta c th gi ton t
.AND. l ton t nhn lgic.
Ton t .NOT. c th ng trc biu thc lgic v i gi tr ca n
thnh gi tr ngc li. Th d, nu A. GT. B l ng (gi tr bng .TRUE.)
th .NOT. A. GT. B l sai (.FALSE.).
Mt biu thc lgic c th cha nhiu ton t lgic, th d nh trong
biu thc sau:
.NOT. (A .LT. 15.4) .OR. KT .EQ. ISUM
Quyn u tin t cao nht xung thp nht l
.NOT., .AND. v .OR.
Trong biu thc trn, biu thc A .LT. 15.4 s c c lng trc
tin, sau gi tr ca n (.TRUE. hoc .FALSE.) c i ngc li. Gi
tr ny s c xt cng vi gi tr ca KT .EQ. ISUM. Th d, nu A l
5.0, KT l 5 v ISUM l 5, th biu thc bn tri ca ton t .OR. c gi tr
sai .FALSE., biu thc bn phi c gi tr ng .TRUE. v ton b biu
thc s c gi tr l ng .TRUE..
Gi tr ca biu thc lgic c th c gn cho bin lgic bng lnh
gn ging nh lnh gn dng vi cc bin s v biu thc s, th d:
LOGICAL DONE, OK
DONE = .FALSE.
OK = DONE .AND. I .GT. 24
Khi so snh hai biu thc lgic hay hai bin lgic c tng ng
nhau hay khng, trong Fortran khng dng cc ton t quan h nh khi so
snh hai biu thc s, m dng cc ton t lgic .EQV. v .NEQV..
Bng 4.2. tm tt quy tc c lng ca cc ton t lgic cho mi
trng hp c th xy ra.
Bng 4.2. Cc ton t lgic
A B .NOT. A A.AND.B A.OR.B A.EQV.B A.NEQV.B
False False True False False True False
False True True False True False True
True False False False True False True
True True False True True True False
Khi cc ton t s hc, quan h v lgic cng c mt trong mt biu
thc th cc ton t s hc thc hin trc tin; sau cc ton t quan h
dng pht sinh cc gi tr TRUE hoc FALSE; v cc gi tr ny c
nh gi bng cc ton t lgic theo th t u tin .NOT., .AND., v .OR..
Cc quan h .EQV. v .NEQV. c thc hin sau cng.
4.2.2. Lnh IF lgic
1) Cc lnh IF lgic c th c mt s dng s dng. Dng th nht gi
l Logical IF vit nh sau:
IF (Biu thc lgic) Lnh thc hin
Theo lnh ny, nu biu thc lgic trong cp du ngoc n c gi
tr True th thc hin lnh nm trn cng dng vi biu thc lgic, nu
biu thc lgic c gi tr False th khng thc hin lnh cng dng m
chuyn ngay ti lnh tip theo pha di trong chng trnh. Ch rng
lnh thc hin ghi sau biu thc lgic c th l mt trong nhng lnh tnh
ton (gn), xut, nhp d liu..., nhng khng th l mt lnh IF khc.
Biu thc lgic bao gi cng phi t trong cp du ngoc n. Th d,
nhng lnh IF sau y l nhng lnh ng:

31
IF (A. GT. 0.0) SUM = SUM + A
IF (TIME .GT. 1.5) READ *, DIST
2) Dng th hai gi l Block IF: Nu biu thc lgic c gi tr True
my thc hin cc lnh t lnh 1 n lnh n , sau chuyn ti lnh tip
sau END IF. Nu biu thc lgic c gi tr False, iu khin chuyn ngay
xung lnh ng sau END IF:

IF (Biu thc lgic) THEN
lnh 1
. . .
lnh n
END IF

3) Dng th ba gi l dng IF ELSE: Khi biu thc lgic c gi tr
True cc lnh t 1 n n c thc hin, nu biu thc lgic c gi tr
False cc lnh t 1 + n n m c thc hin:

IF (Biu thc lgic) THEN
lnh 1
...
lnh n
ELSE
lnh n+1
...
lnh m
END IF

4) Dng th t gi l IF ELSE IF: Nu biu thc lgic 1 c gi tr
True th lot cc lnh t 1 n m c thc hin; nu biu thc lgic 1 c
tr False, biu thc lgic 2 c tr True th lot lnh t 1 + m n n thc
hin; nu cc biu thc lgic 1 v 2 l False v biu thc lgic 3 True th
cc lnh t 1 + n ti p thc hin. Nu khng mt biu thc lgic no c
gi tr True th ch c cc lnh t 1 + p ti q c thc hin. Trong thc t
ta c th cu to s nhnh ELSE IF nhiu hn hoc t hn, ch khng nht
thit ch l hai nhnh nh vit di y:
IF (Biu thc lgic 1) THEN
lnh 1
...
lnh m
ELSE IF (Biu thc lgic 2) THEN
lnh m+1
...
lnh n
ELSE IF (Bbiu thc lgic 3) THEN
lnh n+1
...
lnh p
ELSE
lnh p+1
...
lnh q
END IF

Th d 1: S dng cc lnh IF lgic iu khin r nhnh. Lp
chng trnh gii h phng trnh bc hai
0
2
= + + c bx ax (cc h s c b a , , nhp t bn phm, 0 = a ).
Ta c th c th ha thut gii ca bi ton ny bng lu nh trn
hnh 4.1. T vit m ngun ca chng trnh Fortran nh di y.

32

Bt u
In Nhap HS
c a, b, c
Tnh A
A < 0
+
S

+
+
+
S +
A = 0
In -b / (2a)
A = A
a = 2a
Kt thc
In (-b + A) / a
In (-b - A) / a
+
+
+
In V nghim
+


Hnh 4.1. Lu thut gii bi ton ca th d 1
PRINT * , ' HE SO A BANG'
READ * , A
PRINT * , ' HE SO B BANG'
READ * , B
PRINT * , ' HE SO C BANG'
READ * , C
DELT = B**2 4.*A*C
IF (DELT .LT. 0.) THEN
PRINT * , ' PHUONG TRINH VO NGHIEM'
ELSE IF (DELT .EQ. 0.) THEN
PRINT 5 , B / (2.0 *A)
5 FORMAT (1X, 'NGHIEM KEP BANG' , F10.2)
ELSE
DELT = SQRT (DELT)
A = 2. * A
PRINT 7 , (B + DELT) / A , (B DELT) / A
7 FORMAT (1X, 'HAI NGHIEM: X1 = ',
* F10.2, 5X, 'X2 = ', F10.2)
END IF
END
4.2.3. Lnh IF s hc
Lnh IF s hc cho php thc hin r nhnh chng trnh thnh ba
nhnh ty thuc vo gi tr ca biu thc s hc, dng tng qut ca lnh
ny vit nh sau:
IF (Biu thc s hc)
3 2 1
, , n n n
trong
3 2 1
, , n n n nhn ca cc lnh thc hin. Nu biu thc s hc c
gi tr m th iu khin c chuyn ti lnh c nhn l
1
n , bng khng
nhn
2
n , v dng nhn
3
n .
Th d, theo lnh
IF (I 10) 4, 8, 7
nu 10 < I iu khin chuyn n lnh c nhn l 4, nu = 10 I chuyn
n nhn 8 v nu >10 I chuyn n nhn 7.

33
Trong lnh
IF (X 3.5) 3, 6, 6
khi 5 , 3 > X iu khin chuyn ti lnh c nhn l 6, khi 5 , 3 < X iu
khin chuyn ti lnh c nhn l 3.
Th d 2: Dng lnh IF s hc thit k vng lp. Vit chng
trnh tnh v in gi tr hm
) 1 ( cos ) (
3
+ =

x t e x f
x
,
trong x bin thin t 1 n 3 vi bc 0,1 v 1 , 0 = t .
Lu gii bi ton ny tham kho trn hnh 4.2.

Bt u
Tnh F
+
S

+
+
+
X > 3
T = 0.1
X = 1.0
X = X + 0.1
Kt thc
+
In X, F
+


Hnh 4.2. Lu thut gii bi ton ca th d 2

T = 0.1
X = 1.0
12 F = EXP ( X ** 3) * COS (T * X + 1)
WRITE (6 , 9) X , F
9 FORMAT (F5.2, E12.2)
X = X + 0.1
IF (X 3.0) 12 , 12 , 4
4 STOP
END
4.2.4. Lnh chuyn iu khin v iu kin GO TO
Lnh ny c dng
GO TO n
trong n nhn ca lnh m iu kin cn chuyn ti.
Lnh cn chuyn ti nht thit phi c nhn. Ngoi ra trong chng
trnh khng th c nhng lnh c cng nhn nh nhau. Lnh GO TO c th
chuyn iu khin ti bt k lnh thc hin no ng trc hoc ng sau
lnh 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: Vit chng trnh nhp n phn t ca mng mt chiu X,
sp xp li cc phn t mng theo th t tng dn v in ra mn hnh.

34

REAL X (20), TG

INTEGER N, I, J, K

N = 10

PRINT * , 'NHAP CAC PHAN TU MANG'
I = 0
7 I = I + 1
PRINT *, 'PHAN TU ', I
READ *, X (I)
IF (I .LT. N) GOTO 7
C Sp xp mng X theo th t tng dn
I = 1
2 K = I
J = I + 1
1 IF (X (J) .LT. X (K)) K = J
J = J + 1
IF (J .LE. N) GOTO 1
TG = X(I)
X(I) = X(K)
X(K) = TG
I = I + 1
IF (I. LT. N) GOTO 2
C Ln lt in cc gi tr ca mng X sp xp
I = 1
3 PRINT 8 , X(I)
8 FORMAT (F12.2)
I = I + 1
IF (I .LE. N) GOTO 3
END
4.2.5. Lnh GO TO tnh ton
Lnh GO TO tnh ton dng thc hin chuyn iu khin ti mt
trong s nhng lnh c nhn c lit k trong lnh GOTO tu thuc vo
gi tr ca mt bin trong lnh. Dng tng qut ca lnh nh sau:
GO TO (
m
n n n ..., , ,
2 1
) , i
trong
m
n n n ..., , ,
2 1
cc nhn ca nhng lnh thc hin, i bin
nguyn khng ch s. Theo lnh ny, iu khin c chuyn ti mt trong
cc lnh
m
n n n ..., , ,
2 1
tu thuc vo gi tr ca i , c th khi 1 = i iu
khin s chuyn ti lnh c nhn
1
n , khi = 2 i nhn
2
n , ..., khi = m i
nhn
m
n . Nu gi tr ca i nm ngoi khong m i s s 1 th iu khin
chuyn xung lnh ng sau lnh GO TO thc hin.
Th d, theo lnh
GO TO (17 , 2 , 115 , 19) , KA
khi KA = 1 iu khin chuyn ti lnh c nhn l 17, khi KA = 2 iu
khin chuyn ti lnh c nhn l 2, khi KA = 3 iu khin chuyn ti lnh
c nhn l 115 v khi KA = 4 iu khin chuyn ti lnh c nhn l 19.
Th d 4: ng dng lnh GOTO tnh ton. Vit chng trnh tnh
gi tr ca a thc Lejandre vi 4 , 0 = x theo cng thc

=
=
=
=
=
3 khi ) 3 5 (
2
1

2 khi ) 1 3 (
2
1

1 khi
0 khi 1
) (
3
2

x x
x
x
x P
REAL X, P
INTEGER L, I

35
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 WRITE (* , 8) L , P
8 FORMAT (I3 , F12.5)
L = L + 1
IF (L 3) 28 , 28 , 30
30 STOP
END
Th d 5: Sp xp danh sch. Vit chng trnh nhp h tn v
im ba mn hc ca nhm gm n sinh vin. Tnh im trung bnh cng
ba mn hc. In bng c tiu v cc ct th t, h tn, im ba mn v
im trung bnh, ghi ch xp loi theo im trung bnh: trung bnh 0 . 6 < ,
kh 9 , 8 6 , gii 0 , 9 > . Danh sch xp theo th t t cao xung thp da
theo im trung bnh.

PARAMETER (N = 15)
INTEGER I , J , K , D1 (50) , D2 (50) , D3 (50), ID
REAL D , TB (50)
CHARACTER * 20 TEN (50) , TENTG
C Nhp h tn, im thi v tnh im trung bnh
I = 0
7 I = I + 1
PRINT * , ' NHAP SINH VIEN ' , I
READ (* , '(A20)') TEN(I)
READ * , D1 (I) , D2 (I) , D3 (I)
TB (I) = (D1 (I) + D2 (I) + D3 (I)) / 3.0
IF (I .LT. N) GO TO 7
C Sp xp danh sch theo th t im trung bnh gim dn

I = 1
2 K = I
J = I + 1
1 IF (TB(J) .GT. TB(K)) K = J
J = J + 1
IF (J .LE. 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)
D2 (K) = ID

36
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 .LT. N) GO TO 2
C In tiu danh sch ln mn hnh
PRINT 100
100 FORMAT (21X , 'BANG DIEM' // , 1X , 'TT' , 7X,
* 'HO TEN' ,9X , 'D1 D2 D3 TB XEP LOAI' /)
C In tng sinh vin theo danh sch
60 FORMAT (1X, I2, 1X, A20, I3, I3, I3, F5.1, 1X, 'GIOI')
50 FORMAT (1X, I2, 1X, A20, I3, I3, I3, F5.1, 1X, 'KHA')
40 FORMAT (1X, I2, 1X, A20, I3, I3, I3, F5.1, 1X,
* 'TRUNG BINH')
I = 1
3 IF (TB (I) .LT. 9.0) THEN
IF (TB (I) .LT. 6.0) THEN
PRINT 40 , I , TEN (I) , D1 (I) , D2 (I) , D3 (I) , TB (I)
ELSE
PRINT 50 , I , TEN (I) , D1 (I) , D2 (I) , D3 (I) , TB (I)
END IF
ELSE
PRINT 60 , I , TEN (I) , D1 (I) , D2 (I) , D3 (I) , TB (I)
END IF
I = I + 1
IF (I. LE. N) GO TO 3
STOP
END

Th d 6: Vit chng trnh tnh tch phn xc nh:
}
=
b
a
x x I sin
2

theo cng thc hnh thang vi sai s = b a , ; 0001 , 0 c cho trc.
Gi : bc xp x u, xem s hnh thang con 1 = n , tch phn
bng
) ( ) ( 5 , 0
1
a b y y S
b a
+ = .
Bc xp x sau tng s hnh thang con n thm 1 v tch phn bng
(hnh 4.3)

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

Tip tc tng n n khi c < S
2 1
S .
a

37
a x =
1
b x
n
=
2
x
1
y
2
y
) (x f y =




Hnh 4.3. Minh ha s tnh
gn ng tch phn xc nh
theo phng php hnh thang


EPSIL = 0.0001

A = 0.0

B = 3.141593

S1 = 0.5 * (A ** 2 * SIN (A) + B ** 2 * SIN (B)) * (BA)

SOHINH = 2.0
7 DX = (BA) / SOHINH
HINH = 1.0
X1 = A
Y1 = X1 ** 2 * SIN (X1)
S2 = 0.0
5 X2 = X1 + DX
Y2 = X2 ** 2 * SIN (X2)
S2 = S2 + 0.5*(Y1 + Y2) * DX
IF (HINH .LT. SOHINH) THEN
HINH = HINH + 1.0
X1 = X2
Y1 = Y2
GOTO 5
END IF
IF (ABS (S2S1) .GT. EPSIL) THEN
SOHINH = SOHINH + 1.0
S1 = S2
GOTO 7
END IF
PRINT 3 , S2
3 FORMAT (1X , 'TICH PHAN BANG', F15.4)
END
Th d 7: Vng lp tnh tng chui. Bnh phng ca sin ca gc
x tnh theo cng thc chui 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




.
Hy vit chng trnh c vo mt gc x bng , i ra raian, tnh
v in ra bng so snh kt qu tnh x
2
sin theo cng thc ny vi nhng s
s hng chui n l t 1 n 15. Thy rng s hng u khi 1 = n l
2
x ,
mi s hng tip sau bng s hng trc nhn vi
) 1 2
2
2

n ( n
x

.
Trong th d ny, ta ng dng phng php chia khi bi ton v chi
tit ho tng khi nh trnh by trong mc 4.1 xy dng thut gii v
din t thut gii bng lu , sau dn chng trnh Fortran.
Thy rng bi ton c th chia thnh ba khi sau:
Khi 1: Nhp gi tr gc x .
Khi 2: In tiu ca bng kt qu.

38
Khi 3: Tnh gi tr x
2
sin theo cng thc chui v in ra kt qu kho
st vi s s hng chui t 1 n 15.
By gi ta phn tch chi tit tng khi dn lu thc hin trong
mi khi.
Thy rng khi 1 c th chi tit ho thnh ba bc con: V cng thc
khai trin chui trn y hi t nhanh i vi nhng gc x nh, do nu
x nm trong khong:
180 90 s < x ta thay bng gc x 180 ,
nu x nm trong khong:
270 180 s < x ta thay bng gc 180 x ,
nu x nm trong khong:
360 270 s < x ta thay bng gc 360 x .
Sau i x thnh raian (hnh 4.4).
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

+

+
+
+
+
+
+ + +

+

Hnh 4.4. Lu khi 1 (th d 7)
In tiu bng
In tiu ct
K
h

i

2

+

Hnh 4.5. Lu khi 2 (th d 7)

39
Ta thy khi 2 ch gm hai vic tun t l in dng tiu ca bng
kho st, in cc tiu u bng (hnh 4.5).
S = 0
N = 1
THEM = X
2

S = S + THEM
N l
In N, S, sin
2
X
T
F
N = N + 1
THEM = THEM *2 * X
2
/ (N* (2N1)
N>15
T
F
+
+
+

+
+
Khi 3

Hnh 4.6. Lu khi 3 (th d 7)
Khi 3 l phc tp nht cn c chi tit ho mt cch ti a. Ta thy
khi ny gm cc bc c th sau:
- Gn 0 cho bin S (gi tr khi to ca x
2
sin cn tnh).
- Gn 1 cho N (bt u xt s hng th nht).
- Gn
2
x cho bin THEM (gi tr ca s hng th nht).
- Chng no 15 s N thc hin tun t 4 bc sau:
+ Cng s hng (THEM) vo bin S.
+ Nu N l in gi tr x S N
2
sin , , (tnh theo hm chun).
+ Tng thm 1 n v cho N .
+ Tnh li bin THEM bng cch nhn chnh n vi
) 1 2
2
2

N ( N
X
.
Gi trnh ny tng ng vi lu khi trn hnh 4.6.
Nh vy, ta chi tit ho tt c cc bc trong ba khi di dng
cc lu . Cng vic cn li n gin l gn c hc ba lu li ta c
lu chung ca ton thut ton. T d dng chuyn sang chng trnh
Fortran di y:

PRINT * , ' HAY CHO MOT GOC BANG DO'

READ *, X

IF (X .GT. 90.0) THEN

IF (X .GT. 270.0) THEN

X = X 360.0

ELSE IF (X .GT. 180.0) THEN

X = X 180.0

ELSE
X = 180.0 X
END IF
END IF

40
X = X * 3.141593 / 180.0
PRINT 2
2 FORMAT (1X, 35H KHAO SAT CONG THUC BINH
* PHUONG SIN // , 1X , 2H N, 17H THEO CONG THUC,
* 17H THEO HAM CHUAN)
S = 0.
N = 1
THEM = X ** 2
5 S = S + THEM
IF (MOD (N , 2) .EQ. 1) PRINT 4 , N , S , SIN (X) ** 2
4 FORMAT (1X , I2 , 2F17.7)
N = N + 1
THEM = THEM * 2.0 * X**2 / (N * (2 * N 1))
IF (N .LE. 15) GO TO 5
END
Th d 8: Ni suy tuyn tnh chui s liu quan trc. Gi s c
nhng s liu quan trc v nhit nc bin ti cc tng su im c
ta 120
o
K-20
o
VB c cho trong bng 4.3. Lp chng trnh nhp
nhng s liu ny v ni suy gi tr nhit cho mt su bt k nhp t
bn phm, thng bo ln mn hnh kt qu ni suy di dng nh sau:
DO SAU = .... M
NHIET DO = ..... DO C
Phn tch bi ton ny, ta thy c th chia n thnh ba khi: 1) Nhp
t bn phm mt gi tr su ti cn ni suy nhit ; 2) Nhp s liu
v su v nhit vo my tnh; 3) Ni suy gi tr nhit ti su
cn tm v in kt qu ln mn hnh.
Khi th nht rt n gin v quen thuc. thc hin khi th hai ta
t chc mt vng lp tun t nhp su v nhit ti cc im nt
(xem lu ca khi 2 trn hnh 4.7).
Bng 4.3. Phn b nhit nc bin (
o
C) theo su (m)
su 0 5 10 20 30 40 50 60
Nhit 24,31 24,26 24,20 24,18 24,13 24,05 23,98 23,89
su 70 80 90 100 120 140 160 180
Nhit 23,87 23,57 23,14 22,74 21,31 20,03 18,49 17,58
su 200 220 240 260 280 300 350 400
Nhit 16,66 15,61 14,73 13,97 13,47 12,93 11,40 10,18
su 500 600 700 800 900 1000 1200 1400
Nhit 9,39 8,56 8,49 7,83 7,27 6,71 6,16 5,44





Hnh 4.7. Lu khi 2 (th d 8) -
nhp chui su v nhit
N = 32
K = 1
K = K + 1
K > N
T
+
+
+
K
h

i

2
c H (K)
c T (K)

F


41
By gi ta c th ha thm khi th 3 v sau dn chng trnh
Fortran hon chnh ca bi ton ny.
Nh thy, cc gi tr quan trc nhit c cho ch ti 32 su
gi l 32 im nt. Mun ni suy gi tr nhit ti su bt k ta cn
tm xem su nm gia hai nt no. Gi su cn ni suy nhit l
0
h . Gi s su ny nm gia cc su nt
i
h v
1 + i
h , tc tha mn
bt ng thc kp:
1 0 +
s s
i i
h h h ,
trong i c th bin thin t 1 n 31. Nh vy, tm i , ta phi gi s
1 = i v kim tra bt ng thc kp trn y. Nu bt ng thc khng tha
mn, th ta tng i ln mt n v v tip tc cho ti khi bt ng thc tha
mn.
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

Hnh 4.8. Lu khi 3 (th d 8) - ni suy gi tr nhit v in kt qu
Khi tm c i , gi tr
0
t cn ni suy c th tnh theo cng thc ni
suy tuyn tnh nh sau:
i i
i i i
i
h h
h h t t
t t


+ =
+
+
1
0 1
0
) ( ) (
.
Tt c nhng iu va phn tch c th hin trn lu khi hnh
4.8. Di y l chng trnh ca bi ton
INTEGER N, I, K
REAL H0, T0, H (40), T (40)
C In li nhc v nhp su cn ni suy nhit
PRINT * , ' NHAP DO SAU XAC DINH NHIET DO'
READ *, H0
C In li nhc v nhp 32 cp gi tr su v nhit
N = 32
K = 1
5 PRINT *, NHAP DO SAU VA NHIET DO TANG , K
READ *, H(K), T(K)
K = K +1
IF (K .GT. N) GOTO 4
GOTO 5
C Ni suy gi tr nhit ti su H0
4 I = N - 1
IF (H0 .GT. H(N)) GOTO 1
I = 1
2 IF (H0 .GE. H (I) .AND. H0 .LE. H (I+1)) GOTO 1
I = I + 1

42
GOTO 2
1 T0 = T(I) + (T(I+1)-T (I))*(H0-H(I)) / (H(I+1)-H(I))
PRINT 3, H0
PRINT 6, T0
3 FORMAT (1X, DO SAU = , F6.1, M)
6 FORMAT (1X,NHIET DO = , F5.1, DO C)
END
Qua th d mc 4.1.3 v nhng th d chng ny ta thy vic p
dng quy trnh 5 bc gii bi ton v chin lc chia khi v chi tit ho
tng khi pht trin thut gii l mt cng c lp trnh rt hiu qu. Bi
ton d ln, c cu trc phc tp cng tr nn sng t, trc quan.
T thi im ny sinh vin cn rn luyn cho mnh thi quen p dng
phng php trn ngay c vi nhng bi tp n gin cng nh vi nhng
bi ton tng i phc tp khi thit k thut gii. Cn chn cng c gi
trnh hay lu l tu thch.
Bi tp
1. Hy th hin bng gi trnh hoc lu thut ton sp xp cc phn
t ca mng mt chiu theo th t gim dn.
2. Cho cc gi tr:
.TRUE. DONE 1 I 2 . 1 B 2 . 2 A = = = =
Xc nh gi tr ca cc biu thc lgic sau y:
1) A .LT. B 2) A B .GE. 6.5
3) I .NE. 5 4) A + B .GE. B
5) I .LE. I 5 6) .NOT. (A .EQ. 2 * B)
7) (A .LT. 10.0) .AND. (B .GT. 5.0)
8) (ABS (I) .GT. 2) .OR. DONE
9) A .LT. B .NEQV. DONE
3. Vit chng trnh tnh gi tr ca y theo cng thc

>
s
=
, 0 khi
; 0 khi

3
2
x x
x x
y
vi x cho trc.
4. Vit chng trnh c t bn phm mt tr s nhit Celsius, lit
k trn mn hnh ba phng n chuyn i: sang Fahrenheit, Kelvin v
Rankin. Theo ngi dng ch nh phng n chuyn i m in ra nhit
cho v kt qu chuyn i km cc k hiu nhit tng ng. Cc
cng thc chuyn i nh sau:
K R
C F
R F
5
9
F 32
5
9
R 67 , 459
T T
T T
T T
=
+ =
=


5. Vit chng trnh tnh tch phn
}
=
15
1
) ( dx x y I vi hm ) (x y cho
di dng bng cc gi tr thc nghim nh trong bng 4.4.
Bng 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. Vit chng trnh cho php c vo t bn phm mt tr s ca x
v xc nh tr s ca hm y bng cch ni suy tuyn tnh theo bng gi tr

43
thc nghim (th d bng 4.4).
7. H s nht phn t (
1 1
s cm g ) ca nc bin ph thuc vo
nhit t () v mui S (%o) theo bng 4.5. Vit chng trnh ni suy
tuyn tnh bng ny cho mt cp tr s bt k ca

t v S .
8. Vit chng trnh tnh s t theo cng thc khai trin chui sau y
vi sai s khng qu 0,0001:
....
9
1
7
1
5
1
3
1
1
4
+ + =
t

Bng 4.5
mui 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. Vit chng trnh cho php lin tc nhp t bn phm hai s
nguyn bt k, tm v in ln mn hnh c s chung ln nht ca nhng s
di dng thng bo:
USCLN CUA CAC SO: 36 VA 24 BANG 12
v kt thc khi no ngi dng nhp vo hai s bng nhau hoc mt trong
hai s bng 1.
10. Lp lu thut gii gii gn ng phng trnh ) (x f x =
bng phng php lp Siedel. Xp x ban u
0
x v sai s cho php c
c cho trc. Nu tm c nghim vi chnh xc cho th in gi tr
nghim km theo s bc lp, cn nu sau 100 ln lp m cha nhn c
nghim th thng bo ln mn hnh dng ch 'KHONG TIM DUOC
NGHIEM'. (Gi : Theo phng php lp Seidel, ngi ta th gi tr
0
x
tu chn vo biu thc ) (x f v phi ca phng trnh ) (x f x = tnh
ra gi tr
1
x gi l xp x bc 1, sau kim tra nu khc nhau gia
1
x v
0
x ln hn sai s cho php c th gi tr
1
x li c th vo v phi v tip
tc tnh
2
x (xp x bc 2)..., qu trnh ny tip din cho n khi chnh lch
gia hai bc xp x lin nhau khng ln hn c th ngi ta chp nhn gi
tr xp x cui cng lm nghim ca phng trnh ) (x f x = .


















44

Chng 5 - Cu trc lp vi lnh DO
Trong chng 4 xt s iu khin c thc hin thng qua nhng
lnh cho php chng trnh chn nhng nhnh khc nhau thc hin.
ng thi, ta cng mt s ln s dng kt hp lnh IF lgic v lnh
chuyn iu khin v iu kin GOTO t chc nhng vng lp dng:
n IF (Biu thc lgic) THEN
Lnh 1
Lnh 2
. . .
Lnh m
GOTO n
END IF
Cu trc ny gi l vng lp c iu kin (While Loop): Khi v chng
no biu thc lgic trong lnh IF c gi tr .TRUE. th nhm lnh t lnh 1
n lnh m ln lt thc hin, nhng lnh GOTO cui lun lun chuyn
iu khin ln nhn n v hnh thnh vng lp. Vng lp ny c nhng c
im sau:
1) Trng hp biu thc lgic c gi tr .FALSE. ngay t u, th qu
trnh lp s khng xy ra;
2) Trong nhm lnh t lnh 1 n lnh m bn trong vng lp nht
thit phi c mt lnh no lm thay i gi tr ca biu thc lgic thnh
.FALSE., vy s ln lp ph thuc vo gi tr khi u ca biu thc lgic
v s bin i gi tr ca n bn trong chnh vng lp.
Trong bi ny ta xt mt cu trc lp khc m iu kin v s ln lp
c xc nh ngay t khi bt u qu trnh lp vi vic s dng vng lp
DO (DO Loop). Trong chng tip sau s xt mt tnh nng quan trng
ca vng lp DO, gi l vng lp n, t chc nhp, xut cc bin c ch
s rt hay gp trong thc tin.
5.1. Vng lp DO
5.1.1. C php ca lnh DO v vng lp DO
Dng tng qut ca lnh DO nh sau:
DO inc , lim , ini ind n =
trong hng n l nhn ca lnh kt thc ca vng lp, ind l mt bin
s c dng nh l ch s m vng lp, ini gi tr u gn cho ch s
m, lim gi tr cui dng xc nh khi no vng lp DO kt thc v
inc gia s, gi tr c cng vo ch s m mi ln vng lp thc hin.
Nhng gi tr u, gi tr cui v gia s gi l cc tham s ca vng
lp. Nu trong lnh DO khng ghi gia s th ngm nh l 1. Khi gi tr ca
ch s m ln hn gi tr cui th iu khin c chuyn cho lnh ng
sau lnh kt thc vng lp. Lnh kt thc vng lp thng dng l lnh
CONTINUE, c dng tng qut l
n CONTINUE
trong nhn n ph hp vi nhn m lnh DO trn ch nh.
Vy dng tng qut ca vng lp DO c th vit nh sau:

45
DO inc lim ini ind n , , =
Lnh 1
. . .
Lnh m
n CONTINUE
Ta ly th d gii bi ton tnh tng ca 50 s nguyn dng u tin

=
+ + + + =
50
1
50 49 . . . 2 1
i
i
minh ha vng lp DO v so snh n vi vng lp While m ta xt
bi trc:
Vng lp DO Vng lp While
SUM = 0.0 SUM = 0.0

DO 10 NUM = 1, 50 NUM = 1

SUM = SUM + NUM 10 IF (NUM .LE. 50) THEN
10
CONTINUE SUM = SUM + NUM

NUM = NUM + 1

GO TO 10

END IF
Trong vng lp DO trn y ch s m NUM c khi xng bng
1. Vng tip tc lp cho n khi gi tr ca NUM ln hn 50. V tham s
th ba b qua nn NUM t ng tng ln 1 cui mi ln lp. Ta thy
rng vng lp DO vit ngn gn hn vng lp While, nhng c hai tnh
cng mt gi tr ca bin SUM. Tuy nhin, trong vng lp While mi ln
lp biu thc lgic lun phi c c lng li v mi ln bin NUM
c thay bi gi tr mi.. Trong khi vng lp DO s ln lp c
tnh trc trong lnh DO. l s khc nhau c bn ca hai loi vng lp.
Ngi ta cng c th dng c php sau y cho vng lp DO:
DO inc ini ind , , lim =
Lnh 1
. . .
Lnh m
END DO
5.1.2. Nhng quy tc cu trc v thc hin vng lp DO
1) Ch s m phi l mt bin s, bin c th l kiu nguyn hoc
thc, nhng khng th l bin c ch s.
2) Cc tham s ca vng DO c th l hng, bin hay biu thc
nguyn hoc thc. Gia s c th l s dng, s m, nhng khng th bng
khng.
3) Vng DO c th dng bt k lnh thc hin no khng phi l mt
lnh chuyn iu khin, lnh IF hay mt lnh DO khc lm lnh cui vng.
Lnh CONTINUE l mt lnh thc hin chuyn dng lm lnh cui vng;
mc d c th dng nhng lnh khc, nhng ni chung nn dng lnh
CONTINUE ch cui vng lp mt cch tng minh.
4) S kim tra kt thc lp thc hin u vng lp. Nu gi tr u
ca ch s m ln hn gi tr cui v gia s l s dng th s lp khng
din ra, cc lnh bn trong vng lp b b qua v iu khin chuyn ti
lnh ng sau lnh cui cng ca vng lp.
5) Khng c thay i gi tr ca ch s m bng mt lnh no khc
bn trong vng DO trong khi thc hin vng lp.

46
6) Sau khi vng lp bt u thc hin th nhng thay i cc gi tr
ca cc tham s khng c nh hng g ti s lp.
7) Nu gia s l m, s lp s kt thc khi gi tr ch s m nh hn
gi tr cui.
8) Ta c th thot ra khi vng DO trc khi n kt thc lp. Khi
gi tr ca ch s m s bng gi tr ngay trc khi thot. (Nhng ni
chung khng nn lm iu ny. Nu ta mun thot ra khi vng lp trc
khi n kt thc mt cch t nhin, th ta cu trc li vng lp theo kiu
vng lp While gi tnh cu trc ca chng trnh).
9) Thc hin xong vng lp, ch s m cha mt gi tr vt qu gi
tr cui.
10) Bao gi cng i vo vng lp thng qua lnh DO vng lp
c khi xng mt cch ng n. Khng bao gi c dng lnh GO
TO chuyn t bn ngoi vo bn trong vng DO.
11) S ln lp c th tnh bng cng thc
1
inc
ini lim
+
(

-

trong du ngoc vung ch s ct b thp phn ca thng s. Nu gi
tr ny m th s lp khng xy ra.
5.1.3. Th d ng dng vng lp DO
Th d 9: Lp vng lp bng lnh DO. Lp bng gi tr ca a thc
5 , 4 3
2
+ t trn on t t 1 n 10 vi bc 1 = At .
PRINT * , ' POLYNOMIAL MODEL'
PRINT *
PRINT * , 'TIME POLYNOMIAL'
DO 15 I = 1, 10
POLY = 3. * REAL (I) ** 2 + 4.5
PRINT 10 , I , POLY
10 FORMAT (1X, I2, 8X, F6.2)
15 CONTINUE
END
Th d 10: Tm phn t cc i ca chui s
10 2 1
..., , , b b b . Ta gii bi
ton ny theo thut gii biu din bi gi trnh sau:

1) vi i t 1 n 10
nhp
i
b
2)
1 max
b b
3) vi i t 2 n 10
nu
max
b b
i
> th
i
b b
max

4) in
max
b
T gi trnh ny d dng chuyn thnh chng trnh Fortran di y:
REAL B(10)
DO 2 I = 1, 10
READ *, B (I)
2 CONTINUE
BMAX = B (1)
DO 3 I = 2, 10
IF (BMAX .LT. B (I)) BMAX = B (I)
3 CONTINUE
PRINT *, ' B MAX = ' , BMAX
END

47
Th d 11: T chc vng lp vi bc s thp phn. In bng gi tr
hm ) ( sin x y = ti . 1 ...; ; 2 , 0 ; 1 , 0 ; 0 = x Ta a ra mt bin nguyn I sao
cho bin ny s nhn cc gi tr 1, 2, ..., 11 tng ng vi
. 1 ...; ; 2 , 0 ; 1 , 0 ; 0 = x Khi ) 1 ( 1 , 0 = i x .
DO 17 I = 1, 11
X = 0.1 * (I 1)
Y = SIN (X)
PRINT 10 , X, Y
10 FORMAT (20X, F4.2, 10X, E10.3)
17 CONTINUE
END
Hy lu rng y ta trnh s dng vng lp DO vi cc tham
s thc nh:
DO 15 X = 0.0 , 1.0 , 0.1
phng nga hin tng ct trong my tnh. Gi s rng gi tr 0.1 c
lu nh mt gi tr hi nh hn 0.1 trong h my tnh ang dng, mi ln
thm 0.1 cho ch s m, my c th thm t hn theo d nh. Ngoi ra,
trong trng hp ny ta c th thc hin lp qu mt mt ln theo d nh
v gi tr gii hn cui cng c th khng chnh xc bng 1.0.
5.2. Vng DO lng nhau
Vng DO c th c lng trong mt vng DO khc, cng ging nh
cu trc IF lng trong cu trc IF khc. Khi t chc cc vng DO lng hy
tun th nhng quy tc sau y:
1) Vng DO lng bn trong khng th dng chnh ch s m cng
vi vng DO ngoi cha n.
2) Vng DO lng phi kt thc bn trong vng DO ngoi.
3) Cc vng DO c lp nhau c th dng cng ch s m, thm ch
khi chng cng nm trong mt vng DO ngoi.
4) Khi mt vng DO lng bn trong mt vng DO khc, th vng DO
trong thc hin trn vn tng ln lp vng DO ngoi.
5) Mc d cc vng DO lng c th dng cng mt dng lnh cui
CONTINUE, nhng ta nn kt thc mi vng bng mt lnh CONTINUE
ring bit lm sng r chng trnh.
Di y dn mt s th d v cc vng DO ng v cc vng DO
sai:
a) Nhng vng 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 CONTINUE
5 CONTINUE DO 5 K = 2, 10, 2
10 CONTINUE . . .
15 CONTINUE 5 CONTINUE
15 CONTINUE
b) Nhng vng 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 CONTINUE
10 CONTINUE DO 15 K = 2, 10, 2
. . . DO 15 K = 2, 10, 2
5 CONTINUE . . .
15 CONTINUE 15 CONTINUE
20 CONTINUE

48
Th d 12: T chc vng DO lng nhau. Vit chng trnh nhp 15
phn t ca mng s thc X, sp xp li cc phn t mng theo th t gim
dn v in ln mn hnh cc mng c v mi thnh hai ct.
REAL X(15), Y(15)
N = 15
DO 3 I =1, N
READ * , X (I)
Y (I) = X (I)
3 CONTINUE
DO 2 I = 1, N1
K = I
DO 4 J = I + 1, N
IF (Y (K) .LT. Y (J)) K = J
4 CONTINUE
IF (K .NE. I) THEN
TG = Y (I)
Y (I) = Y (K)
Y (K) = TG
END IF
2 CONTINUE
DO 7 I = 1, N
PRINT 5 , X (I), Y (I)
7 CONTINUE
5 FORMAT (1X, 2F10.2)
END
Trong th d ny, ta thy c mt ba vng DO c lp nhau:
DO 3 I =1, N (dng th 3)
DO 2 I =1, N1 (dng th 7)
DO 7 I = 1, N (dng th 18)
do , chng c th dng cng mt ch s m l bin I. Bn trong vng
DO th hai, ta thy xut hin mt vng DO th t:
DO 4 J = I + 1, N (dng th 9),
vng DO ny l vng DO lng, n phi c ch s m ring v ta dng lnh
kt thc n l lnh
4 CONTINUE
nhn mnh s phn bit vi vng DO ngoi c lng kt thc l
2 CONTINUE
Th d 13: Tnh giai tha. Khi s nguyn N khng m, biu thc
! N gi l giai tha ca N . Cc gi tr ca giai tha c tnh theo quy
lut:

. . .
6 3 2 1 ! 3
2 2 1 ! 2
1 ! 1
1 ! 0
= =
= =
=
=

Gi tr ca giai tha ca s nguyn N cng cn c c lng bng cng
thc Stirling c dng:
N
e
N
N N |
.
|

\
|
= 2 ! t
trong 718282 , 2 = e . Vit chng trnh in cc gi tr giai tha ca cc s
nguyn t 0 n 10 theo cch tnh chnh xc v theo cng thc c lng
ca Stirling.
PRINT 4

49
4 FORMAT (1X, 'GIAI THUA CUA CAC SO TU 0 DEN 10'
* //1X, T3, 'N', T12, 'N!', T16, 'STIRLING''S FORMULA' /)
FAC = 1.
DO 7 I = 0, 10
IF (I .GT. 1) FAC = FAC * I
PRINT 5, I, FAC, SQRT (2.*3.141593*I)*(I / 2.718282)** I
5 FORMAT (1X, I2, F10.0, F20.0)
7 CONTINUE
END
Trong chng trnh ny, v giai tha c tnh lin tc vi cc s t 0
n 10, nn giai tha ca mt s sau c tnh bng tch ca s nhn
vi giai tha ca s trc n. Hy ch cch dng du gch cho to
xung dng khi in tiu : hai du gch cho u ch nh cho lnh PRINT
in xong dng ch GIAI THUA CUA CAC SO TU 0 DEN 10 th xung
dng hai ln, sau khi in dng tiu ct, du gch cho th ba gy xung
dng mt ln chun b in d liu theo dng lnh in trong vng lp DO.
Cc c t T3, T12, T16 trong dng lnh 4 FORMAT ch nh xut ch N
v tr 3, N! v tr 12 v 13, ch STIRLING'S FORMULA bt u v
tr th 16 ca dng tiu ct. Kt qu xut ra ca chng trnh ny s c
dng di y:
GIA TRI GIAI THUA CAC SO TU 0 DEN 10
N N! STIRLING'S FORMULA

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.
Bi tp
1. Tnh s ln lp trong cc trng hp dng lnh DO sau y. Gi
thit rng cc ch s m l nhng bin nguyn:
1) DO 5 I = 1, 8 2) DO 10 COUNT = -4, 4
3) DO 10 K = 15, 3, 1 4) DO 10 TIME = 5, 15, 3
5) DO 10 TIME = 50, 250, 25 6) DO 10 IND = 72, 432, 4
2. Xc nh gi tr ca bin nguyn IDEM sau khi nhng vng DO
di y thc hin xong. Gi s bin ny c gn gi tr khng trc mi
vng lp.
1) DO 5 I = 1, 8 2) DO 5 IDEX =0, 7
IDEM = IDEM + 1 IDEM = IDEM 2
5 CONTINUE 5 CONTINUE
3) DO 5 NUM = 8, 0, 1 4) DO 5 M = 5, 5
IDEM = IDEM + 2 IDEM = IDEM + (1) **M
5 CONTINUE 5 CONTINUE
3. Mt hn c nm vi tc ban u v v nghing mt gc u
so vi mt t. Nu b qua lc cn ma st vi khng kh th khong cch
d theo chiu ngang k t v tr ban u v cao h (tnh bng mt) ca n
ti thi gian t (giy) biu th bng cc phng trnh sau:

50
,
2
1
sin
, cos
2
t g t v h
t v d
=
=
u
u

trong g gia tc trng lc (
2
m/s 8 , 9 ). Vit chng trnh c vn tc
ban u v gc v sau in bng cc khong cch v cao ca hn
vi thi gian cch nhau 0,25 giy cho ti khi cao tr thnh gi tr m,
tc lc hn ri xung mt t.
4. Hy t chc li cc vng lp trong th d 13 bng cch s dng kt
hp lnh IF lgic v lnh chuyn iu khin v iu kin GOTO. Phn tch
s khc nhau ca hai cch t chc vng lp.
5. Gi s cc gi tr quan trc hai i lng x v y c cho nh
trong bng 4.4 (trang 79). Hy vit chng trnh tnh cc c trng thng
k: trung bnh
y x
m m , , phng sai
y x
D D , , lch bnh phng trung
bnh
y x
o o , , h s tng quan r gia hai i lng v lp phng trnh
hi quy dng:
b x a y + = ,
trong :
r a
x
y
o
o
= ,
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 = o
n
y
m
n
i
i
y

=
=
1
,
2 1
2
1
y
n
i
i
y
m
n
y
D

=

=
,
x x
D = o
y x
y x
n
i
i i
m m
n
y x
r
o o

=
1
1
.
6. Vit chng trnh tnh tr gn ng ca tch phn
}
=
b
a
xdx x I sin
2

theo cng thc hnh thang vi sai s khng ln hn 0,0001, xc nh s
hnh thang cn chia t sai s . Chng trnh cho php nhp t bn
phm cc cn tch phn v in kt qu ln mn hnh thnh cc dng nh sau
(th d nu 5 , 0 = a v 5 , 1 = b ):
A = 0.5
B = 1.5
SO HINH THANG = 16
TICH PHAN BANG = 0.9604
7. Vit chng trnh cho php nhp t bn phm mt gc a tnh bng
, i gc thnh raian v tnh gi tr gn ng ca a cos vi chnh
xc ti 0,0001 theo cng thc khai trin sau y:
...
! 6 ! 4 ! 2
1 cos
6 4 2
+ + =

a a a
a

In kt qu ln mn hnh thnh mt dng nh sau (th d):
A = 60.000 (DO) cos A = 0.5000 cos A theo hm chun = 0.5000
8. Vit chng trnh cho php nhp t bn phm hai s nguyn (nh
hn 10) tun t ch s dng v s ct ca mt ma trn. Sau tnh cc
phn t ca ma trn sao cho mi phn t l mt s nguyn gm hai ch s,

51
ch s u ch s th t dng v ch s sau ch s th t ct. In ma trn
ln gia mn hnh di dng bng s thng dng, thng ct, 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



















Chng 6 - File d liu v t chc file d liu
trong Fortran
6.1. Khi nim v file d liu v t chc lu tr d liu
cc chng trc, trong qu trnh thc hin chng trnh, khi no
cn ta s dng lnh READ nhp thng tin vo qua bn phm cho
chng trnh x l. Th d: khi chy chng trnh gii phng trnh bc hai
trong th d 1 chng 4, ta phi nhp ba h s c b a , , . Vi mt lng
thng tin khng nhiu, th d mt vi gi tr s hay mt vi k t vn bn,
th hnh thc giao tip ny gia ngi v my l bnh thng. Nhng khi
lm vic vi nhiu s liu, s l bt tin nu phi nhp d liu bng tay nh
vy mi ln chy chng trnh. Th d, trong bi ton xt th d 8
(trang 74) ta phi nhp t bn phm hai chui gi tr su v nhit
gm vi chc s liu cc tng khc nhau (64 s) ch ni suy mt gi tr
nhit . Ngoi ra, nu trong khi chy chng trnh m ta g nhm s liu
th phi chy li chng trnh t u v ng nhin phi nhp li s liu
mt ln na. Cng vic t ra rt mt mi v khng ti u.
V vy, ngi ta thng nhp d liu vo my mt ln v lu trong
my (a cng, a mm...) di dng cc tp (file). Trong trng hp ny
ngi s dng my phi dng mt phn mm son tho no nhp d
liu vo my v lu li di dng cc file. Ngoi ra, d liu (thng l
nhng gi tr s) cng c th do mt thit b quan trc c b phn ghi lu

52
vo a t, bng t, cng my tnh theo mt quy cch no sau ny
my tnh c th c c. D liu cng c th l kt qu tnh ton, x l
ca mt chng trnh my tnh, sau c ghi li thnh file ngi s
dng my xem nh l kt qu tnh ton phn tch, nhn xt, sau ny c
th in ra giy nh l mt bn bo co, hay mt chng trnh khc c v
tip tc x l, ch bin.
Trong chng ny chng ta s nghin cu nhng lnh ca Fortran
thao tc vi d liu, tm hiu nhng c im ca chng hnh thnh k
thut t chc lu d liu trong my tnh.
File d liu l file trong my tnh cha nhng thng tin c quan h
vi nhau theo mt ngha no m mt chng trnh c th c, hay truy
cp c nu ta mun chng trnh x l t ng nhng thng tin .
Chng trnh my tnh truy cp n cc file theo tn ca chng. Tn
file c t tun theo quy tc tn nh i vi cc bin. Ngoi ra tn file
cn c th c mt phn m rng, cn gi l ui file, gm t hp khng
qu ba ch ci hoc ch s. Phn m rng ny ng sau phn tn chnh
ca file v ngn cch bng du chm.
Trong thc hnh ngi ta thng t tn file bng tp hp mt s ch
ci v ch s c ngha gi cho ngi dng d nh l file cha nhng
d liu g. Th d, nu chng ta c nhng s liu quan trc v nhit
khng kh ca mt s thng mun lu trong mt s file th c th nn t
tn cc file l NHIET.1, NHIET.2 v.v... y ng mun dng cm
ch NHIET ch cc file lu tr s liu v nhit , cn phn ui ca
tn file nhm ch s liu v nhit nhng ring cho thng 1, thng 2... Cc
file trong my tnh li c th c ghi vo nhng th mc c tn khc
nhau. Trong mi th mc li c th gm mt s th mc con cng c tn
ca chng, hnh thnh mt cy th mc. Mt nhm file c quan h tng
i vi nhau theo ngha no c th ghi chung vo mt th mc, mt s
file khc th c th ghi trong nhng th mc khc. Kinh nghim cho thy
rng vic t chc lu cc file trong my tnh mt cch c h thng, khoa
hc s gim nh v nng cao hiu qu cng vic ca ngi s dng my
tnh.
Xt v phng din lu tr d liu lu di th ngi ta thng c
gng ghi trong file sao cho phong ph thng tin, p ng vic x l nhiu
mc ch. Th d, vi file cha nhng s liu cc tham s kh tng thu
vn mt trm quan trc no , th ngoi nhng gi tr s ca cc tham s
, nn c thm nhng thng tin v tn trm, ta trm, thi k quan
trc, c th ghi tn cc tham s quan trc mt cch tng minh...
Tu theo c im v kh nng x l ca chng trnh hay phn mm
m ngi ta ghi cc d liu trong file sao cho gn, d c, d chuyn i t
nh dng (format) ny sang nh dng khc, tc xu th chun ho nh
dng d liu nhiu chng trnh, nhiu phn mm c th c c.
Trong chng ny chng ta hc cch lm vic vi nhng file d liu
s, lm th no c thng tin t file d liu hin tn ti v lm th no
to ra file d liu mi trong chng trnh Fortran m chng ta vit.
6.2. Cc lnh nhp, xut d liu vi file
s dng cc file vi chng trnh ca mnh, chng ta phi dng
nhng lnh mi thao tc vi file v nhng m rng i vi mt s lnh
nghin cu trong cc chng trc. Nhng lnh ny truy cp n tn
file m ta gn khi to lp file. Nu ta to lp mt file d liu bng phn
mm son tho, ta gn tn cho file khi nhp d liu. Nu ta to ra mt file
bng mt chng trnh, ta phi dng mt lnh trong chng trnh cp cho
file mt tn nht nh.
Nu mt file chun b c dng trong chng trnh, file phi
c m ra trc khi c mt thao tc no vi n. Lnh m file OPEN
bo cho chng trnh mt s thng tin cn thit v file nh tn file, file

53
m ra c hay ghi d liu. Ngoi ra lnh OPEN gn file c m vi
mt s hiu file khi no chng trnh truy cp file th n s dng s hiu
. Dng tng qut ca lnh OPEN m ta s dng trong chng ny nh
sau:
OPEN (UNIT = biu thc nguyn, FILE = tn file, STATUS = vn bn)
trong biu thc nguyn ch nh mt s hiu thit b c gn cho file,
tn file ch nh mt tn m ta gn cho file khi to lp ra n v vn bn
STATUS bo cho chng trnh bit file m ra c hay ghi, file
tn ti hay chun b to ra. Nu l file c, ta ch nh
STATUS = 'OLD'
nu file m ra xut, ta ch nh
STATUS = 'NEW'
cn
STATUS = 'UNKNOWN'
cho php m file mi hoc ghi ln file tn ti.
Lnh OPEN phi ng trn nhng lnh READ hoc WRITE s dng
file.
c file d liu, ta s dng lnh READ m rng di dng:
READ (S hiu thit b , *) Danh sch cc bin
ghi thng tin vo file d liu ta s dng lnh WRITE. Ging nh
lnh PRINT, lnh WRITE c th s dng xut thng tin ra di dng
danh sch lit k v di dng ghi khng nh dng hoc c nh dng:
WRITE (S hiu thit b , *) Danh sch cc biu thc
WRITE (S hiu thit b , n ) Danh sch cc biu thc
trong n l nhn ca lnh FORMAT (nh dng) tng ng. Trong tt c
cc dng tng qut trn y s hiu thit b ph hp vi s hiu thit b
gn trong lnh OPEN. Du sao * ng sau s hiu thit b ch rng ta ang
s dng cch nhp v xut khng nh dng (khng format).
Cc my tnh c th c mt s thit b nhp hoc xut i km. Mi
thit b c gn mt s hiu. Th d, nu my in lazer c gn s hiu 8
th lnh in sau y s ghi gi tr ca cc bin X v Y ra my in laser
WRITE (8 , *) X, Y
a s cc h my tnh gn thit b nhp chun (bn phm) bng s 5
v thit b xut chun (mn hnh) bng s 6; nhng thit b ny c
dng ngm nh vi cc lnh READ * hay PRINT *. Do khng nn
dng nhng s hiu thit b gn trc ny cho cc file d liu. Ta c th
dng bt k nhng s hiu khc trong cc s nguyn t 1 n 15 ch n
v file.
Sau khi kt thc c hoc ghi file, cc file t ng ng li trc khi
chng trnh kt thc. Cng c nhng trng hp ta mun ch tm ng
hay tch mt file khi chng trnh ca mnh, v iu ny nn lm. Ta s
dng lnh ng file c dng tng qut nh sau:
CLOSE (UNIT = Biu thc nguyn)
Nhng lnh m, ng file, xut nhp thng tin vi file trn y cn c
nhiu tu chn b sung khc na, s c nhc ti nhng ni thch hp
trong cc mc v cc chng sau.
Di y tm tt mt s quy tc quan trng cn nh khi c d liu
t cc file:
1. Mi lnh READ s bt u c vi mt dng d liu mi, gi l

54
mt bn ghi (record). Nu cn tha cc gi tr dng trc, th nhng gi
tr b b qua khng c.
2. Nu mt dng khng cha cc gi tr so vi danh sch cc bin
cn c trong lnh READ, th cc dng d liu sau s t ng c c
cho n khi gi tr cho cc bin lit k trong lnh READ.
3. Mt lnh READ khng cn phi c tt c cc gi tr trn dng d
liu hin thi. Nhng n phi c tt c nhng gi tr trn dng trc gi
tr m ta mun n c. Th d nu mt file c 5 gi tr ghi trn mt dng v
ta cn cc gi tr th ba v th t, ta phi c qua cc gi tr th nht v th
hai t ti cc gi tr th ba v th t, nhng ta khng cn phi c gi
tr th nm.
s dng ng lnh READ, ta cn bit cc gi tr c ghi trong
file nh th no. Th d, gi s rng mi dng ca file d liu cha hai s
tun t biu th thi gian TIME v s o nhit TEMP v ba dng u
tin ghi nh sau:
0.0 28.3 (dng 1)
0.1 29.1 (dng 2)
0.2 29.5 (dng 3)
th lnh sau y s c c ng mt cp gi tr thi gian v nhit t
file d liu
READ (10, *) TIME, TEMP
Nhng s l sai nu ta dng hai lnh sau
READ (10, *) TIME
READ (10, *) TEMP
Thc hin hai lnh ny s c hai dng ca file d liu: gi tr ca
bin TIME s bng 0.0 v gi tr ca bin TEMP s bng 0.1. Trong trng
hp ny chng trnh vn lm vic bnh thng nhng kt qu x l s sai.
Th d ny minh ho s quan trng ca vic kim tra chng trnh ca
chng ta i vi d liu bit, trc khi s dng n vi file d liu khc.
6.3. K thut c cc file d liu
c cc d liu t file d liu, trc ht ta phi bit mt s thng
tin v file. Ngoi tn file, ta phi bit d liu g c lu trong file v c
th ghi nh th no: c bao nhiu s ghi trn mt dng v cc n v o
ca mi gi tr. Ta cng phi bit trong file c thng tin g c bit c ch
phn nh c s dng ghi trong file, hay xc nh khi no ta c
ht dng ghi cui cng. Thng tin ny quan trng, v nu ta thc hin mt
lnh READ sau khi tt c cc dng ghi trong file c c ht ri th s
b li thc hin chng trnh. Ta c th trnh li bng cch s dng
thng tin v file quyt nh xem loi vng lp no nn dng khi c file.
Th d, nu ta bit c 200 dng ghi trong file th ng nhin c th dng
vng lp DO thc hin 200 ln c v tnh ton vi s liu c c.
Nhiu khi ta khng bit trc c bao nhiu dng ghi trong file, nhng ta
bit dng ghi cui cng cha nhng gi tr c bit lm cho chng trnh
ca chng ta c th kim tra c. Th d, nu mt file cha cc s liu v
thi gian v s o nhit di dng hai ct, th c hai ct dng cui
cng nn cha hai s 999 k hiu rng y l dng cui cng ca file.
Trong trng hp ny ta c th lp vng lp While c cc dng s liu
v iu kin kt thc vng lp ny l hai gi tr thi gian v nhit u
bng 999. C trng hp ta khng bit c bao nhiu dng ghi v cui
file cng khng c cc gi tr c bit nhn bit. Khi ta phi nh n
cc tu chn (options) ca lnh READ.
6.3.1. S dng ghi c ch nh
Nu ta bit chc s dng ghi, c th dng vng lp DO x l file.
Khi to lp file, ngay dng ghi u, ta nn ghi mt s thng tin chuyn

55
dng v file, trong c s dng ghi (s s liu) trong file. V sau, mi ln
b sung s liu vo file d liu, ta cn sa li dng ghi ny. Khi x l file,
ta c s ny vo mt bin. Sau dng vng lp DO vi bin lm gii
hn cui ca vng lp c ht s liu trong file.
Th d 14: Cch c file c thng tin v s dng s liu dng u
file. Gi s file c tn l SOLIEU.DAT cha cc gi tr trung bnh ngy
ca nhit , m khng kh v p sut kh quyn ti mt trm quan trc
trong nhiu ngy. Mi dng ca file ghi tun t ba i lng trn cho mt
ngy. Ring dng th nht ghi tng s s liu (s ngy). on chng trnh
c s liu t file ny v tnh gi tr trung bnh ca ba i lng c th nh
sau:
INTEGER N, K
REAL ND, DA, AS, NDTB, DATB, ASTB
OPEN (UNIT = 2, FILE = 'SOLIEU.DAT', STATUS = 'OLD')
READ (2 ,*) N
IF (N .LT. 1) THEN
PRINT *, ' TRONG FILE KHONG CO SO LIEU '
ELSE
NDTB = 0.0
DATB = 0.0
ASTB = 0.0
DO 15 K = 1, N
READ (2, *) ND, DA, 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 , N, NDTB, DATB, ASTB
END IF
25 FORMAT (1X, 'SO NGAY = ' , I5 , ' ND =' , F6.2 , ' DA =' ,
* F6.2 , ' AS =' , F7.1)
CLOSE (2)
END
Trong th d ny, s s liu c c t dng th nht ca file v gn
vo bin N . Lnh IF kim tra nu 1 < N th thng bo khng c s liu;
nu c s liu th c ht tt c s liu v tnh cc gi tr trung bnh. V ta
thy bin N c dng lm tham s gii hn cui ca lnh DO.
6.3.2. Dng k hiu kt thc d liu
Nhng gi tr c bit dng nh du s kt thc ca file d liu
gi l k hiu kt thc (Trailer hay Flags). Khi to lp file, ta thm mt s
con s c bit trong dng ghi cui cng. V sau, nu ta thm hoc xa i
mt s s liu trong file, s khng phi sa li s ghi tng s s liu. Tuy
nhin, nu dng phng php ny nh du ht file, th phi cn thn
sao cho chng trnh ca chng ta khng c a nhng gi tr c bit
vo x l nh cc gi tr bnh thng khc. C th chng ta phi ghi ch v
iu ny dng u file. Ngoi ra, nu dng s liu bnh thng cha bao
nhiu gi tr th dng k hiu kt thc cng nn c chng gi tr c bit

56
m bo cho lnh c khng mc li chy chng trnh. Ngi ta
thng chn cc gi tr c bit sao cho chng khc hn vi nhng gi tr
bnh thng, d nhn ra khi xem bng mt cc s liu trong file, th d nh
s nguyn ln nht 32767, mt tp hp cc s chn nh 99999. Ta cng c
th dng cch ny nh du nhng gi tr khuyt trong cc chui s liu
(Flags - c hiu bo ht file hoc khuyt s liu).
Th d 15: Cch c file c dng s liu nh du ht file cui file
v c hiu bo khuyt s liu. Gi s file d liu vi ni dung nh trong
th d 14, nhng c to ra theo cch nh du kt thc d liu bng dng
gm ba cm s 99999. Ngoi ra, trong cc dng s liu bnh thng c
nhng gi tr khuyt, khng quan trc, c nh du bng con s 32767.
Chng trnh sau y cho php c v tnh ton ng cc tr s trung bnh
ca ba i lng:
INTEGER N1, N2, N3
REAL ND, DA, AS, NDTB, DATB, ASTB
OPEN (UNIT = 2, FILE = 'SOLIEU.DAT', STATUS = 'OLD')
N1 = 0
N2 = 0
N3 = 0
NDTB = 0.0
DATB = 0.0
ASTB = 0.0
60 READ (2, *) ND, DA, AS
IF (ND.NE. 99999 .OR. DA .NE. 99999 .OR. AS .NE. 99999) THEN
IF (ND .NE. 32767.) THEN
NDTB = NDTB + ND
N1 = N1 + 1
END IF
IF (DA .NE. 32767.) THEN
DATB = DATB + DA
N2 = N2 + 1
END IF
IF (AS .NE. 32767.) THEN
ASTB = ASTB + AS
N3 = N3 + 1
END IF
GOTO 60
END IF
CLOSE (2)
IF (N1 .EQ. 0 .AND. N2 .EQ. 0 .AND. N3 .EQ. 0) THEN
PRINT * , ' TRONG FILE KHONG CO SO LIEU '
ELSE
IF (N1 .GT. 0) PRINT * , ' NHIET DO TRUNG BINH = ',
* NDTB / REAL (N1)
IF (N2 .GT. 0) PRINT * , ' DO AM TRUNG BINH = ',
* DATB / REAL (N2)
IF (N3 .GT. 0) PRINT * , ' AP SUAT TRUNG BINH = ',
* ASTB / REAL (N3)
END IF
END
6.3.3. S dng tu chn END
Trng hp khng bit s dng d liu trong file v khng c dng
thng tin v du hiu kt thc d liu trong file, ta phi s dng mt k

57
thut khc. Lnh READ trong Fortran c mt tu chn gip kim tra s kt
thc ca file v r nhnh sang mt lnh c ch nh nu pht hin ht
file. Lnh READ vi tu chn ny c dng sau:
READ (S hiu file , * , END = n ) Danh sch cc bin
Khi no cn d liu trong file lnh ny thc hin ging nh lnh
READ (S hiu file , *) Danh sch cc bin
Tuy nhin, nu dng d liu cui cng c xong v ta thc hin
lnh READ vi ty chn END th thay v phm li thc hin lnh, iu
khin c chuyn ti lnh c nhn n trong tu chn END. Nu lnh
READ thc hin mt ln na sau khi t n cui file, th li chy
chng trnh s xut hin.
Lnh READ vi tu chn END thc s l mt dng c bit ca vng
lp iu kin While:
5 READ (10, *, END = 15) TEMP
SUM = SUM + TEMP
N = N +1
GOTO 5
15 PRINT * , SUM
Dng c bit ny ca vng lp iu kin ch nn thc hin khi no ta
khng bit s dng d liu v khng c dng k hiu bo ht d liu. Vic
chn k thut hp l c d liu t file ph thuc vo thng tin trong
file d liu.
Th d 16: S dng ty chn END. Vi file d liu ni dung nh
trong th d 14, gi s khng c dng u tin thng bo v di chui
d liu, ta thc hin chng trnh tnh cc tr s trung bnh nh sau:
INTEGER N, K
REAL ND, DA, AS, NDTB, DATB, ASTB
OPEN (UNIT = 2, FILE = 'SOLIEU.DAT', STATUS = 'OLD')
NDTB = 0.0
DATB = 0.0
ASTB = 0.0
N = 0
C Nu c ht s liu ty chn END = 15 s chuyn n lnh 15
5 READ (2, *, END = 15) ND, DA, AS
NDTB = NDTB + ND
DATB = DATB + DA
ASTB = ASTB + AS
N = N + 1
GOTO 5
15 CLOSE (2)

IF (N .EQ. 0) THEN
PRINT *, ' TRONG FILE KHONG CO DU LIEU'
ELSE
NDTB = NDTB / REAL (N)
DATB = DATB / REAL (N)
ASTB = ASTB / REAL (N)
PRINT 25 , N, NDTB, DATB, ASTB
END IF
25 FORMAT (1X, ' SO NGAY = ', I5 , ' ND =' , F6.2 , ' DA =' ,
* F6.2 , ' AS =' , F7.1)

END


58
6.4. To lp cc file d liu
to mi file d liu, chng ta s dng cc lnh OPEN v WRITE.
Tuy nhin, trc khi ta bt u vit cc lnh Fortran, cn cn nhc xem sau
ny c file d liu s s dng k thut no trong ba k thut m t
trong mc 6.3.
Khi to lp file vi dng k hiu bo ht d liu phi cn thn la
chn gi tr dng lm k hiu. Phi tin chc rng gi tr c chn lm gi
tr bo ht d liu khng th no nhm vi gi tr d liu thc s. C th
chng ta phi c ghi ch u file mi ngi dng file c bit.
Nu ta quyt nh to file vi thng tin bo tng s dng d liu trn
u file, th phi ch cp nht dng u file mi khi b sung hoc ct bt
s dng d liu. Nu s dng d liu khng ng, th hoc chng trnh
c s c s dng d liu t hn s dng thc c, hoc chng trnh c
c nhiu dng hn trong file thc c v dn n li trong khi chy chng
trnh.
So snh ba phng n t chc thng tin d liu trn, ta thy v
phng din ti u chng trnh th cch dng s bo s dng d liu
u file l tt hn c, v khi c c tng s dng s liu ta c th c ht
d liu bng vng lp DO, trong khi hai phng n sau chng trnh lun
lun phi kim tra biu thc lgic trong khi c lp. Ngoi ra rt c th c
nhng nhim v x l khng cn c ht file, m ch cn c s lng s
liu ca file dng u.
6.5. K thut tr gip tm li chng trnh
Tht v ngha nu mt chng trnh x l d liu m li c sai d
liu trong file. M iu ny khng phi l khng bao gi xy ra. Trng
hp s dng d liu thc t trong file c t hn s vng lp c d liu th
chng trnh s bo li chy chng trnh. Khi chng ta buc phi xem
li chng trnh hoc xem li file d liu v d dng pht hin li u.
Tuy nhin c nhng trng hp li chy chng trnh khng pht sinh,
nhng kt qu chng trnh cho ra sai. Nu kt qu sai v l, r rng th
chng ta cng bit v tm nguyn nhn chng trnh hay file d liu.
ng s nht l nhng trng hp c nhm d liu, c hi thiu d
liu. Khi chng trnh lm vic bnh thng, kt qu t ra chp nhn
c, nhng thc cht l sai hoc khng chnh xc. Do , trong lp trnh
phi rt thn trng vi file d liu.
Khi tm li mt chng trnh lm vic vi cc file d liu, iu rt
quan trng l kim tra xem cc lnh nhp, xut d liu c lm vic ng
n, chnh xc khng.
Trong thc t cc file d liu c th do bn thn ngi lp trnh xy
dng, cng c th ngi lp trnh nhn c trong qu trnh trao i d
liu vi ng nghip ca mnh. Trong nhng trng hp , trc khi vit
nhng lnh c file d liu phi nghin cu k cu trc ca file, c k ti
liu m t file, phi tin chc tuyt i nhng thng tin trong file l nhng
thng tin g, cch thc ghi trong ra sao th mi c file ng v chnh
xc. c bit ln u tin lm vic vi mt loi file phi kim tra k lng
kt qu c file.
Hy nn nh rng trong s nhng yu t ca Fortran th vn lm
vic vi file c th xem l vn kh nht v l th nht.
Vi cc file d liu nhp, ta nn th chng trnh vi mt file d liu
nh, sao cho ta c th in ln mn hnh tng dng d liu khi chng trnh
c vo. Hy kim tra xem chng trnh c b qua dng d liu, hoc mt
gi tr no khng. Nu file d liu c ghi s dng d liu, th hy in s
ra sau khi c.
Vi cc file d liu xut, sau khi to lp ra n, hy m ra xem li ni
dung file. Nn xem cu trc file c nh ta d nh khng, nhng gi tr c
ng l nm nhng ch n cn nm khng. Ngoi ra cn phi kim tra

59
file u ra trong nhiu phng n chy chng trnh. Rt c th trong mt
trng hp ta thy mi chuyn u n, nhng n trng hp khc th tnh
hnh khng phi nh vy. Ch c kim tra k th mi trnh c nhng li
tim n kh nhn bit trong chng trnh.
Bi tp
1. File d liu LAB1 cha nhnng thng tin v thi gian v nhit
trn mi dng nh sau:
0.0 26.5 (dng 1)
0.5 28.7 (dng 2)
1.0 29.1 (dng 3)
1.5 29.2 (dng 4)
2.0 29.4 (dng 5)
2.5 29.7 (dng 6)
Hy cho bit gi tr ca cc bin sau khi mi nhm lnh di y thc
hin. Gi s rng trc khi thc hin mi nhm lnh , th file d liu
c m v cha tng c mt lnh READ no c thc hin:
1) READ (1, *) TIM, TEM
2) READ (1, *) TIM1, TEM1, TIM2, TEM2
3) READ (1, *) TIM
4) READ (1, *) TIM1, TEM1
READ (1, *) TEM
READ (1, *) TIM2, TEM2
5) READ (1, *) TIM1
6) READ (1, *) TIM1, TIM2
READ (1, *) TEM1
READ (1, *) TEM1, TEM2
READ (1, *) TIM2
READ (1, *) TEM2
2. File d liu c tn CONDAO.TEM c ni dung ghi nh sau: Dng
th nht - tiu bo rng y l s liu v bin thin nhit khng kh
ti trm Cn o. Dng th hai - n v o (C). Dng th ba tun t ghi
cc tham s: s nm quan trc, thng, nm bt u v thng, nm kt thc
quan trc. Dng th t gm 12 ct ghi cc thng trong nm. Cc dng tip
sau tun t ghi nhng gi tr nhit ng vi tng thng thnh 12 ct,
trong nhng thng khuyt s liu c ghi bng s 9.9 (bng pha
di).
OSCILLATION OF TEMPERATURE OF THE AIR AT STATION
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
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
Hy lp on chng trnh c file ny v in li ln mn hnh ton b
d liu gc cng bin trnh nm trung bnh ca nhit khng kh dng
cui cng.

60
3. Lp on chng trnh c file d liu vi ni dung nh trong bi
tp 2 v ghi li thnh file cng tn, p dng k thut dng dng k hiu
nh du kt thc d liu trong mc 6.3.2.
4. Trong file tn l DATA1, mi dng ghi thi gian tnh bng giy v
nhit tnh bng C. Dng cui cng l dng bo ht d liu cha gi
tr 999.9 cho c thi gian v nhit . Hy c file d liu ny v sp xp
gi tr nhit theo th t gim dn. In chui nhit sp xp thnh
dng 10 gi tr mt dng. Gi s trong file c khng qu 200 dng d liu.
5. Trong file tn l DATA2, mi dng ghi thi gian tnh bng giy v
nhit tnh bng C. Khng c dng tiu v khng c dng bo ht
d liu. Hy c file d liu ny v in ra s gi tr nhit , gi tr nhit
trung bnh v s gi tr nhit ln hn trung bnh. Gi s trong file c
khng qu 200 dng d liu.
6. Vit chng trnh sa li file CONDAO.TEM trong bi tp 2 sao
cho mi dng s liu c ch nm quan trc tng ng u dng, gi tr
nhit trung bnh nm cui dng v gi tr nhit trung bnh nhiu
nm ca tng thng dng di cng.
7. Vit chng trnh tm nghim gn ng vi sai s cho php 0,0001
ca phng trnh 0 7 , 3
3
1
= +

x e e
x x
trong khong [0, 2] theo
phng php lp v in thng bo kt qu ln mn hnh vi 4 ch s thp
phn.
8. Vit chng trnh nhp mt s t nhin n nh hn 21, mt s thc
x bt k nh hn 1. Xc nh tng:
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
+ + +
+ + +
+ +
+ +
+ +
+
+
+
+

Chng 7 - S dng bin c ch s trong Fortran
Trong chng 2, mc 2.3 xt cch khai bo kiu bin c ch s v
khi nim mng trong Fortran, nu mt s c im v lu gi i vi cc
bin c ch s hay gi l bin mng.
Chng ny s cung cp thm phng php lu gi v x l nhng
nhm gi tr m khng cn cung cp tn mt cch tng minh cho tng gi
tr . Trong thc t, ta thng x l mt nhm cc gi tr t nhiu lin h
hoc hon ton khng lin h vi nhau. Trong trng hp ny, nu s dng
bin mng, c nhm d liu s c mt tn chung, nhng nhng gi tr ring
bit c ch s ring duy nht. K thut ny cho php ta phn tch d liu s
dng cc vng lp mt cch thun tin. Trong cc mc di y s b sung
thm nhng cu trc, nhng lnh ca Fortran cho php thao tc thun li
vi cc bin mng, k thut c d liu t file gn vo cc bin mng
v.v...
Mng l yu t quan trng v mnh m nht ca Fortran. Nu so snh
vi mt s ngn ng lp trnh khc, th d nh Pascal, ta thy trong Fortran
cho php khai bo nhng mng d liu rt ln v thao tc rt mm do.
Nhiu khi kh nng khai bo mng d liu ln lm cho thut gii ca
chng trnh x l tr nn n gin. Ngoi ra, s dng mng ng n v
thnh tho s gip chng ta vit nhng chng trnh hoc nhng on
chng trnh rt ngn gn.

61
7.1. Mng mt chiu
Trong lp trnh, mng mt chiu thng dng biu din mt dng
hoc mt ct d liu.
V phng din ngn ng, mt mng l mt nhm a ch lu gi
trong b nh my tnh c cng tn. Tng thnh phn ca mng c gi l
phn t mng v c phn bit vi phn t khc bi tn chung km theo
ch s trong cp du ngoc. Nhng ch s c biu din bng nhng s
nguyn lin tip nhau, thng l bt u (ch s u) bng s nguyn 1.
Nhng trng hp dng ch s u khc 1 thng lin quan ti tnh thun
tin thao tc cc cng thc ton hc hoc phng din thc tin. Th d
mun biu din cc h s a ca phng trnh hi quy nhiu bin lin h
gia i lng y v cc i lng
m
x x x ..., , ,
2 1

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

ta c th dng mng mt chiu vi tn A ch tt c cc h s, k c h s
t do, ca phng trnh hi quy ny v khai bo nh sau:
REAL A (0 : 20)
Trong trng hp ny phn t th nht A(0) ca mng A biu din h
s
0
a . Nh vy rt thun tin trong khi s dng cc cng thc ca i s.
Nu ta c tp hp s liu v lng ma nm trong th k ny ti mt
trm kh tng no , ta c th dng mng
REAL RAIN (1900 : 2000)
Trong trng hp ny, nu mun truy cp lng ma nm 1985, ta
ch nh phn t mng RAIN (1985).
c d liu vo mt mng mt chiu t bn phm hoc t file d
liu, ta s dng lnh READ. Nu mun c ton b mng, ta dng tn
mng khng c cc ch s. Ta cng c th ch nh nhng phn t c th
trong lnh READ, th d
READ *, B
READ *, B(1), B(2), B(3)
Cn ch rng, trong th d ny, nu mng B theo khai bo cha 3
phn t th hai lnh READ trn tng ng nhau. Nhng nu mng B
cha 8 phn t th c s khc nhau quan trng gia hai lnh READ trn
y, l v: lnh th nht c vo ton b 8 phn t ca mng B, trong khi
lnh th hai ch c cc gi tr ca ba phn t u tin.
Cc gi tr ca bin mng cn c th c vi vng lp DO n. Th d,
nu mun c 5 phn t u tin ca mng B ta s dng lnh READ nh
sau
READ *, (B (I) , I = 1 , 5)
Trong lnh ny, chng ta thy khng c mt t kha DO, ch c ch s
I ca bin mng B bin thin t 1 ti 5 vi gia s bng 1. Nh vy vi mt
lnh READ my c c lin tc 5 phn t ca mng B.
Th d 17: Mt tp hp 50 s liu lng ma nm c lu trong file
d liu, mi s liu mt dng. Gi s n v file l 9. Vit nhm lnh c
nhng s liu ny vo mng LMUA.
Cch 1: Dng lnh READ c tng s, nhng vng lp thc hin 50
ln v c ton b mng:
REAL LMUA (50)
DO 10 I = 1 , 50
READ (9, *) LMUA (I)
10 CONTINUE
Cch 2: Dng lnh READ khng cha ch s, n s c ton b
mng, tc c lin 50 phn t:

62
REAL LMUA (50)
READ (9, *) LMUA
Cch 3: Lnh READ cha vng lp n:
REAL LMUA (50)
READ (9, *) (LMUA (I), I = 1, 50)
7.2. Lnh DATA
Lnh DATA l lnh c t, thuc loi lnh khng thc hin. N dng
khi to gi tr ban u cho cc bin n v cc mng. Dng tng qut
ca lnh DATA nh sau
DATA Danh sch tn bin / Danh sch hng /
Theo lnh ny cc gi tr d liu trong danh sch hng nm trong hai
du gch cho c gn cho cc bin trong danh sch tn bin theo tun
t. Kiu ca cc gi tr d liu cng nn ph hp kiu ca cc bin, sao cho
my tnh khng phi chuyn i. Cc lnh DATA phi t trc cc lnh
thc hin, tc gn u chng trnh, ngay sau nhng lnh m t kiu nh
lnh REAL, INTEGER, LOGICAL, DIMENSION...
Th d, lnh
DATA A , B, C , I / 0.0 , 32.75 , 2.5 , 10 /
s khi to gi tr 0,0 cho bin A, 32,75 cho bin B, 2,5 cho bin C v 10
cho bin I.
Ch rng lnh DATA ch khi to gi tr u chng trnh. Lnh
DATA khng th s dng trong vng lp ti to gi tr cc bin. Nu
cn ti to cc bin, ta phi s dng cc lnh gn. Lnh DATA cng khng
th nm trong chng trnh con.
Nu cc gi tr lp li trong danh sch hng, ta c th dng cch vit
lnh DATA ngn gn. Th d, nu mun khi to gi tr 1 cho cc bin I, J,
K v gi tr 0,5 cho cc bin X, Y, Z, th hai lnh sau y tng 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 /
Lnh DATA c th s dng khi to mt hoc mt s phn t ca
mng. Th d, cc lnh sau khi to tt cc cc phn t ca mng J v
TIME:
INTEGER J (5)
REAL TIME (4)
DATA J, TIME / 5*0, 1.0, 2.0, 3.0, 4.0 /
Nhm lnh
REAL HOUR (5)
DATA HOUR (1) / 10.0 /
ch khi to mt gi tr ca phn t u tin ca mng HOUR, cc phn t
t th 2 n 5 ca n cha bit.
C th s dng vng DO n trong lnh DATA. Th d:
INTEGER Y (100)
DATA (Y (I), I = 1, 50) / 50*0 /
khi to gi tr 0 cho 50 phn t u ca mng Y, 50 phn t cn li cha
c khi to.
7.3. Mng hai chiu
Cc lnh m t mng hai chiu ging nh vi mng mt chiu, khc
bit duy nht l dng hai tham s kch thc mng. Mi phn t mng
c truy cp bi tn mng vi hai ch s nm trong cp du ngoc.

63
Trong thc t lp trnh ngi ta thng biu din cc ma trn, cc
bng d liu gm mt s ct, mi ct c mt s dng gi tr thnh mng
hai chiu.
Th d, ma trn cc h s ng trc cc n ca h phng trnh i
s tuyn tnh ) 10 .. 1 , 10 .. 1 (
,
= = j i a
j i
thng biu din bng mng hai chiu
A vi lnh m t nh sau
REAL A(10, 10)
Cc gi tr quan trc tng gi v mc nc bin trong vng mt thng
c th biu din thnh mt bng s liu gm 31 dng, 24 ct. Cc dng
tun t ng vi cc ngy trong thng. Cc ct tun t ng vi 24 gi trong
mt ngy. Trong Fortran, bng s liu ny c th biu din bng mng hai
chiu
REAL SLEV (31, 24)
theo cch ny, khi thao tc vi mc nc ti mt ngy, gi c th no ,
ngi ta ch cn ch nh phn t SLEV (I, J), vi ch s th nht I ch
ngy, ch s th hai J ch gi trong ngy . Khi cn tnh mc nc trung
bnh ngy, th d ca ngy th nht trong thng, ngi ta ch cn cng tt
c cc phn t vi ch s I = 1:
) 24 , 1 ( SLEV ... ) 2 , 1 ( SLV ) 1 , 1 ( SLEV + + +
S dng cc mng rt tin li khi lp chng trnh phn tch, tnh ton
vi nhng ma trn, nhng tp s liu ln.
Th d 18: Lp ma trn n v (ma trn vung vi cc phn t trn
ng cho chnh bng 1, cn tt c cc phn t khc bng 0). Th d ma
trn kch thc 3 = n , tc c 3 dng v 3 ct, s l
(
(
(

1 0 0
0 1 0
0 0 1
.
on chng trnh Fortran thc hin vic ny s nh sau:
INTEGER IDMAT(3,3)
DO I = 1, 3
DO J = 1, 3
IF (I .EQ. J) THEN
IDMAT (I, J) = 1
ELSE
IDMAT (I, J) = 0
ENDIF
END DO
END DO
Th d 19: c cc gi tr mng hai chiu t file d liu. Gi s c
cc s liu v lu lng nc trung bnh nm ca mt s con sng. Nhng
s liu ny ghi trong file SONG.LLG. Dng trn cng ca file ghi hai s
nguyn tun t ch s nm quan trc v s con sng. Sau c n dng,
mi dng s liu tun t ng vi mt nm, trong mi dng c m gi tr,
mi gi tr ng vi mt con sng. Ta dng mng hai chiu biu din tp
s liu ny, ch s th nht ca mng ch th t nm, ch s th hai ch th
t con sng. on chng trnh sau y cho php c s liu t file, tnh
lu lng trung bnh ca tt c cc sng v in kt qu ln mn hnh.
REAL SLL (100, 15), TB (15)
OPEN (1, FILE = 'SONG.LLG', STATUS = 'OLD')
READ (1, *) N, M

64
DO I = 1 , N
READ (1, *) (SLL (I , J) , J = 1 , M)
ENDDO
CLOSE (1)
DO J = 1, M
TB (J) = 0.0
DO I = 1, N
TB (J) = TB (J) + SLL (I, J)
ENDDO
ENDDO
PRINT 4, (TB (J) , J = 1 , M)
4 FORMAT (1X, 15 F8.0)
Hy lu cch c s liu lng ma trong chng trnh ny. Nh
m t cch ghi s liu trong file, lng ma c ghi thnh n dng, mi
dng ng vi mt nm, trn mi dng li c m gi tr lng ma ng vi
m con sng. Mun c lin tc s liu trong n nm ta dng hai vng
DO lng nhau:
DO I = 1 , N
READ (1, *) (SLL (I , J) , J = 1 , M)
END DO
trong vng DO bn trong l vng DO n vi ch s J chy t 1 n M.
Bng vng lp n ny ta c c m gi tr s thc ng vi m sng
trn cng mt dng.
Mt cch tng qut, y l cch c thng dng nht bng mt
lnh c c th nhn lin tip tt c cc phn t trn mt hng ca ma trn.
Nu ta dng hai vng lp thng thng:
DO I = 1, N
DO J = 1, M
READ (1, *) SLL (I, J)
END DO
END DO
th s phm sai lm, bi v hai vng DO ny tng ng vi m n lnh
READ, v nh ta bit, mi ln lnh READ thc hin xong th u c
file s xung dng mi. Nh vy my s c m n dng trong khi trong
file ch c n dng s liu.
Ta pht trin cch dng vng DO n cho trng hp trn cng mt
dng trong file c hai i lng. Th d, cng l file s liu nh m t
trong th d 19, nhng trn mi dng ngoi m gi tr lu lng cn c m
gi tr c ng vi m con sng. Trong trng hp ny ta khai bo thm
mt bin DD (100, 15) v lnh c c lu lng v c s l:
DO I = 1 , N
READ (1, *) (SLL (I , J), J = 1 , M) , (DD (I , J), J = 1, M)
END DO
Trng hp u mi dng c ghi nm quan trc, ta s dng
DO I = 1 , N
READ (1, *) NAM (I), (SLL (I, J) , J = 1, M) , (DD (I , J) , J = 1, M)
END DO
7.3. Mng nhiu chiu
Fortran cho php s dng cc mng vi s chiu ti a bng 7. Chng
ta c th hnh dung mng ba chiu ging nh hnh hp ch nht to bi
nhiu hnh lp phng con. Cc phn t ca mng ba chiu ging nh
nhng hnh lp phng con, xp thnh mt s lp, mi lp c mt s hng
v mi hng c mt s hnh lp phng. T ta biu din v tr ca mt

65
phn t no nh l v tr ca hnh lp phng con: th t ca n trong
mt hng bng ch s I, th t hng bng ch s J v th t lp - ch s K.
Th d, mng ba chiu c th nh ngha bng lnh:
REAL T (3, 4, 4)
Nu s dng tn mng ba chiu khng c ch s, ta x l mng vi
ch s th nht bin thin nhanh nht, ch s th hai bin thin nhanh th
hai v ch s th ba bin thin chm nht. Th d vi mng T, hai lnh c
sau y l tng ng:
READ*, T
READ*, (((T(I, J, K), I =1, 3), J=1, 4), K=1, 4)
Tng t ta hnh dung mng bn chiu nh l mt chui cc mng ba
chiu...

Hnh 7.1. Biu din mng ba chiu trong bin
Trong kh tng thy vn mng ba chiu thng c dng biu
din nhng s liu quan trc trong khng gian ba chiu. Th d, ta c th
biu din trng p sut nc bin ti cc im nt kinh, v tuyn ca mt
min hnh ch nht trn mt bin v mt s tng su. Trong trng hp
ny c th quy c ch s th nht ca mng i bin thin theo trc x
hng sang pha ng, ch s th hai j bin thin theo trc y hng ln
bc, cn ch s th ba k bin thin theo trc z hng thng ng t mt
xung y bin ch gi tr p sut ng vi kinh , v v mt tng su
no trong bin (hnh 7.1). Trong kh tng hc, hai ch s u hon ton
tng t, cn ch s th ba ca mng ba chiu bin thin theo trc z
hng thng ng t mt t ln trn, c th dng ch quan trc ti mt
tng cao.
Theo quy c th mng hai chiu l mt trng hp ring ca
mng ba chiu dng biu th trng yu t kh tng thy vn no
trn mt min phng hnh ch nht, th d trng kh p mt t, trng
nhit nc mt bin... Mng bn chiu c th dng biu din nhng
trng ba chiu va m t trn nhng ti nhiu thi im t khc nhau.
Trong thy vn, ch s th nht ca mng ba chiu thng dng biu
din yu t quan trc ti cc su khc nhau ca mt mt ct, dc theo
sng ta c c th c nhiu mt ct c biu din bng bin thin ca ch
s th hai, yu t quan trc li c th bin i theo thi gian v c ch
nh bng ch s th ba. Nu xt nhiu sng cng mt lc, ta cn n mng
bn chiu.
Chnh l trong kh tng, hi dng hc chng ta c bit ti nhng
m hnh d bo thi tit hay hon lu v nhit mui i dng thng s
dng cc trng ba chiu ban u v pht sinh ra nhng trng bn chiu
vi kch thc khng l (do phn gii khng gian cao v bc thi gian
m phng, d bo nh) phi lu tr v qun l trong my tnh.
Cc mng c s chiu ln hn bn c th l kh hnh dung trc quan

66
hn. Tuy nhin, nu chng ta quy c r rng, nht qun cc ch s th
nht, th hai... tng ng vi bin s no trong thc t v nm vng quy
tc bin thin ch s ca mng th vn c th truy cp, thao tc ng vi
mt phn t bt k ca mng trong chng trnh.
Th d 20: Tnh tn sut ma. S liu gi tr ngy ca cc yu t kh
tng thy vn ti trm Hn Du c lu trong file HONDAU.MAT c
quy cch ghi nh sau: Dng trn cng ghi tn trm. Dng th 2 c hai s
nguyn vit cch nhau ln lt ch tng s ngy quan trc v s yu t
c quan trc. Dng th ba c 6 s nguyn vit cch nhau ln lt ch
ngy, thng, nm u v ngy, thng, nm cui quan trc. Dng th 4 l
tiu ct lit k tn tt c cc yu t c quan trc, mi tn c ghi vi
rng 8 v tr. Cc dng tip theo ln lt ghi gi tr ca cc yu t, mi
dng mt ngy. Gi s lng ma ngy ghi ct s 6. Vit chng trnh
c v tnh xem trong sut thi gian quan trc c bao nhiu ln ma ko
di 1 ngy, bao nhiu ln ma ko di 2 ngy lin, bao nhiu ln ma ko
di 3 ngy lin...

REAL X (5000)
INTEGER TS (5000)
OPEN (1, FILE = 'HONDAU.MAT', STATUS = 'OLD')
READ (1, *)
READ (1, *) N
READ (1, *)
READ (1, *)
DO I = 1, N
READ (1, *) (X (I), J = 1, 6)
END DO
CLOSE (1)
TS = 0
I = 1
100 IF (I .GT. N) GOTO 15
IF (X (I) .EQ. 0.0) THEN
I = I + 1
GOTO 100
ELSE
J = 1
300 IF (I .EQ. N .OR. X(I + 1) .EQ. 0.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
15 I = N
16 IF (TS (I) .EQ. 0) THEN
I = I - 1
GOTO 16
ELSE
DO N = 1, I
PRINT (2I5), N, TS (N)
END DO
END IF
END
Th d 21: Tnh ma trn tng quan ca tp s liu quan trc cc
yu t kh tng thy vn. Vi file s liu trong th d 20, vit chng
trnh c cc thng tin cn thit trong file v in ma trn tng quan ca cc
yu t quan trc ln mn hnh.
Ta thy, mt cch t nhin mi chui gi tr ngy ca mt yu t quan
trc c th c biu din thnh mng mt chiu, ch s mng s bin thin
theo th t ngy quan trc. Tuy nhin, ta c th gp tt c cc mng mt

67
chiu thnh mt mng hai chiu vi ch s th hai bin thin theo th t
yu t quan trc: 1, 2, ... Bng cch dng mng hai chiu X (5000, 15) nh
trong chng trnh di y s rt thun tin cho vic s dng cc vng lp
DO vi tham s m ca vng DO ng thi l ch s ca mng.
REAL X (5000, 15), MX (15), DX (15) , R (15, 15)
OPEN (1, FILE = 'HONDAU.MAT', STATUS = 'OLD')
READ (1, *)
READ (1, *) N, M
READ (1, *)
READ (1, *)
DO I = 1, N
READ (1, *) (X (I, J), J = 1, M)
END DO
CLOSE (1)
C Tnh trung bnh v lch qun phng ca M yu 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 Tnh ma trn tng 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
END DO
DO I = 1, M
R (I, I) = 1.0
END DO
DO I = 1, M
PRINT 4, (R (K, I), K = 1, I - 1), (R (I, J), J = I, M)
END DO
4 FORMAT (<M>F6.2)
END
7.4. Nhng iu cn ch khi s dng cc mng
Trong cc mc trc ca chng ny ta hc s dng mt mng -
mt nhm cc a ch lu gi cc gi tr c mt tn chung, nhng phn bit
vi nhau bi mt hoc mt s ch s. Mng l mt yu t mnh m nht
trong Fortran, v n cho php lu gi mt tp hp d liu ln d x l
trong chng trnh ca chng ta.
Mc d vi tin li c bn nh trn, cc mng cng thng c th gy
ra nhng li mi. Mt khi bn d nh s dng mng m t d liu, hy
t hi ta c cn s dng d liu ny nhiu ln khng v d liu ny c
cn phi lu trc khi ta s dng n khng. Nu cu tr li cho cc cu
hi trn l khng, nn hn ch dng mng, m dng cc bin n.
Mt khi mng l cn thit, nhng chng trnh lm vic sai, trc ht
hy kim tra nhng iu sau y:
+ Kch thc mng: M t mng phi ch ra s phn t ti a d nh
lu gi trong mng. Mc d chng ta khng nht thit phi dng ht tt c
cc phn t ca mng, nhng chng ta khng c s dng nhiu phn t

68
hn so vi s phn t m t phn khai bo ca chng trnh. Vy vi
mi bi ton c th nu cn s dng mng, hy hnh dung trc kch thc
ti a ca mi chiu ca mng khai bo cho ng, c th hi d ra mt
t, nhng d nhiu qu s tn b nh, cn khai bo thiu th khi chy
chng trnh s pht sinh li lgic.
+ Ch s mng: Hy kim tra tng ch s, c bit nhng ch s l
biu thc s hc, tin chc rng n l s nguyn nm trong gii hn ng
n, khng vt ra ngoi khong bin thin ca ch s. Nu ch s mng
vt ra ngoi gii hn cho php th hy xem cc bin trong biu thc s
hc tnh ch s c b nhm khng. C th dng lnh in ln mn hnh
theo di din bin ca ch s.
+ Vng lp DO: Nu bn dng ch s mng lm tham s m ca
vng lp DO, hy tin chc rng bn s dng ng tn bin trong chng
trnh ca bn. Th d, nu trong mt vng lp DO vi mng ba chiu bn
nh cho ch s th ba ca mng (K) bin thin, hy kim tra xem bn c
dng I thay v K khng. Li thng gp l ch s o ngc: Hy t hi
ch ny cn B (K, L) hay B (L, K)? Hy c thc v t tn cho ch s.
Tp qun chung l s dng bin I cho ch s th nht, J - th hai v K - th
ba; nh vy rt tin li khi s dng cc vng lp lng nhau v ch s m
ca vng lp DO ng thi l ch s mng.
Bi tp
1. File d liu vi n v file 9 cha 28 s liu lng ma ngy trong
bn tun l lin tip, ghi thnh 4 dng, mi tun mt dng. Nhm lnh sau
REAL DMUA (28)
DO I = 1, 28
READ (9, *) DMUA (I)
END DO
c c ng cc s liu lng ma ng vi tng ngy khng. Nu khng
ng, ch ra phng n c ng.
2. Vit chng trnh cho php c t bn phm ba s nguyn, kim tra
xem ba s nguyn c th ch ngy, thng, nm hp l khng. Kt qu
kim tra ghi thnh dng thng bo thch hp ln mn hnh.
3. Vit chng trnh c mt chui Y gm 20 gi tr thc t file
EXPER, trong mi gi tr ghi trn mt dng. Lp mt chui Z gm 20
gi tr tho mn cc iu kin:
) 19 .. 2 (
3
Y Y
;
1 i i 1
20 20 1 1
=
+ +
= = =
+
i
Y
Z Y Z ; Y Z
i
i

In chui xut pht v chui mi cnh nhau thnh bng hai ct.
4. Vit chng trnh dc file RAIN cha bng d liu lng ma gm
12 dng (mi dng tng ng mt thng) v 5 ct (mi ct tng ng mt
nm trong cc nm 1978-1982). Xc nh v in bng thng tin sau y:
LUONG MUA TRUNG BINH
1978 - XXX.XX
1979 - XXX.XX
1980 - XXX.XX
1981 - XXX.XX
1982 - XXX.XX
LUONG MUA CUC DAI
THANG XX NAM XXXX
LUONG MUA CUC TIEU
THANG XX NAM XXXX
5. File d liu tn l SCS1.TEM ghi s liu v trng nhit nc
bin trung bnh thng 1 vng bin ng c quy cch ghi nh sau:

69
- Dng th nht gm tun t cc tham s: kinh tuyn bin pha ty,
kinh tuyn bin pha ng, v tuyn bin pha nam, v tuyn bin pha bc
(cc s thc) ca vng, bc li theo phng ty ng, bc li theo
phng bc nam (o bng pht, cc s nguyn) ca li.
- Dng th hai ghi kch thc ca ma trn s liu (cc s nguyn)
theo dng (phng bc nam), theo ct (phng ty ng), theo chiu su t
mt bin xung di v mt s nguyn 32767 ch gi tr khuyt ca s
liu nhit .
- Phn cn li gm: mt s nguyn ch tng su quan trc (mt) ghi
mt dng; sau l mng s liu nhit ng vi tng ghi thnh cc
dng t bc xung nam, cc ct t ty sang ng (cc s thc khng dnh
nhau). Tip tc nh vy cho n tng su di cng.
Hy vit chng trnh c d liu, chn ra mt profil nhit cho
im bt k thuc min tnh. Kt qu ghi ln mn hnh nh sau:
KINH DO XXX.XX
VI DO XX.XX
TANG (m) NHIET DO
XXXX XX.XX
XXXX XX.XX
. . . . .
6. Cho file d liu SCS1.TEM m t trong bi tp 5. Hy vit
chng trnh c d liu v tnh cc gi tr nhit trung bnh ca tng
tng quan trc v gi tr nhit trung bnh ton bin k t tng mt cho
ti tng quan trc di cng.
7. Cho file d liu SCS1.TEM m t trong bi tp 5. Hy vit
chng trnh c d liu v in ra file SECT17.TEM mt bng s liu nhit
nc ca mt ct dc v tuyn 17N vi quy cch nh sau:
- Dng trn cng l tiu :
"Phn b nhit nc trn mt ct dc v tuyn 17".
- Dng th hai lit k cc kinh t ty sang ng.
- Cc dng tip di ghi su tng quan trc mi u dng tng
ng, sau l cc gi tr nhit nc (ly n hai ch s thp phn) ghi
thng ct vi nhng kinh tng ng lit k dng th hai. Nhng
gi tr khuyt (32767) ghi bng s 99.99 hoc nm du hoa th (*****).



















70

Chng 8 - Chng trnh con loi hm
Khi xy dng chng trnh gii mt bi ton tng i phc tp, ta s
thy chng trnh thng di v kh c. Nhiu khi cng mt s thao tc
nh nhau c thc hin lp li mt s ch trong mt chng trnh cng
lm cho chng trnh ca chng ta tr thnh di hn. Nhng vn ny c
th khc phc bng cch s dng nhng chng trnh con (subprogram) -
l mt nhm cc lnh c tch ring ra v sau s c gi thc hin
khi cn trong chng trnh ca chng ta. Trong Fortran c hai loi chng
trnh con: chng trnh con loi hm (function) v chng trnh con loi
th tc (subroutine). Trong mc 2.4 chng 2 gii thiu v thnh thong
trong cc bi khc chng ta s dng mt vi hm chun hay hm ring
ca Fortran. Th d, khi tnh sin ca mt gc ta dng hm SIN, khi cn gi
tr tuyt i ca mt i lng ta dng hm ABS... Nhng hm ny thc
cht cng l nhng chng trnh con, nhng chng c xy dng sn
(hm chun) v nm trong b bin dch, chng ta ch vic gi trc tip
trong chng trnh khi cn. Trong chng ny s tm tt v nhng c
im ca cc hm chun. Sau ta hc cch t xy dng nhng chng
trnh con loi hm gii quyt nhng bi ton ring ca mnh. Nhng
chng trnh con loi th tc s xt trong chng 9.
8.1. Cc hm chun
Mt hm tnh ra mt gi tr, th d cn bc hai ca mt s hay gi tr
trung bnh ca mt mng. Fortran c rt nhiu hm chun (xem danh sch
cc hm chun trong ph lc 1).
Nhng c im chnh ca cc hm chun l:
1) Tn hm v cc gi tr u vo (cc i s) cng th hin mt gi
tr.
2) Mt hm khng th c s dng v tri ca du = trong mt
lnh gn.
3) Tn ca hm chun xc nh kiu d liu ca u ra ca hm. Th
d, nu tn bt u bng mt trong cc ch ci t I n N th gi tr hm l
s nguyn.
4) Cc i s ca hm thng cng kiu nh hm, tr mt s ngoi l
(xem ph lc 1).
5) Cc i s ca mt hm phi nm trong cp du ngoc n.
6) Cc i s ca mt hm c th l cc hng, bin, biu thc hay cc
hm khc.
7) Cc hm t sinh (generic function) chp nhn nhiu kiu i s v
tr li gi tr hm cng kiu vi i s. (Th d hm ABS(X) nu i s X
l s nguyn th gi tr hm ABS(X) cho ra gi tr tuyt i l s nguyn,
nu X thc th gi tr hm s l thc.)
Th d 22: c t bn phm mt s nguyn. Kim tra xem n l s
chn hay s l v in ra thng bo thch hp. Ta c th s dng hm chun
MOD (I, J) trong bi tp ny. Hm MOD c hai i s nguyn I v J. Hm
ny tr v s d ca php chia I/J. Vy chng trnh gii bi tp ny c th
nh sau:
PRINT *, ' NHAP MOT SO NGUYEN '
READ *, K
IF (MOD (K, 2) .EQ. 0) THEN

71
PRINT 5, K
ELSE
PRINT 8, K
END IF
5 FORMAT (1X, I5, ' LA SO CHAN')
8 FORMAT (1X, I5, ' LA SO LE')
8.2. Cc hm chng trnh con
Trong thc t lp trnh gii cc bi ton khoa hc k thut nhiu khi
i hi nhng hm cha c trong danh sch cc hm chun ca Fortran.
Nu tnh ton hay lp li thng xuyn v i hi mt s bc, ta nn thc
hin nh l mt hm thay v mi ln cn li phi vit ra cc lnh tnh ton.
Fortran cho php chng ta t xy dng nhng hm ca ring mnh theo hai
cch: hm lnh (statement function) v hm chng trnh con (function
subprogram). Nu tnh ton c th vit trong mt lnh gn duy nht, th ta
s dng hm lnh; ngc li, nu phi thc hin nhiu tnh ton hay thao
tc mi dn ti mt gi tr kt qu, th ta dng hm chng trnh con.
8.2.1. Hm lnh
Dng tng qut ca hm lnh l
Tn hm (Danh sch i s) = Biu thc
Nhng quy tc phi tun th khi vit v dng hm lnh:
1) Hm lnh c nh ngha u chng trnh, cng vi cc lnh
khai bo kiu d liu.
2) nh ngha hm lnh gm tn ca hm, sau n cc i s nm
trong cp du ngoc n v bn tri ca du bng; biu thc tnh gi tr
hm v bn phi ca du bng.
3) Tn hm c th khai bo trong lnh khai bo kiu; nu khng th
kiu ca hm s c xc nh theo cch nh kiu n.
Th d 23: Din tch ca tam gic c th tnh theo hai cnh v gc xen
gia chng:
) ( sin 0,5 gc = 2 cnh 1 cnh tch Din .
Vit chng trnh c di ba cnh ca mt tam gic v cc gc i
din mi cnh. Tnh v in din tch ca tam gic theo ba phng n: trong
mi phng n s dng mt cp cnh v gc tng ng.
Trong bi tp ny ta phi tnh din tch tam gic ba ln, do c th
dng hm lnh tnh din tch tam gic. Chng trnh 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 * SIN (GOC)
PRINT *, ' Nhap ba canh tam giac theo thu tu sau:'
PRINT *, ' Canh A Canh B Canh C'
READ *, CA, CB, CC
PRINT *, ' Nhap ba goc (radian) theo thu tu sau:'
PRINT *, ' Doi dien: 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)
PRINT *
PRINT *, 'Cac dien tich tinh theo ba phuong an la:'
PRINT 5, DT1, DT2, DT3

72
5 FORMAT (1X, 3F7.2)
END
Nhn xt rng trong chng trnh ny hm tnh din tch tam gic
c nh ngha u chng trnh bi tn DT v ba i s hnh thc C1,
C2, GOC v gi tr ca hm c tnh ch bng mt lnh gn (dng lnh
th ba). Trong chng trnh, cc dng lnh th 1012 ta gi hm ba ln,
mi ln ta chuyn cc bin khc nhau vo v tr ca cc i s hnh thc.
Kiu d liu ca hm DT c m t tng minh ti lnh m t REAL
u chng trnh. Trong chng trnh chnh cc gc c cho bng raian.
Nu cc gc nhp vo c cho bng v khng cn chuyn i thnh
raian trc khi gi hm DT tnh cc din tch, ta c th nh ngha li hm
DT nh sau:
DT(C1, C2, GOC) = 0.5*C1*C2*SIN (GOC * 3.14159 / 180.0)
8.2.2. Hm chng trnh con
Thc cht ca hm chng trnh con l mt hm do ngi lp trnh t
xy dng, do ngi ta cn gi l hm do ngi dng nh ngha. Hm
loi ny khc vi hm lnh ch n c tnh khng phi bng mt lnh
gn duy nht m bng mt s lnh. Hm chng trnh con bt u vi lnh
khng thc hin c t hm bng mt tn v mt danh sch i s nh
sau
FUNCTION Tn hm (danh sch i s)
Sau cc lnh m t v tnh ton, lnh RETURN chuyn iu khin v
chng trnh chnh v lnh END bo cho chng trnh dch s kt thc ca
chng trnh con. Tn hm c chn theo quy tc nh tn hng, tn bin
ca Fortran. Tn hm c ngha m t n kiu gi tr ca hm nu trong
chng trnh chnh cha khai bo tng minh. Trong danh sch i s nu
c t hai i s tr ln th cc i s cch nhau bi du phy. Tn cc i
s cng c ngha m t n kiu d liu ca i s. Tuy nhin, nn m t
tng minh cc i s ca hm trong phn khai bo cc bin ca hm.
Trong phn khai bo ny, ngoi cc i s cn c th khai bo cc bin
khc c dng ch trong ni b hm chng trnh con. Vy hnh dng
tng qut ca mt hm chung trnh con nh sau:
FUNCTION Tn (i s 1, i s 2, ...)
Cc lnh m t cc i s, cc bin cc b
Cc lnh thc hin
RETURN
END
Cc hm chng trnh con c vit tch ra khi chng trnh chnh
v nm sau lnh END ca chng trnh chnh. Trong chng trnh chnh,
khi cn ti hm con ngi ta thng dng lnh gn gn gi tr tnh c
bi hm con vo mt bin hoc dng trc tip tn hm con trong cc biu
thc. Nhng gi tr ca cc i s thc t gi vo cc i s hnh thc phi
ph hp v kiu v ng tun t nh trong danh sch i s. Ta xt th d
v xy dng hm con v cch dng n trong chng trnh chnh qua th d
24 di y.
Th d 24: Cc m hnh s thng tnh ra cc gi tr ca cc thnh
phn kinh hng
k
V v v hng
v
V ca tc gi nhng im khc
nhau. T nhng cp gi tr thnh phn kinh hng v v hng cn tnh ra
tc V v hng gi d . Tc gi tnh bng cng thc
2 2
v k
V V V + = ,
cn hng gi (gc gia vect gi v hng bc) tnh theo cng thc

73

> <
< < +
< >
> >
=
nu
nu
nu
nu
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
o
o
o
o

trong arctg
k
v
V
V
t
o
180
= .
Gi s cc gi tr ca cc thnh phn kinh hng v v hng ca tc
gi lu trong file GIOKV.KQ1 thnh hai ct, dng u tin ca file
ghi s dng d liu c trong file. Vit chng trnh c file GIOKV.KQ1
v ghi kt qu tnh tc v hng gi vo file mi GIO.KQ2 thnh 4 ct
dng sau:
TT
k
V
v
V m/s HUONG
XX XX.X XX.X XXX XXX
XX XX.X XX.X XXX XXX
. . .
Khi lp chng trnh gii quyt nhim v ny ta nhn thy cn tnh
m un ca tc gi v hng gi nhiu ln. Vy c th s dng cc
hm, ngoi ra, tnh tc gi c th dng loi hm lnh, tnh hng
gi dng hm chng trnh con. Chng trnh c th nh sau:
REAL GIOK (200), GIOV (200), V, H, TOCDO, HUONG
INTEGER I, N
C M t hm lnh tnh m un tc gi
TOCDO (VK, VV) = SQRT (VK*VK+VV*VV)
OPEN (1, FILE = 'GIO.KQ1', STATUS = 'OLD')
READ(1,*) N
DO I = 1, N
READ(1,*) GIOK (I), GIOV (I)
END DO
CLOSE (1)
OPEN (1, FILE = 'GIO.KQ2', STATUS = 'UNKNOWN')
WRITE (1, 4) TT, VK, VV, M/S, HUONG
4 FORMAT(1X, I3, 4F7.1)
DO I = 1, N
V = TOCDO (GIOK (I), GIOV (I))
H = HUONG (GIOV (I), GIOK (I))
WRITE (1, 5) I, GIOK (I), GIOV (I), V, H
5 FORMAT (1X, I3, 4F7.1)
END DO
END
C Hm chng trnh con
FUNCTION HUONG (VV, VK)
REAL VV, VK, HG
IF (VK .EQ. 0.0) THEN
IF (VV .GE. 0.0) THEN
HG = 90.0
ELSE
HG = 270.0
ENDIF
ELSE
G = ATAN (ABS (VV / VK)) / 3.14159 * 180.0
IF (VK .GT. 0.0) THEN
IF (VV .GE. 0.0) THEN
HG = G
ELSE

74
HG = 360.0 - G
ENDIF
ELSE
IF (VV .GE. 0.0) THEN
HG = 180.0 - G
ELSE
HG = 180.0 + G
ENDIF
ENDIF
ENDIF
HUONG = HG
RETURN
END
Trong th d ny, ta thy vic tnh m un tc v hng c thc
hin nhiu ln. Do t chc tnh chng trong cc hm. V gi tr m
un tnh n gin bng mt biu thc nn dng loi hm lnh, l
hm TOCDO c nh ngha dng lnh th ba ca chng trnh chnh.
Vic tnh hng phi thc hin nh mt s php tnh v thao tc, do
dng loi hm chng trnh con HUONG. Kiu d liu ca hai hm ny
c khai bo tng minh phn khai bo trong chng trnh chnh.
Th d 25: c lng nghim ca a thc bc 4
4
4
3
3
2
2 1 0
) ( x a x a x a x a a x f + + + + =
trn khong [5, 5].
gii bi ton ny, ta s dng hai phng php tm nghim ca
phng trnh l phng php tm hp dn v phng php chia i.
Trong phng php tm hp dn, min tm nghim c chia thnh
nhng khong nh sao cho thc t c th xem rng trong mt khong
no ch c mt nghim. Xt cc khong t tri sang phi, ta s tm
nhng ch m th ca a thc ct trc x : bng cch tnh cc gi tr ca
a thc ti cc u mt ca khong, nu du ca cc gi tr ca a thc ti
cc u mt khc nhau, th th ct trc x v t nht c mt nghim trong
khong . Sau khong cha nghim li c chia tip thnh cc ph
khong nh hn v qu trnh tm li bt u t u tri cho n khi xc
nh c khong cha nghim. Qu trnh chia khong v tm lp li cho
n khi nghim c xc nh chnh xc.
Phng php chia i bt u vi mt khong c bit l cha
mt nghim. Khc vi phng php tm hp dn chia khong cha nghim
thnh nhiu ph khong trc khi tm, phng php chia i ch chia
khong cha nghim thnh hai na, sau xc nh na no cha nghim.
S chia i tip tc cho n khi tm c nghim vi chnh xc mong
mun.
Trong th d ny, ta kt hp hai phng php: phng php tm hp
dn xc nh khong cha nghim. Sau phng php chia i xc
nh nghim vi chnh xc cn thit. Gi s phng php chia i tip
tc lp cho n khi na khong nh hn 0,01 v nghim tm c nu gi
tr tuyt i ca a thc khng ln hn 0,001.
INTEGER I, N
REAL A (0 : 4)
REAL TRAI, PHAI, GIUA, KHOANG, NGHIEM
LOGICAL XONG
PRINT * , ' NHAP CAC HE SO A0, A1, A2, A3, A4 '
READ*, A
PRINT 5, A
5 FORMAT (/, ' DA THUC:'
* / 1X, 9X, '4', 11X, '3', 11X, '2' / 1X, 4(F7.3, ' X + '), F7.3)
N = 0

75
DO I = 1, 40
TRAI = 5.0 + REAL (I-1) * 0.25
PHAI = TRAI + 0.25
IF (ABS(F(A, TRAI)) .LT. 0.001) THEN
PRINT 15, TRAI, F(A, TRAI)
15 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
20 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
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 chng trnh ny, ta chia min tm nghim [5, 5] thnh 40
khong, mi khong di 0,25 v thc hin vic kim tra t tri sang phi
xem trong nhng khong no c th c nghim bng phng php tm hp
dn bng vng DO. Trong mi khong, nu gi tr a thc u mt tri
ca khong khng khc khng qu 0,001 th nhn nghim bng u mt
tri v chuyn sang xt khong tip sau bn phi. Cn nu gi tr a thc
hai u mt ca khong ang xt khc du, th ta tm nghim theo
phng php chia i. Qu trnh lp lin tip chia i khong thc hin
bng vng lp IF lgic v lnh GOTO v iu kin cho n khi khong tr
nn nh hn hoc bng 0,01 hoc gi tr tuyt i ca a thc gia
khong khng ln hn 0,001. Vic tnh gi tr a thc thc hin nhiu ln
vi nhng gi tr x khc nhau nn ta t chc hm F chuyn lm vic
ny.
Th d 26: Vit chng trnh c lin tip t bn phm ba s nguyn,
kim tra xem chng c tun t ch ngy thng nm hp l khng v in ra
thng bo ph hp. Chng trnh kt thc khi ta nhp ngy thng nm u

76
l nhng s khng.
PROGRAM KTNGAY
INTEGER ID, IM, IY
10 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

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.
* (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 chng trnh ny dng hai hm con: hm OKDATE v hm
SNTT. Hm OKDATE c ba i s nguyn D, M, Y v a ra gi tr lgic
l .TRUE. nu D, M, Y l nhng s nguyn ch ngy thng hp l. Hm
SNTT c hai i s nguyn v a ra gi tr nguyn l s ngy ca thng
ang xt. Nhn thy rng chng trnh chnh gi hm con OKDATE, v
phn mnh hm con OKDATE trong khi thc hin li gi hm con SNTT.
8.3. Ch dn g ri v phong cch vit chng trnh c hm con
Kim tra s lm vic ng n ca hm t xy dng cng ging nh
kim tra chng trnh chnh. Nn th cho hm con nhng gi tr i s
khc nhau xem n c a ra gi tr hm ng n khng. Nu hm con lm
vic khng ng n, hy kim tra nhng im sau:
1) S ph hp v kiu v th t ca i s thc t v i s hnh thc.
2) Khng nh rng trc lnh RETURN hm nhn mt gi tr
ng.
3) In kim tra gi tr cc i s trc v sau khi gi hm con.
4) C th dng lnh PRINT trong hm con nh v ch li trong

77
hm con.
S dng hm lnh v hm chng trnh con s lm chng trnh c
tnh cu trc hn v d c. Trong chng trnh con cng nn c cu trc
sng r. Nu hm di v kh c, hy dng hm con khc trong hm con.
Mt khi bn quyt nh dng hm con, hy cn nhc nhng iu sau y:
1) Chn tn hm con sao cho tn c tnh gi nh.
2) Nn dng tn cc i s hnh thc trong hm con trng vi tn ca
cc i s thc t. Nu hm c dng nhiu ln vi nhng i s thc t
khc nhau, th hy chn tn i s hnh thc hon ton khc trnh s
nhm ln vi cc bin ca chng trnh chnh. C th cch sau y l mt
cch nn c dng: tn cc i s trong hm con t bng cc t ting
Anh, cn tn cc i s thc t - bng cc t tng ng ca ting Vit.
Bi tp
1. Vit chng trnh in gi tr cc biu thc sau:
4 2 4
2 2
3 2 1
sin
3 2 1
9 , 6
y y y
y
y y y
y
+ + +
=
+ + +
+
=
|
o

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
+ + +
=
+ + +
+
=
o


trong chng trnh hy xy dng hm con tn l DENOM vi i s x
chuyn tnh biu thc
2 2
3 2 1 x x x + + + .
2. Hy ci tin chng trnh tm nghim ca a thc th d 25 trang
139 sao cho n cho php ngi dng nhp khong xc nh nghim thay v
dng khong [5, 5].
3. Hy ci tin chng trnh tm nghim ca a thc th d 25 trang
139 sao cho n cho php ngi dng nhp kch thc ca ph khong
trong phn tm hp dn.
4. Vit hm chng trnh con nhn gi tr mt s nguyn v tr v giai
tha ca s nguyn .
5. Csin ca mt gc tnh theo cng thc chui
...
! 6 ! 4 ! 2
1 cos
6 4 2
+ + =

x x x
x
trong x tnh bng raian. Hy vit hm chng trnh con COSX vi
u vo l gc tnh bng , tnh ra csin ca gc vi chnh xc s
0,000001, s dng hm con tnh giai tha bi tp 4. Sau vit chng
trnh chnh in bng ba ct: ct th nht ( x ) cha gc t 0 n 360 vi gia
s 15; ct th hai cha csin ca gc tnh theo hm chun COS ca
Fortran v ct th ba cha csin tnh theo hm con COSX.
6. Vit hm chng trnh con MEDIAN (X,N) vi u vo l mng
REAL X(N) sp xp tng hoc gim dn v s gi tr thc t ca mng
N, tr v gi tr ca trung v ca chui ) (n x theo nh ngha:
- nu n l trung v bng |
.
|

\
|
+1
2
n
x ,
- nu n chn trung v bng
2
) 1 2 / ( ) 2 / ( + + n x n x
.
7. Vit hm chng trnh con DAD (D1, M1, Y1, D2, M2, Y2) vi 6
i s hnh thc kiu s nguyn: D1, M1, Y1, D2, M2, Y2 ln lt ch

78
ngy, thng, nm ca hai ngy bt k. Hm ny s c gi tr lgic bng
TRUE nu ngy D2, M2, Y2 l ngy mun hn ngy D1, M1, Y1, cn nu
khng th n s c gi tr FALSE. Sau hy vit mt chng trnh chnh
cho php ta nhp t bn phm mt ngy bt k trong qu kh hoc trong
tng lai, xc nh v in ln mn hnh th trong tun ca ngy . Bit
rng ngy 1-1-2001 l ngy th hai.





















Chng 9 - Chng trnh con loi th tc
Trong chng 8 chng ta nghin cu v cc hm chun, cc hm
lnh v cc hm do ngi lp trnh t xy dng. Trong khi mt hm ch
gii hn vic tnh ra mt gi tr, th cc th tc chng trnh con (hay cn
gi l th tc do ngi lp trnh t xy dng) c th tnh ra mt s gi tr,
hoc thc hin mt s thao tc. Trong bi ny ta hc cch vit cc th tc
v s dng cc th tc trong cc bi ton ng dng.
9.1. Khai bo v gi chng trnh con th tc
Nhiu quy tc vit v s dng cc th tc chng trnh con ging nh
cc quy tc i vi cc hm chng trnh con. Di y lit k nhng khc
bit gia cc th tc v cc hm.
1) Mt th tc khng biu din mt gi tr, do tn ca n ch l i
din cho mt on chng trnh, khng ch nh kiu ca d liu u ra.
2) Dng lnh u tin trong mt th tc thng bo tn th tc v danh
sch i s
SUBROUTINE Tn th tc (danh sch i s)
3) Chng trnh chnh gi mt th tc bng lnh CALL c dng tng
qut nh sau:

79
CALL Tn th tc (danh sch i s)
4) Th tc dng danh sch i s khng ch cho u vo m c cho
nhng gi tr gi ra chng trnh chnh gi n. Cc i s ca th tc c
dng trong lnh CALL l nhng i s thc t, cn cc i s s dng
trong th tc l nhng i s hnh thc. Cc i s trong lnh CALL phi
ph hp v kiu, s lng v th t vi nhng i s trong th tc.
5) Mt th tc c th tnh ra mt gi tr, nhiu gi tr hoc khng gi
tr no c. Mt th tc c th s dng mt gi tr u vo, nhiu gi tr u
vo hoc khng c gi tr u vo.
6) Nhn lnh, tn bin trong th tc c chn c lp vi chng
trnh chnh. Nhng bin dng trong th tc m khng phi l cc i s ca
th tc gi l cc bin cc b, cc gi tr ca chng khng x l c trong
chng trnh chnh.
7) Cn c bit thn trng khi s dng cc mng nhiu chiu trong
cc th tc. Nn ch nh c kch thc khai bo v kch thc s dng
thc t vi cc mng hai hoc nhiu chiu.
8) Ging nh cc hm, lnh RETURN cui cc th tc dng
chuyn iu khin tr v chng trnh chnh, lnh END bo kt thc th
tc.
9) Trong lu khi cc thao tc c thc hin bn trong th tc
c k hiu bng biu tng ha sau y:
+
+

10) Mt th tc c th dng cc hm con khc hoc gi cc th tc
khc, nhng n khng th t gi chnh n. (Trong Fortran 90 cho php
dng cc th tc quy c th t gi chnh mnh.)
9.2. Nhng th d ng dng chng trnh con th tc
Nhng th d di y gip chng ta hc cch vit cc th tc v s
dng n trong chng trnh chnh nh th no.
Th d 27: Chng trnh tnh cc c trng thng k: trung bnh,
phng sai v lch chun ca chui x gm n s liu quan trc. Cc
cng thc sau tnh nh sau:
x x x
n
i
i
x
n
i
i
x
D m
n
x
D
n
x
m =

= =

= =
o , ,
2 1
2
1
1
.
Ta thy rng mi i lng trn c th tnh c bng mt hm ring
bit. Nhng ta cng c th tnh lun mt lc c ba i lng bng cch t
chc tnh chng trong mt th tc. Chng trnh di y cho php c
vo kch thc n v cc gi tr ca chui x . Sau gi th tc STAT
tnh cc c trng thng k. Cui cng l in ra kt qu.
Thy rng th tc STAT c tt c 5 i s hnh thc, trong hai i
s u vo l mng mt chiu X v kch thc mng N, ba i s u ra l
AVER, VARI v STDV. Khi gi th tc ny trong chng trnh chnh, ta
gi vo cc i s thc t l X, N, TBINH, PSAI v DLC. Kt qu tnh
trung bnh, phng sai v lch chun trong th tc chng trnh con
c lu vo cc bin TBINH, PSAI, DLC ca chng trnh chnh. Hy
ch rng: v th tc chng trnh con l mun c lp, nn tn cc i
s ca n c th trng vi tn ca cc bin trong chng trnh chnh, trong
th d ny l i s X v N. y ta thy, trong chng trnh con, c th
nh ngha kch thc ca mng bng bin N (trong lnh REAL X(N)).
Nh rng iu ny ch cho php trong chng trnh con.

80
PROGRAM THKE
INTEGER N, I
REAL X(99), TBINH, PSAI, DLC
PRINT *, ' NHAP DO DAI CHUOI (<100)'
READ *, N
PRINT *, ' NHAP CAC GIA TRI CUA X:'
5 FORMAT (1X, ' X(', I2, '): ')
DO I = 1, N
WRITE (*, 5) I
READ *, X (I)
ENDDO
CALL STAT (X, N, TBINH, PSAI, DLC)
WRITE(*, 8) TBINH, PSAI, DLC
8 FORMAT (1X, ' T. BINH = ', F7.2, ' PH. SAI = ',
* F7.2, ' DL CHUAN = ', F7.2)
END
SUBROUTINE STAT (X, N, AVER, VARI, STDV)
REAL X (N), AVER, VARI, STDV
INTEGER N, I
AVER = 0.0
VARI = 0.0
DO I = 1, N
AVER = AVER + X (I)
VARI = VARI + X (I) * X (I)
END DO
AVER = AVER / REAL (N)
VARI = VARI / REAL (N1) AVER * AVER
STDV = SQRT (VARI)
RETURN
END
Th d 28: X l ngy thng. Trong thc t x l s liu quan trc
kh tng thy vn, ta thng hay phi n ngy thng ca s liu.
Trong mc ny s xt mt th d v x l ngy thng vi th d sau: Vit
chng trnh nhp vo mt ngy thng nm bt k, in ra ngy thng nm
ca ngy hm sau. Vic xc nh ngy thng nm ca ngy hm sau so vi
ngy thng nm hin ti s c thc hin trong mt chng trnh con th
tc, ta gi tn l th tc HOMSAU. V y kt qu s cho ra ba gi tr
nguyn tun t ch ngy, thng v nm. Chng trnh c th nh sau:
PROGRAM TGNGAY
INTEGER ID, IM, IY
PRINT *, 'HAY NHAP NGAY THANG NAM BAT KY'
READ *, ID, IM, IY
CALL HOMSAU (ID, IM, IY)
PRINT 20, ID, IM, IY
20 FORMAT (1X, 'NGAY HOM SAU LA ', I2, '', I2 , '', I4)
END
SUBROUTINE HOMSAU (D, M, Y)
INTEGER D, M, Y
D = D + 1
IF (D .GT. SNTT (M, Y)) THEN
D = 1
M = M + 1
IF (M .GT. 12) THEN
M = 1

81
Y = Y + 1
END IF
END IF
RETURN
END
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.
* (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
Cc thao tc chuyn thnh hm sau c thc hin trong chng
trnh con th tc HOMSAU. Hy ch rng trong th tc con HOMSAU
li gi thc hin mt hm con khc l SNTT tnh s ngy ca thng
ang xt. Hm ny c nhc ti trong th d 26, trang 142, y ghi
li sinh vin tin theo di.
Di y ta xt mt th d v x l s liu kh tng c lin quan ti
ngy thng.
Th d 29: Tnh cc gi tr trung bnh thng ca mt yu t kh
tng thy vn. Gi s vi file d liu v cc yu t kh tng thy vn
m t trong th d 20 (trang 124).
Nh li rng file HONDAU.MAT c quy cch ghi nh sau: Dng trn
cng ghi tn trm. Dng th 2 c hai s nguyn vit cch nhau ln lt ch
tng s ngy quan trc v s yu t c quan trc. Dng th ba c 6 s
nguyn vit cch nhau ln lt ch ngy, thng, nm u v ngy, thng,
nm cui quan trc. Dng th 4 l tiu ct lit k tn tt c cc yu t
c quan trc, mi tn c ghi vi rng 8 v tr. Cc dng tip theo
ln lt ghi gi tr ca cc yu t, mi dng mt ngy. Cc gi tr ngy ca
nhit khng kh c ghi ct th hai ca file ny. Vit chng trnh
tnh gi tr trung bnh thng ca nhit khng kh trong tt c cc nm
quan trc.
y ta thy, mun tnh trung bnh thng ch vic cng tt c cc gi
tr ngy v chia tng cho s ngy ca thng ang xt. Nhng v s ngy
trong mi thng c th khc nhau, nn ta cn c nhng th tc x l ngy
thng. Chng trnh sau y s thc hin kiu x l nh vy.
REAL X, TONG, TB (100, 12)
INTEGER D1, M1, Y1, D2, M2, Y2, Y, M, I
OPEN (1, FILE = HONDAU.MAT, STATUS = OLD)
READ (1, *)
READ (1, *) N
READ (1, *) D1, M1, Y1, D2, M2, Y2
READ (1, *)
Y = Y1
I = 1
2 IF (Y1 .GT. Y2) GOTO 4
READ (1, *) X, X
IF (D1 .EQ. 1) THEN
TONG = 0.0
M = SNTT (M1, Y1)

82
END IF
TONG = TONG + X
IF (D1 .EQ. M) THEN
TB (I, M1) = TONG / M
IF (M1.EQ.12) I = I + 1
END IF
CALL HOMSAU (D1, M1, Y1)
GOTO 2
4 CLOSE (1)
PRINT *, NHIET DO KHONG KHI TRUNG BINH THANG
PRINT (A5, 12I5), NAM, (J, J = 1, 12)
K = 1
DO I = Y, Y2
PRINT (A5, 12F5.1), I, (TB (K, J), J =1, 12)
K = K + 1
END DO
END
Ta thy trong chng trnh ny s dng hm SNTT v th tc
HOMSAU m chng ta xy dng trong th d 28. Hm SNTT c gi
vo mi ngy u thng tnh s ngy ca thng v gn vo bin M
chun b cho vic tnh trung bnh sau khi gi tr nhit ngy cui cng
ca thng c cng vo bin TONG. Cn th tc HOMSAU c gi
lin tc tng ngy hin hnh ln mt ngy sau khi mt s liu c c.
Qua th d 20 v th d ny, sinh vin cng cn ch ghi nh cch
c s liu kiu b qua mt s ct trong file cha bng s liu c nhiu ct.
Di y l hai th d lin quan ti cc th tc thao tc chui thng
c th rt c ch trong thc tin x l thng k chui s liu kh tng thy
vn.
Th d 30: Chn mt gi tr vo danh sch. Trong th d ny, ta vit
mt th tc cho php chn mt gi tr mi vo mt danh sch sp xp.
Cc i s ca th tc gm mng mt chiu X, bin COUNT ch s gi tr
d liu thc t trong mng, bin LIMIT cha kch thc m t ca mng
v bin NEW cha gi tr cn chn vo mng. Trng hp phn t mi
c chn vo mng y, tc gi tr COUNT bng gi tr LIMIT th gi
tr cui cng trong mng s b ct b.
SUBROUTINE INSERT (LIMIT, NEW, COUNT, X)
INTEGER LIMIT, NEW, COUNT, X (LIMIT), J, K
LOGICAL DONE
DONE = .FALSE.
J = 1
5 IF (J .LE. COUNT .AND. .NOT. DONE) THEN
IF (X (J) .LT. NEW) THEN
J = J + 1
ELSE
DONE = .TRUE.
END IF
GOTO 5
END IF
IF (J .GT. COUNT) THEN
IF (COUNT .LT. LIMIT) THEN
COUNT = COUNT + 1
X (COUNT) = NEW
END IF
ELSE
IF (COUNT .LT. LIMIT) COUNT = COUNT + 1
DO K = COUNT, J+1, 1
X (K) = X (K 1)

83
END DO
X (J) = NEW
END IF
RETURN
END
Th d 31: Xa mt gi tr khi danh sch. Trong trng hp ny, ta
tm trong danh sch gi tr bng gi tr nh xa v loi gi tr khi danh
sch. Khc vi th tc chn, trong th tc xa khng cn i s LIMIT v
khi xa mt gi tr khi danh sch th s phn t thc ca mng ch c th
nh i, khng s ch s mng vt qu kch thc m t ca mng.
SUBROUTINE DELETE (OLD, COUNT, X)
INTEGER OLD, COUNT, X (COUNT), J, K
LOGICAL DONE
DONE = .FALSE.
J = 1
5 IF (J .LT. COUNT .AND. .NOT. DONE) THEN
IF (X (J) .LT. OLD) THEN
J = J + 1
ELSE
DONE = .TRUE.
END IF
GOTO 5
END IF
IF (J .GT. COUNT .OR. X (J) .GT. OLD) THEN

PRINT *, 'GIA TRI XOA KHONG CO TRONG DANH
SACH'

ELSE

COUNT = COUNT - 1

DO K = J, COUNT

X (K) = X (K + 1)

END DO

END IF

RETURN

END
9.3. Nhng ch dn g ri khi s dng cc th tc
1) Kim tra xem cc bin, cc biu thc trong danh sch i s lnh
CALL c ph hp v kiu v th t nh trong lnh khai bo th tc
khng.
2) Nn khai bo tng minh tt c cc bin trong th tc trnh nh
kiu ngm nh sai.
3) S dng lnh PRINT trong th tc nh v li.
4) Kim tra th tng th tc trc khi gp chng vo chng trnh
chnh cng vi nhng chng trnh con khc.
5) Kim tra tng th tc vi mt s tp d liu pht hin nhng
iu kin c bit gy li.
6) Phong cch lp trnh:
- Khi quyt nh s dng chng trnh con th tc hy chn tn th
tc sao cho n c tnh gi nh.
- Hy s dng tn cc bin trong danh sch i s ca th tc cng
tn vi cc bin l i s thc t trong chng trnh chnh. Trong trng
hp th tc c gi nhiu ln vi nhng i s thc t khc nhau, hy
chn tn trong danh sch i s khc bit trnh nhm vi cc bin trong
chng trnh chnh.

84
- Trong danh sch i s, nn lit k ring cc i s u vo trc,
sau mi n cc i s u ra.
Bi tp
1. Gi s c mng mt chiu X vi 100 gi tr thc. Hy vit mt th
tc to ra mng Y theo cch mi phn t ca mng Y bng phn t tng
ng ca mng X tr i phn t nh nht.
2. Vit mt th tc nhn mt mng gi tr thc X vi 50 hng v 2 ct
v tr li chnh mng nhng d liu c sp xp li theo chiu tng
dn ca ct th 2.
3. Vit mt th tc nhn mt mng gi tr thc X vi n dng m ct
v tr v mt mng Y cng s dng, s ct nhng d liu c bin i
sao cho cc phn t tng ng ca ct th nht v ct th J c i ch
cho nhau.
4. Gi s cho trc hai ma trn A ( n dng, m ct) v ma trn B ( m
dng, l ct). Tch AB s l ma trn C ( n dng, l ct) vi cc phn t
c tnh theo cng thc
) ..., , 1 ; ..., , 1 (
1
, , ,
l j n i b a c
m
k
j k k i j i
= = =

=
.
Vit th tc TICHMT (A, B, N, M, L, C) vi cc i s u vo l ma
trn A, ma trn B , cc tham s N, M, L v i s u ra l ma trn C .
5. H phng trnh i s tuyn tnh n n

= + + +
= + + +
= + + +

...
... ... ... ... ...
...
...
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 vit di dng ma trn 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
.
Hy vit th tc GAUSS (A, B, N, X) nhn vo cc mng A, B, s n
N ca h v tnh ra mng X theo phng php loi bin ca Gauss. Xem
gii thch v phng php Gauss trong ph lc 2.

















85

Chng 10 - Kiu d liu vn bn
Ngoi nhng d liu s nh cc s nguyn, s thc, my tnh cn c
th lu gi v x l nhng d liu vn bn nh nhng ch ci, nhng on
vn bn, nhng ch s v mt s k hiu khc. Trong Fortran gi chung
nhng d liu ny l d liu k t. Trong chng ny chng ta xt thm
nhng c im khai bo nhng d liu k t, mt s thao tc vi nhng
d liu k t v ng dng ca chng trong x l thng tin.
10.1. Tp cc k t ca Fortran
Tp k t ca Fortran gm 26 ch ci ting Anh, mi ch s t 0
n 9, du trng v 12 k hiu sau y:
+ * / = ( ) , . ' $ :
Ngoi ra cn mt s k t khc ty thuc vo nhng h my tnh khc
nhau.
Cc hng k t bao gi cng nm trong cp du nhy trn. Trong
hng k t du nhy trn ' c biu th bng hai du nhy trn (khng
phi du ngoc kp). Th d ch LET'S ca ting Anh s c vit l
'LET''S'.
Thng thng ngi ta x l trong my tnh nhng t, nhng dng
ch gm mt s k t ghp li vi nhau. Trong trng hp ngi ta gi
l xu k t. di ca xu k t l s k t c ghp li trong xu k t
. Mt k t cng c th coi l mt xu k t vi di bng 1. Do , ta
gi chung d liu xu k t l d liu k t hay d liu vn bn. Di y
l th d v cc hng k t v di tng ng ca chng:
'CHU NHAT' 8 k t
'SENSOR 23' 9 k t
'08:4013:25' 11 k t
'LE QUY DON' 10 k t
' ' 2 k t
'''''' 2 k t
10.2. Cc dng khai bo bin k t
+ Bin k t c khai bo bng lnh m t dng tng qut nh sau:
CHARACTER * n Danh sch bin
trong n ch s k t ( di) trong mi xu k t. Th d lnh
CHARACTER * 8 TEN, NGAY
ch rng TEN v NGAY l nhng bin cha 8 k t mi bin.
+ Lnh CHARACTER bin th sau y cho php ta khai bo nhng
bin k t vi di khc nhau trn cng mt dng lnh
CHARACTER TITLE * 10, NUOC * 2
+ Mt mng cha mt s phn t, mi phn t c gi tr l mt xu
k t c khai bo bng mt trong hai cch tng ng nh sau:
CHARACTER * 4 NAME (50)
CHARACTER NAME (50) * 4
+ Cc xu k t cng c th c dng trong cc chng trnh con.

86
Xu k t phi c khai bo bng lnh CHARACTER trong c chng
trnh chnh v chng trnh con. Cng nh cc mng d liu s nguyn, s
thc, trong chng trnh con c th khai bo bin k t m khng cn ch
nh r di xu v kch thc mng. Th d:
CHARACTER * (*) BCC
CHARACTER * (*) NAME (N)
10.3. Nhp, xut d liu k t
Khi xu k t c dng trong lnh xut ton b xu c in ra.
Nhng du trng c t ng chn vo xu tch ring xu k t vi
nhng mc in khc cng dng. Trong lnh nhp, gi tr ca bin k t phi
c bao trong cp du nhy trn. Nu s k t trong cp du nhy nhiu
hn so vi di m t ca bin k t, th nhng k t tha bn phi
s b b qua (b ct b); nu s k t t hn nhng v tr tha bn phi
c t ng in bng cc du trng. in xu k t trong lnh xut c
nh dng, c th dng c t A (ch , c th khng cn ch r s v tr
dnh cho mc in). Th d: vi on chng trnh:
CHARACTER * 20 THU
PRINT *, ' HAY NHAP MOT NGAY TRONG TUAN'
READ *, THU
PRINT 5, THU
5 FORMAT (1X, 'NGAY VUA NHAP LA ', A)
END
th tng tc trn mn hnh s nh sau:



Thy rng s k t g vo bin THU ch bng 8, khng di ti 20 nh
khai bo. Nhng khi in ra mn hnh ta khng thy r nhng du trng
c t ng in vo pha bn phi. Nu lnh FORMAT ca lnh in c
dng
FORMAT (1X, A, ' LA NGAY VUA NHAP')
th trn mn hnh s thy r nhng du trng nh sau:

10.4. Nhng thao tc vi d liu k t
10.4.1. Gn cc gi tr k t
Nhng gi tr k t c th c gn cho cc bin k t bng lnh gn
v mt hng k t. Nu hng c di nh hn s k t khai bo ca
bin, th cc du trng s t ng c in vo bn phi; nu hng c
di ln hn - cc k t tha s b b qua. Th d:
CHARACTER * 4 MONHOC (3)

87
MONHOC (1) = 'TOAN'
MONHOC (2) = 'LY'
MONHOC (3) = 'HOA HOC'
Trong nhng lnh trn y ta khai bo mng MONHOC gm 3 phn
t, mi phn t l mt xu di 4 k t. Vy trong MONHOC (1) s lu
'TOAN', trong MONHOC (2) s lu 'LYbb', trong MONHOC (3) s lu
'HOAb' (ch b ch du trng). Qua th d ny ta thy tm quan trng ca
vic s dng cc xu c cng di m t ca bin; nu khng cc lnh s
x l sai.
Mt bin k t cng c th c gn gi tr ca bin k t khc bng
lnh gn, th d
CHARACTER * 4 LOAI1, LOAI2
LOAI1 = 'GIOI'
LOAI2 = LOAI1
Sau lnh gn ny, c hai bin LOAI1 v LOAI2 u lu xu k t
'GIOI'.
Lnh DATA cng c th dng khi xng gi tr ca cc bin k
t. Th d sau gn 12 tn thng ting Anh vo mng THANG:
CHARACTER * 3 THANG (12)

DATA THANG / 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
*
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' /
10.4.2. So snh cc gi tr k t
Biu thc lgic trong lnh IF lgic cng c th l mt php so snh
cc bin, hng k t. Th d, nu cc bin THANG, CH, TG l nhng bin
k t, cc lnh sau y l nhng lnh ng:
IF (THANG .EQ. 'FEB') NGAY = 28
IF (CH (I) .GT. CH (I+1)) THEN
TG = CH (I)
CH (I) = CH (I+1)
CH (I+1) = TG
END IF
Khi nh gi mt biu thc lgic vi cc xu k t, trc ht chng
trnh xt di ca hai xu. Nu mt xu ngn hn xu khc, th xu ngn
hn c b sung thm cc du trng bn phi sao cho hai xu tr thnh
c cng di. Vic so snh hai xu k t cng di thc hin t tri
sang phi theo tng k t mt. Hai xu bng nhau nu chng c cng
nhng k t trong cng mt th t. Cc k t c so snh vi nhau theo
chui th t so snh (collating sequence). Chui ny lit k cc k t t
thp n cao. Th d, mt phn ca chui th t so snh i vi cc k t
ASCII lit k cc k t di y:
Chui th t so snh ca cc k t:
______________________________________
b''#$%&()*+,-./
0123456789
:;=?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ
______________________________________
Theo chui ny, nhng so snh sau l ng:
'A1' < 'A2'
'JOHN' < 'JOHNSTON'
'175' < '176'
'THREE' < 'TWO'
'$' < 'DOLLAR'


88
Nu cc xu k t ch cha cc ch ci, th th t t thp n cao l
th t alphab, c gi l th t t vng (lexicographic ordering).
10.4.3. Trch ra xu con
Xu con l mt phn c trch ra t xu xut pht v gi nguyn th
t ban u. Trong Fortran xu con c vit bng tn ca xu xut pht,
km theo hai biu thc nguyn nm trong cp du ngoc n, cch nhau
bi du hai chm. Biu thc th nht ch v tr u tin xu xut pht m
t xu con c trch ra. Biu thc th hai ch v tr cui cng. Th d,
nu xu 'FORTRAN' c lu trong bin LANG, ta c th c nhng xu
con nh sau
Bin Xu con
LANG (1 : 1) 'F'
LANG (1 : 7) 'FORTRAN'
LANG (2 : 3) 'OR'
LANG (7 : 7) 'N'
1) Ta c th khng vit biu thc th nht trong cp du ngoc n
nu gi tr ca n bng 1 v c th khng vit biu thc th hai nu gi tr
ca n bng di ca xu xut pht. Ta cng c th khng vit c hai
biu thc. Nhng trong c ba trng hp vn phi c du hai chm (:)
trong cp du ngoc. Th d:
LANG (:4) l 'FORT'
LANG (5:) l 'RAN'
LANG (:) l 'FORTRAN'
2) Khi php trch ra xu con s dng cng mt tn bin, cc biu thc
trong cp du ngoc n khng c ph ln nhau. Th d, nu bin
LANG cha xu 'FORMATS', th lnh
LANG (7: 7) = LANG (6: 6)
s bin gi tr ca LANG thnh 'FORMATT'. Nhng lnh sau y s sai
khng th thc hin c
LANG (3: 5) = LANG (2: 4)
3) Nhng trng hp nh: cc v tr u hoc cui khng phi l s
nguyn, l s m, v tr u ln hn v tr cui, v tr u hoc v tr cui c
gi tr ln hn di m t ca xu con, vic trch ra xu con s khng th
thc hin ng n.
Th d 32: m s k t trong mt vn bn. Gi s mt bc in di
50 k t. Hy m s t trong bc in . Ta bit rng trong mt vn bn
son ng th cc t cch nhau bng mt du trng, do ta ch cn m
s du trng trong vn bn v s t s bng s du trng cng thm mt.
Vi trng hp ny chng trnh sau s 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. Kt hp cc xu k t
Kt hp hay cng l thao tc ghp hai hoc mt s xu k t vo
thnh mt xu k t. Thao tc ny thc hin bi hai du gch cho //. Th
d mun c t WORKED ta c th dng php kt hp

89
'WORK' // 'ED'
Nhm lnh sau y cho php vit ra ngy thng theo quy cch ting
Vit, tc thm cc gch cho ngn cch gia cc k hiu ngy, thng v
nm:
CHARACTER DAY*2,MONTH*2,YEAR*4,DATE*10
READ *, DAY, MONTH, YEAR
DATE = DAY//'/'//MONTH//'/'//YEAR
PRINT *, DATE
END
Theo nhm lnh ny, nu khi thc hin lnh READ ta g t bn phm
'05' '10' '1999' . th trn mn hnh s in ra:
05/10/1999.
10.4.5. Nhng hm chun x l xu k t
- Hm INDEX
Hm ny c hai i s kiu xu k t, a ra mt s nguyn ch v tr
ca xu th hai trong xu th nht. Th d nu ta c bin STR cha mnh
'TO BE OR NOT TO BE' v dng lnh
K = INDEX (STR, 'BE')
th bin K s c gi tr 4 v xu 'BE' xut hin ln u tin trong xu STR
v tr th 4.
- Hm LEN
Hm LEN c mt i s kiu xu k t, n a ra mt s nguyn ch
di ca xu . Hm ny rt c ch trong nhng chng trnh con chp
nhn cc xu k t di bt k nhng cn bit di thc t trong
chng trnh con.
Th d 33: Cu to tn vit tt ca ngi. Vit chng trnh c t
bn phm h tn y (gm h, ch m v tn) ca mt ngi v in ln
mn hnh dng vit tt. (Th d, nu nhp vo h tn y nh sau:
TRAN CONG MINH,
th dng in ra s l
T. C. MINH.
Chng trnh NAMEED di y cho php ta g t bn phm mt
xu k t gm c h, ch m v tn trn cng mt dng nhng cch nhau
bi mt du trng. Th tc con EXTR cho php tch ring phn h, ch
m v tn da vo v tr cc du trng trong h tn y . Sau th tc
EDIT ghp cc ch ci u tin ca phn h, ch m km theo cc du
chm v du trng vi tn cu to thnh tn vit tt.
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:) , ' ')

90
XHO = XHOTEN (:B1-1)
XDEM = XHOTEN (B1+1: B2-1)
XTEN = XHOTEN (B2+1:)
RETURN
END
SUBROUTINE EDIT (XHO, XDEM, XTEN, XHOTEN)
INTEGER L
CHARACTER *(*) XHO, XTEN, XDEM, XHOTEN
XHOTEN = XHO(1: 1) // '.'
L = INDEX (XHOTEN, ' ') + 1
XHOTEN (L: L + 2) = XDEM (1: 1) // '. '
XHOTEN (L + 3:) = XTEN
RETURN
END

- Cc hm CHAR v ICHAR
Cc hm ny thao tc vi cc k t trong chui th t so snh dng
trong my tnh. Nu mt my tnh c 256 k t trong chui th t so snh
ca n, th cc k t ny c nh s t 0 n 255. Hm CHAR nhn
mt i s nguyn v a ra mt k t trong chui th t so snh v tr
ng vi s nguyn . Hm ICHAR l hm ngc ca hm CHAR. N
nhn i s l bin mt k t v tr v mt s nguyn ng vi v tr ca k
t trong chui th t so snh.
V cc my tnh khc nhau c cc chui th t so snh khc nhau, nn
cc hm ny c th dng xc nh v tr ca nhng k t trong chui th
t so snh.
Th d, nu bn mun in ra mn hnh tt c cc k t trong chui th
t so snh c dng trong my tnh ca mnh t v tr 0 n 255 c th
dng chng trnh sau:
PROGRAM CSCHAR
DO I = 0, 255
PRINT *, I, ' ', CHAR (I)
END DO
END
Chng trnh sau y cho php in ra mn hnh v tr ca cc ch ci in
hoa ting Anh, nhng ch ci thng v nhng ch s t 0 n 9 trong
chui th t so snh trong my tnh bn ang dng:
PROGRAM COLSEQ
CHARACTER *70 SET
SET (1: 26) = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
SET (27: 52) = 'abcdefghijklmnopqrstuvwxyz'
SET (53: 62) = '0123456789'
DO I = 1, 62
PRINT *, SET (I : I), ICHAR (SET (I : I))
END DO
END
Vi cc my tnh thng dng ngy nay, nu chy chng trnh ny, ta
s thy tp cc ch s t 0 n 9 tun t c v tr t 48 n 57, tp cc
ch ci hoa ting Anh t A n Z c v tr t 65 n 90 v tp cc ch
ci thng ting Anh t a n z c v tr t 97 n 122 trong chui th
t so snh. Cc v tr cn li trong chui th t so snh s ng vi nhng
k t khc, trong c nhng k t chuyn dng biu din cc ch ci

91
Hy Lp, cc k t dng k biu bng... Ta c th khai thc nhng chi
tit ny vit nhng th tc rt c ch nh in biu bng kh p khi xut
d liu ln mn hnh, t ng to cc tn file trong chng trnh... khi cn
thit.
- Cc hm LGE, LGT, LLE, LLT
Nhng hm ny cho php ta so snh nhng xu vn bn da trn
chui th t so snh ASCII. Nhng hm ny s c ch nu mt chng
trnh c so snh cc xu hay sp xp k t v c dng trong cc my
tnh khc nhau. Nhng hm ny tr v mt gi tr lgic - TRUE hoc
FALSE tu thuc kt qu so snh hai i s kiu xu k t. Th d, nu ta
c hai bin k t XAU1, XAU2 th LGE (XAU1, XAU2) s cho gi tr
TRUE nu XAU1 ln hn hoc bng XAU2 v phng din t vng. Cc
hm LGT, LLE v LLT thc hin cc php so snh ln hn v t vng,
nh hn hoc bng v t vng v nh hn v t vng. Nh rng cc
hm ny da trn chui th t so snh ASCII ch khng phi chui th t
so snh ca my tnh.
Trong Fortran 90 cn c cc hm ADJUSTL, ADJUSTR dng
dn mt xu k t v tri hoc v phi bng cch ct b nhng du trng
pha tri hoc pha phi ca xu . Hm TRIM ct b nhng du trng
ui mt xu vn bn v gim di xu cho tng xng
*
.
Th d 34: Sp xp danh sch theo th t alphab. Vit chng
trnh c t bn phm tn v s in thoi ca 20 ngi. In ln mn hnh
danh sch sp xp th t alphab theo tn ngi. Trong th d ny ta s
dng cc hm so snh i vi bng th t so snh ASCII.

*
Trong thc t hm ny v c hm LEN na khng lm vic ng nh ngi ta
m t n trong ti liu, di xu vn bn nhn c vn ch l di m t ch
khng phi di thc t.
PROGRAM NMSORT
CHARACTER *8 TEN(20), TEL (20), TEMP
DO I = 1, 20
PRINT *, 'NHAP TEN NGUOI THU ', I
READ 5, TEN(I)
PRINT *, 'SO DIEN THOAI'
READ 5, TEL (I)
ENDDO
5 FORMAT (A)
DO I = 1, 19
K = I
DO J = I+1, 20
IF (LGT (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
PRINT *, TEN (I), TEL (I)
END DO
PRINT *, TEN (20), TEL (20)
END
Th d 35: M ho bc in. M ha bc in l lm cho dng vn
bn bnh thng ca bc in c mt dng khc thng ch c ngi m
ha mi hiu c ni dung ca n. Ngi ta c th m ho mt bc in
theo cch sau: Ly mt xu gm 62 ch ci v ch s lm kho. Tng ch

92
ci bnh thng trong bc in c m ho bng mt ch ci trong kho
sao cho ch A bnh thng c thay bng ch ci u tin trong kho,
ch B c thay bng ch ci th hai... Di y l mt chng trnh nhn
t bn phm mt bc in v in ra mn hnh dng m ho ca bc in .
Trong chng trnh ny ta dng mt kho l chui cc ch ci v ch s
sp xp theo th t khc thng nh sau:
YXAZKLMBJOCFDVSWTREGHNIPUQ
yxazklmbjocfdvswtreghnipuq9087564312
Vic m ho cc ch ci trong bc in c thc hin trong th tc
con ENCODE.
PROGRAM MSGCOD
CHARACTER DIEN*255, MADIEN*255,
CHARACTER KHOA*62, ALPH*62
ALPH = ABCDEFGHIJKLMNOPQRSTUVWXYZ //
* abcdefghijklmnopqrstuvwxyz0123456789'
KHOA = 'YXAZKLMBJOCFDVSWTREGHNIPUQ //
* yxazklmbjocfdvswtreghnipuq9087564312'
PRINT*, 'ENTER A MESSEAGE,
* (MAXIMUM 255 LETTERS)'
READ (5, '(A255)') DIEN
CALL ENCODE (KHOA, ALPH, DIEN, MADIEN)
PRINT 5, MADIEN
5 FORMAT (1X, /, 1X, 'THIS IS ENCODED AS' /, 1X, A /)
END

SUBROUTINE ENCODE (KEY, ALP, MESSGE, SECRET)
CHARACTER MESSGE * (*), SECRET * (*)
CHARACTER ALP * (*), KEY * (*), LETTER
DO I = 1, LEN (MESSGE)
LETTER = MESSGE (I : I)
J = INDEX (ALP, LETTER)
IF (J .EQ. 0) THEN
SECRET (I : I) = LETTER
ELSE
SECRET (I : I) = KEY (J : J)
END IF
END DO
RETURN
END
Bi tp
1. Cc bin K v J s c gi tr bng bao nhiu sau khi thc hin nhm
lnh sau y:
CHARACTER *18 STRG
INTEGER K, J
STR = 'TO BE OR NOT TO BE'
K = INDEX (STRG, 'BE')
J = INDEX (STR (K + 1:), 'BE') + K
2. Gi s cc bc in c m ho bng mt kho nh trong th d
31, tc dng chui cc ch ci v ch s:
YXAZKLMBJOCFDVSWTREGHNIPUQ
yxazklmbjocfdvswtreghnipuq9087564312
Ngi ta gii m nh sau: Tng ch ci trong m in s c thay
th bi mt ch ci trong bng ch ci alphab theo quy tc: nu ch ci
trong m in trng vi ch ci th nht trong kho th ch ci thay

93
bng ch A trong bng ch ci alphab, nu trng vi ch ci th hai th
thay n bng ch B... Th d, gi s m in l dng ch
DKKG YG YJRWSRG EYGHRZYU
th theo quy tc trn, ta c bc in c gii m nh sau:
MEET AT AIRPORT SATURDAY
Vit chng trnh cho php c t bn phm mt bc in di dng
m ho v in ln mn hnh dng gii m ca n.
3. Gi s danh mc s in thoi ca nhng ngi quen ca bn lu
trong file TELNUM di dng nhng dng gm tn ngi y v s
in thoi ca mi ngi vi format A30, A8. File khng c dng u bo
thng tin v s dng d liu v cng khng c dng k hiu cui file bo
ht d liu. Hy vit chng trnh c vo t bn phm mt tn ngi no
, sau kim tra xem ngi c trong danh mc in thoi ca bn
khng. Nu khng c th a ra thng bo 'KHONG CO TRONG DANH
MUC', nu c th in ra tn ngi cng vi s in thoi tm c sao cho
s in thoi c t trong cp du ngoc ngay sau tn.
4. File d liu ADDR cha khong 50 tn ngi v a ch. Dng th
nht ca mi ngi cha h tn y (30 k t) gm h, ch m v tn.
Dng th hai cha a ch s nh v ng ph (35 k t), tn thnh ph
(15 k t) v s in thoi (15 k t). Mi xu k t c ghi trong cp
du nhy trn. Hy vit chng trnh c d liu v in ra thng tin v tng
ngi theo mu nhn sau y (th d):
HUY, N. Q.
91 NGUYEN THIEN THUAT
NHA TRANG, (058)832536
Mi nhn cch nhau bn dng. Ch sau tn thnh ph l du phy, khng
nn mt du cch no trc du phy .
5. Gi s bn bit rng ngy u nm ca mt nm l ngy th
my trong tun l. Hy vit chng trnh in t lch thng Ging ca nm
di dng d nhn.
6. Gi s bn bit ngy u nm ca mt nm no l th my
trong tun l. Hy vit chng trnh in t lch ca mt thng, nm bt k
trong tng lai di dng d nhn. Thng v nm nhp t bn phm.
7. Vit chng trnh in bng cc ton t lgic (bng 4.2, chng 4,
trang 56).
8. Vit th tc TDBANG (N, TENCOT) trong N l i s nguyn,
TENCOT l mng mt chiu gm N phn t vn bn chuyn dng in ra
mt tiu ct ca bng. Th d nu chng trnh gi th tc ny v
chuyn i s thc t bng 12 v mt mng 12 tn vit tt thng ting Anh
JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP,
OCT, NOV, DEC th chng trnh s in ra tt u bng c dng nh
di y:
JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC

9. S liu gi tr ngy ca cc yu t kh tng thy vn ti trm quan
trc c lu trong file ASCII c quy cch ghi nh sau: Dng trn cng
ghi tn trm. Dng th 2 c hai s nguyn vit cch nhau ln lt ch tng
s ngy quan trc v s yu t c quan trc. Dng th ba c 6 s nguyn
vit cch nhau ln lt ch ngy, thng, nm u v ngy, thng, nm cui
quan trc. Dng th 4 l tiu ct lit k tn tt c cc yu t c quan
trc, mi tn c ghi vi rng 8 v tr v cn bn phi. Cc dng tip

94
theo ln lt ghi gi tr ca cc yu t, mi dng mt ngy. Tnh gi tr
trung bnh thng ca tt c cc yu t trong tt c cc nm quan trc. Kt
qu ghi vo nhng file mi, mi yu t mt file, sao cho tn file trng vi
tn ca yu t quan trc.



















Chng 11 - Nhng c im b sung v file
11.1. Cc file ni ti (Internal Files)
Khi mt n v file trong cc lnh nhp hoc xut l tn ca mt bin
k t, th lnh s chuyn d liu t mt vng lu gi ni ti trong b nh
sang mt vng khc. Nhng vng lu gi ny c gi l cc file ni ti
(internal file). Th d, ta c th c d liu t mt xu k t thay v c t
mt dng d liu trong file thng thng vi nhng lnh sau y:
CHARACTER * 13 DATA1
INTEGER I, J
REAL X
DATA1 = '137 65 42.17'
READ (DATA1, *) I, J, X
Nhng lnh trn y c ngha rng chng ta khai bo mt bin c kiu
vn bn DATA1 vi di 13 k t. Sau gn cho bin ny dng vn
bn:
137 65 42.17
l vic bnh thng, chng ta bit t trc n nay. Nhng hy ch
n lnh cui cng. l lnh:
READ (DATA1, *) I, J, X

95
Trng lnh ny ging nh mt lnh c d liu bnh thng, ch c khc l
thay v n v file trong cp du ngoc n ta a tn bin DATA1 vo
. Kt qu l sau lnh c ny cc on vn bn biu din nhng ch s
137, 65 v 42.17 c c ra nh l nhng s nguyn, s thc v gn
vo cc bin nguyn I, J v bin thc X trong danh sch cc bin cn c
ca lnh READ mt cch ng n. Sau nhng lnh ny gi tr cc bin s
s nh sau:
I s bng 137, J s bng 65 v X bng 42.17.
y l mt c im rt quan trng ca Fortran. Ta s thy ch li ca
c im ny ca file ni ti qua th d sau:
INTEGER PTR
REAL AMOUNT
CHARACTER * 15 TEMP
. . .
. . .
READ (12, 5) TEMP
5 FORMAT (A10)
IF (INDEX (TEMP, '$') .NE. 0) THEN
PTR = INDEX (TEMP, '$')
TEMP (PTR: PTR) = ' '
END IF
READ (TEMP, *) AMOUNT
Vi on chng trnh ny d liu t trong n v file (12) thng
thng (file ngoi) c c vo bin k t TEMP. Trong trng hp d
liu c km theo du $ bn tri (cch vit du la ng trc v dnh
lin s tin ca nhng ngi M thng lm), th lnh c
READ (12,5) TEMP
vn khng mc li v kiu d liu. Sau ta x l, thay k t $ bng k t
du trng v c ly gi tr s thc AMOUNT bng lnh c file ni ti
READ (TEMP, *) AMOUNT
Nhn thy rng lnh c d liu t file ni ti hon ton tng t lnh c
cc file thng thng. Thay v s hiu thit b hay s hiu file, ta ghi tn
bin ( y l bin TEMP) vo v tr ca thit b hay s hiu file.
By gi ta xt mt th d v s dng file ni chuyn i d liu s
thnh d liu vn bn. Gi s ta mun to ra 12 tn file ln lt l GIO.1,
GIO.2, ..., GIO.12. on chng trnh sau y c th lm c vic :
INTEGER J
CHARACTER *6 TENF(12), TAM
DO J = 1, 12
IF (J .LT. 10) THEN
WRITE (TAM, (I1)) J
ELSE
WRITE (TAM, (I2)) J
END IF
TENF (J) = GIO // . // TAM
END DO
11.2. Cc file truy nhp tun t (Sequential Files)
Cc file c s dng trong tt c cc th d t trc ti nay gi l
file truy nhp tun t v mt khi file c to ra, ta khng th cp nht
mt bn ghi n l no trong n. Mun thay i mt bn ghi, ta phi c
cc thng tin trong bn ghi, sa i n v sau ghi vo mt file khc.
By gi ta s xt lnh OPEN phc tp c thm nhng ch nh khc so vi

96
nhng th d trc y:
OPEN (UNIT = Biu thc nguyn,
*
FILE = Biu thc k t,
*
ACCESS = Biu thc k t,
*
STATUS = Biu thc k t,
*
FORM = Biu thc k t,
*
IOSTAT = Bin nguyn,
*
RECL = Biu thc nguyn,
*
BLANK = Biu thc k t,
*
ERR = Nhn lnh chuyn iu khin)
Biu thc nguyn trong ch nh UNIT, thng l mt hng, c s
dng trong cc lnh READ hoc WRITE ch n v file c dng.
Biu thc k t trong ch nh FILE l tn ca file cn m. Hai ch
nh va ri chng ta quen dng trong cc chng trc.
Biu thc k t trong ch nh ACCESS phi c gi tr bng
'DIRECT'' hoc SEQUENTIAL' dng ch file thuc loi truy cp trc
tip hay truy cp tun t. Nu vng mt ch nh ny th ngm nh l
'SEQUENTIAL' nh trc y chng ta dng.
Biu thc k t ca ch nh STATUS c th c mt trong nhng gi
tr l NEW' ( ch file mi s to ra bng lnh WRITE), hoc 'OLD' (file
ang tn ti), hoc UNKNOWN (cha r), hoc 'SCRATCH' (file xut,
s b xa khi chng trnh kt thc).
Biu thc k t trong ch nh FORM hoc c gi tr l
'FORMATTED' hoc l 'UNFORMATTED' hay BINARY. Cc file
FORMATTED c th dng vi c lnh READ v WRITE c nh dng
hoc dng vi cc lnh nhp, xut n gin. Trong file UNFORMATTED
d liu c truy cp nh l cc xu nh phn, khng phi l cc s hay cc
k t. Nu ch nh FORM vng mt th ngm nh s l FORMATTED
i vi cc file tun t v UNFORMATTED i vi cc file trc tip.
IOSTAT c th dng khi phc li khi m file. Nu khng c li
khi m file, bin nguyn s c gi tr 0. Nu c li, th d khng tm thy
file vi tn ch nh, th mt gi tr khc 0 s c lu trong bin. Ngi
ta thng kim tra gi tr ca bin ny quyt nh hnh ng tip theo.
Th d
CHARACTER TEN *12, TEMP *70
PRINT *, GO TEN FILE
READ (*, (A12)) TEN
OPEN (UNIT=15, FILE=TEN, STATUS=OLD, IOSTAT=IERR)
IF (IERR .EQ. 0) THEN
. . .
. . .
. . .
ELSE
PRINT*, LOI MO FILE ,IERR
END IF
c t IOSTAT cng c th dng vi cc lnh READ v WRITE.
Ch nh RECL cn cho cc file truy cp trc tip, khng dng vi
cc file truy cp tun t. Biu thc nguyn n ch nh di ca mt bn
ghi.
Biu thc k t ca ch nh BLANK c th l 'NULL' hoc 'ZERO'.
Nu c t l 'NULL' cc du trng trong cc trng s b b qua, nu l
'ZERO' cc du trng c xem l cc s 0. Ngm nh l 'NULL'.

97
Ch nh ERR l tu chn v c gi tr x l li. Nu li xy ra
trong khi thc hin lnh OPEN hay mt lnh no c cha ch nh ny
th chng trnh s chuyn iu khin ti lnh c nhn ghi trong ch nh
ERR thay v to ra li thc hin chng trnh. Ch nh ERR cng dng
vi cc lnh READ v WRITE.
- Lnh CLOSE l mt lnh thc hin, n ngt mt file ngoi khi
chng trnh. Dng tng qut nh sau:
CLOSE (UNIT = Biu thc nguyn,
* STATUS = Biu thc k t,
* IOSTAT = Bin nguyn,
* ERR = Nhn lnh chuyn iu khin)
Lnh CLOSE v cc ch nh l tu chn. Ch nh STATUS trong
lnh CLOSE c gi tr KEEP c ngha file c gi li, DELETE c
ngha file khng cn na v nn xa i.
- Lnh REWIND
REWIND (UNIT = Biu thc nguyn,
* IOSTAT = Bin nguyn,
* ERR = Nhn lnh iu khin)
dng chuyn v v tr bn ghi th nht trong file tun t.
- Lnh BACKSPACE
BACKSPACE (UNIT = Biu thc nguyn,
* IOSTAT = Bin nguyn,
* ERR = Nhn lnh iu khin)
chuyn v tr c ngc li v pha trc mt bn ghi trong file tun t.
- Lnh ENDFILE
ENDFILE (UNIT = Biu thc nguyn,
* IOSTAT = Bin nguyn,
* ERR = Nhn lnh iu khin)
ghi vo file mt bn ghi ch s kt thc file khi file c to ra.
11.3. Cc file truy cp trc tip (Direct-Access Files)
Cc bn ghi trong cc file truy cp trc tip c truy cp khng theo
cch tun t, m theo th t c ch nh trong chng trnh. Khi mt file
trc tip c m, ch nh ACCESS trong lnh OPEN phi t l
DIRECT v di ca bn ghi phi c cho vi ch nh RECL. Cc
lnh READ v WRITE phi cha ch nh REC cung cp s hiu ca
bn ghi cn truy cp.
Dng tng qut ca cc lnh READ hoc WRITE vi file truy cp
trc tip nh sau:
READ (S hiu file, nhn lnh FORMAT,
* REC = Biu th nguyn) Danh sch bin

WRITE (S hiu file, nhn lnh FORMAT,
* REC = Biu thc nguyn) Danh sch bin
Biu thc nguyn trong ch nh REC dng ch s hiu bn ghi cn
x l. Cc ch nh ERR v IOSTAT c th c s dng vi cc lnh
READ hoc WRITE trc tip. Tu chn END c th ch dng vi lnh
READ. Khi t chc file truy cp trc tip, ngi ta thng s dng s th

98
t hoc s hiu phn bit - mt phn ca bn ghi lm s hiu bn ghi. Th
d cc s hiu phn bit ca sinh vin trong mt trng i hc thng bt
u bng 00001 ri n 00002... Do thng tin v sinh vin s 00210 c
th c lu trong bn ghi 210. i khi c th thc hin mt s tnh ton
vi mt trng ca bn ghi nhn c s hiu ca n.
File truy cp trc tip thng c to ra bng cch ghi thng tin vo
mt cch tun t, vi bn ghi bt u bng 1 v tng ln 1 mi ln c mt
bn ghi mi c vit vo. File ny c th x l theo th t tun t bng
cch thay i s hiu bn ghi t 1 n tng s tt c cc bn ghi. Tuy
nhin, u im ca file trc tip s th hin r khi chng ta mun cp nht
thng tin trong mt s bn ghi ca file. Thay v c tng bn ghi mt cch
tun t, tm bn ghi m ta mun cp nht, ta ch cn ch nh s hiu bn
ghi v bn ghi t ng c x l. Khi cp nht thng tin xong, ta c
th ghi thng tin mi vo bn ghi. Nu trong lnh READ ta ch nh mt s
hiu bn ghi m bn ghi khng tn ti th s xy ra li. khi phc li,
ch nh ERR cn phi c mt trong lnh READ.
11.4. Lnh truy vn INQUIRE
Lnh INQUIRE c hai dng:
INQUIRE (FILE = biu thc k t, danh sch ch nh truy vn)
INQUIRE (UNIT = biu thc nguyn, danh sch ch nh truy vn)
Lnh ny l mt lnh thc hin, n truy vn thng tin v file hay s
hiu file. Bng 9.1 lit k nhng ch nh truy vn. Th d:
INQUIRE (FILE = 'TSDATA', SEQUENTIAL = TRALOI)
INQUIRE (UNIT = 12, SEQUENTIAL = TRALOI)


Bng 11.1. Cc ch nh truy vn ca lnh INQUIRE
Ch nh truy vn Kiu bin
Gi tr truy vn
file FILE
Gi tr truy vn
n v file UNIT
ACCESS = CHARACTER
'SEQUENTIAL'
'DIRECT'
'SEQUENTIAL'
'DIRECT'
BLANK = CHARACTER
'NULL'
'ZERO'
'NULL'
'ZERO'
DIRECT = CHARACTER
'YES'
'NO'
_
ERR = INTEGER S hiu lnh x l li S hiu lnh x l li
EXIST = LOGICAL
.TRUE.
.FALSE.
.TRUE.
.FALSE.
FORM = CHARACTER
'FORMATTED'
'UNFORMATTED'
'FORMATTED'
'UNFORMATTED'
FORMATTED = CHARACTER
'YES'
'NO'
'UNKNOWN'

IOSTAT = INTEGER M li M li
NAME = CHARACTER
Tn file nu file
khng phi l file loi
scratch
NAMED + = LOGICAL _
.TRUE.
.FALSE.
NEXTREC = INTEGER
S hiu bn ghi tip
theo trong file truy
cp trc tip
S hiu bn ghi tip
theo trong file truy cp
trc tip
NUMBER + = INTEGER n v file
OPEND = LOGICAL
.TRUE.
.FALSE.
.TRUE.
.FALSE.
RECL = INTEGER di bn ghi di bn ghi
SEQUENTIAL = CHARACTER
'YES'
'NO'
'UNKNOWN'

UNFORMATTED = CHARACTER
'YES'
'NO'
'UNKNOWN'


99
Th d 36: S tng tc gia ngi dng v chng trnh. Gi s
khi chng trnh yu cu ngi dng g mt tn ca file d liu m ra
lm vic trong chng trnh. Trng hp file khng tn ti, chng
trnh s kt thc bi li thc hin. Nu ta dng lnh INQUIRE, chng
trnh c th xc nh file c tn ti khng v nu khng tn ti, chng
trnh nhc ngi dng g mt tn file khc. Cc lnh sau y thc hin s
tng tc ny:
CHARACTER *70 TENFIL, TIT
LOGICAL XONG, OK, CO
XONG = .FALSE.
OK = .FALSE.
PRINT *, 'NHAP TEN FILE'
READ *, TENFIL
5 IF (.NOT. XONG) THEN
INQUIRE (FILE = TENFIL, EXIST = CO)
IF (.NOT. CO) THEN
PRINT *, 'FILE KHONG TON TAI'
PRINT *, 'NHAP TEN KHAC HOAC GO THOI'
READ *, TENFIL
IF (TENFIL .EQ. 'THOI') XONG = .TRUE.
ELSE
XONG = .TRUE.
OK = .TRUE.
ENDIF
GOTO 5
ENDIF
IF (OK) THEN
OPEN (UNIT = 10, FILE = TENFIL, STATUS = 'OLD')
. . .
. . .
. . .
END IF
END
Bi tp
1. Vit chng trnh m v in s bn ghi trong cc file DATA1 v
DATA2. Gi s cc file l file tun t v mi bn ghi cha hai gi tr
thc vi format sau:
FORMAT (F6.2, 1X, F6.2)
Nu li xy ra khi m file, hy in thng bo li thay v in s bn ghi.
2. File TEM60.JAN lu trng ba chiu nhit nc bin ng
thng Ging phn gii 1
o
kinh v c quy cch ghi nh sau: Dng u
tin gm 5 s nguyn cch nhau ln lt ch kinh mp tri, kinh mp
phi, v mp trn, v mp di ca min khng gian v s tng su.
Dng th hai ghi su (s nguyn) ca tng trn cng. Sau l bng gi
tr nhit (s thc cch nhau) vi s ct bng s im nt theo kinh
tuyn, s dng bng s im nt theo v tuyn. Cc tng tip theo ghi hon
ton tng t. Gi tr nhit khuyt hoc ri vo vng t lin c ghi
bng s 99.99. Vit chng trnh tnh gi tr nhit nc trung bnh ton
bin ng.
3. Vi file s liu ca bi tp 2, vit chng trnh c thng tin trong
file v to cho mi im nt thuc min tnh mt file t tn theo quy tc
sau: bt u bng ch K, sau n cc ch s ch kinh im, sau
ch V v cc ch s ch v im, ui file l .BLN. Trong cc file c

100
quy cch ghi nh sau, dng trn cng c mt s nguyn ch s tng quan
trc thc t ca im, mt du cch v ch s 1. Sau lit k lin tip gi
tr nhit v tng su ng vi nhit vi du ngc li.
4. Gi s c file d liu lu gi tr quan trc ca mt s yu t kh
tng thy vn ti trm hi vn, c quy cch ghi nh sau:
- Dng th nht c hai s nguyn 1 v 2 cch nhau mt du trng.
- Dng th hai ghi tn trm (khng qu 100 k t).
- Dng th ba ghi hai s nguyn ch s dng d liu (khng qu 5000)
v s yu t quan trc (khng qu 12) cch nhau t nht mt du trng.
- Dng th t ln lt ghi tn cc yu t c quan trc, mi tn vi
nh dng A8.
- Dng th 5 ln lt ghi n v o ca tng yu t quan trc, cng
vi nh dng A8.
- Mi dng trong cc dng tip sau ln lt ghi gi tr quan trc ca
cc yu t, mi gi tr ghi vi nh dng F8.2.
Vit chng trnh cho php nhp tn file t bn phm, c d liu v
lp phng trnh hi quy gia bin th nht (bin ph thuc) v bin th
hai (bin c lp). In kt qu ra mn hnh theo quy cch sau: gi s tn
bin th nht l Tw, bin th hai l Ta, phng trnh phi vit c dng:
Tw = 0.915 Ta + 1.237
(Ghi ch: xem cng thc trong ph lc 3).
5. Ci tin chng trnh trong bi tp 4 cho php ngi dng tu
ch nh bin ph thuc v bin c lp t bn phm.
6. Vi file d liu m t trong bi tp 4, lp chng trnh tnh
phng trnh hi quy nhiu bin gia yu t quan trc th nht (bin ph
thuc) v cc yu t quan trc 2, 3, 6, 8, 9. In kt qu ln mn hnh di
dng phng trnh hi quy vi tn cc yu t ghi trong file.
Gi : Xem phng php thit lp phng trnh hi quy tuyn tnh
nhiu bin trong ph lc 4.
7. File HESOA.MAT lu cc gi tr ca cc h s ca h phng trnh
i s tuyn tnh theo quy cch nh sau: Dng th nht c mt s nguyn
ch s phng trnh. Cc dng tip sau ghi cc gi tr cc h s, k c h s
t do ng vi tng phng trnh, mi phng trnh trn mt dng, mi h
s ghi vi nh dng 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
Vit chng trnh c file v gii h phng trnh bng phng php
loi bin Gauss. Kt qu in ra mn hnh gm: vit li h phng trnh, sau
cch ra mt dng ri ghi cc nghim dng cui cng, th d, ng vi
ma trn cc h s nh trn phi c kt qu trn mn hnh nh sau:
1.1161X1 + 0.1254X2 + 0.1397X3 + 0.1490X4 = 1.5471
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
Gi : Xem phng php gii h phng trnh i s tuyn tnh theo
s loi bin Gauss trong ph lc 2.
8. File HESOAB.MAT lu cc gi tr ca cc h s ca h phng
trnh i s tuyn tnh theo quy cch nh m t trong bi tp 7. Gi s

101
ma trn cc h s ] [
j i
a A = l ma trn i xng, tc
) ..., , 2 , 1 , ( n j i a a
ji ij
= = .
Hy vit chng trnh c file cc h s v gii h phng trnh. In
kt qu theo quy cch ca bi tp 7.
Gi : Trng hp ma trn cc h s A l ma trn i xng, nn
dng phng php cn bc hai gii h phng trnh i s tuyn tnh
(ph lc 2).


























Ti liu tham kho
1. Etter D. M. Structured Fortran 77 for engineers and scientists. Fourth
edition. The Benjamin/Cummings Publishing Co., Inc. California, 1993,
616 p.
2. Koffman Elliot B., Friedman Frank L. Fortran with engineering
applications. Fifth Edition. Addison-Wesley Publishing Co.
Massachusetts-..., 1993, 664 p.
3. N. V. Kopchenova and I.A. Maron. Computational Mathematics.
Worked examples and problems with elements of theory. Mir
Publishers, Moscow, 1975.
4. . . . -.
, 1998, 397 c.
5. . . : -
IMSL. -, , 2000,
448 c.
6. . ., . .
. - , 1998, 528 .



102

Ph lc 1: Bng cc hm chun ca FORTRAN
Trong bng cc hm chun di y, tn ca cc i s s ch kiu d
liu theo quy c sau:
i s Kiu d liu
X thc
CHX xu k t
DX chnh xc i
CX phc
LX lgic
IX nguyn
GX t sinh (in m, nghing)

Tn hm Kiu hm nh ngha
SQRT(X) Thc
X
DSQRT (DX) chnh xc i
DX
CSQRT (CX) Phc
CX
ABS (X) Thc X
IABS (IX) Nguyn IX
DABS (DX) chnh xc i DX
CABS (CX) Phc CX


Tn hm Kiu hm nh ngha
EXP (X) Thc
X
e
DEXP (DX) chnh xc i
DX
e
CEXP (CX) Phc
CX
e
LOG (GX) Kiu theo GX
GX
e
log
ALOG (X) Thc
X
e
log
DOG (GX) chnh xc i
DX
e
log
CLOG (CX) Phc CX
e
log
LOG10 (GX) Kiu theo GX
GX
10
log
ALOG10 (X) Thc
X
10
log
DLOG10 (DX) chnh xc i
DX
10
log
REA L(GX) Thc Chuyn GX thnh gi tr thc
FLOAT (IX) Thc Chuyn IX thnh gi tr thc
SNGL (DX) Thc Chuyn DX thnh chnh xc
n
ANINT(X) Thc Lm trn ti s thc gn nht
DNINT(DX) chnh xc i Lm trn ti s thc gn nht
NINT(X) Nguyn Lm trn ti s nguyn gn nht
IDNINT (DX) Nguyn Lm trn ti s nguyn gn nht
AINT (X) Thc Ct phn thp phn ca X
DINT (DX) chnh xc i Ct phn thp phn ca DX
INT (GX) Nguyn Ct GX thnh s nguyn
IFIX (X) Nguyn Ct X thnh s nguyn
IDINT (DX) Nguyn Ct DX thnh s nguyn
SIGN (X, Y) Thc Gn du ca Y cho X
ISIGN (IX, IY) Nguyn Gn du ca IY cho IX
DSIGN (DX, DY) chnh xc i Gn du ca DY cho DX


103
Tn hm Kiu hm nh ngha
MOD (IX,IY) Nguyn Ly s d ca php chia IX / IY
AMOD (X,Y) Thc Ly s d ca php chia X / Y
DMOD (DX,DY) chnh xc i Ly s d ca php chia DX / DY
DIM (X,Y) Thc X (cc tiu ca X v Y)
IDIM (IX,IY) Nguyn IX (cc tiu ca IX v IY)
DDIM (DX,DY) chnh xc i DX (cc tiu ca DX v DY)
MAX (GX,GY,...) Kiu theo GX, GY, ... Cc i ca (GX, GY, ...)
MAX0 (IX,IY,...) Nguyn Cc i ca (IX, IY, ...)
AMAX1 (X,Y,...) Thc Cc i ca (X, Y, ...)
DMAX1 (DX,DY,...) chnh xc i Cc i ca (DX, DY, ...)
AMAX0 (IX,IY,...) Thc Thc, cc i ca (IX, IY, ...)
MAX1 (X,Y,...) Nguyn Cc i ca (X, Y, ...)
MIN (GX,GY,...) Kiu theo GX,GY,... Cc tiu ca (GX, GY, ...)
MIN0 (IX,IY,...) Nguyn Cc tiu ca (IX, IY, ...)
AMIN1 (X,Y,...) Thc Cc tiu ca (X, Y, ...)
DMIN1 (DX,DY,...) chnh xc i Cc tiu ca (DX, DY, ...)
AMIN0 (IX,IY,...) Thc Cc tiu ca (IX, IY, ...)
MIN1 (X,Y,...) Nguyn Cc tiu ca (X, Y, ...)
SIN (X) Thc
X sin (X - raian)
DSIN (DX) chnh xc i
DX sin (DX - raian)
CSIN (CX) Phc CX sin
COS (X) Thc X cos (X - raian)
DCOS (DX) chnh xc i
DX cos (DX - raian)
CCOS (CX) Phc CX cos
TAN (X) Thc
X tg (X - raian)
DTAN (DX) chnh xc i DX tg (DX - raian)

Tn hm Kiu hm nh ngha
ASIN (X) Thc
X arcsin
DASIN (X) chnh xc i DX arcsin
ACOS (X) Thc X arccos
DACOS (DX) chnh xc i DX arccos
ATAN (X) Thc
X arctg
DATAN (DX) chnh xc i DX arctg
ATAN2 (X,Y) Thc
) / ( arctg Y X
DATAN2 (DX,DY) chnh xc i
) / ( arctg DY DX
SINH (X) Thc
X sh
DSINH (DX) chnh xc i DX sh
COSH (X) Thc
X ch
DCOSH (DX) chnh xc i DX ch
TANH (X) Thc X th
DTANH (DX) chnh xc i DX th
DPROD (X, Y) chnh xc i Tch ca X v Y
DBLE (X) chnh xc i Chuyn X thnh chnh xc i
CMPLX (X) Phc i X 0 +
CMPLX (X, Y) Phc Yi X +
AIMAG (CX) Thc Phn o ca CX
REAL (CX) Thc Phn thc ca CX
CONJG (CX) Phc Lin hp ca CX, bi a
LEN (CHX) Nguyn di ca xu k t CHX
INDEX (CHX, CHY) Nguyn V tr ca xu CHY trong xu CHX


104

Tn hm Kiu hm nh ngha
CHAR (IX) K t
K t ng vi v tr th IX trong
chui so snh
ICHAR (CHX) Nguyn
V tr ca k t CHX trong chui so
snh
LGE (CHX, CHY) Lgic
Gi tr ca biu thc (CHX ln hn
hoc bng CHY v t vng)
LGT (CHX, CHY) Lgic
Gi tr ca biu thc (CHX ln hn
CHY v t vng)
LLE (CHX, CHY) Lgic
Gi tr ca biu thc (CHX nh
hn hoc bng CHY v t vng)
LLT (CHX, CHY) Lgic
Gi tr ca biu thc (CHX nh
hn CHY v t vng)















Ph lc 2: Phng php Gauss gii h phng
trnh i s tuyn tnh

= + + +
= + + +
= + + +

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

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
.
Nu ma trn A khng suy bin, tc
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


105
th h (*) c nghim duy nht. C th tnh nghim theo cng thc Cramer
A
A
x
i
i


det
det
=
,
trong
i
A ma trn A vi ct i b thay th bng ct cc s hng t do
b .
1. Phng php loi bin Gauss gii h phng trnh i s
tuyn tnh:
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 phn t chnh 0
11
= a . Chia phng trnh th nht cho
11
a , ta
c
15 4 14 3 13 2 12 1
b x b x b x b x = + + + , (2)
vi ) 5 , 4 , 3 , 2 (
11
1
1
= = j
a
a
b
j
j
.
Dng phng trnh (2) loi n
1
x khi cc phng trnh s 2, 3, 4
ca h (1): Mun vy, nhn phng trnh (2) tun t vi
41 31 21
, , a a a v
tun t ly cc phng trnh s 2, 3, 4 tr i cc tch tng ng va nhn
c, ta c ba phng trnh:

= + +
= + +
= + +
) 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)
By gi chia phng trnh th nht ca h (3) cho phn t chnh
) 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
= = .
Bng cch tng t nh khi loi
1
x , by gi ta loi
2
x khi cc
phng trnh 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)
Chia phng trnh th nht ca h (6) cho phn t chnh
) 2 (
33
a , ta c:
) 2 (
35 4
) 2 (
34 3
b x b x = + , (8)
trong

106
) 5 , 4 (
) 2 (
33
) 2 (
3 ) 2 (
3
= = j
a
a
b
j
j
.
Sau nh (8) ta loi
3
x khi phng trnh th hai ca h (6), nhn
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 vy ta a h (1) v h tng ng c ma trn cc h s l
ma trn tam gic

=
= +
= + +
= + + +




) 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) xc nh cc 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)
Vy th tc gii h phng trnh i s tuyn tnh bc nht quy v hai
qu trnh:
a) Qu trnh thun: a h (1) v dng tam gic (10);
b) Qu trnh nghch: tm n theo cc cng thc (11).
Nu phn t chnh ca h bng khng th ch cn thay i ch ca cc
phng trnh trong h tng ng lm cho phn t chnh khc khng.
S php tnh s hc N cn thc hin trong phng php Gauss bng
) 1 (
3
) 2 ( ) 1 ( 2
+
+ +
= n n
n n n
N .
Vy s php tnh s hc xp x t l vi lu tha bc ba ca s n.
2. Phng php cn bc gii h phng trnh i s tuyn tnh
trong trng hp ma trn A l ma trn i xng
Phng php ny thun li trong trng hp h phng trnh
A x = b (12)
c ma trn A l ma trn i xng, iu thng gp trong cc bi ton k
thut.
Theo phng php ny ma trn A c biu din thnh tch ca hai
ma trn tam gic chuyn 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


Nhn hai ma trn T' v T v cho tch bng ma trn A, ta suy ra c
cng thc tnh cc phn t
ij
t :

107
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
> =
<

=
s < =
> = =

=




0
) (
) 1 (
) 1 ( ,
1
1
1
1
2
11
1
1 11 11
(14)
Nh vy ta thay h (12) bng hai h tng ng
T' y = b, T x = y 15)
hay

= + + +
= +
=

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 cc cng thc tnh:
) 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)
Vy qu trnh thun gm tnh cc phn t ca ma trn T theo cc
cng thc (14). Qu trnh nghch l tnh cc ma trn ct y v x theo cc
cng thc (18), (19).









108

Ph lc 3: Phng php bnh phng nh nht
trong phn tch hi quy
1. M hnh tuyn tnh
M hnh hi quy tuyn tnh c dng:
b ax x f y + = = ) ( .
Theo phng php bnh phng nh nht, cc h s hi quy a v b
trong phng trnh trn c tm sao cho tng bnh phng sai s bng

=
=
n
k
k k
b ax y E
1
2
) (

cc tiu. Ln lt ly o hm biu thc ny theo a , b v cho bng
khng, ta c h phng trnh sau y xc 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
.
Vy cc h s hi quy c tnh theo cc cng thc 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 cn c th tnh theo cng thc:
n
x a y
b
n
k
k
n
k
k
= =

=
1 1

. (22)
2. M hnh a thc
Phng php bnh phng nh nht cng c th p dng tnh cc
h s hi quy a thc dng
m
n
x a x a x a a x f + + + + = ... ) (
2
2 1 0
.
th d i vi m hnh bc hai
2
2 1 0
) ( x a x a a x f + + = .
Ly o hm tng sai s theo cc h s v cho bng khng ta c h
sau y xc nh cc h s hi quy bc hai:

109

= + +
= + +
= + +



= = = =
= = = =
= = =
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 nguyn tc ta c th s dng phng php ny tm phng
trnh a thc bc bt k. Tuy nhin trong thc t phng php tr thnh
khng n nh khi bc a thc ln hn v cc sai s lm trn s trong my
tnh.
3. M hnh phi tuyn
Phng php bnh phng nh nht c th p dng cho hm bt k,
nhng h cc phng trnh tm cc h s c th phi tuyn, v do
khng th gii c bng cch s dng cc phng trnh tuyn tnh. Tuy
nhin, trong mt s trng hp, mt hm phi tuyn c th chuyn thnh
mt hm tuyn tnh. Th d v mt hm c th tuyn tnh ho l
a
x b x f ) ( = (24)
Nu ly loga hai v ca phng trnh ny, ta c
b x a x f ln ln ) ( ln + = . (25)
Nu k hiu
) ( ln ) ( x f x g = (26)
b b ln
~
= (27)
x x ln
~
= (28) y y ln
~
=
(29)
ta c
b x a x g
~
~
) ( + = (30)
Vi phng trnh (30) cc h s hi quy a v b
~
tnh theo cc cng
thc


= =
= = =

=
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)
Vy cng vic tnh ton gm: chuyn i cc gi tr s liu
k
x v
k
y
theo cc cng thc (28), (29), tnh cc tng, kt qu th vo cc phng
trnh (31), (32) tm a v b
~
. Gii phng trnh (27) i vi b v t vo
phng trnh (24).









110

Ph lc 4: S ng dng phng php hi
quy nhiu bin
Gi s c n quan trc i vi bin ph thuc y v cc bin c lp
m
x x x ..., , ,
2 1
. Phng trnh hi quy c thit lp nh sau:
m m
x a x a x a a y + + + + = ...
2 2 1 1 0
.
Cc h s hi quy ) ,..., 1 ( m i a
i
= c chn sao cho tho mn
( )

=
= =
n
i
m m
x a x a x a a y
1
2
2 2 1 1 0
min ... o
Ln lt ly o hm biu thc trn theo
m
a a a a ,..., , ,
2 1 0
v cho cc
o hm bng khng, ta c h 1 + m phng trnh xc nh cc 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)
H phng trnh ny gi l h phng trnh chnh tc xc nh cc
h s hi quy. Di dng ma trn ta vit h ny 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)
vi du | | k hiu php ly tng

n
1
.
tm cc h s hi quy
m
a a a a ,..., , ,
2 1 0
ta phi gii h phng
trnh chnh tc theo phng php loi bin Gauss hoc phng php cn
bc hai m t trong ph lc 2 v ma trn h s ca cc phng trnh
chnh tc l ma trn i xng. Di y dn hai th tc h tr cho vic lp
h phng trnh i s tuyn tnh chun tc (34) SUBROUTINE
LHPTCT v gii h phng trnh bng phng php loi bin Gauss
SUBROUTINE GAUSS.
SUBROUTINE LHPTCT (Y, X, A, N, M)
INTEGER 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

111
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
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

SUBROUTINE GAUSS (M, A, X)
INTEGER M
REAL A (0 : 50, 0 : 51), X (0 : 50)
DO I = 0, M - 1
K = I
AMAX = ABS (A (K, K))
DO J = I + 1, M
R = ABS (A (J, I))
IF (AMAX .LT. R) THEN
AMAX = R
K = J
END IF
END DO
IF (K .NE. I) THEN
DO J = I, M + 1
AMAX = A (I, J)
A (I, J) =A (K, J)
A (K, J) = AMAX
END DO
END IF
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

You might also like