01 (537404), страница 10

Файл №537404 01 (Метода по фортрану) 10 страница01 (537404) страница 102015-07-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 10)

18. Построчно заполнить массив А (66 элементов) ниже побочной диагонали значениями, элементов массива R из 15-ти элементов.

19. Определить минимальные нечетные значения в строках целочисленного массива X (45 элементов) и записать их в одномерный массив Z.

20. Разместить одномерный массив R из 12-ти элементов в двумерном массиве G (43 элементов) по строкам, считывая элементы массива R в обратным порядке.

21. Определить суммы и произведения элементов главной и побочной диагоналей матрицы {aij} (i,j=1,4) и записать результат в одномерный массив B из 4-х элементов.

22. Вычислить средние арифметические значения элементов строк массива D (44 элементов) и записать их в одномерный массив T.

23. Определить средние геометрические значения элементов столбцов массива Z(44 элементов) и записать их в одномерный массив X.

24. Составить программу умножения матрицы {aij} (i,j=1,4) на вектор {xi} (i=1,4).

25. Составить программу разложения матрицы {aij} (i,j=1,3) на симметричную и кососимметричную составляющие.

26. Заполнить одномерный массив D из 10-ти элементов значениями элементов верхнего треугольника матрицы {aij} (i,j=1,4), для которых выполняется условие .

27. Дана квадратная матрица А пятого порядка. Вычислить диагональные элементы матрицы В, равной А2, и записать их в одномерный массив.

28. Переписать элементы матрицы {aij} (i,j=1,4), расположенные в шахматном порядке, начиная с а11, в одномерный массив В из 8-ми элементов.

29. Вычислить произведение матрицы А четвертого порядка на ее транспонированную матрицу и поместить элементы побочной диагонали в одномерный массив В.

30. Проверить наличие в двумерном массиве T (43 элементов) значений, указанных в одномерном массиве R из 3-х элементов. Найденные значения вывести на печать.

Л А Б О Р А Т О Р Н А Я Р А Б О Т А № 7

ПОДПРОГРАММЫ

С п р а в о ч н а я и н ф о р м а ц и я

Все рассмотренные до настоящего момента программы были организованы в виде единой программы, структура которой отражала алгоритм решения задачи. Однако, на Фортране программа может состоять из одной или нескольких программных единиц, под которыми понимают совокупность команд, задающих необходимые действия над данными для получения требуемого результата. Это обусловлено тем, что программы часто могут иметь многократно повторяющиеся последовательности команд, используемые для обработки различных данных. Поэтому составление программы существенно упрощается, если такие блоки команд оформляются как независимые программные единицы и к ним обращаются требуемое количество раз с разными данными. При этом программа, реализующая общий алгоритм решения задачи, называется главной, а выделенные независимые программные единицы – подпрограммами.

Для выделения многократно используемых блоков команд в Фортране предусматриваются оператор-функция, подпрограмма-функция и подпрограмма общего вида. Для выбора между ними следует придерживаться следующих рекомендаций:

  • если многократно повторяющиеся вычисления описываются одним арифметическим выражением, то используется оператор-функция, в противном случае – одна из подпрограмм;

  • если результатом повторяющихся вычислений является одно единственное значение, то используется подпрограмма-функция, в остальных случаях - подпрограмма общего вида.

***Замечание. Программные единицы любого типа не должны обращаться сами к себе прямо или косвенно.

Оператор-функция – это определение некоторой математической функции, часто используемой в данной программной единице. Он предназначен для использования только в той программной единице, где описан. Определение оператора-функции задается в виде:

имя ([параметр_1 [, параметр_2]...]) = выражение,

где имя

– имя оператора-функции;

параметр_i

– формальные параметры (i=1, 2, ...);

выражение

– арифметическое выражение, содержащее описание математической функции через формальные параметры.

Результат вычисления оператора-функции передается через его имя, поэтому оно должно иметь тип, который определяется по правилам объявления типа для переменных. Имя оператора-функции нельзя использовать для описания других объектов в данной программной единице.

Под формальными параметрами понимают имена фиктивных переменных, которым в памяти ЭВМ не отводится место. Они используются лишь для записи часто встречающейся математической функции в виде арифметического выражения. Формальные параметры должны следовать за именем оператора-функции, разделяться запятыми и подчиняться следующим требованиям:

  • не допускается повторение имен формальных параметров;

  • в качестве формального параметра нельзя использовать переменную с индексом (элемент массива);

  • одни и те же имена формальных параметров могут быть использованы в описаниях нескольких операторов-функций.

Все определения операторов-функций в данной программной единице должны предшествовать выполняемым операторам.

Обращение к оператору-функции выполняется путем указания его имени непосредственно в арифметическом выражении, как к библиотечным функциям. При этом в скобках после имени оператора-функции указываются так называемые фактические параметры – имена переменных, константы или арифметические выражения, для значений которых должна быть рассчитана функция. В данном случае важно совпадение количества, типов и порядка следования формальных и подставляемых на их место фактических параметров.

