Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Современный Фортран_учебник

.pdf
Скачиваний:
31
Добавлен:
23.03.2015
Размер:
1.61 Mб
Скачать

92

, ! ' '

' ! forall , ! # ,

+* .

do forall +. %-

! :

Integer, dimension(1:4) :: A

A=0 !

forall (i=1:4) !

A(i)=0 end forall

do i=1,4 !

A(i)=0 end do

' , 0 +, + +* -

do forall

1.! Do

integer,dimension(1:4):: A=(/ 1,2,3,4 /)

Do i=2,3 !

A(i) = A(i-1) + A(i) + A(i+1)

Enddo

'

A(2) = A( 1) + A(2) + A(3)=1+2+3=6

A(3) = A( 2) + A(3) + A(4)=6+3+4=13 ! A( 2)=6 -

2. & forall, +* ! #-

, – +

forall ( i=2:3 ) !

A(i)=A(i-1)+A(i)+A(i+1) ! A( 2)=2

! - A(i)=sum(A(i-1:i+1)) -

End forall

'

A(2) = A( 1) + A2) + A(3)=1+2+3=6

A(3) = A( 2) + A(3) + A(4)=2+3+4=9 ! A( 2)=2 исходное значение

A(2:3) = (/ sum(A(1:3)) , sum(A(2:4)) - , 3:

, A

! forall - . !

0 ! # Do - forall -

! . 0 # forall -

foreach PHP.

1 ! ! ! # -

forall:

-do ! ! , +

;

93

-forall ! , +

, , # ,

% ;

-do * , forall -

!+ - ! -

, .

#

. -

! # -

. 6 -

. +

. + !

. #

.

% 29.

' forall

A

J

 

 

 

 

i

parafloid(i,j) = minval( A(i,:)+A(:,j) )

A(i,:)-

 

 

строка i

 

A(:,j)- столбец j

 

 

 

 

!+ * # ! -

, ! forall.

' -

program parafloida implicit none integer,parameter:: N=10

! A -

integer,dimension(1:n,1:n) :: A=1, parafloid

! % parafloid - .

integer i,j

forall( i=1:n, j=1:n, i/=j ) & parafloid(i,j) = minval( A(i,:)+A(:,j), &

mask = A(i,:)>0 .and. A(:,j)>0 ) write(6,1) (parafloid(i,:),i=1,n)

1 format(1x,<n>i3) end program parafloida

' ! paraseqva *!+ -

# – , :

- 20 .

94

program paraseqva !

implicit none integer,parameter:: N=10

integer,dimension(1:n,1:n) :: A=1, parafloid

! % - .

integer i,j

integer,dimension(1:n) :: str,stlb, summa integer parafloidMin,i1 open(6,file='parafloid.txt')

do i=1,N A(i,i)=0

enddo do i=1,N

do j=1,N if(i/=j) then

parafloidMin = huge(0) ! #7fffffff do i1=1,N

str=A(i,i1); stlb=A(i1,j); summa(i1)=str(i1)+stlb(i1) enddo

do i1=1,N

if(str(i1)==0 .or. stlb(i1)==0) cycle if(summa(i1)<parafloidMin) parafloidMin = summa(i1)

enddo

parafloid(i,j) = parafloidMin else

parafloid(i,j) = 0 endif

enddo enddo

write(6,1) (parafloid(i,:),i=1,N) 1 format(1x,<N>i3)

end program paraseqva

' – :

-A(i,:)- i- A(:,j) - j-

, +* ;

-A(i,:) A(:,j) - + A(i,:)+A(:,j), -

! # # ;

-* minVal,

. ;

-forall , , +* -

! , ! . ;

-forall 3, , ! O (N3).

95

* read write ( -

« / »). ' read write # - + . ' ( ) – ,

/ * / . -/ !, +* 0 «*».

– / . «*» -

, / . 2 + * +

. 1 ! , # -

, ! + . 2 /

2 /

read(u,*) _#

write(u,*) _#_ _

': ! p k # : integer k; real p

read(1,*)p, k ; write (2,*)’p=’, p, ’k=’, k

& # . .

read 71 p, k.

write 72 !: -

! «p=», p, ! «k=», k.

( + +, <Enter> –

. 5 ! # * !,

8,8,8,8,8,8,8, ! 7*8 ( «7*» – . !

7 +* ).

/ #, «p= _p»: Namelist / _Namelist / _# ! $

read(u, _Namelist) write(u, _Namelist)

, ,

! . ( !

! + !.

! + !, .

# , –

, ! * . /-

! , -

! . * + +

+*

m format((), m – , ! -

write + format, ( – .

96

:

real radius = 1

Open (2, file=’Out.txt’) write(2,55) 2*3.14*radius

55 format(1x,'длина окружности'/2x,'с=',F5.2)

5 ! write, ! format 55, -

Out.txt ( «˜» )

длина окружности

˜˜c=˜6.28

( 3:

« » « =» – ! ;

«/» – # ;

2x – 2 ,

F5.2 – * !

, .

4 ! ( ! -

write , , write(2, "(1x,'c=',F5.2 ) ") c

!! % ( , -

. , ! format.

0 , ( – format -

write, + ! +* :

1.( + , . (

«/» ;

2.+* + ! ! -

!, ; ,

i4,i4 2i4;

3.+* + !, -

, + +* . ; ,

1x,i4,i4,i4, 1x,i4,i4,i4 2(1x,i4,i4,i4) , * , 2(1x,3i4).

4., – . ! -

# # < >;

5., -

, + :

# # I, F, E, D ! G, Z;

# # A, L, ! Z, G;

! : ” ”, ’ ’, X, P, SS, SP, T, TR, TL, «:», «\», «/».

97

4.2. - '

 

 

% 30.

 

 

 

1

-

#

 

 

 

integer k

iw

write(1,"(1x,I5)")k

 

 

 

 

Fw.d -

write(1,"(1x,F7.2)")x

real x

Ew.d -

write(1,"(1x,E11.2)")x

 

Gw.t -

write(1,"(1x,G11.2)")x

 

 

 

double precision d

Dw.d - !

write(1,"(1x,D20.13)")b

 

 

 

' :

1.w-* , + ,

+ ,

, «*****»;

2.* # :

d – ! # F, E, D;

t – ! * # ! Gw.t, - !+ « », ! , E F; 3. ! +

! E, D, G.

+ .

 

 

 

% 31.

( # #

 

 

 

 

 

 

 

%

(-

'

'

 

 

 

 

 

 

 

 

 

 

 

 

Logical M

Lw

write(1,"(1x,L5)")M

! «T» «F»

 

 

 

 

 

 

Character[*c] S

Aw

write (1,"(A5)") S

4 -

 

 

 

 

 

 

 

 

 

w c.

 

 

 

 

 

 

m format [*c] S

A

write (1,"(1x,A)")S

c, -

 

 

 

 

Character[*c].

 

4.3.! write format

1.& write

write( , %)

:

– ;

– -

, . ;

– +

( format.

98

2.& format , ! ,

format( )

:

# . -

; # # . -

, * expected descriptor #

#;

, , ;

( – . ( ! , ! !

(. / , (, -

, :

format #

1 format ( .. .. )

↑____∞___| ;

format

2 format((..)..(..(..)..)..)

↑____∞________|

format . ' +* :

write , -

;

#, *

. ;

+ ! -: «X» + ,

, «/» ;

-

# , .

;

;

! # #

«:» .

1 – .

# i2. integer::x=12,y=100

Open (2, file=’Out.txt’) write(1,33) x, y ! x, y –

33 format(i3) ! (i3) –

99

' ! ! , -

, ! . '-

! , .

Out.txt , +* –

1 ( «˜» ) ˜12

100

+ #

[-99 , 999], * + 3 .

2 – .

# i2. integer::x=12,y=100

Open (2, file=’Out.txt’)

write(1,33) x, y

! x, y –

33 format(1x, i2)

!

(1x, i2) –

' !

! , -

! , .

Out.txt , +* –

1 ( «˜» ) ˜12

˜**

+ #

[-9 , 99]. # 100 «**», ! -

2 ( i2).

3 – $ .

, #. write(1,33)12 ! 12 $ i 33 format()

33 format('* , ')

: !

5./

5.1.4

3, ,

+ :

_ $ :: _ $'

) .

1.5 , 3.

2.# – # integer, real, complex, logical, character type( _ ).

3.3 – 1 7,

+ #

[ :] :

100

a.:

= + 1 ; –

. ! , +* -

# +;

b.! , - + 1; . - . -

, , .

4., - Shape – , -

.

# * .

!+. ", , +, %-

. shape(Array).

5.0 – . -

, size(Array)

size(Array)=product(shape(Array)).

6. .$' ,

< $'_ > = < . >* size(array)

– ! 3 !+.

7./ * !+ – -

(allocatable); , ! –

, .

8.0 (intent) : intent(in) – # , intent(out) – # -

, intent(inout) #-# .

9.' : public | private, pointer | target, parameter, save.

. .

, . *

, * .

. ' ! s D

x

 

1

10

1

10

 

 

 

 

S =

xk D =

 

xk S

 

.

 

 

 

 

10 k =1

10 k =1

 

 

 

 

., -90 , * – « – – ». ( !

– ,

! , ! ! ,

abs(X-s), , sum(X) .

Program sumX ! sum(X)- %

Real,Dimension(1:10)::X; real s

read(1,*)X; s=sum(X)/10; print *, 'среднее =',s

! – –

print *, ' D=',sum(abs(X-s))/10

End Program sumX

101

5.2. , ! % $"

6 * , !:

$' ;

. # ;

* + .

* $ " "?

.$' , , - ,

. + 3 . < $'_ > = < .>*size(array)

! 3 !+.

( " " " "?

! . !. &,

. :

# ;

;

! # . .

' # : -

– + , – , -

– , , -

, – ,

+.

. ! ?

# P(1:2,1:2,1:2) 8 .. 1 .

+ , , 3

read. . ! . % read , , ,

! +, –

– ! . dimension P(1:2,1:2,1:2)

read(1,*) P !

read(1,*) P(1,1,1),P(2,1,1),P(1,2,1),P(2,2,1),P(1,1,2),P(2,1,2),P(1,2,2),P(2,2,2)

. *

.

* # + "?

, (* ),

shape(P)=(/2,2,2/); *

. -

, ,

Real,allocatable,Dimension(:,:) :: Matrix, Matr1, Matr2, X(:)