Пример 2 (подпрограмма)
В подпрограмме: найти номер и значение максимального по модулю элемента одномерного массива.
В главной программе: Используя подпрограмму, найти номера и значения максимальных по модулю элементов для нескольких массивов разной длины.
Программа 2
Далее приведена подпрограмма и главная программа, в составе которой показаны интерфейс и вызовы подпрограммы.
Subroutine MaxAbs(Array, eLem, Num)
Implicit none
Real,intent(in),dimension(:)::Array ! входной массив
Real,intent(out)::eLem ! выходной: max по модулю элемент
Integer,intent(out)::Num ! выходной: номер max по модулю
Integer Len ! локальная переменная
Len = Size(Array)
... ! операторы, реализующие алгоритм подпрограммы
eLem = ... ! результирующее значение
Num = ... ! результирующее значение
End Subroutine MaxAbs
Program Sub1 ! ФИО Лаб 6 Группа. Вар.
Implicit none
Interface ! шаблон вызываемой подпрограммы
Subroutine MaxAbs(Array, eLem, Num)
Implicit none
Real,intent(in),dimension(:)::Array ! входной массив
Real,intent(out)::eLem! выходной: max по модулю элемент
Integer,intent(out)::Num ! выходной: номер max по модулю
End Subroutine MaxAbs
End Interface
Real,dimension(1:12)::B
Real,dimension(1:10)::C
Real MaxB, MaxC ! max по модулю элементы для В,C
Integer NumB, NumC ! и их порядковые номера в массивах
... ! ввод и вывод в результирующий файл массива B
Call MaxAbs(B, MaxB, NumB)
... ! вывод в результирующий файл NumB, MaxB
... ! ввод и вывод в результирующий файл массива C
Call MaxAbs(C, MaxC, NumC)
... ! вывод в результирующий файл NumC, MaxC
End Program Sub1
Результаты работы программы Sub1
Массив В
1.0 -4.0 6.0 20.0 45.0 -71.0
4.0 -17.0 .0 .0 .0 11.0
max по модулю элемент -71.0 его номер 6 в массиве B
Массив С
-122.0 .0 45.0 71.0 4.0 -17.0
.0 .0 .0 11.0
max по модулю элемент -122.0 его номер 1 в массиве C
Контрольные вопросы
1. Назовите четыре вида программных единиц в Фортране.
2. Что такое процедура? Когда целесообразно использование процедур? Сколько разновидностей процедур в Фортане?
3. Каковы основные атрибуты функции?
4. Как результат функции передается в вызывающую программу?
5. Что в программировании называют подпрограммой? Сколько разновидностей подпрограмм в Фортане?
6. Зачем подпрограмме имя? Есть ли значение, связанное с именем подпрограммы? Как передаются результаты подпрограммы в вызывающую программу?
7. Что такое формальные и фактические аргументы? Правила согласования формальных и фактических аргументов, поясните примерами.
8. Какими по назначению могут быть формальные аргументы процедуры? Приведите примеры описания назначения формальных аргументов.
9. Где и для чего пишут интерфейсы?
10. Чем процедура отличается от функции? Сравните на примере, оформив как функцию и как подпрограмму вычисление количества повторений цикла.
Дата добавления: 2016-02-13; просмотров: 631;