Выполнение оператора-функции можно описать следующей последовательностью действий:

  • вычисляются выражения, используемые в качестве фактических параметров;

  • их значения приводятся в соответствие со списком формальных параметров и используются для вычисления указанного арифметического выражения;

  • тип результата вычисления арифметического выражения определяется по общим правилам, а затем преобразуется к типу, соответствующему имени оператора-функции;

  • результат возвращается в выражение программной единицы, вызвавшее оператор-функцию.

Работу с оператором-функцией можно продемонстрировать на следующем примере: написать программу, позволяющую вычислить и распечатать таблицы значений функций:

на отрезке [0, 5] с шагом 0,5 при a = 2, b = -8 и c = 3.

Программа, реализующая расчет указанной таблицы, имеет вид:

123456789.............................................................72 73.......80

Par(A, B, C, X) = A*X*X + B*X + C

Open(1, File = 'prog.res')

Do 2 X = 0., 5.25, 0.5

Y1 = Par(2.0, -8.0, 3.0, X**2)

Y2 = Par(2.0, -8.0, 3.0, X/2.)

Y3 = Par(2.0, -8.0, 3.0, X-1.)

2 Write(1, 1) X, Y1, Y2, Y3

1 Format(' X = ', F3.1, ' Y1 = ', F7.2, ' Y2 = ', F5.2, ' Y3 = ', F5.2)

Close(1)

End

Подпрограмма-функция по своему применению похожа на оператор-функцию, так как используется для вычисления единственного значения и вызывается непосредственно в арифметическом выражении прямым указанием своего имени. Отличия подпрограммы-функции от оператора-функции состоят в том, что она является отдельной программной единицей и для вычисления требуемой величины позволяет использовать более одного оператора. Первым оператором подпрограммы-функции должен быть оператор Function, который определяет ее имя и список формальных параметров:

[тип] Function имя [*длина] ([параметр_1 [, параметр_2]...])

где тип

– необязательный параметр, указывающий тип возвращаемого результата (Real, Integer);

имя

– имя подпрограммы-функции;

длина

– объем памяти в байтах, выделяемый для записи результата. Объявляется только совместно с параметром тип;

парметр_i

– формальные параметры (i=1, 2, ...).

Тип результата, возвращаемого подпрограммой-функцией, определяется типом (явно или по умолчанию) имени функции. Например:

Function Prog(A, B)

– возвращает вещественный результат длиной в четыре байта;

Integer Function Prog(A, B)

– возвращает целый результат длиной в четыре байта;

Real Function Prog*8(A, B)

– возвращает вещественный результат длиной в восемь байт.

Формальные параметры в подпрограмме могут отсутствовать, но наличие скобок в ее описании обязательно. В качестве формальных параметров могут использоваться имена переменных, массивов и внешних подпрограмм. Если в качестве формального параметра использован массив, то он должен быть описан с использованием в качестве индексов других формальных параметров.

Подпрограмма-функция должна иметь следующую структуру:

  • оператор Function;

  • группа операторов, реализующая вычислительный алгоритм;

  • оператор присваивания, в котором имени подпрограммы-функции передается значение результата вычислений;

  • оператор Return;

  • оператор End.

Например:

123456789.............................................................72 73.......80

Function Prog(A, B, C, N)

...............

Prog = Result

Return

End

Оператор End указывает на конец текста подпрограммы-функции и может быть использован в ней только один раз. Оператор Return означает логическое завершение вычислений в подпрограмме и возврат полученного значения и управления вызвавшей ее программной единице. Оператор Return может употребляться в подпрограмме несколько раз.

Обращение к подпрограмме-функции выполняется путем указания ее имени непосредственно в арифметическом выражении. При этом в скобках после имени оператора-функции указываются ее фактические параметры. В качестве фактических параметров могут использоваться выражения, имена массивов и других подпрограмм. Количество, тип и порядок следования формальных и фактических параметров должны совпадать. Фактический параметр, являющийся именем подпрограммы, должен быть описан в программной единице, вызывающей подпрограмму-функцию. Для его описания используется оператор External в форме:

External имя_подпрограммы [, ...].

Например:

123456789.............................................................72 73.......80

External Fir

An = Prog(X, A, Fir)

..........

End

Function Prog(A, B, F)

..........

Return

End

Работу с подпрограммой-функцией иллюстрирует следующий пример: написать программу для вычисления максимальных значений элементов квадратных матриц A, B и C, имеющих порядки 4, 7 и 3, соответственно. Программа будет иметь вид:

123456789.............................................................72 73.......80

Dimension A(4, 4), B(7, 7), C(3, 3)

Real Max_1, Max_2, Max_3

Open(1, File = 'prog.dat')

Open(2, File = 'prog.res')

Read(1, 1) ((A(i, j), j = 1, 4), i = 1, 4)

1 Format(9X, 4F6.2)

Read(1, 2) ((B(i, j), j = 1, 7), i = 1, 7)

2 Format(7F6.2)

Read(1, 3) ((C(i, j), j = 1, 3), i = 1, 3)

3 Format(12X, 3F6.2)

Max_1 = Poisk(4, A)

Max_2 = Poisk(7, B)

Max_3 = Poisk(3, C)

Характеристики

Тип файла
Документ
Размер
1,27 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6559
Авторов
на СтудИзбе
298
Средний доход
с одного платного файла
Обучение Подробнее