71
1 NGÔN NG LP TRÌNH TÍNH TOÁN FORTRAN Tr n Th ùy D ng ± SNEEP Email: [email protected]

Giới thiệu về Fortran

Embed Size (px)

Citation preview

Page 1: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 1/71

1

NGÔN NG LP TRÌNHTÍNH TOÁN FORTRAN

Trn Thùy Dng ± SNEEPEmail: [email protected]

Page 2: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 2/71

2

GII THIU CHUNG

FORTRAN (FORmular TRANslator): mt trong nhng ngôn ng lptrình c nht (phát hành vào nm 1957) c thit k cho các tính toántrong khoa hc k thut.

Các phiên bn ca Fortran

FORTRAN 1957

FORTRAN II

FORTRAN IV

FORTRAN 66 (c phát hành theo tiêu chun  ANSI 1966)

FORTRAN 77 (chun  ANSI 1977)

FORTRAN 90 (Chun  ANSI 1990) FORTRAN 95 (Chun  ANSI mi nht)

Có nhiu phiên bn µbn a hóa¶ khác nhau.

Nhiu chng trình tính toán trong khoa hc k thut c vit sndi dng các SubFunction hoc SubRoutine.

Page 3: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 3/71

3

TI SAO PHI CHN FORTRAN

FORTRAN c to ra vit các chng trình giicác bài toán khoa hc k thut

 a vào kiu bin nguyên và du chm ng (floating point)

 a vào kiu d liu mng cho các tính toán toán hc

 a vào các subroutines và subfunctions

Trình biên dch có th to ra mã ti u cao (chy nhanh)

Có sn rt nhiu th vin s toán (numerical-math)

Các khó khn và nhc im ca Fortran:

Cho phép s dng lnh GO TO rt t do nên khó chiu các on mã lnh và làm ri chng trình

Khó kim soát các d liu dng phi s (nonnumerical)

Không có kh nng lp trình qui

Page 4: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 4/71

4

Tài liu tham kho

An introduction to programming in Fortran 90 

Janet A Nicholson, I ntroduction to programming using 

FORTRAN 90  American National Standard, P rogramming Language

FORTRAN 

MIT, Fortran 95 Handbook (Scientific and Engineering Computation)

Lahey/Fujitsu, Fortran 95 Language Reference

Tao Pang, An I ntroduction to Computational  Phy sics(Fortran 90 and H P F P rograms Related to t he Book)

Page 5: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 5/71

5

Ni dung chính

1. C bn v Fortran

2. Cu trúc iu khin

3. Module và th tc

4. S liu dng array

5. Bin con tr

6. Lnh Vào/ Ra

Page 6: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 6/71

6

1. C bn v Fortran

Cu trúc tng quát ca chng trình Fortran:[PROGRAM TenChuongTrinh]

[Cac_cau_lenh_khai_bao]

[Cac_cau_lenh_thuc_hien]END [PROGRAM [TenChuongTrinh]]

[SUBPROGRAM]

Cu trúc câu lnh ca Fortran:

Mt dòng lnh không quá 132 ký t (k c du cách); Câu lnh quá dài: t ký t ³&´ cui dòng ni vi

dòng tip theo.

Mi ký t sau du ³!´ là li chú thích.

Page 7: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 7/71

7

1. C bn v Fortran

Ví d chng trình Fortran n gin:

program sum !a: tên chng trình

!an example of program structure !b: chú thích

real :: answer,x,y !c: khai báo bin

print *, 'Enter two numbers' !d: d liu ra

read *, x !e: d liu vào

read *, y !e: d liu vào

answer=x+y !f : phép toán s hc

print *, 'The total is ', answer  !g: d liu ra

end program sum !h: kt thúc chng trình

Page 8: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 8/71

Page 9: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 9/71

9

1. C bn v Fortran

D liu và cách biu din d liu trong Fortran

Kiu ký t (4 byte), khai báo:

CH ARACTER (length) vname

hoc CH ARACTER (type[,type«])[attrib[,attrib]«] :: vname hoc CH ARACTER [*chrs] vname [*lengths][(dim)] &

[/values/][,vname [*lengths][(dim)]] [/values/]

Kiu logic (4 byte)

Ch nhn 2 giá tr: .TRUE. và .FALSE. Khai báo: LOGIC AL [([KIND=]kind)] [, attrs ::] vname

Page 10: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 10/71

10

1. C bn v Fortran

D liu và cách biu din d liu trong Fortran:

Interger X,Y(10)

Real, parameter :: A=2010Complex(4), Dimension(8) :: cz, cq

CHARACTER (20) St1, St2*30

LOGICAL, ALLOCATABLE :: flag1, flag2

Page 11: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 11/71

11

 nh ngha các phép toán trong Fortran

Page 12: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 12/71

12

1. C bn v Fortran

Nhp và xut d liu n gin

Lnh nhp d liu: RE AD*, list

Lnh in d liu không nh dng: PRINT*,list

Thí d: PRINT*, "Can bac hai cua ", 2, ³la´, SQRT(2.0)

Lnh in d liu nh dng:

Cú pháp: k FORM AT (danh sách các c t)

k là nhãn ca dòng lnhThí d: X = 123.4567

