Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
327582.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
391.68 Кб
Скачать

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

  1. Инициализация переменных. Оператор 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]