Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Подпрограммы, функции и процедуры



Подпрограмма ‑ помеченная последовательность операторов, заканчивающаяся оператором RETURN. Выполняется, когда достигнут GOSUB.

....

GOSUB aa

....

END

aa:

операторы

RETURN

Оператор RETURN осуществляет возврат к оператору, непосредственно следующему за GOSUB.

Функция может быть определена одной строкой (оператор-функция) или несколькими строками (подпрограмма-функция).

DEF FN имя [(список параметров)] = выражение (это определение оператора-функции). Здесь список параметров может включать не более 16 параметров.

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

описание переменных операторы

[EXIT DEF]

....

[FN имя = выражение ]

END DEF (это определение подпрограммы-функции).

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

DEF FNF (x,y) = x * x + y * y

a = 3: b = 4

P = FNF (a,b)

или

P = FNF (3,4)

Функция возвращает одно значение, тип которого определяется именем функции. Определение функции может располагаться в любом месте программы (обычно в начале или в конце). Например,

F = FNa (1.5)

PRINT F

DEF FNa (x)

FNa = x*x

END DEF

END

или

F = FNa (1.5)

PRINT F

END

DEF FNa (x)

FNa = x*x

END DEF

В результате будет напечатано 2.25.

Список параметров оператора-функции может включать только имена переменных.

Процедура ‑ это последовательность строк программы, расположенная между операторами SUB и END SUB и выполняемая при обращении к ней при помощи оператора CALL.

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

описание переменных

операторы

[EXIT SUB]

END SUB

Имя может содержать до 31 символа. Список параметров (не более 16) может включать имена переменных и массивов. Для массивов в скобках указывается размерность. Например, 1 ‑ для одномерного массива, 2 ‑ для двухмерного и т.д.

В обращении к процедуре за именем фактического массива следуют пустые скобки. Например,

SUB SUM (x (1), n, S)

S = 0

FOR I=1 to n

S = S + x (I)

NEXT I

END SUB

DIM A (3) A (1) = 1: A (2) = 2: A (3) = 4

CALL SUM (A (), 3, S)

S = S/3

PRINT S

END

Эта программа вычисляет среднее значение элементов массива A, процедура SUM суммирует элементы массива.

Основные отличия процедуры от подпрограммы-функции:

1 ‑ процедура не обязана возвращать значение, она не имеет типа;

2 ‑ вызывается оператором CALL, а не из выражения.

Отдельные переменные, используемые в процедуре (или подпрограмме-функции), могут быть объявлены локальными, т.е. действующими только в данной подпрограмме (оператор LOCAL), общими, т.е. действующими как в подпрограмме, так и в основной программе (оператор SHARED) и статическими, т.е. действующими в данной подпрограмме как LOCAL, но сохраняющими полученные значения до следующего обращения (оператор STATIC). По умолчанию в подпрограмме-функции переменная является SHARED, а в процедуре STATIC.

DEF FNF1

LOCAL i, S

FOR i =1 to 10

S = S + i

NEXT i

FNF1 = S

END DEF

После выхода из подпрограммы-функции переменные i и S теряют свои значения (при входе в подпрограмму всегда S = 0). Эти же имена могут использоваться в программе для обозначения других величин.

DEF FNF2

LOCAL i

SHARED S

FOR i = 1 to 10

S = S + i

NEXT i

FNF2= S

END DEF

В этом случае S сохраняет значение после выхода из подпрограммы и имеет один и тот же смысл во всех частях программы.

DEF FNF3

LOCAL i

STATIC S

FOR i = 1 to 10

S = S + i

NEXT i

FNF3= S

END DEF

В этом случае S сохраняет значение после выхода из подпрограммы до следующего обращения к ней, т.е. после первого обращения значение функции FNF3 будет 55, после второго ‑ 110 и т.д. (S нельзя изменять в основной программе).





Дата публикования: 2014-12-28; Прочитано: 239 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...