PRINT 10, X

10 FORM AT( F8.2 )

Page 13: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 13/71

13

Mt s c t trong lnh in nh dng

nH trong ó - n s v trí xut d liu vn bn. Thí d:PRINT 5 , Y

5 FORM AT (16H TICH PH AN B ANG , F9.3)

nX s chèn n du trng vào bn ghi. Thí d:PRINT 35

35 FORM AT ('1' , 25X , 'THI NGHIEM SO 1')

Aw : w là s v trí giành cho 1 bin là xâu ký t

Iw: w là s v trí dùng cho 1 bin s nguyên

Fw.d : dùng biu din dng thp phân ca s thc, - w tng s v trí dành cho s thc k c du chm thp phân,- d  s ch s thp phân sau du chm

E w.d : ghi ra di dng lu tha

L w: trong ó - w  s v trí giành cho d liu kiu logic.

Page 14: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 14/71

14

1. C bn v Fortran

S dng file:  c t file:

program readdata

implicit none!c d liu t file tên là mydata.txt

real :: x,y,z

open(10,file='mydata.txt')

read(10,*) x,y,z

print *,x,y,z

close(10)

end program readdata

Page 15: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 15/71

15

1. C bn v Fortran

S dng file: Vit vào file:

program io2real :: numinteger :: iopen(12,file='myoutput')do i = 1,100

num = i/3.0 write(12,*) num 

end doclose(12)print *, 'finished'

end program io2

Page 16: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 16/71

16

1. C bn v Fortran

S dng file: Fortran ngm nh mt s thit b chun liên kt vi

nh danh UNIT nh sau:

Du sao (*):M

àn hình hoc bàn phímí UNIT = 0: Màn hình hoc bàn phím

í UNIT = 5: Bàn phím

í UNIT = 6: Màn hình

Thí d:

OPEN (UNIT = 10, FILE = µTEST.dat')WRITE(10,'(A18,\)µ)'Ghi vao File TEST.dat &

da lien ket voi UNIT 10¶

WRITE (*, '(1X, A30,\)') ' In ra man hinh.µ

Page 17: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 17/71

17

2. Cu trúc iu khin

2.1. Cu trúc IF và các lnh tng ng

2.2. Cu trúc lp vi lnh DO

2.3. Cu trúc SELECT C ASE

2.4. Chu trình lp không xác nh

2.5. Mt s ví d

Page 18: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 18/71

18

2.1. Cu trúc IF và các lnh tng ng

Lnh IF logic: Dng 1:

Dng 2:

IF (Biu thc logic) THENlnh 1....

lnh nEND IF

IF (Biu thc logic) THENlnh 1....lnh n

ELSElnh n + 1....lnh m

END IF

Page 19: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 19/71

19

2.1. Cu trúc IF và các lnh tng ng

Lnh IF logic: Dng 3: IF (Biu thc lôgic 1) THEN

lnh 1...

lnh mELSE IF (Biu thc lôgic 2) THENlnh m+1...lnh n

ELSE IF (Biu thc lôgic 3) THENlnh n+1

...lnh p

ELSElnh p+1...lnh q

END IF

Page 20: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 20/71

20

2.1. Cu trúc IF và các lnh tng ng

Lnh IF logic: Thí d: PROGRAM  XEPLOAI

INTEGER  DIE M   W RITE (*,'( A\)') ' CHO DIE M  TBCHT: 'R E A D*, DIE M  

IF (DIE M  <0 .OR . DIE M  > 10) THE N PRINT*, µ DIE M  KHONG HOP LE¶STOP 

ELSE IF (DIE M  >= 9) THE N PRINT*,' LOAI XU AT S A C'

ELSE IF (DIE M  >= 8) THE N PRINT*,' LOAI GIOI'

ELSE IF (DIE M  >= 7) THE N PRINT*,' LOAI KH A 'ELSE IF (DIE M  >= 5) THE N 

PRINT*,' LOAI TR U NG BINH'ELSE

PRINT*,' LOAI YEU'E ND IF

E ND XEPLOAI

Page 21: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 21/71

21

2.1. Cu trúc IF và các lnh tng ng

Lnh IF logic: mt s biu thc lôgic

Toán t Dng khác Thí d Gii thích

== .eq. If(i==j) then... bng

> .gt. If (i.gt.j) then ... Ln hn

>= .ge. If (i.ge.j) then ... Ln hn hoc bng

< .lt. If (i.lt.j) then ... Nh hn

<= .le. If (i.le.j) then ... Nh hn hoc bng

/= .ne. If (i.ne.j) then ... Khác nhau.not. If (not.k) then ... .true. nu k là .false.

và ngc li

.or. If(i>j.or.j<k) then... Phép lôgic OR

.and. If(i>j.and.j<k) then... Phép lôgic  AND

Page 22: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 22/71

22

2.1. Cu trúc IF và các lnh tng ng

Lnh IF s hc Lnh IF s hc cho phép thc hin r nhánh chng

trình thành ba nhánh tùy thuc vào giá tr ca biuthc s hc.

Dng tng quát: IF (BThuc_SoHoc) m1, m2, m3

