Professional Documents
Culture Documents
NGÔN NGỮLẬP TRÌNH FORTRAN VÀ ỨNG DỤNG TRONG KHÍ TƯỢNG THỦY VĂN
NGÔN NGỮLẬP TRÌNH FORTRAN VÀ ỨNG DỤNG TRONG KHÍ TƯỢNG THỦY VĂN
Phm Vn Hun
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.
I HC QUC GIA H NI
PHM VN HUN
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
2
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
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
5
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
Input
Processor
Output
ALU
CPU
Gi tr
1
2
3
4
5
Trung bnh =
23.43
37.43
34.91
28.37
30.62
30.95
TB = TONG / REAL(DEM)
PRINT 6, TB
FORMAT (1X, 'TRUNG BINH BANG ' , F6.2)
STOP
END
hin (executable statement) v nhm cc lnh khng thc hin (nonexecutable 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
Ct
6
Cc ct
7-72
Lnh Fortran
K t ni dng
Nhn lnh
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.
(*)
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 10 79 n 10 75 .
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 2,1 + 50 i
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
12
! (1)
! (4)
! (6)
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:
15
a 21
a12
a 22
a13
a 23
2.4. Cc hm chun
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:
17
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)
ABS (X)
Cn bc hai ca x
Tr tuyt i ca x
tnh bng raian
x tnh bng raian
x tnh bng raian
SIN (X)
COS (X)
TAN (X)
sin(x )
EXP (X)
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 I / J
LOG (X)
LOG10 (X)
INT (X)
REAL (I)
MOD (I,J)
cos(x )
tg ( x)
e
Php tnh
Cng
Tr
Nhn
Dng i s
Trong Fortran
A+ B
A+B
AB
A*B
AB
A B
A
Chia
A/B
Lu tha
A** 3
Php tnh
Du ngoc
Nng ln lu tha
Nhn v chia
Cng v tr
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 2 9 hay 512 ch khng phi l
(2 * *3) * *2 = 82 = 64 .
X = 0.25E20
2)
A = 0.25E20
Y = 0.10E30
B = 0.10E+20
Z=X*Y
C=A/B
3,14
b) 3,141593
c) 0,0026
d) 2,5 10 3
20
e) 14,0
g) 6,023 10 23
f) 28,34
b) PTBACHAI
c) REAL
d) 2LOG
) GPTB2
e) HS-A1
f) X1
g) THANG*1
h) MONTH2
4
R 3 ( R bn knh).
3
x1, 2 =
b b 4ac
2a
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, i 2 = 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)
y:
I1 = 1
I2 = 2
I3 = 3
( a, b, c cc h s ca phng trnh)
1
c) Gi tr hm y = sin 2 x cos(2 x 1 2 )
2
1
d) Gi tr hm mt phn b Gauss F ( x) =
e
2
x2
2
b)
I1 = 1
I2 = 2
I3 = 3
(nu I = 1)
PRINT 2, 1/3*(I1+I2+I3)
2
COS (60/180*3.141593)
21
Khi X =
30.00000
1/2 SinX =
0.2500000
Sang trang mi
Du trng
Xung mt dng
PRINT 4
4 FORMAT ('1' , 'KET QUA THI NGHIEM')
Ta cng c th dng c t w H trong w s v tr xut d liu
vn bn. Th d
PRINT 5 , Y
1982
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
T oc do
H uong
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
26
Dng thao tc
Tnh ton
Ch gii gi trnh
TB TONG / N
Biu tng lu
TB = TONG / N
Nhp d liu
c A, B
Xut d liu
In A, B
In A, B
So snh
Nu A > B
A>B?
c A, B
Tn bi ton
Bt u
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.
27
Gi trnh:
c s
Cc i S
bng
.NE.
khng bng
Cc tiu S
.LT.
nh hn
.LE.
nh hn hoc bng
c s
.GT.
ln hn
.GE.
ln hn hoc bng
.NOT. A
A.AND.B
A.OR.B
A.EQV.B
A.NEQV.B
False
False
True
True
False
True
False
True
True
True
False
False
False
False
False
True
False
True
True
True
True
False
False
True
False
True
True
False
31
In Nhap HS
c a, b, c
Tnh
In -b / (2a)
=0
<0
A = 2. * A
PRINT 7 , (B + DELT) / A , (B DELT) / A
7
S
=
In V nghim
a = 2a
END IF
END
In (-b + ) / a
In (-b - ) / a
Kt thc
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) n1 , n2 , n3
trong n1 , n2 , n3 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 n1 , bng khng
nhn n2 , v dng nhn n3 .
Th d, theo lnh
IF (I 10) 4, 8, 7
nu I < 10 iu khin chuyn n lnh c nhn l 4, nu I = 10 chuyn
n nhn 8 v nu I > 10 chuyn n nhn 7.
32
Trong lnh
IF (X 3.5) 3, 6, 6
khi X 3,5 iu khin chuyn ti lnh c nhn l 6, khi X < 3,5 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
3
f ( x) = e x cos (t x + 1) ,
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
Bt u
T = 0.1
X = 1.0
Tnh F
In X, F
X = X + 0.1
S
X>3
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
Kt thc
...
5 X = X + 1.0
I=I+1
X (I)=Y (I)
GO TO 7
REAL X (20), TG
INTEGER N, I, J, K
N = 10
I=1
K=I
J=I+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
3
8
I=1
PRINT 8 , X(I)
FORMAT (F12.2)
I=I+1
IF (I .LE. N) GOTO 3
END
GO TO ( n1 , n2 , ..., nm ) , i
trong n1 , n 2 , ..., n m 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 n1 , n2 , ..., nm tu thuc vo gi tr ca i , c th khi i = 1 iu
khin s chuyn ti lnh c nhn n1 , khi i = 2 nhn n2 , ..., khi i = m
nhn nm . Nu gi tr ca i nm ngoi khong 1 i m 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 x = 0,4 theo cng thc
P ( x) =
khi = 0
khi = 1
x
1
(3x 2 1) khi = 2
2
1
(5 x 3 3x) khi = 3
2
REAL X, P
INTEGER L, I
34
28
12
17
21
6
24
8
30
X = 0.4
L=0
I=L+1
GO TO (12, 17, 21, 6) , I
P = 1.0
GO TO 24
P=X
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
FORMAT (I3 , F12.5)
L=L+1
IF (L 3) 28 , 28 , 30
STOP
END
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
K=I
J=I+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
35
ID = D3 (I)
D3 (I) = D3 (K)
D3 (K) = ID
D = TB (I)
TB (I) = TB (K)
TB (K) = D
I=I+1
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
IF (I .LT. N) GO TO 2
STOP
END
I = x 2 sin x
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)
S 2 = 0,5 ( y i + y i +1 ) ( xi +1 x i )
i
ELSE
PRINT 50 , I , TEN (I) , D1 (I) , D2 (I) , D3 (I) , TB (I)
36
GOTO 5
y = f (x)
END IF
y2
y1
x1 = a
x2
xn = b
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
sin 2 x = x 2
23 x 4 25 x 6
(1) n+1 2 2 n1 x 2 n
+
... =
.
4!
6!
(2n) !
n=1
X1 = X2
Khi 1: Nhp gi tr gc x .
Y1 = Y2
X > 90
T
Khi 1
X > 270
X = X 360
nu x nm trong khong:
180 < x 270 ta thay bng gc x 180 ,
nu x nm trong khong:
270 < x 360 ta thay bng gc x 360 .
X =X 180
X >180
X = 180 X
X = X*3.1415 / 180
Khi 2
In tiu bng
In tiu ct
38
Khi 3
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)
READ *, X
IF (X .GT. 90.0) THEN
N>15
5
4
X = X * 3.141593 / 180.0
cn tm v in kt qu ln mn hnh.
PRINT 2
S = 0.
su
10
20
30
40
50
60
N=1
Nhit
THEM = X ** 2
su
S = S + THEM
Nhit
su
Nhit
N=N+1
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
80
90
100
120
140
160
180
220
240
260
280
300
350
400
IF (N .LE. 15) GO TO 5
END
N = 32
K=1
Khi 2
c H (K)
c T (K)
K=K+1
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
K>N
40
hi h0 hi+1 ,
Khi 3
I=1
H (I +1) H0 H (I)
F
I=I+1
In H0, T0
(ti+1 ti ) ( h0 hi )
.
hi+1 hi
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
41
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.
8)
9)
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:
TF = TR 459,67 R
9
TF = TC + 32 F
5
9
TR = TK
5
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.
15
2. Cho cc gi tr:
A = 2.2
B = 1.2
I =1
Bng 4.4
DONE = .TRUE.
1)
A .LT. B
2)
3)
I .NE. 5 4)
A + B .GE. B
5)
I .LE. I 5
6)
7)
.NOT. (A .EQ. 2 * B)
x
y
x
y
= 1
1 1 1 1
+ + ....
3 5 7 9
Bng 4.5
mui
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
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
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 n ind = ini , lim , inc
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:
44
n CONTINUE
i = 1 + 2 + . . . + 49 + 50
i =1
Vng lp While
SUM = 0.0
SUM = 0.0
DO 10 NUM = 1, 50
NUM = 1
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.
45
+1
POLYNOMIAL'
DO 15 I = 1, 10
POLY = 3. * REAL (I) ** 2 + 4.5
PRINT 10 , I , POLY
10
15 CONTINUE
END
Th d 10: Tm phn t cc i ca chui s b1 , b2 , ..., b10 . Ta gii bi
ton ny theo thut gii biu din bi gi trnh sau:
1) vi i t 1 n 10
nhp bi
2) bmax b1
3) vi i t 2 n 10
nu bi > bmax th bmax bi
4) in bmax
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
46
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.
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
47
7
5
(dng th 3)
DO 2 I =1, N1
(dng th 7)
DO 7 I = 1, N
(dng th 18)
4
*
5
7
1.
1.
2.
6.
24.
120.
720.
0.
1.
2.
6.
24.
118.
710.
7
5040.
8
40320.
9 362880.
10 3628800.
4980.
39902.
359537.
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
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
3. Mt hn c nm vi tc ban u v v nghing mt gc
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:
49
d = v t cos ,
h = v t sin
xi yi
1 2
gt ,
2
i=1
r = n 1
x y
y
r,
x
mx =
xi
i=1
Dx =
my =
i =1
xi2
i=1
n 1
Dy =
yi2
i=1
n 1
I = x 2 sin xdx
a
cos a = 1
m x2 ,
x = Dx
a 2 a 4 a6
+
+ ...
2! 4! 6!
yi
b = m y a mx ,
n
y= ax+b,
a=
mx m y
m 2y ,
x = Dx
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,
50
12
22
32
42
52
62
13
23
33
43
53
63
14
24
34
44
54
64
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 (8 , *) X, Y
28.3
(dng 1)
0.1
29.1
(dng 2)
0.2
29.5
(dng 3)
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)
INTEGER N, K
CLOSE (2)
END
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
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
56
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
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)
25
*
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
FORMAT (1X, ' SO NGAY = ', I5 , ' ND =' , F6.2 , ' DA =' ,
F6.2 , ' AS =' , F7.1)
END
57
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
3
READ *, B
READ *, B(1), B(2), B(3)
y = a 0 + a1 x1 + a 2 x 2 + ... + a m x m
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...
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:
Th d, lnh
INTEGER Y (100)
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
1 0 0
0 1 0 .
0 0 1
A vi lnh m t nh sau
DO I = 1, 3
REAL A(10, 10)
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
INTEGER IDMAT(3,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
63
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 n m 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 n m 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
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
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
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:
68
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:
69
8.1. Cc hm chun
Mt hm tnh ra mt gi tr, th d cn bc hai ca mt s hay gi tr
PRINT 5, K
ELSE
PRINT 8, K
END IF
5 FORMAT (1X, I5, ' LA SO CHAN')
8 FORMAT (1X, I5, ' LA SO LE')
cn hng gi (gc gia vect gi v hng bc) tnh theo cng thc
72
180
d=
180 +
360
trong =
180
arctg
nu
Vv 0, Vk > 0
nu
Vv 0, Vk < 0
nu
Vv < 0, Vk < 0
nu
Vv < 0, Vk > 0
Vv
.
Vk
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:
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
f ( x) = a0 + a1 x + a2 x 2 + a3 x 3 + a4 x 4
15
*
20
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)
FORMAT (1X, 'NGHIEM = ', F7.3, 3X,
'F(NGHIEM) = ', F7.3)
N=N+1
ELSE IF (F(A, TRAI)*F(A, PHAI) .LT. 0.0) THEN
XONG = .FALSE.
KHOANG = PHAI TRAI
IF (KHOANG .GT. 0.01 .AND. .NOT. XONG) THEN
GIUA = 0.5 *(TRAI + PHAI)
IF (ABS (F(A, GIUA)) .LT. 0.001) THEN
XONG = .TRUE.
ELSE IF (F(A, GIUA)*F(A, TRAI) .LT. 0.0)
THEN
PHAI = GIUA
ELSE
TRAI = GIUA
END IF
KHOANG = PHAI TRAI
GOTO 20
END IF
IF (KHOANG .GT. 0.01) THEN
NGHIEM = GIUA
ELSE
NGHIEM = 0.5 *(TRAI + PHAI)
END IF
PRINT 15, NGHIEM, F(A, NGHIEM)
N=N+1
END IF
END DO
TRAI = 5.0
IF (ABS (F (A, TRAI)) .LT. 0.001) THEN
PRINT 15, TRAI, F (A, TRAI)
N=N+1
END IF
IF (N .EQ. 0) THEN
PRINT *, ' KHONG NGHIEM TRONG KHOANG [-5,5]'
END IF
END
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
75
l nhng s khng.
10
*
*
PROGRAM KTNGAY
INTEGER ID, IM, IY
PRINT *, 'HAY NHAP BA SO NGUYEN'
READ *, ID, IM, IY
IF (ID .NE. 0 .AND. IM .NE. 0 .AND. IY .NE. 0) THEN
IF (OKDATE (ID, IM, IY)) THEN
PRINT*, 'CO THE LA NGAY THANG NAM HOP LY'
ELSE
PRINT*, KHONG THE LA ,
NGAY THANG NAM HOP LY
ENDIF
GOTO 10
ENDIF
END
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.
hm con.
x 2 + 1 + 2 x + 3x 2 .
=
=
=
=
6,9 + y
y 2 + 1 + 2 y + 3y 2
sin y
4
y + 1 + 2 y 2 + 3y 4
2,3z + z 4
z 2 + 1 + 2 z + 3z 2
1
sin 2 y + 1 + 2 sin y + 3 sin 2 y
x 2 x 4 x6
+
+ ...
2! 4! 6!
x (n / 2) + x (n / 2 + 1)
.
2
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
77
mx =
xi
i=1
Dx =
xi2
i=1
n 1
mx2 ,
x = Dx .
8
*
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:'
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
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)
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
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.
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
Ax=b
trong
A = (aij ) =
a11
a 21
a12
a 22
...
...
a n1
an2
... a1n
b1
... a 2 n
b
2 x=
; b=
;
... ...
...
b
... a nn
x1
x2
...
xn
c i , j = a i , k bk , j (i = 1, ..., n; j = 1, ..., l ) .
k =1
+
+
a12 x 2
a 22 x 2
...
+
+
a n1 x1
a n 2 x2
...
...
...
...
+
+
a1n x n
a 2n xn
...
=
=
b1
b2
...
a nn x n
bn
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.
'CHU NHAT'
8 k t
'SENSOR 23'
9 k t
'08:4013:25'
11 k t
10 k t
' '
2 k t
''''''
2 k t
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:
Xu con
LANG (1 : 1)
LANG (1 : 7)
LANG (2 : 3)
LANG (7 : 7)
'F'
'FORTRAN'
'OR'
'N'
l 'FORT'
l 'RAN'
l 'FORTRAN'
'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
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:) , ' ')
89
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
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
91
*
*
*
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
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
92
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
JUL
AUG SEP
nhng th d trc y:
OPEN (UNIT = Biu thc nguyn,
...
...
...
ELSE
PRINT*, LOI MO FILE ,IERR
END IF
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 =
CHARACTER
IOSTAT =
INTEGER
NAME =
CHARACTER
NAMED + =
LOGICAL
NEXTREC =
INTEGER
NUMBER + =
INTEGER
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.
Ch nh truy vn
'FORMATTED'
'FORMATTED'
'UNFORMATTED'
'UNFORMATTED'
'YES'
'NO'
'UNKNOWN'
M li
M li
OPEND =
LOGICAL
.TRUE.
.FALSE.
RECL =
INTEGER
di bn ghi
SEQUENTIAL =
CHARACTER
UNFORMATTED =
CHARACTER
Tn file nu file
khng phi l file loi
scratch
.TRUE.
.FALSE.
'YES'
'NO'
'UNKNOWN'
'YES'
'NO'
'UNKNOWN'
di bn ghi
98
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.
ma
trn
a ij = a ji
cc
A = [ ai j ]
ma
trn
xng,
tc
(i, j = 1, 2, ..., n) .
4. . . . -.
, 1998, 397 c.
5. . . : IMSL. -, , 2000,
448 c.
6. . ., . .
. - , 1998, 528 .
101
Tn hm
Tn hm
Kiu d liu
thc
xu k t
chnh xc i
phc
lgic
nguyn
t sinh (in m, nghing)
Kiu hm
nh ngha
Kiu hm
nh ngha
X
EXP (X)
Thc
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)
Thc
DNINT(DX)
chnh xc i
NINT(X)
Nguyn
IDNINT (DX)
Nguyn
AINT (X)
Thc
DINT (DX)
chnh xc i
SQRT(X)
Thc
DSQRT (DX)
chnh xc i
DX
INT (GX)
Nguyn
CSQRT (CX)
Phc
CX
IFIX (X)
Nguyn
Ct X thnh s nguyn
IDINT (DX)
Nguyn
Ct DX thnh s nguyn
ABS (X)
Thc
IABS (IX)
Nguyn
IX
SIGN (X, Y)
Thc
Gn du ca Y cho X
DABS (DX)
chnh xc i
DX
Nguyn
Gn du ca IY cho IX
CABS (CX)
Phc
CX
chnh xc i
Gn du ca DY cho DX
102
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
DDIM (DX,DY)
Tn hm
Kiu hm
nh ngha
ASIN (X)
Thc
arcsin X
DASIN (X)
chnh xc i
arcsin DX
ACOS (X)
Thc
arccos X
chnh xc i
DACOS (DX)
chnh xc i
arccos DX
MAX (GX,GY,...)
ATAN (X)
Thc
arctgX
MAX0 (IX,IY,...)
Nguyn
DATAN (DX)
chnh xc i
arctgDX
AMAX1 (X,Y,...)
Thc
Cc i ca (X, Y, ...)
DMAX1 (DX,DY,...)
chnh xc i
ATAN2 (X,Y)
Thc
arctg ( X / Y )
AMAX0 (IX,IY,...)
Thc
DATAN2 (DX,DY)
chnh xc i
arctg ( DX / DY )
MAX1 (X,Y,...)
Nguyn
Cc i ca (X, Y, ...)
SINH (X)
Thc
shX
MIN (GX,GY,...)
DSINH (DX)
chnh xc i
shDX
MIN0 (IX,IY,...)
Nguyn
COSH (X)
Thc
AMIN1 (X,Y,...)
Thc
chX
DMIN1 (DX,DY,...)
chnh xc i
DCOSH (DX)
chnh xc i
chDX
AMIN0 (IX,IY,...)
Thc
TANH (X)
Thc
th X
MIN1 (X,Y,...)
Nguyn
DTANH (DX)
chnh xc i
thDX
SIN (X)
Thc
sin X (X - raian)
DPROD (X, Y)
chnh xc i
Tch ca X v Y
DBLE (X)
chnh xc i
CMPLX (X)
Phc
CMPLX (X, Y)
Phc
AIMAG (CX)
Thc
Phn o ca CX
DSIN (DX)
chnh xc i
CSIN (CX)
Phc
sin CX
COS (X)
Thc
cos X (X - raian)
DCOS (DX)
chnh xc i
REAL (CX)
Thc
Phn thc ca CX
CCOS (CX)
Phc
cos CX
CONJG (CX)
Phc
Lin hp ca CX, a bi
TAN (X)
Thc
tgX (X - raian)
LEN (CHX)
Nguyn
di ca xu k t CHX
Nguyn
DTAN (DX)
chnh xc i
X + 0i
X + Yi
103
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
Lgic
Lgic
Lgic
Lgic
a12 x2
...
a1n xn
b1
a21x1
a22 x2
a2n xn
b2
...
an2 x2
...
...
...
...
ann xn
...
bn
...
an1x1
hay
Ax=b
A = aij =
( )
a11
a21
a12
a22
...
...
an1 an2
(*)
... a1n
b1
... a2 n
b2 x =
b=
... ;
... ... ;
b
... ann
x1
x2
... .
xn
det A =
... a1n
... a2 n
a11
a21
a12
a22
...
an1
104
th h (*) c nghim duy nht. C th tnh nghim theo cng thc Cramer
xi =
det Ai
,
det A
(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:
Th d cho h
(1)
(1)
(1)
x2 + b23
x3 + b24
x4 = b25
,
(5)
trong
(1)
b2(1j)
a2(1j)
(1)
a22
( j = 3, 4 , 5) .
(1)
(1)
(1)
(1)
a22
x2 + a23
x3 + a24
x4 = a25
(1)
(1)
(1)
(1)
a32
x2 + a33
x3 + a34
x4 = a35
(1)
(1)
(1)
(1)
a42 x2 + a43 x3 + a44 x4 = a45
b1 j =
a1 j
a11
( 2)
( 2)
( 2)
a33
x3 + a34
x4 = a35
.
( 2)
( 2)
( 2)
a43
x3 + a44
x4 = a45
(2)
( j = 2, 3, 4, 5) .
(6)
trong
(i = 3, 4; j = 3, 4, 5) .
(7)
(8)
trong
105
b3( 2j) =
a3( 2j)
( j = 4, 5) .
( 2)
a33
trong
( 2) ( 2)
a 4(3j) = a4( 2j) a43
b3 j
( j = 4, 5)
(9)
x3 + b34( 2 ) x 4 = b35( 2 )
( 3)
(3)
a 44
x 4 = a 45
Ax=b
(10)
T (10) xc nh cc n
trong
x4 = a
x3 = b
x2 = b
(1)
25
(2)
35
x4b
(1 )
24
(3)
45
x4b
(3)
44
(2)
34
x3b
(1 )
23
(11)
t11
0
T =
...
t22 ... t2 n
,
... ... ...
0 ... tnn
t11
t
T = 12
...
t
1n
t22
...
t2 n
0
... ...
... tnn
...
...
t11 =
a11 ,
t ii =
a ii
a ij
a1 j
t1 j =
t11
i 1
t ki2
( j > 1)
(1 < i n )
(14)
k =1
i 1
t ki t kj
t ij =
k =1
t ij = 0
khi
(i < j )
t ii
i> j
15)
Tx=y
hay
t11 y1 = b1
(16)
t22 x2 + ... + t2 n xn = y2
.........................
tnn xn = yn
(17)
t12 y1 + t22 y2 = b2
.......................
t1n y1 + t2 n y2 + .... + tnn yn = bn
y1 =
b1
,
t11
y
xn = n ,
tnn
yi =
bi tki yk
k=1
tii
yi
xi =
(i > 1)
(18)
(i < n)
(19)
tik xk
k=i+1
tii
107
a=
x y
k
k =1
k =1
n xk y k
k =1
n
k =1
k =1
x x
k =1
b=
(20)
( x k ) n x k2
2
k =1
n
y k x k2
k =1
n
y
k =1
( x k ) 2 n x k2
k =1
(21)
k =1
b=
1 y
k=
1 x
k=
(22)
2. M hnh a thc
y = f ( x) = ax + b .
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
E = ( y k axk b) 2
k =1
k =1
k =1
k =1
k =1
k =1
a xk2 + b xk = xk y k , a xk + b n = y k .
th d i vi m hnh bc hai
f ( x) = a 0 + a1 x + a 2 x 2 .
108
a2
a2
a2
(29)
k=1
k=1
k=1
k=1
k=1
k=1
k=1
k=1
k=1
k=1
xk2 + a1 xk + a0 n = yk
ta c
k=1
xk3 + a1 xk2 + a0 xk = xk yk
(23)
~
g ( x ) = a~
x +b
(30)
~
Vi phng trnh (30) cc h s hi quy a v b tnh theo cc cng
thc
a=
k =1
k =1
(24)
~
b=
(31)
xk ) 2 n ~
xk2
( ~
n
~
xk ~
yk n ~
xk ~
yk
k =1
k =1
k =1
~x ~x ~y ~x ~y
k =1
k =1
n
k =1
n
2
k
k =1
xk ) 2 n ~
xk2
( ~
k =1
(32)
k =1
(25)
Nu k hiu
g ( x) = ln f ( x)
(26)
~
b = ln b
(27)
~
x = ln x
y = ln y
(28) ~
109
[x1 ]
[x ]
2
...
[x m ]
[x1 ]
[x2 ]
...
[x1 x1 ] [x2 x1 ]
[x1 x2 ] [x2 x2 ]
...
...
...
...
...
[x1 xm ] [x2 xm ]
...
[xm ]
[xm x1 ]
[xm x2 ]
...
[xm xm ]
a0 b0
a1 b1
. a 2 = b2
... ...
a m bm
(34)
vi du
y = a 0 + a1 x1 + a 2 x 2 + ... + a m x m .
Cc h s hi quy ai (i = 1,..., m) c chn sao cho tho mn
n
= ( y a 0 a1 x1 a 2 x 2 ... a m x m )2 = min
i =1
[x1 ]a 0
[x 2 ]a 0
...
[x m ]a 0
+
+
+
[x1 ]a1
[x1 x1 ]a1
[x1 x 2 ]a1
...
+ [x1 x m ]a1
+
+
+
[x 2 ]a 2
[x 2 x1 ]a 2
[x 2 x 2 ]a 2
...
+ [x 2 x m ]a 2
+ ... +
+ ... +
+ ... +
...
+ ... +
[x m ]a m
[x m x1 ]a m
[x m x 2 ]a m
=
=
...
[x m x m ]a m
...
= [ yx m ]
[y ]
[yx1 ]
[yx 2 ]
(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:
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
111