ПРИЛОЖЕНИЕ С (ЧАСТЬ 2)
ЯЗЫК ПРОГРАММИРОВАНИЯ BASIC
СПРАВОЧНОЕ ПОСОБИЕ
Все числа в системе могут иметь точность 9 или 10 знаков. Наибольшее
число 10**38, а наименьшее положительное число 4*10**(-39). Числа имеют
внутреннее представление как числа с плавающей (двоичной) точкой, с выде-
лением одного байта на показатель степени "Е" (экспоненты) в интервале от
1 до 255, и четырёх байтов на мантиссу "М" в интервале от 0.5 до 1 (0.5 М1).
Это представляется числом М * 2 ** (Е-128).
Поскольку 1/2 М<1, старший значащий бит мантиссы всегда 1. Следо-
вательно, мы можем заменять его на бит, обозначающий знак:
0 - для положительного числа и
1 - для отрицательного числа.
Наименьшее целое имеет специальное представление, в котором пер-
вый байт 0, второй байт знака (0 и FF Н), а^третий и четвёртый - само число в
дополнительном коде (младшие значащие цифры в первом байте).
Числовые переменные имеют имя произвольной длины, начинающееся
с буквы и продолжающееся буквами или цифрами. Пробелы и символы уп-
равления цветом игнорируются и все буквы преобразуются к минимально
упакованному виду.
Управляющие переменные для FOR-NEXT циклов имеют имена длиной в
одну букву.
Числовые массивы имеют имена длиной в одну букву, которая может
быть такой же, как имя скалярной переменной. Эти массивы могут иметь
произвольное количество измерений и произвольный размер. Начальный
индекс Всегда 1.
Строки символов более гибкие в своей длине. Имя строковой перемен-
ной в отличии от простой переменной заканчивается символом доллара ($).
Строковые массивы также могут иметь произвольное количество изме-
рений и размер. Их имена представляют собой одну букву и следующий за
ней символ $, но не могут совпадать с именем простой строки символов.
Все строки в массивах имеют фиксированную длину, которая определя-
ется числом, задающим последнюю размерность в операторе DIM. Началь-
ный индекс 1.
Подстрока от строки может быть получена как сечение. Сечение может
быть:
а) пустым;
б) числовым выражением;
в) некоторым "числовым выражением" ТО. другим "числовым
выражением" и использоваться в:
*) строковых выражениях (сечениях) ;
••) строковых массивах переменных
(индекс 1,индекс 2,...индекс N,сечение)
или, что тоже самое,
(индекс 1,индекс 2,...индекс N) (сечение).
В случае *) строка выражения имеет значение S$. Если сечение
массива пусто, то SS считается подстрокой от самой себя.
Если сечение представляется числовым выражением со значением "М",
то результатом будет М-й символ от SS (подстрока длиной 1).
Если сечение представлено в форме в) и первое числовое выражение
имеет значение М (умалчиваемое значение 1), а второе N (умалчиваемое
значение SS), и если 1<= М <= N <= ,чем длина строки SS, то результатом
будет подстрока от SS с М-м начальным символом и N-ым конечным.
Если 0 <- N < М, то результатом будет пустая строка. В любом другом
случае выдаётся сообщение оо ошибке "3 ...
Сечение выполняется перед функцией или операцией, которая осущест-
вляется, если скобками не предписано иначе.
Подстрока может назначаться (смотри оператор LET). Если часть строки
записывается в строковый литерал, она должна удваиваться.
ФУНКЦИИ
|
имя функции |
ТИП |
ДЕЙСТВИЕ |
|
1 |
2 |
3 |
|
ABS |
число |
абсолютное значение |
|
ASC |
число |
арккосинус в радианах. Выдаёт сообщение об ошибке |
|
AND |
логическая опе- тогда тогда |
1 А , если В <> 0; 0 , если В - 0. • А$, если В <> 0; " если В - 0. |
|
ASN |
число |
арксинус в радианах. Выдаёт сообщение "А..., если X |
|
ATN |
число |
арктангенс в радианах. |
|
ATTR |
два числовых ар- |
число, двоичный код которого, представляет собой |
|
BIN |
это не двоичная функция. За BIN записывается пос- |
|
1 |
2 |
3 |
|
CHR$ |
число |
символ, чей код представим числом X. округленным |
|
CODE |
строка символов |
код первого символа в строке Х$ ( или 0. если Х$'- |
|
1 COS |
число в радианах |
косинус X. |
|
EXP |
число |
Е в степени X |
|
FN |
FN с последующим именем, определённым пользова- | |
|
IN |
число |
осуществляет ввод на уровне микропроцессора из |
|
INKEYS |
нет |
чтение с клавиатуры. Возвращает символ . введенный |
|
INT |
число |
округление к ближайшему меньшему целому. |
|
LEN |
строка символов |
длина строки. |
|
LN |
число |
натуральный логарифм- Выдаёт сообщение "А ... |
|
NOT |
число |
0, если X <> 0 и 1, если X - 0. Операция имеет |
|
OR |
логическая опе- |
. « , 1. если В <>0: А, если В - 0. |
|
PEEK |
число |
значение байта в памяти по адресу X, округленному |
|
PI |
нет |
число Pi (3.14159265... ) |
|
POINT |
два числовых ар- |
1, если точка экрана с координатами ( X. Y ) закраше- |
|
RND |
нет |
очередное псевдослучайное число из последователь- |
|
1 |
2 |
3 |
|
SCREENS |
два числовых ар- |
символ (обычный или инверсный), который появляет- |
|
SGN |
число в радианах |
-1, если X < 0; 0, если X - 0; 1, если X > 0. |
|
SQR |
число |
корень квадратный. Выдаёт сообщение "А ... если |
|
STR$ |
число |
строка символов, которая должна быть отображена, |
|
USR |
число |
вызывает подпрограмму в машинных кодах, началь- |
|
USR |
строка символов |
адрес группы байтов, задающих определённый поль- |
|
VAL |
строка символов |
вычисление X, как числового выражения. Выдаёт со- |
|
VAL$ |
строка символов |
вычисляет X, как строковое выражение. Выдаёт сооб- |
ОПЕРАЦИИ
Префиксные:
- число отрицательное значение.
Инфиксные (двухоперандовые):
+ сложение для чисел, конкатенация для строк;
вычитание;
* умножение;
/ деление;
** возведение в степень (стрелка вверх).Сообщение " В ...
если левый операнд отрицательный;
- равенство;
> больше; Оба операнда должны быть одного типа.
< меньше; Результат равен 1, если сравнение
>- больше или равно; истинно и равен 0, если нет.
<= меньше или равно;
<> не равно.
Функции и операции имеют следующие приоритеты:
индексация и сечения - 12
все функции за исключением: NOT и префиксного минуса - 11
возведение в степень - 10
префиксный минус - 9
*, / - 8
+, - (вычитание) - 6
>, <, >«, <=, о - 5
NOT - 4
AND - 3
OR - 2
ОПЕРАТОРЫ
Принятые обозначения:
А - одна буква;
V - переменная;
X, Y, Z - числовые выражения;
М, N - числовые выражения, которые округляются к
ближайшему целому;
Е - некоторое выражение;
F - выражение, имеющее строковое значение;
S - последовательность операторов, разделённых
двоеточием;
С - последовательность символов управления цветом.
Каждый заканчивается запятой или точкой с запя-
той. Цветовой символ имеет форму операндов:
PAPER, INK, FLASH, BRIGHT, INVERSE или
OVER.
Текст произвольного выражения может располагаться в любом месте
строки (за исключением номера строки, который должен размещаться в нача-
ле строки).
Все операторы, кроме INPUT, DEF и DATA могут использоваться и как
команды, и в программах.
Команда или строка программы может содержать несколько операто-
ров, разделённых двоеточием (*:w).
Нет ограничений на положение оператора в строке, хотя есть некоторые
ограничения в IF и REM.
Все операторы языка сведены в следующую таблицу:
|
Оператор |
Действие оператора |
|
1 |
2 |
|
ВЕЕР X,Y |
Воспроизводится звук длительностью X сек. и высотой Y |
|
1 |
2 |
|
BORDER N |
Устанавливает цвет рамки (бордюра) экрана, выдаёт сооб- |
|
BRIGHT N |
Устанавливает яркость выводимого символа: 0 - для обычной яркости; 1 - для повышеной яркости; 8 - сохраняет существующую яркость. |
|
CAT |
Без MICRODRIVE не работает. |
|
CIRCLE X,Y,Z |
Изображает дугу или окружность с центром в точке с ко- |
|
CLEAR |
Уничтожает все переменные и очищает занимаемую ими |
|
CLEAR M |
Подобно CLEAR, но дополнительно изменяет системную |
|
CLOSE # |
Без MICRODRIVE не работает. |
|
CLS |
(CLear Screen) очищает файл экрана. |
|
CONTINUE |
Продолжает выполнение программы, начатой ранее и оста- |
|
COPY |
Пересылает копию 22-х строк экрана на принтер, если он |
|
DATA E1,E2,E3,... |
Часть списка данных. Должна располагаться в программе. |
|
DEF FN A(A1,A2,A3,...)«E |
Определяемая пользователем функция. Должна распола- |
|
DELETE F |
Без MICRODRIVE не работает. |
|
1 |
2 |
|
DIM A(Ni,N2,...NK) |
Уничтожает массив с именем А и устанавливает числовой |
|
DIM A$(N1,N2,...NK) |
Уничтожает массив или строку с именем А и устанавливает |
|
DRAW X,Y |
То же самое, что и DRAW X,Y,0. Чертит прямую линию. |
|
DRAW X,Y,Z |
Изображает линию от текущей графической позиции в точ- |
|
ERASE |
Без MICRODRIVE не работает. |
|
FLASH N |
Определяет, будет ли символ мерцающим или постоянно N - 8 для сохранения предыдущего состояния. |
|
FOR. A-X TO Y |
То же самое, что и FOR A-X ТО Y STEP 1. |
|
FOR A-X TOY STEP Z |
Уничтожает скалярную переменную А и устанавливает уп- |
|
FORMAT F |
Без MICRODRIVE не работает. |
|
GO SUB N |
Проталкивает строку с оператором GO SUB в СТЕК для |
|
GO TON |
Продолжает выполнение программы со строки N. Если N |
|
IF X THEN S |
Если X истинно (не равно 0), то выполняется S. S включает |
|
I |
2 |
|
INK N |
Устанавливает цвет закрашивания (т.е. цвет, которым бу- |
|
INPUT... |
Где ... есть последовательность вводимых символов, разде- а) некоторый PR1 NT-символ, начинающийся не с буквы; б) имя переменной; в) строка имён переменных строкового типа. |
|
INVERSE N |
Символ управления инверсией выводимого символа. Если |
|
1 |
2 |
|
LET V-E |
Присваивает значение "E" переменной "V". Ключевое слово |
|
LIST |
То же, что и LIST 0. |
|
LIST N |
Записывает текст программы в верхнюю часть экрана, |
|
LLIST |
То же, что и LLIST 0. |
|
LLIST N |
Подобно LIST N, но вывод осуществляется на принтер. |
|
LOAD F |
Загружает программу и переменные. |
|
LOAD F DATA () |
Загружает числовой массив. |
|
LOAD F DATA $() |
Загружает строковый массив. |
|
LOAD F CODE M,N |
Загружает старшие "N" байтов, начиная с адреса "М". |
|
LOAD F CODE M |
Загружает байты, начиная с адреса " М |
|
LOAD F CODE |
Загружает байты по тому же адресу, с которого они были |
|
LOAD F SCREEN$ |
Аналогично LOAD CODE 16384,6912. Очищает файл экрана |
|
LPRINT |
Подобно PRINT, но использует принтер. |
|
MERGEF |
Подобно LOAD F, но не затирает всю старую программу в |
|
MOVE F1,F2 |
Без MICRODRIVE не работает. |
|
NEW |
Запускает по новой систему программирования BASIC, |
|
NEXT A |
а) находит управляющую переменную "А"; б) прибавляет к ней значение STEP; в) если STEP 0, а значение "А" не стало больше значения |
|
2 | |
|
чения "предел", то происходит переход к оператору цикла. | |
|
OPEN # |
Без MICRODRIVE не работает. |
|
OUT M.N |
Выводит байт "N" в порт "М". Операция выполняется на |
|
OVERN |
Управляющий символ надпечатывания по выведенной стро- |
|
PAPER N |
Подобен INK, но управляет цветом фона. |
|
PAUSE N |
Останавливает выполнение программы и задерживает изоб- |
|
PLOT C;M,N |
Выводит точку закрашивающего цвета (обработанная |
|
1 |
2 |
|
POKE M,N |
Записывает значение N в байт памяти по адресу М. |
|
PRINT... |
Где - последовательность PRINT-символов, раз- В конце оператора PRINT, если он не заканчивается точкой а) пустая строка (т.е. ничего); б) числовое выражение. Если значение выражения отрицательно, то выводится Если X <« 10 ** (-5) или X >- 10 ** 13, вывод осуществля- в) строковое выражение. В строке возможны пробелы до и после символов. Управ- г) AT M,N Вывод в строку М в позицию N; д) TAB N Вывод управляющего символа TAB с последующими дву- е) цветовой символ в форме PAPER, INK, FLASH, |
|
RANDOMIZE |
To же, что и RANDOMIZE 0. |
|
1 |
2 |
|
RANDOMIZE N |
Устанавливает системную переменную SEED, используе- Оператор допускает сокращение RAND (смотри клавишу). |
|
READ V1,V2,...VK |
Присваивает переменным одной за другой значения, после- |
|
REM... |
Не выполняется. - может быть последовательностью |
|
RESTORE |
То же самое, что и RESTORE 0. |
|
RESTORE N |
Перезаписывает указатель данных в первый оператор DATA |
|
RETURN |
Ссылается на оператор GO SUB в стеке и передаёт управ- Характерная ошибка, когда операторы GO SUB не сба- |
|
RUN |
То же самое, что и RUN 0. |
|
RUN N |
Выполняет CLEAR, и затем GO ТО N. |
|
SAVE F |
Записывает на ленту программу и переменные. |
|
SAVEF LINEN |
Записывает на ленту программу и переменные таким обра- |
|
SAVE F DATA () |
Запись на ленту числового массива. |
|
SAVE F DATA $() |
Запись на ленту строкового массива $. |
|
SAVE F CODE M,N |
Записывает на ленту N байтов, начиная с адреса М. |
|
SAVE F SCREENS |
Аналогично SAVE CODE I63S4.6912. Выдаётся сообщение |
|
STOP |
Останавливает выполнение' программы с* выдачей сооб- CONTINUE (продолжение) будет осуществляться со следу- |
|
VERIFY |
То же, что и LOAD, за исключением того, что данные не за- |