From Felixl.com
УТВЕРЖДЕН
У1.00031-01 35 01-ЛУ
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
КОМПЛЕКСА ВЫЧИСЛИТЕЛЬНОГО УЧЕБНОГО
"ЭЛЕКТРОНИКА МС 0202"
БЕЙСИК
ОПИСАНИЕ ЯЗЫКА
У1.00031-01 35 01
ЛИСТОВ 98
1987
ЛИТЕРА 0
- 2 -
У1.00031-01 35 01
АННОТАЦИЯ
Данный документ представляет собой руководство по языку
программирования БЕЙСИК (версия 1985.11.01.) и предназначен для
пользователей микро-ЭВМ <Электроника МС 0511>.
Язык БЕЙСИК создан для решения математических и инженерных
задач в режиме диалога человек-ЭВМ. Он позволяет создавать
программы для большого круга задач, сочетая в себе простоту
использования и легкость изучения. Описываемая версия БЕЙСИК-
системы существенно расширена по сравнению с ядром языка БЕЙСИК.
Она включает операторы, которые позволяют создавать программы по
обработке текстовой информации, использовать этот язык для
программирования систем управления технологическими установками,
а также игровых задач и т.д..
В настоящем документе приводятся сведения о синтаксисе и
семантике операторов, функций языка и команд системы.
В приложении 1 приведены сообщения об ошибках. Список
команд, операторов и функций приведен в приложении 2. В
приложении 3 приведена таблица кодов КОИ-7 <Электроника МС 0511>.
Приложение 4 содержит список слов, зарезервированных в
БЕЙСИК-системе.
Перед изучением описания языка БЕЙСИК необходимо
ознакомиться с руководством по эксплуатации микро-ЭВМ
<Электроника МС 0511>, руководством оператора У1.00031-01 34 02.
- 3 -
У1.00031-01 35 01
СОДЕРЖАНИЕ
1. ОБЩИЕ СВЕДЕНИЯ............................................ 6
1.1. Косвенный режим........................................ 6
1.2. Непосредственный режим................................. 6
1.3. Сообщения об ошибках................................... 7
1.4. Способ описания языка БЕЙСИК........................... 7
1.5. Основные символы языка................................. 8
2. ДАННЫЕ И ОПЕРАЦИИ НАД НИМИ................................ 9
2.1. Константы.............................................. 9
2.1.1. Числовые константы................................... 9
2.1.2. Типы числовых констант............................... 10
2.1.3. Текстовая константа.................................. 11
2.2. Переменные............................................. 11
2.2.1. Определение переменной............................... 11
2.3. Выражения и операции................................... 12
2.3.1. Арифметическое выражение............................. 12
2.3.2. Арифметические операции.............................. 13
2.3.3. Операции отношения................................... 14
2.3.4. Логические операции.................................. 14
2.3.5. Функции.............................................. 16
2.3.6. Преобразование типов................................. 16
2.3.7. Операции над строками символов....................... 17
3. КОМАНДЫ СИСТЕМЫ........................................... 18
3.1. Команды пуска программы................................ 18
3.1.1. Команда RUN.......................................... 18
3.1.2. Команда CONT......................................... 19
3.1.3. Клавиша (команда) <СУ> <A>........................... 19
3.1.4. Команда SYSTEM....................................... 20
3.2. Хранение программ на кассетной магнитной ленте......... 20
3.2.1. Команда LOAD......................................... 20
3.2.2. Команда SAVE......................................... 21
3.2.3. Команда MERGE........................................ 21
3.2.4. Команда CLOAD........................................ 22
3.2.5. Команда CSAVE........................................ 22
3.2.6. Команда FILES........................................ 22
3.2.7. Команда BLOAD........................................ 23
3.2.8. Команда BSAVE........................................ 24
3.3. Работа с текстами программ............................. 24
3.3.1. Команда LIST......................................... 25
3.3.2. Команда DELETE....................................... 26
3.3.3. Команда RENUM........................................ 26
3.3.4. Команда AUTO......................................... 27
3.3.5. Команда NEW.......................................... 28
4. ОПЕРАТОРЫ.................................................. 28
- 4 -
У1.00031-01 35 01
4.1. Основные операторы..................................... 28
4.1.1. Оператор LET......................................... 28
4.1.2. Оператор GOTO........................................ 29
4.1.3. Оператор GOSUB....................................... 29
4.1.4. Оператор RETURN...................................... 30
4.1.5. Оператор IF.......................................... 31
4.1.6. Оператор FOR......................................... 32
4.1.7. Оператор NEXT........................................ 32
4.1.8. Оператор ON.......................................... 33
4.1.9. Оператор STOP........................................ 34
4.1.10. Оператор END......................................... 35
4.1.11. Оператор REM......................................... 36
4.2. Операторы описания, резервирования памяти и
установки начальных значений........................... 36
4.2.1. Оператор DIM......................................... 37
4.2.2. Оператор KEY......................................... 37
4.2.3. Оператор CLEAR....................................... 38
4.2.4. Оператор DATA........................................ 39
4.2.5. Оператор READ........................................ 40
4.2.6. Оператор RESTORE..................................... 40
4.2.7. Оператор DEF......................................... 41
4.2.7.1. Оператор DEF USR..................................... 41
4.2.7.2. Оператор DEF FN...................................... 42
4.3. Операторы ввода/вывода................................. 43
4.3.1. Оператор PRINT....................................... 43
4.3.2. Оператор INPUT....................................... 44
4.3.3. Оператор OPEN........................................ 45
4.3.4. Оператор CLOSE....................................... 46
4.4. Операторы непосредственного доступа к памяти........... 46
4.4.1. Оператор POKE........................................ 46
4.4.2. Оператор OUT......................................... 47
4.5. Операторы управления экраном телевизора................ 48
4.5.1. Оператор CLS......................................... 48
4.5.2. Оператор COLOR....................................... 48
4.5.3. Оператор SCREEN...................................... 49
4.5.4. Оператор LOCATE...................................... 50
4.6. Операторы и функции графики............................ 51
4.6.1. Оператор PSET........................................ 51
4.6.2. Оператор PRESET...................................... 52
4.6.3. Функция POINT........................................ 52
4.6.4. Оператор LINE........................................ 53
4.6.5. Оператор CIRCLE...................................... 54
4.6.6. Оператор PAINT....................................... 55
4.6.7. Оператор DRAW........................................ 56
4.7. Оператор управления звуком............................. 58
4.7.1. Оператор BEEP........................................ 58
4.8. Операторы трассировки программы........................ 59
4.8.1. Оператор TRON........................................ 59
4.8.2. Оператор TROFF....................................... 59
5. ФУНКЦИИ................................................... 60
5.1. Числовые функции....................................... 60
5.1.1. Функция SQR.......................................... 60
5.1.2. Функция SIN.......................................... 60
5.1.3. Функция COS.......................................... 61
5.1.4. Функция TAN.......................................... 61
5.1.5. Функция ATN.......................................... 61
- 5 -
У1.00031-01 35 01
5.1.6. Функция PI........................................... 62
5.1.7. Функция EXP.......................................... 62
5.1.8. Функция LOG.......................................... 63
5.1.9. Функция ABS.......................................... 63
5.1.10. Функция FIX.......................................... 63
5.1.11. Функция INT.......................................... 64
5.1.12. Функция SGN.......................................... 64
5.1.13. Функция RND.......................................... 65
5.1.14. Функция FRE.......................................... 65
5.2. Функции преобразования типов........................... 66
5.2.1. Функция CINT......................................... 66
5.2.2. Функция CSNG......................................... 67
5.2.3. Функция CDBL......................................... 67
5.3. Функции непосредственного обращения к памяти........... 67
5.3.1. Функция PEEK......................................... 68
5.3.2. Функция INP.......................................... 68
5.4. Символьные функции..................................... 69
5.4.1. Функция ASC.......................................... 69
5.4.2. Функция CHR¤......................................... 70
5.4.3. Функция LEN.......................................... 70
5.4.4. Функция MID¤......................................... 71
5.4.5. Функция STRING¤...................................... 72
5.4.6. Функция VAL.......................................... 73
5.4.7. Функция INKEY¤....................................... 73
5.4.8. Функция STR¤......................................... 74
5.4.9. Функция BIN¤......................................... 74
5.4.10. Функция OCT¤......................................... 75
5.4.11. Функция HEX¤......................................... 75
5.5. Вспомогательные функции ввода/вывода................... 76
5.5.1. Функция CSRLIN....................................... 76
5.5.2. Функция POS.......................................... 76
5.5.3. Функция LPOS......................................... 77
5.5.4. Функция EOF.......................................... 77
5.6. Функции оператора PRINT................................ 78
5.6.1. Функция AT........................................... 78
5.6.2. Функция TAB.......................................... 78
5.6.3. Функция SPC.......................................... 79
5.7. Функции, определенные пользователем.................... 80
5.7.1. Функции FN........................................... 80
5.7.2. Функции USR.......................................... 80
ПРИЛОЖЕНИЕ 1. СООБЩЕНИЯ ОБ ОШИБКАХ.......................... 82
ПРИЛОЖЕНИЕ 2. СПИСОК КОМАНД, ОПЕРАТОРОВ И ФУНКЦИЙ........... 86
ПРИЛОЖЕНИЕ 3. ТАБЛИЦА КОДОВ КОИ-7 "ЭЛЕКТРОНИКИ МС 0511".... 94
ПРИЛОЖЕНИЕ 4. ЗАРЕЗЕРВИРОВАННЫЕ В БЕЙСИК-СИСТЕМЕ СЛОВА...... 96
- 6 -
У1.00031-01 35 01
1. ОБЩИЕ СВЕДЕНИЯ
Программа на языке БЕЙСИК состоит из строк, которые могут
содержать операторы и команды. Программа может вводиться и
выполняться в одном из двух режимов: косвенном и
непосредственном.
1.1. Косвенный режим
Чаще всего программа на языке БЕЙСИК записывается в
косвенном режиме. В этом случае каждая строка начинается с номера
строки. За номером строки следует оператор. Завершается строка
управляющим символом <ПС> (перевод строки), получаемым при
нажатии на клавишу <ВВОД>. Номер строки должен быть в диапазоне
от 0 до 65535. Номер строки выполняет две функции: во-первых, он
служит меткой оператора и может быть использован для ссылки на
данный оператор; во-вторых, номер строки определяет обычный
порядок выполнения операторов. Кроме того, наличие номеров строк
облегчает отладку программы, т.к. в сообщении об ошибке
указывается номер строки, в которой встретилась ошибка.
Любой из операторов языка БЕЙСИК должен размещаться на одной
строке, максимальная длина строки - 255 символов.
Номер строки используется и при редактировании программы.
Ввод строки, номер которой уже существует, приводит к замене
прежней строки. Ввод только номера строки ( пустая строка )
вызывает стирание соответствующей строки.
1.2. Непосредственный режим
В зависимости от наличия или отсутствия номера строки
БЕЙСИК-система отличает строки, вводимые в косвенном режиме, от
строк, вводимых для непосредственного выполнения. Операторы,
которые начинаются с номера строки, запоминаются, операторы без
номера строки выполняются непосредственно по мере их ввода в
систему, т.е. осуществляется выполнение операторов в
непосредственном режиме.
Следовательно, при вводе строки
10 PRINT "ЭЛЕКТРОНИКА МС 0511"
строка заносится в текст программы, тогда как ввод строки
PRINT "ЭЛЕКТРОНИКА МС 0511"
вызывает его непосредственное выполнение и в результате
осуществляется немедленный вывод сообщения
ЭЛЕКТРОНИКА МС 0511
Непосредственный режим БЕЙСИК-системы позволяет использовать
- 7 -
У1.00031-01 35 01
вычислительную машину как очень мощный калькулятор.
1.3. Сообщения об ошибках
При обнаружении ошибки во время ввода, синтаксического
анализа или выполнения программы БЕЙСИК-система выдает сообщение
об ошибке. Формат сообщения следующий:
<ОШИБ> в строке YYYYY
где <ОШИБ> - сокращенное название ошибки, YYYYY - номер строки,
содержащей ошибку.
В режиме непосредственного выполнения номер строки не
указывается.
Виды сообщений об ошибках приведены в приложении 1.
1.4. Способ описания языка БЕЙСИК
Для формального описания языка используется ряд обозначений,
которые необходимо понимать в следующем смысле:
- информация, записанная прописными буквами латинского
алфавита, постоянна;
- информация, записанная буквами русского алфавита и
заключенная в треугольные скобки "< >" - переменная;
- информация, заключенная в квадратные скобки "[ ]", при
использовании может быть опущена;
- из параметров, размещенных друг под другом, должен быть
выбран только один;
- параметр, заключенный в квадратные скобки
[<ПАРАМЕТР>...]N, сопровождаемый многоточием,
используется для обозначения многократности; N указывает
верхний предел возможных повторений параметра; если N не
указано, то число повторений параметра не определено.
П_Р_И_М_Е_Ч_А_Н_И_Е. В операторах с несколькими операндами в
случае, если указаны более дальние операнды, пропущенным операндам
должны соответствовать запятые, например:
CIRCLE (100,100),50,,,,2
- 8 -
У1.00031-01 35 01
1.5. Основные символы языка
Все языковые конструкции могут быть выражены с помощью
основных символов:
- прописные и строчные буквы латинского алфавита: A B C D
E F G H I J K L M N O P Q R S T U V W X Y Z;
- цифры: 0 1 2 3 4 5 6 7 8 9;
- специальные символы, приведенные в ТАБЛ 1.
СПЕЦИАЛЬНЫЕ СИМВОЛЫ
ТАБЛИЦА 1
------------------------------------------------------------
СИМВОЛ ! НАЗВАНИЕ СИМВОЛА
------------------------------------------------------------
Пробел
: Двоеточие
= Равно
+ Плюс
- Минус
* Звездочка
/ Наклонная черта
^ Надчеркивание или знак возведения в степень
( Открывающая скобка
) Закрывающая скобка
, Запятая
; Точка с запятой
. Точка
" Кавычки
' Апостроф
¤ Знак денежной единицы
< Меньше
> Больше
? Знак вопроса
@ Знак "относительно"
\ Символ целого деления
& Амперсанд
! Восклицательный знак
% Процент
# Знак числа
_ Знак подчеркивания
------------------------------------------------------------
БЕЙСИК-система использует ряд слов для обозначения команд,
операторов, имен функций и т.п. Изменять значения этих слов
пользователь не может, поэтому такие слова называются
зарезервированными.
К ним в БЕЙСИК-системе относятся:
- имена команд, например: LIST, SAVE, LOAD, RUN;
- имена операторов и разделителей, например: LET, IF, THEN,
GOTO, GOSUB, FOR, NEXT;
- имена стандартных и символьных функций, например: SIN,
COS, TAN, EXP, LOG, SQR.
Полный список зарезервированных слов приведен в приложении 4.
- 9 -
У1.00031-01 35 01
Символ пробела не является значащим и поэтому может свободно
использоваться для улучшения наглядности программы. Исключение
составляет случай записи символа пробела в текстовой константе.
П_Р_И_М_Е_Ч_А_Н_И_Е. Не допускается использование пробела
внутри зарезервированных слов, чисел и имен переменных.
2. ДАННЫЕ И ОПЕРАЦИИ НАД НИМИ
2.1. Константы
В БЕЙСИК-системе используются числовые и текстовые
константы.
2.1.1. Числовые константы
В БЕЙСИК-системе допустимы шесть форм записи числовых
констант:
1) Целые константы имеют вид десятичных целых чисел со
знаком или без него.
Примеры:
123
-2345
2) Вещественные константы, представленные в форме чисел с
фиксированной запятой - это положительные или отрицательные
числа, имеющие десятичную точку.
Примеры:
2.45
-102.36
3) Вещественные константы, записываемые в экспоненциальной
форме, состоят из мантиссы и порядка, отделенного от мантиссы
буквой E.
Примеры:
235.988E-7=.0000235988
2359E6=2359000000
Для обозначения констант двойной точности вместо буквы E
используется буква D.
4) Шестнадцатеричные константы обозначаются &H. Основа
счисления этих чисел - 16. Для обозначения цифр от 10 до 15
- 10 -
У1.00031-01 35 01
используются буквы от A до F.
Примеры:
&H76
&HA2F
5) Восьмеричные константы обозначаются &O (буква O). Основа
счисления для этих чисел - 8, поэтому константы не могут
содержать цифр 8 и 9.
Примеры:
&O347
&O177700
6) Двоичные константы - это двоичные числа, для обозначения
которых используется &B. Эти числа содержат только цифры 1 и 0.
Примеры:
&B01110110
&B10101101
2.1.2. Типы числовых констант
По внутреннему представлению числовые константы
подразделяются на целые, вещественные одинарной точности и
вещественные двойной точности.
Для внутреннего представления констант целого типа
используется одно слово памяти (16 бит). Это обеспечивает
скорость обработки и экономию памяти для их хранения. Целый тип
константы указывает знак % после десятичной константы, например:
156%
-3000%
Целый тип имеют также двоичные, восьмеричные и
шестнадцатеричные константы.
Вещественные числовые константы могут быть представлены с
одинарной или двойной точностью. Для констант одинарной точности
хранятся 7 десятичных цифр, а для двойной - 17 и выделяются
соответственно 2 или 4 машинных слова. По умолчанию в БЕЙСИК-
системе точность для констант принимается одинарной.
Константа одинарной точности различается по признакам:
- для ее записи используется экспоненциальная форма с
буквой E;
- при ее записи используется восклицательный знак <!>;
- любая запись числа без указания типа.
Примеры:
3451415.92
-1.09E-09
23.567!
Константа двойной точности различается по признакам:
- экспоненциальная форма записи с буквой D;
- 11 -
У1.00031-01 35 01
- признак числа двойной точности #.
Примеры:
-1.09432D-09
348.9#
2.1.3. Текстовая константа
Формальное описание текстовой константы:
<ТЕКСТОВАЯ КОНСТАНТА>::="[<СИМВОЛ>...]255"
Текстовая константа - последовательность символов (цепочка
знаков), заключенная в кавычки. Количество символов не должно
превышать 255.
Символ пробела внутри цепочки знаков является значащим.
Примеры:
"Привет"
"ЭЛЕКТРОНИКА МС 0511"
2.2. Переменные
2.2.1. Определение переменной
Формальное определение переменной:
<ПЕРЕМЕННАЯ>::=<ПРОСТАЯ ПЕРЕМЕННАЯ>
<ИНДЕКСИРОВАННАЯ ПЕРЕМЕННАЯ>
<ПРОСТАЯ ПЕРЕМЕННАЯ>::=<ИМЯ ПЕРЕМЕННОЙ>
<ИНДЕКСИРОВАННАЯ ПЕРЕМЕННАЯ>::=
<ИМЯ ПЕРЕМЕННОЙ>(<ИНДЕКС>[,<ИНДЕКС>...])
Переменные, идентифицирующие числовые данные, называются
числовыми переменными; переменные, идентифицирующие текстовые
данные, называются символьными переменными. Максимальная длина
значения символьной переменной может быть 255 символов.
Переменные имеют символическое имя - идентификатор,
состоящий из любого количества букв латинского алфавита и цифр;
из них учитываются только две первые. Имя переменной обязательно
должно начинаться буквой. Имя переменной в конце может иметь
знак, определяющий тип переменной:
¤ символьные;
- 12 -
У1.00031-01 35 01
% целые;
! вещественные одинарной точности;
# двойной точности.
При отсутствии знака считается, что переменная одинарной
точности.
Целые переменные могут принимать значения из интервала
[-32768,32767].
Примеры:
L#
MINIMUM!
K%
ABC
N¤
Различают простые и индексированные переменные. Простые
переменные однозначно обозначают один элемент данных.
Индексированные переменные идентифицируют элемент упорядоченного
набора данных - массива. Каждый элемент массива идентифицируется
именем массива и индексами, заключенными в круглые скобки.
Индексы - это целые выражения, принимающие положительные
значения. Число индексных выражений должно соответствовать числу
измерений массива. Индексные выражения разделяются запятыми.
Указание отрицательного индекса приводит к ошибке 5. Для
объявления массивов используется оператор DIM.
2.3. Выражения и операции
Выражение может состоять из текстовых или числовых констант
и переменных или из комбинаций этих элементов, соединенных
знаками операций, что приводит при выполнении к вычислению
значения выражения.
Операции в БЕЙСИК-системе делятся на
- арифметические;
- отношения;
- логические;
- функции.
2.3.1. Арифметическое выражение
<АРИФМЕТИЧЕСКОЕ ::= [+]<ТЕРМ>[[+]<ТЕРМ>...]
ВЫРАЖЕНИЕ> [-] [-]
[*]
<ТЕРМ>::=<МНОЖИТЕЛЬ>[[/]<МНОЖИТЕЛЬ>...]
[^]
<ПЕРЕМЕННАЯ>
<МНОЖИТЕЛЬ> ::= <ЧИСЛОВАЯ КОНСТАНТА>
- 13 -
У1.00031-01 35 01
(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>)
<ФУНКЦИЯ>
Арифметическое выражение используется в операторах
присваивания, цикла, условия, печати, определения функции.
Элементами арифметического выражения могут быть переменные,
функции, числовые константы или комбинации этих элементов,
соединенных круглыми скобками, знаками арифметических операций,
знаками отношения и логическими операциями. В выражении могут
использоваться произвольное число круглых скобок. При нарушении
соответствия числа открывающих и закрывающих скобок выдается
сообщение об ошибке 2.
Далее используется понятие целого выражения. Это
арифметическое выражение, принимающее значения из интервала
[-32768,32767].
2.3.2. Арифметические операции
Для обозначения арифметических операций используются
символы, приведенные в ТАБЛ 2.
СИМВОЛЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
ТАБЛИЦА 2
-----------------------------------------------------------
СИМВОЛ ! ОБОЗНАЧЕНИЕ ! ПРИМЕР
ОПЕРАЦИИ ! !
-----------------------------------------------------------
^ !Возведение в степень (A в степени B) ! A^B
* !Умножение (A умножить на B) ! A*B
/ !Деление (A делить на B) ! A/B
\ !Целочисленное деление (A делить на B)! A\B
MOD !Деление по модулю (остаток от !
! деления A на B) ! A MOD B
+ !Сложение (A плюс B) ! A+B
- !Вычитание (A минус B) ! A-B
( !Открывающая скобка !
) !Закрывающая скобка !B/(A*(B+C))
------------------------------------------------------------
При вычислении арифметических выражений соблюдается
следующий приоритет выполнения арифметических операций и скобок:
1) действие в скобках;
2) возведение в степень;
3) умножение и деление;
4) целочисленное деление;
5) деление по модулю;
6) сложение и вычитание
Примеры:
PRINT 10\4
2
Ok
PRINT 10.4 MOD 4
- 14 -
У1.00031-01 35 01
2
Ok
2.3.3. Операции отношения
Операции отношения используются для сравнения двух величин в
операторах условного перехода. Можно рассматривать, что результат
сравнения принимает два значения целого типа: "ИСТИНА" - во всех
битах единицы, что соответствует -1 (минус 1), а "ЛОЖЬ" - во всех
битах нули, что соответствует 0. Как "ИСТИНА" трактуется также
любое ненулевое значение.
Операции отношения приведены в ТАБЛ 3.
ТАБЛИЦА 3
---------------------------------------------
! ОПЕРАЦИЯ ! ПРОВЕРЯЕМОЕ ! ПРИМЕР !
! ! ОТНОШЕНИЕ ! !
!----------!---------------!----------------!
! = ! Равенство ! X=Y !
! <> >< ! Неравенство ! X<>Y или X><Y !
! = ! Меньше ! X<Y !
! = ! Больше ! X>Y !
! = ! Меньше или ! X<=Y !
! = ! равно ! !
! = ! Больше или ! X>=Y !
! = ! Равно ! !
---------------------------------------------
Операции отношений являются менее приоритетными по отношению
к арифметическим. Например, значение выражения
X+Y=X*Y
равно минус 1, когда X+Y равно X*Y.
2.3.4. Логические операции.
Логические операции используются для работы с наборами
битов, представленными в виде 16-битных целых чисел. Значение
каждого бита результата зависит от значений соответствующих битов
операндов.
Приведем таблицы, определяющие логические операции:
NOT
X NOT X
0 1
1 0
- 15 -
У1.00031-01 35 01
AND
X Y X AND Y
0 0 0
0 1 0
1 0 0
1 1 1
OR
X Y X OR Y
0 0 0
0 1 1
1 0 1
1 1 1
XOR
X Y X XOR Y
0 0 0
0 1 1
1 0 1
1 1 0
EQV
X Y X EQV Y
0 0 1
0 1 0
1 0 0
1 1 1
IMP
X Y X IMP Y
0 0 1
0 1 1
1 0 0
1 1 1
Результат логических операций можно рассматривать как
"ИСТИНУ" (ненулевой результат) или "ЛОЖЬ" (нуль), поэтому их
удобно применять для объединения нескольких операций отношения в
операторах условного перехода.
Примеры:
IF A=200 AND F<4 THEN 80
IF I=10 OR K>=0 THEN 50
IF NOT P THEN 100
В смешанных выражениях логические операции менее
приоритетны, чем арифметические и операции отношений. Очередность
выполнения логических операций осуществляется согласно следующему
приоритету:
1. NOT ;
2. AND ;
3. OR ;
4. XOR и EQV ;
5. IMP .
Примеры работы логических операций:
- 16 -
У1.00031-01 35 01
В десятичном В двоичном
представлении представлении
63 111111
AND
16 10000
=
16 10000
-1 1111111111111111
AND
8 1000
=
8 1000
4 100
OR
2 10
=
6 110
2.3.5. Функции
Функции - это заранее определенные операции над данными.
БЕЙСИК-система имеет "встроенные" функции, которые называются
стандартными. Примером таких функций могут служить SQR( ) -
квадратный корень или SIN( ) - синус. Более подробно стандартные
функции описываются далее.
2.3.6. Преобразование типов
Преобразование типов в БЕЙСИК-системе определяют несколько
правил:
1) если значение арифметического выражения одного типа
присваивается переменной другого типа, то производится
преобразование в тип переменной.
Пример:
10 A%=23.42
20 PRINT A%
RUN
23
Ok
2) во время вычисления значения арифметического выражения
все операнды преобразуются в один тип данных - тот, к которому
относится операнд, имеющий наибольшую точность.
- 17 -
У1.00031-01 35 01
Пример:
10 D#=6/7!
20 PRINT D#
RUN
.85714285714285714
Ok
(арифметическое выражение было подсчитано с двойной
точностью).
Пример:
10 D!=6/7!
20 PRINT D!
RUN
.8571429
Ok
(при присвоении результата арифметического выражения
переменной D! произошло округление из-за разницы в типах).
3) логические операции преобразуют свои операнды в целый тип
и дают целочисленный результат.
4) при преобразовании типов из двойной точности в одинарную
происходит округление. При преобразовании в целый тип
отбрасывается дробная часть.
Пример:
10 C%=55.88
20 C!=1.23456789
30 PRINT C%
40 PRINT C!
RUN
55
1.234568
Ok
При преобразовании в целый тип значения, выходящего из
пределов [-32768,32767], происходит ошибка 6.
2.3.7. Операции над строками символов
Для работы с символьными переменными в БЕЙСИК-систему
включен ряд функций (подробное описание - далее). Кроме того,
символьные данные могут быть объединены операцией + (конкатенация
строк).
Пример:
10 A¤="ИМЯ"
20 B¤=" ФАЙЛА"
30 PRINT A¤+B¤
40 PRINT "НОВОЕ "+ A¤+B¤
RUN
ИМЯ ФАЙЛА
НОВОЕ ИМЯ ФАЙЛА
Ok
- 18 -
У1.00031-01 35 01
Строки можно сравнивать операциями отношений
= <> >< < > <= >=
Сравнение производится над кодами КОИ-7, взятыми из
соответствующих строк. Если все коды совпадают, значит строки
равны. Если коды КОИ-7 символов различаются, то меньше та строка,
у которой код рассматриваемого символа меньше. Если одна строка
кончается, а другая - нет, то более короткая строка меньше
(пробелы учитываются).
Примеры (результат всех выражений - "ИСТИНА"):
"AA" <> "AB"
"A" = "A"
"X&" > "X "
"CL " > "CL"
B¤ < "9.12.84" , ЕСЛИ B¤="8.12.8"
"AAC" < "ABB"
3. КОМАНДЫ СИСТЕМЫ
Команды БЕЙСИКа служат для связи программиста с системой.
Они не имеют номера вводимой строки и выполняются только в
непосредственном режиме.
3.1. Команды пуска программы
3.1.1. Команда RUN
Команда начинает выполнение программы.
Формат:
RUN [<АРГУМЕНТ>]
Команда RUN позволяет выполнить загруженную в ОЗУ программу.
По этой команде сначала создается объектный код программы,
производится распределение памяти, а затем объектный код
запускается на выполнение. Обычно выполнение начинается с первой
строки программы. Если используется аргумент, то он указывает, с
какой строки программы следует начать ее выполнение. При каждом
новом вводе команды RUN старый объектный код и таблица имен
полностью стираются и формируются заново.
Пример:
RUN
RUN 100
- 19 -
У1.00031-01 35 01
(начинает выполнение программы со строки с номером 100).
3.1.2. Команда CONT
Команда продолжает выполнение программы с того места, на
котором оно было прервано.
Формат:
CONT
Выполнение программы приостанавливается всякий раз, когда
встречаются операторы STOP, END или при нажатии клавиши <СТОП>.
Команда CONT продолжает выполнение программы с того места, на
котором оно было прервано. На самом деле выполняется команда GOTO
по номеру "старой" строки. Если после прерывания программы
производятся действия, после которых ее выполнение невозможно
(например, была отредактирована строка текста программы), попытка
продолжить ее выполнение при помощи команды CONT приводит к
ошибке 17.
Команда CONT в сочетании с оператором STOP и клавишей <СТОП>
широко используется во время отладки программы. После
приостановки программы можно распечатать текущие значения
переменных, даже изменить их и продолжить выполнение программы.
Пример:
1050 STOP
RUN
СТОП в строке 1050
Ok
? A¤
ПЕРВЫЙ
Ok
CONT
3.1.3. Клавиша (команда) <СУ> <A>
Клавишами <СУ> <A> программу можно выполнить в пошаговом
режиме, т. е., по одной строке (см. Руководство оператора.
У1.00031-01 34 02).
- 20 -
У1.00031-01 35 01
3.1.4. Команда SYSTEM
Команда осуществляет переход в мониторную систему микро-ЭВМ
"Электроника МС 0511".
Формат:
SYSTEM
Команда используется для передачи управления мониторной
системе микро-ЭВМ.
3.2. Хранение программ на кассетной магнитной ленте
Тексты программ пользователей "Электроника МС 0511" хранятся
на кассетной магнитной ленте. Описываемые дальше команды
предназначены для чтения (записи) текста программы с (на)
магнитной ленты. Также имеются команды для хранения на магнитной
ленте двоичной информации.
Для идентификации программ используется спецификация файла -
текстовая константа, содержащая символическое имя файла. Имя
файла может состоять не более чем из шести символов.
В командах BLOAD и BSAVE границы областей памяти указываются
при помощи адреса - целой константы из интервала [0,65535]. Для
удобства адрес также можно задавать шестнадцатеричными,
восьмеричными и двоичными константами.
3.2.1. Команда LOAD
Команда загружает текст программы пользователя (в кодах
КОИ-7).
Формат:
LOAD <СПЕЦИФИКАЦИЯ ФАЙЛА>[,R]
При наличии R программа после ее загрузки запускается на
выполнение.
Команда используется для загрузки текста программы,
размещенного на кассетной магнитной ленте с помощью команды SAVE.
Наличие параметра R приводит к немедленному запуску программы
после ее загрузки. Текст программы представлен на магнитной ленте
в кодах КОИ-7.
Пример:
LOAD "MOD2",R
MOD2 .ASC 003
Ok
- 21 -
У1.00031-01 35 01
3.2.2. Команда SAVE
По этой команде текст программы пользователя записывается на
кассетную магнитную ленту ( в кодах КОИ-7).
Формат:
SAVE <СПЕЦИФИКАЦИЯ ФАЙЛА>
Эта команда предназначена для записи текста программы на
кассетную магнитную ленту в кодах КОИ-7.
Главное применение команды SAVE - сохранить текст программы
пользователя на магнитной ленте.
Пример:
FILES "ПЕРВЫЙ.COD"
ПЕРВЫЙ.COD
Ok
SAVE "ВТОРОЙ"
Ok
3.2.3. Команда MERGE
Команда объединяет текст программы в памяти ЭВМ с текстом
программы, загружаемым с кассетной магнитной ленты.
Формат:
MERGE <СПЕЦИФИКАЦИЯ ФАЙЛА>
При выполнении этой команды загружается программа с
магнитной ленты и объединяется с программой, хранящейся в памяти.
Загружаемая программа должна быть в формате КОИ-7.
В случае совпадения номера загружаемой строки с номером
строки, хранящейся в памяти, при объединении текстов оставляется
загруженная строка.
Команда позволяет при помощи DELETE, RENUM и SAVE запомнить
часть одной программы, а потом объединить ее с другой программой.
MERGE всегда портит объектный код и аннулирует все определения
имен, что требует новой компиляции всей программы.
Наличие этой команды в системе позволяет хранить на
магнитной ленте набор типовых программ.
Пример:
LOAD "ПЕРВЫЙ"
ПЕРВЫЙ.ASC 005
Ok
MERGE "ВТОРОЙ"
ВТОРОЙ.ASC 001
Ok
- 22 -
У1.00031-01 35 01
3.2.4. Команда CLOAD
Команда загружает с кассетной магнитной ленты программу
пользователя, записанную во внутреннем формате.
Формат:
CLOAD <СПЕЦИФИКАЦИЯ ФАЙЛА>
Команда загружает с магнитной ленты текст программы,
хранящейся во внутреннем представлении системы. Текст программы
должен быть записан командой CSAVE.
Пример:
CLOAD "ПЕРВЫЙ"
ПЕРВЫЙ.COD
Ok
3.2.5. Команда CSAVE
Команда записывает текст программы на магнитную ленту во
внутреннем формате системы.
Формат:
CSAVE <СПЕЦИФИКАЦИЯ ФАЙЛА>
По этой команде текст программы записывается во внутреннем
представлении системы на магнитную ленту.
Пример:
CSAVE "1001"
Ok
3.2.6. Команда FILES
Команда предназначена для поиска файла, записанного на
кассетную магнитную ленту.
Формат:
FILES [<СПЕЦИФИКАЦИЯ ФАЙЛА>]
Команда FILES позволяет вывести на экран список файлов на
магнитной ленте. Имя нужного файла указывается аргументом.
Команду удобно использовать при указании свободного участка
магнитной ленты для записи нового файла.
Как и команда LOAD, эта команда при чтении выдает на экран
- 23 -
У1.00031-01 35 01
имена всех обнаруженных файлов и их типы.
Если имя файла не указано, то команда просто выдает на экран
имена всех считанных файлов.
При выполнении команды содержание ОЗУ не меняется.
Выполнение команды можно прервать нажатием клавиши <СТОП>.
Пример:
FILES "ПЕРВЫЙ"
ПЕРВЫЙ.DAT
Ok
SAVE "ВТОРОЙ"
Ok
3.2.7. Команда BLOAD
Загружает "двоичный" файл (машинный код или данные) в
память.
Формат:
BLOAD <АРГУМЕНТ1>[,R][<АРГУМЕНТ2>]
<АРГУМЕНТ1>::= СПЕЦИФИКАЦИЯ ФАЙЛА;
R ЯВЛЯЕТСЯ ПРИЗНАКОМ НЕМЕДЛЕННОГО ЗАПУСКА ПРОГРАММЫ
ПОСЛЕ ЕЕ ЗАГРУЗКИ;
<АРГУМЕНТ2>::= АДРЕС НАЧАЛЬНОЙ ЗАГРУЗКИ ФАЙЛА.
Команда загружает содержимое файла, записанного на кассетную
магнитную ленту с помощью команды BSAVE. В файле хранятся
начальный адрес и длина массива, согласно которым содержимое
файла размещается в памяти машины.
При наличии второго аргумента, т.е. R, после загрузки
содержимого файла происходит немедленный запуск программы с
начального адреса загрузки. Указав третий аргумент, можно
разместить содержимое файла в памяти, начиная с произвольного
адреса оперативной памяти. При отсутствии аргумента R для
указания АРГУМЕНТА 2 дополнительная запятая не требуется.
Загрузку можно прервать нажатием клавиши <СТОП>. Во время
загрузки на экран выдается имя файла.
Команда позволяет загрузить программы в машинном
представлении в оперативную память с целью их дальнейшего
использования посредством функции USR.
Пример:
CLEAR 200,&HF40
Ok
BLOAD "DATA",&HF40
DATA .BIN
Ok
BLOAD "PROG",R
PROG .BIN
(файл PROG загружен и запущен с начала).
- 24 -
У1.00031-01 35 01
3.2.8. Команда BSAVE
Записывает содержимое оперативной памяти на кассетную
магнитную ленту.
Формат:
BSAVE <АРГУМЕНТ1>,<АРГУМЕНТ2>,<АРГУМЕНТ3>
<АРГУМЕНТ1>::= СПЕЦИФИКАЦИЯ ФАЙЛА;
<АРГУМЕНТ2>::= АДРЕС НАЧАЛА СОХРАНЯЕМОЙ ОБЛАСТИ ПАМЯТИ;
<АРГУМЕНТ3>::= АДРЕС КОНЦА СОХРАНЯЕМОЙ ОБЛАСТИ.
При выполнении этой команды содержимое оперативной памяти,
начиная с адреса, указанного АРГУМЕНТОМ 2, и кончая адресом,
указанным АРГУМЕНТОМ 3, сохраняется на кассетной магнитной ленте
в файле, имя которого указано АРГУМЕНТОМ 1. При отсутствии имени
файла выдается сообщение об ошибке 5, при отсутствии аргументов -
об ошибке 2. Выполнение команды можно прервать нажатием клавиши
<СТОП>. Кроме содержимого памяти на магнитную ленту записываются
начальный адрес и длина области оперативной памяти.
В основном эта команда дает возможность сохранять содержимое
оперативной памяти на магнитной ленте в двоичном формате.
Особенно полезно ее использование при сохранении программ,
написанных на машинном языке и используемых в БЕЙСИК-системе при
помощи функции USR.
Пример:
BSAVE "PROG",&O10000,&O20000
Ok
3.3. Работа с текстами программ
При работе с текстами программ используется понятие номера
строки - целой константы из интервала от 0 до 65535. Вместо
номера строки можно использовать символ ".", означающий "текущую"
строку. "Текущая строка" - это строка, которая последней была
редактирована, выведена на экран или строка, в которой была
обнаружена ошибка.
- 25 -
У1.00031-01 35 01
3.3.1. Команда LIST
Команда выводит текст программы на экран или печатающее
устройство.
Формат:
[L]LIST [<АРГУМЕНТ1>][-[<АРГУМЕНТ2>]]
<АРГУМЕНТ1>::= НОМЕР ПЕРВОЙ СТРОКИ ВЫВОДИМОГО
ФРАГМЕНТА ПРОГРАММЫ;
<АРГУМЕНТ2>::= НОМЕР ПОСЛЕДНЕЙ СТРОКИ;
L УКАЗЫВАЕТ, ЧТО ТЕКСТ ПРОГРАММЫ БУДЕТ ВЫВОДИТЬСЯ НА
ПЕЧАТАЮЩЕЕ УСТРОЙСТВО.
Команда LIST выводит текст программы на экран, а команда
LLIST - на печатающее устройство. При выводе текста за номером
строки идет пробел, а далее непосредственно сам текст строки.
Если оба аргумента опущены, то выводится весь текст
программы. Если задан только один аргумент, то выводится строка с
указанным номером. Тире перед номером строки (или после него)
указывает, что надо выводить весь текст до (или после) строки с
указанным номером, включая эту строку. Если заданы оба аргумента,
то выводятся все строки с номерами из указанного интервала. Для
указания номера "текущей" строки можно использовать символ ".".
Следует отметить, что эта команда не проверяет наличие в
программе строк с указанными номерами, поэтому в таком случае
сообщения об ошибке не выдается. Однако, если в программе
существуют строки с номерами из заданного интервала, то они
выводятся на указанное устройство. Если строк с указанными
номерами нет в программе, то выполнение команды оканчивается и
выводится приглашение "Ok".
Вывод строк можно приостановить одновременным нажатием на
клавиши <СУ> и <@>. Продолжение действий - нажатие любой клавиши.
Как всегда, любые действия прерывает клавиша <СТОП>.
Пример:
200 REM ПОСЛЕДНЯЯ
150 REM СРЕДНЯЯ
100 REM ПЕРВАЯ
LIST .
100 REM ПЕРВАЯ
Ok
LIST -175
100 REM ПЕРВАЯ
150 REM СРЕДНЯЯ
Ok
- 26 -
У1.00031-01 35 01
3.3.2. Команда DELETE
Команда удаляет строки текста программы.
Формат:
DELETE [<АРГУМЕНТ1>][-[<АРГУМЕНТ2>]]
<АРГУМЕНТ1>::= НОМЕР ПЕРВОЙ СТРОКИ УДАЛЯЕМОГО
ФРАГМЕНТА ПРОГРАММЫ;
<АРГУМЕНТ2>::= НОМЕР ПОСЛЕДНЕЙ СТРОКИ.
По этой команде удаляются строки, начиная с номера,
указанного АРГУМЕНТОМ 1, до номера, указанного АРГУМЕНТОМ 2. Если
АРГУМЕНТ 1 опущен, то вместо него берется номер первой строки
программы. Аналогично, если опущен аргумент 2, то вместо него
берется номер последней строки программы. Если в качестве
АРГУМЕНТА 1 (или АРГУМЕНТА 2) задается ".", то берется "текущая"
строка программы. В отличие от команды LIST, если в тексте
программы строка с указанным номером не существует, то выдается
сообщение об ошибке 8.
ПРИМЕЧАНИЕ: эта команда может удалить всю программу или ее
часть, поэтому пользоваться ею надо очень осторожно.
Пример:
DELETE 100-200
Ok
DELETE .
Ok
DELETE -5000
Ok
DELETE 50-.
Ok
DELETE 135
Ok
3.3.3. Команда RENUM
Команда перенумеровывает строки текста программы.
Формат:
RENUM [<АРГУМЕНТ1>][,< АРГУМЕНТ2>][,< АРГУМЕНТ3>]
< АРГУМЕНТ1>::= НОМЕР ПЕРВОЙ СТРОКИ ПЕРЕНУМЕРОВАННОГО
ФРАГМЕНТА;
< АРГУМЕНТ2>::= НОМЕР СТРОКИ, С КОТОРОГО НАЧИНАЕТСЯ
ПЕРЕНУМЕРОВЫВАЕМЫЙ ФРАГМЕНТ;
< АРГУМЕНТ3>::= ШАГ ПЕРЕНУМЕРАЦИИ, ЦЕЛАЯ КОНСТАНТА ИЗ
ИНТЕРВАЛА [0,65535].
По умолчанию АРГУМЕНТ 1 и АРГУМЕНТ 3 равны 10, а АРГУМЕНТ 2
- 27 -
У1.00031-01 35 01
равен номеру первой строки программы. Вместо АРГУМЕНТА 1 и
АРГУМЕНТА 2 можно использовать точку - она указывает на номер
"текущей" строки.
Эта команда применяется для изменения номеров строк в
программе. RENUM также проверяет, все ли строки, номера которых
указаны в операторах, действительно существуют. Если обнаружено,
что строки с указанным номером в программе нет, то выдается
сообщение об ошибке 8.
Эта команда перенумеровывает строки программы, начиная со
строки с номером, заданным АРГУМЕНТОМ 2. Номеру этой строки
присваивается значение АРГУМЕНТА 1, а последующие строки
нумеруются с шагом, заданным АРГУМЕНТОМ 3.
Пример:
RENUM 60,55
RENUM ,,5
3.3.4. Команда AUTO
Команда переводит в режим автоматической нумерации строк для
ввода текста программы.
Формат:
AUTO [<АРГУМЕНТ1>][,<АРГУМЕНТ2>]
<АРГУМЕНТ1>::= НАЧАЛЬНЫЙ НОМЕР СТРОКИ;
<АРГУМЕНТ2>::= ПРИРАЩЕНИЕ, ЧИСЛО ИЗ ИНТЕРВАЛА
[0,65535].
Команда AUTO позволяет задавать автоматический ввод номеров
строк при вводе текста программы, т.е., при нажатии клавиши
<ВВОД>, генерируется и выводится на экран следующий номер строки.
номера строк увеличиваются с шагом, равным значению второго
аргумента. При отсутствии первого, второго или обоих аргументов
считается, что они равны 10.
Точка, указанная на месте первого аргумента, рассматривается
как номер "текущей" строки.
Если окажется, что строка с очередным сгенерированным
номером в тексте программы уже существует, этот текст выводится
на экран. После этого он может быть отредактирован и введен
нажатием клавиши <ВВОД>. Если редакции строки не требуется, то,
нажав клавишу <ВВОД>, можем перейти к вводу следующей строки.
Для окончания режима AUTO достаточно нажать клавишу
<СТОП> или <СУ> и <C> одновременно, что возвращает систему в
непосредственный режим.
Пример:
110 END
AUTO 100
100 PRINT "ПРИМЕР"
110 END (НАЖИМАЙТЕ КЛАВИШУ "ВВОД")
- 28 -
У1.00031-01 35 01
120 (НАЖИМАЙТЕ КЛАВИШИ <СУ> И <C>
ОДНОВРЕМЕННО)
LIST
100 PRINT "ПРИМЕР"
110 END
Ok
3.3.5. Команда NEW
По этой команде удаляется программа пользователя.
Формат:
NEW
Команда используется для очистки всех переменных программы
(оператор CLEAR) и удаления программы из памяти.
4. ОПЕРАТОРЫ
Операторы языка изменяют значения переменных, естественный
порядок вычислений согласно алгоритму решения задачи, резервируют
память под переменные и константы и т.д.
4.1. Основные операторы
К основным операторам относятся: операторы присваивания,
безусловного и условного перехода, цикла, обращения к
подпрограмме и др.
В операторах перехода используются номера строк - целые
константы из интервала [0,65535]. Использование точки (".")
вместо номера строки недопустимо.
4.1.1. Оператор LET
Это основной оператор для присвоения новых значений
переменным.
Формат:
[LET] <АРГУМЕТ>=<ВЫРАЖЕНИЕ>
<АРГУМЕНТ>::=<ПЕРЕМЕННАЯ>
<ФУНКЦИЯ MID¤>
- 29 -
У1.00031-01 35 01
Оператор LET служит для присвоения значения выражения,
находящегося справа от знака равенства, переменной, находящейся
слева от этого знака. Тип выражения должен совпадать с типом
переменной.
При присваивании, если это необходимо, производится
преобразование типов переменных. Попытка присвоить символьное
значение числовой переменной или наоборот приведет к ошибке 13.
Заметим, что слово LET в этом операторе не обязательно.
Пример:
10 LET X=1
20 Y=2*3
30 A¤=B¤+" "
40 LET D¤=A¤
50 MID¤(C¤,1%,2%)=D¤
4.1.2. Оператор GOTO
Оператор передает управление строке с указанным номером.
Формат:
GOTO <НОМЕР СТРОКИ>
Оператор перехода GOTO служит для изменения естественного
порядка выполнения программы (т.е., выполнения в порядке
возрастания номеров строк).
При выполнении оператора GOTO управление передается на
строку с указанным номером. Если строка с указанным номером
отсутствует, выдается сообщение об ошибке 8.
Пример:
10 INPUT X
20 IF X<>0 THEN GOTO 40
30 END
40 PRINT X
50 GOTO 10
4.1.3. Оператор GOSUB
Оператор передает управление подпрограмме.
Формат:
GOSUB <НОМЕР СТРОКИ>
Оператор GOSUB используется для вызова подпрограммы - группы
операторов, которая начинается с указанного номера строки и
заканчивается оператором RETURN. Подпрограмма может находиться в
любом месте программы и вызываться сколько угодно раз. RETURN
возвратит управление оператору, следующему за вызвавшим
подпрограмму оператором GOSUB.
- 30 -
У1.00031-01 35 01
При отсутствии строки с указанным номером выдается сообщение
об ошибке 8. Вход в подпрограмму не через GOSUB вызывает ошибку
3.
4.1.4. Оператор RETURN
Оканчивает подпрограмму и осуществляет возврат к следующему
за GOSUB оператору.
Формат:
RETURN
RETURN осуществляет возврат к оператору, который находится
непосредственно за оператором, вызвавшим подпрограмму. После
возвращения все незаконченные циклы FOR-NEXT в подпрограмме
завершаются, т.е., вся информация о них "забывается", например:
10 GOSUB 100
20 END
100 FOR I=1 TO 10
110 PRINT "KUKU"
120 RETURN
RUN
KUKU
Ok
В подпрограмме возможны вложенные вызовы других подпрограмм.
Дополнительной возможностью оператора RETURN является
использование в нем аргумента, указывающего оператор, которому
должно передаться управление после завершения подпрограммы, что
позволяет вернуться необязательно к месту вызова.
- 31 -
У1.00031-01 35 01
Пример:
10 I=1
20 GOSUB 100
30 I=2
40 GOSUB 100
50 END
100 REM ПОДПРОГРАММА
110 PRINT "SUB";I
120 RETURN
4.1.5. Оператор IF
Оператор IF выполняет одну из ветвей в зависимости от
условия.
Формат:
THEN <ОПЕРАТОР> <ОПЕРАТОР>
IF <АРГУМЕНТ> [ ELSE ]
THEN <НОМЕР СТРОКИ> <НОМЕР СТРОКИ>
GOTO
<АРГУМЕНТ>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ОПРЕДЕЛЯЮЩЕЕ УСЛОВИЕ;
<ОПЕРАТОР>::= ЛЮБОЙ ОПЕРАТОР БЕЙСИКА;
<НОМЕР СТРОКИ>::= НОМЕР СУЩЕСТВУЮЩЕЙ СТРОКИ.
Оператор вычисляет значение аргумента и преобразовывает его
в целый тип. Нулевой результат считается как "ложь", ненулевой -
"истина".
Если условие оказывается "истина", то выполняется указанный
оператор или происходит переход к строке с указанным номером. В
случае номера строки вместо слова THEN можно использовать слово
GOTO.
Если аргумент принимает значение "ложь", то выполняется
ветвь ELSE или управление сразу же передается следующей строке,
если ветвь ELSE отсутствует.
В качестве <ОПЕРАТОРА> может быть любой оператор БЕЙСИКА,
даже другой оператор IF. В качестве условия обычно используются
выражения, соединенные операциями отношения и логическими
операциями.
Пример:
10 INPUT A,B,C
20 IF A<B THEN PRINT A;" < ";B
30 I%=NOT ( B<C AND A<C )
40 IF I% GOTO 10 ELSE PRINT A;"И ";B;"< ";C
- 32 -
У1.00031-01 35 01
4.1.6. Оператор FOR
Оператор FOR вместе с оператором NEXT организует циклическое
выполнение группы операторов.
Формат:
FOR <ПАРАМЕТР>=<АРГУМЕНТ1> TO <АРГУМЕНТ2>
[STEP <АРГУМЕНТ3>]
<ПАРАМЕТР>::=ЧИСЛОВАЯ ПЕРЕМЕННАЯ (СЧЕТЧИК ПОВТОРЕНИЙ
ЦИКЛА);
<АРГУМЕНТ1>::=АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ (НАЧАЛЬНОЕ
ЗНАЧЕНИЕ <ПАРАМЕТРА>);
<АРГУМЕНТ2>::=АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ, ОПРЕДЕЛЯЮЩЕЕ
КОНЕЦ ПОВТОРЕНИЙ ЦИКЛА;
<АРГУМЕНТ3>::=АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ (ПРИРАЩЕНИЕ
<ПАРАМЕТРА>, ПО УМОЛЧАНИЮ РАВНО 1).
Во время первого выполнения цикла значение АРГУМЕНТА 1
присваивается ПАРАМЕТРУ цикла. Выполнение операторов, входящих в
цикл, продолжается до появления оператора NEXT. После этого
значение ПАРАМЕТРА увеличивается (или уменьшается, если значение
АРГУМЕНТА 3 отрицательное) на значение АРГУМЕНТА 3 и сравнивается
со значением АРГУМЕНТА 2. Если значение ПАРАМЕТРА больше (меньше,
если АРГУМЕНТ 3 отрицательный) значения АРГУМЕНТА 2, то
выполняются следующие за NEXT операторы, в противном случае
повторяется выполнение операторов, находящихся между операторами
FOR и NEXT.
Допустимы вложенные циклы. Они не должны пересекаться, т.
е. NEXT внутреннего цикла должен появиться раньше, чем NEXT
наружного цикла.
Возможен неестественный выход из цикла, при помощи
операторов перехода, минуя оператор NEXT.
Вход в цикл, минуя оператор FOR, не допускается.
4.1.7. Оператор NEXT
Определяет конец операторов цикла.
Формат:
NEXT [<ПАРАМЕТР>[,< ПАРАМЕТР >...]]
<ПАРАМЕТР>::= ЧИСЛОВАЯ ПЕРЕМЕННАЯ, СООТВЕТСТВУЮЩАЯ
ПАРАМЕТРУ ОПЕРАТОРА FOR.
Оператор NEXT выполняет приращение параметра цикла,
проверяет достижение предельного значения и, в зависимости от
этого, осуществляет выход из цикла.
- 33 -
У1.00031-01 35 01
NEXT с параметром используется с целью указания, к какому
FOR он относится. NEXT со списком параметров, разделенных
запятыми, используется для заканчивания в одном месте нескольких
вложенных циклов. В таком случае первая переменная в списке
должна принадлежать самому внутреннему циклу, а последняя -
наружному. При заканчивании наружного цикла информация о
внутренних циклах теряется, например:
10 FOR I=1 TO 2
20 FOR J=1 TO 10
30 PRINT J
40 NEXT I
RUN
1
1
Ok
Тело цикла должно размещаться в одной программной секции,
т. е. цикл, объявленный в главной программе, нельзя заканчивать в
подпрограмме и наоборот. Вход в цикл не через оператор FOR
вызывает ошибку 1.
Пример:
10 FOR X=1 TO 10
20 FOR Y=10 TO 1 STEP -2
30 PRINT Y
40 NEXT Y
50 PRINT TAB(3);X
60 NEXT
4.1.8. Оператор ON
Оператор осуществляет ветвление в зависимости от значения
выражения.
Формат:
ON <ВЫРАЖЕНИЕ> [GOTO ] <СПИСОК>
GOSUB
<ВЫРАЖЕНИЕ>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ПРИНИМАЮЩЕЕ ЗНАЧЕНИЯ
ИНТЕРВАЛА [0,32767].;
<СПИСОК>::= СПИСОК НОМЕРОВ СУЩЕСТВУЮЩИХ СТРОК,
РАЗДЕЛЕННЫХ ЗАПЯТЫМИ.
Этот оператор позволяет переход на несколько строк. При
выборе номера строки вычисляется значение выражения. Если
результат равен нулю или больше,чем число номеров строк в списке,
то управление передается следующему оператору. Если значение
выражения соответствует номеру строки из списка (считая слева 1,
2 и т.д.), то этот номер строки употребляется оператором GOSUB
или GOTO.
Если выполняется оператор GOSUB <НОМЕР СТРОКИ>, то оператор
RETURN возвращает управление оператору, следующему за оператором
ON.
Этот оператор употребляется в том случае, если есть ряд
- 34 -
У1.00031-01 35 01
задач, которые выбираются в зависимости от того, какое значение
принимает выражение. Если задачи короткие и связаны с значением
выражения, то употребляется ON GOTO. Если же эти задачи больше и,
возможно, связаны с другим оператором ON или к ним обращаются с
других мест программы, то употребляется оператор ON GOSUB, и
каждую задачу нужно оформить в виде подпрограммы.
Отрицательное значение выражения приводит к ошибке 5.
Пример:
10 A¤=INKEY¤
20 IF A¤="" THEN 10
30 ON ASC(A¤)-64% GOSUB 100,200,300
40 GOTO 10
4.1.9. Оператор STOP
Временно останавливает выполнение программы.
Формат:
STOP
Оператор STOP используется для организации диалога при
отладке программ. При выполнении оператора STOP программа
останавливается, на терминале индицируется сообщение
Стоп в строке YYYYY
Ok
и ЭВМ переходит в непосредственный режим. После приостановки
программы можно распечатать или даже изменить значения
переменных. Командой CONT выполнение программы может быть
продолжено с оператора, следующего за оператором STOP. После
редактирования текста программы попытка возобновить выполнение
программы приводит к ошибке 17. В этом случае для пуска программы
используется команда RUN.
Пример:
10 A=10
20 STOP
30 A=20
40 PRINT A
RUN
Стоп в строке 20
PRINT A
10
Ok
CONT
20
Ok
- 35 -
У1.00031-01 35 01
4.1.10. Оператор END
Заканчивает выполнение программы и закрывает файлы.
Формат:
END
Оператор прекращает выполнение программы и осуществляет
возврат в непосредственный режим. END может находиться в любом
месте программы. Оператор удобен для отделения главной программы
от подпрограмм во избежание передачи управления подпрограмме не
через оператор GOSUB.
- 36 -
У1.00031-01 35 01
Пример:
10 GOSUB 30
20 END
30 PRINT A¤
40 RETURN
4.1.11. Оператор REM
Обозначает комментарии в тексте программы.
Формат:
REM [<ТЕКСТ>]
'
<ТЕКСТ> - ЛЮБАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ СИМВОЛОВ.
Оператор служит для включения комментария в текст программы
с целью удобства чтения алгоритма, для идентификации и
определения порядка работы программ, а также в качестве пустого
оператора. Весь текст за словом REM игнорируется. Другой способ
определения замечаний в тексте программы - это апостроф ("'"). В
отличии от REM, для которого необходима отдельная строка
программы, апостроф может использоваться после любого другого
оператора, автоматически заканчивая его.
Ввиду того, что комментарий занимает дополнительное место в
оперативной памяти, уменьшается место для хранения других
операторов.
Пример:
10 REM ПОДПРОГРАММА ВВОДА
200 X=1 ' ПЕРЕМЕННАЯ ЦИКЛА
4.2. Операторы описания, резервирования памяти и
установки начальных значений
Операторы резервирования памяти служат резервированию
оперативной памяти для массивов и постоянных величин. Память для
переменных резервируется в локальной или общей области данных.
Память для постоянных величин резервируется в области
генерируемой программы при компиляции. Для резервирования памяти
переменным и массивам используется оператор DIM, для
резервирования памяти постоянным величинам - DATA. Для присвоения
переменным значений постоянных величин используются операторы
READ и RESTORE.
- 37 -
У1.00031-01 35 01
4.2.1. Оператор DIM
Оператор DIM резервирует память для переменных и массивов,
придавая им нулевые значения.
Формат:
DIM <АРГУМЕНТ>[,<АРГУМЕНТ>...]
<АРГУМЕНТ>::= ДОПУСТИМОЕ ИМЯ ПЕРЕМЕННОЙ, ЗА КОТОРЫМ
МОЖЕТ СЛЕДОВАТЬ ЗАКЛЮЧЕННЫЙ В СКОБКИ
СПИСОК МАКСИМАЛЬНЫХ ЗНАЧЕНИЙ ИНДЕКСОВ
МАССИВА.
Этот оператор обычно используется для определения массивов,
но может определять и отдельные переменные. Каждый массив имеет
заданное в списке число индексов. Максимальное значение индекса
указывается целым выражением, принимающим значения из интервала
[0,255].
Возможно неявное определение переменных и массивов. Такое
определение происходит каждый раз при появлении имени
неопределенной переменной. Простые переменные обычно определяются
именно таким способом. При появлении имени индексированной
переменной определяется одномерный массив с максимальным
значением индекса 10.
Неявное определение массива невозможно в непосредственном
режиме и вызывает ошибку 12. Попытка повторного определения уже
объявленного или определенного по умолчанию массива приводит к
ошибке 10. Если не хватает оперативной памяти для определения
массива, выдается сообщение об ошибке 7.
Пример:
10 DIM X,I%,Z(5,20,3),A¤(30)
4.2.2. Оператор KEY
Этот оператор изменяет значения функциональных клавиш.
Формат:
KEY <АРГУМЕНТ1>,<АРГУМЕНТ2>
<АРГУМЕНТ1>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ОПРЕДЕЛЯЮЩЕЕ НОМЕР
ФУНКЦИОНАЛЬНОЙ КЛАВИШИ, ЧИСЛО ИЗ ИН-
ТЕРВАЛА [1,10];
<АРГУМЕНТ1>::= СИМВОЛЬНОЕ ВЫРАЖЕНИЕ, ОПРЕДЕЛЯЮЩЕЕ
ЗНАЧЕНИЕ КЛЮЧА (ИСПОЛЬЗУЮТСЯ ТОЛЬКО
ПЕРВЫЕ 16 СИМВОЛОВ).
Оператор используется для изменения значений функциональных
ключей, установленных по умолчанию. Первые 16 символов АРГУМЕНТА
2 присваиваются ключу, указанному АРГУМЕНТОМ 1.
В служебной строке экрана высвечиваются первые символы
- 38 -
У1.00031-01 35 01
значений функциональных клавиш. Оператор KEY производит
соответствующие изменения служебной строки.
Для ввода символа "ПС" или кавычек можно воспользоваться
функцией CHR¤.
Если значение первого аргумента выходит за пределы
допустимого интервала, получается ошибка 5.
По умолчанию функциональные клавиши имеют следующие
значения:
COLOR
AUTO
GOTO
LIST
RUN <ВК>
COLOR 8,2,2 <ВК>
CLOAD "
CONT <ВК>
LIST. <ПС> <АР2>A<АР2>A
<СБР> RUN <ВК>
(управляющий символ "СБР" имеет восьмеричный код 14 и
означает очистку экрана).
Пример:
KEY 1,"LINE "
KEY 2,"SAVE "+CHR¤(34)
KEY 3,"PRINT PI"+CHR¤(13)
4.2.3. Оператор CLEAR
Очищает значения переменных, резервирует символьную и не-
бейсиковую память.
Формат:
CLEAR [<АРГУМЕНТ1>[,< АРГУМЕНТ2>]]
<АРГУМЕНТ1>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, УКАЗЫВАЮЩЕЕ ЧИСЛО
БАЙТОВ ОБЛАСТИ ПАМЯТИ, РЕЗЕРВИРУЕМОЙ
ДЛЯ СИМВОЛЬНЫХ ПЕРЕМЕННЫХ;
<АРГУМЕНТ2>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, УКАЗЫВАЮЩЕЕ АДРЕС
ВЕРХНЕЙ ГРАНИЦЫ ОБЛАСТИ ОПЕРАТИВНОЙ
ПАМЯТИ, ИСПОЛЬЗУЕМОЙ БЕЙСИК-СИСТЕМОЙ,
ДОЛЖЕН НЕ ПРЕВЫШАТЬ ВОСЬМЕРИЧНОГО 70000.
При любой форме оператора очищаются массивы и переменные,
определенные функции, символьные строки, а также аппаратный стек,
закрываются все файлы, а любая распечатка заканчивается символом
"ПС". Определения функций USR остаются неизменными.
Первый аргумент используется для установления размера
области памяти для хранения текста строк, по умолчанию он равен
200 байтов. Если задан АРГУМЕНТ1, то для символьных строк
резервируется указанное число байтов.
Второй аргумент используется для указания начала области,
- 39 -
У1.00031-01 35 01
которая не может использоваться для программ и данных БЕЙСИКА.
Таким образом определяется область для неформатированных данных,
функций USR или другого использования. После выполнения CLEAR с
двумя параметрами в косвенном режиме объектный код теряется, и
БЕЙСИК-система переходит в непосредственный режим.
Многие операции делают CLEAR автоматически, например, RUN,
NEW, MERGE, LOAD и любое изменение текста программы БЕЙСИКА. Если
параметры в CLEAR не указаны, то соответствующие значения
величины области строк и верхней границы оперативной памяти не
изменяются.
Слишком большое значение первого или слишком малое второго
аргумента вызывает недостаток оперативной памяти, и выдается
сообщение об ошибке 7. Указание второго аргумента при отсутствии
первого вызывает ошибку 2. Если АРГУМЕНТ 2 больше восьмеричного
70000, выдается сообщение об ошибке 5.
Пример:
CLEAR 1000,&O30000
Ok
(резервируется 1000 байтов для строк и ОЗУ свыше &O30000 для
пользовательских целей).
4.2.4. Оператор DATA
Сохраняет заданные в тексте программы константы для
последующего пользования.
Формат:
DATA <ЭЛЕМЕНТ>[,<ЭЛЕМЕНТ>...]
<ЭЛЕМЕНТ>::= ЧИСЛОВАЯ КОНСТАНТА, ТЕКСТОВАЯ КОНСТАНТА
В КАВЫЧКАХ ИЛИ БЕЗ КАВЫЧЕК, НО НЕ
ВКЛЮЧАЮЩАЯ ЗАПЯТЫХ.
Этот оператор позволяет сохранять "начальные" величины в
теле программы. В режиме непосредственного выполнения оператор
DATA игнорируется. Во время выполнения программы он тоже
опускается, и только оператор READ может использовать его.
Во время чтения данные, выбираются начиная с оператора DATA с
наименьшим номером строки, а следующие операторы выбираются
последовательно. Когда все данные исчерпаны, дальнейшее чтение
невозможно до появления оператора RESTORE.
В списке оператора DATA запятая используется как
разделитель. Апостроф не завершает списка и не означает начала
комментария. Разрешены любые числовые константы, включая &H, &O,
&B, экспонентную форму, константы с явно указанным типом. Если в
текстовой константе нет разделителя, то кавычки могут быть
опущены.
- 40 -
У1.00031-01 35 01
4.2.5. Оператор READ
Вводит данные из оператора DATA в программу.
Формат:
READ <ПЕРЕМЕННАЯ>[,<ПЕРЕМЕННАЯ>...]
<ПЕРЕМЕННАЯ>::= ДОПУСТИМОЕ ИМЯ ПЕРЕМЕННОЙ (ВКЛЮЧАЯ
ЭЛЕМЕНТ МАССИВА).
Этот оператор читает следующие еще непрочитанные данные из
оператора DATA. Процесс повторяется до тех пор, пока все
переменные из списка заберут свои значения. Оператор READ
пересматривает все записи каждого оператора DATA, анализируя их с
начала программы до конца. Для чтения данных несколько раз можно
воспользоваться оператором RESTORE.
В случае обнаружения конца операторов DATA выдается
сообщение об ошибке 4. При попытке читать текстовые данные в
числовые переменные получается ошибка 13.
Пример:
10 DATA 1,&O22,&H3F
20 FOR I%=0 TO 5%
30 DATA 234E-7
40 READ X(I%)
50 NEXT I%
60 DATA -33%,44.56,TEXT,"A,B"
70 READ A¤,B¤
4.2.6. Оператор RESTORE
Изменяет порядок чтения данных из оператора DATA оператором
READ.
Формат:
RESTORE [<НОМЕР СТРОКИ>]
<НОМЕР СТРОКИ>::= НОМЕР СУЩЕСТВУЮЩЕЙ СТРОКИ.
Этот оператор изменяет значение указателя, определяющего,
который из операторов DATA будет использован следующим в
операторе READ. READ перемещает указатель последовательно, пока
все операторы DATA не будут использованы. Оператор RESTORE
возвращает указатель в начало программы и все данные заново могут
быть введены. В случае присутствия номера строки будут
рассматриваться операторы DATA с указанным или большими номерами
строк. Повторно использовать оператор RESTORE можно в любом месте
программы. Он позволяет смотреть на операторы DATA как на
устройство ввода данных с возможностью повторного чтения.
- 41 -
У1.00031-01 35 01
Пример:
1000 RESTORE
1010 FOR I%=0% TO 10%
1020 READ X(I%)
1030 NEXT I%
1040 RETURN
(подпрограмма, заполняющая массив X)
4.2.7. Оператор DEF
4.2.7.1. Оператор DEF USR
Определяет функции на машинном языке.
Формат:
DEF USR[<ЦИФРА>]=<ВЫРАЖЕНИЕ>
<ЦИФРА>::= ЦЕЛАЯ КОНСТАНТА ИЗ ИНТЕРВАЛА [0,9],
УКАЗЫВАЮЩАЯ НОМЕР ФУНКЦИИ, ПО
УМОЛЧАНИЮ 0;
<ВЫРАЖЕНИЕ>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ОПРЕДЕЛЯЮЩЕЕ АДРЕС
ЗАПУСКА ФУНКЦИИ USR.
Оператор определяет начальный адрес машинной подпрограммы,
составленной пользователем. Значение выражения переводится в
целый тип и считается адресом запуска программы. Отрицательные
значения от минус 32768 до минус 1 означают адреса от 32768 до
65535 соответственно. Для указания адресов удобно пользоваться
восьмеричными константами.
Одновременно могут быть определены 10 функций USR( ). Номер
определяемой функции указывается цифрой. Адреса вызова
подпрограмм хранятся в области USRTAB(&O2100), где каждой USR( )
выделяется по одному слову. Действие оператора можно представить
как заполнение USRTAB.
Для выполнения программы на машинном языке необходимо
выполнить последовательность операторов
10 DEF USR=&ONNNNNN
20 A=USR(A)
Обычным способом загрузки машинной программы в память
является использование команды BLOAD, которая запоминает
начальный адрес загруженной программы в ячейке BUFSTA(&O264).
Таким образом, логична последовательность
BLOAD "PROG"
PROG .BIN
Ok
- 42 -
У1.00031-01 35 01
DEF USR5=PEEK(&O264)
Ok
Для выделения памяти функциям USR( ) используется оператор
CLEAR. Этот оператор сохраняет все определения DEF USR.
4.2.7.2. Оператор DEF FN
Определяет пользовательские функции.
Формат:
DEF FN <ИМЯ>[(<СПИСОК>)]=<ВЫРАЖЕНИЕ>
<ИМЯ>::= ЛЮБОЕ ДОПУСТИМОЕ ИМЯ ПЕРЕМЕННОЙ;
<СПИСОК>::= ОДИН ИЛИ НЕСКОЛЬКО ИМЕН ФОРМАЛЬНЫХ
ПАРАМЕТРОВ (ДОПУСТИМЫХ ИМЕН ПЕРЕМЕННЫХ),
РАЗДЕЛЕННЫХ ЗАПЯТЫМИ;
<ВЫРАЖЕНИЕ>::= ЛЮБОЕ ВЫРАЖЕНИЕ ТАКОГО ЖЕ ТИПА, КАК И
<ИМЯ>.
При выполнении этого оператора создается переменная <ИМЯ>,
отмеченная как имя функции. Никаких вычислений оператор не
производит и может быть в любом месте программы. Переменная <ИМЯ>
не доступна обычным путем, и может быть создана нормальная
переменная с таким же самым именем. В случае создания другой
функции с таким же самым именем старое определение теряется.
Функция может иметь любое число параметров. Они определяются
как список имен переменных любого типа, разделенных запятыми и
заключенных в скобки. Параметры являются формальными и реально не
существуют, т.е. любая обычная переменная может иметь такое же
имя. Каждый аргумент должен быть такого типа, что ему могло бы
присвоиться значение фактического аргумента, задаваемого при
вызове функции, и результат возвращается в место вызова функции.
Если в этом выражении есть имена переменных, объявленных
формальными аргументами, то их значения берутся соответственно
списку фактических аргументов в вызове функции. В выражении также
можно использовать любые другие переменные, если их имена не
совпадают с именами формальных аргументов. В выражении могут быть
любые обращения к функциям, также и нерекурсивные обращения к
функциям FN.
Ошибки проверяются только при вызове функции. При
обнаружении ошибки в строке, вызывающей пользовательскую функцию,
следует проверить определение этой функции.
DEF FN, в отличии от DATA, является выполняемым оператором,
т.е. функция должна определяться раньше ее вызова. Этот
оператор - один из немногих, запрещенных в непосредственном
режиме.
Пример:
10 DEF FN QU¤(QU,ST)=MID¤(QL¤,QU,ST)
20 PRINT FN QU¤(CO,LEN(CO))
- 43 -
У1.00031-01 35 01
4.3. Операторы ввода/вывода
Операторы ввода/вывода INPUT, PRINT и другие позволяют
организовать обмен информацией с внешними устройствами.
4.3.1. Оператор PRINT
Выводит данные на экран, печатающее устройство или файл на
магнитной ленте.
Формат:
PRINT
? [#]
[<СПИСОК>]
LPRINT
<СПИСОК>::= ОДНО ИЛИ НЕСКОЛЬКО ВЫРАЖЕНИЙ ЛЮБОГО ТИПА,
ФУНКЦИЙ ОПЕРАТОРА PRINT, РАЗДЕЛЕННЫХ
ЗАПЯТОЙ ИЛИ ТОЧКОЙ С ЗАПЯТОЙ;
L УКАЗЫВАЕТ, ЧТО ВЫВОД ОСУЩЕСТВЛЯЕТСЯ НА ПЕЧАТАЮЩЕЕ
УСТРОЙСТВО;
# ОБОЗНАЧАЕТ ВЫВОД В ФАЙЛ НА МАГНИТНОЙ ЛЕНТЕ.
Слово PRINT может быть заменено вопросительным знаком "?",
за исключением варианта LPRINT.
LPRINT должен работать на РМП.
Оператор пересылает данные на устройство вывода. Обычно
устройством вывода является экран, но этот оператор может вывести
данные и на печатающее устройство или в открытый файл на кассет-
ной магнитной ленте. Список выводимых данных может быть пустым
или содержать несколько выражений любого типа, значения
которых преобразуется в текст и выводятся на указанное
устройство. Запятая между двумя элементами списка данных означает,
что данные будут выводится зонами, т.е. каждому элементу списка
выделяется по 16 позиций. Остаток зоны за данными заполняется
пробелами. Если данные не помещаются в зоне, берется следующая
зона. Если между двумя аргументами списка данных стоит точка с
запятой, то значения выводятся непосредственно друг за другом.
Если запятая или точка с запятой является последней в списке
данных, то курсор остается на той же позиции, на которой
был после вывода последнего значения, в противном случае
осуществляется перевод строки.
Оператор LPRINT выводит все данные на печатающее устройство.
Пример:
PRINT 1;-2,3
1 -2 3
Ok
- 44 -
У1.00031-01 35 01
4.3.2. Оператор INPUT
Вводит данные с клавиатуры или из файла.
Формат:
INPUT [<АРГУМЕНТ>;][<СПИСОК>]
#
<АРГУМЕНТ>::= ПОДСКАЗКА В ВИДЕ ТЕКСТОВОЙ КОНСТАНТЫ;
<СПИСОК>::= ОДНА ИЛИ НЕСКОЛЬКО ПЕРЕМЕННЫХ ИЛИ
ЭЛЕМЕНТОВ МАССИВА, РАЗДЕЛЕННЫХ ЗАПЯТЫМИ;
# УКАЗЫВАЕТ НА ВВОД ИЗ ФАЙЛА НА МАГНИТНОЙ ЛЕНТЕ.
Этот оператор организует ввод с клавиатуры или из открытого
оператором OPEN файла на магнитной ленте. Если знака "#" нет, то
ввод осуществляется с клавиатуры. Если в случае ввода с
клавиатуры указан <АРГУМЕНТ>, то он выводится на экран как
подсказка. Затем выводится вопросительный знак "?", высвечивается
курсор, и БЕЙСИК-система ожидает ввода данных. В качестве данных
могут быть любые константы, по типу и числу соответствующие
элементам списка. В качестве разделителей используются запятые. В
текстовых константах могут отсутствовать кавычки, если они не
содержат запятых. Если ввод прекращается раньше конца списка
переменных, то на следующей строке выдаются знаки "??", и
БЕЙСИК-система ждет продолжения ввода. Если вводится больше
данных, чем переменных в списке, то последние значения
игнорируются.
Если при вводе числовых данных встречаются недопустимые
знаки, то выдается сообщение об ошибке 13 и осуществляется
повторный ввод. При попытке оператором INPUT # прочесть метку
конца файла выдается сообщение об ошибке 55.
Пример:
INPUT "ДАННЫЕ";A,B¤,C¤
ДАННЫЕ?123,"ABC,EFG"
??P"Q
Ok
PRINT A,B¤,C¤
123 ABC,EFG P"Q
Ok
- 45 -
У1.00031-01 35 01
4.3.3. Оператор OPEN
Определяет файл данных на магнитной ленте.
Формат:
OPEN <СПЕЦИФИКАЦИЯ ФАЙЛА> [FOR INPUT]
OUTPUT
<СПЕЦИФИКАЦИЯ ФАЙЛА>::= СИМВОЛЬНОЕ ВЫРАЖЕНИЕ, ОПРЕДЕ-
ЛЯЮЩЕЕ ИМЯ ФАЙЛА.
Оператор начинает процесс ввода/вывода данных. Буфер
ввода/вывода связывается с именем файла. Слова INPUT и OUTPUT
указывают, что открываются соответственно входной или выходной
файл. Данные на магнитной ленте хранятся в формате КОИ-7 блоками
по 256 символов. Конец файла оз