Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Другие операторы, входящие в подпрограммную–функциюСодержание книги
Поиск на нашем сайте
Подпрограммная - функция всегда начинается с оператора FUNCTION и должна заканчиваться оператором END. Между ними размещаются операторы, выполняющие вычисления. Они могут использовать имена переменных из списка аргументов, а также имена переменных, являющихся локальными переменными для данной функции-подпрограммы. Локальные переменные используются только внутри подпрограммы и не имеют никакого отношения к другим переменным из главной программы или из других подпрограмм, даже если последние имеют такие же имена. Отсутствие связи между локальными и внешними переменными,по отношению к программе, просто необходимо. Например, если используется библиотечная подпрограмма, то не нужно проверять, нет ли совпадений имен переменных главной программы и библиотечной подпрограммы. В подпрограмме-функции должен быть, по крайней мере, один оператор, трактующий имя функции как имя обычной переменной и присваивающий этой переменной значение. Это будет продемонстрировано в примере. Возврат управления в программную единицу, в точку вызова подпрограммы - функции, осуществляется оператором RETURN. Если подпрограмма - функция имеет разветвленную структуру, то каждая ветвь должна заканчиваться оператором RETURN. В последних версиях языка Фортран оператор END не только указывает на конец подпрограммы, но и действует как оператор RETURN. Поэтому оператор RETURN, стоящий перед оператором END, можно опускать. Рассмотрим программу, которая сравнивает два числа и присваивает значение большего из них переменной BIG. Выявление наибольшего из двух чисел записывается в виде подпрограммы - функции с именем BIG и двумя аргументами, которые являются именами сравниваемых переменных.
FUNCTION BIG (А, В) BIG = A IF (B.GT.A) BIG =B END
Здесь следует отметить чрезвычайно важное обстоятельство: для аргументов подпрограммы - функции А и В в памяти используются только для того, чтобы указать вызывающей программной единице те точки в подпрограмме, в которые следует передать информацию, необходимую для вычислении. Имена аргументов, указанные в определении функции, называются формальными параметрами. Значения аргументов, передаваемые подпрограмме – функции, при ее вызове, называются фактическими параметрами.
Обращение к подпрограмме – функции Имена подпрограмм - функций используются точно так же, как и имена стандартных функций. Применение подпрограмм - функций можно показать на примере программы, в которой предусмотрен ввод четырех чисел, вычисление с помощью функции BIG наибольшего из них и вывод его на печать.
PROGRAM CHIS * ПРОГРАММА, ИСПОЛЬЗУЮЩАЯ ФУНКЦИЮ BIG READ (5, *) А, В, С, D Х = BIG (А, В) Y = BIG (С, D) Z = BIG (X, Y) PRINT *, ’ ВВЕДЕНЫ ЧЕТЫРЕ ЧИСЛА’, А, В, С, D PRINT *, ’ НАИБОЛЬШЕЕ ИЗ НИХ Z= ', Z END
* ОПРЕДЕЛЕНИЕ ФУНКЦИИ BIG FUNCTION BIG (A, B) BIG=A IF (В. GT. A) BIG =В END
При первом обращении к функции BIG сравниваютсязначения А и В.Несмотря на то, что используются одни и те же имена для фактических параметров в главной программе и для формальных параметров в определении функции, формальные и фактические параметры рассматриваются как совершенно разные объекты. Во втором и третьем вызове функции BIG фактическими параметрами являются (С, D) и (X, Y), которые имеют имена, отличные от имени формальных параметров. При использовании функции BIG происходит следующее. Сначала вычисляются фактические параметры. Если фактический параметр - константа, то эта константа передается в подпрограмму - функцию, если фактический параметр - переменная, то в подпрограмму - функцию передается ее значение. При этом первый по порядку формальный параметр получает значение первого фактического параметра. Аналогично значение второго фактического параметра связывается со вторым формальным параметром и т.д. Поскольку формальные параметры функции BIG вещественны, то значения фактических параметров также должны быть вещественными, иначе компьютер выдает сообщение об ошибке. После того, как значения формальных параметров стали определенны, далее операторами подпрограммы вычисляется требуемое значение. Это значение присваивается имени BIG, которое затем "подставляется" вместо имени BIG и фактических аргументов в оператор главной программы, который вызвал подпрограмму - функцию BIG. На этом связь между фактическими и формальными параметрами заканчивается. Единственное, что требовалось подпрограмме - функции BIG от фактического параметра - это его вещественное значение. Кроме соответствия типов формальных и фактических параметров, программист должен следить за тем, чтобы число фактических параметров равнялось числу формальных параметров. Поэтому в операторе Q = BIG(3, ХО+BIG(X, Y, Z)) оба вызова функции BIG недопустимы. Первый вызов недопустим потому, что первый аргумент целый, а второй из-за того, что число фактических аргументов равно трем. Однако в операторе R = BIG(2.8, 3.5) + BIG(A*В, SQRT(С)) + BIG(X(I, J), Y(2)) все три вызова допустимы. Здесь следует обратить внимание на то, что в качестве фактических параметров используются элементы вещественных массивов и арифметические выражения, т.е. фактическим параметром подпрограммы может быть любая конструкция Фортрана, сводящаяся к одному значению.
Примеры решения заданий к лабораторной работе № 5 Пример 1: Составить программу вычисления суммы факториалов всех нечетных целых чисел от 1 до 11 с использованием подпрограммы FUNCTION вычисления факториала целого аргумента n по формуле n! = 1·2·…·n. Подпрограмме присвоим имя FACT, тип функции должен быть целочисленным. В основной программе обращение к подпрограмме осуществляется внутри цикла с параметром n, изменяющимся от 1 до 11 с шагом 2. Программа имеет вид:
подпрограмма основная программа
Здесь имена формального и фактического параметров подпрограммы SUM совпадают, в общем случае они могут быть различными, но соответствующими по типам. Пример 2. Составить программу вычисления среднего арифметического элементов массива A (50) и B (75) и вывода на печать значения большего из средних. Для вычислений использовать подпрограмму. Подпрограмма должна вычислять только один результат- среднее арифметическое элементов формального массива X, состоящего из N элементов, поэтому ее можно оформить в виде подпрограммы FUNCTION с именем, например SR и аргументами X, N. Значение результата будет присвоено имени функции -переменной SR внутри подпрограммы. Формальный массив X должен иметь регулируемый размер N, поэтому в операторе DIMENSION максимальное значение индекса необходимо задать переменной N. Обращение к подпрограмме SR в вызывающей программе производится дважды. В первый раз при обращении с помощью указателя SR (А, 50) формальный массив X получает размер 50 и совмещается с фактическим массивом A, с элементами которого и проводятся все вычисления, предусмотренные в подпрограмме. При обращении к подпрограмме с помощью указателя SR (В, 75) эти же действия выполняются с массивом B, состоящим из 75 элементов. Программа решения:
подпрограмма основная программа
Задания на тему: составление подпрограмм типа FUNCTION. Составить тексты подпрограмм иблок-схемы к заданиям 1), 2). (смотри на стр. 65 возможные варианты решений)
* 1) – FUNCTION задание–1) * Составить подпрограмму-функцию FELIX (A, B, C, D, EPS)для нахождения кор- * ня уравнения X*A**X-B=0 с заданной точностью EPS, если известно, что он * находится в интервале (X1,X2).
PROGRAM P1 PRINT*, 'введ. переменные A,B, концы отрезка C, D, EPS' READ (5,*) A, B, C, D, EPS YKOR = FELIX (A, B, C, D, EPS) PRINT*,'КОРЕНЬ УРAВНЕНИЯ' PRINT 8, YKOR 8 FORMAT (/, 5X, ' YKOR= ', F10.5) END
* 2) – FUNCTION задание–2) * Пользуясь разложением в ряд * SIN(X)=x-(x**3/3!)+(x**5/5!)-(x**7/7!)+.....(-1**(n-1))*(x**(2*n-1))/ * (2*n-1)!+...., составить подпрограмму-функциюSINUS(X, EPS) для вычисления * значений SIN(X) с заданной точностью EPS.
PROGRAM PSIN PRINT*, ' ввести значение Х, а также точность (погрешность) EPS ' READ (5,*) X,EPS P=SINUS(X, EPS) PRINT 1,P 1 FORMAT (//, 5X,' SIN(X)= ', F10.8) END РАЗДЕЛ VI. Лабораторная работа № 6
|
||||
Последнее изменение этой страницы: 2016-04-07; просмотров: 423; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.16.71 (0.008 с.) |