INTEGER   N PRINT*, ' NH AP  MOT SO  NGUYE N 'R E A D*,  N IF ( Ní50) 10, 20, 30

10 PRINT*,' SO  NA Y  NHO HON 50'GOTO 40

20 PRINT*,' SO  NA Y BANG 50'GOTO 40

30 PRINT*,' SO  NA Y LON HON 50'40 CONTINUE

E ND

Page 23: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 23/71

23

2.1. Cu trúc IF và các lnh tng ng

Lnh nhy vô iu kin GOTO:

Cú pháp: GOTO m

trong ó m là nhãn ca câu lnh cn c huyn ti .

Lnh GO TO tính toán:

Cú pháp: GO TO (n1, n2,..nm ), i 

trong ó: n1, n2,..nm là các  nhãn ca nh ng  lnh t h c  hin, 

- i  là c h  s ca nhãn ca câu lnh cn ti .

Page 24: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 24/71

24

2.2. Cu trúc lp vi lnh DO

Dng 1:DO n bdk= Dau, Cuoi [, Buoc ] !bdk: bin iu khin

Các_câu_lnh

n Câu_lnh_kt_thúc Dng 2:

DO n bdk  = Dau, Cuoi [, Buoc ]

Các_câu_lnh

n CONTINUE

Dng 3:DO bdk  = Dau, Cuoi [, Buoc ]

Các_câu_lnh

END DO

Page 25: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 25/71

25

2.2. Cu trúc lp vi lnh DO

REAL X(15), Y(15)N = 15DO 3 I =1, N

READ * , X (I)Y (I) = X (I)

3 CONTINUE

DO 2 I = 1, N-1K = IDO 4 J = I + 1, N

IF (Y(K).LT.Y(J)) K = J4 CONTINUE

IF (K .NE. I) THENTG = Y(I)Y(I) = Y(K)Y(K) = TG

END IF2 CONTINUEDO 7 I = 1, NPRINT 5 , X (I), Y (I)

7 CONTINUE5 FORMAT (1X, 2F10.2)

END

Thí d 1: Vit chngtrình nhp 15 phn tca mng s thc X, sp

xp li các phn t mngtheo th t gim dn vàin lên màn hình các mngc và mi thành hai ct.

Page 26: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 26/71

26

2.2. Cu trúc lp vi lnh DO

INTEGER   N1,  N2, TONG, I PRINT '( A\)', ' CHO GIA  TRI  N1,  N2 ( N1<= N2):¶R E A D*,  N1,  N2TONG = 0DO I =  N1, N2,1

TONG = TONG + I PRINT*, I 

E ND DO PRINT '(" TONG=",I5)', TONG E ND

Thí d 2: Vit chng trình tính tng các s nguyên liên tip tN1 n N2, trong ó N1 và N2 c nhp vào t bàn phím.

Page 27: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 27/71

27

2.3. Cu trúc SELECT CASE

Dng tng quát:SELECT C A SE (BThuc_Chon)

C A SE (Chon1)

Cac_cau_lenh

 _1C A SE (Chon2)

Cac_cau_lenh _2

...

C A SE DEFA ULT 

Cac_cau_lenh _nE ND SELECT

BThuc_Chon, Chon1, Chon2,« phi có cùng kiu d lius nguyên, lôgic hoc CH ARACTER*1

Page 28: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 28/71

28

2.3. Cu trúc SELECT CASE

Thí d: gõ mt ký t và cho bit ó là ch cái hay ch s.

CH ARA CTER *1 charPrint*,' Hay go mot ky tu:'R ead*, Char

SELECT C A SE (char)C A SE ('0':'9')

 W RITE (*, *) "Day la chu so ", CharC A SE (' A ':'Z','a':'z') W RITE (*, *) "Day la chu cai ",Char

C A SE DEFA ULT  W RITE (*, *) "Day khong phai chu so, &

cung khong phai chu cai." W RITE (*, *) "Day la ky tu ", Char

E ND SELECT E ND

Page 29: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 29/71

29

2.4. Chu trình lp không xác nh

Cu trúc kt hp IF và GOTO m Câu_lnh _u_vòng_lp

Các_câu_lnh _tip_theo_trong_vòng_lp

IF (BThuc_ Logic) GOTO m hoc: m Câu_lnh _u_vòng_lp

Các_câu_lnh _tip_theo_trong_vòng_lp

IF (BThuc_ Logic) THE N

Các_câu_lnh _x_lý_trc_khi_lp_li

GOTO m 

E ND IF

Page 30: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 30/71

30

2.4. Chu trình lp không xác nh

Cu trúc DO và EXITDng 1:

[TenChuTrinh:] DO

IF (BThuc_Logic) EXITCác_câu_lnh

END DO [TenChuTrinh]

Dng 2:[TenChuTrinh:] DO

Các_câu_lnhIF (BThuc_Logic) EXIT

END DO [TenChuTrinh]

Page 31: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 31/71

31

2.4. Chu trình lp không xác nh

Cu trúc DO WHILE«END DODO WHILE (BThuc_Logic)

Các_câu_lnh

END DO

