Описание подпрограммы SUB


Формат оператора:

SUB имя [(список параметров)] [STATIC]

блок операторов

[EXIT SUB ]

END SUB

где: SUB отмечает начало подпрограммы; имя задает имя подпрограммы, которое должно быть уникально; список параметров список переменных, разделенных запятыми. Он задает число и тип аргументов, передаваемых в подпрограмму; STATIC определяет способ размещения локальных переменных в памяти; END SUB завершает определение подпрограммы; EXIT SUB возвращает управление из подпрограммы; блок операторов содержит любые операторы кроме DEF FN...END DEF, FUNCTION...END FUNCTION, SUB...END SUB, COMMON, DECLARE, DIM SHARED, OPTION BASE, TYPE...END TYPE.

Вызов процедуры SUB выполняется двумя способами:

- оператором CALL, в котором задается имя процедуры и список передаваемых аргументов, который заключается в скобки, например, CALL ProcX (A, B%);

- указанием имени процедуры и ее аргументов (скобки опускаются), например, ProcX A, B%

Если использовано ключевое слово STATIC, то все локальные переменные становятся статическими, т.е. при следующем вызове подпрограммы они не будут инициализироваться вновь.

Пример 1. Использование ключевого слова STATIC

DCL SUB NUMBER ( )

REM ИСПОЛЬЗОВАНИЕ КЛЮЧЕВОГО СЛОВА STATIC

FOR TIME %=1 to 4

CALL NUMBER

NEXT TIME %

END

SUB NUMBER STATIC

NUMBER% =NUMBER% +1

PRINT NUMBER%

END SUB

Результат: (когда слово STATIC есть):

Результат: (когда слово STATIC опущено):

Пример 2. Транспонирование квадратной матрицы.

DECLARE SUB TRM (A%() ,B%())

DEFINT A-P

INPUT n%

DIM AM(n%,n%),BM(n%,n%)

IM=1

FOR i=1TO n%

FOR j=1TO n%

AM(i,j)=IM

IM= IM+ 1

NEXT j

NEXT i

CLS

‘Вывод исходной матрицы

Print “Исходная матрица”:

FOR i=TO n%

FOR j= TO n%

Print USING “# #”; AM(i,j);

NEXT j

NEXT i

‘Транспонирование матрицы

CALL TRAM(A(),B())

Print “Транспонированная матрица :”

FOR i=1TO n%

FOR j=TO n%

Print USING “# #”; ВM(i,j);

NEXT j

NEXT i

SUB TRM(A( ),B( ) )

IK = UBOUND (A)

FOR i=1 TO IK

FOR j=1 TO IK

B(j,i)= A(i,j)

NEXT j

NEXT i

END SUB

Результат: (пусть n = 4)

Исходная матрица:

 

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

Транспонированная матрица:

1 5 9 13

2 6 10 14

3 7 11 15

4 8 12 16

 

Оператор DECLARE

Оператор DECLARE (DCL) используется для проверки числа и типа аргументов при вызове процедуры. Отсутствие оператора DECLARE вызывает ошибку компиляции, если вызов процедуры в программе встретился раньше ее описания, или процедура определена в другом модуле.

При сохранении программы в файл автоматически генерируется оператор DECLARE для каждой процедуры FUNCTION и SUB с ее именем и списком параметров в скобках.



Дата добавления: 2021-07-22; просмотров: 290;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.