игра брюс 2048
Главная / Программирование / Введение в программирование больших вычислительных задач на современном Фортране с использованием компиляторов Intel / Тест 6

Введение в программирование больших вычислительных задач на современном Фортране с использованием компиляторов Intel - тест 6

Упражнение 1:
Номер 1
Укажите верные утверждения. Процедуры бывают следующих типов

Ответ:

 (1) Внутренние 

 (2) Внешние 

 (3) Модульные 

 (4) Основные 

 (5) Головные 


Номер 2
Укажите верные утверждения. Процедуры бывают двух видов

Ответ:

 (1) Contains 

 (2) Subroutine 

 (3) Intrinsic 

 (4) Function 

 (5) Module 


Номер 3
Укажите верные утверждения. Внутренние процедуры объявляются после оператора

Ответ:

 (1) Subroutine 

 (2) Function 

 (3) External 

 (4) Save 

 (5) Contains 


Номер 4
Укажите верные утверждения. Модульные процедуры объявляются после оператора

Ответ:

 (1) Module 

 (2) Program 

 (3) Contains 

 (4) Subroutine 

 (5) Function 


Номер 5
Укажите верные утверждения. Описание внешних процедур объявляется после оператора 

Ответ:

 (1) Program 

 (2) Contains 

 (3) Subroutine 

 (4) Function 

 (5) лператор не требуется, сразу идет объявление подпрограммы или функции 


Упражнение 2:
Номер 1
Укажите верные объявления процедур

Ответ:

 (1) real function f(x); real x  

 (2) integer function (x)  

 (3) real function FUN(real p)  

 (4) logical function f(x) result(FF)  

 (5) recursive complex function p(s)  


Номер 2
Укажите верные объявления процедур

Ответ:

 (1) subroutine proc(a,b,c,d,e,a,g) 

 (2) recursive subroutine tree(tree1,tree2) 

 (3) recursive subroutine tree(tree1,tree2) result(binary) 

 (4) logical subroutine sub(x,y) 

 (5) character(1024) function g(x) result(G) 


Номер 3
Укажите верные объявления процедур

Ответ:

 (1) integer subroutine sum(x,y) 

 (2) real function g() 

 (3) subroutine () 

 (4) recursive subroutine proc() 

 (5) intrinsic character function d() 


Номер 4
Укажите верные объявления процедур

Ответ:

 (1) contains function f(x) 

 (2) integer(16) subroutine sub10(x)  

 (3) logical function f(x,y,z,Q,Q)  

 (4) subroutine make(m1)  

 (5) recursive subroutine fibo(N) 


Номер 5
Укажите верные объявления процедур

Ответ:

 (1) subroutine (integer param) 

 (2) real(8) function f(x) result (p) 

 (3) complex function Q(x) result(q) 

 (4) double precision function Q(q) 

 (5) character(1024) function string() 


Упражнение 3:
Номер 1
Укажите верные утверждения. Модульные процедуры

Ответ:

 (1) могут содержать внутренние переменные 

 (2) имеют доступ к другим модульным процедурам 

 (3) обладают явным интерфейсом 

 (4) обладают неявным интерфейсом 

 (5) доступ к другой модульной процедуре закрыт, если используется такое же имя для внутренней процедуры в данной модульной процедуре 


Номер 2
Укажите верные утверждения. Модульные процедуры

Ответ:

 (1) не могут содержать внутренние переменные 

 (2) имеют доступ к "своим" внутренним процедурам 

 (3) обладают явным интерфейсом 

 (4) обладают неявным интерфейсом 

 (5) доступ к другой модульной процедуре закрыт, если используется такое же имя для внутренней переменной 


Номер 3
Укажите верные утверждения. Внутренние процедуры 

Ответ:

 (1) не могут содержать внутренние переменные 

 (2) могут обрабатывать только внутренние файлы 

 (3) обладают явным интерфейсом 

 (4) обладают неявным интерфейсом 

 (5) доступ к другой внутренней процедуре закрыт, если используется такое же имя для внутренней переменной 


Номер 4
Укажите верные утверждения. Внутренние процедуры 

Ответ:

 (1) могут содержать внутренние переменные 

 (2) содержат оператор contains 

 (3) обладают явным интерфейсом 

 (4) обладают неявным интерфейсом 

 (5) доступ к другой внутренней процедуре закрыт, если используется такое же имя для внутренней процедуры в данной модульной процедуре 