Lnh CYCLECYCLE [Tên_Chu_Trình

Lnh CYCLE có th nm trong các chu trình lng nhau.

Nu không ch ra Tên_Chu_Trình thì CYCLE ch có tácng i vi chu trình lp trong nht cha nó.

Page 32: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 32/71

32

2.4. Chu trình lp không xác nh

Thí d: Tính s PI theo công thc

 ây là tng ca mt chui an du mà s hng

tng quát là:

7

1

5

1

3

11

4

!T 

,...2,1,12

1 1

!

nn

n

Page 33: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 33/71

33

Cách 1: S dng chu trình lp kt hp IF và GOTO

PROGRAM TINHPI1 ! Cach 1: IF & GOTOREAL EPS, SS, PI, TMPINTEGER :: N, DAU = 1EPS=0.0001TMP=0.0N=1100 PI=TMP+DAU/FLOAT(2*N-1)

DAU = íDAUSS=ABS((PI-TMP)/PI)PRINT*,'Vong lap thu ',N,' Sai so=',SS

IF (SS >= EPS) THENTMP = PI

N=N+1GOTO 100ELSE

PI=PI*4.0WRITE(*,300)PI

300 FORMAT(4X,' PI = ',F10.4)END IF

END

Page 34: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 34/71

34

Cách 2: S dng chu trình lp kt hp DO và EXIT

PROGRAM TINHPI2 ! CACH 2: DO & EXITREAL EPS, SS, PI, TMPINTEGER :: N, DAU = 1EPS=0.0001TMP=0.0N=1DO

PI=TMP+DAU/FLOAT(2*N-1)DAU = íDAUSS=ABS((PI-TMP)/PI)PRINT*,'Vong lap thu ',N,' Sai so=',SS

IF (SS < EPS) EXIT

TMP = PIN=N+1

END DOPI=PI*4.0WRITE(*,300)PI300 FORMAT(4X,' PI = ',F10.4)END

Page 35: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 35/71

35

Cách 3: S dng cu trúc DO WHILE

PROGRAM TINHPI3 ! CACH 3: DO WHILEREAL EPS, SS, PI, TMPINTEGER :: N, DAU = 1EPS=0.0001TMP=0.0

N=1SS=1.0DO WHILE (SS >= EPS)

PI=TMP+DAU/FLOAT(2*N-1)DAU = íDAUSS=ABS((PI-TMP)/PI)

PRINT*,'Vong lap thu ',N,' Sai so=',SS

TMP = PIN=N+1

END DOPI=PI*4.0WRITE(*,300)PI300 FORMAT(4X,' PI = ',F10.4)

END

Page 36: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 36/71

36

3. Chng trình con và Modul

  t chc mt chng trình gn gàng, d khai thác,Fortran cho phép phân mnh chng trình và to thànhcác chng trình con là th tc (SUBROUTINE) vàhàm (FUNCTION)

Các chng trình con cng có th chia thành hai loi:chng trình con trong và chng trình con ngoài.

Có th chn ra nhng chng trình con trong s cácchng trình con to ra mt th vin riêng. Tp hp

các chng trình con này c gi là modul.

Page 37: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 37/71

37

3. Chng trình con và Modul

Hàm lnh: Dng tng quát:

Tên hàm (danh sách i s) = Biu thc

 c khai báo u chng trình, cùng vi các lnhkhai báo d liu.

PROGRAM BT_HAM1REAL X, FxFx = 3*x**2 - 5*x + 2Print*,' Cho gia tri cua X: 'Read*,xPrint '('' Gia tri ham F(x)='',F10.3)', FxEND

Page 38: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 38/71

38

3. Chng trình con và Modul

Hàm chng trình con: Khai báo:

[KiuDL][RECURSIVE] FUNCTION TenHam &

([Các_i_s]) [R

ESUL

T (TenKetQua) ][Các_câu_lnh_khai_báo]

[Các_câu_lnh_thc hin]

[TenHam = ...]

END FUNCTION [TenHam]

Hàm có th c gi ti bng cách hoc gán giá trhàm cho bin, hoc hàm tham gia vào biu thc tính:

TenBien = TenHam ([Các_i_s])

Page 39: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 39/71

39

3. Chng trình con và Modul

Th tc con: Cú pháp khai báo th tc:

SUBROUTINE TenThuTuc [( Các_i_s )]

[Các_câu_lnh_khai_báo]

[Các_câu_lnh_thc_hin]

END SUBROUTINE [TenThuTuc]

Li gi th tc:

C ALL TenThuTuc [( Các_i_s)]

Page 40: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 40/71

40

3. Chng trình con và Modul

Câu lnh CONT AINS: Phân cách thân chng trình chính vi các chng

trình con trong thuc nó.

Các chng trình con trong c sp xp ngay saucâu lnh CONT AINS và trc t khóa END cachng trình chính.

B cc tng quát:PROGRAM TenChuongTrinh

[Các_câu_lnh_khai_báo][Các_câu_lnh_thc_hin][CONT AINSCác_chng_trình_con_trong ]

END [PROGRAM [TenChuongTrinh]]

Page 41: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 41/71

41

3. Chng trình con và Modul

Thí d 1:

Gii phng trình f(x) = 0 bng phng pháp lpNewton

Các bc:B1) Khi to nghim x bng mt giá tr ban u nào ó

