- •«Информатика»
- •21. Оператор format
- •Спецификация X
- •Спецификация I
- •Правило:
- •Разделители
- •Спецификация f
- •Особенности набора числовых данных при вводе информации
- •Использование повторителей в операторе format
- •Примечание
- •Вывод по спецификации Fw.D
- •Ввод по спецификации Ew.D
- •Вывод информации по спецификации Еw.D
- •Примечание: При бесформатном выводе данные автоматически выводятся по спецификации е15.7. Ввод и вывод информации по спецификации Gw.D
- •22. Подпрограммы
- •23. Оператор-функция
- •24. Подпрограмма function
- •Правило:
- •Правило:
- •Мини задача 1:
- •If(y1(1).Gt.Y1(2)) write(*,*)'Максимум на левой границе
- •If(y1(100).Gt.Y1(99)) write(*,*)'Максимум на правой границе
- •25. Подпрограмма subroutine.
- •Примечания:
- •26. Способы передачи данных в подпрограмму.
- •If (логическое выражение 1) return 1
- •If (логическое выражение 2) return 2
- •Примечание:
- •27. Передача данных посредством оператора common
- •Правило:
- •28. Использование библиотек стандартных программ (бсп)
- •If(ier.Eq.1) write (6,*)’Нет решения. Проверьте исходные данные’
- •If(ier.Eq.2) write (6,*)’Неверное количество уравнений’
- •29. Графическое моделирование функции
27. Передача данных посредством оператора common
Оператор COMMONопределяет общий блок памяти для головной программы и подпрограммы. Его лучше использовать для передачи в подпрограмму массивов. Кроме того, черезCOMMONодин большой массив головной программы в подпрограмме можно представить как несколько массивов меньшей длины, или несколько массивов головной программы в подпрограмме можно объединить в один массив.
Пример:
Головная программа:Подпрограмма:
DIMENSION A(10),B(20),C(30),Y(10) SUBROUTINE SUB2(Y,N)
COMMON A,B,C DIMENSION Y(N),C(10)
… COMMON A(10),D(10),C,E(10,3)
CALL SUB2(Y,10)
В примере массив А передаётся в подпрограмму один к одному, а массив Dподпрограммы будет занимать одно и тоже место в оперативной памяти ЭВМ, что и первых 10 элементов массива В в головной программе.
Массив С в подпрограмме из 10 элементов (никакого отношения к С(10) головной программы не имеет) будет занимать память с В(11) по В(20) головной программы. В головной программе массив В содержит 20 элементов и в блоке COMMONголовной программы он будет занимать 20 ячеек памяти. В подпрограмме этому массиву будут соответствовать массивыD(10) и С(10).
Одномерный массив С(30) головной программы мы представляем в подпрограмме как двухмерный массив Е(10,3). В данном примере первый столбец Е будет содержать первые 10 элементов массива С(30).
Оператор COMMONдолжен быть как в головной программе, так и в подпрограмме. Различают общий блокCOMMONи помеченный блокCOMMON. В одной программной единице может быть один общий и несколько помеченных блоковCOMMON. В общем виде записывается:
COMMON список
COMMON /метка/ список
Пример:
COMMON /МЕТ1/ А,Х,В(20)
В COMMONможет стоять размерность массива, но если массивописан в COMMON, то егоне нужно описывать в DIMENSION.
Правило:
Список оператора COMMON головной программы должен соответствовать списку подпрограммы по следующим критериям:
по очерёдности следования
по типу данных.
Задача:
Получить двухмерный массив в головной программе Ci,j=Ai*Bjи отсортировать его по возрастанию, расположив элементы по столбцам. Сортировку произвести в подпрограмме. Передачу данных осуществлять при помощи оператораCOMMON.
С Головная программа
DIMENSION A(5),B(6),C(5,6)
COMMON C
В COMMON помещён массив С, который в памяти ЭВМ расположен по столбцам.
READ (5,*) A,B
DO 1 I=1,5
DO 1 J=1,6
1 C(I,J)=A(I)*B(J)
CALL SUB4
Управление передаётся подпрограмме. Список параметров отсутствует. Передача данных осуществляется посредством оператора COMMON.
После выполнения подпрограммы по оператору RETURN управление будет передано обратно в головную программу и далее будет выполняться оператор, следующий после CALL
С Вывод отсортированного массива
DO 3 I=1,5
3 WRITE (6,*) (C(I,J),J=1,6)
PAUSE
STOP
END
С Подпрограмма
SUBROUTINE SUB4
COMMON X(30)
Массив Х(30) в подпрограмме будет соответствовать массиву С(5,6) головной программы и элементы этого массива будут располагаться по столбцам массива С.
С Сортировка одномерного массива
DO 2 I=1,29
… (см. сортировку)
CONTINUE
RETURN
END
Массив Х(30) занимает ту же память, что и С(5,6). Первые 5 элементов Х(30) – это первый столбец в С(5,6).
Если проведём сортировку одномерного массива, то после выхода из подпрограммы по RETURNмассив С(5,6) будет содержать те же численные данные, что и Х(30), отсортированные по столбцам.