
- •Алфавит, лексемы, ключевые слова языка Фортран. Метки. Комментарии.
- •Структура программы. Внешние подпрограммы. Внутренние подпрограммы. Модули.
- •Переменные. Переменная – это величина, которая может в программе принимать различные значения.
- •Условный оператор if... Then...End if.
- •12.Неявное определение типа.
- •13. Синтаксис определения производных типов
- •14. Атрибут parameter. Именованные константы и константные выражения
- •15. Атрибуты dimension и allocatable. Описание массивов.
- •16. Атрибут intent. Описание формальных параметров.
- •17. Определенные и неопределенные переменные. Выражения с массивами и присваивание массивов.
- •24,Внешние подпрограммы.
- •30.Оператор use
- •31.Основные сведения о массивах
- •32.Массивы. Динамические массивы.
- •33.Операторы allocate, deallocate.
- •34.Форматирование ввода-вывода. Оператор format.
- •35.Соединение файла с логическим устройством
- •Алфавит, лексемы, ключевые слова языка Фортран. Метки. Комментарии.
- •15. Атрибуты dimension и allocatable. Описание массивов.
- •18. Скалярные числовые выражения и скалярное числовое присваивание.
- •27. Модули. Области общей памяти.
15. Атрибуты dimension и allocatable. Описание массивов.
program pr1
integer::tmp
integer,allocatable,dimension(:,:)::a
integer::n
print*,'n'
read*,n
allocate (a(n,n))
print*,'Enter A'
do i=1,N
read*,(A(i,j), j=1,n)
end do
do i=1,N
do j=1,n
A(i,j)=0
end do
end do
do i=1,N
print*,(A(i,j), j=1,n)
end do
end program
16. Атрибут INTENT. Описание формальных параметров.
Program rhghg
integer::c,d
c=1
d=4
call swap_r(c,d)
print*,'C=',c,'D=',d
end program
subroutine swap_r(A,B)
integer,intent(inout)::A,B
integer::tmp
tmp=A
A=B
B=tmp
end subroutine
17. Определенные и неопределенные переменные. Выражения с массивами и присваивание массивов.
INTEGER, PARAMETER :: size_x = 5, size_y = 10
REAL, DIMENSION(size_x, size_y) :: X, Y, Z
INTEGER, DIMENSION(size_x, size_y) :: STAT
INTEGER, DIMENSION(size_x * size_y) :: ISTAT
INTEGER, DIMENSION(SQRT(size_x * size_y)) :: IND
LOGICAL, DIMENSION(size_x, size_y) :: LOT
INTEGER I, J
REAL s, t, r
18. Скалярные числовые выражения и скалярное числовое присваивание.
PROGRAM express
IMPLICIT REAL(KIND(0.0D0)) (A - H)
i = 2
F = 0.004
T = 2.7
WRITE(*, *) '4iclovoe virashane I * T**I - 5.2D0**I * F imeet zna4enie ',&
&I * t**i - 5.2D0**I * F
j = I * t**I - 5.2D0**I * F
WRITE(*, *) 'J - celoe, J = I * T**I - 5.2D0*-*I * F&
& imeet zna4enie ', J
R = I * T**I - 5.2D0**I * F
WRITE(*, *) 'R - tipa REAL, R = I * T**I - 5.2D0**l * F&
& imeet zna4enie ', R
H = I * t**I - 5.2D0**I * F
WRITE(*, *) 'H - tipa DOUBLE PRECISION,',&
&' H = I * T"*I - 5.2D0**I*F imeet zna4enie ', H
END PROGRAM express
Скалярные логические выражения и присваивания.
LOGICAL L, M, N, К, I, J, COND
REAL U, W, X, Y
LOGICAL, PARAMETER :: Т = .TRUE., F = .FALSE.
….......................................
L = .NOT.J
К = L .AND. M .OR. I .AND. J
COND = W + U > X .AND. U * Y < U .OR. К
19. Скалярные символьные выражения и присваивания для переменных производного типа.
PROGRAM s1
character(len=4)::W1='hole',W2='loop'
character(len=4)::w3
w3=w2(4:4)//w1(2:4)
print*,w3
END PROGRAM
PROGRAM s2
TYPE DERIVED
INTEGER LENGTH
character(len=*) value
END TYPE DERIVED
TYPE POINT
INTEGER i
INTEGER j
INTEGER k
END TYPE POINT
CHARACTER(LEN = 4) :: WORD1 = 'TIME', WORD2 = 'WAIT'
TYPE(POINT) P
TYPE(DERIVED) D
P = POINT(1, 2, 3)
D = DERIVED(LEN(WORD1//WORD2), WORDl//WORD2)
print*,d
END PROGRAM
20. Арифметические выражения. Порядок выполнения арифметических операций.
21. Арифметическое присваивание. Преобразование типов.
1)присваиван
Program rhghg
integer::c,d
c=1
d=4
s=c+d
print*,s
end program
2)Программа, демонстрирующая потерю точности при преобразование типов.
PROGRAM PRECISIONLOSS
REAL(4) :: X
REAL(8) :: Y
X = 1.01
PRINT *, "X = ", X
Y = X
PRINT *, "Y = ", Y
END PROGRAM PRECISIONLOSS
Пример нарушения коммутативности сложения
PROGRAM ASSOCIATIVITY_LOSS
REAL(4)::X=1.0E16,Y=-1.0E16,Z=1.0
REAL(4)::A,B
A = (X + Y) + Z
PRINT *,'A=',A
B = X + (Y + Z)
PRINT *, "B= ",B
END PROGRAM
Инициализация переменных. Оператор DATA.
PROGRAM ASSOCIATIVITY_LOSS
REAL(8) :: X, Y
INTEGER, DIMENSION(4) :: A12
DATA X, Y /1.2978D+01, -3.1222D0/
DATA A12 /1, 5, 5, 0/
do i=1,4
print*,A12(i)
end do
print*,x,y
END PROGRAM
23. Синтаксис подпрограмм. FUNCTION и SUBROUTINE. Встроенные математические функции.
PROGRAM dr
integer::Z,Y,R
real::X
X=3
Y=7
z=4
call slojenie(Z,Y,R)
print*,R,F(x),Z
END PROGRAM
subroutine slojenie(Z,Y,R)
integer::Z,Y,R
R=mod(Z+Y,3)
end subroutine
real function F(x)
real::X
F=sqrt(X*X*X*X)
end function
24. Внешние подпрограммы. Внутренние подпрограммы. Интерфейсы.
PROGRAM dr
integer::Z,Y,R
real::X
X=3
Y=7
z=4
call slojenie(Z,Y,R)
call df(x,f)
print*,R,f
contains
subroutine df(x,f) !внутреняя подрограмма
real::X
F=sqrt(X*X*X*X)
end subroutine
END PROGRAM
subroutine slojenie(Z,Y,R) !Внешняя подпрограмма
integer::Z,Y,R
R=mod(Z+Y,3)
end subroutine
PROGRAM main
REAL X, Y, S
INTERFACE
SUBROUTINE outer_sub(A,B,C)
REAL A,B,C
END SUBROUTINE OUter_sub
END INTERFACE
DATA X, Y /0.755545, 6.873452/
CALL inner_sub(X, Y, S)
WRITE(*, *) 'Result of main''s inner_sub S =', S
CALL outer_sub(X, Y, S)
WRITE(*, *) 'Result of outer_sub S =', S
CONTAINS
SUBROUTINE inner_sub(A,B,C)
REAL, PARAMETER :: R = 5., RR = SQRT(5. / 2.0)
REAL A,B,C
REAL, INTENT(OUT) ::C
C = SQRT(A**2 + B**2)
IF (C > R) THEN
IF (A > RR) A = RR
IF(B > RR) B = RR
END IF
END SUBROUTINE inner_sub
END PROGRAM main
25. Параметры подпрограмм. Ограничения, накладываемые на фактические параметры.
SUBROUTINE sub(A,B,C) !А, В, С - формальные параметры
REAL A,B,C
C= SQRT(A**2 + B**2)
END SUBROUTINE sub
PROGRAM main
IMPLICIT NONE
REAL X, Y, S
DATA X, Y /0.755545, 6.873452/
CALL sub(X, Y, S) !X, Y, S - фактические параметры
WRITE(*, *) 'Result of sub S =', S
26. Параметры подпрограмм. Формальный и фактический параметры.
SUBROUTINE sub(A,B,C) !А, В, С - формальные параметры
REAL A,B,C
C= SQRT(A**2 + B**2)
END SUBROUTINE sub
PROGRAM main
IMPLICIT NONE
REAL X, Y, S
DATA X, Y /0.755545, 6.873452/
CALL sub(X, Y, S) !X, Y, S - фактические параметры
WRITE(*, *) 'Result of sub S =', S