B2) Gán x bi xí f(x)/f¶(x), trong ó f¶(x) là o hàm bcnht ca f(x)

B3) T nh và kim tra iu kin f(x) ~ 0Nu cha tha mãn thì quay li bc 2.

Nu tha mãn thì in kt qu và kt thúc chng trình.

Page 42: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 42/71

42

Gii phng trình f(x) = x3 + x 3

PROGRAM Newton! Giai PT f(x) = 0 bang PP Newton

IMPLICIT NONE

INTEGER :: Its = 0 ! Dem lan lap

INTEGER :: MaxIts = 20 ! So lan lap cuc dai

LOGICAL :: Converged = .false. ! Dieu kien hoi tu

REAL :: Eps = 1E-6 ! Sai so cho phep

REAL :: X = 2. ! Gia tri nghiem khoi tao

DO WHILE (.NOT. Converged .AND. Its < MaxIts)

X = X - F(X) / DF(X)PRINT *, X, F(X)

Its = Its + 1

Converged = ABS(F(X)) <= Eps

END DO

Page 43: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 43/71

43

IF (Converged) THENPRINT *,'Hoi tu'

ELSEPRINT *,'Phan ky'

END IFPRINT *,¶Nghiem PT: X = µ,X!!!!!!!!!!!!!!!!!!!!!!!!!!!!

CONTAINSFUNCTION F(X)REAL F, XF = X ** 3 + X - 3

END FUNCTION F!!!!!!!!!!!!!!!!!!!!!!!!!!!!FUNCTION DF(X)REAL DF, XDF = 3 * X ** 2 + 1

END FUNCTION DFEND PROGRAM Newton

Page 44: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 44/71

44

3. Chng trình con và Modul

Thí d 2: Tính các c trng thng kê: trung bình,phng sai và lch chun ca chui x gm n phn ttheo công thc sau:

,1

n

 x

m

n

i

i

 x

§!! ,

1

21

2

 x

n

i

i

 xm

n

 x

 D

!

§!

 x xD!W 

Page 45: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 45/71

45

PROGRAM THKEINTEGER N, I

REAL X(99), TBINH, PSAI, DLCPRINT *, ' NHAP DO DAI CHUOI (<100)'READ *, NPRINT *, ' NHAP CAC GIA TRI CUA X:'

5 FORMAT (1X, ' X(', I2, '): ')

DO I = 1, NWRITE (*, 5) IREAD *, X (I)

ENDDOCALL STAT(X, N, TBINH, PSAI, DLC)

WRITE(*, 8) TBINH, PSAI, DLC8 FORMAT (1X, 'T.BINH = ', F7.2, µ PH.SAI = ',&

F7.2, ' DL CHUAN = ', F7.2)END

Page 46: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 46/71

46

SUBROUTINE STAT (X, N, AVER, VARI, STDV)REAL X (N), AVER, VARI, STDVINTEGER N, IAVER = 0.0VARI = 0.0DO I = 1, N

AVER = AVER + X (I)VARI = VARI + X (I) * X (I)

END DOAVER = AVER / REAL (N)VARI = VARI / REAL (N-1) - AVER * AVERSTDV = SQRT (VARI)RETURN

END

Page 47: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 47/71

47

Hàm tr v nhiu giá tr 

Fortran 90 cho phép nh ngha hàm vi kh nng tr v nhiugiá tr.

Thí d 3: gi s có hàm f(x)= 3x2 + 2x -5. Hãy tính giá tr cahàm ti các giá tr ca i s x1, x2,..., xn.

INTEGER, PARAMETER :: N = 7REAL, DIMENSION (N) :: X, FXDATA X /-3., -2., -1., 0., 1., 2., 3./FX = F(X,N)PRINT*, FXCONTAINS

FUNCTION F(X,N)INTEGER, INTENT (IN) :: NREAL, DIMENSION(N),INTENT(IN) :: XREAL, DIMENSION(SIZE(X)):: F

F(:) = 3*X(:)*X(:) + 2*X(:) - 5END FUNCTIONEND

Page 48: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 48/71

48

Hàm tr v nhiu giá tr 

Nu F(X,N) c khai báo nh mt hàm ngoài thì trong phnkhai báo ca chng trình gi cn phi có khi giao din nhsau:

INTEGER, PARAMETER :: N = 7REAL, DIMENSION (N) :: X, FX

INTERFA CEFU NCTION F(X, N)INTEGER , INTE NT (IN) ::  N R E AL, DIM E NSION( N),INTE NT(IN) :: XR E AL, DIM E NSION(SIZE(X))::  F

E ND FU NCTIONEND INTERFACEDATA X /-3., -2., -1., 0., 1., 2., 3./

FX = F(X,N)PRINT*, FXENDFUNCTION F(X,N)

INTEGER, INTENT (IN) :: NREAL, DIMENSION(N),INTENT(IN) :: XREAL, DIMENSION(SIZE(X)):: F

F(:) = 3*X(:)*X(:) + 2*X(:) - 5END FUNCTION

Page 49: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 49/71

49

Các thuc tính ca i s

