Professional Documents
Culture Documents
Fortran Ch2
Fortran Ch2
46
36
+115 -2579
xxx.[exp]
xxx[exp]
trong o [exp] la bac cua luy tha c so 10 dang Exx, Dxx hoac Qxx.
Hang so xx trong cac dang Exx, Dxx hoac Qxx the hien so mu cua luy
tha c so 10 va co khong qua 2 ch so.
V du:
+777.52
-657.
(= -657.0)
+ .025
(= 0.025)
+5.0E03
(= 5.103)
3 E-3
(= 3.10-3)
2375.D-25 (= 2375.10-25)
2.079Q08
(= 2.079.108)
trong o, tuy theo kieu viet vi cac bac co cac ch Q, D, E ma kieu va kch
thc hang so la khac nhau. Bac vi ch Q la kieu REAL*16 (th kch thc
tng ng la 16 byte), vi ch D la REAL*8 (8 byte) va vi ch E la
REAL*4 (4 byte). Neu so thc khong ch ro so bac th co kieu REAL*4.
47
Kch thc
(byte)
INTEGER*2
T -32768 en +32768
INTEGER
T -2147483647 en +2147483647
INTEGER*4
REAL
REAL*4
DOUBLE
PRECISION
REAL*8
REAL*16
16
COMPLEX
COMPLEX*8
COMPLEX*16
16
COMPLEX*32
32
LOGICAL*1
LOGICAL
LOGICAL*4
CHARACTER
CHARACTER*L
Ky t bat ky
CHARACTER*(*)
- Hang so dang so phc: co kieu la COMPLEX*8, COMPLEX*16 hoac
COMPLEX*32 va viet di dang c ban:
(x,y)
trong o x la phan thc va y la phan ao, co the cho dang hang so nguyen
hay so thc.
Kieu cua hang so dang so phc phu thuoc vao kieu cua x va y. Neu mot
trong hai phan x, y co kieu REAL*16 th hang so phc co kieu
COMPLEX*32, neu la REAL*8 th tng ng la COMPLEX*16. Neu phan
thc va ao co kieu bat ky th hang so phc co kieu la COMPLEX*8. Hang so
48
la
la
la
3.52 + 12 i
-0.12 + 0.00572 i
2500 + 0.012 i
49
Hang so kieu H c dung trong cac cau lenh FORMAT va khi cho gia tr
ban au cua cac ai lng co kieu bat ky ngoai tr kieu CHARACTER.
V du:
5HX Y Z
7HTOI
REAL X,Y,Z
CHARACTER * 10 NAME
PRINT*,Nhap ten cua ban vao va nhan Enter
READ*,NAME
PRINT*,Hello,NAME, ,Ban co the bat dau tinh
X=3**2-2
Y=2.08*X**2+5.0*X+3.0
Z=2.0*Y+6.0*X
PRINT*, X=,X, Y=,Y, Z=,Z
PRINT*,Chung toi tin rang ban hai long khi hoc Fortran
STOP
END
50
A(n)
A(n1,n2)
A(n1,n2,n3, )
V du:
X(1000) la mang 1 chieu co ten la X va co 1000 phan t.
A(10,10) la mang hai chieu co kch thc 10 10 = 100 phan t.
Cach khai bao mang trong mot chng trnh viet bang Fortran nh sau:
DIMENSION X(1000),A(10,10)
So lng thc o kch thc mang (d) khong vt qua 7. Cac ai lng
co the cho dang mot bieu thc so hoc: la mot so nguyen, ten cua hang so
nao o, mot he so hay bien so cua mot khoi chung cua chng trnh va tat ca
eu phai co kieu INTEGER. Trong bieu thc so hoc nay khong the ch la cau
51
lenh dan en (goi en) mot phan t cua mang khac hoac mot ham. Cac cau
lenh mo ta kieu cua bien va he so dung trong bieu thc nay phai co trc cau
lenh mo ta mang.
Trong chng trnh chnh, d cua mang phai cho di dang hang so. Con
trong cac chng trnh con th co the khong phai la hang so (tham ch la dau
sao *) dung e mo ta mang co kch thc thay oi hoac ieu khien c
trong qua trnh tnh toan. Gia tr cua gii han di (d1) phai nho hn hoac
bang gia tr cua gii han tren (d2). Kch thc moi thc o la d2 d1 + 1.
Neu gii han di khong cho th nghiem nhien bang 1. Do o kch thc
bang d2. ay la kieu the hien mang thong dung nhat hien nay (xem v du va
neu ve mang). So lng cac phan t cua mang bang tch so cua tat ca cac so
o d (xem v du).
Phan bo mang trong bo nh theo cac nguyen tac sau: cac phan t cua
mang mot chieu th phan bo mot cach lien tuc theo th t, mang nhieu chieu
th theo nguyen tac gia tr cua bieu thc au tien tang nhanh hn cua bieu
thc th hai, va th hai th tang nhanh hn th 3
V du:
Mang mot chieu S(5) co 5 phan t va mang hai chieu A(2,3) co 6 phan t
th phan bo tuan t theo cot nh sau:
S(1)
S(2)
S(3)
S(4)
S(5)
A(1,1)
A(2,1)
A(1,2)
A(2,2)
A(1,3)
A(2,3)
52
lieu trong qua trnh tnh toan se c khao sat chi tiet sau phan cuoi cua
giao trnh.
* Ghi chu: khi khai bao d lieu ma qua dai, vt qua 72 byte th co the tiep
tuc cac dong tiep theo bang dau * tai v tr cot so 6 roi viet tiep tuc.
V du, e ro hn xem v du cua mot oan chng trnh nh sau :
C
C
C
C
C
C
C
N1=N-1
RM=XL/2.
RXL2=1./XL/XL
E0CUL=-1.41864874*14.4/XL
PI=3.1415926
53
viec s dung chng trnh hieu qua hn oi vi nhng ngi s dung chng
trnh khong phai do mnh viet (thch hp cho sinh vien thc tap, dung cac
chng trnh a co, thng gap trong chuyen giao cong nghe va hng
nghien cu mi cua cac nhom nghien cu vi nhau).
Nh a e cap phan trc, dong chu thch c bat au bang ky t C
hoac * tai v tr so 1 cua dong, sau ky t nay tai v tr bat ky ta co the viet
dong van ban chu thch. oi khi ngi ta ch e dong trong hoan toan vi ky
t C v tr so 1 e lam thoang hn hoac phan oan chng trnh cho de
nhn. Dong chu thch co the at tai v tr bat ky trong chng trnh. e ro
hn, xem mot chng trnh hoan chnh sau:
Chng trnh 1. Chng trnh tnh dien tch va chu vi hnh tron
C
C
C
C
C
C
C
C
C
Tinh chu vi
REAL PI
PARAMETER (PI=3.14159)
REAL R,S,P
PRINT*,Nhap vao ban kinh duong tron:
READ*,R
S=PI*R**2
P=2.0*PI*R
PRINT*,Dien tich hinh tron la:,S
PRINT*,Chu vi hinh trong la:,P
PRINT*,Cac tinh toan da ket thuc
STOP
END
54
Goi en ham
Luy tha
Nhan va chia
Cong va tr
55
Cac bieu thc c at trong dau ngoac c u tien thc hien au tien.
Neu trong bieu thc co nhieu phep tnh co cung u tien th cac phep toan
c thc hien t trai sang phai. Ngoai tr phep luy tha th thc hien t phai
qua trai. V du, bieu thc 2*3*4 th c tnh theo th t tuan t nh bieu
thc (2*3)*4, con bieu thc 2**3**4 tnh theo th t nh bieu thc
2**(3**4).
Trong mot bieu thc so hoc co the dung so hang co nhieu kieu khac nhau.
Gia tr tnh c thng theo kieu cua so hang co u tien cao nhat. V du, ket
qua trong phep cong cua hai so hang co kieu REAL*8 va REAL*4 la kieu
REAL*8. Mot ngoai le la cac phep toan tren d lieu co kieu so thc va kieu
so phc.
V du :
Kieu cua so hang
REAL*8, COMPLEX*8
REAL*16, COMPLEX*8
COMPLEX*16
COMPLEX*32
Ket qua cua phep chia 2 so nguyen la so nguyen (so d cua phep chia b
bo). Neu phan nguyen nho hn 1 th ket qua phep chia nay bang 0. V du:
ket qua phep chia -13/4 bang -3, ket qua cua bieu thc 6**(-3) c tnh nh
1/(6**3) va bang 0.
Mot so v du ve bieu thc so hoc co the xem ben di:
Kieu viet trong Fortran
Kieu toan
A1 = x 2 + y 3 + cos z
5Z
A2 =
X +Y
A3 = 4arcos(0,5)
A2=5*Z/(X+Y)
A3=4*ACOS(0.5)
* Ghi chu: co 2 van e can lu y khi viet bieu thc so hoc trong Fortran
nh sau.
1. Trong bieu thc so hoc khong chap nhan cac phep toan khong xac
nh: chia cho 0, lay luy tha vi so mu bang 0 hoac am cua mot so
56
bang 0, lay luy tha so hang am (co kieu la so nguyen hay thc)
vi so mu kieu REAL hay DOUBLE PRECISION.
2. Cac gia tr trung gian hay cuoi cung cua mot phep toan khong c
vt qua gii han cho phep cua so nguyen hoac so thc.
2.3.2. Bieu thc van ban
Bieu thc van ban c viet di dang:
so hang dang van ban // so hang dang van ban
trong o, so hang dang van ban co the la hang, bien so, phan t cua mang,
goi en ham hoac la bieu thc e trong dau ngoac. Dau // la dau noi.
Gia tr cua bieu thc van ban la ket qua noi hai so hang dong van ban. V
du: ket qua cua bieu thc LOAI//A la dong LOAIA. Viec s dung cac
dau ngoac trong bieu thc van ban khong anh hng en ket qua.
V du :
X=AB
Y=CD
Z=EF
th bieu thc
va
XX=X//Y//Z
XX=X//(Y//Z)
57
Toan t
Ten goi
.LT.
.LE.
.GT.
.GE.
.EQ.
.NE.
nho hn
nho hn hoac bang
ln hn
ln hn hoac bang
bang
khong bang
(A < B)
(C B)
(D F)
58
V du:
R.LE.R11
1424
3.AND.R.GT.R12
14243
bieu thc tng
quan th nhat
Nguyen cau lenh Fortran dung cho he thc logic tren la:
IF(R.LE.R11.AND.R.GT.R12)K=K+1
ngha la neu bien R thoa man ong thi hai ieu kien R R11 va R > R12
th bieu thc logic co gia tr la .TRUE., khi o se thc hien phep tnh K =
K+1
Ket qua tnh bieu thc logic ch co the la .TRUE. hoac .FALSE. co kieu
la LOGICAL*1 hoac LOGICAL*4. Hai toan t logic co the viet lien tiep
nhau ch khi nao toan t th hai la .NOT.. V du:
.OR..NOT.A
.AND..NOT.D
.EQV..NOT.E
Neu nh so hang cua toan t phu nhan la bieu thc logic th bieu thc nay
phai e trong ngoac ( ), v du: .NOT.(C.AND.D). Hoat ong cua toan t logic
tuy thuoc vao gia tr cua cac so hang c the hien qua bang 2.2.
59
Khi tnh bieu thc logic ma ben trong co cac toan t tng quan, th t u
tien nh sau:
1. Goi en ham
2. Luy tha
3. Nhan va chia
4. Cong va tr
5. Lien ket
6. Toan t tng quan
7. .NOT.
8. .AND.
9. .OR.
10. .EQV. va .NEQV.
Bieu thc trong dau ngoac c tnh au tien. V du: bieu thc
A.EVQ.B.AND.C.OR.D c tnh tng t nh bieu thc
A.EQV.((B.AND.C).OR.D).
Noi tom lai, tat ca cac bien, phan t cua mang, ham c s dung trong
cac bieu thc phai xac nh. Trong bieu thc so hoc khong c dung bien co
kieu so nguyen la mot dau nhan nao o trong chng trnh. S truy cap en
ham (goi ham) khong c lam thay oi gia tr mot so hang nao o trong
bieu thc. V du, bieu thc F(I) + B(I) va G(J) + J khong chap nhan c,
neu sau khi truy cap en ham F va G xay ra s gan gia tr mi cho I va J.
Bang 2.2. Cac hoat ong cua toan t logic
Gia tr cua bieu thc logic
ung
ung
sai
ung
ung
ung
sai
ung
sai
sai
sai
ung
sai
ung
sai
ung
ung
sai
ung
sai
ung
sai
sai
ung
sai
sai
ung
sai
Con mot loai bieu thc na la bieu thc hang so, khi ma tat ca cac so
hang cua bieu thc eu la hang so hoac ten hang.
e ro hn cach s dung cac toan t va cac kieu d lieu ta xem mot so
chng trnh mau ben di.
60
Chng trnh 2. Tnh trung bnh cong 3 so nhap vao t ban phm
C
C
C
C
C
D=(A+B+C)/3.0
Qua cac chng trnh mau tren, chng trnh viet bang ngon ng lap
trnh Fortran khong theo mot khuon mau cng nhac nh vi ngon ng lap
trnh Pascal hoac C. Co the khong can dung cau lenh PROGRAM au
chng trnh e at ten cho chng trnh. Khai bao kieu cho cac bien cung
co the khong can thiet. Khi o kieu cua cac bien c hieu mot cach mac
nh nh a e cap (ch co cac bien ma ten bat au bang cac ch I, J, N th
mac nh co kieu la so nguyen, con lai th co kieu so thc).
61