Приложение С (часть 2)
Язык программирования бейсик
Справочное пособпе
Все числа в системе могут иметь точность 9 или 10 знаков. Наи-
большее число 10* «38, а наименьшее положительное число 4*10**
(-39). Числа имеют внутреннее представление как числа с плавающей
(двоичной) точкой, с выделением одного байта на показатель степе-
ни 'е* (экспоненты) в интервале от 1 до 255, и четырех байтов на
мантиссу 'м' в интервале от 0.5 до 1 (мА"1). Это представляется
числом м*2** е (-128).
Поскольку 1/2 < им<1, старший бит мантиссы всегда 1. Следова-
тельно, мы можем заменить его на бит, обозначающий знак: 0 для
положительного числа и 1 - для отрицательного.
Наименьшее целое и^меет специальное представление, в котором
первый байт 0, второй байт знака (О и FFH), а третий и четвертый
-само число в дополнительном коде (младшие значащие цифры в пер-
вом байте). Числовые переменные имеют имя произвольной длины, на-
чинающееся с буквы и продолжающееся буквами или цифрами. пробелы
и символы управления цветом игнорируются и все буквы преобразу-
ются к минимально упакованному виду.
Управляющие переменные для FOR-NEXT циклов имеют имена длиной
в одну букву. числовые массивы имеют имена длиной в одну букву,
которая может быть такой же, как имя скалярной переменной. Эти
массивы могут иметь произвольное количество измерений и и произ-
вольный размер. Начальный индекс всегда 1. Строки символов болев
гибкие в своей длине. Имя строковой переменной в отличие от
простой переменной заканчивается символом доллара (в). Строковые
массивы также могут иметь произвольное количество измерений н
размер. Их имена представляют собой одну букву и следующий за ней
символ, ио не могут совпадать с именем простой строки символов.
Все строки в массивах имеют фиксированную длину, которая опреде-
ляется числом, задающим последнюю размерность в операторе DIM.
Начальный индекс 1. подстрока от строки может быть получена как
сечение. Сечение может быть:
а) пустым;
б) числовым выражением;
в) некоторым 'числовым выражением' 'то' другим 'числовым выра-
жением' и использоваться в:
♦) строковых выражениях (сечениях);
**) строковых массивах переменных
(индекс 1, индекс 2Г... , индекс N, сечение)
Или, что тоже самое
(индекс Г, индекс 2.....индекс N) (сечение).
В случае *), строка выражения имеет значение SB.
Если сечение массива пусто, то SB считается подстрокой от са-
мой себя.
Если речение представляется числовым выражением со значением
'М', то результатом будет м-ый символ от SB (подстрока, длиной>1)
если сечение представлено в форме в) и первое числовое выражение
имеет значение 'М' (умалчиваемое значение 1), а второе 'N' (умал-
чнваемое значение S£), и если 1<*M<*N<« чем длина S*, то резуль-
татом будет подстрока от S* с м-ым начальным символом и N-ым ко-
нечным. Если 0 < *N<М, то результатом будет пустая строка. В любом
другом случае выдается сообщение об ошибке '3'.
Сечение выполняется перед функцией или операцией, которая осу-
ществляется, если скобками не предписано сделать иначе. Подстрока
может назначаться (смотри оператор LET). Если часть строки за-
писывается в строковой литерал, она должна удваиваться.
Функции
|
имя |
тип |
действие (возвращаемое значение) |
|
1 |
2 |
3 |
|
ABS |
число |
абсолютное значение |
|
ACS |
число |
арккосинус в радианах.Выдает сообще- |
|
AND |
логическая -строка, |
Г а,если в< > 0 -> AND в «< L в,если в*0 -> AS AND в «< L '' '',если в«0 |
|
ASN |
число |
арксинус в радианах. Выдает сообщение |
|
ATN |
число |
арктангенс в радианах. |
|
ATTR |
два числовых |
число, двоичный код которого, пред- |
|
BIN |
это необычная функция. За BIN запи- |
|
представление числа, которое записы- | ||
|
CHR* |
число |
символ, чей код представим числом х, |
|
CODE |
строка сим- |
код первого символа в строке Х(или 0, |
|
COS |
число в ра- |
косинус X. |
|
EXP |
число |
е в степени X |
|
FN |
FN с последующим именем, определенной | |
|
IN |
число |
осуществляется ввод на уровне микро- |
|
INKEY* |
нет |
чтение с клавиатуры.Возвращает символ |
|
INT |
число |
округление к ближайшему меньшему це- |
|
LEN |
строка сим- |
длина строки |
|
LN |
число |
натуральный логарифм.Выдает сообщение |
|
NOT |
число |
0, если Х<>0, 1, если Х*0. Операция |
|
OR |
логическая |
Г 1, если В< > 0 A OR В *< L А, если Ве0 |
|
PEEK |
число |
значение байта в памяти по адресу х, |
|
PI |
нет |
число пи (3.14159265...) |
|
POINT |
два числовых |
1 , если точка экрана с координатами |
|
ченных в ско- |
если ие выполняются условия 0<«х<«255 | |
|
RND |
нет |
очередное псевдослучаное число из по- |
|
SCREEN* |
два числовых |
символ (обычный или инверсный), кото- |
|
SGN |
число |
- 1, если х< 0 0, если х*0 1, если х>0 |
|
SIN |
число в ради- |
синус X |
|
SQR |
число |
корень квадратный.Выдает сообщение а, |
|
STR* |
число |
строка символов, которая должна быть |
|
USR |
число |
вызывает подпрограмму в маш-ных кодах |
|
USR |
строка симво- |
адрес группы байтов,задающих опреде- |
|
VAL |
строка симво- |
вычисление х как числового выражения, |
|
VAL* |
строка симво- |
вычисляет х как строковое выражение, |
Префиксные:
число отрицательное значение
Инфиксные (двухоперандовые):
+ сложение для чисел, коикатеиция для строк
вычитание
• умножение
/ деление
• • возведение в степень (стрелка вверх).' Сообщение в,
Вели левый операнд отрицательный.
■ равенство Г
> больше: оба операнда должны быть одного
< меньше: типа. Результат равен 1, если
>« больше или равно: сравнение нстино и равно О,
<* меньше или равно: если нет.
< > не равно L
функции и операции имеют следующий приоритет:
индексация и сечения - 12
все функции за исключением:
NOT и префиксного минуса - 11
возведение в степень - 10
префиксный минус - 9
/ - 8
• , - (вычитание) - 6
*,>,<,<*,>■,<> - 5
NOT - 4
AND - 3
OR - 2
Операторы
принятые обозначения:
а - одна буква;
V - переменная;
х, Y, Z - числовые выражения;
м, N - числовые выражения, кюторые округляются к ближайшему це-
лому ;
е - некоторое выражение;
F - выражение, имеющее строковое значение;
S - последовательность операторов, разделенных двоеточием ': '
с - последовательность символов управления цветом.
Каждый заканчивается ', ' или '; '. Цветовой символ имеет фор-
му операндов:
PAPER, INK, FLUSH, BRIGHT, INVERSE или OVER.
Текст произвольного выражения может располагаться в любом
месте строки (за исключением номера строки, который должен разме-
щаться в начале строки).
Все операторы, кроме INPUT, DEF и DATA могут использоваться и
как команды и в программах.
Команда или строка программы может содержать несколько опера-
торов, разделенных двоеточием ':
Нет ограничений на положение оператора в строке, хотя есть не-
которые ограничения в IF и REM.
Все операторы языка сведены в следующую таблицу:
Все операторы языка сведены в следующую таблицу:
|
Оператор |
Действие оператора |
|
1 |
2 |
|
Веер x,y |
воспроизводит звук длительностью |
|
BORDER м |
устанавливает цвет рамки (бордюра) |
|
BRIGHT м |
устанавливает яркость выводимого 0-для обычной яркости; 1-для повышенной яркости; |
|
Cat |
без MICRODRIVE не работает. |
|
CIRCLE X,Y,Z |
изображает дугу или окружность с |
|
CLEAR |
уничтожает все переменные и очищает |
|
CLEAR N |
подобно CLEAR,но дополнительно из- |
|
CLOSE* |
без MICRODRIVE не работает. |
|
CLS |
(CLEAR SCREEN) очищает файл экрана. |
|
CONTINUE |
продолжает выполнение программы,на- если сообщение возникло в коман- |
|
во CONT на клавиатуре. | |
|
1 COPY |
пересылает копию 22 строк экрана на |
|
DATA e1,e2,e3, . . . |
часть списка данных. Должна распо- |
|
DEF FNa(a 1 , a2.....ак)=е |
определяемая пользователем функция, |
|
DELETE F |
без MICRODRIVE не работает. |
|
DIM a(Nl ,N2.....Nk ) |
уничтожает массив с именем 'а' и |
|
DIM a*(Nl ,N2.....Nk) |
уничтожает массив или строку с име- |
|
DRAW x,Y |
то же самое ,что и DRAW x,Y,0 . |
|
DRAW x,Y , Z |
изображает линию от текущей графи- |
|
ERAZE |
без MICRODRIVE не работает. ^ |
|
FLUSH N |
определяет:будет ли символ мерцаю- |
|
FOR a«x то Y |
FOR а«х то Y STEP 1 |
|
FOR a«x то Y STEP Z |
уничтожает скалярную переменную |
|
FORMAT F |
без MICRODRIVE не работает. |
|
GO SUB N |
проталкивает строку с оператором |
|
GO TO N |
продолжает выполнение программы со |
|
IF x THEN S |
если 'х' истинно (не равно 0),то |
|
INK N |
устанавливает цвет закрашивания |
|
INPUT ... |
где '...' есть последовательность A) некоторый PRINT-символ,начи- Б) имя переменной; B) строка имен переменных стро- PRINT-символы в случае а) представ- |
|
тся и ждет ввода некоторого выраже- случай в) подобен случаю б) с той | |
|
INVERSE N |
символ управления инверсией выводи- |
|
LET V«e |
присваивает значение 'е' переменной |
|
LIST |
то же , что и LIST 0. |
|
LIST N |
записывает текст программы в верх- |
|
LLIST |
то же,что и LIST 0 |
|
LLIST N |
подобно LIST, но вывод осуществля- |
|
LOAD F |
загружает программу и переменные. |
|
LOAD F DATA () |
загружает числовой массив. |
|
LOAD F CODE м,N |
загужает старшие 'N' байтов,начиная |
|
LOAD F CODE м |
загружает байты,начиная с адреса |
|
LOAD F CODE |
загружает байты по тому же адресу, |
|
LOAD F SCREENS |
аналогично LOAD F CODE 16384,6912 . |
|
LPRINT |
подобно PRINT,но использует прин- |
|
MERGE F |
подобно LOAD F , но не затирает всю |
|
MOVE F1,F2 |
без MICRODRIVE не работает |
|
NEW |
запускает по новой систему програм- |
|
NEXT a |
а) находит управляющую переменную б) прибавляет к ней значение STEP; в) если STEP >в 0 , а значение 'а' то происходит переход к операто- |
|
OPEN# |
без MICRODRIVE не работает. |
|
OUT м, N |
выводит байт 'N' в порт 'м'.Опера- 0 <» м < « 63535, -255 <* N <* 255, |
|
OVER N |
управляющий символ надпечатывания |
|
по выведенной строке. Если N»0, то | |
|
PAPER N |
подобен INK, но управляет цветом |
|
PAUSE N |
останавливает выполнение программы |
|
PLOT с;м,N |
выводит точку закрашивающего цвета |
|
POKE m,N |
записывает значение 'N' в байт па- -255 < = N <« 255,иначе сообщение в. |
|
PRINT ... |
где '...' последовательность в конце оператора PRINT,если он не |
|
заканчивается точкой с запятой, за- а) пустая строка; б) числовое выражение. если значение выражения отрицатель- в) строковое выражение. в строке возможны пробелы до и управляющие символы вызывают опре- г) ат м,N вывод в строку 'м',позицию 'N' д) тав N вывод управляющего символа тав е) цветовой символ в форме PAPER, | ||
|
RANDOMIZE |
то же,что и RANDOMIZE 0 | |
|
RANDOMIZE N |
устанавливает системную переменную | |
|
READ VI ,V2, . . |
присваивает Переменным одна за | |
|
REM . . . |
не выполняется.'...' может быть |
|
RESTORE N |
перезаписывает указатель данных в |
|
RETURN |
ссылается на оператор GO SUB в сте- |
|
RUN |
то же самое, что и RUN 0. |
|
RUN N |
CLEAR ,а затем GO ТО N . |
|
SAVE F |
записывает на ленту программы и |
|
SAVE F LINE м |
записывает иа ленту программу и пе- |
|
SAVE F DATA () |
запись на ленту числового массива. |
|
SAVE F DATA ( ) |
запись на ленту строкового массива |
|
SAVE F CODE M,N |
записывает на ленту 'N' байтов,на- |
|
SAVE F SCREENS |
аналогично SAVE F CODE 16384,6912 . |
|
STOP |
останавливает выполнение программы |
|
VERIFY |
то же,что и LOAD, за исключением |
|
Дополнение | |
|
LOAD F DAT*() |
загружает строковый массив. |
|
RESTORE |
то же самое,что и RESTORE 0 |