Thuc tính INTENT: khi thc hin li gi n mtchng trình con, các i s hình thc s c thay thbi các i s thc ca chng trình gi. Cú pháp và tác ng ca t khóa INTENT nh sau:

INTENT (Mô_t) [::] vnamehocKiu_DL, INTENT (Mô_t) :: vname(vname là danh sách bin óng vai trò i s hình thc;

Mô_t có th nhn mt trong các giá tr:

IN: khi tham s ch truyn vào cho chng trình con vàkhông th b làm thay i giá tr OUT: nu bin tr giá tr v chng trình gi, nó cn phi có

mt trong danh sách i s hình thc INOUT: va là tham s truyn vào cho chng trình con

va là bin tr giá tr v cho chng trình gi.

Page 50: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 50/71

50

Các thuc tính ca i s

Thí d v INTENT:REAL X(20), SUMCALL RANDOM_NUMBER (X) ! To mng s ngu nhiên XPRINT*,X ! X truyn cho chng trình conCALL TONG (X,20,SUM)PRINT*,SUM ! Bin kt qu tr v t CTConPRINT*,X ! X tr v t chng trình conCONTAINSSUBROUTINE TONG (X,N,SUM)

INTEGER, INTENT (IN) :: N ! N ch INREAL, INTENT (INOUT) :: X(N) ! X va IN va OUTREAL, INTENT (OUT) :: SUM ! SUM ch OUT

X = X + 10. ! Làm thay i XSUM = 0.DO I=1,N

SUM=SUM+X(I)END DOEND SUBROUTINE TONG

END

Page 51: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 51/71

51

Các thuc tính ca i s

Thuc tính OPTIONAL: Khi xây dng các chng trình con, danh sách các i

s hình thc có th rt nhiu. tránh vic tham chiun nhng i s không cn thit ta có th khai báo

trong chng trình con tt c hoc mt s i s cóthuc tính tùy chn.

T khóa dùng khai báo i s tùy chn là OPTION ALmà cú pháp và cách s dng ca nó c mô t nhsau:

OPTION AL [::] vname

hoc

Kiu_DL, OPTION AL :: vname

Page 52: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 52/71

52

Các thuc tính ca i s

Thuc tính OPTION AL: Thí d:

SUBROUTINE TONG (X,N,SUM, A, B, C, D, E)INTEGER, INTENT (IN) :: NREAL, INTENT (INOUT) :: X(N)

REAL, INTENT (OUT) :: SUMREAL, OPTIONAL :: A, B, C, D, E ! Các i s tùy chnX = X + 10.SUM = 0.DO I=1,N

SUM=SUM+X(I)

END DOA = X(1)B = X(2)C = A + BD = X(3)E = C * DEND SUBROUTINE TONG

Page 53: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 53/71

53

Các thuc tính ca i s

Gi s trong chng trình chính ta khai báo khi giaodin cho chng trình này là:INTERFACE

SUBROUTINE TONG (X,N,SUM, A, B, C, D, E)

REAL, INTENT (INOUT) :: X(N)

REAL, OPTIONAL :: A, B, C, D, E

END SUBROUTINE TONG

END INTERFACE

Khi ó chng trình con TONG có th c gi nnh sau:CALL TONG (X,N,SUM) !B qua tt c các i s tùy chn

CALL TONG (X,N,SUM,T) !B qua 4 i s tùy chn cui cùng

CALL TONG (X,N,SUM,T,U) !B qua 3 i s cui cùng

Page 54: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 54/71

54

Các thuc tính ca i s

Thuc tính SAVE: Vùng b nh cung cp cho các bin a phng trong

các chng trình con s c gii phóng ngay sau khichng trình con tr kt qu v cho chng trình gi.Nu mun lu gi giá tr ca chúng cho ln gi sau tacó th t thuc tính S AVE cho chúng.

Cú pháp khai báo thuc tính S AVE nh sau:

S AVE [::] vnamehoc

Kiu_DL, S AVE :: vname

Page 55: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 55/71

55

MODUL

Fortran nh ngha 3 khái nim n v chng trình (ProgramUnit) là: chng trình chính, chng trình con ngoài, và modul.Modul khác vi các chng trình con 2 im quan trng: Modul có th cha trong ó nhiu hn mt chng trình con.

M

odul có th cha nhng câu lnh khai báo và c t mà chúng có ththam chiu c i vi tt c các n v chng trình có s dngmodul.

Các modul cng có th c biên dch mt cách c lp. Cu trúcchung ca modul có dng nh sau:MODULE TenModul

[Các_câu_lnh_khai_báo][CONTAINS

Các_chng_trình_con_modul]

END [MODULE [TenModul]]   s dng modul ta dùng câu lnh khai báo USE ngay u

chng trình: USE Tên_Modul_c_s_dng

Page 56: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 56/71

56

MODUL

PROGRAM EXAMPUSE MyModulIMPLICIT NONEREAL A, BPRINT*, µ Cho mot so: µREAD*, A

B = Pi ! Khai bao tu ModulCALL DOI_CHO( A, B ) ! Khai bao tu ModulPRINT*, A, B

ENDMODULE MyModulREAL, PARAMETER :: Pi = 3.1415927CONTAINS

SUBROUTINE DOI_CHO ( X, Y )REAL Tmp, X, YTmp = XX = YY = Tmp

END SUBROUTINE DOI_CHOEND MODULE MyModul

Page 57: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 57/71

57

Câu lnh Include

Ví d, gi s ta có file ³P ARAM.INC´ lu ti th mc

hin thi vi ni dung là:

INTEGER, PARAMETER :: NMAX=200, MMAX=100

REAL, PARAMETER :: Re=6731, G=9.8

Khi ó chng trình sau ây:

PROGRAM CT1

INCLUDE ³PARAM.INC´«

END

Page 58: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 58/71

58

4. Mng

Mng là mt tp hp các phn t có cùng kiu d liu,c sp xp theo mt trt t nht nh, trong ó miphn t c xác nh bi ch s và giá tr ca chúng.

Kiu d liu ca các phn t mng có th là kiu shoc không phi s. Mi mng c xác nh bi tênmng, s chiu, kích thc cc i và cách sp xpcác phn t ca mng.

Mng có th là mng tnh hoc mng ng.

Khi khai báo mng cn phi ch ra tên và s chiu canó, nhng có th cha cn ch ra kích thc và cáchsp xp các phn t mng. Có rt nhiu cách khai báobin mng.

Page 59: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 59/71

59

4. Mng

Mt s dng cú pháp tng quát ca câu lnh khai báo mng thngc s dng: Dng 1:

Kiu_DL Tên_bin_mng (Mô_t)RE AL*4 X (0:100)

RE AL Y(12,34) Dng 2:

Thuc_tính Tên_bin_mng (Mô_t)DIMENSION N (10,20)

 ALLOC AT ABLE Y(:,:)

Dng 3:

Kiu_DL, Thuc_tính (Mô_t) :: Tên_bin_mngRE AL,  ALLOC AT ABLE(:,:) :: X

INTEGER, DIMENSION(12,34) :: Y

Dng 4:

Kiu_DL, Thuc_tính :: Tên_bin_mng(Mô_t)RE AL,  ALLOC AT ABLE :: X (:,:)

RE AL, DIMENSION Y(12,34)

Page 60: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 60/71

60

Lu tr và truy cp ti các phn t mng

S dng lnh D AT A khi to mng:

REAL, DIMENSION(10) :: A, B, C(3,3)

DATA A / 5*0, 5*1 /

! Gán 5 phn t u bng 0 và 5 phn t tip!theo bng 1

DATA B(1:5) / 4, 0, 5, 2, -1 /

! Ch gán giá tr cho các phn t t B(1) n!B(5)

DATA ((C(I,J), J= 1,3), I=1,3) /3*0,3*1, 3*2/

! Gán giá tr cho các phn t ca C ln lt!theo hàng

Page 61: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 61/71

61

Lu tr và truy cp ti các phn t mng

Biu thc mng: Có th thc hin các phép toán trên các bin mng.

Trong trng hp này các mng phi có cùng cutrúc.

REAL, DIMENSION(10) :: X, YX + Y !Cng tng ng các phn t ca X và Y:

!X(I) + Y(I)X * Y ! Nhân tng ng các phn t ca X và Y:

!X(I) * Y(I)X * 3 ! Nhân tng ng các phn t ca X vi 3:

!X(I) * 3X * SQRT(Y) ! Nhân các phn t ca X vi cn bc 2

!ca các phn t tng ng ca Y:!X(I) * SQRT(Y(I))

X == Y ! Phép toán so sánh, cho kt qu .TRUE. nu! X(I) == Y(I), và .FALSE. nu ngc li.

Page 62: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 62/71

62

Cu trúc WHERE... ELSEWHERE ... END WHERE

Cú pháp lnh nh sau:

WHERE (iu_kin) Câu_lnh

hoc

WHERE (iu_kin)

Các_câu_lnh_1

ELSEWHERE

Các_câu_lnh_2

END WHERE

Lu tr và truy cp ti các phn t mng

Page 63: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 63/71

63

Cu trúc WHERE... ELSEWHERE ... ENDWHERE

REAL A (5), B(5), C(5)

A = (/ 89.5, 43.7, 126.4, 68.3, 137.7 /)B = 0.0C = 0.0WHERE (A > 100.0)

A = 100.0

B = 2.3ELSEWHERE

A = 50.0C = -4.6

END WHERE

Lu tr và truy cp ti các phn t mng

Page 64: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 64/71

64

Mng có kích thc và cách sp xp các phn tkhông c xác nh ngay t lúc khai báo gi là mngng.

Các mng ng luôn phi có thuc tính  ALLOC AT ABLEtrong câu lnh khai báo.

Kiu_DL,DIMENSION(Mô_t), ALLOC AT ABLE :: Tên_bin

hoc

Kiu_DL,  ALLOC AT ABLE [::] Tên_bin [(Mô_t)]

hoc

 ALLOC AT ABLE [::] Tên_bin [(Mô_t)]

Mng ng (Dynamical array)

Page 65: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 65/71

65

Mng ng (Dynamical array)

Ví d: RE AL,DIMENSION(:), ALLOC AT ABLE :: X ! Mng 1 chiu RE AL,  ALLOC AT ABLE :: vector(:) ! Mng 1 chiu INTEGER, ALLOC AT ABLE :: matrix(:,:) ! Mng 2 chiu

DIM

ENSIO

N X (:,:) ! X là mng hai chiu và RE AL,  ALLOC AT ABLE :: X ! X là mng ng, thc

ALLOC AT ABLE :: Y(:,:) ! Y là mng ng 2 chiu

Câu lnh  ALLOC ATE dùng nh v kích thc và cáchsp xp các phn t mng trong b nh (tc cp phát b

nh cho bin).

Câu lnh DE ALLOC ATE dùng gii phóng vùng b nh

mà bin mng ng ã c cp phát.

Page 66: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 66/71

66

Mng ng (Dynamical array)

REAL, DIMENSION(:), ALLOCATABLE :: X, OldXREAL AINTEGER NALLOCATE (X(0)) ! Kích thc ca X (lúc u bng 0)N = 0DO

Print*, µCho mot so: µREAD(*,*) AIF ( A < 0 ) EXIT ! Nu A<0 thì thoátN = N + 1 ! Tng N lên 1 n vALLOCATE(OldX(SIZE(X))) ! Cp phát kích thc ca

! OldX bng kích thc ca XOldX = X ! Lu X vào OldX

DEALLOCATE( X ) ! Gii phóng XALLOCATE(X(N)) ! Cp phát X có kích thc bng NX = OldX ! Gán toàn b OldX cho XX(N) = A !Gán giá tr mi cho phn t th N ca XDEALLOCATE( OldX ) ! Gii phóng OldX

END DOPRINT*,N, ( X(I), I = 1, N )

END

Page 67: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 67/71

67

Kiu con tr

Con tr là mt khái nim xác nh bin có thuc tínhcon tr. Bin con tr có th là bin vô hng hoc binmng. Khai báo kiu con tr nh sau:

POINTER [::] Tên_con_tr [(Mô_t)] [, ...]

hoc

Kiu_DL, POINTER :: Tên_con_tr [(Mô_t)]

Bin con tr có th c cp phát b nh bng lnh

 ALLOC ATE hoc tr n mt bin khác. Bin c contr tr n hoc là mt bin có thuc tính ích

(T ARGET) hoc mt bin ã c xác nh.

Page 68: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 68/71

68

Kiu con tr

INTEGER, POINTER :: P1 (:)INTEGER, POINTER :: P2 (:)INTEGER, ALLOCATABLE, TARGET :: D (:)ALLOCATE (D (7)) ! Cp phát b nh cho bin ICHD = 1D (1:7:2) = 10.

PRINT*, 'DICH=',DP1 => D ! Con tr tr vào bin ICHPRINT*,'CON TRO P1=',P1ALLOCATE (P1(10)) ! Cp phát b nh cho bin con trP1 = 5P2 => P1 ! Con tr tr vào bin ã xác nhPRINT*,'CON TRO P1=',P1

print*print*,'CON TRO P2=',P2P2 = 8PRINT*,'CON TRO P1=',P1print*print*,'CON TRO P2=',P2END

Page 69: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 69/71

69

Kiu con tr

  a con tr v trng thái không tr vào âu c tadùng câu lnh:

NULLIFY (P) !P là bin con tr

  xác nh trng thái hin thi ca con tr có thdùng hàm:

 ASSOCI ATED (P) !P là bin con tr

Hàm này tr v giá tr .TRUE. nu con tr ã liên kt vi mt bin, và

tr v giá tr .FALSE. nu con tr trng thái không tr vào âu c.

Bin con tr có th c cp phát b nh bng câulnh ALLOC ATE và c gii phóng bi câu lnhDE ALLOC ATE tng t nh mng ng.

Page 70: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 70/71

70

Bn ghi

 nh ngha mt bn ghi lu tr thông tin ca mt sinhviên nh sau:TYPE HOSOSV CHARACTER (30) HoTen !bao gom ca ho va ten

CHARACTER (20), DIMENSION(4) :: DiaChi! Tinh, huyen, xa, thon/xom

CHARACTER (10) DienThoaiCHARACTER (9) MaSo ! Vi du, K45003504LOGICAL GioiTinh ! .TRUE. neu la Nu,

! .FALSE. doi voi Nam (!)INTEGER NgaySinh ! Vi du, 19870308REAL, DIMENSION(40) :: Diem !Diem cac mon hocE ND TYPE

Page 71: Giới thiệu về Fortran

8/6/2019 Giới thiệu về Fortran

http://slidepdf.com/reader/full/gioi-thieu-ve-fortran 71/71

71

Bn ghi

Khai báo:

TYPE (HOSOSV) SVien

hay

TYPE (HOSOSV), DIMENSION (24) :: KTHN_K51

Truy cp:SVien%HoTen = ³Hoang Anh Dung´

SVien%DiaChi(1) = ³Ha Noi´

SVien%DiaChi(2) = ³Hoan Kiem´

SVien%DiaChi(3) = ³Hang Bac´

SVien%DiaChi(4) = ³Dinh Tien Hoang´

SVien%GioiTinh = .FALSE.