Современный Фортран_учебник
.pdf92
, ! ' '
' ! 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(:)