Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
W-10_Fort_68_стр_10г..doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

Раздел VI. Лабораторная работа № 6

6.1 Подпрограммы типа subr0utine

Подпрограммы типа SUBR0UTINE во многих отношениях похожи на подпрограммы типа FUNCTI0N: в обеих может присутствовать инструкция RETURN; одинаковы правила использования формальных аргументов, которые могут быть как переменными, так и массивами; оба типа подпрограмм имеют одинаково формируемые наименования. Так же, как и подпрограммы типа FUNCTION, подпрограмма типа SUBR0UTINE полностью независимы от основной программы; номера их инструкций и их переменные никак не связаны ни с другими подпрограммами (за исключением переменных, являющихся формальными аргументами), ни с основной программой. Но если подпрограмма типа FUNCTION имеет результатом одну или несколько отдельных величин, то результатом подпрограмма типа SUBROUTINE могут быть массивы чисел.

Подпрограммы типа FUNCTION вызываются в основную программу указанием наименования подпрограммы. Для вызова подпрограмм типа SUBR0UTINE из головного (либо другого) программного модуля необходима специальная инструкция CALL. Эта инструкция состоит из ключевого слова CALL, наименования подпрограммы и заключенного в скобки списка ее аргументов. Примеры использования оператора CALL :

CALL SQR (X, N)

CALL MATAD (А, В, С, М, N)

Когда в программе встречается оператор CALL, то управление передается в подпрограмму типа SUBROUTINE (с соответствующим именем), и выполняются операторы этой подпрограммы. Оператор RETURN или END в подпрограмме возвращает управление в вызывающую программную единицу на оператор, следующий непосредственно за оператором CALL.

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

Примером простейшей подпрограммы типа SUBROUTINE может быть приведенная ниже подпрограмма копирования COPIE, переписывающая группы чисел из одного массива в другой:

SUBROUTINE COPIE (А, В, N)

DIMENSION А(1000), В(1000)

D0 1 I = 1, N

1 В (I) = A (I)

2 RETURN

END

Подпрограмма COPIE рассчитана на работу с массивами, длина которых не пре­восходит 1000 элементов. Обращение к этой подпрограмме из программного модуля головной программы осуществляется инструкцией CALL COPIЕ (OLD, NEW, К), по которой формальная индексированная переменная А подпрограммы SUBROUTINE COPIE заменяется фактической индексированной переменной 0LD, формальный аргумент массив В - фактическим наименованием NEW, формальная переменная N - фактической переменной К. Результатом работы подпрограммы является массив NEW, он указан одним из аргументов в инструкции обращения CALL к подпрограмме-SUBROUTINE. Подпрограммы типа SUBR0UTINE могут содержать внутри себя инструкции CALL, вызывающие другие подпрограммы SUBROUTINE и любые другие инструкции, в которых может содержаться обращение к подпрограммам типа FUNCTION, арифметическим или библиотечным подпрограммам.

Однако, подпрограмма не может содержать обращение к самой себе ни непо­средственно, ни через серию других подпрограмм. Две подпрограммы не могут обращаться друг к другу. Это актуально и для подпрограмм типа- FUNCTION.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]