END SUB

Для описания локальных переменных в процедуре применяется оператор LOCAL, например оператор LOCAL A%,B# формирует 2 локальные переменные: А% - целочисленная и B# - двойной точности.

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

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

Оператор EXIT SUB аналогичен END SUB, но может применяться в любом месте процедуры. Оператор END SUB должен быть последним оператором процедуры.

Если в процедуру нужно включить программу на Ассемблере, то

используется оператор: SUB progname INLINE.

Для вызова такой процедуры используется оператор:

CALL progname INLINE

Внутри процедуры нельзя применять операторы GOTO, GOSUB, RETURN, передающие управление за ее пределы. Описания процедур и функций не могут быть вложенными. Но внутри процедуры можно обращаться к другим процедурам и функциям.

Для вызова процедуры служит оператор CALL.

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

CALL имя (список фактических параметров)

Оператор CALL пересылает фактические параметры в процедуру

по ссылке или по значению. Возврат в основную программу выполняется автоматически в место вызова процедуры (специального оператора, как RETURN в подпрограмме пользователя не требуется).

Пример 5:

SUB WW(A,M,N,MAX)

IF A>M THEN MAX=A ELSE MAX=M

IF MAX>N THEN MAX=N

END SUB

……………………………………………..

CALL WW(18,3,6,MAX)

PRINT"MAX="MAX:END

В процедуре будет вычислено значение MAX=18.

Задача 2 Составить программу вычисления функции из задачи 1, используя процедуру пользователя.

Процедура вызывается оператором CALL, возврат в основную программу производится автоматически после выполнения процедуры.

Программа

CLS

REM программа с процедурой

INPUT "a=";a, "b=";b, "x=";x

IF a=b THEN m1

IF a>b THEN m2

REM Вычисление при b>a

n=b

CALL F(i)

Z=x*SIN(x)/F: GOTO m3

m1:REM Вычисление при a=b

n=a*x+2

CALL F(i)

Z=F: GOTO m3

m2: REM Вычисление при a>b

n=a

CALL F(i)

Z=F*b*x^2/(a^2+b^2)

m3: PRINT"Z="Z,"F="F

STOP

REM Процедура вычисления факториала

SUB F(i)

F=1

FOR i=2 TO n

F=F*i

NEXT i

END SUB

END

Контрольные вопросы

1 В каких случаях целесообразно вводить функции, подпрограммы и процедуры пользователя?

2 Что такое формальные и фактические параметры?

3 Что такое подпрограмма?

4 Какие операторы используются при обращении к подпрограмме

5 Что называется процедурой?

6 Какие операторы образуют формат процедуры?

7 Как выполняется возврат из подпрограммы и из процедуры в основную программу?

8 Что означают опции LOCAL, STATIC, SHARED в формате процедуры?


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: