Продолжение табл. 1

Функция

Значение функции

RND

Следующее псевдослучайное число во встроенной-в-реализацию по­следовательности псевдослучайных чисел, равномерно распределен­ных в диапазоне 0 < RND < 1 (см. также п. 3.16)

SGN(X)

Алгебраический ’’знак” X: -1, если X < 0; 0, если X = 0 и +1, если X > 0

SIN(X)

Синус X, где X измеряется в радианах

SQU(X)

Неотрицательное значение квадратного корня их X; X должен быть неотрицательным

TAN(X)

Тангенс X, где X измеряется в радианах



  1. Исключения

Значение аргумента функции LOG равно нулю или отрицательное (неустранимая ошибка).

Значение аргумента функции SQR отрицательное (неустранимая ошибка).

Величина функции экспоненты или тангенса больше машинного мак­симума (значение функции должно заменяться машинным максиму­мом; вычисления продолжаются).

  1. Примечания

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

Если значение функции-экспоненты меньше машинного минимума, то реализация должна выдать сообщение о потере точности, а затем про­должать вьиисление.

Алгоритмы вычисления встроенных-функций должны быть постро­ены таким образом, чтобы переполнение, возникшее при промежуточ­ных вычислениях, не вызывало исключительной ситуации, если конеч­ное значение находится в допустимом диапазоне.

  1. Функции, определенные пользователем

    1. Общее описание

Кроме встроенных-функций, Бейсик должен предоставлять пользо­вателю возможность определения новых функций.

Общая синтаксическая форма оператора-определения-функций сле­дующая:

DEF FNx = выражение

или

DEF FNx (параметр) = выражение

где х это одна буква, а параметр — простая-числовая-переменная.

Синтакси

  1. соператор-определения-функции = DEF определяемая-числовая- функция списцк-параметров? знак-равенства арифметическое-выражение

  2. определяемая-числовая-функция = FN буква

  3. список-параметров = круглая-скобка-левая параметр круглая- скобка-правая

  4. параметр = простая-числовая-переменная

  1. Примеры

  1. DEF FNF(x) = хл4—I

DEF FNA(x) =А*Х+В

DEFFNP = 3.14159

  1. Семантика

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

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

Определение функции должно находиться в строке с меньшим номе­ром, чем первое обращение к этой функции.

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

Определение функции может ссылаться на другие уже определенные функции, но не может ссылаться на текущее определение функции. В программе функции может ссылаться на другие уже определенные функ­ции. В программе функция может быть определена не более одного ра­за.

  1. О п е р а т о р-п р и с в а и в а н и я

    1. Общее описание

Оператор-присваивания предназначен для присваивания значения выражения переменной. Общая синтаксическая форма следующая:

LET переменная = выражение

  1. Синтаксис

  1. оператор-присваивания = арифметический-оператор-присваивания текстовый-оператор-присваивания

  2. арифметический-оператор-присваивания = LET числовая-перемен- ная знак-равенства арифметическое-выражение

  3. текстовый-оператор-присваивания = LET текстовая-переменная знак-равенства текстовое-выражение

  1. Примеры

  1. LET Р = 3.14159

LET А(х, 3) = SIN(Y)*Y+I

  1. LET АД= ”АВС”

LET А Д= ВЦ

  1. Семантика

Вычисляется выражение (см. п. 3.5) и его значение присваивается пе­ременной, находящейся слева от знака равенства.

  1. Исключения

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

  1. Операторы управления

    1. Общее описание

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

Оператор-безусловного-перехода.

GO ТО номер-строки

допускает безусловную передачу управления.

Оператор-условного-перехода.

IF вырі отношение выр2 THEN номер-строки

где ”выр1” и ”выр2” - выражения, ’’отношение” - это операция от­ношения. Этот оператор позволяет выполнять условную передачу управ­ления.

Оператор-вызова-подпрограммы и оператор-возврата-из-подпрограм- мы

GOSUB номер-строки

RETURN _

позволяют вызывать подпрограммы.

Оператор-вычисляемого-перехода.

ON выражение GOTO номер строки, . . ., номер-строки позволяет передать управление строке с выбранным номером.

Оператор-останова

STOP

завершает выполнение программы.

СинтаксисСинтаксис определяется следующим образом:

  1. оператор-безусловного-перехода = GO пробел* ТО номер-строки

  2. оператор-условного-перехода = IF выражение-отношений THEN номер-строки

З Т выражение отношения = (арифметическое-выражение отношение арифметическое выражение) | (текстовое-выражение отношение-эквива- лентности текстовое выражение)

  1. отношение = отношение-эквивалентности | меньше I больше I не­меньше I не-больше

  2. отношение эквивалентности = знак-равенства | знак-неравенства

  3. не-меньше = больше знак-равенства

  4. не-больше = меньше знак-равенства

  5. не-равно = меньше больше

  6. оператор-вызова-подпрограммы = GO пробел* SUB номер-строки

  7. оператор-возврата-из-подпрограммы = RETURN

  8. оператор-вычисляемого-перехода = ON арифметическое-выраже­ние GO пробел* ТО номер-строки (запятая номер-строки) *

  9. оператор-останова = STOP

3.9.3. Примеры

  1. GO ТО 999

GOTO 999

  1. IF X > Y+83 THEN 200

9) GO SUB 100

GOSUB 100

  1. ON L + 10 GO TO 300,400, 500

  2. STOP

  3. .4. Семантика

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

Если значение выражения-отношения в операторе-условного-перехо- да — исійна, то выполнение программы будет продолжено со строки с указанным номером-строки; если значение выражения-отношения — ложь, то последовательность выполнения строк не изменяется, т.е. вы­полняется строка, идущая по порядку за строкой с оператором-условно- го-перехода.

