Professional Documents
Culture Documents
Ch bin: H S m
Li gii thiu
Quyn 4 Lp trnh tnh ton khoa hc k thut vi ngn ng lp trnh
Fortran trong b gio trnh Tin hc c s 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 ca mt ngn ng lp trnh
bc cao l Fortran, c im s dng chng trong khi lp trnh gii cc bi
ton thuc loi tnh ton khoa hc k thut, x l s liu thng gp trong qu
trnh hc tp v nghin cu ca sinh vin cc ngnh khoa hc t nhin v cng
ngh.
Mc tiu cui cng ca sch l gip sinh vin lm quen vi cc phng
php xy dng cc chng trnh my tnh, 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 ngnh o to ca mnh.
Nhng c im khc ca ni dung tnh ton khoa hc k thut ng dng lp
trnh nh qun l c s d liu, cc phng php thng k hin i, cc
phng php gii s tr nhng bi ton ca vt l, ha hc, sinh hc, c hc
cht lng, ng lc kh quyn, i dng... cha c cp y do khun
kh kin thc chuyn mn ca ngi hc v bn thn ngi bin son sch.
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 rng 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.
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 cng c
2
Mc lc
M u.................................................................................................................................... 6
Cu hi v bi tp phn m u ....................................................................................... 12
Chng 1 Cc kiu d liu c bn v cc php ton trong Fortran ................................. 13
1.1 D liu v cch biu din d liu .............................................................................. 13
1.2 Hng v bin.............................................................................................................. 14
1.2.1 Tn bin v tn hng........................................................................................... 14
1.2.2 M t (khai bo) kiu d liu ca bin v hng ................................................. 15
1.3 Bin c ch s (mng)................................................................................................ 18
1.3.1 Khi nim mng ................................................................................................. 18
1.3.2 M t mng......................................................................................................... 19
1.4 Cc hm chun .......................................................................................................... 20
1.5 Lnh gn v cc ton t s hc.................................................................................. 21
1.5.1 Lnh gn ............................................................................................................. 21
1.5.2 Cc php tnh s hc n gin............................................................................ 22
1.5.3 c lng biu thc s hc ............................................................................... 22
1.5.4 Khi nim v ct v cc php tnh hn hp........................................................ 23
1.5.5 Khi nim v s qu b v s qu ln (underflow, overflow) ............................ 24
Cu hi v bi tp chng 1 ............................................................................................. 24
Chng 2 - Nhp v xut d liu n gin ......................................................................... 26
2.1 Cc lnh xut v nhp d liu ................................................................................... 26
2.2 Cc c t trong lnh FORMAT................................................................................ 28
Cu hi v bi tp chng 2 ............................................................................................. 31
Chng 3 Cc cu trc iu khin ................................................................................... 33
3.1 Khi nim v cu trc iu khin .............................................................................. 33
3.2 Cc loi cu trc iu khin c bn........................................................................... 33
3.2.1 Th d ng dng thut gii cu trc.................................................................... 34
3.2.2 Cu trc IF v cc lnh tng ng ..................................................................... 36
3.2.3 Cu trc lp v lnh DO ..................................................................................... 50
Cu hi v bi tp chng 3 ............................................................................................. 57
Chng 4 File d liu v t chc file d liu................................................................... 62
4.1 Khi nim v file d liu v t chc lu tr d liu ................................................ 62
4.2 Cc lnh nhp, xut d liu vi file........................................................................... 63
4.3 K thut c cc file d liu...................................................................................... 65
4.3.1 S dng ghi c ch nh.................................................................................. 66
4.3.2 Dng k hiu kt thc d liu ............................................................................ 67
4.3.3 S dng ty chn END....................................................................................... 68
4.4 To lp cc file d liu .............................................................................................. 69
4.5 K thut tr gip tm li chng trnh ...................................................................... 70
Cu hi v bi tp chng 4 ............................................................................................. 71
Chng 5 D liu kiu mng ........................................................................................... 73
5.1 Mng mt chiu......................................................................................................... 73
5.2 Lnh DATA............................................................................................................... 75
M u
Khi nim v lp chng trnh v thc hin chng trnh. Khi ngi
dng mun my tnh lm mt vic g , th d gii mt bi ton, x l cc
thng tin a ra thng tin khc, th phi vit ra mt chng trnh my
tnh thc hin. Tt c nhng g ta vit ra theo mt quy cch nht nh my
tnh tun t thc hin c, dn n kt qu mong mun, chnh l mt chng
trnh my tnh.
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 lp trnh Fortran cng thuc loi . Mi mt bc ta mun
my tnh thc hin phi c vit ra thnh mt cu lnh theo mt c php
ngn ng c th (language syntax) ca Fortran, gi l chng trnh ngun,
hay m ngun. M ngun c th son bng mt phn mm son tho bt k.
a s cc phin bn ca phn mm Fortran hin nay cng cung cp cho chng
ta cng c son m ngun chng trnh mt cch thun tin, d s dng.
Tuy nhin, chng trnh ta vit ra nh vy phi c mt chng trnh
chuyn dng 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 m ta mc phi khi vit cc dng lnh, tc cc li v chnh t,
c php, cc k hiu... Loi li ny gi l li dch, hay li c php (syntax
error). 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
X=A/ B
Gi tr
1
2
3
4
5
Trung bnh =
23.43
37.43
34.91
28.37
30.62
30.95
Nhng lnh thc hin thng l nhng lnh gn, lnh tnh ton cc 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.
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
tho vn bn no . Cc lnh ca mt chng trnh c vit thnh nhng
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 0.1) 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 vit
t sau ct 72 tr i b b qua.
Cc ct
1-5
Ct
6
Cc ct
7-72
Lnh Fortran
K t ni dng
Nhn lnh
Hnh 0.1 Quy cch vit lnh Fortran trn mn hnh son tho
Cu hi v bi tp phn m u
1. Nu dng ch ci C lm du ni dng lnh th c c khng?
2. Cc nhn trong chng trnh c cn c gi tr tng dn khng?
3. Mt chng trnh ch gm mi mt lnh END c phi l mt chng
trnh Fortran hon chnh khng?
4. Nu cc bc gii bi ton chn theo bng im thi ly 3 sinh vin c
im thi cao nht. Vit gi trnh cho bi ton .
12
Thc CX i
Lgic
Phc
K t
Loi
Integer, Integer*4 (4 byte)
Integer*2 (2 byte)
Real, Real*4 (4 byte)
Real*8; Double precision
(8 byte)
Logical (1 bit)
Complex; Complex*8
(4 byte thc, 4 byte o)
Character
Phm vi gi tr
2147 483 648 2147 483 647
32768 32767
S ch s
c ngha
10 38 10 38
Chnh xc
Chnh xc
7
10 308 10 308
15
false; true
Phn thc: 10 38 10 38
Phn o: 10 38 10 38
S k t bt k
Chnh xc
7
Chnh xc
! (1)
! (2)
! (3)
! (4)
! (5)
! (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 b = 5,0 (cm) cho bin day. Lnh (3) gn gi tr
h = 3,2 (cm) cho bin cao. Lnh (4) tnh gi tr ca biu thc 0,5 b h , tc
din tch s ca tam gic, bng 8 (cm2) 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 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
17
a21 a22
a13
a23
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 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.
18
1.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 a (n1 , n2 , ..., nl ), mat (m1 , m2 , ..., mk )
trong a, mat tn cc mng; n1, n2 ,..., nl , m1 , m2 ,..., mk 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 trc nht, ch s cui cng
bin i sau cng.
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
19
1.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 gp trong nhiu thut ton, nn
chng 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 1.2 lit k mt s hm chun ca Fortran thng dng trong sch
ny.
Bng 1.2 Mt s hm chun ca Fortran
Tn hm v i s
SQRT (x)
ABS (x)
SIN (x)
COS (x)
TAN (x)
EXP (x)
LOG (x)
LOG10 (x)
INT (x)
REAL (i)
MOD (i, j)
Gi tr hm
x
Cn bc hai ca x
x
Tr tuyt i ca x
sin ( x) x tnh bng raian
cos ( x) x tnh bng raian
tg ( x) x tnh bng raian
e x e nng ln lu tha x
ln ( x) Logarit t nhin ca x
lg ( x) Logarit c s 10 ca x
Chuyn phn nguyn ca s thc x thnh s nguyn
Gi tr thc ca i (chuyn mt gi tr nguyn thnh gi tr thc)
Ly phn d nguyn ca php chia hai s nguyn i / j
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. Cc i s ca cc
hm chun c th nhn gi tr t cc hng, bin, hay biu thc tnh ra gi tr
ca hm. 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 ni 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:
s = SIN (0.5)
tg = TAN (s)
20
Dng i s
Trong Fortran
a+b
a b
ab
a
b
a3
a+b
ab
a*b
a/b
a ** 3
b c + d c c lng bng (b c) + d.
Ring php nng ln ly tha th thc hin t phi sang tri:
a ** b ** c c c lng bng a ** (b ** c)
Th d: 2 * *3 * *2 bng 29 hay 512 ch khng phi l (2 * *3) * *2 = 82 = 64 .
Bng 1.4 Mc u tin cc php tnh s hc
u tin
1
2
3
4
Php tnh
Du ngoc
Nng ln ly tha
Nhn v chia
Cng v tr
Cu hi v bi tp chng 1
1. Hy biu din thnh dng F v dng E nhng s thc sau:
a) 3,14 b) 3,141593 c) 0,0026 d) 2,5 10 3 e) 14,0 f) 28,34
g) 6,023 1023 .
b b 2 4ac
2a
( a, b, c cc h s ca phng trnh).
1
2
x2
2
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 i1 = 1, i2 = 2, i3 = 3 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 165o. Hy vit biu thc
Fortran tnh s hiu cung ca hng gi .
8. Hy khai bo mt bin mng biu din tn vit tt gm ba ch ci
ting Anh ca tt c cc ngy trong tun.
9. Hy khai bo mt mng s thc vi kch thc va biu din
bng s liu p sut trn vng bin ng gii hn t kinh tuyn 99oE n kinh
tuyn 121oE, t v tuyn 1oN n v tuyn 25oN vi phn gii 15 pht theo
cc hng kinh tuyn v v tuyn.
25
30.00000
1/2 SinX =
0.2500000
Sang trang mi
Xung mt dng
Xung hai dng
Khng xung dng
PRINT 35
35 FORMAT (1 , 25X , THI NGHIEM SO 1)
3) c t Aw dng cho cc hng v bin k t, cc thng tin vn bn, ty
chn w bo cho my tnh s v tr ginh cho mt bin k t (vn bn) cn in.
Mc vn bn in ra cn l bn phi.
4) c t Iw dng cho s nguyn, trong w s v tr dng in gi tr
s nguyn.
5) c t Fw.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, thiu v tr so vi gi tr ca i lng cn in.
6) c t Ew.d dng ghi ra di dng ly 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 gi tr c g vo t bn phm ni trong mc
2.1, th kt qu cp lnh in ny trn mn hnh s nh sau:
1
1982
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
G io
T oc do
H uong
Cu hi v bi tp chng 2
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 g 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:
31
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
32
Ch gii gi trnh
Biu tng lu
TB TONG / N
TB = TONG / N
Nhp d liu
c A, B
Xut d liu
In A, B
c A, B
In A, B
So snh
Nu A > B
Bt u thut gii
Tn bi ton
A>B?
Bt u
Kt thc
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
.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
In Nhap HS
c a, b, c
Tnh
In -b / (2a)
=0
<0
S
=
In V nghim
a = 2a
In (-b + ) / a
In (-b - ) / a
Kt thc
c) 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) n1 , n 2 , n3
39
f ( x) = e x cos (t x + 1) ,
T = 0.1
X = 1.0
Tnh F
In X, F
X = X + 0.1
S
X>3
Kt thc
40
x = x + 0.1
IF (x 3.0) 12 , 12 , 4
4 STOP
END
i=i+1
x (i) = y (i)
GO TO 7
41
8 FORMAT (F12.2)
i=i+1
IF (i .LE. n) GOTO 3
END
Pl ( x) =
1
khi l = 0
khi l = 1
x
1
2
(3x 1) khi l = 2
2
1
(5 x 3 3x) khi l = 3
2
REAL x, p
INTEGER l, i
x = 0.4
l=0
28 i = l + 1
GO TO (12, 17, 21, 6) , i
12 p = 1.0
GO TO 24
17 p = x
21
6
24
GO TO 24
p = 0.5 * (3.0 * x ** 2 1.0)
GO TO 24
p = 0.5 * (5.0 * x ** 3 3.0 * x)
WRITE (* , 8) l , p
42
8
30
43
I = x 2 sin x
a
S 2 = 0,5 ( yi + yi +1 ) ( xi +1 xi )
i
y2
y1
x1 = a
x2
xn = b
epsil = 0.0001
a = 0.0
b = 3.141593
44
23 x 4 25 x 6
(1) n+1 2 2 n 1 x 2 n
+
... =
.
4!
6!
( 2n ) !
n =1
2 x2
.
n ( 2n 1)
Trong th d ny, ta ng dng phng php chia khi bi ton v chi tit
ha tng khi nh trnh by trong mc 3.2.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.
Khi 3: Tnh gi tr sin 2 x 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 ra lu thc hin trong
mi khi.
Thy rng khi 1 c th chi tit ha thnh ba bc con: V cng thc khai
45
Read
X > 90
Khi 1
T
X > 270
T
X = X 360
T
X =X 180
X = 180 X
X >180
X = X*3.1415 / 180
Khi 2
In tiu bng
In tiu ct
khi ny gm cc bc c th sau:
Gn 0 cho bin S (gi tr khi to ca sin 2 x cn tnh).
Gn 1 cho N (bt u xt s hng th nht).
Gn x 2 cho bin THEM (gi tr ca s hng th nht).
Chng no N 15 thc hin tun t 4 bc sau:
Cng s hng (THEM) vo bin S.
Nu N l in gi tr N , S , sin 2 x (tnh theo hm chun).
Tng thm 1 n v cho N .
2 X2
Tnh li bin THEM bng cch nhn chnh n vi
.
N ( 2 N 1)
S=0
N=1
THEM = X 2
S = S + THEM
N l
In N, S, sin 2 X
N=N+1
THEM = THEM *2 * X 2 / (N* (2N1)
N>15
47
2
*
5
4
ELSE
x = 180.0 x
END IF
END IF
x = x * 3.141593 / 180.0
PRINT 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
s = s + them
IF (MOD (n , 2) .EQ. 1) PRINT 4 , n , s , SIN (x) ** 2
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
10
20
30
40
50
60
80
90
100
120
140
160
180
220
240
260
280
300
350
400
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
N = 32
K=1
Khi 2
c H (K)
c T (K)
K=K+1
K>N
Khi 3
H (I +1) H0 H (I)
T
F
I=I+1
In H0, T0
(ti +1 ti ) (h0 hi )
.
hi +1 hi
C
C
5
C
4
2
1
3
6
INTEGER n, i, k
REAL h0, t0, h (35), t (35)
In li nhc v nhp su cn ni suy nhit
PRINT * , NHAP DO SAU XAC DINH NHIET DO
READ *, h0
In li nhc v nhp 32 cp gi tr su v nhit
n = 32
k=1
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
Ni suy gi tr nhit ti su H0
i=n-1
IF (h0 .GT. h(n)) GOTO 1
i=1
IF (h0 .GE. h (i) .AND. h0 .LE. h (i+1)) GOTO 1
i=i+1
GOTO 2
t0 = t(i) + (t(i+1) - t (i)) * (h0-h(i)) / (h(i+1) - h(i))
PRINT 3, h0
PRINT 6, t0
FORMAT (1X, DO SAU = , F6.1, M)
FORMAT (1X,NHIET DO = , F5.1, DO C)
END
Lnh 1
Lnh 2
...
Lnh m
GOTO n
END IF
50
51
50
i = 1 + 2 + . . . + 49 + 50
i =1
Vng lp While
sum = 0.0
DO 10 num = 1, 50
sum = sum + num
10 CONTINUE
sum = 0.0
num = 1
IF
(num .LE. 50) THEN
10
sum = sum + num
num = num + 1
GO TO 10
END IF
+ 1
53
BMAX = B (1)
DO 3 I = 2, 10
IF (BMAX .LT. B (I)) BMAX = B (I)
3 CONTINUE
PRINT *, B MAX = , BMAX
END
DO 15 i = 1, 5
DO 10 j = 1, 8
DO 5 k = 2, 10, 2
...
5
CONTINUE
10
CONTINUE
15 CONTINUE
DO 15 i = 1, 5
DO 10 k = 1, 8
...
10
CONTINUE
DO 5 k = 2, 10, 2
...
5
CONTINUE
15 CONTINUE
DO 20 j = 1, 5
DO 10 j = 1, 8
...
10
CONTINUE
DO 15 k = 2, 10, 2
DO 15 k = 2, 10, 2
...
15
CONTINUE
20 CONTINUE
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 s.
2
7
5
(dng th 3)
55
DO 2 i =1, n1 (dng th 7)
DO 7 i = 1, n (dng th 18)
N
N ! = 2 N ,
e
0.
1.
2.
6.
24.
118.
710.
4980.
39902.
359537.
3598694.
Cu hi v bi tp chng 3
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:
a = 2.2
b = 1.2
i =1
done = .TRUE.
x 2 khi x 0;
y= 3
x khi x > 0,
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:
57
TF = TR 459,67 o R
9
TF = TC + 32 o F
5
9
TR = TK
5
15
x
y
10
15
20
25
30
0
5
10
15
20
25
30
35
17,94
18,06
18,18
18,30
18,41
18,53
18,64
18,83
15,19
15,28
15,39
15,53
15,66
15,79
15,93
16,07
13,10
13,20
13,28
13,41
13,57
13,73
13,84
14,00
11,45
11,54
11,68
11,77
11,90
12,03
12,12
12,23
10,09
10,18
10,27
10,40
10,47
10,58
10,68
10,82
8,95
9,08
9,18
9,26
9,35
9,48
9,58
9,67
8,00
8,09
8,17
8,27
8,34
8,43
8,52
8,59
8. Vit chng trnh tnh s theo cng thc khai trin chui sau y
vi sai s khng qu 0,0001:
= 1
1 1 1 1
+ + ....
3 5 7 9
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
58
DO 5 i = 1, 8
DO 10 k = 15, 3, 1
DO 10 time = 50, 250, 25
2) DO 10 count = -4, 4
4) DO 10 time = 5, 15, 3
6) DO 10 ind = 72, 432, 4
DO 5 i = 1, 8
idem = idem + 1
5 CONTINUE
2)
3)
DO 5 num = 8, 0, 1
idem = idem + 2
5 CONTINUE
4)
DO 5 idex = 0, 7
idem = idem 2
5 CONTINUE
DO 5 m = 5, 5
idem = idem + (1) **m
5 CONTINUE
trong :
a=
y
r,
x
mx =
xi
i =1
Dx =
my =
yi
i =1
b = m y a mx ,
x
i =1
n 1
n
Dy =
2
i
y
i =1
2
i
n 1
n
mx2 ,
n 1
x = Dx
n
m y2 ,
n 1
x = Dx
x y
i =1
r = n 1
n
mx m y
n 1
.
x y
I = x 2 sin xdx
a
17. 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 cos a vi chnh xc
ti 0,0001 theo cng thc khai trin sau y:
a2 a4 a6
+
+ ...
2! 4! 6!
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
cos a = 1
18. 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
60
12
22
32
42
52
62
13
23
33
43
53
63
14
24
34
44
54
64
61
66
15
25
67
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 / n1
IF (n2 .GT. 0) PRINT * , ' DO AM TRUNG BINH = ', datb / n2
IF (N3 .GT. 0) PRINT * , ' AP SUAT TRUNG BINH = ', astb / n3
END IF
END
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 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.
Cu hi v bi tp chng 4
1. File d liu LAB1 cha nhnng thng tin v thi gian v nhit trn
mi dng nh sau:
0.0
0.5
1.0
1.5
2.0
2.5
26.5
28.7
29.1
29.2
29.4
29.7
(dng 1)
(dng 2)
(dng 3)
(dng 4)
(dng 5)
(dng 6)
71
1
25.2
25.0
24.6
24.5
25.3
24.7
25.4
24.5
25.2
25.8
25.3
25.6
2
25.7
25.6
25.0
25.2
25.7
25.1
26.4
24.8
25.2
26.6
24.7
26.0
3
27.3
27.2
26.9
-9.9
26.6
25.9
27.0
25.6
27.0
27.1
25.9
27.2
4
28.7
28.5
28.6
-9.9
28.2
27.9
27.3
28.1
28.9
28.3
27.2
29.0
5
29.0
28.6
28.1
28.3
29.1
27.8
27.7
28.8
28.5
28.1
27.6
28.5
6
27.7
27.6
28.0
27.8
28.2
27.2
28.3
28.2
28.0
28.0
27.9
28.3
7
27.2
27.8
28.0
27.2
28.0
27.2
27.5
27.8
28.6
27.3
27.7
28.2
8
27.5
27.0
27.9
27.2
27.5
27.8
28.0
27.6
27.7
27.6
27.3
27.8
9
27.2
27.4
26.9
27.4
26.9
26.3
26.8
26.8
27.3
27.2
27.4
27.6
10
-9.9
26.7
27.0
26.7
27.2
26.5
26.5
26.8
26.9
27.0
26.6
27.4
11
26.8
26.8
26.3
27.4
25.9
26.9
26.9
26.4
27.2
26.1
26.7
26.6
12
25.3
25.8
25.0
26.1
25.5
25.8
25.7
25.5
25.9
24.8
25.4
25.8
1 x
e + 3,7 x = 0 trong khong [0, 2] theo phng php lp
3
72
y = a 0 + a1 x1 + a 2 x 2 + ... + a m x m
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.
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, x / 3*1, 3*0.5 /
Nhm lnh
REAL hour (5)
DATA hour (1) / 10.0 /
INTEGER y (100)
DATA (y (i), i = 1, 50) / 50*0 /
75
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 n = 3 , tc c 3 dng v 3 ct, s l
1 0 0
0 1 0 .
0 0 1
76
END DO
END DO
77
END DO
100
300
15
16
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
IF (i .GT. n) GOTO 15
IF (x (i) .EQ. 0.0) THEN
i=i+1
GOTO 100
ELSE
j=1
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
i=n
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
80
END
81
Cu hi v bi tp chng 5
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
Yi 1 + Yi + Yi +1
(i = 2..19)
3
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
84
6.1.1 Hm lnh
Dng tng qut ca hm lnh l
Tn hm (Danh sch i s) = Biu thc
86
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)
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 23: Cc m hnh s thng tnh ra cc gi tr ca cc thnh phn
kinh hng Vk v v hng Vv 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
V = Vk2 + Vv2 ,
cn hng gi (gc gia vect gi v hng bc) tnh theo cng thc
khi
180 khi
d =
180 + khi
360 khi
trong =
180
arctg
Vv 0, Vk > 0
Vv 0, Vk < 0
Vv < 0, Vk < 0
Vv < 0, Vk > 0
Vv
.
Vk
Vk
Vv
XX.X
XX.X
XX.X
XX.X
m/s
XXX
XXX
HUONG
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:
88
5
C
90
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
91
10
6.2 quy
Tnh cht quy cho php mt hm chng trnh con c th gi chnh
n. Ta xt cch xy dng mt hm quy qua th d tnh giai tha ca mt s
nguyn.
Th d 26: Vit chng trnh nhp mt s nguyn, in ra giai tha ca s
nguyn .
INTEGER n, ifact
PRINT '(A,\)', 'NHAP SO NGUYEN: '
READ *, n
92
Cu hi v bi tp chng 6
1. Vit chng trnh in gi tr cc biu thc sau:
=
6,9 + y
y2 + 1 + 2 y + 3y2
93
=
=
=
sin y
y + 1 + 2 y2 + 3y4
4
2,3 z + z 4
z 2 + 1 + 2 z + 3z 2
1
chuyn
x 2 + 1 + 2 x + 3x 2 .
x2 x4 x6
+
+ ...
2! 4! 6!
2
x (n / 2) + x (n / 2 + 1)
- nu n chn trung v bng
.
2
6. 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 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.
94
mx =
x
i =1
Dx =
x
i =1
2
i
n 1
n
mx2 ,
n 1
x = Dx .
96
97
d=1
m=m+1
IF (m .GT. 12) THEN
m=1
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
98
100
count = count - 1
DO k = j, count
x (k) = x (k + 1)
END DO
END IF
RETURN
END
Cu hi v bi tp chng 7
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.
101
ci , j = ai ,k bk , j (i = 1, ..., n; j = 1, ..., l ) .
k =1
+
+
a12 x2
a 22 x2
...
a n 2 x2
+
+
...
...
...
...
+
+
a1n xn
a2 n xn
...
a nn xn
=
=
b1
b2
...
bn
trong
A = (aij ) =
a11
a21
...
a12
a22
...
an1
an 2
... a1n
... a2 n
... ...
... ann
; b =
x=
bn
b1
b2
...
x1
x2
... .
xn
102
8.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'
'SENSOR 23'
'08:4013:25'
'LE QUY DON'
' '
''''''
8 k t
9 k t
11 k t
10 k t
2 k t
2 k t
104
8.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
105
Xu con
lang (1 : 1)
'F'
106
lang (1 : 7)
lang (2 : 3)
lang (7 : 7)
'FORTRAN'
'OR'
'N'
l 'FORT'
l 'RAN'
l 'FORTRAN'
8.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
'WORK' // 'ED'
Nhm lnh sau y cho php vit ra ngy thng theo quy cch ting Vit,
107
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.
th dng in ra s l
T. C. MINH.
108
c) 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:
DO i = 0, 255
PRINT *, i , ' ', CHAR (i)
END DO
END
109
110
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
Cu hi v bi tp chng 8
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
dng d nhn.
5. 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.
6. 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
JUL
AUG SEP
112
113
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
114
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)
117
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'
DIRECT =
CHARACTER
'YES'
'NO'
'NULL'
'ZERO'
_
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
NAME =
CHARACTER
NAMED + =
LOGICAL
M li
Tn file nu file khng
phi l file loi scratch
.TRUE.
.FALSE.
NEXTREC =
INTEGER
NUMBER + =
INTEGER
OPEND =
LOGICAL
.TRUE.
.FALSE.
.TRUE.
.FALSE.
RECL =
INTEGER
SEQUENTIAL =
CHARACTER
UNFORMATTED
=
CHARACTER
M li
di bn ghi
'YES'
'NO'
'UNKNOWN'
'YES'
'NO'
'UNKNOWN'
di bn ghi
118
Cu hi v bi tp chng 9
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)
0.1254
1.1675
0.2071
0.2471
0.1397
0.1768
1.2168
0.2568
0.1490
0.1871
0.2271
1.2671
1.5471
1.6471
1.7471
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
120
0.98697
0.93505
0.88130
121
122
Tn hm
Kiu d liu
thc
xu k t
chnh xc i
phc
lgic
nguyn
t sinh (in m, nghing)
Kiu hm
nh ngha
SQRT(X)
Thc
DSQRT (DX)
chnh xc i
DX
CSQRT (CX)
Phc
CX
ABS (X)
Thc
IABS (IX)
Nguyn
IX
DABS (DX)
chnh xc i
DX
CABS (CX)
Phc
CX
EXP (X)
Thc
eX
DEXP (DX)
chnh xc i
e DX
CEXP (CX)
Phc
e CX
LOG (GX)
Kiu theo GX
log e GX
ALOG (X)
Thc
log e X
DOG (GX)
chnh xc i
log e DX
CLOG (CX)
Phc
log e CX
LOG10 (GX)
Kiu theo GX
log10 GX
ALOG10 (X)
Thc
log10 X
DLOG10 (DX)
chnh xc i
log10 DX
REA L(GX)
FLOAT (IX)
SNGL (DX)
Thc
Thc
Thc
ANINT(X)
DNINT(DX)
Thc
chnh xc i
NINT(X)
IDNINT (DX)
Nguyn
Nguyn
AINT (X)
DINT (DX)
Thc
chnh xc i
INT (GX)
IFIX (X)
IDINT (DX)
Nguyn
Nguyn
Nguyn
Ct GX thnh s nguyn
Ct X thnh s nguyn
Ct DX thnh s nguyn
SIGN (X, Y)
Thc
Gn du ca Y cho X
Nguyn
Gn du ca IY cho IX
chnh xc i
Gn du ca DY cho DX
123
Tn hm
Kiu hm
nh ngha
MOD (IX,IY)
Nguyn
Ly s d ca php chia IX / IY
AMOD (X,Y)
DMOD (DX,DY)
Thc
chnh xc i
Ly s d ca php chia X / Y
Ly s d ca php chia DX / DY
DIM (X,Y)
Thc
X (cc tiu ca X v Y)
IDIM (IX,IY)
Nguyn
DDIM (DX,DY)
chnh xc i
MAX (GX,GY,...)
MAX0 (IX,IY,...)
Nguyn
AMAX1 (X,Y,...)
Thc
Cc i ca (X, Y, ...)
DMAX1 (DX,DY,...)
chnh xc i
AMAX0 (IX,IY,...)
Thc
MAX1 (X,Y,...)
Nguyn
Cc i ca (X, Y, ...)
MIN (GX,GY,...)
MIN0 (IX,IY,...)
Nguyn
AMIN1 (X,Y,...)
Thc
DMIN1 (DX,DY,...)
chnh xc i
AMIN0 (IX,IY,...)
Thc
MIN1 (X,Y,...)
Nguyn
SIN (X)
Thc
sin X (X - raian)
DSIN (DX)
chnh xc i
CSIN (CX)
Phc
sin CX
COS (X)
Thc
cos X (X - raian)
DCOS (DX)
chnh xc i
CCOS (CX)
Phc
cos CX
TAN (X)
Thc
tgX (X - raian)
DTAN (DX)
chnh xc i
ASIN (X)
Thc
arcsin X
DASIN (X)
chnh xc i
arcsin DX
ACOS (X)
Thc
arccos X
DACOS (DX)
chnh xc i
arccos DX
ATAN (X)
Thc
arctgX
DATAN (DX)
chnh xc i
arctgDX
ATAN2 (X,Y)
Thc
arctg ( X / Y )
DATAN2 (DX,DY)
chnh xc i
arctg ( DX / DY )
COSH (X)
Thc
chX
DCOSH (DX)
chnh xc i
chDX
SINH (X)
Thc
shX
DSINH (DX)
chnh xc i
shDX
TANH (X)
Thc
th X
DTANH (DX)
chnh xc i
thDX
DPROD (X, Y)
chnh xc i
Tch ca X v Y
124
Tn hm
Kiu hm
nh ngha
DBLE (X)
chnh xc i
CMPLX (X)
Phc
X + 0i
CMPLX (X, Y)
Phc
X + Yi
AIMAG (CX)
Thc
Phn o ca CX
REAL (CX)
Thc
Phn thc ca CX
CONJG (CX)
Phc
Lin hp ca CX, a bi
LEN (CHX)
Nguyn
di ca xu k t CHX
Nguyn
CHAR (IX)
K t
K t ng vi v tr th IX trong chui
so snh
ICHAR (CHX)
Nguyn
Lgic
Lgic
Lgic
Lgic
+
+
a12 x2
a22 x2
...
an2 x2
hay
...
...
...
...
a1n xn
a2n xn
...
ann xn
Ax=b
=
=
b1
b2
...
bn
(*)
a22 ... a2 n
a
b2 x =
=
A = (aij ) = 21
b
... ;
... ... ... ... ;
b
...
a
a
n2
nn
n1
n
Nu ma trn A khng suy bin, tc
det A =
a11
a21
a12
a22
... a1n
... a2 n
...
...
...
an1
an 2 ... ann
...
x1
x2
... .
xn
th h (*) c nghim duy nht. C th tnh nghim theo cng thc Cramer
125
det Ai
,
det A
trong Ai ma trn A vi ct i b thay th bng ct cc s hng t do b .
xi =
1. Phng php loi bin Gauss gii h phng trnh i s tuyn tnh:
Th d cho h
a11 x1 + a12 x2 + a13 x3 + a14 x4 = a15
a21 x1 + a22 x2 + a23 x3 + a24 x4 = a25
(1)
a31 x1 + a32 x2 + a33 x3 + a34 x4 = a35
a41 x1 + a42 x2 + a43 x3 + a44 x4 = a45
Gi s phn t chnh
a11 0 .
vi
b1 j =
a1 j
a11
a11 ,
ta c
(2)
( j = 2, 3, 4, 5) .
a22
x2 + a23
x3 + a24
x4 = a25
(1)
(1)
(1)
(1)
a32
x2 + a33
x3 + a34
x4 = a35
(1)
(1)
(1)
(1)
a42
x2 + a43
x3 + a44
x4 = a45
(3)
trong
aij(1) = aij ai1b1 j (i = 2, 3, 4; j = 2, 3, 4, 5)
(4)
(1)
By gi chia phng trnh th nht ca h (3) cho phn t chnh a22
ta
c:
(1)
(1)
(1)
x2 + b23
x3 + b24
x4 = b25
,
(5)
trong
b2(1j) =
a2(1j)
(1)
a22
( j = 3, 4, 5) .
a33
x3 + a34
x4 = a35
.
( 2)
( 2)
( 2)
a43
x3 + a44
x4 = a45
(6)
trong
126
(i = 3, 4; j = 3, 4, 5) .
(7)
(8)
trong
b3( 2j ) =
a3( 2j )
( 2)
a33
( j = 4, 5) .
trong
( 2) ( 2)
a 4( 3j) = a 4( 2j) a43
b3 j
( j = 4, 5)
(9)
(1)
x2 + b23(1) x3 + b24
x4 = b25(1)
(10)
x3 + b34( 2 ) x4 = b35( 2 )
( 3)
(3)
a 44
x4 = a 45
T (10) xc nh cc n
(3)
(3)
x 4 = a 45
a 44
(2)
(2)
x 4 b34
x 3 = b35
(1)
(1)
(1)
x 4 b24
x 3 b23
x 2 = b25
(11)
2n (n + 1) (n + 2)
+ n (n 1) .
3
0 t22
T =
... ...
0 0
t11
t
t
T = 12 22
... ...
t
1n t2 n
... t1n
... t2 n
,
... ...
... tnn
... 0
... 0
... ...
... tnn
t 11 =
a 11 ,
t1 j =
t ii =
a ii t ki2
a1 j
ta suy ra c cng
( j > 1)
t 11
i 1
A,
(1 < i n )
(14)
k =1
i 1
t ij =
a ij t ki t kj
(i < j )
k =1
t ii
t ij = 0
i> j
khi
15)
hay
t11 y1 = b1
(16)
.........................
t nn xn = y n
(17)
t12 y1 + t 22 y 2 = b2
.......................
t1n y1 + t 2 n y 2 + .... + t nn y n = bn
y1 =
b1
,
t11
yi =
y
xn = n , xi =
t nn
bi t ki y k
k =1
tii
yi
k =i +1
tii
ik
xk
(i > 1)
(18)
(i < n)
(19)
128
E = ( y k axk b) 2
k =1
k =1
k =1
k =1
k =1
a x + b xk = xk y k , a xk + b n = y k .
k =1
2
k
a=
xk
k =1
k =1
n
y k n xk y k
k =1
( x k ) n x
2
k =1
b=
xk
k =1
k =1
k =1
n
k =1
n
xk yk xk2
( x k ) n x
2
k =1
(20)
2
k
k =1
y
k =1
(21)
2
k
b=
yk a
k =1
x
k =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
f ( x) = a0 + a1 x + a2 x 2 + ... + an x m .
th d i vi m hnh bc hai
f ( x) = a0 + a1 x + a2 x 2 .
129
a2
a2
a2
x
k =1
n
+ a1 xk + a0 n = y k
2
k
k =1
k =1
k =1
k =1
k =1
k =1
k =1
k =1
k =1
x
k =1
+ a1 xk2 + a0 xk = xk y k
3
k
(23)
(24)
(25)
Nu k hiu
ta c
g ( x) = ln f ( x)
(26)
~
b = ln b
(27)
~
x = ln x
(28)
~
y = ln y
(29)
~
g ( x ) = a~
x +b
(30)
~
a=
~xk
k =1
k =1
n
k =1
k =1
~
b=
(31)
xk ) 2 n ~
xk2
( ~
~xk
k =1
k =1
k =1
n
k =1
n
~y
k =1
( ~
xk ) 2 n ~
xk2
k =1
(32)
k =1
130
y = a0 + a1 x1 + a2 x2 + ... + am xm .
Cc h s hi quy ai (i = 1,..., m) c chn sao cho tha mn
n
= ( y a0 a1 x1 a2 x2 ... am xm )2 = min
i =1
+
+
+
[x1 ]a1
[x1 x1 ]a1
[x1 x2 ]a1
...
+ [x1 x m ]a1
+
+
+
[x2 ]a2
[x2 x1 ]a2
[x2 x2 ]a2
...
+ [x 2 x m ]a 2
+ ... +
+ ... +
+ ... +
...
+ ... +
[xm ]am
[xm x1 ]am
[xm x2 ]am
=
=
=
[y]
...
[xm xm ]am
...
= [ yxm ]
[ yx1 ]
[ yx2 ]
(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:
[x1 ] [x2 ]
[xm ] a0 b0
...
n
vi du
132
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
133