Номер 5
Укажите верные утверждения. Внешние процедуры 

Ответ:

 (1) могут содержать оператор contains 

 (2) обладают явным интерфейсом 

 (3) не могут обрабатывать внешние файлы 

 (4) описываются отдельно от головной программы 

 (5) не могут вызывать другие внешние процедуры  


Упражнение 4:
Номер 1
Объявлена функция  complex function fun(a,b,ind,symbol) result(gnew)
    real a,b
    integer ind
    character symbol
    ...
  end function fun
Какие вызовы функции являются верными ?

Ответ:

 (1) write(*,*) fun(3.0, 4.0, 1000, 'Q') 

 (2) Rad = fun(0.0, 3.0/2.0, 'R') 

 (3) write(*,*) fun(0.0, 0.0, 1, 'a'/fun(0.2, 3.0, 23, 'str') 

 (4) fun(2.0, 1.0, 3, 'e')=(0.0, 1.0) 

 (5) a=sin(fun(0.0, sqrt(7.0), 0, '!')) 


Номер 2
Объявлена функция character function func(x,y,k,A,M)
    real x,y
    integer(1) k
    integer A(M)
  ...
  end function fun
Какие вызовы функции являются верными ?

Ответ:

 (1) write(*,*) func(1.0, 2.0/3.0, 1, [1,6,7,8,9], 5)  

 (2) icode = iachar(func(1.0, 2.0, 0, [1,2,3], 3))  

 (3) write(*,*) func(sqrt(8.0), 1, V(::2), 500) 

 (4) call func(1.0, 2.0/3.0, 1, Vector(:10:2), 15) 

 (5) k = func(0,0,0,0,0)  


Номер 3
Объявлена подпрограмма recursive subroutine proc(param, p, A, B, C)
    real param
    logical p
    real A(:), B(:), C(:)
    ...
  end subroutine proc
Какие вызовы подпрограммы являются верными, 
если real X(1000), Y(1000), Z(1000)

Ответ:

 (1) call proc(3.0, 3==0, X(::2), Y(2::3), Z(::3)) 

 (2) call proc(sum(X(2::4)), .TRUE., X, Y) 

 (3) call proc(asin(1.0), .FLASE., sin(X), cos(Y), sqrt(Z)) 

 (4) call proc(.TRUE., 1.0, X+Y, Y+Z, X*Z) 

 (5) call proc(maxval(X), sum(Z)<100, X*Y, Y*Z, X+Y-Z) 


Номер 4
Объявлена подпрограмма   subroutine InitST(name, stat, param, index, vector)
    character(*) name
    logical stat
    real param
    integer index
    complex vector(1000)
    ...
  end subroutine InitST
Какие вызовы подпрограммы являются верными, 
если complex Z(1000)

Ответ:

 (1) call InitST('InitST', .TRUE., sum(aimag(Z)), 1, Z) 

 (2) call InitST("AS098R", maxval(Z), asin(0.0), 0, Z*2) 

 (3) call InitST('M', Z(2)<(1.0,2.0), 0.0, 5, Z) 

 (4) call InitST('ASKOP', sum(Z)==(0.0,1.0), real(maxval(Z)), 0, 1-Z) 

 (5) call InitST('QUESTION', .FALSE., real(sum(Z)), 0, 1-Z) 


Номер 5
Объявлена подпрограмма subroutine GetVolume(A,B,C, ind, symbol)
    complex(16) A(:)
    logical(8)  B(500)
    real(4)     C(:)
    integer(1)  ind
    character   symbol
    ...
  end subroutine GetVolume
Какие вызовы подпрограммы являются верными, 
если complex(16) X(1000)
      logical(8)  V(500)
      real(4)     R(250)

Ответ:

 (1) call GetVolume(X(::2),V,R, 1, 'K') 

 (2) call GetVolume(V, R, X, 1/2, 'K') 

 (3) call GetVolume(X, V, [0.3, 4.0, 9.0, 5.0], 4, '2') 

 (4) call GetVolume(X, V, R(::2), int1(minval(R)), '2') 

 (5) call GetVolume(X*3, .TRUE., R(::5), (2.0, 3.0), ichar(100)) 


Упражнение 5:
Номер 1
Объявлена функция integer function FX(x,y,z,A,B,C)
    complex, intent(in)   :: x
    logical, intent(out)  :: y
    real z
    complex, intent(in)   :: A(:)
    character(*), intent(in) :: B(:)
    real, intent(inout)      :: C(3)

    ...
  end function FX
Какие вызовы функции являются верными, если complex xc, yc, zc, Z(50), W(50)
  logical status, fс
  real param, alfa, beta, gamma
  character NAME(100)
  real VEC(1000)
  integer dummy

Ответ:

 (1) dummy = FX((2.0, 4.0), .TRUE., 0.0, Z(::2), NAME(::5), VEC) 

 (2) dummy = FX((0.0, -1.0), fс, sum(VEC), Z(1:20), NAME(1:50:5), VEC*2) 

 (3) write(*,*) FX(sum(W(::2)), status, 0.0, Z**2, ['4','5'], VEC(3:5)) 

 (4) write(*,*) FX(Z(9), fc, sqrt(8.0), Z(::5), NAME(::2), VEC(1:3)) 

 (5) write(*,*) FX((2.,3.), 3<4, 9.0, Z,W,Z(1:3)) 


Номер 2
Объявлена подпрограмма subroutine GetIndicator(param, var, gr1, gr2, val)
    logical, intent (out) :: param 
    real, intent (out)    :: var(:)
    integer(1), intent (in)   :: gr1
    integer(2), intent (out)  :: gr2
    complex(16), intent (in)  :: val
    ...
  end subroutine GetIndicator
Какие вызовы подпрограммы являются верными, если logical ST(10), dum
  real A(100), B(100), C(100)
  integer(2) kf1, kf2
  complex(16) R(200)

Ответ:

 (1) call GetIndicator(dum, A(9:55), 100, kf2, (1.0, 9.0)) 

 (2) call GetIndicator(.TRUE., B(10:40), 4, kf1, R(10)) 

 (3) call GetIndicator(ST(5), C(45:95), 100, kf1, R(10)) 

 (4) call GetIndicator(ST(9), C(::2), 0, 0, R(1:10)) 

 (5) call GetIndicator(ST(10), C(1:10), 9, kf2, R(90)) 


Номер 3
Объявлена функция complex(8) function Ex(A,V,W,alfa,betta,gamma)
    real, intent(in) :: A(:,:)
    complex(8), intent(out)  :: V(:,:,:)
    character(*), intent(in) :: W(:)
    integer, optional, intent(in)    :: alfa
    real,    optional, intent(inout) :: betta
    complex, optional, intent(out)   :: gamma
    ...
  end function Ex

Какие вызовы функции являются верными, если real M2D(100,100)
  complex(8) C1(10,10,10), A(10,10,10), B(10,10,10)
  character(128) CH(100)
  integer kparam
  real    sparam
  complex zparam

Ответ:

 (1) write(*,*) Ex(M2D(1:50,1:40), C1(:,:,1:7), CH(1:12), gamma=zparam) 

 (2) zparam=Ex(M2D(:,1:40:4), C1, CH(1:1), alfa=5, betta=7.0)  

 (3) zparam=Ex(M2D(:,::2),A,CH(1:10),alfa=9) 

 (4) write(*,*) Ex(M2D,A+B,CH(1:15),kparam, sparam) 

 (5) write(*,*) Ex(M2D, B(1:3,:,:), CH(::5), alfa=kparam, gamma=zparam) 


Номер 4
Объявлена функция   character function CH(str, N, status, param, maska)
    character(*), intent(in) :: str
    integer, intent(inout)   :: N
    integer, intent(out)     :: status
    character, optional, intent(out) :: param
    logical,   optional, intent(in)  :: maska(:)
    ...
  end function CH
Какие вызовы функции являются верными, еслиcharacter(128) adr
  integer, parameter :: N=7000
  integer i
  character symbol
  logical  ::  mask(100) = .TRUE.

Ответ:

 (1) write(*,*) CH("C:\DATA\1.txt", N+1, N, param = '!', maska = mask(::2)) 

 (2) write(*,*) CH("res.dat", N, N, maska = mask(::4)) 

 (3) write(*,*) CH("QXXDF67C", N, i, maska = mask(2:30:3), param = symbol) 

 (4) write(*,*) CH("000001", i, i, maska = mask(1:10:2).AND.mask(31:40:2)) 

 (5) write(*,*) CH("Q", i, i, maska = mask(1:10:2).XOR.mask(31:40:2), param=symbol) 


Номер 5
Объявлена подпрограмма subroutine ModifyMassiv(A,B,st,sp,status)
   real, intent(in) :: A(:)
   complex, intent(out) :: B(:,:,:)
   integer, intent (in) :: st,sp
   integer, optional, intent(in) :: status
   ...
end subroutine ModifyMassiv
Какие вызовы подпрограммы являются верными, еслиreal S(1000)
  complex Q(100,100,100)
  integer ik, k1, jk

Ответ:

 (1) call ModifyMassiv(S(1:100:2),Q(:,:,::2),k1,int(sum(S)), status=5) 

 (2) call ModifyMassiv(S(100::2),Q(::2,::2,::2), jk, status=5) 

 (3) call ModifyMassiv(S,Q(::4,::4,::5), jk+ik+k1, int(sum(Q(:,:,::5))), status=5) 

 (4) call ModifyMassiv(S,Q,1000,0,0,status=5) 

 (5) call ModifyMassiv(4*S,3*Q,1000,1110,status=5) 


Упражнение 6:
Номер 1
В головной программе описаны переменные   real A,B,C,D
  integer K1, K2, M, N
  complex S
Какие из них доступны во внутренней подпрограмме proc ?  subroutine proc(A,C,M,N)
    real, intent(in)  :: A(:)
    complex, intent(out) :: C
    integer, optional, intent(in) :: M,N
    complex R,T
    ...
  end subroutine proc

Ответ:

 (1) A 

 (2) B 

 (3) C 

 (4) D 

 (5) K1 

 (6) K2 

 (7) M 

 (8) N 

 (9) S 


Номер 2
В головной программе описаны переменные character(64), parameter :: NAME = "C:\DATA\FLOW\SWIRL\V1"
  real, pointer :: p1, p2
  real, target  :: T(1000)
  logical flag(10)
  complex(16) C1, C2
Какие из них доступны во внутренней подпрограмме proc ?subroutine proc(C1, C2, flags)
    real(4), intent(out)  :: C1
    complex(16), intent(out) :: C2
    character(*), optional, intent(in) :: flags
    real, pointer :: p1
    ...
  end subroutine proc

Ответ:

 (1) NAME 

 (2) p1 

 (3) p2 

 (4) T 

 (5) flag 

 (6) C1 

 (7) C2 


Номер 3
В головной программе описаны переменныеcomplex, parameter :: k=(0.0,1.0)
  integer s1,s2
  real A(100,100)
  logical :: MASK(2,2,3,3,4,4,5)=.TRUE.
  character, pointer :: pcA, pcB
  character, target ::  str1, str2
Какие из них доступны во внутренней функции F ?  real function F(str1, str2, x, y, z, QW) result(A)
    logical MASKA(2,2,3,3,4,4,5)
    complex k
    integer(1) s1
    ...
  end function F

Ответ:

 (1) k 

 (2) s1 

 (3) s2 

 (4) A 

 (5) MASK 

 (6) pcA 

 (7) pcB 

 (8) str1 

 (9) str2 


Номер 4
В головной программе описаны переменныеinteger, pointer :: pk
  character(32), target :: file
  logical :: st=.FALSE., flag=.TRUE.
  complex(16) Z1(10,10,10,10)
  real sk,sp,R
Какие из них доступны во внутренней функции GetParamVector?complex function GetParamVector(V,N,z1) result(flag)
    complex(16) V
    integer(8)  N
    complex(16), optional, intent(out) :: z1
    real x,y,ks,kp,st
    ...
  end function GetParamVector

Ответ:

 (1) pk 

 (2) file 

 (3) st 

 (4) flag 

 (5) Z1 

 (6) sk 

 (7) sp 

 (8) R 


Номер 5
В головной программе описаны переменныеreal(4) A,B,C
  logical, target :: LOGO
  complex(8), pointer :: cPT, cPN, cRT
  integer x,y,z
Какие из них доступны во внутренней функции InitFlowAVI?  logical function InitFlowAVI(A,B,C,N,name,LOGO) result (cRT)
    real(4), intent(in) :: A(:,:,:), B(:,:,:), C(:,:,:)
    character(256) name
    logical, optional :: LOGO
    integer x,y
    complex(8), pointer, save :: CPT, CPN
    ...
  end function InitFlowAVI

Ответ:

 (1) A 

 (2) B 

 (3) C 

 (4) LOGO 

 (5) cPT 

 (6) cPN 

 (7) cRT 

 (8) x 

 (9) y 

 (10) Z 


Упражнение 7:
Номер 1
Укажите атрибут, который описывает параметры процедуры необязательными. 

Ответ:

 (1) optional 

 (2) save 

 (3) automatic 

 (4) static 

 (5) external 


Номер 2
Укажите атрибут, который позволяет выделять память для внутренних переменных во время выполнения программы. 

Ответ:

 (1) static 

 (2) pure 

 (3) elemental 

 (4) automatic  

 (5) optional 


Номер 3
Какой атрибут позволяет параметрам процедуры возвращать вычисленное значение в вызывающую процедуру ?

Ответ:

 (1) pure 

 (2) intent(out) 

 (3) save 

 (4) intent(in) 

 (5) optional 


Номер 4
Какой атрибут объявляет процедуру чистой ?

Ответ:

 (1) optional 

 (2) intrinsic 

 (3) interface 

 (4) pure 

 (5) elemental 


Номер 5
Какой атрибут объявляет процедуру элементной ?

Ответ:

 (1) interface 

 (2) pure 

 (3) elemental 

 (4) external 

 (5) intrinsic 


Упражнение 8:
Номер 1
Какие операторы описывают процедуры, передаваемые как параметры ?

Ответ:

 (1) external 

 (2) intrinsic 

 (3) elemental 

 (4) pure 

 (5) save 


Номер 2
В операторе interface следует указывать

Ответ:

 (1) тип возвращаемого значения для функций 

 (2) типы формальных параметров 

 (3) тип внутренних переменных 

 (4) вызываемые процедуры 

 (5) исполняемые операторы 


Номер 3
Укажите верные утверждения, которые относятся к элементным процедурам

Ответ:

 (1) избавляют от дублирования процедур, выполняющих одинаковые действия как над скалярами, так и над массивами 

 (2) фактически выполняют неявную перегрузку процедур 

 (3) являются процедурами без побочных эффектов 

 (4) встроенные функции sinh, exp, sqrt не являются элементными 

 (5) неявно обладают pure атрибутом 


Номер 4
Укажите верные утверждения, которые относятся к элементным процедурам

Ответ:

 (1) формальные параметры являются скалярами со связью intent(inout)  

 (2) являются чистыми процедурами  

 (3) элементными могут быть только подпрограммы  

 (4) встроенные функции gamma, BESSEL_J1, LOG_GAMMA являются элементными  

 (5) формальные параметры могут иметь атрибут allocatable  


Номер 5
Укажите верные утверждения, которые относятся к чистым процедурам

Ответ:

 (1) в операторе forall используются только чистые процедуры 

 (2) в операторе where используются только чистые процедуры 

 (3) элементные процедуры являются чистыми 

 (4) формальные параметры подпрограмм имеют вид связи intent(in) 

 (5) не должны содержать оператор return 


Упражнение 9:
Номер 1
Какой оператор используется для остановки работы процедуры и возврат в вызывающую программную единицу.

Ответ:

 (1) return 

 (2) close 

 (3) stop 

 (4) wait 

 (5) save 


Номер 2
Какой атрибут задает сохранять свои значения для внутренних переменных процедур ? 

Ответ:

 (1) optional 

 (2) automatic 

 (3) save 

 (4) pure 

 (5) elemental 


Номер 3
Какой оператор информирует головную программу о типе возвращаемого значения и типе формальных параметров для внешней функции 

Ответ:

 (1) external 

 (2) intrinsic 

 (3) interface 

 (4) pure 

 (5) elemental 


Номер 4
Какая функция проверяет присутствие необязательного формального параметра ?

Ответ:

 (1) getarg 

 (2) getpid 

 (3) isatty 

 (4) present 

 (5) precision 


Номер 5
Какой атрибут указывает, что стандартные процедуры передаются как фактические параметры в другие процедуры ?

Ответ:

 (1) external 

 (2) automatic 

 (3) intrinsic 

 (4) save 

 (5) interface 


Упражнение 10:
Номер 1
Какие из фрагментов программ содержат рекурсивные вызовы

Ответ:

 (1) write(*,*) F(F(1)) ... contains recursive function F(A) F=1 end function F  

 (2) contains function F(A) real A A = P(2.0) F = 0 end function F function P(B) real B B = F(1.0) P = 2 end function P  

 (3) write(*,*) Q(10) ... contains function Q(A) integer A Q = P(2.0*A) end function Q function P(B) real B P = 2 + B end function P  

 (4) contains recursive function Q(A) integer A Q = P(A)*Q(A-1) end function Q function P(B) integer B P = 2 + B end function P  

 (5) write(*,*) RR(10) ... contains recursive function RR(k) integer A(10) integer k A(k)=k*A(k-1) RR=A(k-2) end function RR  


Номер 2
К каким процедурам нельзя применить атрибут pure ?

Ответ:

 (1) real function ST(k) real k ST=sin(k)*cos(k**3) end function ST  

 (2) subroutine make(a,b,c) complex, intent(in) :: a,b,c write(*,*) a,b,c end subroutine make  

 (3) subroutine INC(a) real :: a ... end subroutine INC  

 (4) subroutine Create(A,B,N) double precision A character(128) B integer(8) N ... end subroutine Create  

 (5) subroutine Destroy(k) integer, intent(in) :: k integer, parameter :: N=100 real :: A(N)=9.0, B(N)=8.0 ... end subroutine Destroy  


Номер 3
Выберите процедуры, которые можно объявить элементными.

Ответ:

 (1) subroutine Make(A) real A A=2*A+A**2 end subroutine Make  

 (2) real function SumNew(A) real A(:), s do k=1,size(A) s=s+k end do SumNew=s end function SumNew  

 (3) character function SMB(str) character(*) str SMB=str(1:1) end function SMB  

 (4) integer function pr(a,b,c) real,intent(in) :: a,b,c pr=a+b**c end function pr  

 (5) subroutine SMA(a,b,c,d) real, intent(in) :: a,b complex, intent(out) :: c,d complex, parameter :: i=(0.0,1.0) c=a**b**i d=abs(sin(a))**i*b end subroutine SMA  


Номер 4
Дана подпрограмма subroutine proc(a,b,N,func)
    interface 
      real function func(x)
        real x
      end function func
    end interface 
    real, intent(in) :: a,b
    integer, intent(in) :: N
    write(*,*) func(a+b*N)
  end subroutine proc
Выберите верные вызовы, если real function f(x) 
real x
  f=sqrt(x)+cos(x)+(1.0,1.0)
end function f

real function S(x,y) 
real x,y
  S=10000*x*y
end function S

recursive function fr(x) 
real x
  if ((x-1)<0) then 
    fr=1.0
     return
  end if
  fr=sin(x)+cos(x)+fr(x-1)
end function fr

Ответ:

 (1) call proc(1.0, 2.0, 10, fr) 

 (2) call proc(5.0, f(6.0), 10, f) 

 (3) call proc(1.0, 2.0, 10, S) 

 (4) call proc(S(1.0), S(2.0), 10, f) 


Номер 5
Какие из фрагментов программ не содержат рекурсивные вызовы

Ответ:

 (1) write(*,*) st(st(a,b)) ... contains recursive function st(x,y) st=1.0+x*xy+y end function st  

 (2) contains function func(a) real a a = proc(2.0) func = a**2 end function func function proc(b) real b proc = 2+b end function proc  

 (3) write(*,*) Q(10) ... contains function P(B) real B P = 2 + B end function P function Q(A) integer A Q = P(2.0*A) end function Q  

 (4) contains recursive real function f(x) integer x f = P(x)*f(x-1) end function f function P(y) integer y P = 2 ** y end function P  

 (5) write(*,*) func(10) ... contains recursive function func(k) integer A(10), k A(k)=k*A(k-1) func=A(k-2) end function func  




Главная / Программирование / Введение в программирование больших вычислительных задач на современном Фортране с использованием компиляторов Intel / Тест 6