КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Процедуры-подпрограммы
... Enddo Enddo Endif Пример функции Процедуры-функции Структура процедуры-функции имеет вид: [ Тип ] function имя функции (список формальных параметров) [ Операторы описания ] [ Исполняемые операторы ] [ contains внутренние процедуры ] end [ function [ имя функции ]] Процедура-функция вычисляет значение заданного типа и возвращает управление в вызывающую программную единицу вместе с этим значением. Полученное значение называется возвращаемым значением. В вызывающей программе возвращаемое значение может быть присвоено переменной или подставлено в выражение. Оператор function называется заголовком функции. Тип функции, указанный в ее заголовке, является типом возвращаемого значения. Кроме того, в заголовке указывается уникальное имя функции, составленное по правилам Фортрана, и список формальных параметров в круглых скобках. Среди операторов описания должны присутствовать описания формальных параметров функции и внутренних (локальных) переменных и массивов. Среди исполняемых операторов обязательно должно определяться возвращаемое значение функции, имя которого совпадает с именем функции. Если в операторе end указано имя функции, оно должно совпадать с именем в заголовке функции. Вызов функции не требует специального оператора. Обращением к функции является имя функции и список фактических параметров в круглых скобках, например: real:: A A = имя функции (список фактических параметров) Примеры обращения к функции: y = sin(x) a = sqrt(x) + sqrt(s) Оформить в виде функции нахождение в вещественной матрице элемента с максимальным абсолютным значением. В главной программе требуется нормировать матрицу, то есть разделить все ее элементы на полученный элемент. real function Max_Abs(Array, cRows, cCols) ! заголовок функции; возвращаемое значение вещественного типа ! операторы описания: implicit none! оператор должен быть в каждой программной единице ! формальные параметры функции – массив, количество его строк и столбцов integer, intent (in):: cRows, cCols real, dimension (1:cRows,1:cCols), intent (in):: Array ! локальные переменные integer:: i, j! переменные циклов integer:: NumI, NumJ! координаты элемента матрицы ! исполняемые операторы: NumI = 1; NumJ = 1! максимальным по модулю считаем Array(1,1) do i = 1, cRows do j = 1, cColumns if (abs (Array(i,j)) > abs (Array(NumI,NumJ))) then NumI = i; NumJ = j Max_Abs = Array(NumI,NumJ)! возвращаемое значение end function Max_Abs В главной программе: implicit none! оператор должен быть в каждой программной единице integer, parameter:: cR = 6, cCol = 8 real, dimension (1:cR, 1:cCol):: Array real:: Max_Abs! описание типа возвращаемого значения функции ! фактические параметры функции Max_Abs – ! массив, число его строк и столбцов Array = Array / Max_Abs(Array, cR, cCol) Комментарии к примеру: 1) Обратите внимание на соответствие формальных и фактических параметров. Правила их соответствия будут описаны ниже. 2) Формальные параметры cRows и cColumns в процедуре-функции должны быть описаны до их использования при описании массива. 3) Переменные i, j, NumI, NumJ в процедуре-функции локальны, они недоступны за ее пределами. 4) В алгоритме функции поиск максимального по модулю элемента заменен поиском его координат в массиве. После завершения циклов найти значение элемента массива по его координатам не представляет труда. 5) В главной программе должно присутствовать описание типа возвращаемого значения функции. 6) В главной программе использована возможность деления всех элементов на одно число без построения циклов. Процедура-подпрограмма отличается от процедуры-функции тем, что она не имеет возвращаемого значения. Результаты ее работы передаются вызываемой программе через формальные параметры, либо через глобальные переменные. Структура подпрограммы имеет вид: subroutine Имя подпрограммы (список формальных параметров) [ Операторы описания ] [ Исполняемые операторы ] [ contains внутренние процедуры ] end [ subroutine [ имя подпрограммы ]] В списке формальных параметров подпрограммы перечислены входные и выходные параметры. Используя входные параметры, процедура вычисляет значения выходных параметров и возвращает управление в вызывающую программную единицу. Оператор subroutine называется заголовком подпрограммы. Тип подпрограммы не существует, так как у нее нет возвращаемого значения. В заголовке указывается уникальное имя подпрограммы, составленное по правилам Фортрана и список формальных параметров в круглых скобках. Так же, как и в функции, среди операторов описания должны присутствовать описания формальных параметров подпрограммы и внутренних (локальных) переменных и массивов. Если в операторе end указано имя подпрограммы, оно должно совпадать с именем в заголовке подпрограммы. Обращение к подпрограмме осуществляется оператором call, имеющим вид: call имя подпрограммы [(список фактических параметров)]
Дата добавления: 2014-01-06; Просмотров: 329; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |