fortran 95 notes greek

64
Συνοπτικές σημειώσεις Fortran 95 Σ. Σταματιάδης

Upload: gnpanagiotou

Post on 16-Dec-2015

33 views

Category:

Documents


2 download

DESCRIPTION

Fortran 95 Greek tutorial

TRANSCRIPT

  • 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