Professional Documents
Culture Documents
3245-Μια σύντομη εισαγωγή στη Fortran 77 PDF
3245-Μια σύντομη εισαγωγή στη Fortran 77 PDF
. . , . . , . .
2002
...............................................................................................................3
1. ..........................................................................................................4
2. H ....................................................................4
2.1. .................................................................................5
3. ...................................................................................................5
3.1. - ....................................................5
3.2. ..........................................................................................5
3.3. ......................................................................................6
4. ................................................................................6
5. ........................................................................................7
6. ..........................................................................7
6.1. READ ............................................................................................7
6.2. WRITE...........................................................................................7
6.3. H FORMAT .....................................................................7
7. ........................................................................................8
8. H IF ....................................................................................9
9. DO.........................................................................10
9.1. (implied) DO ...................................................................11
10. " WHILE"..............................................................11
11. ...............................................................................13
12. - ..................................................................15
13. - ......................................................................17
13.1. (Intrinsic functions) .............................................17
13.2. (Statement functions) ...............................................17
13.3. .....................................................................................17
13.3.1. .......................................................17
13.3.2. To SUBROUTINE .......................................................18
13.4. H XTERNAL ................................................................................20
: .....................................................................22
. FORTRAN
.
,
, FORTRA.
.
,
.
, ,
, , C.
(, ...)
FORTRAN 77 .
http://www.star.le.ac.uk/~cgp/prof77.ps
http://www.kcl.ac.uk/kis/support/cit/fortran/f77book.pdf
3
1.
FORTRAN (FORmula TRANslation) 1950.
FORTRAN ,
. ,
(.. ), FORTRAN
. , FORTRAN
( !).
, ,
.
compilers
.
FORTRAN
.
- FORTRAN,
.
,
FORTRAN 77.
2. H
FORTRAN ASCII
:
.
7 72.
72
( 0)
6 .
C * 1 .
(label), .
1 5 (
5 .)
compiler (
CHARACTER).
H PROGRAM .
STOP . END
compiler.
STOP, END.
4
2.1.
C234567
PROGRAM FIRST
C
INTEGER I
DO 10 I = 1,3
WRITE(*,*) Hello World
10 CONTINUE
* Hello World 3
STOP
END
3.
3.1. -
:
A,,Z 0,...,9.
.
( standard FORTRAN 77) 6
. ( compilers 31
,
).
. compiler
.
(..
FORTRAN).
:
: GEORGE, A3, PROD, sum_1, SINUS, IWRITE
: A$3, sum-1, SIN, WRITE, 3a, 1WRITE
:
0 , 1 .
3.2.
FORTRAN
C.
C FORTRAN
12.3,-1.,-1.0E6,
float REAL
( ) 1E-6
5
- COMPLEX (0.,1.)
3.3.
, o
compiler
. C,
:
AH, OZ.
I,J,K,L,M,N.
INTEGER I, SUM
REAL SINUS,X1,X2
LOGICAL FLAG
DOUBLE PRECISION PI
4.
+, -,
*, /, **. .. A+B-C, A*(-B),
A*B/C, Z**I.
:
) ( ).
) .
) .
) .
:
.
.
. (.. 10/3
3).
,
compiler
. (.. 3.0*1/3 3.0*1.0/3 3.0*1.0/3.0 1.0).
:
A*B-C/D : (A*B)-(C/D)
A/B*C : (A/B)*C
6
5.
FORTRAN
=
.
.
.
..
B = 9 B 9.0.
= 1.9 1
6.
,
.
, .. .
.
6.1. READ
: READ(a,b) 1, 2, ...
a .
a=5 a=*.
b=* .
b , FORMAT
.
6.2. WRITE
: WRITE(a,b) 1,2, ...
a . a=6
a=*.
b=* .
b , FORMAT
.
6.3. H FORMAT
/
FORMAT :
FORMAT ( )
7
Iw
Fw.d
A
w d
(). ( w d + 3). nX n
( n ). FORMAT
READ WRITE,
FORMAT ( 1 5)
READ WRITE.
PI = 3.141593
WRITE(*,10) The number pi is:,PI
10 FORMAT(2X,A,F5.2)
7.
: .TRUE. .FALSE.
( )
( ).
FORTRAN
C.
FORTRAN
C.
.. (A .GE. B)
.
:
( )
:
.LE. B .AND. B .LE. C
( .LE. B) .AND. (B .LE. C)
8. H IF
:
IF ( )
( )
ENDIF
IF ( )
( )
ELSE
( )
ENDIF
IF (. . 1)
( 1 )
ELSE IF (. . 2)
( 2 )
ELSE IF (. . n)
( n )
ELSE
( 1,2,,n )
ENDIF
:
SIGNUM NUMBER (SIGNUM=1
NUMBER>0, SIGNUM=-1 NUMBER<0, SIGNUM=0 NUMBER=0)
:
IF (NUMBER .LT. 0)
SIGNUM = -1
ELSE IF (NUMBER .GT. 0)
SIGNUM = 1
ELSE
SIGNUM = 0
ENDIF
9
C :
9. DO
:
DO s = 1, 2, 3
s CONTINUE
:
1 , 2
, 3 . 3 .
1.
, :
= (INT((2 1 + 3)/3) , 0)
DO
.
:
o 1, 2 .
o 1 .
o > 0 DO.
CONTINUE:
o (3).
o 1.
o > 0 ,
CONTINUE.
DO 10 I=1,3
WRITE(*,*)I T ( ) 1,2,3
10 CONTINUE
DO 200 K=10,2,-1
Y = 2.0*K T ( ) 20,18,...,4
WRITE(6,*) Y
200 CONTINUE
10
PI = 3.141593
DO 19 KAPPA=3,9,3
RES = COS(KAPPA*PI) T -1,1,-1
WRITE(*,*) RES
19 CONTINUE
C :
pi = 3.141593;
for (kappa = 3; kappa <= 9; kappa + = 3) {
res = cos(kappa*pi);
printf(%f\n,res);
}
9.1. (implied) DO
:
/, ( = 1,2,3)
DO, 1 ,
2 , 3 . 3 .
1.
:
WRITE(*,*) (I*I, I=1,3) T
1 4 9
while ( ) {
()
}
FORTRAN 77
while :
s IF ( ) THEN
()
GOTO s
ENDIF
11
1: FORTRAN
a b
C234567
PROGRAM SUMAB
C a b.
INTEGER A, B, SUM, I
WRITE(*,*) ' : '
READ(*,*) A, B
SUM = 0
IF (A .LT. B) THEN
DO 10 I= A,B
SUM = SUM + I
10 CONTINUE
ELSE
DO 20 I = A, B,-1
SUM = SUM + I
20 CONTINUE
ENDIF
WRITE(*,*) ' : ',SUM
STOP
END
2: FORTRAN
1 + 1/2 + 1/3 + 1/4 + ,
= 0.005
*234567
PROGRAM SEIRA
REAL SUM,OROS,EPSLON
INTEGER COUNT
EPSLON = 5.E-3
OROS = 1.
COUNT = 1
SUM = 0. 10
10 IF (OROS .GE. EPSLON) THEN
SUM = SUM + OROS
COUNT = COUNT + 1
OROS = 1./FLOAT(COUNT)
GOTO 10
ENDIF
WRITE(*,*) ' = ', SUM,' = ',COUNT-1
STOP
END
12
3:
:
0 1 2 3 4 5 6 7 8 9
1 1
2 2 4
3 3 6 9
4 4 8 12 16
5 5 10 15 20 25
6 6 12 18 24 30 36
7 7 14 21 28 35 42 49
8 8 16 24 32 40 48 56 64
9 9 18 27 36 45 54 63 72 81
*234567
PROGRAM MMATR
c .
INTEGER I, J
WRITE(*,*) (I, I=0,9)
DO 10 I = 1,9
WRITE(*,*) I, (I*J,J=1,I)
10 CONTINUE
STOP
END
11.
(array)
.
, .
(l1:u1,l2:u2,,ln:un)
, li
i (i =1,2, ,n) ui
i (i =1,2, ,n).
li 1.
1:
REAL A(4) 1, 2, 3, 4.
DIMENSION A(4) 1, 2, 3, 4.
REAL (3,0:3) 12 X10, X20, X30, X11, X21, X31,
X12, X22, X32, X13, X23, X33
.
.
13
2:
FORTRAN R3
.
C234567
PROGRAM INPROD
REAL A(3), B(3)
INTEGER I
REAL ES_GIN
WRITE(*,*) :
DO 10 = 1,3
READ(*,*) A(I)
10 CONTINUE
WRITE(*,*) :
DO 20 I = 1,3
READ(*,*) B(I)
20 CONTINUE
ES_GIN = 0.
DO 30 I = 1,3
ES_GIN = ES_GIN + A(I)*B(I)
30 CONTINUE
WRITE(*,*) A = (,(A(I), I=1,3), )
WRITE(*,*) B = (,(B(I), I=1,3), )
WRITE(*,*) . : ,ES_GIN
STOP
END
3: 44
, .
C234567
PROGRAM M ATR
REAL A(4,4)
INTEGER I, J
REAL SUM
C STILI GRAMMI
C .
REAL STILI(4),GRAMMI(4)
DO 10 I=1,4
DO 20 J=1,4
WRITE(*,*) (,I,,,J,)=
READ(*,*) A(I,J)
20 CONTINUE
10 CONTINUE
DO 30 I=1,4
GRAMMI(I) = 0.
14
STILI(I) = 0.
30 CONTINUE
SUM = 0.
DO 40 I=1,4
DO 50 J=1,4
GRAMMI(I) = GRAMMI(I) + A(I,J)
STILI(I) = STILI(I) + A(J,I)
SUM = SUM + A(I,J)
50 CONTINUE
40 CONTINUE
DO 60 I=1,4
WRITE(*,*) (A(I,J), J=1,4)
60 CONTINUE
WRITE(*,*)
DO 70 I=1,4
WRITE(*,*) ,I, :, GRAMMI(I)
70 CONTINUE
DO 80 I=1,4
WRITE(*,*) ,I, :, STILI(I)
80 CONTINUE
WRITE(*,*) ,SUM
STOP
END
12. -
,
,
.
,
.
/
/ a (. READ, WRITE). H
.
:
O(a, FILE='arxeio')
a CLOSE.
:
CLOSE(a)
15
a 5 6,
, (
READ,WRITE.)
: ,
CLOSE. ,
.
: FORTRAN
input.dat n, (nn) (n1) ,
output.dat
C234567
PROGRAM MATVEC
REAL A(30,30), X(30), S
OPEN(1,FILE=input.dat)
READ(1,*) N
DO 10 I=1,N
READ(1,*) (A(I,J), J=1,N)
10 CONTINUE
READ(1,*) (X(I), I=1,N)
CLOSE(1)
OPEN(2,FILE=output.dat)
WRITE(2,*) :
DO 20 I=1,N
S=0.0
DO 30 J=1,N
S = S + A(I,J)*X(J)
30 CONTINUE
WRITE(2,*) S
20 CONTINUE
STOP
END
T input.dat .. :
3
1 0 1
0 2 -1
-2 1 0
-0.5
1
0.5
16
1 0 1 0.5
n=3, A = 0 2 1 B = 1 ,
2 1 0 0.5
output.dat
0
1.5
2
13. -
13.1. (Intrinsic functions)
FORTRAN
.
ABS(X), TAN(X), SIN(X), COS(X), EXP(X), LOG(X)(
e), MIN(X1,X2,...), MAX(X1,X2,...), INT(X), FLOAT(I), SQRT(X),
MOD(X,Y).
.
,
. .. SQRT(9). To
SQRT(9.0), SQRT .
.
:
F(X) = X*X + 3.0*X 2.0
D(,) = ABS(-)
13.3.
FORTRAN
.
: (functions)
(subroutines).
13.3.1.
,
.
17
:
13.3.2. To SUBROUTINE
SUBROUTINE
:
) ,
.
, , ..
.
) ,
.
) ,
CALL.
:
:
CALL (1, 1,, )
1 ( ):
F(X), G(X), Xi,
i=0,1,,100, [0,2].
result.dat .
C234567
PROGRAM SYNART
F(X) = COS(X) + SIN(X)
G(X) = X**2 - 3.0*x + 2.
REAL X,H,TMP
INTEGER I
H = 2./100.
18
OPEN(1,FILE=result.dat)
DO 10 I=0,100
X = H*I
TMP = F(X)*G(X)
WRITE(1,12) X, , TMP
10 CONTINUE
CLOSE(1)
12 FORMAT(F10.5,A,F10.5)
STOP
END
2 ( ): n
k (n k) n
n n!
k : = .
k k!(n k )!
C234567
PROGRAM COMB
INTEGER K,N,RES,FACTOR
WRITE(*,*) K N <=
IF (K .GT. N) THEN
WRITE(*,*)
STOP
ENDIF
RES = FACTOR(N)/(FACTOR(K)*FACTOR(N-K))
WRITE(*,*) n k :,RES
STOP
END
FUNCTION FACTOR(L)
* L!
INTEGER FACTOR,L,I
FACTOR = 1
DO 10 I=2,L
FACTOR = FACTOR * I
10 CONTINUE
RETURN
END
3 ():
. subroutine CONVER.
C234567
PROGRAM POLCAR
REAL RCOORD, TCOORD, XCOORD, YCOORD
19
INTEGER RESPON
RESPON = 1
10 IF (RESPON .EQ. 1) THEN
WRITE(*,*) / ( rad)
READ(*,*) RCOORD,TCOORD
CALL CONVER(RCOORD,TCOORD,XCOORD,YCOORD)
WRITE(*,*) /:
WRITE(*,*) XCOORD,YCOORD
WRITE(*,*)
WRITE(*,*) ;
WRITE(*,*) 1, 0
READ(*,*) RESPON
GOTO 10
ENDIF
STOP
END
SUBROUTINE CONVER(R,THETA,X,Y)
REAL R,THETA,X,Y
X = R*COS(THETA)
Y = R*SIN(THETA)
RETURN
END
13.4. H XTERNAL
(-FUNCTION -SUBROUTINE)
,
EXTERNAL. :
EXTERNAL onoma1, onoma2,..., onoman
EXTERNAL .
:
f GRAPH.DAT,
x f(x), , n+1
. a, b,
n PLOTW
GRAPH.DAT .
PLOTW .
C234567
PROGRAM MYPLOT
C .
C .
EXTERNAL F
REAL A, B
20
INTEGER N
WRITE(*,*) a,b
READ(*,*) A, B
WRITE(*,*) o n
READ(*,*) N
C PLOTW
CALL PLOTW(F, A, B, N)
STOP
END
SUBROUTINE PLOTW(FX,AX,BX,NINT)
C PLOTW FX
C NINT+1 [AX,BX]
C X FX(X)
C GRAPH.DAT
EXTERNAL FX
REAL AX,BX,H,X
INTEGER NINT,I
OPEN(1, FILE='GRAPH.DAT')
H = ABS(BX-AX)/FLOAT(NINT)
X = AX
DO 10 I = 0, NINT
WRITE(1, *) X, FX(X)
X = X + H
10 CONTINUE
CLOSE(1)
RETURN
END
21
:
IABS 1 I I
ABS(X) ABS 1 R R
DABS 1 DP DP
, -11 ACOS 1 R R
ACOS(X)
0 . DACOS 1 DP DP
AINT 1 R R
AINT(X)
DINT 1 DP DP
ANINT 1 R R
ANINT(X)
DNINT 1 DP DP
, -11 ASIN 1 R R
ASIN(X)
/2 /2 . DASIN 1 DP DP
. ATAN 1 R R
ATAN(X)
/2 /2 . DATAN 1 DP DP
COS 1 R R
COS(X) ( rad).
DCOS 1 DP DP
COSH 1 R R
COSH(X) .
DCOSH 1 DP DP
- 1 I DP
DBLE(X) . - 1 R DP
- 1 DP DP
EXP 1 R R
EXP(X) ex
DEXP 1 DP DP
- 1 I R
FLOAT(X)
- 1 R R
23
TAN 1 R R
TAN(X) ( rad).
DTAN 1 DP DP
TANH 1 R R
TANH(X) .
DTANH 1 DP DP
24