Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Подпрограмма ‑ помеченная последовательность операторов, заканчивающаяся оператором 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!