Fortran 95 Notes Greek
-
Upload
gnpanagiotou -
Category
Documents
-
view
31 -
download
2
description
Transcript of Fortran 95 Notes Greek
-
pi Fortran 95
.
-
ii
-
iii
1 11.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2.3 pi . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 . . . . . . . . . . . . . . . . . . . . . . . . . 21.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . 31.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.6 . . . . . . . . . . . . . . . . . . . . . . . . . . 31.7 / . . . . . . . . . . . . . . . . . . . . . . 41.8 . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.8.1 STOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 72.1 pi . . . . . . . . . . . . . . . . . . . . . . 7
2.1.1 pi . . . . . . . . . . . . . . . . . . . . . . . . 72.1.2 pi . . . . . . . . . . . . . . . . . . . . . . . . . . 72.1.3 pi . . . . . . . . . . . . . . . . . 82.1.4 pi . . . . . . . . . . . . . . . . . . . . . . . . 82.1.5 pi pi . . . . . . . . . . 11
2.2 . . . . . . . . . . . . . . . 112.3 . . . . . . . . . . . . . . . . . . . . 132.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.1 IF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.4.2 SELECT CASE . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 193.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.1 . . . . . . . . . . . . . . . . . . . . . . . 203.1.2 pi . . . . . . . . . . . . . . . . . . . . . . . . . 203.1.3 pi . . . . . . . . . . . . . . . . . . . . . 213.1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1.5 pi . . . . . . . . . . . . . 22
iii
-
iv
3.2 pi () . . . . . . . . . . . . . . . . . . . . . 233.2.1 DO pi pi . . . . . . . . . . 243.2.2 DO pi pi . . . . . . . . . 283.2.3 CYCLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.2.4 EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4 314.1 . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 pi . . . . . . . . . . . . . . . . . . . . . . . . . . 334.2 pi . . . . . . . . . . . . . . . . . . . . 344.3 WHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5 395.1 pi . . . . . . . . . . . . . . . . . . . . . . . . . . 395.2 / . . . . . . . . . . . . . . . . . . . . . . 43
5.2.1 FORMAT . . . . . . . . . . . . . . . . . . . 445.2.2 FORMAT . . . . . . . . . . . . . . . . . . . . . . . . 475.2.3 . . . . . . . . . . . . . . . . . . . . . . . . 48
5.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485.3.1 . . . . . . . . . . . . . . . . . . . . . . . . 485.3.2 . . . . . . . . . . . . . . . . . . . . . . . . 50
6 pi 516.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.1.1 pipi . . . . . . . . . . . . . . . . 526.1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . 536.1.3 pipi . . . . . . . . . . . . . . . . . . . . 576.1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . 596.1.5 pipiRETURN . . . . . . . . . . . . 60
-
1
1.1
compiler pi pi ! pi . pi, pi ! pi pi pi pi pi, .
1.2
(variables) pi pi pi pi (, pi) pi. pi pipi , compiler pi , pi . - pi Fortran INTEGER, REAL, COMPLEX,LOGICAL, CHARACTER.
1.2.1
pi.. abc - :
INTEGER : : abc
pi pi.. value1, value2 :
REAL : : value1REAL : : value2
, ,
REAL : : value1 , value2
pi (pi ) 6 -.
1.2.2
, , pi, pi. pi- pi. az
1
-
2 1.
0 9 _. 31 pipi . - pi . pi _ pi pi pi .
1.2.3 pi
pi pi pi, pi pi.
READ. .. pi pi pi- a
INTEGER : : a. . . . .
READ , a, , pi ,
INTEGER : : a. . . . .
READ ( , ) a
, = [ ]
..REAL : : b. . . . . .b = 3.0
1.3
1.3.1
, pi . pi pi pi + ..., pi
3, -12, 123456
1.3.2
, pi pi ( pi) pi . pipi pi . E, pi, pi 10 pi pipi pi E :
2.034, 0.23, .44, 23., 2e 4 ( 0.0002), 2.3E2 ( 230.0) . pi pi E pi.
-
1.4. 3
1.4
pi (pipi pi) pi pi pi pi pi, PARAMETER. pi - ( ) ( pi, pi, pi pi, , pi., pi ). ..pi pi ,
REAL, PARAMETER : : pi = 3.14159
1.5
= [ ]
pi pi pi pi pi pi pi .
1.6
+,, , / pi pi pi, , pipi .
+,, pi pi-, , pipi . / pipi pi,pi, , pi . MOD( ) pi pipi
INTEGER : : a , b , p , y
a = 4b = 3p = a / b ! P i l i koy = MOD(a ,b ) ! Ypoloipo
. .. x3 Fortran x3.
+, pi pi pi pi , / (pi ), pi . pi pi, pi pi . pipi . ..
INTEGER : : i , j , k
i = 2 + 3 ! i = 5j = 2 3 ! j = 6i = i + j ! i = 11
-
4 1.
i = 2 i + j ! i = 28i = 17 / j ! i = 2k = i j / 3 ! k = 4
pi pi. ..
INTEGER : : i , j , k
i = 2j = 6k = 2 i + j ! k = 10k = 2 ( i + j ) ! k = 16k = j i / 3 ! k = 4k = j ( i / 3) ! k = 0: +,, , / -
pi (pi.. pi), pi pi ( pi ) pi. ..
INTEGER : : i , jREAL : : x , y
i = 8.3 ! i = 8j = 2y = 3.0
x = 4.0 / 3 ! > x = 4.0 / 3.0 > x = 1.33333
x = j + y! > x = 2 + 3.0 > x = 2.0 + 3.0 > x = 5.0
i = 4 / 3.0 ! > i = 4.0 / 3.0 > i = 1.33333 > i = 1
x = 4 / 3 ! > x = 1 > x = 1.0
x = 2.0 4 / 3! > x = 8.0 / 3 > x = 8.0 / 3.0 > x = 2.66667
x = 4 / 3 2.0 ! > x = 1 2.0 > x = 2.0
1.7 /
pi a pi pi , pi, READ:
READ , a
READ ( , ) a pi pi PRINT
-
1.8. 5
PRINT , a, pi , WRITE:
WRITE ( , ) a pipi pi pi pi -, pi. ..
INTEGER : : aREAL : : b
a = 4b = 4.5
PRINT , "Oi times einai " , a , b pi * READ(,)/WRITE(,) pi pi - pi pi . pi pi . * - pi pi pi pi pi . READ /PRINT pi pi- , , * ( pi pi pi ).
1.8
pi ( ) pi PROGRAM. . . END PROGRAM:
PROGRAM onoma
IMPLICIT NONE. . .. . .. . .END PROGRAM onoma
pi ( onoma) pipi , pi- pi pi . pi pi pi-pi . Fortran 90, pipi . pipi pi pi pi , pi pi 132 pi pi ,pi pi pipi pi- , pi pi pi &. ..
INTEGER : : a , b
pi , pi,
INTEGER : : a , &b
-
6 1.
, & pi pi ( pi ).
pi PROGRAM onoma pi. pi pi ( ) IMPLICIT NONE. , pipi , pi .
pi pi -, pi modules. pipi pi.
1.8.1 STOP
pi END PROGRAM., pi STOP pipi . pi pi pi pi - . STOP pi pi , pi pi, 5 . pipi, pi pi pi pi , STOP. pi pi pi STOP pi pi.
1.9
PROGRAM athrois i
IMPLICIT NONE
INTEGER : : a , b ! dataINTEGER : : c ! resu l t
PRINT , "Dwse dyo akeraioys "
READ ( , ) a ,b ! get data
c = a + b
PRINT , "To athroisma einai "
WRITE ( , ) c ! PRINT resul t
END PROGRAM athrois i
-
2
2.1 pi
pi pipi pi pipi Fortran, pi pi INTEGER, REAL.
2.1.1 pi
pi pi pi , Fortran pi pi CHARACTER. pi.. ch :CHARACTER : : ch pi pi pi pi () pi ("):ch = a ch = Dch = "R" pi , pi pi pi pi. pi, "This is a message" pi pi 17 , pi, pi pi CHARACTER . CHARACTER (17) : : ch
ch = " This is a message"
2.1.2 pi
pi (LOGICAL) pipi pi pi pi (pi.. /, /,. . . ). , pi.. a, :LOGICAL : : a pi pi pi .TRUE. .FALSE.. pi.. .TRUE. a a = .TRUE.
7
-
8 2.
2.1.3 pi
pi , Fortran pi pi (-) 6 . pi , , pi. pi pi -pi 16 . pi pi Fortran 90 pipi, , , pi . pi pi pi pi Fortran 77.
pi , pi.. a, :
DOUBLE PRECISION : : a
pi pi , - D E. , pi.. 500, pi Fortran 5E2 500.0, pi , pi pipi 5D2 ( , pi.. 0.5D3,50D1, 500D0). pi : pi 500.0 500E0 (REAL), 500 (INTEGER) - 500D0 (DOUBLE PRECISION). pi: pi 2.4 Fortran 2.4 pi pi pi pipi 2.4D0.
2.1.4 pi
Fortran pi pi COMPLEX pi .
COMPLEX : : z
, compiler, pi pi pi pi pi .
pi
pi Fortran pi pi
, , pi pi, (,) . pi pi- :
COMPLEX : : z
z = (1.2 , 4.56) ! z = 1.2 + i 4.56
pi pi pi pi- 0
COMPLEX : : z
z = 2 ! z = 2.0 + i 0.0z = 2.3 ! z = 2.3 + i 0.0
pi ( pi , pi pi pi):
-
2.1. 9
COMPLEX : : z , z1 , z2
z1 = 3 ! z1 = 3.0 + i 0.0z2 = (4.6 , 4.2) ! z2 = 4.6 i 4.2
z = z1 + z2 + 5.1 ! z = 12.7 i 4.2
pi pi pi .
pi pi pi . ..
COMPLEX : : z
READ , z
(1.6, -3.8)
(pi pi).
CMPLX( ). pi pi pi pi pi
COMPLEX : : zREAL : : x , y
x = 3.4y = 9.1
z = CMPLX( x , y ) ! z = 3.4 i 9.1
z = ( x , y )
pi pi .
pi
+,, , /, pi pi . pi
z1 = + i, z2 = + i,
z1 z2 = ( ) + i( + ) .
pi pi Fortran. /.
pi pi 1.5, 1.6, pi pi ( ), pi pi - pi, pi . pi,
-
10 2.
pi pi pi pi pi . pi - pi, pi pipi :
COMPLEX : : zREAL : : x
z = (2.3 ,4.5 ) ! z = 2.3 + i 4.5
x = z ! x = 2.3
pi , pi pi - pipi pipi pi :
COMPLEX : : zINTEGER : : i
z = (2.3 ,4.5 ) ! z = 2.3 + i 4.5
i = z ! i = 2
pi pi pi pi.
pi/
pi pi REAL( ) (pi pi) :
COMPLEX : : zREAL : : x
z = (1.2 ,8.7) ! z = 1.2 i 8.7x = REAL( z ) ! x = 1.2
AIMAG( ):
COMPLEX : : zREAL : : x
z = (1.2 ,8.7) ! z = 1.2 i 8.7x = AIMAG( z ) ! x = 8.7 pi
CONJG( ):
COMPLEX : : z1 , z2
z1 = (1.2 ,8.7) ! z1 = 1.2 i 8.7z2 = CONJG( z1 ) ! z2 = 1.2 + i 8.7
(pi) |z| pi ABS( ):
-
2.2. 11
COMPLEX : : zREAL : : norm
z = (1.2 ,8.7) ! z = 1.2 i 8.7norm = ABS( z ) ! norm = (1.22 + 8.72)0.5
2.1.5 pi pi
pi pipi pi pi pipi pi pi pi . .. pi pi
REAL : : xINTEGER : : i , j
i = 3j = 2
x = i/ j ! x = 1.0
x pi pi (1.5) pi . pi pi
REAL : : xINTEGER : : i , j
i = 3j = 2
x = real ( i )/ real ( j ) ! x = 1.5
pi pi pi pi .
pi Fortran : REAL( ), DBLE( ),INT( ), CMPLX( ). pi pi pipi pi (INTEGER, REAL, DOUBLE PRECISION, COMPLEX) pi : REAL, DOUBLE PRECISION, INTEGER, COMPLEX. pi pi.
2.2
pi (AIMAG( ), CONJG( ), CMPLX( )) pi pi 2.1.4, Fortran pi pi . pi - pi 2.1. pi pi pi pi pi (pi) . , pi, DOUBLE PRECISION pi DOUBLE PRECISION.
-
12 2.
pi
abs(x)pi
.ceiling(x)
pi
.
floor(x)
pi
.int(x)
.nint(x)
pi
.
aint(x)
pi.
anint(x)
pi
pi.real(x)
pi.
dble(x)
pipi
.sqrt(x)
.
pipi
.
cos(x).
rad.
sin(x).
rad.
tan(x)pi.
rad.
acos(x)
.
[1:1],
pi
[0:pi]
rad.asin(x)
.
[1:1],
pi
[pi/2
:pi/2]
rad.atan(x)
pi.
pi
[pi/2
:pi/2]
rad.atan2(x,y)
pi
arctan(x/y).
pi
.
pi
[pi:pi]
rad.cosh(x)
pi.
sinh(x)pi
.tanh(x)
pipi.
exp(x).
log(x)
.pi
.log10(x)
.
pi
.m
od(x,y)
pipi
x/y.
pia
int(a/p)p.a,p
pi,
pi.
max(x1,x2,...)
pi
pi.
pipi
pi.m
in(x1,x2,...)
pi
pi
.
pipi
pi.
dim(x,y)
max(x
y,0.0).
pipi
pi,
pi.
2.1:
Fortran.
-
2.3. 13
:
pi Fortran pi pi pi pi pi pi -:
PROGRAM r iza
IMPLICIT NONEREAL : : x
PRINT , "Dwse ena pragmatiko "READ ( , ) x
PRINT , "H tet . r iza einai "WRITE ( , ) SQRT( x )
END PROGRAM r iza
pi pi pi pi
PROGRAM imitono
IMPLICIT NONEREAL : : theta , x
PRINT , "Dwse ena pragmatiko "READ ( , ) theta
x = SIN ( theta )
PRINT , "To imitono einai "WRITE ( , ) x
END PROGRAM imitono
pi pi pi pipi pipi (pipi pi ), pi pi pi , pi pi 2.1.
2.3
Fortran pi pi ( pi -pi ) ( 2.2). pi- pi pi .TRUE. .FALSE.. .. 3.0>2.0 .TRUE. 2/=1+1 .FALSE.. - pi pi . , pi , ==,/= pi.
-
14 2.
== /= > < >= 3) .FALSE. .NOT. (4 < 3) .TRUE.
pi .AND. .TRUE. pi .TRUE.. pipi .FALSE.:
(4 > 3) .AND. ( 3.0 > 2.0) .TRUE. (4 < 3) .AND. ( 3.0 > 2.0) .FALSE.
.OR. pi- .TRUE. pi pi .TRUE., .FALSE.:
(4 > 3) .OR. ( 3.0 < 2.0) .TRUE. (4 < 3) .OR. ( 3.0 < 2.0) .FALSE.
pi .EQV. .TRUE. pi pipi .FALSE.:
(4 < 3) .EQV. ( 3.0 < 2.0) .TRUE. (4 < 3) .EQV. ( 3.0 > 2.0) .FALSE.
.NEQV. pi .TRUE. pi .FALSE.:
(4 < 3) .NEQV. ( 3.0 < 2.0) .FALSE. (4 < 3) .NEQV. ( 3.0 > 2.0) .TRUE.
Fortran pi - pi LOGICAL:
LOGICAL : : a , bINTEGER : : i , max
. . .
a = 3==2b = ( ( i > 0) .AND. ( i < max) )
-
2.4. 15
2.4
2.4.1 IF
IF pi pi-. () , pi pi. Fortran - :
IF ( condition ) THEN. . .. . . // block A
ELSE. . .. . . // block B
END IF
(condition), , . , block ELSE END IF ( ).
pi pi pi , , pi -. ..
IF ( val > 0.0) THENPRINT , "The number is posi t ive "max = val
ELSEPRINT , "The number is not posi t ive "
END IF
pi pi pipi IF. pi () . pi pi .
pipi pi ELSE , ELSE pi pi :
IF ( condition ) THEN. . .. . .
END IF
pipi ELSE IF,
IF ( condition ) THEN"command"
END IF
:
IF ( condition ) "command"
pipi THEN, END IF. IF pi pi IF, pi..
-
16 2.
IF ( cond1 ) THEN. . .
ELSEIF ( cond2 ) THEN
. . .ELSE
. . .END IF
END IF
pipi
IF ( cond1 ) THEN. . .
ELSE IF ( cond2 ) THEN. . .
ELSE. . .
END IF
pi. pi pipi , SELECT CASE (2.4.2) pi.
2.4.2 SELECT CASE
SELECT CASE pi pi pi-pi IF. :
SELECT CASE ( i )CASE ( value1 ). . .CASE ( value2 ). . .. . .. . .CASE ( valueN ). . .CASE default. . .
END SELECT
i pipi pi ( ). value1, value2, . . . ,valueN pipi pi ( pi).
, i pi value1,value2,. . . ,valueN. pi , pi CASE. , - pi END SELECT. value1, value2,. . . ,valueN default, pi. , END SELECT.
CASE pi pipi.
-
2.4. 17
: pi pi pi pi pi. 0 pi, 1 ,2 , 3 , . pi
INTEGER : : iCHARACTER ( 5 ) : : direction
READ , i
SELECT CASE ( i )CASE ( 0 )
direction = "up"CASE ( 1 )
direction = "down"CASE ( 2 )
direction = " l e f t "CASE ( 3 )
direction = " right "CASE default
direction = "none"END SELECT
PRINT , "The direction is " , direction pi pi i, pi-
pi. .. (0, 4, 8) (1, 5, 9), (2, 6) (3, 7). pi pipi
SELECT CASE ( i )CASE (0 ,4 ,8)
direction = "up"CASE (1 ,5 ,9)
direction = "down"CASE (2 ,6)
direction = " l e f t "CASE (3 ,7)
direction = " right "CASE default
direction = "none"END SELECT
, pipi pi pi , pi
:
, CASE
CASE ( 0 :9 ). . .
-
18 2.
[0, 9]. pi pi () Fortran. ..
SELECT CASE ( i )CASE (:1). . . ! commands for i < 0CASE ( 0 ). . . ! commands for i == 0CASE ( 1 : ). . . ! commands for i > 0
END SELECT
-
3
pi , pi pi , pi , , pi pi pi . pi- pi pi pi (array) ( ) pi TYPE pi pi- pi .
3.1
pi pi pi- pi. pi, pi - pi pi pi pi pi ; pi pi 30 365, pipi pi - pi . Fortran . , 30 pi -pi pi pi, , 30 . pi pi.. temperature
REAL : : temperature (30)
, ,
REAL, DIMENSION (30) : : temperature
pi pi , pi, pi. ..
REAL : : a , b (3 ) , c (10)
pi a, pi 3 , b, pi 10 , c, pi. , - , pi pi pi pi:
INTEGER, DIMENSION (10) : : a , b , c , d (4 )
pipi 4 pi , (a, b, c) 10 (d) 4. pi pi pipi pi, .
19
-
20 3.
3.1.1
pi pi -pi pi pi ( - pi ) pi, pi 1 pi pi1. , pi temperature(1), temperature(2), temperature(30). - . .. 3 pi temperature
REAL : : mo3
mo3 = ( temperature (1 ) + temperature (2 ) + temperature ( 3 ) ) / 3
3.1.2 pi
pi pi pi - , pi pi ( ). ..
REAL : : a (5 )
a (1 ) = 3.0READ ( , ) a (2 ) pi pi pi pi :
(/ /), pi pi . , pi pi, 5 , c,pi 3.0, 4.5, 2.0,1.02, 0.99 ,
REAL : : c (5 )
c = (/ 3.0 , 4.5 , 2.0 , 1.0e2 , 0.99 /)
pi pi ( pi , pi pi)...
REAL, DIMENSION ( 5 ) : : c , d
c = (/ 3.0 , 4.5 , 2.0 , 1.0e2 , 0.99 /)
d = c
pi pi pi , pi pi pi READ pi-:
REAL, DIMENSION ( 5 ) : : c
READ , c ! needs 5 reals1 pipi pi pi pi .
-
3.1. 21
pi pi pi RESHAPE( ), pi pi.
3.1.3 pi
pi , pi- pi 2 3 , pi.. pi. Fortran pi , , pi- pi ( 7 ). pi pi 10 20 REAL : : a(10 ,20)
, ,
REAL, DIMENSION (10 ,20) : : a
i j a(i , j ). , - pi pi pi. , pi pi pi , compiler, - pi pi pi pi, pi , pi. , pi a, 2 3, pi a(1,1), a(2,1), a(1,2), a(2,2), a(3,1),a(3,2).
3.1.4
pi pi, pi pi, pi PARAMETER, 1.4, pi ( ) :
REAL, DIMENSION( 3 ) , PARAMETER : : coe f f i c i ents = (/2.0 , 2.0 , 4.0/)
pi pipi pi pi pi pi pi- , pi , pi pi 1. .. pi pi pi pi 6 2 (20,21, 22,. . . ,25) pi pi pi 0 5. pi pi pi . ..
INTEGER, PARAMETER : : powersOf2 (0 :5 ) = (/1 ,2 ,4 ,8 ,16 ,32/)
pipi , pi pi 6 , powersOf2[0],powersOf2[1], . . . , powersOf2[5]. ,
REAL : : a (M:N)
, ,
REAL, DIMENSION (M:N) : : a
M,N , pipi a (-+1) , a(M), a(M+1), . . . , a(N).
powersOf2, pi - pi [ (,) (/, /)] pi pi pi pipi:
-
22 3.
INTEGER : : a (0 :5 )INTEGER : : i
a = (/ (2 i , i =0 ,5) /) pi powerOf2, a pi pi, a, pi pi, pi (pi 100 pi;). pi pi .
, pi pi pi, pi pi pi . Fortran pi SIZE( ) pi pi. , pi
REAL, DIMENSION(10 ,10 ,30) : : a
pi SIZE(a), pi SIZE(a,1) , SIZE(a,2) SIZE(a,3) .
pi . pi pi a LBOUND(a,1), LBOUND(a,2), pi. UBOUND(a,1), UBOUND(a,2),pi.
4.2.
3.1.5 pi
pi pi pipi , pi. Fortran pi pi , pi ,, pi. .. pipi pi pi , pi - pi . pi pi pi pi pi , pi pipi pi.
REAL, ALLOCATABLE : : a ( : )
pi pi a. . pi N , pi N pi, , pipi
ALLOCATE( a (N ) )
pi pi pipi - pi
DEALLOCATE( a )
pi , pi pi a(M) a(N) pi M,N pi pi-,
-
3.2. () 23
ALLOCATE( a (M:N) )
(, , pi) pi pi
REAL, ALLOCATABLE : : b ( : , : )
ALLOCATE( b (M,N) )
pi M,N pi pi INTEGER. pi pi
DEALLOCATE( b )
ALLOCATE/DEALLOCATE pi pi pi- pi :
PROGRAM al locIMPLICIT NONEREAL, DIMENSION ( : ) , ALLOCATABLE : : a , bREAL, DIMENSION ( : , : ) , ALLOCATABLE : : cINTEGER : : M,N, K, P
READ ( , ) M, N, K, P
ALLOCATE ( a (M) , b (N) , c (K,P ) )
! give values to a , b , c! use a , b , c
DEALLOCATE( a )DEALLOCATE( b , c )
END PROGRAM al loc
3.2 pi ()
pi pi pi pi pipipi , . Fortranpi DO FORALL pi pipi. FORALL pi pi pi- pi pi pi, , pi- pi pi. , pi, pi . pi pi pi DO. pi FORALL.
DO pi Fortran pipi , - pi. pi :1. , , pi, 2. pi, pi pi.
-
24 3.
3.2.1 DO pi pi
pi DO, pi: pi
REAL : : a (5 )
pi pi pi pi, , pi
READ ( , ) a (1 ) , a (2 ) , a (3 ) , a (4 ) , a (5 )
REAL : : sum_a
sum_a = a (1 ) + a (2 ) + a (3 ) + a (4 ) + a (5 )
pipi pi pi .pi pipi pipi pi. , pi
READ ( , ) a (1 )READ ( , ) a (2 )READ ( , ) a (3 )READ ( , ) a (4 )READ ( , ) a (5 ), ,
INTEGER : : i
i =1READ ( , ) a ( i )
i =2READ ( , ) a ( i )
i =3READ ( , ) a ( i )
i =4READ ( , ) a ( i )
i =5READ ( , ) a ( i )
, pi pi
INTEGER : : iREAL : : sum_a
sum_a = 0.0
i=1sum_a = sum_a + a ( i )
-
3.2. () 25
i =2sum_a = sum_a + a ( i )
i =3sum_a = sum_a + a ( i )
i =4sum_a = sum_a + a ( i )
i =5sum_a = sum_a + a ( i )
pi pi pi pi 1. DO pipi
INTEGER : : i
DO i = 1,5READ ( , ) a ( i )
END DO
INTEGER : : iREAL : : sum_a
sum_a = 0.0
DO i = 1,5sum_a = sum_a + a ( i )
END DO
DO
DO = , , ........END DO
pi -. , , pi . pi-pi ( (,) pi pi) 1. , pipi 0.
:
1. pi .
2. :
-
26 3.
, pi . ,
pi .
, pi pi pi pi .
3. 2 , (, pi) pi pi DO, END DO.
4. 2 , pi pi END DO, pi pi.
5. pi 2 ( ).
pi pipi ( pi pipi ) pi, + pi pi pi pi .
pi pipi pi , , pi, pi pi pi pi .
pipi , pi pi-,
= + ( pi ,
pi ).
pi , pi pipi pi- pi pi DO. . . END DO.
:
pi 100 , pi 1 100, pi- :
INTEGER : : sum, i
sum = 0DO i = 1 , 100
sum = sum + iEND DO
[0, 1000] pi- :
-
3.2. () 27
INTEGER : : sum, i
sum = 0DO i = 0 , 1000, 2
sum = sum + iEND DO
pi 99, 97, 95,. . . , 3, 1, , pi
INTEGER : : i
DO i = 99, 1 , 2PRINT , i
END DO
pi 0.0, 0.1, 0.2, . . . 999.9, 1000.0 INTEGER : : i
DO i = 0 , 10000PRINT , 0.1 i
END DO
pi pi piREAL: : a (10)
INTEGER : : k
DO k = 1, SIZE ( a )READ , a (k )
END DO
pi pi pi pi pi DO:
INTEGER : : i
PRINT , (0.1 i , i =0, 10000)
INTEGER : : k
READ , ( a (k ) , k=1, SIZE ( a ) ) DO pi
pi a
-
28 3.
INTEGER : : i
PRINT , ( a ( i ) , i =1,SIZE ( a ) ,2 ), pi ,
INTEGER : : i
PRINT , ( a ( i ) , i =LBOUND(a ,1 ) ,UBOUND(a ,1 ) ,2 )pi pi pi pi, pi DO pi pi pi pi , pi () .
3.2.2 DO pi pi
pi pi - pi pi pi. .. pi , pi pi pi -pi pi . pipi pi , -. pi pi . pi pi Fortran DO . pi:
DO. . . .. . . .END DO
DO pi pi DO. . . END DO pi. , pipi pi pi pi pi pi. Fortran pi EXIT (3.2.4) pi .
3.2.3 CYCLE
CYCLE pi DO. . . END DO. , pi pi DO pi pi pipi, pi, pi . pi pi- pi DO . pipi DO , 3.2.2, pi.
:
INTEGER : : iREAL : : x
DO i =1,100
READ , xIF ( x < 0.0) CYCLE ! r e j e c t x
-
3.2. () 29
PRINT , "Square root is " , SQRT( x )END DO
3.2.4 EXIT
EXIT pi DO. . . END DO - . , pi pi pi pi. pi pi pi END DO.
: pi pi pi pi
REAL : : x
DOREAD , xIF ( x > 0.0) EXIT
END DO
3.2.5
pi DO. ( pi :) pi DO, , pi pi END DO, pi pipi:
onoma: DO i =1, 10. . . .. . . .
END DO onoma
pi , 1.2.2. DO EXIT CYCLE.
pi pi pi pi pi-, pi pi. , ,pi , ,
CYCLE onoma
EXIT onoma
onoma. , pi.., pi
outer : DO i =1,10DO j =1,10
DO k=1,20. . .. . .
-
30 3.
IF ( k > i+ j ) EXIT outerEND DO
END DOEND DO outer
pipi pi, pi EXIT ( ) pi END DO outer.
-
4
pi Fortran 90 - pi Fortran 95 pi , pi pi (elemental).
4.1
=,+,, , /, 2.1 pi pi pi ( ). Fortran 90 pi pi pi - pi . pi, pi REAL : : x
x = 3.4 pi pi REAL : : a (10)INTEGER : : i
DO i =1,SIZE ( a )a ( i ) = 3.4
END DO
, pi pi REAL : : a (10)
a = 3.4 (=) pipi a. pi pi, pi pi -, pi DO.
pi pi, 3.1.2. a = b, pi a, b pi pi , b a.
31
-
32 4.
pi pi pi pi - pipi pi pi. pipi
REAL, DIMENSION (10) : : a , b , cINTEGER : : i. . . . . . ! apodosi timwn se a ,b
DO i =1,SIZE ( a )c ( i ) = a ( i ) + b ( i )
END DO
REAL, DIMENSION (10) : : a , b , c. . . . . . ! apodosi timwn se a ,b
c = a + b
pi pi pi pi, pi pi DO. pipi pipi pi, pi
REAL, DIMENSION (10) : : a , b , c. . . . . . ! apodosi timwn se a ,b
c = a b
REAL, DIMENSION (10) : : a , b , cINTEGER : : i. . . . . . ! apodosi timwn se a ,b
DO i =1,SIZE ( a )c ( i ) = a ( i ) b ( i )
END DO
.pi , pi pi, pi
pi pi pi pi .
REAL : : lambda, a (10) , b(20)
a = lambda a
b = lambda b : pipi lambda a,b, . ,
a = a b
-
4.1. 33
. pi , -
pi pi pi pi . .. REAL : : x , y. . . . . ! apodosi t imis sto x
y = SQRT( x )pi x y. pi pi a pi pi b:INTEGER : : a (20) , b(20). . . . . ! apodosi t imis sto a
b = SQRT( a ) pi INTEGER : : a (20) , b(20) , i. . . . . ! apodosi t imis sto a
DO i =1,SIZE ( a )b ( i ) = SQRT( a ( i ) )
END DO
4.1.1 pi
pi pi Fortran pi... a pi 10 , 3,4,5,6,7 a(3:7) pi pi, 5 SIZE(a(3:7)) pi 5. pi pi pipi pi pi 5 ., pi REAL : : a (10) , b(20)
a = b(1:10) ( 10 pi b a), a=b . ,
a a(1:SIZE(a)) pi a (pi pi 1).
pi, pi pi - pi , . , pi, ,pipi pi a pi pi 4. pi a(1:7:2). pi - , pi pi . , pi pi a pi ,
-
34 4.
a( : : )
pipi, pi 1. pipi pi pi . , pipi pipi .
a(:10) a(1:10)a(4:) a(4:SIZE(a))a(:) a(1:SIZE(a)) a
pipi : pi. pi
REAL : : a(100) , tempINTEGER : : i
DO i = 1 , SIZE ( a)/2temp = a (SIZE ( a ) i + 1)a (SIZE ( a ) i + 1) = a ( i )a ( i ) = temp
END DO
pipi pi pi pi pi a(i ), a(SIZE(a)i+1). pi pi pi, pi
a = a (SIZE ( a):1:1) pi a pi pi pi pi a.
pi pi. a pi10 20, INTEGER : : a(10 ,20)
a(1:5,1:6) pi 5 6 pi pi 5 pi 6 pi .
pi pi (pi.. ) (pi.. pipi) pi a a(3,:) a(:,5). pi .
4.2 pi
Fortran 90 pi pi pi pi - pi pi. (3.1.4) SIZE( ), LBOUND( ),UBOUND( ). :
SUM( ): SUM( ) pi pi ( , pi pi). ..
-
4.2. 35
INTEGER : : a (10) , s
a = (/ 1, 5 , 4 , 2 , 12, 9 , 8 , 2 , 4, 7 /)
s = SUM(a ) ! s = 32
PRODUCT( ): PRODUCT( ) pi pi ( , pi pi). ..
INTEGER : : a (10) , p
a = (/ 1, 5 , 4 , 2 , 12, 9 , 8 , 2 , 4, 7 /)
p = PRODUCT(a ) ! p = 1935360
DOT_PRODUCT( ): DOT_PRODUCT( ) pi pi pi pi. DOT_PRODUCT(a,b) pi
i aibi pi a pi. i ai bi pi a pi COMPLEX.
pi a,b pi LOGICAL, DOT_PRODUCT(a,b) pi.TRUE. pi .TRUE., pi .FALSE.
MATMUL( ): MATMUL( ) pi pi pi- . pi pipi - pi . pipi , pipi pi pi. pi - pi pi pipi pi pi.pi, pi C = A B A,B,C pi C=MATMUL(A,B).pi pi , pi A, B pi C
Cij =k
aikbkj .
MATMUL( ) pi pi
INTEGER : : i , j , kREAL : : s
DO i = 1 ,SIZE (A,1 )DO j = 1 ,SIZE (B,2 )
s = 0.0DO k = 1, SIZE (A,2 )
s = s + a ( i ,k ) b (k, j )END DO
-
36 4.
c ( i , j ) = sEND DO
END DO
TRANSPOSE( ): TRANSPOSE( ) pi pi .
REAL : : a(10 , 20) , at (20 ,10)
at = TRANSPOSE(a )
pi at (i, j) (j, i) pi a.
COUNT( ): COUNT( ) pi - pi, pi pi pi pi -pi . .. COUNT(A > 10) pi () pi a pi pi 10.
MAXVAL( )/MINVAL( ): MAXVAL( ) MINVAL( ) pi , , pi pi pi pi .
MAXLOC( )/MINLOC( ): MAXLOC( ) MINLOC( ) pi- pi pi pi pi / ... a pi pi (2, 3) , MINLOC(a) pi - pi 2 (pi ), 3 ( ). , pi pipi pi .
ALL( ): ALL( ) , pi -, pi pi. pi , pi .TRUE.. pipipi .FALSE..
ANY( ): ANY( ) , pi , pi pi. pi , pi .TRUE.. pipi pi .FALSE..
pipi pi pipi .
4.3 WHERE
WHERE pi IF, pi pi, IF pi. , WHERE
WHERE ( condition ). . . .. . . .
ELSEWHERE
-
4.3. WHERE 37
. . . .
. . . .END WHERE
condition, , pi , pi pipi. WHERE pipi pi pi pi pi . pi pi pi , pi ELSEWHERE. pi , ELSEWHERE. .., pi pi a pib, b a .
DO i = 1 ,SIZE ( a )IF ( a ( i ) > 0.0) THEN
b( i ) = a ( i )ELSE
b ( i ) = 0.0END IF
END DO
WHERE ( a > 0.0)b = a
ELSEWHEREb = 0.0
END WHERE
pipi pi pi- pi ELSEWHERE. , pipi, , pi WHERE. , pi pi a b
WHERE ( a>=0.0) b = SQRT( a )
b pi a pipi.
-
38 4.
-
5
5.1 pi
pi , pi pi , pi, pi pi pi pi . , , pi pi pi. , pi .
, pi pi pi pi- pi. .. pi pi pi pi pi, pipi pi , - pi , pipi pi, pi. , pi, - (pi pi , pi , , , pi.), pi (pi pi , , -, , pi.), pi pi . pi pi pi pi pi pi pi . , 500 3000
INTEGER, PARAMETER : : N = 500 ! number of studentsINTEGER, PARAMETER : : M = 3000 ! number of books
CHARACTER(30) : : studentName (N)CHARACTER(50) : : bookAuthor (M)CHARACTER(60) : : bookTitle (M)INTEGER : : studentAM(N) , studentYear (N) , bookYear (M)
pi pipi pi ( ) pi pi, pipi , pi pi pi pi . - pi pi , compiler pi . pi pipi pi ( ,
39
-
40 5.
, pi. , , pi , -, , pi.) , , , , pi. , pi, pipi , pi pi pi pi pi pi.
, pi pi pi pi- pi pi pi -. pi pi pi pi: pi, pi pi !
Fortran 90 , pi. pi TYPE pi
TYPE onoma ......END TYPE onoma
TYPE pi pi pi TYPE. . . END TYPE . pi pi pi pi pi pi pi TYPE. pi pi :
TYPE (onoma) : : x
pi pi pi , pi pi-.
pipi, pi pi pi pi- pi, pi pi pi, pi pi :
TYPE studentCHARACTER(30) : : studentNameINTEGER : : studentAM, studentYear
END TYPE student
TYPE bookCHARACTER(50) : : bookAuthorCHARACTER(60) : : bookTitleINTEGER : : bookYear
END TYPE book
pi pi pi pi . pi, pi
TYPE studentCHARACTER(30) : : name
-
5.1. 41
INTEGER : : am, yearEND TYPE student
TYPE bookCHARACTER(50) : : authorCHARACTER(60) : : t i t l eINTEGER : : year
END TYPE book
pi . pi pi
TYPE ( student ) : : sTYPE ( book ) : : b
INTEGER, PARAMETER : : N = 500 ! number of studentsINTEGER, PARAMETER : : M = 3000 ! number of books
TYPE ( student ) : : students (N)TYPE ( book ) : : books (M)
, s b, pipi student book.
pi , pi pi %. , pi pi
TYPE ( book ) : : b
b%t i t l e = " Fortran 95/2003 explained "b%author = " Michael Metcalf , John Reid , Malcolm Cohen"b%year = 2004
pi pi pi - , pi pi pi pi . pi.., pi
PRINT , b%t i t l ePRINT , b%author
IF ( b%year > 2003) THEN. . . . .
END IF
pi ,pi . pi , pi pi
TYPE ( book ) : : b , c
b%t i t l e = " Fortran 95/2003 explained "b%author = " Michael Metcalf , John Reid , Malcolm Cohen"b%year = 2004
-
42 5.
c = b pi pi pi :TYPE ( book ) : : b
b = book ( "Michael Metcalf , John Reid , Malcolm Cohen" , &" Fortran 95/2003 explained " , &2004)
pi - pi pi pi, . pi pi . pipi, pi pi, pi pi pi pi , pi , pi pi READ :TYPE ( book ) : : b
READ , b
pi pipi pi pi pi pi , pi , pi pi pi , pi pipi pi pi.
, pi.., 70 (, , ) pi. pi pi INTEGER, PARAMETER : : N = 70INTEGER, DIMENSION (N) : : day , month, yearREAL : : temperature (N)pi pi, pi pi pi . ( !) INTEGER, PARAMETER : : N = 70INTEGER, DIMENSION (3 ,N) : : dateREAL : : temperature (N) pipi date pipi pi date(1,j) j , date(2,j) date(3,j) . ( pi pi, pi !). -pi (date) pi pi (temperatu-re), , pipi, : date(1,5), date(2,5), date(3,5), date(1,8) pi- pi pi pi .
pi pi, - (date):
-
5.2. / 43
TYPE dateINTEGER : : day , month, year
END TYPE date
pi, (measurement):
TYPE measurementTYPE ( date ) : : dREAL : : temperature
END TYPE measurement
pipi, pi
TYPE (measurement ) : : meas(70)
pi j pi
meas( j )%date%day = 21meas( j )%date%month = 3meas( j )%date%year = 2006meas( j )%temperature = 24.5
5.2 /
, pi READ/WRITE ( PRINT) , pi pi pi pi pi - . pi , pi pi pi pi pi, pi, pi. pi pipi pi pi /- pi . pi pi / , 2.1.1, FORMAT. pi FORMAT pi pi.
pi pi FORMAT
READ ( , " ( . . . . . . ) " ) a , b , iWRITE ( , " ( . . . . . . ) " ) f , g , hhhh, ,
READ " ( . . . . . . ) " , a , b , iPRINT " ( . . . . . . . ) " , f , g , hhhh
pi, * READ(,)/WRITE(,) * READ /PRINT pi pi pi - pi . pi pi.
, pi pi - FORMAT. pi pi FORMAT pi
-
44 5.
* /. FORMAT pi pipi pi (pi END CONTAINS) - pi pi. FORMAT pi pi , pi READ/WRITE, , pi pi pi pi( , pi, MODULE). pipi pi
READ ( , 12) a , b , i12 FORMAT ( . . . . . . )
WRITE ( , 25) f , g , hhhh25 FORMAT ( . . . . . . . )
READ 12, a , b , i12 FORMAT ( . . . . . . )
PRINT 25, f , g , hhhh25 FORMAT ( . . . . . . . )
FORMAT pi (pi pi pi pi).
5.2.1 FORMAT
pi pi pi pi FORMAT pi pi READ/WRITE.
pi pi pi , pipi pi- FORMAT pi pi , pi, , .
pi,
pi pi I pi - pi w, pi . Iw.
WRITE ( , " I ( 5 ) " ) 12
pi
12
pi pi - . pi pi ,pi pi, pi -. , pi pi w *. pi pi 0, I0 pi pi pi pi .
-
5.2. / 45
, pipi pi pi pi pi. ,
-345
, pipi FORMAT 7, :
READ ( , " ( I7 ) " ) i
pi pi pi pi pi pi, n FORMAT Iw.n. n , pi 0.
WRITE ( , " ( I5 .3 ) " ) 99
pi
099
pi pi pi E EN ES F pi pi, w, pi , d, Fw.d. w pi - pi, pi . d . FORMAT pi pi. F pi . ,
WRITE( , " (F9.2 ) " ) 146.29pi
-146.29
E, EN, ES FORMAT pi pi pi pi pi E pi 10. , E pi 0.xxxxE yy 0.xxxxE yyy 0.xxxx yyy ( pi 99).
WRITE ( , " (E10.2 ) " ) 123E5
pi
0.12E+08
ES pi pi E pi E pi 1 10.
WRITE ( , " (ES10.2 ) " ) 123E5
pi
1.23E+07
-
46 5.
EN pi pi E pipi 3 pi E pi 1 1000.
WRITE ( , " (EN10.2 ) " ) 123E5
pi
12.30E+06
pi
9.3729
pi READ:
READ ( , " (F8.2 ) " ) x ! or E8.2 or EN8.2 or ES8.2
93.729E-1
READ pi pipi 10
READ ( , " (F10.1 ) " ) x ! or E10.1 or EN10.1 or ES10.1
pi , pi pi - F , pi 0 pi .
pi pi FORMAT pi, - . ..
WRITE ( , " (F6.1 ,E8.1 ) " ) (0.1 , 100.0)
pi
0.1 0.1E+03
FORMAT (pi pi ) pi pi pi, pi FORMAT , , pi FORMAT. ..
WRITE ( , " (F6.1 , , ,E8.1 ) " ) (0.1 , 100.0)
pi
0.1, 0.1E+03
pi pi L pi pi, w. pi .TRUE. .FALSE. T F . pi .
-
5.2. / 47
pi A, pi pi pi. pi- , pi pi pi . ..
WRITE ( , " (A) " ) " This is a statement "
pi
This is a statement
pipi pi pi pi - G pi pi, w, pi , d, Gw.d. pi , - Iw, Lw, Aw pi Ew.d pi pi pi F.
pi pi pi pi pi pi , pi, -, FORMAT , pi TYPE.
pi pi pi pi, pi FORMAT . FORMAT pi- pi pi- pi , pi pi:
100 FORMAT ( I4 , I4 , I4 )
100 FORMAT (3 I4 )
200 FORMAT ( I4 ,F4.2 , I4 ,F4.2 )
pi
200 FORMAT ( 2 ( I4 ,F4 . 2 ) )
5.2.2 FORMAT
pi pi pi pi, FORMAT pi pi ( )
pi pi , / pi pi , nX pi n . FORMAT pi
pi n .
pi pi , , pi 1X, pi pipi pi pi.
-
48 5.
5.2.3
pipi pi pi pi,pi WRITE advance="no". pi pi FORMAT pi ( pi *). ..
WRITE ( , " ( a ) " , advance="no" ) " Give number: "READ ( , ) x
5.3
, pi pi . pi, , pi .
pipi.
5.3.1
pi pi pi pi . pi pi pipi . OPEN .
OPEN( unit = u, f i l e = fname, status = stat , position= pos , &action = act )
unit= pi . u pi , , pi pi . pi , 99. pi , file= pipi pipi. , . , pi "input.dat" 12, pipi
OPEN( unit = 12, f i l e = " input . dat " )
pi pi
OPEN(12 , f i l e = " input . dat " )
pi pi pi pipi. pipi , pi, pi pi
. :
status= pi "old", "new", "replace", "scratch", "unknown".
1. pi (pi),2. ( pi ),3. pi -
,
-
5.3. 49
4. pi ( pipi file=),
5. .
pi pi pi , status="unknown".
position= pi
1. "rewind", pi pi ,
2. "append", pi pi ,
3. "asis" pi , pi OPEN. pi pi position=.
action= "read", "write" "readwrite" -pi , ,.
.. , 34, "data" pi pi pi
OPEN ( unit = 34, f i l e ="data " , status = " old " , action = " read " )
pi READ WRITE , pi pi *,
READ(34 , " (F8.2 ) " ) x
, ,
READ( unit = 34, fmt = " (F8.2 ) " ) x
pipi pi. pi-
CLOSE(u)
pi u . pi, pi .
pi pi pi pi pi . 5 6 . 0 pi pi ( ).
pi pi .
-
50 5.
5.3.2
pi pi pi pi pi. pi pi pi ,pi . - pi, . pipi READ/WRITE, pi *. , ,
CHARACTER(50) : : strINTEGER : : ii = 3WRITE( str , " (A, I0 ,A) " ) " fname_" , i , " . dat "! s t r is " fname_3 . dat "
pi FORMAT str. pi pi pi pi pi OPEN.
-
6
pi
6.1
pi pi pi pi Fortran, pi pi-pi . , , pi-, , , -, . pi pi pi pi, , . pi pi pi, pi, , , pi pi - pi pi (PROGRAM. . . END PROGRAM) pipi-, pi . pipi pi pi pi, pi. pi, pipi.
pi pipi pi pipi pipi pi , pi, pi pi. pi.., pi pi, - pi , pi pipi ,pi, pi pi pi pi-. pi pi pi pi , pipi pi pi pipi pi pipi pi pi .
pi pi pi (structured) (procedural) pi-.
pi pi FORTRAN pipi pi , , pi, PROGRAM. . . END PROGRAM. pi pi pi pipi, pi pi pi pi pi . pipi pi pi pi, pi -
51
-
52 6.
pipi pipi.
6.1.1 pipi
pipi Fortran . pi
f(x) = x2 + 5x 2 .
pi, x2 + 5x 2, pi , f , pi pi pi pi- . pi , x, pi, pi pi. f(x) pi f pi, pi , pi x. x pi , pi- . pi pi x2 + 5x 2 pi x pi pi ( ) - f pi , x. , pi.., y = f(2.5) pi y = 2.52 + 5 2.5 2. pi pi x, , , pi x. pi pi (pi) pi pi pi-. pi pi pi (pi). pi pi pi pi . , pi pi.
Fortran, pi : pi pi pi . pi pi , pi pi. pipi pi pi pi pi pi. pipi pi - pi pi . pi pi pi. - pipi pi pi pipi pi . pi pi pi pi pi , , pi pi, pi pi.
pi_pi FUNCTION (, ,. . . )pi__ :: pi__ ::
pi :: , ...
! ......
-
6.1. 53
......END FUNCTION
, pi pi (pi, -, pi ):
FUNCTION (, ,. . . )pi_pi :: pi__ :: pi__ ::
pi :: , ...
! ............END FUNCTION
pi , pipi, pi.
pi pi pipi pi (5.1). pi pi pi pi pi. pi, pi pi, pi pipi pi pi , pi, , pipi pi ( pi-). pi pi pi .
pipi pi
SUBROUTINE (, ,. . . )pi__ :: pi__ ::
pi :: , ...
! ............END SUBROUTINE
pipi pi pi pi pi- pi .
6.1.2
pipi pi pi:
pi pi pi- x2+x9 x = 1.3, x = 2.7, x = 0.5. pi :
-
54 6.
PROGRAM funIMPLICIT NONE
REAL : : x1 , x2 , x3 , y1 , y2 , y3
x1 = 1.3y1 = x12 + x1 9.0
x2 = 2.7y2 = x22 + x2 9.0
x3 = 0.5y3 = x32 + x3 9.0
! . . . . . .! . . . . . .END PROGRAM fun
pi , , pi. pi pi , pipi pi pi pi pi pi pipi pi . ,pi pipi
FUNCTION polynomial ( x )IMPLICIT NONE
REAL, INTENT ( in ) : : xREAL : : polynomial
polynomial = xx + x 9.0END FUNCTION polynomial
, polynomial, pi pi pi -, 1.2.2. pi , , x pi pi. pi pi pi. pipi pi pi , pi, pi pi pi pi pi pipi . pipi , pi , , pi ,
REAL FUNCTION polynomial ( x ). . . . .. . . . .
END FUNCTION polynomial
pi-, pi pi, . pi pi pipi . -
-
6.1. 55
, pipi pi pi pi .
pi pi. , pi pi pi , pipi , - x pi . pipi, pi pi INTENT (in). - pi pi pi . pipi pi pipi- . pipi pi pi pi , , ( ) pi INTENT (out). pipipi pi pipi pi ,pi INTENT (inout). , pi pi pi .
pi pi pi, . , pi .
pi pi pipi, , pi , pi:
pi
ln(1 + x) = k=1
(x)kk
, 1 x 1 .
pi ln(1.05) pi (log). , pi pi pi pi pi pipi .
PROGRAM logarithmIMPLICIT NONEREAL : : sum, y , x , termINTEGER : : k
! PART A! READ
DOREAD , yx = y 1.0IF ( (1.0
-
56 6.
IF (ABS( term ) < 1e6) EXITsum = sum + termk = k + 1
END DO
! PART C! PRINT
PRINT , " ln ( " , y , " ) = " , sum, log ( y )END PROGRAM logarithm
pi pi :
1. pi ,
2. pi pi pi
3. pi pi.
pi pi pi pipi-.
pi sum ( ) pi !PART A !PART B. pi - pi pi pi sum:
FUNCTION sumseries ( x )IMPLICIT NONE
REAL, INTENT ( in ) : : xREAL : : sumseries
REAL : : term , sumINTEGER : : k
k = 1sum = 0.0DO
term = (x )k / kIF (ABS( term ) < 1e6) EXITsum = sum + termk = k + 1
END DOsumseries = sum
END FUNCTION sumseries
pi pi, ,pi
REAL FUNCTION sumseries ( x ). . . . .. . . . .
END FUNCTION sumseries
-
6.1. 57
pi pi- .
, pi pi pi pi, pi . pi pi pi pipi pi.pi pi pi ( , , ) pi pi . FUNCTION readxy ( y )
IMPLICIT NONEREAL, INTENT ( out ) : : yREAL : : readxy
REAL : : x
DOREAD , yx = y 1.0IF ( (1.0
-
58 6.
pi pi, - , , pi pi pi pi pipi . , pi.. polynomial() pi pi-pi pi pi :
y = polynomial (1 .3 )
y = polynomial (2 .4 ) + 2.0 polynomial (3 .5 ) + 4.0, ,
PRINT , polynomial (4 .6 ), , pi , pi 2:
polynomial (3 .4 ) ! errorpolynomial (3 .4 ) = 4.0 ! errory=polynomial ! error
pi pi. pipi pi pi , pi, . , pi CALL pi . pireadxy() pi pipi pi ( !)
REAL : : x , y
CALL readxy ( x , y )
. pi pipi pi , pi pi. , x,y pi pi pi.
pi pi pipi - , pi, pipi(, , )3. , pi pi , pipi pi pi , , ,pi , pi pi pipi , - , pi , pi . pi pi : - pi pipi pi pi,pi interface () pi-pi pi . interface , pi pi pipi pi pi pi pi pi pi . pi, pi- pi pi (pi pipi), ( END). .. interface polynomial() pi pipi :
2 .3 pi pi pi.
-
6.1. 59
FUNCTION polynomial ( x )IMPLICIT NONE
REAL, INTENT ( in ) : : xREAL : : polynomial
END FUNCTION polynomial
pi readxy() :
SUBROUTINE readxy ( x , y )IMPLICIT NONEREAL, INTENT ( out ) : : x , y
END SUBROUTINE readxy
interfaces pipi pi pi pipi pi INTERFACE. . . END INTERFACE.
6.1.4
pipi pipi pi (lo-garithm), 6.1.2, 55. , , pi- sumseries() pipi readxy(). pi, pi:
FUNCTION sumseries ( x )IMPLICIT NONE
REAL, INTENT ( in ) : : xREAL : : sumseries
REAL : : term , sumINTEGER : : k
k = 1sum = 0.0DO
term = (x )k / kIF (ABS( term ) < 1e6) EXITsum = sum + termk = k + 1
END DOsumseries = sum
END FUNCTION sumseries
SUBROUTINE readxy ( x , y )IMPLICIT NONEREAL, INTENT ( out ) : : x , y
DOREAD , yx = y 1.0
-
60 6.
IF ( (1.0