Программирование больших вычислительных задач на современном Фортране с использованием компиляторов Intel - ответы
Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуру, которая выполняет решение уравнения Лапласа ?
Объявлен модуль и головная программа module matrix real :: M=1000 real, private :: MP=3000 real, protected :: MT = 5000 integer, public :: S1=50 integer, protected :: S2=70end module matrixPROGRAM prog use matrix, only : M, MT implicit none integer :: MP=5000 integer :: S1=10, S2=30 ...
Какие из вариантов выражений допустимы в головной программе ?
Объявлен следующий модуль module matrix integer :: A=100, B=200, C=300 integer, private :: S=9 integer, protected :: P=8 private, integer :: Q=100, W=200 integer :: N=500end module matrix
Какие из перечисленных модульных переменных могут быть использованы вкачестве границ размещаемых массивов в вызывающей головной программе?
Каким атрибутом следует описать процедуру, привязанную к типу по имени, чтобы получить доступ к переменной, посредством которой вызывалась данная процедура ?
В программе используется модуль math_M. Чтобы подключить ещеодин модуль graph_M к головной программе следует
Дан модуль, который используется в головной программеmodule mod_1 type rectangle integer x1,y1,x2,y2 integer color character, private :: name end type rectangle type, extends (rectangle) :: roundrect integer radius real, public :: center end type roundrectend module mod_1
В головной программе объявлена переменная
type (rectangle) rctУкажите верные варианты доступа к полям производного типа из головной программы.В головной программе используется модуль geom, который содержит только тип circle и модульную процедуру IncRadius. Головная программа использует модуль geom.В головной программе объявлена переменная type (circle) CR.
Укажите верное описание типа circle и процедуры IncRadius, чтобы при вызове call CR.IncRadius(10.0) из головной программы, поле R переменной CR было изменено.
Описан модуль, который подключен к головной программе module mod_1 integer, public :: A=1,B=1,C=1 integer, protected :: D=5, E public F, init contains subroutine init_D_E(x,y) integer x,y D=X*10; E=Y*2 end subroutine init_D_E integer function F F=A+D+E end function Fend module mod_1
Какой результат вернет функция F после выполнения операции присваивания A=A+D в головной программе ?
Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. module mod_E interface point module procedure pnt1, pnt2, pnt3 end interfacecontains real function pnt1(x,y) real x,y pnt1=x+y end function pnt1 real function pnt2(x,y) integer x,y pnt2=x+y end function pnt2 character function pnt3(x,y) real x integer y pnt3=achar(mod(int(x),20)*mod(y,2)) end function pnt3end module mod_E
Объявлены следующие типы и переменные. type grid integer adr real alfa real beta end type grid type, extends (grid) :: flow integer coord real dist real param end type flow type, extends (flow) :: regime real, allocatable :: ux(:,:,:), uy(:,:,:), uz(:,:,:) real R1, R2, R3 end type regime class(*), pointer :: polym class(grid), pointer :: pol_grd type(flow), target :: flw
Какие справедливы прикрепления ссылок ?
Используя процедуры MKL вычислите выражение . Данные находятся в файле data1.txt. В ответ введите целую часть суммы модулей полученного вектора.
Используя процедуры MKL, вычислите произведение , где - квадратная матрица, -вектор. Данные находятся в файле data19.txt (матрица записана по строкам). В ответ введите номер минимального по модулю элемента вектора .
Модульmodule mod_1 type plot integer x1,y1,x2,y2 integer, private :: color(255) end type plot type indicator type (plot) plt logical :: free character(4), public :: date end type indicator type card type (indicator) indic integer fparam integer, private :: sparam end type cardend module mod_1
используется в головной программе.
Объявлена переменная
type(card) cdУкажите верные варианты доступа к полям производного типа.Укажите параметр компиляции, который разрешает подстановку функций внутри текущего исходного файла на усмотрение компилятора
Используя процедуры MKL, вычислите произведение , где - прямоугольная матрица,-квадратная матрица. Данные находятся в файле data26.txt (матрицы и записаны по строкам). В ответ введите целое значение от суммы элементов матрицы .
Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру init из модуля A module mod_A contains subroutine init write(*,*) "Initializing A" end subroutine initend module mod_Amodule mod_B contains subroutine init write(*,*) "Initializing B" end subroutine initend module mod_BPROGRAM prog use mod_A use mod_B implicit none call init() ! вызываем процедуру из модуля Aend
Используя процедуры MKL, вычислите Евклидову норму вектора . Данные находятся в файле data13.txt. В ответ введите целую часть результата.
Используя процедуры MKL, вычислите произведение , где - треугольная квадратная матрица,-квадратная матрица. Данные находятся в файле data25.txt (матрицы и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .
Выберите допустимые объявления модульных переменных для данного варианта программы module mod_Aimplicit none! здесь следует объявить модульные переменные public init_solver contains subroutine init_solver(x) real x A=A**2 B=x+A end subroutine init_solverend module mod_APROGRAM prog use mod_A, Anew => A implicit none x=1.5 Anew=x+1 write(*,*) Anew+B call init_solver(1.6)end
Какое значение будет присвоено переменной k в результате выполнения оператора select type в следующем фрагменте программы ?type point integer x, yend type pointtype, extends(point) :: point_ex integer z integer color logical errorend type point_extype, extends(point_ex) :: point_phys real vx real vy real vz real tmend type point_phystype, extends(point_phys) :: point_mech character(32) name character(8) codeend type point_mechinteger kclass (*), pointer :: ptrtype (point_ex), target :: pt_exclass (point_phys), allocatable, target :: pt_phclass (point_mech), allocatable, target :: pt_mhallocate(pt_ph,source=point_phys(1,2,3,4,.true.,0.0,0.0,0.0,0.0))allocate(pt_mh,source=point_mech(5,6,7,8,.true.,0.0,0.0,0.0,0.0,"A","B"))ptr=>pt_ph select type (ptr) type is (point_ex); k=ptr.x class is (point); k=ptr.y class is (point_mech); k=ptr.color class default; k=0 end select ...
Объявлен следующий модуль module matrix private integer :: A=100, B=200, C=300 complex, private :: S=9 integer, protected :: P=8 integer :: Q=100, W=200 integer, private :: N=500end module matrix
Какие из перечисленных модульных переменных могут быть использованы вкачестве границ размещаемых массивов в вызывающей головной программе?
Объявлен модуль и головная программа module matrix public real, private :: A=1.6 real, public :: B=5.8 real, protected :: C=1.0E+10 integer :: X=50 integer :: Y=70end module matrixPROGRAM prog use matrix, BNEW => B, CNEW => C implicit none integer XP, YP ...
Какие из вариантов выражений допустимы в головной программе ?
Описан модуль, который подключен к головной программе module mod_1 integer, private :: A=1,B=1,C=1 integer, protected :: D, E private SetA public F, init contains subroutine SetA(X) integer X A=X+1 end subroutine SetA subroutine init_D_E(x,y) integer x,y D=X*10; E=Y*2 end subroutine init_D_E integer function F F=A+D+E end function Fend module mod_1
Какой результат вернет функция F после вызова процедуры init_D_E(2,3) в головной программе ?
Выберите допустимые объявления модульных переменных для данного варианта программы module mod_Aimplicit none! здесь следует объявить модульные переменные public init_solver contains subroutine init_solver(x) real x A=A*0.001 B=x+A end subroutine init_solverend module mod_APROGRAM prog use mod_A, Bnew => B implicit none Bnew=A*2 write(*,*) x+2 call init_solver(0.0)end
Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру init из модуля A module mod_A contains subroutine init write(*,*) "Initializing A" end subroutine initend module mod_Amodule mod_B contains subroutine init write(*,*) "Initializing B" end subroutine initend module mod_BPROGRAM prog use mod_A use mod_B implicit none call init() ! вызываем процедуру из модуля Aend
Какие функции используются в выражении res=sin(2.0)*cos(2.0) module mod_F contains real function sin(x) sin=sqrt(sqrt(sqrt(x))) end function sin real function cos(x) cos=x**2.0**2.0 end function cosend module mod_FPROGRAM prog use mod_F, only : cos, sinx=>sin implicit none real res res=sin(256.0) write(*,*) resend
Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. module mod_E interface point module procedure pnt1, pnt2, pnt3 end interfacecontains real function pnt1(x,y) integer x,y pnt1=x+y end function pnt1 logical function pnt2(x,y) integer x,y pnt2=x+y<1000 end function pnt2 character function pnt3(x,y) real x integer y pnt3=achar(mod(int(x),20)*mod(y,2)) end function pnt3end module mod_E
Дан модуль, который используется в головной программеmodule mod_1 type person integer, public :: year character(64), private :: name="ABC" character(64), public :: sname="DEF" end type person private person type, extends (person) :: student logical, public :: status character, private :: group end type studentend module mod_1
В головной программе объявлена переменная
type (student) stУкажите верные варианты доступа к полям производного типа из головной программы.Объявлены следующие типы и переменные. type cell real next real prev logical stat end type cell type, extends (cell) :: object integer code real dist real radius end type object type grid type (object) object integer n integer xa,xb,ya,yb end type grid class (*), pointer :: polym class (cell), pointer :: ptc type (grid), target :: ptg
Какие справедливы прикрепления ссылок ?
В головной программе используется модуль geom, который содержит только тип triangle и модульную процедуру Square. Головная программа использует модуль geom.В головной программе объявлена переменная type (triangle) TR.
Укажите верное описание типа triangle и процедуры Square, для организации вызова write(*,*) TR.Square() из головной программы
В следующем фрагменте программы, какие имена не являются и могут не являться процедурами, привязанными к типу по имени? use grids type (grid_MKE) GR type (point) pt call GR.Init() call GR.PrintInfo() write(*,*) GR.coordinates(10,20) write(*,*) GR.next() write(*,*) GR.values(2,2) if (.NOT.GR.err) then ... pt = GR.points + pt ...
Даны два типа описанных в модуле gas_dynamicsmodule gas_dynamics type grid real(8), allocatable :: dat(:,:,:) real(8), allocatable :: xcoord(:) real(8), allocatable :: ycoord(:) real(8), allocatable :: zcoord(:) end type grid type particle real(8), allocatable, private :: ux(:,:,:) real(8), allocatable, private :: uy(:,:,:) real(8), allocatable, private :: uz(:,:,:) real(8), allocatable, private :: tm(:,:,:) end type particle...end module gas_dynamics
Создайте тип plot, который:наследует поля типа grid содержит поле типа particle, в виде одномерного динамического массива содержит два поля типа complex(8), в виде одномерных динамических массивов
В ответ введите размер в байтах переменной типа plot
Какое значение будет находиться в поле a переменной ex1 после вызова call ex1.solve() в следующей программе ?module mod_1 abstract interface integer function func(x) integer x end function func end interface type region integer, private :: a integer, private :: b procedure (func), pointer, nopass :: funct contains procedure solve end type regioncontains subroutine solve(rg) class(region) rg rg.a=rg.funct(rg.a) end subroutine solveend module mod_1program proguse mod_1type (region) ex1ex1.a=2; ex1.b=3; ex1.funct=>Fcall ex1.solve()containsinteger function F(x) integer x F=x*x+xend function FEND
Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.
Чему равна верхняя граница coarray-переменной CF, если caf-программа была скомпилирована для двухъядерного процессора и в настройках проекта указано значение Coarray Images = 64. CoArray-переменная CF, объявлена как type (flow) CF[-4:*]
Каждая копия программы генерирует массив из случайных чисел. Каждая копия программы должна записать массив целиком в файл C:\datа.txt.Какой оператор следует использовать при записи данных в файл ?
Напишите имя функции (синтаксис Fortran 95), которая вычисляет скалярное произведение двух вещественных вектор двойной точности.
Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуры, которые выполняют умножение треугольной матрицы на вектор ?
Используя процедуры MKL вычислите скалярное произведение двух векторов и . Данные находятся в файле data7.txt. В ответ введите целую часть результата.
Используя процедуры MKL, вычислите произведение , где - треугольная квадратная матрица,-квадратная матрица. Данные находятся в файле data21.txt (матрицы и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .
Используя процедуры MKL, вычислите произведение , где - прямоугольная матрица,-квадратная матрица. Данные находятся в файле data28.txt (матрицы и записаны по строкам). В ответ введите целое значение от суммы элементов матрицы .
Укажите параметр компиляции, который создает приложение не привязанное к конкретному типу процессора
Дан модуль, который используется в головной программеmodule mod_1 type person integer year character(64), private :: name="ABC" character(64), private :: sname="DEF" end type person type, extends (person) :: student logical, private :: status character, public :: group end type studentend module mod_1
В головной программе объявлена переменная
type (person) pstype (student) stУкажите верные варианты доступа к полям производного типа из головной программы.
Используя процедуры MKL, вычислите произведение , где - квадратная матрица, -вектор. Данные находятся в файле data16.txt (матрица записана по строкам). В ответ введите номер минимального по модулю элемента вектора .
Модульmodule mod_1 type region integer x(4) real R end type region type blk logical st(3) character(5), public :: name(2) end type blk type NewType type (region) reg(20) type (blk) bee(30) end type NewTypeend module mod_1
используется в головной программе.
Объявлена переменная
type(NewType) NTУкажите верные варианты доступа к полям производного типа.Объявлен следующий модуль module matrix integer :: A=100, B=200, C=300 integer, private :: S=9 integer, protected :: P=8 private integer :: Q=100, W=200 integer :: N=500end module matrix
Какие из перечисленных модульных переменных могут быть использованы вкачестве границ размещаемых массивов в вызывающей головной программе?
Выберите допустимые объявления модульных переменных для данного варианта программы module mod_Aimplicit none! здесь следует объявить модульные переменные public init_solver contains subroutine init_solver(val) real val x=val*1.0E-10 end subroutine init_solverend module mod_APROGRAM prog use mod_A, Anew => A, Bnew => B implicit none Anew = Anew + 1 write(*,*) Bnew+1 call init_solver(-1.0) Anew=Bnew+1end
Используя процедуры MKL вычислите выражение . Данные находятся в файле data4.txt. В ответ введите целую часть суммы модулей мнимой части полученного вектора.
Объявлены следующие типы и переменные. type grid integer adr real alfa real beta end type grid type, extends (grid) :: flow integer coord real dist real param end type flow type regime type (flow) flw real, allocatable :: ux(:,:,:), uy(:,:,:), uz(:,:,:) real R1, R2, R3 end type regime class(*), pointer :: polym class(regime), pointer :: pol_reg type(flow), target :: pol_flw
Какие справедливы прикрепления ссылок ?
Используя процедуры MKL, вычислите Евклидову норму вектора . Данные находятся в файле data14.txt. В ответ введите целую часть результата.
Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.
Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. module mod_E interface point module procedure pnt1, pnt2, pnt3 end interfacecontains logical function pnt1(x,y) integer x,y pnt1=x+y<1000 end function pnt1 real function pnt2(x,y) real x real y pnt2=x+y end function pnt2 real function pnt3(x,y) real y real x pnt3=x*y+x**y end function pnt3end module mod_E
Для типа point выберите правильный код финальной процедуры DeletePointmodule flowinteger, private :: INDEX type point integer x,y,z integer color logical stat contains final :: DeletePoint end type point CONTAINS ... subroutine InitFlow() INDEX=0 end subroutine InitFlowend module flow
Какой раздел библиотеки Intel ® Math Kernel Library содержит процедуры, которые выполняют тригонометрические функции над векторам ?
Напишите имя подпрограммы (синтаксис Fortran 95), которая решает матричное уравнение , где - верхняя треугольная матрица, и прямоугольные матрицы.
Используя процедуры MKL, вычислите произведение , где - прямоугольная матрица,-квадратная матрица. Данные находятся в файле data30.txt (матрицы и записаны по строкам). В ответ введите целое значение от суммы элементов матрицы .
Используя процедуры MKL вычислите скалярное произведение двух векторов и . Данные находятся в файлеdata8.txt. В ответ введите целую часть результата.
Какие имена являются процедуры привязанными к типу по имени в следующем фрагменте программы ? use graph type(plot) PLT, PLTA, PLTB ... call PLT.Create(10,10,200,200) PLT=.INVERSE.PLT write(*,*) PLTA.xcenter write(*,*) PLT.Radius() call VerifyPlot(PLTB.coords) write(*,*) finish(PLTA.start()) PLT=PLTA.UNION.PLTB ...
Укажите параметр компиляции, который управляет уровнями диагностики автоматического распараллеливания
Какие функции используются в выражении res=sin(2.0)*cos(2.0) module mod_F contains real function sin(x) sin=sqrt(sqrt(sqrt(x))) end function sin real function cos(x) cos=x**2.0**2.0 end function cosend module mod_FPROGRAM prog use mod_F, only : cos implicit none real res res=sin(2.0)*cos(1.0) end
Даны два типа type person character(64) name character(64) lastname end type person type robot character(32) mech integer(8) period end type robot
Создайте тип office, которыйнаследует тип person содержит поле типа robot, в виде одномерного динамического массива содержит поле типа character(64), являющееся ссылкой
В ответ введите размер в байтах переменной типа office
Объявлен модуль и головная программа module matrix real :: A=1000 real, private :: B=3000 real, protected :: C=5000 integer, public :: D=50 integer, protected :: F=70end module matrixPROGRAM prog use matrix, only : D, F, A implicit none real :: C=5000, B=10 ...
Какие из вариантов выражений допустимы в головной программе ?
Объявлен следующий модуль module matrix public integer :: A=100, B=200, C=300 complex, private :: S=9 integer, protected :: P=8 integer :: Q=100, W=200 integer, private :: N=500end module matrix
Какие из перечисленных модульных переменных могут быть использованы вкачестве границ размещаемых массивов в вызывающей головной программе?
Объявлен модуль и головная программа module matrix real, public :: A=1.6 real, protected :: B=5.8 real, private :: C=1.0E+10 integer, protected :: X=50 integer, private :: Y=70end module matrixPROGRAM prog use matrix, only : X, BN => B implicit none real :: C=5000, B=10 integer :: Y=800 ...
Какие из вариантов выражений допустимы в головной программе ?
Выберите допустимые объявления модульных переменных для данного варианта программы module mod_Aimplicit none! здесь следует объявить модульные переменные public init_solver contains subroutine init_solver(val) real val B=val*A end subroutine init_solverend module mod_APROGRAM prog use mod_A, Anew => A, Xnew => X implicit none Xnew=2.0 write(*,*) B+Anew+Xnew call init_solver(0.0)end
Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру init из модуля B module mod_A contains subroutine init write(*,*) "Initializing A" end subroutine initend module mod_Amodule mod_B contains subroutine init write(*,*) "Initializing B" end subroutine initend module mod_BPROGRAM prog use mod_A use mod_B implicit none call init() ! вызываем процедуру из модуля Bend
Какие функции используются в выражении res=sin(2.0)*cos(2.0) module mod_F contains real function sin(x) sin=sqrt(sqrt(sqrt(x))) end function sin real function cos(x) cos=x**2.0**2.0 end function cosend module mod_FPROGRAM prog use mod_F implicit none real res res=sin(2.0)*cos(1.0) end
Модульmodule mod_1 type plot integer x1,y1,x2,y2 integer color(255) end type plot type indicator type (plot) plt logical, private :: free character(4) date end type indicator type card type (indicator) indic integer fparam integer sparam end type cardend module mod_1
используется в головной программе.
Объявлена переменная
type(card) cdУкажите верные варианты доступа к полям производного типа.В головной программе используется модуль peoples, который содержит только тип person и модульную процедуру PrintInfo. Головная программа использует модуль peoples.В головной программе объявлена переменная type (person) PS.
Укажите верное описание типа person и процедуры PrintInfo, чтобы при вызове call PS.PrintInfo() из головной программы, отображалась информация, содержащаяся в полях переменной PS.
В приведенном фрагменте программы перечислите имена пользовательских операций. use math type (matrix) MTR, MTR1, MTR2 type (set) S1, S2, S3 ... call MTR.Create(Mi,Mj) MTR = MTR1 + MTR2 * (MTR.Inverse()) S2 = S1.CROSS.S3 call MTR1.Transpose() det = MTR1.determinant ... S1 = S2.UNION.S3 write(*,*) S1.value(1:100:2) ...
Перечислите возможности Intel Parallel Studio, Intel Visual Fortran для создания параллельных программ.
Чему равна верхняя граница третьего измерения coarray-переменной CF, если caf-программа скомпилирована для восьмиядерного процессора и в настройках проекта указано значение Coarray Images = 64. CoArray-переменная CF, объявлена как type (plot) CF [2,-1,2:*]
Используя процедуры MKL вычислите скалярное произведение двух векторов и . Данные находятся в файле data10.txt. В ответ введите целую часть результата.
Используя процедуры MKL, вычислите Евклидову норму вектора . Данные находятся в файле data11.txt. В ответ введите целую часть результата.
Используя процедуры MKL, вычислите произведение , где - треугольная квадратная матрица,-квадратная матрица. Данные находятся в файле data23.txt (матрицы и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .
Используя процедуры MKL, вычислите произведение , где - прямоугольная матрица,-квадратная матрица. Данные находятся в файле data27.txt (матрицы и записаны по строкам). В ответ введите целое значение от суммы элементов матрицы .
Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. module mod_E interface point module procedure pnt1, pnt2, pnt3 end interfacecontains real function pnt1(x,y) real x integer y pnt1=x+y end function pnt1 real function pnt2(x,y) integer x,y pnt2=x+y end function pnt2 character function pnt3(x,y) real x integer y pnt3=achar(mod(int(x),20)*mod(y,2)) end function pnt3end module mod_E
Используя процедуры MKL вычислите выражение . Данные находятся в файле data5.txt. В ответ введите целую часть суммы модулей полученного вектора.
Описан модуль, который подключен к головной программе module mod_1 integer, protected :: A=1,B=1,C=1 integer, private :: D, E private SetA public F, init contains subroutine SetA(X) integer X A=X-1 end subroutine SetA subroutine init_D_E(x,y) integer x,y D=X*10; E=Y*2; call SetA(0) end subroutine init_D_E integer function F F=A+D+E end function Fend module mod_1
Какой результат вернет функция F после вызова процедуры init_D_E(4,5) в головной программе ?
В следующем фрагменте программы, укажите имена перегруженных процедур и операций. use flow type (grid) GRD type (velocity) VX, VY, VZ ... GRID.Init() call GRD.Add(VX) call GRD.Add(VY,VZ) call GRD.Build(X1=0.0,Y1=0.0,X2=2.0,Y2=1.0) write(1,*) VX + VY, VX - VZ ... call GRD.Draw() ... call VX.VectorField(GRD)
Объявлены следующие типы и переменные. type cell real next real prev logical stat end type cell type object integer code real dist real radius end type object type grid type (object) object type (cell) cell integer xa,xb,ya,yb end type grid class (*), pointer :: polym class (cell), pointer :: ptc type (grid), target :: ptg
Какие справедливы прикрепления ссылок ?
Объявлен модуль и головная программа module matrix real, private :: A=1.6 real, public :: B=5.8 real, protected :: C=1.0E+10 private integer :: X=50 integer :: Y=70end module matrixPROGRAM prog use matrix, only : BNEW => B implicit none real :: C=5000, B=10 integer :: Y=800 ...
Какие из вариантов выражений допустимы в головной программе ?
Дан модуль, который используется в головной программеmodule mod_1 type maps integer x,y integer color logical, private :: status end type maps type, extends (maps) :: e_maps integer segment character, private :: code end type e_mapsend module mod_1
В головной программе объявлена переменная
type (e_maps) EMУкажите верные варианты доступа к полям производного типа из головной программы.Описан модуль, который подключен к головной программе module mod_1 integer, private :: A,B,C private SetA public F, init contains subroutine SetA(X) integer X A=X+1 end subroutine SetA subroutine init() call SetA(500); B=20; C=10 end subroutine integer function F F=A+B+C end function Fend module mod_1
Какой результат вернет функция F после вызова процедуры init в головной программе ?
Напишите имя подпрограммы (синтаксис Fortran 95), которая вычисляет матрично-векторное произведение , где -матрица общего вида, и векторы, и числа.
Используя процедуры MKL, вычислите произведение , где - треугольная квадратная матрица,-квадратная матрица. Данные находятся в файле data22.txt (матрицы и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .
Выберите допустимые объявления модульных переменных для данного варианта программы module mod_Aimplicit none! здесь следует объявить модульные переменные public init_solver contains subroutine init_solver(val) real val x=val*sin(val)+A end subroutine init_solverend module mod_APROGRAM prog use mod_A, Anew => A, Bnew => B implicit none Bnew=1+Anew write(*,*) Bnew+Anew+X call init_solver(-1.0)end
В каких разделах "Свойства проекта" указывается количество байт отводимых для хранения целых данных по умолчанию?
Данная программа компилируется с ошибкой. Какие варианты изменений в программе можно выполнить, чтобы из головной программы вызвать процедуру init из модуля B module mod_A contains subroutine init write(*,*) "Initializing A" end subroutine initend module mod_Amodule mod_B contains subroutine init write(*,*) "Initializing B" end subroutine initend module mod_BPROGRAM prog use mod_A use mod_B implicit none call init() ! вызываем процедуру из модуля Bend
Модульmodule mod_1 type region integer x1,y1,x2,y2 end type region type blk logical st(3) character(5), private :: name end type blk type NewType type (region) reg type (blk) bee end type NewTypeend module mod_1
используется в головной программе.
Описан массив
type (NewType) matrix(10,10,100)Укажите верные варианты инициализации элемента matrix(1:5:2,:,20)В головной программе используется модуль farm, который содержит только тип animal и модульную процедуру PrintTitle. Головная программа использует модуль farm.В головной программе объявлена переменная type (animal) AN.
Укажите верное описание типа animal и процедуры PrintTitle, для организации вызова call AN.PrintTitle() из головной программы.
Даны два типа описанных в модуле hydromodule hydro type point real(8) x real(8) y end type point type, extends (point) :: expoint real(16), allocatable :: x1,y1,x2,y2 character(8) code end type expoint...end module hydro
В тип expoint добавляются две модульные процедуры procA и procB. Процедуры не имеют формальных параметров. На сколько изменится размер в байтах переменной типа expoint после добавления процедур ?
Используя процедуры MKL вычислите скалярное произведение двух векторов и . Данные находятся в файле data9.txt. В ответ введите целую часть результата.
Используя процедуры MKL, вычислите Евклидову норму вектора . Данные находятся в файле data12.txt. В ответ введите целую часть результата.
Используя процедуры MKL, вычислите произведение , где - треугольная квадратная матрица,-квадратная матрица. Данные находятся в файле data24.txtt (матрицы и записаны по строкам). В ответ введите целую часть суммы модулей элементов главной диагонали матрицы .
Укажите функцию, которая позволит определить количество байт памяти отведенное под coarray-переменную?
Используя процедуры MKL, вычислите произведение , где - квадратная матрица, -вектор. Данные находятся в файле data18.txt (матрица записана по строкам). В ответ введите номер минимального по модулю элемента вектора .
Какие функции используются в выражении res=sin(2.0)*cos(2.0) module mod_F contains real function sin(x) sin=sqrt(sqrt(sqrt(x))) end function sin real function cos(x) cos=x**2.0**2.0 end function cosend module mod_FPROGRAM prog use mod_F, only : sin, cos implicit none real res res=sin(2.0)*cos(1.0) end
В головной программе используется модуль flow. Объявлена переменная PT типа point. Какие из процедур в типе point могут изменить приватную часть переменной PT ?module flow type point integer x integer y real, private :: cp contains procedure, nopass :: proc1 procedure proc2 procedure, pass :: proc3 procedure, nopass :: proc4 procedure proc5 procedure show end type point contains subroutine proc1(pt,val) type(point) pt real val pt.cp = val end subroutine proc1 subroutine proc2(pt) class(point) pt pt.cp=real(pt.x+pt.y) end subroutine proc2 subroutine proc3(pt) class(point) pt integer tmp tmp=pt.x; pt.x=pt.y; pt.y=tmp end subroutine proc3 subroutine proc4(pt) type(point) pt if (pt.cp<=0) write(*,*) "ERROR" end subroutine proc4 subroutine proc5(pt,M,N,S) class(point) pt integer M,N real, optional :: S pt.x=pt.x+N pt.y=pt.y+M if (present(S)) call random_number(pt.cp) end subroutine proc5end module flow
Напишите имя функции (синтаксис Fortran 95), которая вычисляет выражение , где и векторы - векторы типа complex.
Используя процедуры MKL, вычислите произведение , где - квадратная матрица, -вектор. Данные находятся в файле data20.txt (матрица записана по строкам). В ответ введите номер минимального по модулю элемента вектора .
Какое значение будет присвоено переменной k в результате выполнения оператора select type в следующем фрагменте программы ?type point integer x, yend type pointtype, extends(point) :: point_ex integer zend type point_extype, extends(point_ex) :: point_phys real vx real tmend type point_phystype, extends(point_phys) :: point_mech character(32) nameend type point_mechclass (point_ex), pointer :: polyclass (point), target, allocatable :: ptclass (point_ex), target, allocatable :: pt_exclass (point_phys), target, allocatable :: pt_phclass (point_mech), target, allocatable :: pt_mhinteger kallocate (pt, source=point(1,2))allocate (pt_ex, source=point_ex(3,4,5))allocate (pt_ph, source=point_phys(6,7,8,0.0,9.0))allocate (pt_mh, source=point_mech(9,10,11,0.0,0.0,"ABC"))poly=>pt_mh select type (poly) class is (point_ex); k=poly.x class is (point_phys); k=poly.z class default; k=0 end select ...
Имеется ли конфликт процедур при задании перегруженной процедуры. Если да, то укажите, какие именно. module mod_E interface point module procedure pnt1, pnt2, pnt3 end interfacecontains logical function pnt1(x,y) real x,y pnt1=x+y<1000 end function pnt1 real function pnt2(x,y) real x real y pnt2=x+y end function pnt2 real function pnt3(x,y) real y real x pnt3=x*y+x**y end function pnt3end module mod_E
Какие функции используются в выражении res=sin(2.0)*cos(2.0) module mod_F contains real function sin(x) sin=sqrt(sqrt(sqrt(x))) end function sin real function cos(x) cos=x**2.0**2.0 end function cosend module mod_FPROGRAM prog use mod_F, only : sin implicit none real res res=sin(2.0)*cos(1.0) end
Чему равна нижняя граница второго измерения coarray-переменной CF, если caf-программа скомпилирована для восьмиядерного процессора и в настройках проекта указано значение Coarray Images = 256. CoArray-переменная CF, объявлена как type (cell) CF [2,2,3,4*]
Объявлен следующий модуль module matrix private integer :: A=100, B=200, C=300 complex, private :: S=9 integer, protected :: P=8 integer :: Q=100, W=200 integer, public :: N=500end module matrix
Какие из перечисленных модульных переменных могут быть использованыкачестве границ размещаемых массивов в вызывающей головной программе?
В головной программе используется модуль geom, который содержит только тип figure и модульную процедуру Modify. Головная программа использует модуль geom.В головной программе объявлена переменная class (figure), allocatable :: FG.
Укажите верное описание типа figure и процедуры Modify, чтобы при вызове call FG.Modify(10) из головной программы, происходило изменение поля points в переменной FG.
Дан модуль, который используется в головной программеmodule mod_1 type rectangle integer x1,y1,x2,y2 integer, private :: color character(16), private :: name = "REC_0001" end type rectangle type, extends (rectangle) :: roundrect integer r1, r2 real center end type roundrectend module mod_1
В головной программе объявлена переменная
type (roundrect) rcУкажите верные варианты доступа к полям производного типа из головной программы.