- •«Информатика»
- •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. Графическое моделирование функции
26. Способы передачи данных в подпрограмму.
Существуют два способа передачи данных в подпрограммы:
Посредством списка формальных – фактических параметров
Посредством оператора COMMON(“общий”).
Пример первого способа:
SUBROUTINE SUB1(A,B,C,REZ1,REZ2,FUN1,FUN2,*,*)
DIMENSION C(100)
где А, В, С – исходные дынные
REZ1,REZ2 – результаты работы подпрограммы
FUN1,FUN2 – имена функций, которые передаются в подпрограмму.
В качестве имён функций могут быть имена стандартных функций (из библиотеки), а также имена подпрограмм-функций, написанные пользователем. Символ “ * ” обозначает метки, по которым происходит возврат в головную программу. Если имеется символ “ * ” в списке формальных параметров, то в теле подпрограммы должен быть оператор RETURNдля возврата.
Продолжение примера:
If (логическое выражение 1) return 1
If (логическое выражение 2) return 2
Если выполняется (истинно) логическое выражение 1, то идёт возвращение на первый символ “ * ” списка формальных параметров, если истинно логическое выражение 2 – на второй символ “ * ”.
…
…
RETURN
END
В головной программе должно идти обращение к подпрограмме SUBROUTINEи должен быть указан список фактических параметров.
Продолжение примера:
С Головная программа
EXTERNAL SIN, COS
DIMENSION C1(100)
READ(*,*)A1,B1,C1
CALL
SUB1(A1,B1,C1,RE1,RE2,SIN,COS,*25,*35)
исходные результаты имена метки
данные функций
…
…
IF(RE1.GT…)…
…
…
DO 8 J=1,N …
…
…
На метки 25 и 35 передаётся управление, когда выход из подпрограммы осуществляется по RETURN1 илиRETURN2. Передача происходит через список формальных – фактических параметров. В качестве фактических параметров могут быть имена функций, которые передаются в подпрограмму при каждом новом обращении к подпрограмме. Эти имена функций могут меняться. В подпрограмме эти имена функций могут иметь совершенно другие названия (например,FUN1,FUN2). В подпрограммах их необходимо использовать как функции.
Например:
REZ1=FUN1(A)+SQRT(FUN2(B))
Правило:
Если при обращении к подпрограмме в списке фактических параметров указано имя функции, то это имя функции должно быть описано в головной программе в операторе EXTERNAL в самом начале программы.
Пример:
EXTERNAL SIN, COS
Оператор EXTERNALотносится к операторам описания и указывает, что перечисленные в этом операторе функции являются внешними по отношению к головной программе. Это позволяет при компоновке программного модуля подключить эти внешние функции как отдельные объекты.
Примечание:
Если имена функций не будут описаны в операторе EXTERNAL, то эти функции будут восприниматься как простые переменные с соответствующими именами.
*25, *35 обозначают дополнительные точки выхода из подпрограммы. Это номера меток, на которые передаётся управление по выходу из подпрограммы с помощью RETURN1,RETURN2. В данном примере предусмотрено 3 варианта выхода из подпрограммы:
обычный – если выход осуществляется по простому оператору RETURN, то после выполнения подпрограммы выполнение передаётся оператору головной программы, следующему послеCALL;
выход из подпрограммы по оператору RETURN1 будет осуществляться по первому символу “ * ” в списке формальных параметров. Этому символу соответствует метка 25 в списке фактических параметров головной программы и по выходу из подпрограммы управление будет передано на метку 25;
по RETURN2 возврат осуществляется на метку 35 головной программы.
