Professional Documents
Culture Documents
. . , . . , . .
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
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.
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.
FORTRAN
int
INTEGER
( )
float
REAL
( )
double
DOUBLE PRECISION
REAL*8
123,-1,+1
12.3,-1.,-1.0E6,
1E-6
3.141592654,
6.23D12
COMPLEX
(0.,1.)
int
LOGICAL
.TRUE. , .FALSE.
char
CHARACTER
DONALD KNUTH
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
5.
FORTRAN
=
.
.. RES = B + C*D**3 RES = B + C D3 .
.
.
..
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 ( )
Iw
Fw.d
w d
(). ( w d + 3). nX n
( n ). FORMAT
READ WRITE,
FORMAT ( 1 5)
READ WRITE.
:
10
PI = 3.141593
WRITE(*,10) The number pi is:,PI
FORMAT(2X,A,F5.2)
:
99The number pi is:93.14
7.
:
.TRUE. .FALSE.
( )
( ).
FORTRAN
C.
FORTRAN
C
.EQ.
==
.NE.
!=
.GT.
>
.LT.
<
.GE.
>=
.LE.
<=
FORTRAN
C.
FORTRAN
C
.NOT.
!
.AND.
&&
.OR.
||
.. (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
C :
if (number < 0){
signum = -1;
} else if (number > 0) {
signum = 1;
} else {
signum = 0;
}
9. DO
:
DO s = 1, 2, 3
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.
:
10
200
DO 10 I=1,3
WRITE(*,*)I
CONTINUE
T ( ) 1,2,3
DO 200 K=10,2,-1
Y = 2.0*K
T ( ) 20,18,...,4
WRITE(6,*) Y
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)
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
1
1
2
2
4
3
3
6
9
4
4
8 12 16
5
5 10 15 20
6
6 12 18 24
7
7 14 21 28
8
8 16 24 32
9
9 18 27 36
25
30
35
40
45
36
42
48
54
49
56
63
64
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
30
50
40
60
70
80
STILI(I) = 0.
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)
CONTINUE
CONTINUE
DO 60 I=1,4
WRITE(*,*) (A(I,J), J=1,4)
CONTINUE
WRITE(*,*)
DO 70 I=1,4
WRITE(*,*) ,I, :, GRAMMI(I)
CONTINUE
DO 80 I=1,4
WRITE(*,*) ,I, :, STILI(I)
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
-2
-0.5
1
0.5
0
2
1
1
-1
0
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 .
.
13.2. (Statement functions)
(statement functions)
( )
.
.
. FORTRAN
,
.
:
F(X) = X*X + 3.0*X 2.0
D(,) = ABS(-)
13.3.
FORTRAN
.
: (functions)
(subroutines).
13.3.1.
,
.
17
:
[] FUNCTION (1, 2,, )
1, 2,,
=
RETURN ( RETURN )
END
13.3.2. To SUBROUTINE
SUBROUTINE
:
) ,
.
, , ..
.
) ,
.
) ,
CALL.
:
SUBROUTINE (1, 1,, )
1, 1,,
RETURN
END
:
CALL (1, 1,, )
1 ( ):
18
10
12
OPEN(1,FILE=result.dat)
DO 10 I=0,100
X = H*I
TMP = F(X)*G(X)
WRITE(1,12) X, , TMP
CONTINUE
CLOSE(1)
FORMAT(F10.5,A,F10.5)
STOP
END
2 ( ): n
k (n k) 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
10
INTEGER RESPON
RESPON = 1
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
C
C
C
C
SUBROUTINE PLOTW(FX,AX,BX,NINT)
PLOTW FX
NINT+1 [AX,BX]
X FX(X)
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
ABS(X)
, -11
0 .
IABS
ABS
DABS
1
1
1
I
R
DP
I
R
DP
1
1
1
1
1
1
1
1
R
DP
R
DP
R
DP
R
DP
R
DP
R
DP
R
DP
R
DP
ASIN(X)
, -11
/2 /2 .
ACOS
DACOS
AINT
DINT
ANINT
DNINT
ASIN
DASIN
ATAN(X)
.
/2 /2 .
ATAN
DATAN
1
1
R
DP
R
DP
COS(X)
( rad).
COSH(X)
DBLE(X)
COS
DCOS
COSH
DCOSH
-
1
1
1
1
1
1
1
R
DP
R
DP
I
R
DP
R
DP
R
DP
DP
DP
DP
EXP(X)
ex
FLOAT(X)
EXP
DEXP
-
1
1
1
1
R
DP
I
R
R
DP
R
R
ACOS(X)
AINT(X)
ANINT(X)
INT
INT
IDINT
1
1
1
I
R
DP
I
I
I
ALOG
DLOG
ALOG10
DLOG10
MAX0
AMAX1
DMAX1
1
1
1
1
2
2
2
R
DP
R
DP
I
R
DP
R
DP
R
DP
I
R
DP
X1,,Xn.
MIN0
AMIN1
DMIN1
2
2
2
I
R
DP
I
R
DP
MOD(X,Y)
(/)*
MOD
AMOD
DMOD
2
2
2
I
R
DP
I
R
DP
NINT(X)
NINT
IDNINT
1
1
R
DP
I
I
REAL(X)
SNGL
1
1
1
I
R
DP
R
R
R
SIGN(X,Y)
ABS(X) Y 0
-ABS(X) Y 0.
ISIGN
SIGN
DSIGN
2
2
2
I
R
DP
I
R
DP
SIN(X)
H ( rad).
SQRT(X)
SINH(X)
SIN
DSIN
SQRT
DSQRT
SINH
DSINH
1
1
1
1
1
1
R
DP
R
DP
R
DP
R
DP
R
DP
R
DP
INT(X)
LOG(X)
e.
LOG10(X)
10.
MAX(X1,,Xn)
X1,,Xn.
MIN(X1,,Xn)
23
TAN(X)
( rad).
TANH(X)
TAN
DTAN
TANH
DTANH
24
1
1
1
1
R
DP
R
DP
R
DP
R
DP