Отношение не-больше обозначается <=. Аналогично отношение не­меньше обозначается >=. Отношение не-равно обозначается О.

Два текста считаются эквивалентными тогда и только тогда, когда они имеют одинаковую длину и содержат одинаковые последовательнос­ти символов.

Выполнение оператора-вызова-подпрограммы и оператора-возврата- из-подпрограммы может быть описано в терминах стека номеров-строк (но может быть выполнено и по-другому).

Перед выполнением первого оператора-вызова-подпрограммы в прог­рамме стек является пустым. Во время выполнения очередного операто­ра-вызова-подпрограммы номер-строки, в котором расположен опера- тор-вызова-подпрограммы, помещается в вершину стека, после чего вы­полнение программы продолжается со строки, объявленной в операторе- вызова-подпрограммы.

При выполнении каждого оператора-возврата-из-подпрограммы из вершины стека извлекается номер строки, после чего программа выпол­няется со строки, следующей за строкой с данным номером.

Не обязательно, чтобы перед окончанием программы было выпол­нено одинаковое количество операторов-ьь.эова-подпрограммы и опера- торов-возврата-из-подпрограммы.

Выражение в операторе-вычисляемого-перехода вычисляется и ок­ругляется до ближайшего целого. Это значение затем используется для выбора номера-строки из списка в операторе-вычисляемого-перехода (номера-строк в списке нумеруются слева направо, начиная с 1). Выпол­нение программы продолжается со строки с выбранным номером-стро- ки.

Все номера-строк в операторах управления должны ссылаться на конкретные строки в программе.

Оператор-останова вызывает окончание программы.

  1. .5 .Исключения

Попытка выполнения оператора-возврата-из-подпрограммы без вы­полнения до него соответствующего оператора-вызова-подпрограммы (неустранимая ошибка). .

Целое, полученное в выражении в операторе-вычисляемого-перехода, меньше единицы или больше числа элементов в списке номеров-строк (неустранимая ошибка).

  1. 0. О п е р а т о р ы цикла

  1. Общее описание

Оператор-начала-цикла и оператор-конца-цикла служат для создания цикловГрбщая синтаксическая форма операторов начала-цикла и конца- цикла следующая:

FOR V = начальное-значение ТО конечное-значение STEP шаг NEXT v

где V — простая-числовая-переменная, а начальное-значение, конеч­ное-значение и шаг суть арифметические-выражения; указание STEP шаг является необязательным. .

  1. Синтаксис

  1. цикл-с-шагом = строка-цикла тело-цикла

  2. тело-цикла = блок* строка-конца-цикла

  3. строка-цикла = номер-строки оператор-начала-цикла конец-стро- ки

  4. строка-конца-цикла = номер-строки оператор-конца-цикла конец- строки

  5. оператор-началащикла = FOR управляющая-переменная равно на­чальное-значение ТО конечное значение (STEP приращение)?

  6. управляющая-переменная = простая-числовая-переменная

  7. начальное-значение = арифметическое-выражение

  8. конечное-значение = арифметическое-выражение

  9. шаг = арифметическое-выражение

  10. оператор-конца-цикла = NEXT управляющая-переменная

  1. Примеры

  1. 100 FOR I = ITOIO

... другие блоки или строки

200 NEXT I

5) FORI = А ТО В STEP-I

10) NEXT С7

  1. Семантика

Оператор-начала-цикла и оператор-конца-цикла описываются сов­местно. Физическая последовательность операторов, включающая опера­тор-начала-цикла и все последующие операторы вплоть до первого опера- тора-конца-цикла с той же управляющей переменной, называется цик- лом-с-шагом. Циклы-с-шагом могут быть физически вложенными, т.е.1 цикл-с-шагом может содержать в себе другой цикл-с-шагом, но они не могут пересекаться, т.е. цикл-с-шагом, который содержит оператор-на­чала-цикла или оператор-конца-цикла, должен содержать весь цикл-с- шагом, начинающийся или, соответственно, кончающийся этим операто­ром.

Физически вложенные операторы не могут иметь одну и ту же управ- ляюшу ю-переменную.

При отсутствии указания STEP в операторе-начала-цикла приращение по умолчанию принимается равным +1.

В терминах других операторов можно описать действие оператора- начала-цикла и оператора-конца-цикла следующим образом:

FOR = начальное-значение ТО конечное-значение STEP шаг (блок) NEXT эквивалентно

LET ownl = конечное-значение

LET own2 = mat

LET v = начальное значение

строка I IF (v—ownI)*SGN(own2) > 0 THEN строка 2

(блок)

LET V = v+own2

GOTO строка I

.строка 2 REM

Здесь v - любая простая-числовая-переменная, ownl и own2 - пере­менные, связанные с конкретным циклом-с-шагом и не доступные прог­раммисту; строка! и строка 2 — номера-строк, связанные с конкретным циклом-с-шагом и не доступные программисту. Переменные ownl и own2 отличаются от аналогичных переменных, связанных с другими цик- лами-с-шагом.

Программа может передавать управление внутрь тела-цикла только при помощи оператора-возврата-из-подпрограммы (см. п. 3.9)

  1. Примечания

Если в цикле есть приближенные вычисления (например, действия с десятичными дробями в двоичной машине), то цикл будет выполнять­ся в диапазоне граничных значений машинной арифметики. Никаких тре­бований на приближенный результат конечной проверки не накладывает­ся. Нужно заметить, что в большинстве ординарных ситуаций, когда реа­лизованный метод вычислений усекает, а ни округляет результат, конст­рукции вида