CTP. 1 207537 1.00100-01 35 МИНИСТЕРСТВО ВЫСШЕГО И СРЕДНЕГО СПЕЦИАЛЬНОГО ОБРАЗОВАНИЯ ЛИТ.ССР ВЫЧИСЛИТЕЛЬНЫЙ ЦЕНТР ВИЛЬНЮССКОГО ГОСУНИВЕРИТЕТА УТВЕРЖДЕН 207537 1.00100-01 35 ЛУ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ МИКРО-ЭВМ "ЭЛЕКТРОНИКА БК 0010" ЯЗЫК "БЕЙСИК" ОПИСАНИЕ ЯЗЫКА 207537 1.00100-01 35 ЛИСТОВ 1985 CTP. 2 207537 1.00100-01 35 1. АННОТАЦИЯ ДАННЫЙ ДОКУМЕНТ ПРЕДСТАВЛЯЕТ СОБОЙ РУКОВОДСТВО ПО ЯЗЫКУ ПРОГРАММИРОВАНИЯ БЕЙСИК (ВЕРСИЯ 1985.11.01.) И ПРЕДНАЗНАЧЕН ДЛЯ ПОЛЬЗОВАТЕЛЕЙ МИКРО-ЭВМ "ЭЛЕКТРОНИКА БК 0010". ЯЗЫК БЕЙСИК СОЗДАН ДЛЯ РЕШЕНИЯ МАТЕМАТИЧЕСКИХ И ИНЖЕНЕРНЫХ ЗАДАЧ В РЕЖИМЕ ДИАЛОГА ЧЕЛОВЕК-ЭВМ. ОН ПОЗВОЛЯЕТ СОЗДАВАТЬ ПРОГРАММЫ ДЛЯ БОЛЬШОГО КРУГА ЗАДАЧ, СОЧЕТАЯ В СЕБЕ ПРОСТОТУ ИСПОЛЬЗОВАНИЯ И ЛЕГКОСТЬ ИЗУЧЕНИЯ. ОПИСЫВАЕМАЯ ВЕРСИЯ БЕЙСИК СИСТЕМЫ СУЩЕСТВЕННО РАСШИРЕНА ПО СРАВНЕНИЮ С ЯДРОМ ЯЗЫКА БЕЙСИК. ОНА ВКЛЮЧАЕТ ОПЕРАТОРЫ, КОТОРЫЕ ПОЗВОЛЯЮТ СОЗДАВАТЬ ПРОГРАММЫ ПО ОБРАБОТКЕ ТЕКСТОВОЙ ИНФОРМАЦИИ, ИСПОЛЬЗОВАТЬ ЭТОТ ЯЗЫК ДЛЯ ПРОГРАММИРОВАНИЯ СИСТЕМ УПРАВЛЕНИЯ ТЕХНОЛОГИЧЕСКИМИ УСТАНОВКАМИ, А ТАКЖЕ ИГРОВЫХ ЗАДАЧ И Т.Д.. В НАСТОЯЩЕМ РУКОВОДСТВЕ ПРИВОДЯТСЯ СВЕДЕНИЯ О СИНТАКСИСЕ И СЕМАНТИКЕ ОПЕРАТОРОВ, ФУНКЦИЙ ЯЗЫКА И КОМАНД СИСТЕМЫ. ПЕРЕД ИЗУЧЕНИЕМ ОПИСАНИЯ ЯЗЫКА БЕЙСИК НЕОБХОДИМО ОЗНАКОМИТЬСЯ С РУКОВОДСТВОМ ПО ЭКСПЛУАТАЦИИ МИКРО-ЭВМ "ЭЛЕКТРОНИКА БК 0010", РУКОВОДСТВОМ ПРОГРАММИСТА И ОПЕРАТОРА. CTP. 3 207537 1.00100-01 35 СОДЕРЖАНИЕ 1. АННОТАЦИЯ............................................... 2 2. ОБЩИЕ СВЕДЕНИЯ............................................ 6 2.1. КОСВЕННЫЙ РЕЖИМ........................................ 6 2.2. НЕПОСРЕДСТВЕННЫЙ РЕЖИМ................................. 6 2.3. СООБЩЕНИЯ ОБ ОШИБКАХ................................... 7 2.4. СПОСОБ ОПИСАНИЯ ЯЗЫКА БЕЙСИК........................... 7 2.5. ОСНОВНЫЕ СИМВОЛЫ ЯЗЫКА................................. 8 3. ДАННЫЕ И ОПЕРАЦИИ НАД НИМИ................................ 9 3.1. КОНСТАНТЫ.............................................. 9 3.1.1. ЧИСЛОВЫЕ КОНСТАНТЫ................................... 9 3.1.2. ТИПЫ ЧИСЛОВЫХ КОНСТАНТ............................... 10 3.1.3. ТЕКСТОВАЯ КОНСТАНТА.................................. 11 3.2. ПЕРЕМЕННЫЕ............................................. 11 3.2.1. ОПРЕДЕЛЕНИЕ ПЕРЕМЕННОЙ............................... 11 3.3. ВЫРАЖЕНИЯ И ОПЕРАЦИИ................................... 12 3.3.1. АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ............................. 13 3.3.2. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ.............................. 13 3.3.3. ОПЕРАЦИИ ОТНОШЕНИЯ................................... 14 3.3.4. ЛОГИЧЕСКИЕ ОПЕРАЦИИ.................................. 15 3.3.5. ФУНКЦИИ.............................................. 16 3.3.6. ПРЕОБРАЗОВАНИЕ ТИПОВ................................. 17 3.3.7. ОПЕРАЦИИ НАД СТРОКАМИ СИМВОЛОВ....................... 18 4. КОМАНДЫ СИСТЕМЫ........................................... 19 4.1. КОМАНДЫ ПУСКА ПРОГРАММЫ................................ 19 4.1.1. КОМАНДА RUN.......................................... 19 4.1.2. КОМАНДА CONT......................................... 19 4.1.3. КЛАВИША (КОМАНДА) "ШАГ".............................. 20 4.1.4. КОМАНДА MONIT........................................ 20 4.2. ХРАНЕНИЕ ПРОГРАММ НА КАССЕТНОЙ МАГНИТНОЙ ЛЕНТЕ......... 20 4.2.1. КОМАНДА LOAD......................................... 21 4.2.2. КОМАНДА SAVE......................................... 21 4.2.3. КОМАНДА MERGE........................................ 22 4.2.4. КОМАНДА CLOAD........................................ 22 4.2.5. КОМАНДА CSAVE........................................ 23 4.2.6. КОМАНДА FIND......................................... 23 4.2.7. КОМАНДА BLOAD........................................ 24 4.2.8. КОМАНДА BSAVE........................................ 24 4.3. РАБОТА С ТЕКСТАМИ ПРОГРАММ............................. 25 4.3.1. КОМАНДА LIST......................................... 25 4.3.2. КОМАНДА DELETE....................................... 26 4.3.3. КОМАНДА RENUM........................................ 27 4.3.4. КОМАНДА AUTO......................................... 28 4.3.5. КОМАНДА . (ТОЧКА).................................... 28 CTP. 4 207537 1.00100-01 35 4.3.6. КЛАВИША (КОМАНДА) "ВС"............................... 29 4.3.7. КОМАНДА NEW.......................................... 29 5. ОПЕРАТОРЫ................................................. 30 5.1. ОСНОВНЫЕ ОПЕРАТОРЫ..................................... 30 5.1.1. ОПЕРАТОР LET......................................... 30 5.1.2. ОПЕРАТОР GOTO........................................ 31 5.1.3. ОПЕРАТОР GOSUB....................................... 31 5.1.4. ОПЕРАТОР RETURN...................................... 31 5.1.5. ОПЕРАТОР IF.......................................... 32 5.1.6. ОПЕРАТОР FOR......................................... 33 5.1.7. ОПЕРАТОР NEXT........................................ 33 5.1.8. ОПЕРАТОР ON.......................................... 34 5.1.9. ОПЕРАТОР STOP........................................ 35 5.1.10. ОПЕРАТОР END......................................... 35 5.1.11. ОПЕРАТОР CALL........................................ 36 5.1.12. ОПЕРАТОР REM......................................... 36 5.2. ОПЕРАТОРЫ ОПИСАНИЯ, РЕЗЕРВИРОВАНИЯ ПАМЯТИ И УСТАНОВКИ НАЧАЛЬНЫХ ЗНАЧЕНИЙ........................... 37 5.2.1. ОПЕРАТОР DIM РЕЗЕРВИРУЕТ ПАМЯТЬ ДЛЯ ПЕРЕМЕННЫХ И МАССИВОВ, ПРИДАВАЯ ИМ НУЛЕВЫЕ ЗНАЧЕНИЯ............... 37 5.2.2. ОПЕРАТОР KEY......................................... 38 5.2.3. ОПЕРАТОР CLEAR....................................... 39 5.2.4. ОПЕРАТОР DATA........................................ 40 5.2.5. ОПЕРАТОР READ........................................ 40 5.2.6. ОПЕРАТОР RESTORE..................................... 41 5.2.7. ОПЕРАТОР DEF......................................... 41 5.2.7.1. ОПЕРАТОР DEF USR..................................... 41 5.2.7.2. ОПЕРАТОР DEF FN...................................... 42 5.3. ОПЕРАТОРЫ ВВОДА/ВЫВОДА................................. 43 5.3.1. ОПЕРАТОР PRINT....................................... 43 5.3.2. ОПЕРАТОР INPUT....................................... 44 5.3.3. ОПЕРАТОР OPEN........................................ 45 5.3.4. ОПЕРАТОР CLOSE....................................... 46 5.4. ОПЕРАТОРЫ НЕПОСРЕДСТВЕННОГО ДОСТУПА К ПАМЯТИ........... 46 5.4.1. ОПЕРАТОР POKE........................................ 46 5.4.2. ОПЕРАТОР OUT......................................... 47 5.5. ОПЕРАТОРЫ УПРАВЛЕНИЯ ЭКРАНОМ ТЕЛЕВИЗОРА................ 48 5.5.1. ОПЕРАТОР CLS......................................... 48 5.5.2. ОПЕРАТОР COLOR....................................... 48 5.5.3. ОПЕРАТОР LOCATE...................................... 49 5.6. ОПЕРАТОРЫ И ФУНКЦИИ ГРАФИКИ............................ 50 5.6.1. ОПЕРАТОР PSET........................................ 50 5.6.2. ОПЕРАТОР PRESET...................................... 51 5.6.3. ФУНКЦИЯ POINT........................................ 51 5.6.4. ОПЕРАТОР LINE........................................ 52 5.6.5. ОПЕРАТОР CIRCLE...................................... 53 5.6.6. ОПЕРАТОР PAINT....................................... 54 5.6.7. ОПЕРАТОР DRAW........................................ 55 5.7. ОПЕРАТОР УПРАВЛЕНИЯ ЗВУКОМ............................. 57 5.7.1. ОПЕРАТОР BEEP........................................ 57 5.8. ОПЕРАТОРЫ ТРАССИРОВКИ ПРОГРАММЫ........................ 57 5.8.1. ОПЕРАТОР TRON........................................ 58 5.8.2. ОПЕРАТОР TROFF....................................... 58 6. ФУНКЦИИ................................................... 59 CTP. 5 207537 1.00100-01 35 6.1. ЧИСЛОВЫЕ ФУНКЦИИ....................................... 59 6.1.1. ФУНКЦИЯ SQR.......................................... 59 6.1.2. ФУНКЦИЯ SIN.......................................... 59 6.1.3. ФУНКЦИЯ COS.......................................... 60 6.1.4. ФУНКЦИЯ TAN.......................................... 60 6.1.5. ФУНКЦИЯ ATN.......................................... 60 6.1.6. ФУНКЦИЯ PI........................................... 61 6.1.7. ФУНКЦИЯ EXP.......................................... 61 6.1.8. ФУНКЦИЯ LOG.......................................... 61 6.1.9. ФУНКЦИЯ ABS.......................................... 62 6.1.10. ФУНКЦИЯ FIX.......................................... 62 6.1.11. ФУНКЦИЯ INT.......................................... 63 6.1.12. ФУНКЦИЯ SGN.......................................... 63 6.1.13. ФУНКЦИЯ RND.......................................... 64 6.1.14. ФУНКЦИЯ FRE.......................................... 64 6.2. ФУНКЦИИ ПРЕОБРАЗОВАНИЯ ТИПОВ........................... 65 6.2.1. ФУНКЦИЯ CINT......................................... 65 6.2.2. ФУНКЦИЯ CSNG......................................... 65 6.2.3. ФУНКЦИЯ CDBL......................................... 66 6.3. ФУНКЦИИ НЕПОСРЕДСТВЕННОГО ОБРАЩЕНИЯ К ПАМЯТИ........... 66 6.3.1. ФУНКЦИЯ PEEK......................................... 66 6.3.2. ФУНКЦИЯ INP.......................................... 67 6.4. СИМВОЛЬНЫЕ ФУНКЦИИ..................................... 67 6.4.1. ФУНКЦИЯ ASC.......................................... 68 6.4.2. ФУНКЦИЯ CHR$......................................... 68 6.4.3. ФУНКЦИЯ LEN.......................................... 69 6.4.4. ФУНКЦИЯ MID$......................................... 69 6.4.5. ФУНКЦИЯ STRING$...................................... 70 6.4.6. ФУНКЦИЯ VAL.......................................... 71 6.4.7. ФУНКЦИЯ INKEY$....................................... 72 6.4.8. ФУНКЦИЯ STR$......................................... 72 6.4.9. ФУНКЦИЯ BIN$......................................... 73 6.4.10. ФУНКЦИЯ OCT$......................................... 73 6.4.11. ФУНКЦИЯ HEX$......................................... 74 6.5. ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ ВВОДА/ВЫВОДА................... 74 6.5.1. ФУНКЦИЯ CSRLIN....................................... 74 6.5.2. ФУНКЦИЯ POS.......................................... 75 6.5.3. ФУНКЦИЯ LPOS......................................... 75 6.5.4. ФУНКЦИЯ EOF.......................................... 76 6.6. ФУНКЦИИ ОПЕРАТОРА PRINT................................ 76 6.6.1. ФУНКЦИЯ AT........................................... 76 6.6.2. ФУНКЦИЯ TAB.......................................... 77 6.6.3. ФУНКЦИЯ SPC.......................................... 78 6.7. ФУНКЦИИ, ОПРЕДЕЛЕННЫЕ ПОЛЬЗОВАТЕЛЕМ.................... 78 6.7.1. ФУНКЦИИ FN........................................... 78 6.7.2. ФУНКЦИИ USR.......................................... 79 ПРИЛОЖЕНИЕ 1. СООБЩЕНИЯ ОБ ОШИБКАХ.......................... 80 ПРИЛОЖЕНИЕ 2. СПИСОК КОМАНД, ОПЕРАТОРОВ И ФУНКЦИЙ........... 84 ПРИЛОЖЕНИЕ 3. ТАБЛИЦА КОДОВ ASCII "ЭЛЕКТРОНИКИ БК 0010"..... 92 ПРИЛОЖЕНИЕ 4. ЗАРЕЗЕРВИРОВАННЫЕ В БЕЙСИК-СИСТЕМЕ СЛОВА...... 94 CTP. 6 207537 1.00100-01 35 2. ОБЩИЕ СВЕДЕНИЯ ПРОГРАММА НА ЯЗЫКЕ БЕЙСИК СОСТОИТ ИЗ СТРОК, КОТОРЫЕ МОГУТ СОДЕРЖАТЬ ОПЕРАТОРЫ И КОМАНДЫ. ПРОГРАММА МОЖЕТ ВВОДИТЬСЯ И ВЫПОЛНЯТЬСЯ В ОДНОМ ИЗ ДВУХ РЕЖИМОВ: КОСВЕННОМ И НЕПОСРЕДСТВЕННОМ. 2.1. КОСВЕННЫЙ РЕЖИМ ЧАЩЕ ВСЕГО ПРОГРАММА НА ЯЗЫКЕ БЕЙСИК ЗАПИСЫВАЕТСЯ В КОСВЕННОМ РЕЖИМЕ. В ЭТОМ СЛУЧАЕ КАЖДАЯ СТРОКА НАЧИНАЕТСЯ С НОМЕРА СТРОКИ. ЗА НОМЕРОМ СТРОКИ СЛЕДУЕТ ОПЕРАТОР.ЗАВЕРШАЕТСЯ СТРОКА УПРАВЛЯЮЩИМ СИМВОЛОМ <ПС> (ПЕРЕВОД СТРОКИ), ПОЛУЧАЕМЫМ ПРИ НАЖАТИИ НА КЛАВИШУ "ВВОД". НОМЕР СТРОКИ ДОЛЖЕН БЫТЬ В ДИАПАЗОНЕ ОТ 0 ДО 65535. НОМЕР СТРОКИ ВЫПОЛНЯЕТ ДВЕ ФУНКЦИИ: ВО-ПЕРВЫХ, ОН СЛУЖИТ МЕТКОЙ ОПЕРАТОРА И МОЖЕТ БЫТЬ ИСПОЛЬЗОВАН ДЛЯ ССЫЛКИ НА ДАННЫЙ ОПЕРАТОР; ВО-ВТОРЫХ, НОМЕР СТРОКИ ОПРЕДЕЛЯЕТ ПОРЯДОК ВЫПОЛНЕНИЯ ОПЕРАТОРОВ. КРОМЕ ТОГО, НАЛИЧИЕ НОМЕРОВ СТРОК ОБЛЕГЧАЕТ ОТЛАДКУ ПРОГРАММЫ, Т.К. В СООБЩЕНИИ ОБ ОШИБКЕ УКАЗЫВАЕТСЯ НОМЕР СТРОКИ, В КОТОРОЙ ВСТРЕТИЛАСЬ ОШИБКА. ЛЮБОЙ ИЗ ОПЕРАТОРОВ ЯЗЫКА БЕЙСИК ДОЛЖЕН РАЗМЕЩАТЬСЯ НА ОДНОЙ СТРОКЕ, МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ - 255 СИМВОЛОВ. НОМЕР СТРОКИ ИСПОЛЬЗУЕТСЯ И ПРИ РЕДАКТИРОВАНИИ ПРОГРАММЫ. ВВОД СТРОКИ, НОМЕР КОТОРОЙ УЖЕ СУЩЕСТВУЕТ,ПРИВОДИТ К ЗАМЕНЕ ПРЕЖНЕЙ СТРОКИ. ВВОД ТОЛЬКО НОМЕРА СТРОКИ ( ПУСТАЯ СТРОКА ) ВЫЗЫВАЕТ СТИРАНИЕ СООТВЕТСТВУЮЩЕЙ СТРОКИ. 2.2. НЕПОСРЕДСТВЕННЫЙ РЕЖИМ В ЗАВИСИМОСТИ ОТ НАЛИЧИЯ ИЛИ ОТСУТСТВИЯ НОМЕРА СТРОКИ БЕЙСИК-СИСТЕМА ОТЛИЧАЕТ СТРОКИ, ВВОДИМЫЕ В КОСВЕННОМ РЕЖИМЕ, ОТ СТРОК, ВВОДИМЫХ ДЛЯ НЕПОСРЕДСТВЕННОГО ВЫПОЛНЕНИЯ. ОПЕРАТОРЫ, КОТОРЫЕ НАЧИНАЮТСЯ С НОМЕРА СТРОКИ, ЗАПОМИНАЮТСЯ, ОПЕРАТОРЫ БЕЗ НОМЕРА СТРОКИ ВЫПОЛНЯЮТСЯ НЕПОСРЕДСТВЕННО ПО МЕРЕ ИХ ВВОДА В СИСТЕМУ, Т.Е. ОСУЩЕСТВЛЯЕТСЯ ВЫПОЛНЕНИЕ ОПЕРАТОРОВ В НЕПОСРЕДСТВЕННОМ РЕЖИМЕ. СЛЕДОВАТЕЛЬНО, ПРИ ВВОДЕ СТРОКИ 10 PRINT "ЭЛЕКТРОНИКА БК 0010" СТРОКА ЗАНОСИТСЯ В ТЕКСТ ПРОГРАММЫ, ТОГДА КАК ВВОД СТРОКИ PRINT "ЭЛЕКТРОНИКА БК 0010" ВЫЗЫВАЕТ ЕГО НЕПОСРЕДСТВЕННОЕ ВЫПОЛНЕНИЕ И В РЕЗУЛЬТАТЕ ОСУЩЕСТВЛЯЕТСЯ НЕМЕДЛЕННЫЙ ВЫВОД СООБЩЕНИЯ ЭЛЕКТРОНИКА БК 0010 НЕПОСРЕДСТВЕННЫЙ РЕЖИМ БЕЙСИК-СИСТЕМЫ ПОЗВОЛЯЕТ ИСПОЛЬЗОВАТЬ CTP. 7 207537 1.00100-01 35 ВЫЧИСЛИТЕЛЬНУЮ МАШИНУ КАК ОЧЕНЬ МОЩНЫЙ КАЛЬКУЛЯТОР. 2.3. СООБЩЕНИЯ ОБ ОШИБКАХ ПРИ ОБНАРУЖЕНИИ ОШИБКИ ВО ВРЕМЯ ВВОДА, СИНТАКСИЧЕСКОГО АНАЛИЗА ИЛИ ВЫПОЛНЕНИЯ ПРОГРАММЫ БЕЙСИК-СИСТЕМА ВЫДАЕТ СООБЩЕНИЕ ОБ ОШИБКЕ. ФОРМАТ СООБЩЕНИЯ СЛЕДУЮЩИЙ: ОШИБКА XX В СТРОКЕ YYYYY ГДЕ XX - КОД ОШИБКИ, YYYYY - НОМЕР СТРОКИ, СОДЕРЖАЩЕЙ ОШИБКУ. В РЕЖИМЕ НЕПОСРЕДСТВЕННОГО ВЫПОЛНЕНИЯ НОМЕР СТРОКИ НЕ УКАЗЫВАЕТСЯ. КОДЫ ОШИБОК ПРИВЕДЕНЫ В ПРИЛОЖЕНИИ 1. 2.4. СПОСОБ ОПИСАНИЯ ЯЗЫКА БЕЙСИК ДЛЯ ФОРМАЛЬНОГО ОПИСАНИЯ ЯЗЫКА ИСПОЛЬЗУЕТСЯ РЯД ОБОЗНАЧЕНИЙ, КОТОРЫЕ НЕОБХОДИМО ПОНИМАТЬ В СЛЕДУЮЩЕМ СМЫСЛЕ: - ИНФОРМАЦИЯ, ЗАПИСАННАЯ ПРОПИСНЫМИ БУКВАМИ ЛАТИНСКОГО АЛФАВИТА, ПОСТОЯННА; - ИНФОРМАЦИЯ, ЗАПИСАННАЯ БУКВАМИ РУССКОГО АЛФАВИТА И ЗАКЛЮЧЕННАЯ В ТРЕУГОЛЬНЫЕ СКОБКИ "< >" - ПЕРЕМЕННАЯ; - ИНФОРМАЦИЯ, ЗАКЛЮЧЕННАЯ В КВАДРАТНЫЕ СКОБКИ "[ ]", ПРИ ИСПОЛЬЗОВАНИИ МОЖЕТ БЫТЬ ОПУЩЕНА; - ИЗ ПАРАМЕТРОВ, РАЗМЕЩЕННЫХ ДРУГ ПОД ДРУГОМ, ДОЛЖЕН БЫТЬ ВЫБРАН ТОЛЬКО ОДИН; - ПАРАМЕТР, ЗАКЛЮЧЕННЫЙ В КВАДРАТНЫЕ СКОБКИ [<ПАРАМЕТР>...]N, СОПРОВОЖДАЕМЫЙ МНОГОТОЧИЕМ, ИСПОЛЬЗУЕТСЯ ДЛЯ ОБОЗНАЧЕНИЯ МНОГОКРАТНОСТИ; N УКАЗЫВАЕТ ВЕРХНИЙ ПРЕДЕЛ ВОЗМОЖНЫХ ПОВТОРЕНИЙ ПАРАМЕТРА; ЕСЛИ N НЕ УКАЗАНО, ТО ЧИСЛО ПОВТОРЕНИЙ ПАРАМЕТРА НЕОПРЕДЕЛЕНО. П_Р_И_М_Е_Ч_А_Н_И_Е. В ОПЕРАТОРАХ С НЕСКОЛЬКИМИ ОПЕРАНДАМИ В СЛУЧАЕ, ЕСЛИ УКАЗАНЫ БОЛЕЕ ДАЛЬНИЕ ОПЕРАНДЫ, ПРОПУЩЕНЫХ ОПЕРАНДОВ ДОЛЖНЫ СООТВЕТСТВОВАТЬ ЗАПЯТЫЕ, НАПРИМЕР: CIRCLE (100,100),50,,,,2 CTP. 8 207537 1.00100-01 35 2.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. ПОЛНЫЙ СПИСОК ЗАРЕЗЕРВИРОВАННЫХ СЛОВ ПРИВОДИТСЯ В ПРИЛОЖЕНИИ 3. CTP. 9 207537 1.00100-01 35 СИМВОЛ ПРОБЕЛА НЕ ЯВЛЯЕТСЯ ЗНАЧАЩИМ И ПОЭТОМУ МОЖЕТ СВОБОДНО ИСПОЛЬЗОВАТЬСЯ ДЛЯ УЛУЧШЕНИЯ НАГЛЯДНОСТИ ПРОГРАММЫ. ИСКЛЮЧЕНИЕ СОСТАВЛЯЕТ СЛУЧАЙ ЗАПИСИ СИМВОЛА ПРОБЕЛА В ТЕКСТОВОЙ КОНСТАНТЕ. П_Р_И_М_Е_Ч_А_Н_И_Е. НЕ ДОПУСКАЕТСЯ ИСПОЛЬЗОВАНИЕ ПРОБЕЛА ВНУТРИ ЗАРЕЗЕРВИРОВАННЫХ СЛОВ, ЧИСЕЛ И ИМЕН ПЕРЕМЕННЫХ. 3. ДАННЫЕ И ОПЕРАЦИИ НАД НИМИ 3.1. КОНСТАНТЫ В БЕЙСИК-СИСТЕМЕ ИСПОЛЬЗУЮТСЯ ЧИСЛОВЫЕ И ТЕКСТОВЫЕ КОНСТАНТЫ. 3.1.1. ЧИСЛОВЫЕ КОНСТАНТЫ В БЕЙСИК-СИСТЕМЕ ДОПУСТИМЫ ШЕСТЬ ФОРМ ЗАПИСИ ЧИСЛОВЫХ КОНСТАНТ. 1. ЦЕЛЫЕ КОНСТАНТЫ ИМЕЮТ ВИД ДЕСЯТИЧНЫХ ЦЕЛЫХ ЧИСЕЛ СО ЗНАКОМ ИЛИ БЕЗ НЕГО. ПРИМЕРЫ: 123 -2345 2. ВЕЩЕСТВЕННЫЕ КОНСТАНТЫ, ПРЕДСТАВЛЕННЫЕ В ФОРМЕ ЧИСЕЛ С ФИКСИРОВАННОЙ ЗАПЯТОЙ - ЭТО ПОЛОЖИТЕЛЬНЫЕ ИЛИ ОТРИЦАТЕЛЬНЫЕ ЧИСЛА, ИМЕЮЩИЕ ДЕСЯТИЧНУЮ ТОЧКУ. ПРИМЕРЫ: 2.45 -102.36 3. ВЕЩЕСТВЕННЫЕ КОНСТАНТЫ, ЗАПИСЫВАЕМЫЕ В ЭКСПОНЕНЦИАЛЬНОЙ ФОРМЕ, СОСТОЯТ ИЗ МАНТИССЫ И ПОРЯДКА, ОТДЕЛЕННОГО ОТ МАНТИССЫ БУКВОЙ Е. ПРИМЕРЫ: 235.988Е-7=.0000235988 2359Е6=2359000000 ДЛЯ ОБОЗНАЧЕНИЯ КОНСТАНТ ДВОЙНОЙ ТОЧНОСТИ ВМЕСТО БУКВЫ Е ИСПОЛЬЗУЕТСЯ БУКВА D. 4. ШЕСТНАДЦАТИРИЧНЫЕ КОНСТАНТЫ ОБОЗНАЧАЮТСЯ &H. ОСНОВА СЧИСЛЕНИЯ ЭТИХ ЧИСЕЛ - 16. ДЛЯ ОБОЗНАЧЕНИЯ ЦИФР ОТ 10 ДО 15 CTP. 10 207537 1.00100-01 35 ИСПОЛЬЗУЮТСЯ БУКВЫ ОТ A ДО F. ПРИМЕРЫ: &H76 &HA2F 5. ВОСМЕРИЧНЫЕ КОНСТАНТЫ ОБОЗНАЧАЮТСЯ &O (БУКВА O). ОСНОВА СЧИСЛЕНИЯ ДЛЯ ЭТИХ ЧИСЕЛ - 8, ПОЭТОМУ КОНСТАНТЫ НЕ МОГУТ СОДЕРЖАТЬ ЦИФР 8 И 9. ПРИМЕРЫ: &О347 &О177700 6. ДВОИЧНЫЕ КОНСТАНТЫ - ЭТО ДВОИЧНЫЕ ЧИСЛА, ДЛЯ ОБОЗНАЧЕНИЯ КОТОРЫХ ИСПОЛЬЗУЕТСЯ &B. ЭТИ ЧИСЛА СОДЕРЖАТ ТОЛЬКО ЦИФРЫ 1 И 0. ПРИМЕРЫ: &B01110110 &B10101101 3.1.2. ТИПЫ ЧИСЛОВЫХ КОНСТАНТ ПО ВНУТРЕННЕМУ ПРЕДСТАВЛЕНИЮ ЧИСЛОВЫЕ КОНСТАНТЫ ПОДРАЗДЕЛЯЮТСЯ НА ЦЕЛЫЕ, ВЕЩЕСТВЕННЫЕ ОДИНАРНОЙ ТОЧНОСТИ И ВЕЩЕСТВЕННЫЕ ДВОЙНОЙ ТОЧНОСТИ. ДЛЯ ВНУТРЕННЕГО ПРЕДСТАВЛЕНИЯ КОНСТАНТ ЦЕЛОГО ТИПА ИСПОЛЬЗУЕТСЯ ОДНО СЛОВО ПАМЯТИ (16 БИТ). ЭТО ОБЕСПЕЧИВАЕТ СКОРОСТЬ ОБРАБОТКИ И ЭКОНОМИЮ ПАМЯТИ ДЛЯ ИХ ХРАНЕНИЯ. ЦЕЛЫЙ ТИП КОНСТАНТЫ УКАЗЫВАЕТ ЗНАК % ПОСЛЕ ДЕСЯТИЧНОЙ КОНСТАНТЫ, НАПРИМЕР: 156% -3000% ЦЕЛЫЙ ТИП ИМЕЮТ ТАКЖЕ ДВОИЧНЫЕ, ВОСМЕРИЧНЫЕ И ШЕСТНАДЦАТЕРИЧНЫЕ КОНСТАНТЫ. ВЕЩЕСТВЕННЫЕ ЧИСЛОВЫЕ КОНСТАНТЫ МОГУТ БЫТЬ ПРЕДСТАВЛЕНЫ С ОДИНАРНОЙ ИЛИ ДВОЙНОЙ ТОЧНОСТЬЮ. ДЛЯ КОНСТАНТ ОДИНАРНОЙ ТОЧНОСТИ ХРАНЯТСЯ 7 ДЕСЯТИЧНЫХ ЦИФР, А ДЛЯ ДВОЙНОЙ - 17 И ВЫДЕЛЯЮТСЯ СООТВЕТСТВЕННО 2 ИЛИ 4 МАШИННЫХ СЛОВА. ПО УМОЛЧАНИЮ В БЕЙСИК СИСТЕМЕ ТОЧНОСТЬ ДЛЯ КОНСТАНТ ПРИНИМАЕТСЯ ДВОЙНОЙ. КОНСТАНТА ОДИНАРНОЙ ТОЧНОСТИ РАЗЛИЧАЕТСЯ ПО ПРИЗНАКАМ: - ДЛЯ ЕЕ ЗАПИСИ ИСПОЛЬЗУЕТСЯ ЭКСПОНЕНЦИАЛЬНАЯ ФОРМА С БУКВОЙ Е; - ПРИ ЕЕ ЗАПИСИ ИСПОЛЬЗУЕТСЯ ВОСКЛИЦАТЕЛЬНЫЙ ЗНАК !. ПРИМЕРЫ: -1.09E-09 23.567! КОНСТАНТА ДВОЙНОЙ ТОЧНОСТИ РАЗЛИЧАЕТСЯ ПО ПРИЗНАКАМ: - ЛЮБАЯ ЗАПИСЬ ЧИСЛА БЕЗ УКАЗАНИЯ ТИПА; CTP. 11 207537 1.00100-01 35 - ЭКСПОНЕНЦИАЛЬНАЯ ФОРМА ЗАПИСИ С БУКВОЙ D; - ПРИЗНАК ЧИСЛА ДВОЙНОЙ ТОЧНОСТИ #. ПРИМЕРЫ: 3489 3451415.92 -1.09432D-09 348.9# 3.1.3. ТЕКСТОВАЯ КОНСТАНТА ФОРМАЛЬНОЕ ОПИСАНИЕ ТЕКСТОВОЙ КОНСТАНТЫ: <ТЕКСТОВАЯ КОНСТАНТА>::="[<СИМВОЛ>...]255" ТЕКСТОВАЯ КОНСТАНТА - ПОСЛЕДОВАТЕЛЬНОСТЬ СИМВОЛОВ (ЦЕПОЧКА ЗНАКОВ), ЗАКЛЮЧЕННАЯ В КАВЫЧКИ. КОЛИЧЕСТВО СИМВОЛОВ НЕ ДОЛЖНО ПРЕВЫШАТЬ 255. СИМВОЛ ПРОБЕЛА ВНУТРИ ЦЕПОЧКИ ЗНАКОВ ЯВЛЯЕТСЯ ЗНАЧАЩИМ. ПРИМЕРЫ: "ПРИВЕТ" "ЭЛЕКТРОНИКА БК0010" 3.2. ПЕРЕМЕННЫЕ 3.2.1. ОПРЕДЕЛЕНИЕ ПЕРЕМЕННОЙ ФОРМАЛЬНОЕ ОПРЕДЕЛЕНИЕ ПЕРЕМЕННОЙ: <ПЕРЕМЕННАЯ>::=<ПРОСТАЯ ПЕРЕМЕННАЯ> <ИНДЕКСИРОВАННАЯ ПЕРЕМЕННАЯ> <ПРОСТАЯ ПЕРЕМЕННАЯ>::=<ИМЯ ПЕРЕМЕННОЙ> <ИНДЕКСИРОВАННАЯ ПЕРЕМЕННАЯ>::= <ИМЯ ПЕРЕМЕННОЙ>(<ИНДЕКС>[,<ИНДЕКС>...]) ПЕРЕМЕННЫЕ, ИДЕНТИФИЦИРУЮЩИЕ ЧИСЛОВЫЕ ДАННЫЕ, НАЗЫВАЮТСЯ ЧИСЛОВЫМИ ПЕРЕМЕННЫМИ; ПЕРЕМЕННЫЕ, ИДЕНТИФИЦИРУЮЩИЕ ТЕКСТОВЫЕ ДАННЫЕ, НАЗЫВАЮТСЯ СИМВОЛЬНЫМИ ПЕРЕМЕННЫМИ. МАКСИМАЛЬНАЯ ДЛИНА ЗНАЧЕНИЯ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ МОЖЕТ БЫТЬ 255 СИМВОЛОВ. ПЕРЕМЕННЫЕ ИМЕЮТ СИМВОЛИЧЕСКОЕ ИМЯ - ИДЕНТИФИКАТОР, СОСТОЯЩИЙ ИЗ ЛЮБОГО КОЛИЧЕСТВА БУКВ ЛАТИНСКОГО АЛФАВИТА И ЦИФР; ИЗ НИХ УЧИТЫВАЮТСЯ ТОЛЬКО ДВЕ ПЕРВЫЕ. ИМЯ ПЕРЕМЕННОЙ ОБЯЗАТЕЛЬНО ДОЛЖНО НАЧИНАТЬСЯ БУКВОЙ. ИМЯ ПЕРЕМЕННОЙ В КОНЦЕ МОЖЕТ ИМЕТЬ ЗНАК, ОПРЕДЕЛЯЮЩИЙ ТИП ПЕРЕМЕННОЙ: CTP. 12 207537 1.00100-01 35 $ СИМВОЛЬНЫЕ; % ЦЕЛЫЕ; ! ВЕЩЕСТВЕННЫЕ ОДИНАРНОЙ ТОЧНОСТИ; # ДВОЙНОЙ ТОЧНОСТИ. ПРИ ОТСУТСТВИИ ЗНАКА, СЧИТАЕТСЯ, ЧТО ПЕРЕМЕННАЯ ДВОЙНОЙ ТОЧНОСТИ. ЦЕЛЫЕ ПЕРЕМЕННЫЕ МОГУТ ПРИНИМАТЬ ЗНАЧЕНИЯ ИЗ ИНТЕРВАЛА [-32768,32767]. ПРИМЕРЫ: L# MINIMUM! K% ABC N$ РАЗЛИЧАЮТ ПРОСТЫЕ И ИНДЕКСИРОВАННЫЕ ПЕРЕМЕННЫЕ. ПРОСТЫЕ ПЕРЕМЕННЫЕ ОДНОЗНАЧНО ОБОЗНАЧАЮТ ОДИН ЭЛЕМЕНТ ДАННЫХ. ИНДЕКСИРОВАННЫЕ ПЕРЕМЕННЫЕ ИДЕНТИФИЦИРУЮТ ЭЛЕМЕНТ УПОРЯДОЧЕННОГО НАБОРА ДАННЫХ - МАССИВА. КАЖДЫЙ ЭЛЕМЕНТ МАССИВА ИДЕНТИФИЦИРУЕТСЯ ИМЕНЕМ МАССИВА И ИНДЕКСАМИ, ЗАКЛЮЧЕННЫМИ В КРУГЛЫЕ СКОБКИ. ИНДЕКСЫ - ЭТО ЦЕЛЫЕ ВЫРАЖЕНИЯ, ПРИНИМАЮЩИЕ ПОЛОЖИТЕЛЬНЫЕ ЗНАЧЕНИЯ. ЧИСЛО ИНДЕКСНЫХ ВЫРАЖЕНИЙ ДОЛЖНО СООТВЕТСТВОВАТЬ ЧИСЛУ ИЗМЕРЕНИЙ МАССИВА. ИНДЕКСНЫЕ ВЫРАЖЕНИЯ РАЗДЕЛЯЮТСЯ ЗАПЯТЫМИ. УКАЗАНИЕ ОТРИЦАТЕЛЬНОГО ИНДЕКСА ПРИВОДИТ К ОШИБКЕ 5. ДЛЯ ОБ'ЯВЛЕНИЯ МАССИВОВ ИСПОЛЬЗУЕТСЯ ОПЕРАТОР DIM. 3.3. ВЫРАЖЕНИЯ И ОПЕРАЦИИ ВЫРАЖЕНИЕ МОЖЕТ СОСТОЯТЬ ИЗ ТЕКСТОВЫХ ИЛИ ЧИСЛОВЫХ КОНСТАНТ И ПЕРЕМЕННЫХ ИЛИ ИЗ КОМБИНАЦИЙ ЭТИХ ЭЛЕМЕНТОВ, СОЕДИНЕННЫХ ЗНАКАМИ ОПЕРАЦИЙ, ЧТО ПРИВОДИТ ПРИ ВЫПОЛНЕНИИ К ВЫЧИСЛЕНИЮ ЗНАЧЕНИЯ ВЫРАЖЕНИЯ. ОПЕРАЦИИ В БЕЙСИК-СИСТЕМЕ ДЕЛЯТСЯ НА - АРИФМЕТИЧЕСКИЕ; - ОТНОШЕНИЯ; - ЛОГИЧЕСКИЕ; - ФУНКЦИИ. CTP. 13 207537 1.00100-01 35 3.3.1. АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ <АРИФМЕТИЧЕСКОЕ ::= [+]<ТЕРМ>[[+]<ТЕРМ>...] ВЫРАЖЕНИЕ> [-] [-] [*] <ТЕРМ>::=<МНОЖИТЕЛЬ>[[/]<МНОЖИТЕЛЬ>...] [^] <ПЕРЕМЕННАЯ> <МНОЖИТЕЛЬ> ::= <ЧИСЛОВАЯ КОНСТАНТА> (<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>) <ФУНКЦИЯ> АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ ИСПОЛЬЗУЕТСЯ В ОПЕРАТОРАХ ПРИСВАИВАНИЯ, ЦИКЛА, УСЛОВИЯ, ПЕЧАТИ, ОПРЕДЕЛЕНИЯ ФУНКЦИИ. ЭЛЕМЕНТАМИ АРИФМЕТИЧЕСКОГО ВЫРАЖЕНИЯ МОГУТ БЫТЬ ПЕРЕМЕННЫЕ, ФУНКЦИИ, ЧИСЛОВЫЕ КОНСТАНТЫ ИЛИ КОМБИНАЦИИ ЭТИХ ЭЛЕМЕНТОВ, СОЕДИНЕННЫХ КРУГЛЫМИ СКОБКАМИ, ЗНАКАМИ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ, ЗНАКАМИ ОТНОШЕНИЯ И ЛОГИЧЕСКИМИ ОПЕРАЦИЯМИ. В ВЫРАЖЕНИИ МОГУТ ИСПОЛЬЗОВАТЬСЯ ПРОИЗВОЛЬНОЕ ЧИСЛО КРУГЛЫХ СКОБОК. ПРИ НАРУШЕНИИ СООТВЕТСТВИЯ ЧИСЛА ОТКРЫВАЮЩИХ И ЗАКРЫВАЮЩИХ СКОБОК ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 2. ДАЛЕЕ ИСПОЛЬЗУЕТСЯ ПОНЯТИЕ ЦЕЛОГО ВЫРАЖЕНИЯ. ЭТО АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ, ПРИНИМАЮЩЕЕ ЗНАЧЕНИЯ ИЗ ИНТЕРВАЛА [-32768,32767]. 3.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)) ------------------------------------------------------------ ПРИ ВЫЧИСЛЕНИИ АРИФМЕТИЧЕСКИХ ВЫРАЖЕНИЙ СОБЛЮДАЕТСЯ СЛЕДУЮЩИЙ ПРИОРИТЕТ ВЫПОЛНЕНИЯ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ И СКОБОК: CTP. 14 207537 1.00100-01 35 1. ДЕЙСТВИЯ В СКОБКАХ; 2. ВОЗВЕДЕНИЕ В СТЕПЕНЬ; 3. УМНОЖЕНИЕ И ДЕЛЕНИЕ; 4. ЦЕЛОЧИСЛЕННОЕ ДЕЛЕНИЕ; 5. ДЕЛЕНИЕ ПО МОДУЛЮ; 6. СЛОЖЕНИЕ И ВЫЧИТАНИЕ. ПРИМЕРЫ: PRINT 10\4 2 OK PRINT 10.4 MOD 4 2 OK 3.3.3. ОПЕРАЦИИ ОТНОШЕНИЯ ОПЕРАЦИИ ОТНОШЕНИЯ ИСПОЛЬЗУЮТСЯ ДЛЯ СРАВНЕНИЯ ДВУХ ВЕЛИЧИН В ОПЕРАТОРАХ УСЛОВНОГО ПЕРЕХОДА. МОЖНО РАССМАТРИВАТЬ, ЧТО РЕЗУЛЬТАТ СРАВНЕНИЯ ПРИНИМАЕТ ДВА ЗНАЧЕНИЯ ЦЕЛОГО ТИПА: "ИСТИНА" - ВО ВСЕХ БИТАХ ЕДИНИЦЫ, ЧТО СООТВЕТСТВУЕТ -1 (МИНУС 1), А "ЛОЖЬ" - ВО ВСЕХ БИТАХ НУЛИ, ЧТО СООТВЕТСТВУЕТ 0. КАК "ИСТИНА" ТРАКТИРУЕТСЯ ТАКЖЕ ЛЮБОЕ НЕНУЛЕВОЕ ЗНАЧЕНИЕ. ОПЕРАЦИИ ОТНОШЕНИЯ ПРИВЕДЕНЫ В ТАБЛИЦЕ 3. ТАБЛИЦА 3 ОПЕРАЦИИ ОТНОШЕНИЯ --------------------------------------------- ! ОПЕРАЦИЯ ! ПРОВЕРЯЕМОЕ ! ПРИМЕР ! ! ! ОТНОШЕНИЕ ! ! !----------!---------------!----------------! ! = ! РАВЕНСТВО ! X=Y ! ! <> >< ! НЕРАВЕНСТВО ! X<>Y ИЛИ X> ! БОЛЬШЕ ! X>Y ! ! <= ! МЕНЬШЕ ИЛИ ! X<=Y ! ! ! РАВНО ! ! ! >= ! БОЛЬШЕ ИЛИ ! X>=Y ! ! ! РАВНО ! ! --------------------------------------------- ОПЕРАЦИИ ОТНОШЕНИЙ ЯВЛЯЮТСЯ МЕНЕЕ ПРИОРИТЕТНЫМИ ПО ОТНОШЕНИЮ К АРИФМЕТИЧЕСКИМ. НАПРИМЕР, ЗНАЧЕНИЕ ВЫРАЖЕНИЯ X+Y=X*Y РАВНО -1, КОГДА X+Y РАВНО X*Y. CTP. 15 207537 1.00100-01 35 3.3.4. ЛОГИЧЕСКИЕ ОПЕРАЦИИ ЛОГИЧЕСКИЕ ОПЕРАЦИИ ИСПОЛЬЗУЮТСЯ ДЛЯ РАБОТЫ С НАБОРАМИ БИТОВ, ПРЕДСТАВЛЕННЫМИ В ВИДЕ 16-БИТНЫХ ЦЕЛЫХ ЧИСЕЛ. ЗНАЧЕНИЕ КАЖДОГО БИТА РЕЗУЛЬТАТА ЗАВИСИТ ОТ ЗНАЧЕНИЙ СООТВЕТСТВУЮЩИХ БИТОВ ОПЕРАНДОВ. ПРИВЕДЕМ ТАБЛИЦЫ, ОПРЕДЕЛЯЮЩИЕ ЛОГИЧЕСКИЕ ОПЕРАЦИИ: NOT X NOT X 0 1 1 0 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 CTP. 16 207537 1.00100-01 35 IF I=10 OR K>=0 THEN 50 IF NOT P THEN 100 В СМЕШАННЫХ ВЫРАЖЕНИЯХ ЛОГИЧЕСКИЕ ОПЕРАЦИИ МЕНЕЕ ПРИОРИТЕТНЫ, ЧЕМ АРИФМЕТИЧЕСКИЕ И ОПЕРАЦИИ ОТНОШЕНИЙ. ОЧЕРЕДНОСТЬ ВЫПОЛНЕНИЯ ЛОГИЧЕСКИХ ОПЕРАЦИЙ ОСУЩЕСТВЛЯЕТСЯ СОГЛАСНО СЛЕДУЮЩЕМУ ПРИОРИТЕТУ: 1. NOT ; 2. AND ; 3. OR ; 4. XOR И EQV ; 5. IMP . ПРИМЕРЫ РАБОТЫ ЛОГИЧЕСКИХ ОПЕРАЦИЙ: В ДЕСЯТИЧНОМ В ДВОИЧНОМ ПРЕДСТАВЛЕНИИ ПРЕДСТАВЛЕНИИ 63 111111 AND 16 10000 = 16 10000 -1 1111111111111111 AND 8 1000 = 8 1000 4 100 OR 2 10 = 6 110 3.3.5. ФУНКЦИИ ФУНКЦИИ - ЭТО ЗАРАНЕЕ ОПРЕДЕЛЕННЫЕ ОПЕРАЦИИ НАД ДАННЫМИ. БЕЙСИК-СИСТЕМА ИМЕЕТ "ВСТРОЕННЫЕ" ФУНКЦИИ, КОТОРЫЕ НАЗЫВАЮТСЯ СТАНДАРТНЫМИ. ПРИМЕРОМ ТАКИХ ФУНКЦИЙ МОГУТ СЛУЖИТЬ SQR( ) - КВАДРАТНЫЙ КОРЕНЬ ИЛИ SIN( ) - СИНУС. БОЛЕЕ ПОДРОБНО СТАНДАРТНЫЕ ФУНКЦИИ ОПИСЫВАЮТСЯ ДАЛЕЕ. CTP. 17 207537 1.00100-01 35 3.3.6. ПРЕОБРАЗОВАНИЕ ТИПОВ ПРЕОБРАЗОВАНИЕ ТИПОВ В БЕЙСИК-СИСТЕМЕ ОПРЕДЕЛЯЮТ НЕСКОЛЬКО ПРАВИЛ: 1. ЕСЛИ ЗНАЧЕНИЕ АРИФМЕТИЧЕСКОГО ВЫРАЖЕНИЯ ОДНОГО ТИПА ПРИСВАИВАЕТСЯ ПЕРЕМЕННОЙ ДРУГОГО ТИПА, ТО ПРОИЗВОДИТСЯ ПРЕОБРАЗОВАНИЕ В ТИП ПЕРЕМЕННОЙ. ПРИМЕР: 10 A%=23.42 20 PRINT A% RUN 23 ОК 2. ВО ВРЕМЯ ВЫЧИСЛЕНИЯ ЗНАЧЕНИЯ АРИФМЕТИЧЕСКОГО ВЫРАЖЕНИЯ ВСЕ ОПЕРАНДЫ ПРЕОБРАЗУЮТСЯ В ОДИН ТИП ДАННЫХ - ТОТ, К КОТОРОМУ ОТНОСИТСЯ ОПЕРАНД, ИМЕЮЩИЙ НАИБОЛЬШУЮ ТОЧНОСТЬ. ПРИМЕР: 10 D=6/7! 20 PRINT D RUN .85714285714285714 OK (АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ БЫЛО ПОДСЧИТАНО С ДВОЙНОЙ ТОЧНОСТЬЮ). ПРИМЕР: 10 D!=6/7! 20 PRINT D! .8571429 (ПРИ ПРИСВОЕНИИ РЕЗУЛЬТАТА АРИФМЕТИЧЕСКОГО ВЫРАЖЕНИЯ ПЕРЕМЕННОЙ 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. CTP. 18 207537 1.00100-01 35 3.3.7. ОПЕРАЦИИ НАД СТРОКАМИ СИМВОЛОВ ДЛЯ РАБОТЫ С СИМВОЛЬНЫМИ ПЕРЕМЕННЫМИ В БЕЙСИК СИСТЕМУ ВКЛЮЧЕН РЯД ФУНКЦИЙ (ПОДРОБНОЕ ОПИСАНИЕ - ДАЛЕЕ). КРОМЕ ТОГО, СИМВОЛЬНЫЕ ДАННЫЕ МОГУТ БЫТЬ ОБ'ЕДИНЕНЫ ОПЕРАЦИЕЙ + (КОНКАТЕНАЦИЯ СТРОК). ПРИМЕР: 10 A$="ИМЯ" 20 B$=" ФАЙЛА" 30 PRINT A$+B$ 40 PRINT "НОВОЕ "+A$+B$ RUN ИМЯ ФАЙЛА НОВОЕ ИМЯ ФАЙЛА OК СТРОКИ МОЖНО СРАВНИВАТЬ ОПЕРАЦИЯМИ ОТНОШЕНИЙ = <> >< < > <= >= СРАВНЕНИЕ ПРОИЗВОДИТСЯ НАД КОДАМИ ASCII, ВЗЯТЫМИ ИЗ СООТВЕТСТВУЮЩИХ СТРОК. ЕСЛИ ВСЕ КОДЫ СОВПАДАЮТ, ЗНАЧИТ СТРОКИ РАВНЫ. ЕСЛИ КОДЫ ASCII СИМВОЛОВ РАЗЛИЧАЮТСЯ, ТО МЕНЬШЕ ТА СТРОКА, У КОТОРОЙ КОД РАССМАТРИВАЕМОГО СИМВОЛА МЕНЬШЕ. ЕСЛИ ОДНА СТРОКА КОНЧАЕТСЯ, А ДРУГАЯ - НЕТ, ТО БОЛЕЕ КОРОТКАЯ СТРОКА МЕНЬШЕ (ПРОБЕЛЫ УЧИТЫВАЮТСЯ). ПРИМЕРЫ (РЕЗУЛЬТАТ ВСЕХ ВЫРАЖЕНИЙ - "ИСТИНА"): "AA" <> "AB" "A" = "A" "X&" > "X " "CL " > "CL" B$ < "9.12.84." , ЕСЛИ B$="8.12.8" "AAC" < "ABB" CTP. 19 207537 1.00100-01 35 4. КОМАНДЫ СИСТЕМЫ КОМАНДЫ БЕЙСИКА СЛУЖАТ ДЛЯ СВЯЗИ ПРОГРАММИСТА С СИСТЕМОЙ. ОНИ НЕ ИМЕЮТ НОМЕРА ВВОДИМОЙ СТРОКИ И ВЫПОЛНЯЮТСЯ ТОЛЬКО В НЕПОСРЕДСТВЕННОМ РЕЖИМЕ. 4.1. КОМАНДЫ ПУСКА ПРОГРАММЫ 4.1.1. КОМАНДА RUN КОМАНДА НАЧИНАЕТ ВЫПОЛНЕНИЕ ПРОГРАММЫ. ФОРМАТ: RUN [<АРГУМЕНТ>] КОМАНДА RUN ПОЗВОЛЯЕТ ВЫПОЛНИТЬ ЗАГРУЖЕННУЮ В ОЗУ ПРОГРАММУ. ПО ЭТОЙ КОМАНДЕ СНАЧАЛА СОЗДАЕТСЯ ОБ'ЕКТНЫЙ КОД ПРОГРАММЫ, ПРОИЗВОДИТСЯ РАСПРЕДЕЛЕНИЕ ПАМЯТИ, А ЗАТЕМ ОБ'ЕКТНЫЙ КОД ЗАПУСКАЕТСЯ НА ВЫПОЛНЕНИЕ. ОБЫЧНО ВЫПОЛНЕНИЕ НАЧИНАЕТСЯ С ПЕРВОЙ СТРОКИ ПРОГРАММЫ. ЕСЛИ ИСПОЛЬЗУЕТСЯ АРГУМЕНТ, ТО ОН УКАЗЫВАЕТ, С КАКОЙ СТРОКИ ПРОГРАММЫ СЛЕДУЕТ НАЧАТЬ ЕЕ ВЫПОЛНЕНИЕ. ПРИ КАЖДОМ НОВОМ ВВОДЕ КОМАНДЫ RUN СТАРЫЙ ОБ'ЕКТНЫЙ КОД И ТАБЛИЦА ИМЕН ПОЛНОСТЬЮ СТИРАЮТСЯ И ФОРМИРУЮТСЯ ЗАНОВО. ПРИМЕР: RUN RUN 100 (НАЧИНАЕТ ВЫПОЛНЕНИЕ ПРОГРАММЫ СО СТРОКИ С НОМЕРОМ 100). 4.1.2. КОМАНДА CONT КОМАНДА ПРОДОЛЖАЕТ ВЫПОЛНЕНИЕ ПРОГРАММЫ С ТОГО МЕСТА, НА КОТОРОМ ОНО БЫЛО ПРЕРВАНО. ФОРМАТ: CONT ВЫПОЛНЕНИЕ ПРОГРАММЫ ПРИОСТАНАВЛИВАЕТСЯ ВСЯКИЙ РАЗ, КОГДА ВСТРЕЧАЮТСЯ ОПЕРАТОРЫ STOP, END ИЛИ ПРИ НАЖАТИИ КЛАВИШИ "СТОП". КОМАНДА CONT ПРОДОЛЖАЕТ ВЫПОЛНЕНИЕ ПРОГРАММЫ С ТОГО МЕСТА, НА КОТОРОМ ОНО БЫЛО ПРЕРВАНО. НА САМОМ ДЕЛЕ ВЫПОЛНЯЕТСЯ КОМАНДА GOTO ПО НОМЕРУ "СТАРОЙ" СТРОКИ. ЕСЛИ ПОСЛЕ ПРЕРЫВАНИЯ ПРОГРАММЫ ПРОИЗВОДЯТСЯ ДЕЙСТВИЯ, ПОСЛЕ КОТОРЫХ ЕЕ ВЫПОЛНЕНИЕ НЕВОЗМОЖНО (НАПРИМЕР, БЫЛА ОТРЕДАКТИРОВАНА СТРОКА ТЕКСТА ПРОГРАММЫ), ПОПЫТКА CTP. 20 207537 1.00100-01 35 ПРОДОЛЖИТЬ Е ВЫПОЛНЕНИЕ ПРИ ПОМОЩИ КОМАНДЫ CONT ПРИВОДИТ К ОШИБКЕ КОМАНДА CONT В СОЧЕТАНИИ С ОПЕРАТОРОМ STOP И КЛАВИШЕЙ "СТОП" ШИРОКО ИСПОЛЬЗУЕТСЯ ВО ВРЕМЯ ОТЛАДКИ ПРОГРАММЫ. ПОСЛЕ ПРИОСТАНОВКИ ПРОГРАММЫ МОЖНО РАСПЕЧАТАТЬ ТЕКУЩИЕ ЗНАЧЕНИЯ ПЕРЕМЕННЫХ, ДАЖЕ ИЗМЕНИТЬ ИХ И ПРОДОЛЖИТЬ ВЫПОЛНЕНИЕ ПРОГРАММЫ (СМОТРИТЕ РУКОВОДСТВО ПРОГРАММИСТА). ПРИМЕР: 1050 STOP RUN СТОП В СТРОКЕ 1050 OK ?A$ ПЕРВЫЙ OK CONT 4.1.3. КЛАВИША (КОМАНДА) "ШАГ" КЛАВИШЕЙ "ШАГ" ПРОГРАММУ МОЖНО ВЫПОЛНИТЬ В ШАГОВОМ РЕЖИМЕ, Т. Е., ПО ОДНОЙ СТРОКЕ (СМ. "РУКОВОДСТВО ОПЕРАТОРА"). 4.1.4. КОМАНДА MONIT КОМАНДА ОСУЩЕСТВЛЯЕТ ПЕРЕХОД В МОНИТОРНУЮ СИСТЕМУ МИКРО-ЭВМ "ЭЛЕКТРОНКА БК0010". ФОРМАТ: MONIT КОМАНДА ИСПОЛЬЗУЕТСЯ ДЛЯ ПЕРЕДАЧИ УПРАВЛЕНИЯ МОНИТОРНОЙ СИСТЕМЕ МИКРО-ЭВМ. 4.2. ХРАНЕНИЕ ПРОГРАММ НА КАССЕТНОЙ МАГНИТНОЙ ЛЕНТЕ ТЕКСТЫ ПРОГРАММ ПОЛЬЗОВАТЕЛЕЙ "ЭЛЕКТРОНИКА БК0010" ХРАНЯТСЯ НА КАССЕТНОЙ МАГНИТНОЙ ЛЕНТЕ. ОПИСЫВАЕМЫЕ ДАЛЬШЕ КОМАНДЫ ПРЕДНАЗНАЧЕНЫ ДЛЯ ЧТЕНИЯ (ЗАПИСИ) ТЕКСТА ПРОГРАММЫ С (НА) МАГНИТНОЙ ЛЕНТЫ. ТАКЖЕ ИМЕЮТСЯ КОМАНДЫ ДЛЯ ХРАНЕНИЯ НА МАГНИТНОЙ ЛЕНТЕ ДВОИЧНОЙ ИНФОРМАЦИИ. ДЛЯ ИДЕНТИФИКАЦИИ ПРОГРАММ ИСПОЛЬЗУЕТСЯ СПЕЦИФИКАЦИЯ ФАЙЛА - ТЕКСТОВАЯ КОНСТАНТА, СОДЕРЖАЩАЯ СИМВОЛИЧЕСКОЕ ИМЯ ФАЙЛА. ИМЯ ФАЙЛА МОЖЕТ СОСТОЯТЬ НЕ БОЛЕЕ ЧЕМ ИЗ ШЕСТИ СИМВОЛОВ. В КОМАНДАХ BLOAD И BSAVE ГРАНИЦЫ ОБЛАСТЕЙ ПАМЯТИ УКАЗЫВАЮТСЯ ПРИ ПОМОЩИ АДРЕСА - ЦЕЛОЙ КОНСТАНТЫ ИЗ ИНТЕРВАЛА [0,65535]. ДЛЯ УДОБСТВА АДРЕС ТАКЖЕ МОЖНО ЗАДАВАТЬ ШЕСНАДЦАТЕРИЧНЫМИ, CTP. 21 207537 1.00100-01 35 ВОСМИРИЧНЫМИ И ДВОИЧНЫМИ КОНСТАНТАМИ. 4.2.1. КОМАНДА LOAD КОМАНДА ЗАГРУЖАЕТ ТЕКСТ ПРОГРАММЫ ПОЛЬЗОВАТЕЛЯ (В ОДАХ ASCII). ФОРМАТ: LOAD <СПЕЦИФИКАЦИЯ ФАЙЛА>[,R] ПРИ НАЛИЧИИ R ПРОГРАММА ПОСЛЕ ЕЕ ЗАГРУЗКИ ЗАПУСКАЕТСЯ НА ВЫПОЛНЕНИЕ. КОМАНДА ИСПОЛЬЗУЕТСЯ ДЛЯ ЗАГРУЗКИ ТЕКСТА ПРОГРАММЫ, РАЗМЕЩЕННОГО НА КАССЕТНОЙ МАГНИТНОЙ ЛЕНТЕ С ПОМОЩЬЮ КОМАНДЫ SAVE. НАЛИЧИЕ ПАРАМЕТРА R ПРИВОДИТ К НЕМЕДЛЕННОМУ ЗАПУСКУ ПРОГРАММЫ ПОСЛЕ ЕЕ ЗАГРУЗКИ. ТЕКСТ ПРОГРАММЫ ПРЕДСТАВЛЕН НА МАГНИТНОЙ ЛЕНТЕ В КОДАХ ASCII. ПРИМЕР: LOAD "MOD2",R MOD2 .ASC 003 OK 4.2.2. КОМАНДА SAVE ПО ЭТОЙ КОМАНДЕ ТЕКСТ ПРОГРАММЫ ПОЛЬЗОВАТЕЛЯ ЗАПИСЫВАЕТСЯ НА КАССЕТНУЮ МАГНИТНУЮ ЛЕНТУ ( В КОДАХ ASCII). ФОРМАТ: SAVE <СПЕЦИФИКАЦИЯ ФАЙЛА> ЭТА КОМАНДА ПРЕДНАЗНАЧЕНА ДЛЯ ЗАПИСИ ТЕКСТА ПРОГРАММЫ НА КАССЕТНУЮ МАГНИТНУЮ ЛЕНТУ В КОДАХ ASCII. ГЛАВНОЕ ПРИМЕНЕНИЕ КОМАНДЫ SAVE - СОХРАНИТЬ ТЕКСТ ПРОГРАММЫ ПОЛЬЗАВАТЕЛЯ НА МАГНИТНОЙ ЛЕНТЕ. ПРИМЕР: FIND"ПЕРВЫЙ" ПЕРВЫЙ.COD ОК SAVE"ВТОРОЙ" ОК CTP. 22 207537 1.00100-01 35 4.2.3. КОМАНДА MERGE КОМАНДА ОБ'ЕДИНЯЕТ ТЕКСТ ПРОГРАММЫ В ПАМЯТИ ЭВМ С ТЕКСТОМ ПРОГРАММЫ, ЗАГРУЖАЕМЫМ С КАССЕТНОЙ МАГНИТНОЙ ЛЕНТЫ. ФОРМАТ: MERGE <СПЕЦИФИКАЦИЯ ФАЙЛА> ПРИ ВЫПОЛНЕНИИ ЭТОЙ КОМАНДЫ ЗАГРУЖАЕТСЯ ПРОГРАММА С МАГНИТНОЙ ЛЕНТЫ И ОБ'ЕДИНЯЕТСЯ С ПРОГРАММОЙ, ХРАНЯЩЕЙСЯ В ПАМЯТИ. ЗАГРУЖАЕМАЯ ПРОГРАММА ДОЛЖНА БЫТЬ В ФОРМАТЕ ASCII. В СЛУЧАЕ СОВПАДЕНИЯ НОМЕРА ЗАГРУЖАЕМОЙ СТРОКИ С НОМЕРОМ СТРОКИ, ХРАНЯЩЕЙСЯ В ПАМЯТИ, ПРИ ОБ'ЕДИНЕНИИ ТЕКСТОВ ОСТАВЛЯЕТСЯ ЗАГРУЖЕННАЯ СТРОКА. КОМАНДА ПОЗВОЛЯЕТ ПРИ ПОМОЩИ DELETE, RENUM И SAVE ЗАПОМНИТЬ ЧАСТЬ ОДНОЙ ПРОГРАММЫ, А ПОТОМ ОБ'ЕДИНИТЬ ЕЕ С ДРУГОЙ ПРОГРАММОЙ. MERGE ВСЕГДА ПОРТИТ ОБ'ЕКТНЫЙ КОД И АННУЛИРУЕТ ВСЕ ОПРЕДЕЛЕНИЯ ИМЕН, ЧТО ТРЕБУЕТ НОВОЙ КОМПИЛЯЦИИ ВСЕЙ ПРОГРАММЫ. НАЛИЧИЕ ЭТОЙ КОМАНДЫ В СИСТЕМЕ ПОЗВОЛЯЕТ ХРАНИТЬ НА МАГНИТНОЙ ЛЕНТЕ НАБОР ТИПОВЫХ ПРОГРАММ. ПРИМЕР: LOAD "ПЕРВЫЙ" ПЕРВЫЙ.ASC 005 OK MERGE "ВТОРОЙ" ВТОРОЙ.ASC 001 OK 4.2.4. КОМАНДА CLOAD КОМАНДА ЗАГРУЖАЕТ С КАССЕТНОЙ МАГНИТНОЙ ЛЕНТЫ ПРОГРАММУ ПОЛЬЗОВАТЕЛЯ, ЗАПИСАННУЮ ВО ВНУТРЕННЕМ ФОРМАТЕ. ФОРМАТ: CLOAD <СПЕЦИФИКАЦИЯ ФАЙЛА> КОМАНДА ЗАГРУЖАЕТ С МАГНИТНОЙ ЛЕНТЫ ТЕКСТ ПРОГРАММЫ, ХРАНЯЩЕЙСЯ ВО ВНУТРЕННЕМ ПРЕДСТАВЛЕНИИ СИСТЕМЫ. ТЕКСТ ПРОГРАММЫ ДОЛЖЕН БЫТЬ ЗАПИСАН КОМАНДОЙ CSAVE. ПРИМЕР: CLOAD "ПЕРВЫЙ" ПЕРВЫЙ.COD OK CTP. 23 207537 1.00100-01 35 4.2.5. КОМАНДА CSAVE КОМАНДА ЗАПИСЫВАЕТ ТЕКСТ ПРОГРАММЫ НА МАГНИТНУЮ ЛЕНТУ ВО ВНУТРЕННЕМ ФОРМАТЕ СИСТЕМЫ. ФОРМАТ: CSAVE <СПЕЦИФИКАЦИЯ ФАЙЛА> ПО ЭТОЙ КОМАНДЕ ТЕКСТ ПРОГРАММЫ ЗАПИСЫВАЕТСЯ ВО ВНУТРЕННЕМ ПРЕДСТАВЛЕНИИ СИСТЕМЫ НА МАГНИТНУЮ ЛЕНТУ. ПРИМЕР: CSAVE "1001" OK 4.2.6. КОМАНДА FIND КОМАНДА ПРЕДНАЗНАЧЕНА ДЛЯ ПОИСКА ФАЙЛА, ЗАПИСАННОГО НА КАССЕТНУЮ МАГНИТНУЮ ЛЕНТУ. ФОРМАТ: FIND [<СПЕЦИФИКАЦИЯ ФАЙЛА>] КОМАНДА FIND ПОЗВОЛЯЕТ ПОДВЕСТИ ГОЛОВКУ МАГНИТОФОНА К КОНЦУ ЛЮБОГО ЗАПИСАННОГО НА ЛЕНТУ ФАЙЛА. ИМЯ НУЖНОГО ФАЙЛА УКАЗЫВАЕТСЯ АРГУМЕНТОМ. КОМАНДУ УДОБНО ИСПОЛЬЗОВАТЬ ПРИ УКАЗАНИИ СВОБОДНОГО УЧАСТКА МАГНИТНОЙ ЛЕНТЫ ДЛЯ ЗАПИСИ НОВОГО ФАЙЛА. КАК И КОМАНДА LOAD, ЭТА КОМАНДА ПРИ ЧТЕНИИ ВЫДАЕТ НА ЭКРАН ИМЕНА ВСЕХ ОБНАРУЖЕННЫХ ФАЙЛОВ И ИХ ТИПЫ. ЕСЛИ ИМЯ ФАЙЛА НЕ УКАЗАНО, ТО КОМАНДА ПРОСТО ВЫДАЕТ НA ЭКРАН ИМЕНА ВСЕХ СЧИТАННЫХ ФАЙЛОВ. ПРИ ВЫПОЛНЕНИИ КОМАНДЫ СОДЕРЖАНИЕ ОЗУ НЕ МЕНЯЕТСЯ. ВЫПОЛНЕНИЕ КОМАНДЫ МОЖНО ПРЕРВАТЬ НАЖАТИЕМ КЛАВИШИ "СТОП". КОМАНДУ МОЖНО ИСПОЛЬЗОВАТЬ И ДЛЯ ПУСКА ДВИГАТЕЛЯ МАГНИТОФОНА ПРИ НЕОБХОДИМОСТИ ПЕРЕМОТАТЬ ЛЕНТУ ВПЕРЕД ИЛИ НАЗАД. ПРИМЕР: FIND"ПЕРВЫЙ" ПЕРВЫЙ.COD ОК SAVE"ВТОРОЙ" OK CTP. 24 207537 1.00100-01 35 4.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 ЗАГРУЖЕН И ЗАПУЩЕН С НАЧАЛА). 4.2.8. КОМАНДА BSAVE ЗАПИСЫВАЕТ СОДЕРЖИМОЕ ОПЕРАТИВНОЙ ПАМЯТИ НА КАССЕТНУЮ МАГНИТНУЮ ЛЕНТУ. ФОРМАТ: BSAVE <АРГУМЕНТ1>,<АРГУМЕНТ2>,<АРГУМЕНТ3> <АРГУМЕНТ1>::= СПЕЦИФИКАЦИЯ ФАЙЛА; <АРГУМЕНТ2>::= АДРЕС НАЧАЛА СОХРАНЯЕМОЙ ОБЛАСТИ; CTP. 25 207537 1.00100-01 35 <АРГУМЕНТ3>::= АДРЕС КОНЦА СОХРАНЯЕМОЙ ОБЛАСТИ. ПРИ ВЫПОЛНЕНИИ ЭТОЙ КОМАНДЫ СОДЕРЖИМОЕ ОПЕРАТИВНОЙ ПАМЯТИ, НАЧИНАЯ С АДРЕСА, УКАЗАННОГО АРГУМЕНТОМ 2, И КОНЧАЯ АДРЕСОМ, УКАЗАННЫМ АРГУМЕНТОМ 3, СОХРАНЯЕТСЯ НА КАССЕТНОЙ МАГНИТНОЙ ЛЕНТЕ В ФАЙЛЕ, ИМЯ КОТОРОГО УКАЗАНО АРГУМЕНТОМ 1. ПРИ ОТСУТСТВИИ ИМЕНИ ФАЙЛА ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 5, ПРИ ОТСУТСТВИИ АРГУМЕНТОВ - ОБ ОШИБКЕ 2. ВЫПОЛНЕНИЕ КОМАНДЫ МОЖНО ПРЕРВАТЬ НАЖАТИЕМ КЛАВИШИ "СТОП". КРОМЕ СОДЕРЖИМОГО ПАМЯТИ НА МАГНИТНУЮ ЛЕНТУ ЗАПИСЫВАЮТСЯ НАЧАЛЬНЫЙ АДРЕС И ДЛИНА ОБЛАСТИ ОПЕРАТИВНОЙ ПАМЯТИ. В ОСНОВНОМ ЭТА КОМАНДА ДАЕТ ВОЗМОЖНОСТЬ СОХРАНЯТЬ СОДЕРЖИМОЕ ОПЕРАТИВНОЙ ПАМЯТИ НА МАГНИТНОЙ ЛЕНТЕ В ДВОИЧНОМ ФОРМАТЕ. ОСОБЕННО ПОЛЕЗНО ЕЕ ИСПОЛЬЗОВАНИЕ ПРИ СОХРАНЕНИИ ПРОГРАММ, НАПИСАННЫХ НА МАШИННОМ ЯЗЫКЕ И ИСПОЛЬЗУЕМЫХ В БЕЙСИК-СИСТЕМЕ ПРИ ПОМОЩИ ФУНКЦИИ USR. ПРИМЕР: BSAVE "PROG",&O10000,&O20000 OK 4.3. РАБОТА С ТЕКСТАМИ ПРОГРАММ ПРИ РАБОТЕ С ТЕКСТАМИ ПРОГРАММ ИСПОЛЬЗУЕТСЯ ПОНЯТИЕ НОМЕРА СТРОКИ - ЦЕЛОЙ КОНСТАНТЫ ИЗ ИНТЕРВАЛА ОТ 0 ДО 65535. ВМЕСТО НОМЕРА СТРОКИ МОЖНО ИСПОЛЬЗОВАТЬ СИМВОЛ ".", ОЗНАЧАЮЩИЙ "ТЕКУЩУЮ" СТРОКУ. "ТЕКУЩАЯ" СТРОКА - ЭТО СТРОКА, КОТОРАЯ ПОСЛЕДНЕЙ БЫЛА РЕДАКТИРОВАНА, ВЫВЕДЕНА НА ЭКРАН ИЛИ СТРОКА, В КОТОРОЙ БЫЛА ОБНАРУЖЕНА ОШИБКА. 4.3.1. КОМАНДА LIST КОМАНДА ВЫВОДИТ ТЕКСТ ПРОГРАММЫ НА ЭКРАН ИЛИ ПЕЧАТАЮЩЕЕ УСТРОЙСТВО. ФОРМАТ: [L]LIST [<АРГУМЕНТ1>][-[<АРГУМЕНТ2>]] <АРГУМЕНТ1>::= НОМЕР ПЕРВОЙ СТРОКИ ВЫВОДИМОГО ФРАГМЕНТА ПРОГРАММЫ; <АРГУМЕНТ2>::= НОМЕР ПОСЛЕДНЕЙ СТРОКИ; L УКАЗЫВАЕТ, ЧТО ТЕКСТ ПРОГРАММЫ БУДЕТ ВЫВОДИТЬСЯ НА ПЕЧАТАЮЩЕЕ УСТРОЙСТВО. КОМАНДА LIST ВЫВОДИТ ТЕКСТ ПРОГРАММЫ НА ЭКРАН, А КОМАНДА LLIST - НА ПЕЧАТАЮЩЕЕ УСТРОЙСТВО. ПРИ ВЫВОДЕ ТЕКСТА ЗА НОМЕРОМ СТРОКИ ИДЕТ ПРОБЕЛ, А ДАЛЕЕ НЕПОСРЕДСТВЕННО САМ ТЕКСТ СТРОКИ. ЕСЛИ ОБА АРГУМЕТА ОПУЩЕНЫ, ТО ВЫВОДИТСЯ ВЕСЬ ТЕКСТ ПРОГРАММЫ. ЕСЛИ ЗАДАН ТОЛЬКО ОДИН АРГУМЕНТ, ТО ВЫВОДИТСЯ СТРОКА С УКАЗАННЫМ НОМЕРОМ. ТИРЕ ПЕРЕД НОМЕРОМ СТРОКИ (ИЛИ ПОСЛЕ НЕГО) CTP. 26 207537 1.00100-01 35 УКАЗЫВАЕТ, ЧТО НАДО ВЫВОДИТЬ ВЕСЬ ТЕКСТ ДО (ИЛИ ПОСЛЕ) СТРОКИ С УКАЗАННЫМ НОМЕРОМ, ВКЛЮЧАЯ ЭТУ СТРОКУ. ЕСЛИ ЗАДАНЫ ОБА АРГУМЕНТА, ТО ВЫВОДЯТСЯ ВСЕ СТРОКИ С НОМЕРАМИ ИЗ УКАЗАННОГО ИНТЕРВАЛА. ДЛЯ УКАЗАНИЯ НОМЕРА "ТЕКУЩЕЙ" СТРОКИ МОЖНО ИСПОЛЬЗОВАТЬ СИМВОЛ "." . СЛЕДУЕТ ОТМЕТИТЬ, ЧТО ЭТА КОМАНДА НЕ ПРОВЕРЯЕТ НАЛИЧИЕ В ПРОГРАММЕ СТРОК С УКАЗАННЫМИ НОМЕРАМИ, ПОЭТОМУ В ТАКОМ СЛУЧАЕ СООБЩЕНИЯ ОБ ОШИБКЕ НЕ ВЫДАЕТСЯ. ОДНАКО, ЕСЛИ В ПРОГРАММЕ СУЩЕСТВУЮТ СТРОКИ С НОМЕРАМИ ИЗ ЗАДАННОГО ИНТЕРВАЛА, ТО ОНИ ВЫВОДЯТСЯ НА УКАЗАННОЕ УСТРОЙСТВО. ЕСЛИ СТРОК УКАЗАННЫМИ НОМЕРАМИ НЕТ В ПРОГРАММЕ, ТО ВЫПОЛНЕНИЕ КОМАНДЫ ОКАНЧИВАЕТСЯ И ВЫВОДИТСЯ ПРИГЛАШЕНИЕ "ОК". ВЫВОД СТРОК МОЖНО ПРИОСТАНОВИТЬ ОДНОВРЕМЕННЫМ НАЖАТИЕМ НА КЛАВИШИ "СУ" И "@". ПРОДОЛЖЕНИЕ ДЕЙСТВИЙ - НАЖАТИЕ ЛЮБОЙ КЛАВИШИ. КАК ВСЕГДА, ЛЮБЫЕ ДЕЙСТВИЯ ПРЕРЫВАЕТ КЛАВИША "СТОП". ПРИМЕР: 200 REM ПОСЛЕДНЯЯ 150 REM СРЕДНЯЯ 100 REM ПЕРВАЯ LIST. 100 REM ПЕРВАЯ ОК LIST -175 100 REM ПЕРВАЯ 150 REM СРЕДНЯЯ ОК 4.3.2. КОМАНДА DELETE КОМАНДА УДАЛЯЕТ СТРОКИ ТЕКСТА ПРОГРАММЫ. ФОРМАТ: DELETE [<АРГУМЕНТ1>][-[<АРГУМЕНТ2>]] <АРГУМЕНТ1>::= НОМЕР ПЕРВОЙ СТРОКИ УДАЛЯЕМОГО ФРАГМЕНТА ПРОГРАММЫ; <АРГУМЕНТ2>::= НОМЕР ПОСЛЕДНЕЙ СТРОКИ. ПО ЭТОЙ КОМАНДЕ УДАЛЯЮТСЯ СТРОКИ, НАЧИНАЯ С НОМЕРА, УКАЗАННОГО АРГУМЕНТОМ 1, ДО НОМЕРА, УКАЗАННОГО АРГУМЕНТОМ 2. ЕСЛИ АРГУМЕНТ 1 ОПУЩЕН, ТО ВМЕСТО НЕГО БЕРЕТСЯ НОМЕР ПЕРВОЙ СТРОКИ ПРОГРАММЫ. АНАЛОГИЧНО, ЕСЛИ ОПУЩЕН АРГУМЕНТ 2, ТО ВМЕСТО НЕГО БЕРЕТСЯ НОМЕР ПОСЛЕДНЕЙ СТРОКИ ПРОГРАММЫ. ЕСЛИ В КАЧЕСТВЕ АРГУМЕНТА 1 (ИЛИ АРГУМЕНТА 2) ЗАДАЕТСЯ ".", ТО БЕРЕТСЯ "ТЕКУЩАЯ" СТРОКА ПРОГРАММЫ. В ОТЛИЧИЕ ОТ КОМАНДЫ LIST, ЕСЛИ В ТЕКСТЕ ПРОГРАММЫ СТРОКА С УКАЗАННЫМ НОМЕРОМ НЕ СУЩЕСТВУЕТ, ТО ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 8. ПРИМЕЧАНИЕ: ЭТА КОМАНДА МОЖЕТ УДАЛИТЬ ВСЮ ПРОГРАММУ ИЛИ ЕЕ ЧАСТЬ, ПОЭТОМУ ПОЛЗОВАТЬСЯ ЕЮ НАДО ОЧЕНЬ ОСТОРОЖНО. ПРИМЕР: DELETE 100-200 OK CTP. 27 207537 1.00100-01 35 DELETE . OK DELETE -5000 OK DELETE 50-. OK DELETE 135 OK 4.3.3. КОМАНДА RENUM КОМАНДА ПЕРЕНУМЕРОВЫВАЕТ СТРОКИ ТЕКСТА ПРОГРАММЫ. ФОРМАТ: RENUM [<АРГУМЕНТ1>][,<АРГУМЕНТ2>][,<АРГУМЕНТ3>] <АРГУМЕНТ1>::= НОМЕР ПЕРВОЙ СТРОКИ ПЕРЕНУМЕРОВАННОГО ФРАГМЕНТА; <АРГУМЕНТ2>::= НОМЕР СТРОКИ, С КОТОРОЙ НАЧИНАЕТСЯ ПЕРЕНУМЕРОВЫВАЕМЫЙ ФРАГМЕНТ; <АРГУМЕНТ3>::= ШАГ ПЕРЕНУМЕРАЦИИ, ЦЕЛАЯ КОНСТАНТА ИЗ ИНТЕРВАЛА [0,65535]. ПО УМОЛЧАНИЮ АРГУМЕНТ 1 И АРГУМЕНТ 3 РАВНЫ 10, А АРГУМЕНТ 2 РАВЕН НОМЕРУ ПЕРВОЙ СТРОКИ ПРОГРАММЫ. ВМЕСТО АРГУМЕНТА 1 И АРГУМЕНТА 2 МОЖНО ИСПОЛЬЗОВАТЬ ТОЧКУ - ОНА УКАЗЫВАЕТ НА НОМЕР "ТЕКУЩЕЙ" СТРОКИ. ЭТА КОМАНДА ПРИМЕНЯЕТСЯ ДЛЯ ИЗМЕНЕНИЯ НОМЕРОВ СТРОК В ПРОГРАММЕ. RENUM ТАКЖЕ ПРОВЕРЯЕТ, ВСЕ ЛИ СТРОКИ, НОМЕРА КОТОРЫХ УКАЗАНЫ В ОПЕРАТОРАХ, ДЕЙСТВИТЕЛЬНО СУЩЕСТВУЮТ. ЕСЛИ ОБНАРУЖЕНО, ЧТО СТРОКИ С УКАЗАННЫМ НОМЕРОМ В ПРОГРАММЕ НЕТ, ТО ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 8. ЭТА КОМАНДА ПЕРЕНУМЕРОВЫВАЕТ СТРОКИ ПРОГРАММЫ, НАЧИНАЯ СО СТРОКИ С НОМЕРОМ, ЗАДАННЫМ АРГУМЕНТОМ 2. НОМЕРУ ЭТОЙ СТРОКИ ПРИСВАИВАЕТСЯ ЗНАЧЕНИЕ АРГУМЕНТА 1, А ПОСЛЕДУЮЩИЕ СТРОКИ НУМЕРУЮТСЯ С ШАГОМ, ЗАДАННЫМ АРГУМЕНТОМ 3. ПРИМЕР: RENUM 60,55 RENUM ,,5 CTP. 28 207537 1.00100-01 35 4.3.4. КОМАНДА AUTO КОМАНДА ПЕРЕВОДИТ В РЕЖИМ АВТОМАТИЧЕСКОЙ НУМЕРАЦИИ СТРОК ДЛЯ ВВОДА ТЕКСТА ПРОГРАММЫ. ФОРМАТ: AUTO [<АРГУМЕНТ1>][,<АРГУМЕНТ2>] <АРГУМЕНТ1>::= НАЧАЛЬНЫЙ НОМЕР СТРОКИ; <АРГУМЕНТ2>::= ПРИРАЩЕНИЕ, ЧИСЛО ИЗ ИНТЕРВАЛА [0,65535]. КОМАНДА AUTO ПОЗВОЛЯЕТ ЗАДАВАТЬ АВТОМАТИЧЕСКИЙ ВВОД НОМЕРОВ СТРОК ПРИ ВВОДЕ ТЕКСТА ПРОГРАММЫ, Т.Е., ПРИ НАЖАТИИ КЛАВИШИ "ВВОД", ГЕНЕРИРУЕТСЯ И ВЫВОДИТСЯ НА ЭКРАН СЛЕДУЮЩИЙ НОМЕР СТРОКИ. НОМЕРА СТРОК УВЕЛИЧИВАЮТСЯ С ШАГОМ, РАВНЫМ ЗНАЧЕНИЮ ВТОРОГО АРГУМЕНТА. ПРИ ОТСУТСТВИИ ПЕРВОГО, ВТОРОГО ИЛИ ОБОИХ АРГУМЕНТОВ, СЧИТАЕТСЯ, ЧТО ОНИ РАВНЫ 10. ТОЧКА, УКАЗАННАЯ НА МЕСТЕ ПЕРВОГО АРГУМЕНТА, РАССМАТРИВАЕТСЯ КАК НОМЕР "ТЕКУЩЕЙ" СТРОКИ. ЕСЛИ ОКАЖЕТСЯ, ЧТО СТРОКА С ОЧЕРЕДНЫМ СГЕНЕРИРОВАННЫМ НОМЕРОМ В ТЕКСТЕ ПРОГРАММЫ УЖЕ СУЩЕСТВУЕТ, ЭТОТ ТЕКСТ ВЫВОДИТСЯ НА ЭКРАН. ПОСЛЕ ЭТОГО ОН МОЖЕТ БЫТЬ ОТРЕДАКТИРОВАН И ВВЕДЕН НАЖАТИЕМ КЛАВИШИ "ВВОД". ЕСЛИ РЕДАКЦИИ СТРОКИ НЕ ТРЕБУЕТСЯ, ТО, НАЖАВ КЛАВИШУ "ВВОД", МОЖЕМ ПЕРЕЙТИ К ВВОДУ СЛЕДУЮЩЕЙ СТРОКИ. ДЛЯ ОКОНЧАНИЯ РЕЖИМА AUTO ДОСТАТОЧНО НАЖАТЬ НА КЛАВИШУ "СТОП" ИЛИ "СУ" И "С" ОДНОВРЕМЕННО, ЧТО ВОЗВРАЩАЕТ СИСТЕМУ В НЕПОСРЕДСТВЕННЫЙ РЕЖИМ. ПРИМЕР: 110 END AUTO 100 100 PRINT "ПРИМЕР" 110 END (НАЖИМАЕТЕ КЛАВИШУ "ВВОД") 120 (НАЖИМАЕТЕ КЛАВИШЫ "СУ" И "С" ОДНОВРЕМЕННО) LIST 100 PRINT "ПРИМЕР" 110 END OK 4.3.5. КОМАНДА . (ТОЧКА) КОМАНДА ИСПОЛЬЗУЕТСЯ ПРИ РЕДАКТИРОВАНИИ СТРОК ПРОГРАММЫ. ФОРМАТ: . [<АРГУМЕНТ>] <АРГУМЕНТ>::= НОМЕР СТРОКИ ПРОГРАММЫ. КОМАНДА ПОЗВОЛЯЕТ РЕДАКТИРОВАТЬ ОТДЕЛЬНЫЕ СТРОКИ ПРОГРАММЫ. CTP. 29 207537 1.00100-01 35 НОМЕР ПОДЛЕЖАЩЕЙ РЕДАКТИРОВАНИЮ СТРОКИ ЗАДАЕТСЯ АРГУМЕНТОМ. ПОСЛЕ ВВОДА КОМАНДЫ НА ЭКРАН ВЫВОДИТСЯ ЗАДАННАЯ СТРОКА ПОСЛЕ ЧЕГО ЕЕ МОЖНО РЕДАКТИРОВАТЬ ПРИ ПОМОЩИ КЛАВИШ РЕДАКТИРОВАНИЯ (СМ. "РУКОВОДСТВО ОПЕРАТОРА"). ПРИ ОШИБКАХ, ОБНАРУЖЕННЫХ ТРАНСЛЯТОРОМ, "ТЕКУЩЕЙ" СТРОКОЙ СТАНОВИТСЯ СТРОКА, СОДЕРЖАЩАЯ ОШИБКУ. 4.3.6. КЛАВИША (КОМАНДА) "ВС" НАЖАТИЕМ КЛАВИШИ "ВС" МОЖНО ВЫЗВАТЬ ПОСЛЕДНЮЮ ВВЕДЕННУЮ СТРОКУ ДЛЯ ДАЛЬНЕЙШЕЙ КОРЕКТИРОВКИ И ПОВТОРНОГО ВВОДА (СМ. "РУКОВОДСТВО ОПЕРАТОРА"). 4.3.7. КОМАНДА NEW ПО ЭТОЙ КОМАНДЕ УДАЛЯЕТСЯ ПРОГРАММА ПОЛЬЗОВАТЕЛЯ. ФОРМАТ: NEW КОМАНДА ИСПОЛЬЗУЕТСЯ ДЛЯ ОЧИСТКИ ВСЕХ ПЕРЕМЕННЫХ ПРОГРАММЫ (ОПЕРАТОР CLEAR) И УДАЛЕНИЯ ПРОГРАММЫ ИЗ ПАМЯТИ. CTP. 30 207537 1.00100-01 35 5. ОПЕРАТОРЫ ОПЕРАТОРЫ ЯЗЫКА ИЗМЕНЯЮТ ЗНАЧЕНИЯ ПЕРЕМЕННЫХ, ЕСТЕСТВЕННЫЙ ПОРЯДОК ВЫЧИСЛЕНИЙ СОГЛАСНО АЛГОРИТМУ РЕШЕНИЯ ЗАДАЧИ, РЕЗЕРВИРУЮТ ПАМЯТЬ ПОД ПЕРЕМЕННЫЕ И КОНСТАНТЫ И Т.Д. 5.1. ОСНОВНЫЕ ОПЕРАТОРЫ К ОСНОВНЫМ ОПЕРАТОРАМ ОТНОСЯТСЯ: ОПЕРАТОРЫ ПРИСВАИВАНИЯ, БЕЗУСЛОВНОГО И УСЛОВНОГО ПЕРЕХОДА, ЦИКЛА, ОБРАЩЕНИЯ К ПОДПРОГРАММЕ И ДР. В ОПЕРАТОРАХ ПЕРЕХОДА ИСПОЛЬЗУЮТСЯ НОМЕРА СТРОК - ЦЕЛЫЕ КОНСТАНТЫ ИЗ ИНТЕРВАЛА [0,65535]. ИСПОЛЬЗОВАНИЕ ТОЧКИ (".") ВМЕСТО НОМЕРА СТРОКИ НЕДОПУСТИМО. 5.1.1. ОПЕРАТОР LET ЭТО ОСНОВНОЙ ОПЕРАТОР ДЛЯ ПРИСВОЕНИЯ НОВЫХ ЗНАЧЕНИЙ ПЕРЕМЕННЫМ. ФОРМАТ: [LET]<АРГУМЕНТ>=<ВЫРАЖЕНИЕ> <АРГУМЕНТ>::=<ПЕРЕМЕННАЯ> <ФУНКЦИЯ MID$> ОПЕРАТОР LET СЛУЖИТ ДЛЯ ПРИСВОЕНИЯ ЗНАЧЕНИЯ ВЫРАЖЕНИЯ, НАХОДЯЩЕГОСЯ СПРАВА ОТ ЗНАКА РАВЕНСТВА, ПЕРЕМЕННОЙ, НАХОДЯЩЕЙСЯ СЛЕВА ОТ ЭТОГО ЗНАКА. ТИП ВЫРАЖЕНИЯ ДОЛЖЕН СОВПАДАТЬ С ТИПОМ ПЕРЕМЕННОЙ. ПРИ ПРИСВАИВАНИИ, ЕСЛИ ЭТО НЕОБХОДИМО, ПРОИЗВОДИТСЯ ПРЕОБРАЗОВАНИЕ ТИПОВ ПЕРЕМЕННЫХ. ПОПЫТКА ПРИСВОИТЬ СИМВОЛЬНОЕ ЗНАЧЕНИЕ ЧИСЛОВОЙ ПЕРЕМЕННОЙ ИЛИ НАОБОРОТ ПРИВЕДЕТ К ОШИБКЕ 13. ЗАМЕТИМ, ЧТО СЛОВО LET В ЭТОМ ОПЕРАТОРЕ НЕ ОБЯЗАТЕЛЬНО. ПРИМЕР: 10 LET X=1 20 Y=2*3 30 A$=B$+" " 40 LET D$=A$ 50 MID$(C$,1%,2%)=D$ CTP. 31 207537 1.00100-01 35 5.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 5.1.3. ОПЕРАТОР GOSUB ОПЕРАТОР ПЕРЕДАЕТ УПРАВЛЕНИЕ ПОДПРОГРАММЕ. ФОРМАТ: GOSUB <НОМЕР СТРОКИ> ОПЕРАТОР GOSUB ИСПОЛЬЗУЕТСЯ ДЛЯ ВЫЗОВА ПОДПРОГРАММЫ- ГРУППЫ ОПЕРАТОРОВ, КОТОРАЯ НАЧИНАЕТСЯ С УКАЗАННОГО НОМЕРА СТРОКИ И ЗАКАНЧИВАЕТСЯ ОПЕРАТОРОМ RETURN. ПОДПРОГРАММА МОЖЕТ НАХОДИТЬСЯ В ЛЮБОМ МЕСТЕ ПРОГРАММЫ И ВЫЗЫВАТЬСЯ СКОЛЬКО УГОДНО РАЗ. RETURN ВОЗВРАТИТ УПРАВЛЕНИЕ ОПЕРАТОРУ, СЛЕДУЮЩЕМУ ЗА ВЫЗВАВШИМ ПОДПРОГРАММУ ОПЕРАТОРОМ GOSUB. ПРИ ОТСУТСТВИИ СТРОКИ С УКАЗАННЫМ НОМЕРОМ ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 8. ВХОД В ПОДПРОГРАММУ НЕ ЧЕРЕЗ GOSUB ВЫЗЫВАЕТ ОШИБКУ 3. 5.1.4. ОПЕРАТОР RETURN ОКАНЧИВАЕТ ПОДПРОГРАММУ И ОСУЩЕСТВЛЯЕТ ВОЗВРАТ К СЛЕДУЮЩЕМУ ЗА GOSUB ОПЕРАТОРУ. ФОРМАТ: RETURN RETURN ОСУЩЕСТВЛЯЕТ ВОЗВРАТ К ОПЕРАТОРУ, КОТОРЫЙ НАХОДИТСЯ НЕПОСРЕДСТВЕННО ЗА ОПЕРАТОРОМ, ВЫЗВАВШИМ ПОДПРОГРАММУ. ПОСЛЕ CTP. 32 207537 1.00100-01 35 ВОЗВРАЩЕНИЯ ВСЕ НЕЗАКОНЧЕННЫЕ ЦИКЛЫ FOR-NEXT В ПОДПРОГРАММЕ ЗАВЕРШАЮТСЯ. В ПОДПРОГРАММЕ ВОЗМОЖНЫ ВЛОЖЕННЫЕ ВЫЗОВЫ ДРУГИХ ПОДПРОГРАММ. ПРИМЕР: 10 I=1 20 GOSUB 100 30 I=2 40 GOSUB 100 50 END 100 REM ПОДПРОГРАММА 110 PRINT "SUB";I 120 RETURN 5.1.5. ОПЕРАТОР IF ОПЕРАТОР IF ВЫПОЛНЯЕТ ОДНУ ИЗ ВЕТВЕЙ В ЗАВИСИМОСТИ ОТ УСЛОВИЯ. ФОРМАТ: THEN <ОПЕРАТОР> <ОПЕРАТОР> IF <АРГУМЕНТ> [ ELSE ] THEN <НОМЕР СТРОКИ> <НОМЕР СТРОКИ> GOTO <АПГУМЕНТ>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ОПРЕДЕЛЯЮЩЕЕ УСЛОВИЕ; <ОПЕРАТОР>::= ЛЮБОЙ ОПЕРАТОР БЕЙСИКА; <НОМЕР СТРОКИ>::= НОМЕР СУЩЕСТВУЮЩЕЙ СТРОКИ. ОПЕРАТОР ВЫЧИСЛЯЕТ ЗНАЧЕНИЕ АРГУМЕНТА И ПРЕОБРАЗОВЫВАЕТ ЕГО В ЦЕЛЫЙ ТИП. НУЛЕВОЙ РЕЗУЛЬТАТ СЧИТАЕТСЯ КАК "ЛОЖЬ", НЕНУЛЕВОЙ - "ИСТИНА". ЕСЛИ УСЛОВИЕ ОКАЗЫВАЕТСЯ "ИСТИНА",ТО ВЫПОЛНЯЕТСЯ УКАЗАННЫЙ ОПЕРАТОР ИЛИ ПРОИСХОДИТ ПЕРЕХОД К СТРОКЕ С УКАЗАННЫМ НОМЕРОМ. В СЛУЧАЕ НОМЕРА СТРОКИ ВМЕСТО СЛОВА THEN МОЖНО ИСПОЛЬЗОВАТЬ СЛОВО GOTO. ЕСЛИ АРГУМЕНТ ПРИНИМАЕТ ЗНАЧЕНИЕ "ЛОЖЬ", ТО ВЫПОЛНЯЕТСЯ ВЕТВЬ ELSE ИЛИ УПРАВЛЕНИЕ СРАЗУ ЖЕ ПЕРЕДАЕТСЯ СЛЕДУЮЩЕЙ СТРОКЕ, ЕСЛИ ВЕТВЬ ELSE ОТСУТСТВУЕТ. В КАЧЕСТВЕ <ОПЕРАТОРА> МОЖЕТ БЫТЬ ЛЮБОЙ ОПЕРАТОР БЕЙСИКА, ДАЖЕ ДРУГОЙ ОПЕРАТОР IF. В КАЧЕСТВЕ УСЛОВИЯ ОБЫЧНО ИСПОЛЬЗУЮТСЯ ВЫРАЖЕНИЯ, СОЕДИНЕНЫ ОПЕРАЦИЯМИ ОТНОШЕНИЯ И ЛОГИЧЕСКИМИ ОПЕРАЦИЯМИ. ПРИМЕР: 10 INPUT A,B,C 20 IF A=<АРГУМЕНТ1> TO <АРГУМЕНТ2> [STEP <АРГУМЕНТ3>] <ПАРАМЕТР>::=ЧИСЛОВАЯ ПЕРЕМЕННАЯ (СЧЕТЧИК ПОВТОРЕНИЙ ЦИКЛА); <АРГУМЕНТ1>::=АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ (НАЧАЛЬНОЕ ЗНАЧЕНИЕ <ПАРАМЕТРА>); <АРГУМЕНТ2>::=АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ, ОПРЕДЕЛЯЮЩЕЕ КОНЕЦ ПОВТОРЕНИЙ ЦИКЛА; <АРГУМЕНТ3>::=АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ (ПРИРАЩЕНИЕ <ПАРАМЕТРА>, ПО УМОЛЧАНИЮ РАВНО 1). ВО ВРЕМЯ ПЕРВОГО ВЫПОЛНЕНИЯ ЦИКЛА ЗНАЧЕНИЕ АРГУМЕНТА 1 ПРИСВАИВАЕТСЯ ПАРАМЕТРУ ЦИКЛА. ВЫПОЛНЕНИЕ ОПЕРАТОРОВ, ВХОДЯЩИХ В ЦИКЛ, ПРОДОЛЖАЕТСЯ ДО ПОЯВЛЕНИЯ ОПЕРАТОРА NEXT. ПОСЛЕ ЭТОГО ЗНАЧЕНИЕ ПАРАМЕТРА УВЕЛИЧИВАЕТСЯ (ИЛИ УМЕНЬШАЕТСЯ, ЕСЛИ ЗНАЧЕНИЕ АРГУМЕНТА 3 ОТРИЦАТЕЛЬНОЕ) НА ЗНАЧЕНИЕ АРГУМЕНТА 3 И СРАВНИВАЕТСЯ СО ЗНАЧЕНИЕМ АРГУМЕНТА 2. ЕСЛИ ЗНАЧЕНИЕ ПАРАМЕТРА БОЛЬШЕ (МЕНЬШЕ, ЕСЛИ АРГУМЕНТ 3 ОТРИЦАТЕЛЬНЫЙ) ЗНАЧЕНИЯ АРГУМЕНТА 2, ТО ВЫПОЛНЯЮТСЯ СЛЕДУЮЩИЕ ЗА NEXT ОПЕРАТОРЫ, В ПРОТИВНОМ СЛУЧАЕ ПОВТОРЯЕТСЯ ВЫПОЛНЕНИЕ ОПЕРАТОРОВ, НАХОДЯЩИХСЯ МЕЖДУ ОПЕРАТОРАМИ FOR И NEXT. ДОПУСТИМЫ ВЛОЖЕННЫЕ ЦИКЛЫ. ОНИ НЕ ДОЛЖНЫ ПЕРЕСЕКАТЬСЯ, Т. Е., NEXT ВНУТРЕННЕГО ЦИКЛА ДОЛЖЕН ПОЯВИТЬСЯ РАНЬШЕ, ЧЕМ NEXT НАРУЖНОГО ЦИКЛА. ВОЗМОЖЕН НЕЕСТЕСТВЕННЫЙ ВЫХОД ИЗ ЦИКЛА, ПРИ ПОМОЩИ ОПЕРАТОРОВ ПЕРЕХОДА МИНУЯ ОПЕРАТОР NEXT. ВХОД В ЦИКЛ, МИНУЯ ОПЕРАТОР FOR, НЕ ДОПУСКАЕТСЯ. 5.1.7. ОПЕРАТОР NEXT ОПРЕДЕЛЯЕТ КОНЕЦ ОПЕРАТОРОВ ЦИКЛА. ФОРМАТ: NEXT [<ПАРАМЕТР>[,<ПАРАМЕТР>...]] <ПАРАМЕТР>::= ЧИСЛОВАЯ ПЕРЕМЕННАЯ, СООТВЕТСТВУЮЩАЯ ПАРАМЕТРУ ОПЕРАТОРА FOR. ОПЕРАТОР NEXT ВЫПОЛНЯЕТ ПРИРАЩЕНИЕ ПАРАМЕТРА ЦИКЛА, ПРОВЕРЯЕТ ДОСТИЖЕНИЕ ПРЕДЕЛЬНОГО ЗНАЧЕНИЯ И, В ЗАВИСИМОСТИ ОТ ЭТОГО, ОСУЩЕСТВЛЯЕТ ВЫХОД ИЗ ЦИКЛА. CTP. 34 207537 1.00100-01 35 NEXT С ПАРАМЕТРОМ ИСПОЛЬЗУЕТСЯ ДЛЯ БОЛЬШЕЙ НАГЛЯДНОСТИ, ЧТОБЫ УКАЗАТЬ, К КАКОМУ FOR ОН ОТНОСИТСЯ. NEXT СО СПИСКОМ ПАРАМЕТРОВ, РАЗДЕЛЕННЫХ ЗАПЯТЫМИ, ИСПОЛЬЗУЕТСЯ ДЛЯ ЗАКАНЧИВАНИЯ В ОДНОМ МЕСТЕ НЕСКОЛЬКИХ ВЛОЖЕННЫХ ЦИКЛОВ. В ТАКОМ СЛУЧАЕ ПЕРВАЯ ПЕРЕМЕННАЯ В СПИСКЕ ДОЛЖНА ПРИНАДЛЕЖАТЬ САМОМУ ВНУТРЕННЕМУ ЦИКЛУ, А ПОСЛЕДНЯЯ - НАРУЖНОМУ. ВХОД В ЦИКЛ НЕ ЧЕРЕЗ ОПЕРАТОР 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 5.1.8. ОПЕРАТОР ON ОПЕРАТОР ОСУЩЕСТВЛЯЕТ ВЕТВЛЕНИЕ В ЗАВИСИМОСТИ ОТ ЗНАЧЕНИЯ ВЫРАЖЕНИЯ. ФОРМАТ: ON <ВЫРАЖЕНИЕ> [GOTO ] <СПИСОК> GOSUB <ВЫРАЖЕНИЕ>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ПРИНИМАЮЩЕЕ ЗНАЧЕНИЯ ИНТЕРВАЛА [0,32767]. <СПИСОК>::= СПИСОК НОМЕРОВ СУЩЕСТВУЮЩИХ СТРОК, РАЗДЕЛЕННЫХ ЗАПЯТЫМИ; ЭТОТ ОПЕРАТОР ПОЗВОЛЯЕТ ПЕРЕХОД НА НЕСКОЛЬКО СТРОК. ПРИ ВЫБОРЕ НОМЕРА СТРОКИ ВЫЧИСЛЯЕТСЯ ЗНАЧЕНИЕ ВЫРАЖЕНИЯ. ЕСЛИ РЕЗУЛЬТАТ РАВЕН НУЛЮ ИЛИ БОЛЬШЕ ЧЕМ ЧИСЛО НОМЕРОВ СТРОК В СПИСКЕ, ТО УПРАВЛЕНИЕ ПЕРЕДАЕТСЯ СЛЕДУЮЩЕМУ ОПЕРАТОРУ. ЕСЛИ ЗНАЧЕНИЕ ВЫРАЖЕНИЯ СООТВЕТСТВУЕТ НОМЕРУ СТРОКИ ИЗ СПИСКА (СЧИТАЯ СЛЕВА 1, 2 И Т.Д.), ТО ЭТОТ НОМЕР СТРОКИ УПОТРЕБЛЯЕТСЯ ОПЕРАТОРОМ GOSUB ИЛИ GOTO. ЕСЛИ ВЫПОЛНЯЕТСЯ ОПЕРАТОР GOSUB<НОМЕР СТРОКИ>, ТО ОПЕРАТОР RETURN ВОЗВРАЩАЕТ УПРАВЛЕНИЕ ОПЕРАТОРУ, СЛЕДУЮЩЕМУ ЗА ОПЕРАТОРОМ ON. ЭТОТ ОПЕРАТОР УПОТРЕБЛЯЕТСЯ В ТОМ СЛУЧАЕ, ЕСЛИ ЕСТЬ РЯД ЗАДАЧ, КОТОРЫЕ ВЫБИРАЮТСЯ В ЗАВИСИМОСТИ ОТ ТОГО, КАКОЕ ЗНАЧЕНИЕ ПРИНИМАЕТ ВЫРАЖЕНИЕ. ЕСЛИ ЗАДАЧИ КОРОТКИЕ И СВЯЗАНЫ С ЗНАЧЕНИЕМ ВЫРАЖЕНИЯ, ТО УПОТРЕБЛЯЕТСЯ ON GOTO. ЕСЛИ ЖЕ ЭТИ ЗАДАЧИ БОЛЬШЕ И, ВОЗМОЖНО, СВЯЗЯНЫ С ДРУГИМ ОПЕРАТОРОМ ON ИЛИ К НИМ ОБРАЩАЮТСЯ С ДРУГИХ МЕСТ ПРОГРАММЫ, ТО УПОТРЕБЛЯЕТСЯ ОПЕРАТОР ON GOSUB, И КАЖДУЮ ЗАДАЧУ НУЖНО ОФОРМИТЬ В ВИДЕ ПОДПРОГРАММЫ. ОТРИЦАТЕЛЬНОЕ ЗНАЧЕНИЕ ВЫРАЖЕНИЯ ПРИВОДИТ К ОШИБКЕ 5. ПРИМЕР: 10 A$=INKEY$ 20 IF A$="" THEN 10 30 ON ASC(A$)-64% GOSUB 100,200,300 CTP. 35 207537 1.00100-01 35 40 GOTO 10 5.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 5.1.10. ОПЕРАТОР END ЗАКАНЧИВАЕТ ВЫПОЛНЕНИЕ ПРОГРАММЫ И ЗАКРЫВАЕТ ФАЙЛЫ. ФОРМАТ: END ОПЕРАТОР ПРЕКРАЩАЕТ ВЫПОЛНЕНИЕ ПРОГРАММЫ И ОСУЩЕСТВЛЯЕТ ВОЗВРАТ В НЕПОСРЕДСТВЕННЫЙ РЕЖИМ. END МОЖЕТ НАХОДИТСЯ В ЛЮБОМ МЕСТЕ ПРОГРАММЫ. ОПЕРАТОР УДОБЕН ДЛЯ ОТДЕЛЕНИЯ ГЛАВНОЙ ПРОГРАММЫ ОТ ПОДПРОГРАММ ВО ИЗБЕЖАНИЕ ПЕРЕДАЧИ УПРАВЛЕНИЯ ПОДПРОГРАММЕ НЕ ЧЕРЕЗ ОПЕРАТОР GOSUB. CTP. 36 207537 1.00100-01 35 ПРИМЕР: 10 GOSUB 30 20 END 30 PRINT A$ 40 RETURN 5.1.11. ОПЕРАТОР CALL ВЫЗЫВАЕТ ПРОГРАММУ В КАССЕТЕ ПЗУ. ФОРМАТ: CALL[<ПАРАМЕТР>] _ <ПАРАМЕТР>::= ИМЯ ПРОГРАММЫ И ПАРАМЕТРЫ ДЛЯ НЕЕ. ВМЕСТО СЛОВА CALL МОЖНО ИСПОЛЬЗОВАТЬ ЗНАК ПОДЧЕРКИВАНИЯ "_". ОПЕРАТОР ПОЗВОЛЯЕТ ОБРАТИТЬСЯ К ПРОГРАММАМ, НАХОДЯЩИМСЯ В СМЕННОЙ КАССЕТЕ ПЗУ. ТЕКСТ, НАХОДЯЩИЙСЯ ЗА СЛОВОМ CALL, БЕЙСИК-СИСТЕМА ПЕРЕДАЕТ ВЫЗЫВАЕМОЙ ПРОГРАММЕ. ЭТО МОЖЕТ БЫТЬ ИМЯ ПРОГРАММЫ, А ТАКЖЕ ПАРАМЕТРЫ ДЛЯ НЕЕ. ОПЕРАТОР CALL ПОЗВОЛЯЕТ ИСПОЛЬЗОВАТЬ РАСШИРЕНИЯ БЕЙСИК-СИСТЕМЫ, УПРАВЛЯТЬ НЕСТАНДАРТНЫМИ УСТРОЙСТВАМИ, ЗАПУСКАТЬ ИГРОВЫЕ ПРОГРАММЫ. ПРИМЕР: CALL GAME _RADIO(ON) 5.1.12. ОПЕРАТОР REM ОБОЗНАЧАЕТ КОМЕНТАРИИ В ТЕКСТЕ ПРОГРАММЫ. ФОРМАТ: REM [<ТЕКСТ>] ' <ТЕКСТ> - ЛЮБАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ СИМВОЛОВ. ОПЕРАТОР СЛУЖИТ ИСКЛЮЧИТЕЛЬНО ТОЛЬКО ДЛЯ ВКЛЮЧЕНИЯ КОММЕНТАРИЯ В ТЕКСТ ПРОГРАММЫ С ЦЕЛЬЮ УДОБСТВА ЧТЕНИЯ АЛГОРИТМА, ДЛЯ ИДЕНТИФИКАЦИИ И ОПРЕДЕЛЕНИЯ ПОРЯДКА РАБОТЫ ПРОГРАММ. ВЕСЬ ТЕКСТ ЗА СЛОВОМ REM ИГНОРИРУЕТСЯ. ДРУГОЙ СПОСОБ ОПРЕДЕЛЕНИЯ ЗАМЕЧАНИЙ В ТЕКСТЕ ПРОГРАММЫ - ЭТО АПОСТРОФ ("'"). В ОТЛИЧИИ ОТ REM, ДЛЯ КОТОРОГО НЕОБХОДИМА ОТДЕЛЬНАЯ СТРОКА ПРОГРАММЫ, АПОСТРОФ МОЖЕТ ИСПОЛЬЗОВАТЬСЯ ПОСЛЕ ЛЮБОГО ДРУГОГО ОПЕРАТОРА, АВТОМАТИЧЕСКИ ЗАКАНЧИВАЯ ЕГО. ВВИДУ ТОГО, ЧТО КОММЕНТАРИЙ ЗАНИМАЕТ ДОПОЛНИТЕЛЬНОЕ МЕСТО В ОПЕРАТИВНОЙ ПАМЯТИ, УМЕНЬШАЕТСЯ МЕСТО ДЛЯ ХРАНЕНИЯ ДРУГИХ CTP. 37 207537 1.00100-01 35 ОПЕРАТОРОВ. ПРИМЕР: 10 REM ПОДПРОГРАММА ВВОДА 200 X=1 ' ПЕРЕМЕННАЯ ЦИКЛА 5.2. ОПЕРАТОРЫ ОПИСАНИЯ, РЕЗЕРВИРОВАНИЯ ПАМЯТИ И УСТАНОВКИ НАЧАЛЬНЫХ ЗНАЧЕНИЙ ОПЕРАТОРЫ РЕЗЕРВИРОВАНИЯ ПАМЯТИ СЛУЖАТ РЕЗЕРВИРОВАНИЮ ОПЕРАТИВНОЙ ПАМЯТИ ДЛЯ МАССИВОВ И ПОСТОЯННЫХ ВЕЛИЧИН. ПАМЯТЬ ДЛЯ ПЕРЕМЕННЫХ РЕЗЕРВИРУЕТСЯ В ЛОКАЛЬНОЙ ИЛИ ОБЩЕЙ ОБЛАСТИ ДАННЫХ. ПАМЯТЬ ДЛЯ ПОСТОЯННЫХ ВЕЛИЧИН РЕЗЕРВИРУЕТСЯ В ОБЛАСТИ ГЕНЕРИРУЕМОЙ ПРОГРАММЫ ПРИ КОМПИЛЯЦИИ. ДЛЯ РЕЗЕРВИРОВАНИЯ ПАМЯТИ ПЕРЕМЕННЫМ И МАССИВАМ ИСПОЛЬЗУЕТСЯ ОПЕРАТОР DIM ,ДЛЯ РЕЗЕРВИРОВАНИЯ ПАМЯТИ ПОСТОЯННЫМ ВЕЛИЧИНАМ - DATA. ДЛЯ ПРИСВОЕНИЯ ПЕРЕМЕННЫМ ЗНАЧЕНИЙ ПОСТОЯННЫХ ВЕЛИЧИН ИСПОЛЬЗУЮТСЯ ОПЕРАТОРЫ READ И RESTORE. 5.2.1. ОПЕРАТОР DIM РЕЗЕРВИРУЕТ ПАМЯТЬ ДЛЯ ПЕРЕМЕННЫХ И МАССИВОВ, ПРИДАВАЯ ИМ НУЛЕВЫЕ ЗНАЧЕНИЯ. ФОРМАТ: DIM <АРГУМЕНТ>[,<АРГУМЕНТ>...] <АРГУМЕНТ>::= ДОПУСТИМОЕ ИМЯ ПЕРЕМЕННОЙ, ЗА КОТОРЫМ МОЖЕТ СЛЕДОВАТЬ ЗАКЛЮЧЕННЫЙ В СКОБКИ СПИСОК МАКСИМАЛЬНЫХ ЗНАЧЕНИЙ ИНДЕКСОВ МАССИВА. ЭТОТ ОПЕРАТОР ОБЫЧНО ИСПОЛЬЗУЕТСЯ ДЛЯ ОПРЕДЕЛЕНИЯ МАССИВОВ, НО МОЖЕТ ОПРЕДЕЛЯТЬ И ОТДЕЛЬНЫЕ ПЕРЕМЕННЫЕ. КАЖДЫЙ МАССИВ ИМЕЕТ ЗАДАННОЕ В СПИСКЕ ЧИСЛО ИНДЕКСОВ. МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ИНДЕКСА УКАЗЫВАЕТСЯ ЦЕЛЫМ ВЫРАЖЕНИЕМ, ПРИНИМАЮЩИМ ЗНАЧЕНИЯ ИЗ ИНТЕРВАЛА [0,255]. ВОЗМОЖНО НЕЯВНОЕ ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ И МАССИВОВ. ТАКОЕ ОПРЕДЕЛЕНИЕ ПРОИСХОДИТ КАЖДЫЙ РАЗ ПРИ ПОЯВЛЕНИИ ИМЕНИ НЕОПРЕДЕЛЕННОИ ПЕРЕМЕННОЙ. ПРОСТЫЕ ПЕРЕМЕННЫЕ ОБЫЧНО ОПРЕДЕЛЯЮТСЯ ИМЕННО ТАКИМ СПОСОБОМ. ПРИ ПОЯВЛЕНИИ ИМЕНИ ИНДЕКСИРОВАННОЙ ПЕРЕМЕННОЙ ОПРЕДЕЛЯЕТСЯ ОДНОМЕРНЫЙ МАССИВ С МАКСИМАЛЬНЫМ ЗНАЧЕНИЕМ ИНДЕКСА 10. НЕЯВНОЕ ОПРЕДЕЛЕНИЕ МАССИВА НЕВОЗМОЖНО В НЕПОСРЕДСТВЕННОМ РЕЖИМЕ И ВЫЗЫВАЕТ ОШИБКУ 12. ПОПЫТКА ПОВТОРНОГО ОПРЕДЕЛЕНИЯ УЖЕ ОБ'ЯВЛЕННОГО ИЛИ ОПРЕДЕЛЕННОГО ПО УМОЛЧАНИЮ МАССИВА ПРИВОДИТ К ОШИБКЕ 10. ЕСЛИ НЕ ХВАТАЕТ ОПЕРАТИВНОЙ ПАМЯТИ ДЛЯ ОПРЕДЕЛЕНИЯ МАССИВА, ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 7. ПРИМЕР: 10 DIM X,I%,Z(5,20,3),A$(30) CTP. 38 207537 1.00100-01 35 5.2.2. ОПЕРАТОР KEY ЭТОТ ОПЕРАТОР ИЗМЕНЯЕТ ЗНАЧЕНИЯ ФУНКЦИОНАЛЬНЫХ КЛАВИШ. ФОРМАТ: KEY <АРГУМЕНТ1>,<АРГУМЕНТ2> <АРГУМЕНТ1>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ОПРЕДЕЛЯЮЩЕЕ НОМЕР ФУНКЦИОНАЛЬНОЙ КЛАВИШИ, ЧИСЛО ИЗ ИН- ТЕРВАЛА [1,10]; <АРГУМЕНТ2>::= СИМВОЛЬНОЕ ВЫРАЖЕНИЕ, ОПРЕДЕЛЯЮЩЕЕ ЗНАЧЕНИЕ КЛЮЧА (ИСПОЛЬЗУЮТСЯ ТОЛЬКО ПЕРВЫЕ 16 СИМВОЛОВ). ОПЕРАТОР ИСПОЛЬЗУЕТСЯ ДЛЯ ИЗМЕНЕНИЯ ЗНАЧЕНИЙ ФУНКЦИОНАЛЬНЫХ КЛЮЧЕЙ, УСТАНОВЛЕННЫХ ПО УМОЛЧАНИЮ. ПЕРВЫЕ 16 СИМВОЛОВ АРГУМЕНТА 2 ПРИСВАИВАЮТСЯ КЛЮЧУ, УКАЗАННОМУ АРГУМЕНТОМ 1. В СЛУЖЕБНОЙ СТРОКЕ ЭКРАНА ВЫСВЕЧИВАЮТСЯ ПЕРВЫЕ СИМВОЛЫ ЗНАЧЕНИЙ ФУНКЦИОНАЛЬНЫХ КЛАВИШ. ОПЕРАТОР KEY ПРОИЗВОДИТ СООТВЕТСТВУЮЩИЕ ИЗМЕНЕНИЯ СЛУЖЕБНОЙ СТРОКИ. ДЛЯ ВВОДА СИМВОЛА <ПС> ИЛИ КАВЫЧЕК МОЖНО ВОСПОЛЬЗОВАТЬСЯ ФУНКЦИЕЙ CHR$. ЕСЛИ ЗНАЧЕНИЕ ПЕРВОГО АРГУМЕНТА ВЫХОДИТ ЗА ПРЕДЕЛЫ ДОПУСТИМОГО ИНТЕРВАЛА, ПОЛУЧАЕТСЯ ОШИБКА 5. ПО УМОЛЧАНИЮ ФУНКЦИОНАЛЬНЫЕ КЛАВИШИ ИМЕЮТ СЛЕДУЮЩИЕ ЗНАЧЕНИЯ: COLOR AUTO GOTO LIST RUN <ПС> COLOR 1,0 <ПС> CLOAD " CONT <ПС> . <ПС> <СБР> RUN <ПС> (УПРАВЛЯЮЩИЙ СИМВОЛ <СБР> ИМЕЕТ ВОСМЕРИЧНЫЙ КОД 14 И ОЗНАЧАЕТ ОЧИСТКУ ЭКРАНА). ПРИМЕР: KEY 1,"LINE " KEY 2,"SAVE "+CHR$(34) KEY 3,"PRINT PI"+CHR$(10) CTP. 39 207537 1.00100-01 35 5.2.3. ОПЕРАТОР CLEAR ОЧИЩАЕТ ЗНАЧЕНИЯ ПЕРЕМЕННЫХ, РЕЗЕРВИРУЕТ СИМВОЛЬНУЮ И НЕ БЕЙСИКОВУЮ ПАМЯТЬ. ФОРМАТ: CLEAR [<АРГУМЕНТ1>[,<АРГУМЕНТ2>]] <АРГУМЕНТ1>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, УКАЗЫВАЮЩЕЕ ЧИСЛО БАЙТОВ ОБЛАСТИ ПАМЯТИ, РЕЗЕРВИРУЕМОЙ ДЛЯ СИМВОЛЬНЫХ ПЕРЕМЕННЫХ; <АРГУМЕНТ2>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, УКАЗЫВАЮЩЕЕ АДРЕС ВЕРХНЕЙ ГРАНИЦЫ ОБЛАСТИ ОПЕРАТИВНОЙ ПАМЯТИ, ИСПОЛЬЗУЕМОЙ БЕЙСИК-СИСТЕМОЙ, ДОЛЖЕН НЕ ПРЕВЫШАТЬ ВОСМЕРИЧНОГО 70000. ПРИ ЛЮБОЙ ФОРМЕ ОПЕРАТОРА ОЧИЩАЮТСЯ МАССИВЫ И ПЕРЕМЕННЫЕ, ОПРЕДЕЛЕННЫЕ ФУНКЦИИ, СИМВОЛЬНЫЕ СТРОКИ, А ТАКЖЕ АППАРАТНЫЙ СТЕК, ЗАКРЫВАЮТСЯ ВСЕ ФАЙЛЫ, А ЛЮБАЯ РАСПЕЧАТКА ЗАКАНЧИВАЕТСЯ СИМВОЛОМ <ПС>. ОПРЕДЕЛЕНИЯ ФУНКЦИЙ USR ОСТАЮТСЯ НЕИЗМЕННЫМИ. ПЕРВЫЙ АРГУМЕНТ ИСПОЛЬЗУЕТСЯ ДЛЯ УСТАНОВЛЕНИЯ РАЗМЕРА ОБЛАСТИ ПАМЯТИ ДЛЯ ХРАНЕНИЯ ТЕКСТА СТРОК, ПО УМОЛЧАНИЮ ОН РАВЕН 200 БАЙТОВ. ЕСЛИ ЗАДАН АРГУМЕНТ 1, ТО ДЛЯ СИМВОЛЬНЫХ СТРОК РЕЗЕРВИРУЕТСЯ УКАЗАННОЕ ЧИСЛО БАЙТОВ. ВТОРОЙ АРГУМЕНТ ИСПОЛЬЗУЕТСЯ ДЛЯ УКАЗАНИЯ НАЧАЛА ОБЛАСТИ, КОТОРАЯ НЕ МОЖЕТ ИСПОЛЬЗОВАТЬСЯ ДЛЯ ПРОГРАММ И ДАННЫХ БЕЙСИКА. ТАКИМ ОБРАЗОМ ОПРЕДЕЛЯЕТСЯ ОБЛАСТЬ ДЛЯ НЕФОРМАТИРОВАННЫХ ДАННЫХ, ФУНКЦИЙ USR ИЛИ ДРУГОГО ИСПОЛЬЗОВАНИЯ. ПОСЛЕ ВЫПОЛНЕНИЯ CLEAR С ДВУМЯ ПАРАМЕТРАМИ В КОСВЕННОМ РЕЖИМЕ ОБ'ЕКТНЫЙ КОД ТЕРЯЕТСЯ, И БЕЙСИК-СИСТЕМА ПЕРЕХОДИТ В НЕПОСРЕДСТВЕННЫЙ РЕЖИМ. МНОГИЕ ОПЕРАЦИИ ДЕЛАЮТ CLEAR АВТОМАТИЧЕСКИ, НАПРИМЕР, RUN, NEW, MERGE, LOAD И ЛЮБОЕ ИЗМЕНЕНИЕ ТЕКСТА ПРОГРАММЫ БЕЙСИКА. ЕСЛИ ПАРАМЕТРЫ В CLEAR НЕ УКАЗАНЫ, ТО СООТВЕТСТВУЮЩИЕ ЗНАЧЕНИЯ ВЕЛИЧИНЫ ОБЛАСТИ СТРОК И HIMEM НЕ ИЗМЕНЯЮТСЯ. СЛИШКОМ БОЛЬШОЕ ЗНАЧЕНИЕ ПЕРВОГО ИЛИ СЛИШКОМ МАЛОЕ ВТОРОГО АРГУМЕНТА ВЫЗЫВАЕТ НЕДОСТАТОК ОПЕРАТИВНОЙ ПАМЯТИ, И ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 7. УКАЗАНИЕ ВТОРОГО АРГУМЕНТА ПРИ ОТСУТСТВИИ ПЕРВОГО ВЫЗЫВАЕТ ОШИБКУ 2. ЕСЛИ АРГУМЕНТ 2 БОЛЬШЕ ВОСМЕРИЧНОГО 70000, ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 5. ПРИМЕР: CLEAR 1000,&O30000 OK (РЕЗЕРВИРУЕТСЯ 1000 БАЙТОВ ДЛЯ СТРОК И ОЗУ СВЫШЕ &O30000 ДЛЯ ПОЛЬЗОВАТЕЛЬСКИХ ЦЕЛЕЙ). CTP. 40 207537 1.00100-01 35 5.2.4. ОПЕРАТОР DATA СОХРАНЯЕТ ЗАДАННЫЕ В ТЕКСТЕ ПРОГРАММЫ КОНСТАНТЫ ДЛЯ ПОСЛЕДУЮЩЕГО ПОЛЬЗОВАНИЯ. ФОРМАТ: DATA <ЭЛЕМЕНТ>[,<ЭЛЕМЕНТ>...] <ЭЛЕМЕНТ>::= ЧИСЛОВАЯ КОНСТАНТА, ТЕКСТОВАЯ КОНСТАНТА В КАВЫЧКАХ ИЛИ БЕЗ КАВЫЧЕК, НО НЕ ВКЛЮЧАЮЩАЯ ЗАПЯТЫХ. ЭТОТ ОПЕРАТОР ПОЗВОЛЯЕТ СОХРАНЯТЬ "НАЧАЛЬНЫЕ" ВЕЛИЧИНЫ В ТЕЛЕ ПРОГРАММЫ. В РЕЖИМЕ НЕПОСРЕДСТВЕННОГО ВЫПОЛНЕНИЯ ОПЕРАТОР DATA ИГНОРИРУЕТСЯ. ВО ВРЕМЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ ОН ТОЖЕ ОПУСКАЕТСЯ, И ТОЛЬКО ОПЕРАТОР READ МОЖЕТ ИСПОЛЬЗОВАТЬ ЕГО. ВО ВРЕМЯ ЧТЕНИЯ ДАННЫЕ ВЫБИРАЮТСЯ НАЧИНАЯ С ОПЕРАТОРА DATA С НАЙМЕНЬШИМ НОМЕРОМ СТРОКИ, А СЛЕДУЮЩИЕ ОПЕРАТОРЫ ВЫБИРАЮТСЯ ПОСЛЕДОВАТЕЛЬНО. КОГДА ВСЕ ДАННЫЕ ИСЧЕРПАНЫ, ДАЛЬНЕЙШЕЕ ЧТЕНИЕ НЕВОЗМОЖНО ДО ПОЯВЛЕНИЯ ОПЕРАТОРА RESTORE. В СПИСКЕ ОПЕРАТОРА DATA ЗАПЯТАЯ ИСПОЛЬЗУЕТСЯ КАК РАЗДЕЛИТЕЛЬ. АПОСТРОФ НЕ ЗАВЕРШАЕТ СПИСКА И НЕ ОЗНАЧАЕТ НАЧАЛА КОМЕНТАРИЯ. РАЗРЕШЕНЫ ЛЮБЫЕ ЧИСЛОВЫЕ КОНСТАНТЫ РАЗРЕШЕНЫ, ВКЮЧАЯ &H, &O, &B, ЭКСПОНЕНТНУЮ ФОРМУ, КОНСТАНТЫ С ЯВНО УКАЗАННЫМ ТИПОМ. ЕСЛИ В ТЕКСТОВОЙ КОНСТАНТЕ НЕТ РАЗДЕЛИТЕЛЯ, ТО КАВЫЧКИ МОГУТ БЫТЬ ОПУЩЕНЫ. 5.2.5. ОПЕРАТОР READ ВВОДИТ ДАННЫЕ ИЗ ОПЕРАТОРА DATA В ПРОГРАММУ. ФОРМАТ: READ <ПЕРЕМЕННАЯ>[,<ПЕРЕМЕННАЯ>...] <ПЕРЕМЕННАЯ> ::= ДОПУСТИМОЕ ИМЯ ПЕРЕМЕННОЙ (ВКЛЮЧАЯ ЭЛЕМЕНТ МАССИВА). ЭТОТ ОПЕРАТОР ЧИТАЕТ СЛЕДУЮЩИЕ ЕЩЕ НЕПРОЧИТАННЫЕ ДАННЫЕ ИЗ ОПЕРАТОРА DATA. ПРОЦЕСС ПОВТОРЯЕТСЯ ДО ТЕХ ПОР, ПОКА ВСЕ ПЕРЕМЕННЫЕ ИЗ СПИСКА ЗАБЕРУТ СВОИ ЗНАЧЕНИЯ. ОПЕРАТОР READ ПЕРЕСМАТРИВАЕТ ВСЕ ЗАПИСИ КАЖДОГО ОПЕРАТОРА DATA, АНАЛИЗИРУЯ ИХ С НАЧАЛА ПРОГРАММЫ ДО КОНЦА. ДЛЯ ЧТЕНИЯ ДАННЫХ НЕСКОЛЬКО РАЗ МОЖНО ВОСПОЛЬЗОВАТЬСЯ ОПЕРАТОРОМ RESTORE. В СЛУЧАЕ ОБНАРУЖЕНИЯ КОНЦА ПЕРАТОРОВ DATA ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 4. ПРИ ПОПЫТКЕ ЧИТАТЬ ТЕКСТОВЫЕ ДАННЫЕ В ЧИСЛОВЫЕ ПЕРЕМЕННЫЕ ПОЛУЧАЕТСЯ ОШИБКА 13. ПРИМЕР: 10 DATA 1,&O22,&H3F 10 FOR I%=0% TO 5% 20 DATA 234E-7 30 READ X(I%) CTP. 41 207537 1.00100-01 35 40 NEXT I% 50 DATA -33%,44.56,TEXT,"A,B" 60 READ A$,B$ 5.2.6. ОПЕРАТОР RESTORE ИЗМЕНЯЕТ ПОРЯДОК ЧТЕНИЯ ДАННЫХ ИЗ ОПЕРАТОРА DATA ОПЕРАТОРОМ READ. ФОРМАТ: RESTORE [<НОМЕР СТРОКИ>] <НОМЕР СТРОКИ>::= НОМЕР СУЩЕСТВУЮЩЕЙ СТРОКИ. ЭТОТ ОПЕРАТОР ИЗМЕНЯЕТ ЗНАЧЕНИЕ УКАЗАТЕЛЯ, ОПРЕДЕЛЯЮЩЕГО, КОТОРЫЙ ИЗ ОПЕРАТОРОВ DATA БУДЕТ ИСПОЛЬЗОВАН СЛЕДУЮЩИМ В ОПЕРАТОРЕ READ. READ ПЕРЕМЕЩАЕТ УКАЗАТЕЛЯ ПОСЛЕДОВАТЕЛЬНО, ПОКА ВСЕ ОПЕРАТОРЫ DATA НЕ БУДУТ ИСПОЛЬЗОВАНЫ. ОПЕРАТОР RESTORE ВОЗВРАЩАЕТ УКАЗАТЕЛЬ В НАЧАЛО ПРОГРАММЫ И ВСЕ ДАННЫЕ ЗАНОВО МОГУТ БЫТЬ ВВЕДЕНЫ. В СЛУЧАЕ ПРИСУТСТВИЯ НОМЕРА СТРОКИ БУДУТ РАССМАТРИВАТЬСЯ ОПЕРАТОРЫ DATA С УКАЗАННЫМ ИЛИ БОЛЬШИМИ НОМЕРАМИ СТРОК. ПОВТОРНО ИСПОЛЬЗОВАТЬ ОПЕРАТОР RESTORE МОЖНО В ЛЮБОМ МЕСТЕ ПРОГРАММЫ. ОН ПОЗВОЛЯЕТ СМОТРЕТЬ НА ОПЕРАТОРЫ DATA КАК НА УСТРОЙСТВО ВВОДА ДАННЫХ С ВОЗМОЖНОСТЬЮ ПОВТОРНОГО ЧТЕНИЯ. ПРИМЕР: 1000 RESTORE 1010 FOR I%=0% TO 10% 1020 READ X(I%) 1030 NEXT I% 1040 RETURN (ПОДПРОГРАММА, ЗАПОЛНЯЮЩАЯ МАССИВ X) 5.2.7. ОПЕРАТОР DEF 5.2.7.1. ОПЕРАТОР DEF USR ОПРЕДЕЛЯЕТ ФУНКЦИИ НА МАШИННОМ ЯЗЫКЕ. ФОРМАТ: DEF USR[<ЦИФРА>]=<ВЫРАЖЕНИЕ> <ЦИФРА>::= ЦЕЛАЯ КОНСТАНТА ИЗ ИНТЕРВАЛА [0,9], УКАЗЫВАЮЩАЯ НОМЕР ФУНКЦИИ, ПО УМОЛЧАНИЮ 0; CTP. 42 207537 1.00100-01 35 <ВЫРАЖЕНИЕ>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ОПРЕДЕЛЯЮЩЕЕ АДРЕС ЗАПУСКА ФУНКЦИИ USR. ОПЕРАТОР ОПРЕДЕЛЯЕТ НАЧАЛЬНЫЙ АДРЕС МАШИННОЙ ПОДПРОГРАММЫ, СОСТАВЛЕННОЙ ПОЛЬЗОВАТЕЛЕМ. ЗНАЧЕНИЕ ВЫРАЖЕНИЯ ПЕРЕВОДИТСЯ В ЦЕЛЫЙ ТИП И СЧИТАЕТСЯ АДРЕСОМ ЗАПУСКА ПРОГРАММЫ. ОТРИЦАТЕЛЬНЫЕ ЗНАЧЕНИЯ ОТ -32768 ДО -1 ОЗНАЧАЮТ АДРЕСА ОТ 32768 ДО 65535 СООТВЕТСТВЕННО. ДЛЯ УКАЗАНИЯ АДРЕСОВ УДОБНО ПОЛЬЗОВАТЬСЯ ВОСМЕРИЧНЫМИ КОНСТАНТАМИ. ОДНОВРЕМЕННО МОГУТ БЫТЬ ОПРЕДЕЛЕНЫ 10 ФУНКЦИЙ USR( ). НОМЕР ОПРЕДЕЛЯЕМОЙ ФУНКЦИИ УКАЗЫВАЕТСЯ ЦИФРОЙ. АДРЕСА ВЫЗОВА ПОДПРОГРАММ ХРАНЯТСЯ В ОБЛАСТИ USRTAB(&O2100), ГДЕ КАЖДОЙ USR( ) ВЫДЕЛЯЕТСЯ ПО ОДНОМУ СЛОВУ. ДЕЙСТВИЕ ОПЕРАТОРА МОЖНО ПРЕДСТАВИТЬ КАК ЗАПОЛНЕНИЕ USRTAB. ДЛЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ НА МАШИННОМ ЯЗЫКЕ НЕОБХОДИМО ВЫПОЛНИТЬ ПОСЛЕДОВАТЕЛЬНОСТЬ ОПЕРАТОРОВ 10 DEFUSR=&ONNNNNN 20 A=USR(A) ОБЫЧНЫЙ СПОСОБ ЗАГРУЗКИ МАШИННОЙ ПРОГРАММЫ В ПАМЯТЬ ЯВЛЯЕТСЯ ИСПОЛЬЗОВАНИЕ КОМАНДЫ BLOAD, КОТОРАЯ ЗАПОМИНАЕТ НАЧАЛЬНЫЙ АДРЕС ЗАГРУЖЕНОЙ ПРОГРАММЫ В ЯЧЕЙКЕ BUFSTA(&O264). ТАКИМ ОБРАЗОМ, ЛОГИЧНА ПОСЛЕДОВАТЕЛЬНОСТЬ BLOAD "PROG" PROG .BIN OK DEF USR5=PEEK(&O264) OK ДЛЯ ВЫДЕЛЕНИЯ ПАМЯТИ ФУНКЦИЯМ USR( ) ИСПОЛЬЗУЕТСЯ ОПЕРАТОР CLEAR. ЭТОТ ОПЕРАТОР СОХРАНЯЕТ ВСЕ ОПРЕДЕЛЕНИЯ DEF USR. 5.2.7.2. ОПЕРАТОР DEF FN ОПРЕДЕЛЯЕТ ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ. LIN ФОРМАТ: DEF FN <ИМЯ>[(<СПИСОК>)]=<ВЫРАЖЕНИЕ> <ИМЯ>::= ЛЮБОЕ ДОПУСТИМОЕ ИМЯ ПЕРЕМЕННОЙ; <СПИСОК>::= ОДИН ИЛИ НЕСКОЛЬКО ИМЕН ФОРМАЛЬНЫХ ПАРАМЕТРОВ (ДОПУСТИМЫХ ИМЕН ПЕРЕМЕННЫХ), РАЗДЕЛЕННЫХ ЗАПЯТЫМИ; <ВЫРАЖЕНИЕ> ::= ЛЮБОЕ ВЫРАЖЕНИЕ ТАКОГО ЖЕ ТИПА, КАК И <ИМЯ>. ПРИ ВЫПОЛНЕНИИ ЭТОГО ОПЕРАТОРА СОЗДАЕТСЯ ПЕРЕМЕННАЯ <ИМЯ>, ОТМЕЧЕННАЯ КАК ИМЯ ФУНКЦИИ. НИКАКИХ ВЫЧИСЛЕНИЙ ОПЕРАТОР НЕ ПРОИЗВОДИТ И МОЖЕТ БЫТЬ В ЛЮБОМ МЕСТЕ ПРОГРАММЫ. ПЕРЕМЕННАЯ <ИМЯ> НЕ ДОСТУПНА ОБЫЧНЫМ ПУТЕМ, И МОЖЕТ БЫТЬ СОЗДАНА НОРМАЛЬНАЯ ПЕРЕМЕННАЯ С ТАКИМ ЖЕ САМЫМ ИМЕНЕМ. В СЛУЧАЕ СОЗДАНИЯ ДРУГОЙ ФУНКЦИИ С ТАКИМ ЖЕ САМЫМ ИМЕНЕМ СТАРОЕ ОПРЕДЕЛЕНИЕ ТЕРЯЕТСЯ. CTP. 43 207537 1.00100-01 35 ФУНКЦИЯ МОЖЕТ ИМЕТЬ ЛЮБОЕ ЧИСЛО ПАРАМЕТРОВ. ОНИ ОПРЕДЕЛЯЮТСЯ КАК СПИСОК ИМЕН ПЕРЕМЕННЫХ ЛЮБОГО ТИПА, РАЗДЕЛЕННЫХ ЗАПЯТЫМИ И ЗАКЛЮЧЕННЫХ В СКОБКИ. ПАРАМЕТРЫ ЯВЛЯЮТСЯ ФОРМАЛЬНЫМИ И РЕАЛЬНО НЕ СУЩЕСТВУЮТ, Т.Е., ЛЮБАЯ ОБЫЧНАЯ ПЕРЕМЕННАЯ МОЖЕТ ИМЕТЬ ТАКОЕ ЖЕ ИМЯ. КАЖДЫЙ АРГУМЕНТ ДОЛЖЕН БЫТЬ ТАКОГО ТИПА, ЧТО ЕМУ МОГЛО БЫ ПРИСВОИТЬСЯ ЗНАЧЕНИЕ ФАКТИЧЕСКОГО АРГУМЕНТА, ЗАДАВАЕМОГО ПРИ ВЫЗОВЕ ФЫНКЦИИ FN. ВЫРАЖЕНИЕ ЗА ЗНАКОМ РАВЕНСТВА ВЫЧИСЛЯЕТСЯ ПРИ ВЫЗОВЕ ФУНКЦИИ, И РЕЗУЛЬТАТ ВОЗВРАЩАЕТСЯ В МЕСТО ВЫЗОВА ФУНКЦИИ . ЕСЛИ В ЭТОМ ВЫРАЖЕНИИ ЕСТЬ ИМЕНА ПЕРЕМЕННЫХ, ОБ'ЯВЛЕННЫХ ФОРМАЛЬНЫМИ АРГУМЕНТАМИ, ТО ИХ ЗНАЧЕНИЯ БЕРУТСЯ СООТВЕТСТВЕННО СПИСКУ ФАКТИЧЕСКИХ АРГУМЕНТОВ В ВЫЗОВЕ ФУНКЦИИ. В ВЫРАЖЕНИИ ТАКЖЕ МОЖНО ИСПОЛЬЗОВАТЬ ЛЮБЫЕ ДРУГИЕ ПЕРЕМЕННЫЕ, ЕСЛИ ИХ ИМЕНА НЕ СОВПАДАЮТ С ИМЕНАМИ ФОРМАЛЬНЫХ АРГУМЕНТОВ. В ВЫРАЖЕНИИ МОГУТ БЫТЬ ЛЮБЫЕ ОБРАЩЕНИЯ К ФУНКЦИЯМ, ТАКЖЕ И НЕРЕКУРСИВНЫЕ ОБРАЩЕНИЯ К ФУНКЦИЯМ FN. ОШИБКИ ПРОВЕРЯЮТСЯ ТОЛЬКО ПРИ ВЫЗОВЕ ФУНКЦИИ. ПРИ ОБНАРУЖЕНИИ ОШИБКИ В СТРОКЕ, ВЫЗЫВАЮЩЕЙ ПОЛЬЗОВАТЕЛЬСКУЮ ФУНКЦИЮ, СЛЕДУЕТ ПРОВЕРИТЬ ОПРЕДЕЛЕНИЕ ЭТОЙ ФУНКЦИИ. ЭТОТ ОПЕРАТОР ДАЕТ ЕДИННСТВЕННУЮ ВОЗМОЖНОСТЬ ИЗМЕНЯТЬ ХОД ПРОГРАММЫ, НЕ УЧИТЫВАЯ НОМЕРА СТРОКИ. DEF FN, В РАЗЛИЧИИ ОТ DATA, ЯВЛЯЕТСЯ ВЫПОЛНЯЕМЫМ ОПЕРАТОРОМ, Т.Е., ФУНКЦИЯ ДОЛЖНА ОПРЕДЕЛЯТЬСЯ РАНЬШЕ ЕЕ ВЫЗОВА. ЭТОТ ОПЕРАТОР - ОДИН ИЗ НЕМНОГИХ, ЗАПРЕЩЕННЫХ В НЕПОСРЕДСТВЕННОМ РЕЖИМЕ. ПРИМЕР: 10 DEF FN QU$(QU,ST)=MID$(QL$(QU),ST) 20 PRINT FN QU$(CO,LN(CO)) 5.3. ОПЕРАТОРЫ ВВОДА/ВЫВОДА ОПЕРАТОРЫ ВВОДА/ВЫВОДА INPUT, PRINT И ДРУГИЕ ПОЗВОЛЯЮТ ОРГАНИЗОВАТЬ ОБМЕН ИНФОРМАЦИЕЙ С ВНЕШНИМИ УСТРОЙСТВАМИ. 5.3.1. ОПЕРАТОР PRINT ВЫВОДИТ ДАННЫЕ НА ЭКРАН, ПЕЧАТАЮЩЕЕ УСТРОЙСТВО ИЛИ ФАЙЛ НА МАГНИТНОЙ ЛЕНТЕ. ФОРМАТ: PRINT ? [#] [<СПИСОК>] LPRINT <СПИСОК>::= ОДНО ИЛИ НЕСКОЛЬКО ВЫРАЖЕНИЙ ЛЮБОГО ТИПА, ФУНКЦИЙ ОПЕРАТОРА PRINT, РАЗДЕЛЕННЫХ ЗАПЯТОЙ ИЛИ ТОЧКОЙ С ЗАПЯТОЙ; L УКАЗЫВАЕТ, ЧТО ВЫВОД ОСУЩЕСТВЛЯЕТСЯ НА ПЕЧАТАЮЩЕЕ УСТРОЙСТВО; CTP. 44 207537 1.00100-01 35 # ОБОЗНАЧАЕТ ВЫВОД В ФАЙЛ НА МАГНИТНОЙ ЛЕНТЕ. СЛОВО PRINT МОЖЕТ БЫТЬ ЗАМЕНЕНО ВОПРОСИТЕЛЬНЫМ ЗНАКОМ "?", ЗА ИСКЛЮЧЕНИЕМ ВАРИАНТА LPRINT. ОПЕРАТОР ПЕРЕСЫЛАЕТ ДАННЫЕ НА УСТРОЙСТВО ВЫВОДА. ОБЫЧНО УСТРОЙСТВОМ ВЫВОДА ЯВЛЯЕТСЯ ЭКРАН, НО ЭТОТ ОПЕРАТОР МОЖЕТ ВЫВЕСТИ ДАННЫЕ И НА ПЕЧАТАЮЩЕЕ УСТРОЙСТВО ИЛИ В ОТКРЫТЫЙ ФАЙЛ НА КАСЕТНОЙ МАГНИТНОЙ ЛЕНТЕ. СПИСОК ВЫВОДИМЫХ ДАННЫХ МОЖЕТ БЫТЬ ПУСТЫМ ИЛИ СОДЕРЖАТЬ НЕСКОЛЬКО ВЫРАЖЕНИЙ ЛЮБОГО ТИПА, ЗНАЧЕНИЯ КОТОРЫХ ПРЕОБРАЗУЕТСЯ В ТЕКСТ И ВЫВОДЯТСЯ НА УКАЗАННОЕ УСТРОЙСТВО. ЗАПЯТАЯ МЕЖДУ ДВУМЯ ЭЛЕМЕНТАМИ СПИСКА ДАННЫХ ОЗНАЧАЕТ, ЧТО ДАННЫЕ БУДУТ ВЫВОДИТСЯ ЗОНАМИ, Т.Е., КАЖДОМУ ЭЛЕМЕНТУ СПИСКА ВЫДЕЛЯЕТСЯ ПО 14 ПОЗИЦИЙ. ОСТАТОК ЗОНЫ ЗА ДАННЫМИ ЗАПОЛНЯЕТСЯ ПРОБЕЛАМИ. ЕСЛИ ДАННЫЕ НЕ ПОМЕЩАЮТСЯ В ЗОНЕ, БЕРЕТСЯ СЛЕДУЮЩАЯ ЗОНА. ЕСЛИ МЕЖДУ ДВУМЯ АРГУМЕНТАМИ СПИСКА ДАННЫХ СТОИТ ТОЧКА С ЗАПЯТОЙ, ТО ЗНАЧЕНИЯ ВЫВОДЯТСЯ НЕПОСРЕДСТВЕННО ДРУГ ЗА ДРУГОМ. ЕСЛИ ЗАПЯТАЯ ИЛИ ТОЧКА С ЗАПЯТОЙ ЯВЛЯЕТСЯ ПОСЛЕДНЕЙ В СПИСКЕ ДАННЫХ, ТО КУРСОР ОСТАЕТСЯ НА ТОЙ ЖЕ ПОЗИЦИИ, НА КОТОРОЙ БЫЛ ПОСЛЕ ВЫВОДА ПОСЛЕДНЕГО ЗНАЧЕНИЯ, В ПРОТИВНОМ СЛУЧАЕ ОСУЩЕСТВЛЯЕТСЯ ПЕРЕВОД СТРОКИ. ОПЕРАТОР LPRINT ВЫВОДИТ ВСЕ ДАННЫЕ НА ПЕЧАТАЮЩЕЕ УСТРОЙСТВО. ПРИМЕР: PRINT 1;-2,3 1 -2 3 OK 5.3.2. ОПЕРАТОР INPUT ВВОДИТ ДАННЫЕ ИЗ С КЛАВИАТУРЫ ИЛИ ФАЙЛА. ФОРМАТ: INPUT [<АРГУМЕНТ>;] [<СПИСОК>] # <АРГУМЕНТ>::= ПОДСКАЗКА В ВИДЕ ТЕКСТОВОЙ КОНСТАНТЫ; <СПИСОК>::= ОДНА ИЛИ НЕСКОЛЬКО ПЕРЕМЕННЫХ ИЛИ ЭЛЕМЕНТОВ МАССИВА, РАЗДЕЛЕННЫХ ЗАПЯТЫМИ; # УКАЗЫВАЕТ НА ВВОД ИЗ ФАЙЛА НА МАГНИТНОЙ ЛЕНТЕ. ЭТОТ ОПЕРАТОР ОРГАНИЗУЕТ ВВОД С КЛАВИАТУРЫ ИЛИ ИЗ ОТКРЫТОГО ОПЕРАТОРОМ OPEN ФАЙЛА НА МАГНИТНОЙ ЛЕНТЕ. ЕСЛИ ЗНАКА "#" НЕТ, ТО ВВОД ОСУЩЕСТВЛЯЕТСЯ С КЛАВИАТУРЫ. ЕСЛИ В СЛУЧАЕ ВВОДА С КЛАВИАТУРЫ УКАЗАН <АРГУМЕНТ>, ТО ОН ВЫВОДИТСЯ НА ЭКРАН КАК ПОДСКАЗКА. ЗА ТЕМ ВЫВОДИТСЯ ВОПРОСИТЕЛЬНЫЙ ЗНАК "?", ВЫСВЕЧИВАЕТСЯ КУРСОР, И БЕЙСИК СИСТЕМА ОЖИДАЕТ ВВОДА ДАННЫХ. В КАЧЕСТВЕ ДАННЫХ МОГУТ БЫТЬ ЛЮБЫЕ КОНСТАНТЫ, ПО ТИПУ И ЧИСЛУ СООТВЕТСТВУЮЩИЕ ЭЛЕМЕНТАМ СПИСКА. В КАЧЕСТВЕ РАЗДЕЛИТЕЛЕЙ ИСПОЛЬЗУЮТСЯ ЗАПЯТЫЕ. В ТЕКСТОВЫХ КОНСТАНТАХ МОГУТ ОТСУТСТВОВАТЬ КАВЫЧКИ, ЕСЛИ ОНИ НЕ СОДЕРЖАТ ЗАПЯТЫХ. ЕСЛИ ВВОД ПРЕКРАЩАЕТСЯ РАНЬШЕ КОНЦА СПИСКА ПЕРЕМЕННЫХ, ТО НА СЛЕДУЮЩЕЙ СТРОКЕ ВЫДАЮТСЯ ЗНАКИ "??", И БЕЙСИК-СИСТЕМА ЖДЕТ ПРОДОЛЖЕНИЯ ВВОДА. ЕСЛИ CTP. 45 207537 1.00100-01 35 ВВОДИТСЯ БОЛЬШЕ ДАННЫХ, ЧЕМ ПЕРЕМЕННЫХ В СПИСКЕ, ТО ПОСЛЕДНИЕ ЗНАЧЕНИЯ ИГНОРИРУЮТСЯ. ЕСЛИ ПРИ ВВОДЕ ЧИСЛОВЫХ ДАННЫХ ВСТРЕЧАЮТСЯ НЕДОПУСТИМЫЕ ЗНАКИ, ТО ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 13 И ОСУЩЕСТВЛЯЕТСЯ ПОВТОРНЫЙ ВВОД. ПРИ ПОПЫТКЕ ОПЕРАТОРОМ INPUT # ПРОЧЕСТЬ МЕТКУ КОНЦА ФАЙЛА ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 55. ПРИМЕР: INPUT "ДАННЫЕ";A,B$,C$ ДАННЫЕ?123,"ABC,EFG" ??P"Q OK PRINT A,B$,C$ 123 ABC,EFG P"Q OK 5.3.3. ОПЕРАТОР OPEN ОПРЕДЕЛЯЕТ ФАЙЛ ДАННЫХ НА МАГНИТНОЙ ЛЕНТЕ. ФОРМАТ: OPEN <СПЕЦИФИКАЦИЯ ФАЙЛА> [FOR INPUT] OUTPUT <СПЕЦИФИКАЦИЯ ФАЙЛА>::= СИМВОЛЬНОЕ ВЫРАЖЕНИЕ, ОПРЕДЕ- ЛЯЮЩЕЕ ИМЯ ФАЙЛА; ОПЕРАТОР НАЧИНАЕТ ПРОЦЕСС ВВОДА/ВЫВОДА ДАННЫХ. БУФЕР ВВОДА/ВЫВОДА СВЯЗЫВАЕТСЯ С ИМЕНЕМ ФАЙЛА. СЛОВА INPUT И OUTPUT УКАЗЫВАЮТ, ЧТО ОТКРЫВАЮТСЯ СООТВЕТСТВЕННО ВХОДНОЙ ИЛИ ВЫХОДНОЙ ФАЙЛ. ДАННЫЕ НА МАГНИТНОЙ ЛЕНТЕ ХРАНЯТСЯ В ФОРМАТЕ ASCII, БЛОКАМИ ПО 256 СИМВОЛОВ. КОНЕЦ ФАЙЛА ОЗНАЧАЕТ СИМВОЛ "СУ/Z" (КОД &O32). АНАЛОГИЧНЫМ ФОРМАТОМ В КОМАНДАХ SAVE, LOAD И MERGE НА МАГНИТНОЙ ЛЕНТЕ ХРАНИТСЯ ТЕКСТ ПРОГРАММЫ. ПРИ ОТКРЫТИИ ВХОДНОГО ФАЙЛА ПЕРВЫЙ БЛОК ДАННЫХ СЧИТЫВАЕТСЯ В БУФЕР. ДАННЫЕ ИЗ ВХОДНОГО ФАЙЛА МОЖНО ЧИТАТЬ ОПЕРАТОРОМ INPUT#, ЗАПИСЫВАТЬ В ВЫХОДНОЙ ФАЙЛ - ОПЕРАТОРОМ PRINT#. ИМЯ ФАЙЛА ДОЛЖНО СОСТОЯТЬ НЕ БОЛЕЕ, ЧЕМ ИЗ 6 СИМВОЛОВ. ТАКЖЕ МОЖНО УКАЗАТЬ ТИП ФАЙЛА. ТИП ФАЙЛА ДОЛЖЕН СОСТОЯТЬ НЕ БОЛЕЕ, ЧЕМ ИЗ 3 СИМВОЛОВ И ОТДЕЛЯТСЯ ОТ ИМЕНИ ФАЙЛА ТОЧКОЙ: DATA.TXT ПО УМОЛЧАНИЮ В ОПЕРАТОРЕ OPEN УСТАНАВЛИВАЕТСЯ ТИП ФАЙЛА DAT. МОЖНО УКАЗАТЬ ЛЮБОЙ ДРУГОЙ ТИП ФАЙЛА, ТОЛЬКО В СЛУЧАЕ ВВОДА ЭТОТ ФАЙЛ ДОЛЖЕН БЫТЬ ЗАПИСАН В ФОРМАТЕ ASCII. В СЛУЧАЕ СЛИШКОМ ДЛИННОГО ИЛИ ПУСТОГО ИМЕНИ ФАЙЛА ВЫВОДИТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 56. ПОПЫТКА ПОВТОРНО ОТКРЫТЬ ФАЙЛ ПРИВОДИТ К ОШИБКЕ 54. ПРИМЕР: 10 OPEN "PROG.ASC" FOR INPUT 20 IF EOF THEN 60 CTP. 46 207537 1.00100-01 35 30 INPUT# A$ 40 PRINT A$ 50 GOTO 20 60 CLOSE (НА ЭКРАН ВЫВОДИТСЯ ТЕКСТ ПРОГРАММЫ PROG). 5.3.4. ОПЕРАТОР CLOSE ЗАКАНЧИВАЕТ ОПЕРАЦИИ ВВОДА/ВЫВОДА И ОСВОБОЖДАЕТ БУФЕР. ФОРМАТ: CLOSE ЕСЛИ ОПЕРАТОРОМ OPEN БЫЛ ОТКРЫТ ВЫХОДНОЙ ФАЙЛ, К ВЫВОДИМЫМ ДАННЫМ ДОБАВЛЯЮТСЯ СИМВОЛ <ПС> И УКАЗАТЕЛЬ КОНЦА ФАЙЛА "СУ/Z" (КОД &O32), ВЫВОДИТСЯ ПОСЛЕДНИЙ БЛОК ФАЙЛА И ОЧИЩАЕТСЯ БУФЕР. В СЛУЧАЕ ВХОДНОГО ФАЙЛА ПРОСТО ОЧИЩАЕТСЯ БУФЕР. НЕКОТОРЫЕ ОПЕРАЦИИ ДЕЛАЮТ CLOSE АВТОМАТИЧЕСКИ. ЭТО END, CLEAR, LOAD, NEW И ЛЮБОЕ ИЗМЕНЕНИЕ ТЕКСТА ПРОГРАММЫ. ПРИМЕР: 10 OPEN "DATA" FOR OUTPUT 20 FOR I%=0% TO 10% 30 PRINT# X(I%) 40 NEXT 50 CLOSE 5.4. ОПЕРАТОРЫ НЕПОСРЕДСТВЕННОГО ДОСТУПА К ПАМЯТИ 5.4.1. ОПЕРАТОР POKE ЗАПИСЫВАЕТ ДАННЫЕ В ЛЮБУЮ ЯЧЕЙКУ ПАМЯТИ ЭВМ. ФОРМАТ: POKE <АДРЕС>,<ВЫРАЖЕНИЕ> <АДРЕС>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ОПРЕДЕЛЯЮЩЕЕ АДРЕС ЯЧЕЙКИ; <ВЫРАЖЕНИЕ>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ОПРЕДЕЛЯЮЩЕЕ ЗАПИСЫ- ВАЕМЫЕ ДАННЫЕ. ЭТОТ ОПЕРАТОР ЗАПИСЫВАЕТ ЗНАЧЕНИЕ ВЫРАЖЕНИЯ В УКАЗАННУЮ ЯЧЕЙКУ (СЛОВО) ПАМЯТИ, ОБА ПАРАМЕТРА ПРИ ЭТОМ ПЕРЕВОДЯТСЯ В ЦЕЛЫЙ ТИП. ЕСЛИ АДРЕС НЕЧЕТНЫЙ, ТО БЕРЕТСЯ СЛОВО, В КОТОРОМ НАХОДИТСЯ CTP. 47 207537 1.00100-01 35 УКАЗАННЫЙ БАЙТ, Т.Е., ЗНАЧЕНИЕ АДРЕСА УМЕНЬШАЕТСЯ НА 1. ЭТОТ ОПЕРАТОР МОЖНО ИСПОЛЬЗОВАТЬ ДЛЯ ИЗМЕНЕНИЯ УКАЗАТЕЛЕЙ И ТАБЛИЦ BASIC СИСТЕМЫ, РАЗМЕЩЕНИЯ В ПАМЯТИ ПРОГРАММ, НАПИСАННЫХ В МАШИННЫХ КОДАХ, ДЛЯ РАБОТЫ С РЕГИСТРАМИ ВНЕШНИХ УСТРОЙСТВ. ПОЛЬЗОВАТЬСЯ ОПЕРАТОРОМ POKE НАДО ОСТОРОЖНО, ТАК КАК ОШИБОЧНЫЕ ДАННЫЕ ИЛИ АДРЕС МОГУТ ВЫЗВАТЬ НЕЖЕЛАТЕЛЬНЫЕ РЕЗУЛЬТАТЫ. ПРИМЕР: 10 A%=PEEK(4%) 20 POKE 6%,2% 30 POKE 4%,6% ... 100 POKE 4%,A% 110 POKE 6%,0% (ВО ВРЕМЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ БЛОКИРУЕТСЯ ДЕЙСТВИЕ КЛАВИШЫ "СТОП"). 5.4.2. ОПЕРАТОР OUT ЗАПИСЫВАЕТ ДАННЫЕ В ОПЕРАТИВНУЮ ПАМЯТЬ ПО МАСКЕ. ФОРМАТ: OUT <АДРЕС>,<МАСКА>,<КОД> <АДРЕС>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, УКАЗЫВАЮЩЕЕ ФИЗИЧЕСКИЙ АДРЕС ЯЧЕЙКИ ЯЧЕЙКИ ПАМЯТИ; <МАСКА>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, УКАЗЫВАЮЩЕЕ УЧАВСТВУ- ЮЩИЕ В ОПЕРАЦИИ БИТЫ; <КОД>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, УКАЗЫВАЮЩЕЕ, СТИРАТЬСЯ ИЛИ ВСТАВЛЯТЬСЯ ДОЛЖНЫ ВЫБРАННЫЕ БИТЫ; НУЛЕВОЕ ЗНАЧЕНИЕ УКАЗЫВАЕТ НА СТИРАНИЕ, НЕНУЛЕВОЕ - НА ВСТАВКУ. ОПЕРАТОР ПОЗВОЛЯЕТ ЗАПИСЫВАТЬ ИЛИ СТИРАТЬ ОТДЕЛЬНЫЕ БИТЫ НЕПОСРЕДСТВЕННО В ЯЧЕЙКАХ ОПЕРАТИВНОЙ ПАМЯТИ. БИТЫ ЯЧЕЙКИ, СООТВЕТСТВУЮЩИЕ НУЛЕВЫМ БИТАМ МАСКИ, ОСТАЮТСЯ НЕИЗМЕННЫМИ, ОСТАЛЬНЫЕ БИТЫ СТИРАЮТСЯ (ЕСЛИ ЗНАЧЕНИЕ КОДА РАВНО НУЛЮ), ИЛИ ВКЛЮЧАЮТСЯ (В ПРОТИВНОМ СЛУЧАЕ). ПРИМЕР: 10 POKE A%,&O177777 20 POKE B%,0% 30 OUT A%,&O111111,0% 40 OUT B%,&O66666,1% 50 PRINT OCT$(PEEK(A%)),OCT$(PEEK(B%)) RUN 66666 66666 OK CTP. 48 207537 1.00100-01 35 5.5. ОПЕРАТОРЫ УПРАВЛЕНИЯ ЭКРАНОМ ТЕЛЕВИЗОРА 5.5.1. ОПЕРАТОР CLS ОЧИЩАЕТ ЭКРАН. ФОРМАТ: CLS ОПЕРАТОР CLS ОКРАШИВАЕТ ВЕСЬ ЭКРАН В ТЕКУЩИЙ ЦВЕТ ФОНА. ИСПОЛЬЗУЯ ЕГО, МОЖНО НАИБОЛЕЕ БЫСТРЫМ ПУТЕМ ПОЛУЧИТЬ СПЛОШНОЙ ЭКРАН ЛЮБОГО ЦВЕТА. ПРИМЕР: 100 INPUT "ПАРОЛЬ",A$ 110 IF PAROL$=A$ THEN 200 120 CLS 130 PRINT AT(10,10);"КУ-КУ!" 140 CLEAR 5.5.2. ОПЕРАТОР COLOR УСТАНАВЛИВАЕТ ЦВЕТ ЭКРАНА. ФОРМАТ: COLOR [<АРГУМЕНТ1>] [,<АРГУМЕНТ2>] <АРГУМЕНТ1>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, УКАЗЫВАЮЩЕЕ НОМЕР ЦВЕТА ПЕРЕДНЕГО ПЛАНА, ЧИСЛО В ПРЕДЕЛАХ [0,4]; <АРГУМЕНТ2>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, УКАЗЫВАЮЩЕЕ НОМЕР ЦВЕТА ФОНА, ЧИСЛО В ПРЕДЕЛАХ [0,4]. ОПЕРАТОР УСТАНАВЛИВАЕТ ТЕКУЩИЕ ЦВЕТА ПЕРЕДНЕГО ПЛАНА И ФОНА ЭКРАНА. ПРИ ОТСУТСТВИИ ПАРАМЕТРА СООТВЕТСТВУЮЩИЙ ЦВЕТ НЕ МЕНЯЕТСЯ. ИМЕЮТСЯ СЛЕДУЮЩИЕ НОМЕРА ЦВЕТОВ: 0 -ПРОЗРАЧНЫЙ (ЦВЕТ ФОНА); 1 -КРАСНЫЙ; 2 -ЗЕЛЕНЫЙ; 3 -СИНИЙ; 4 -ЧЕРНЫЙ. НОМЕР 0 ДЛЯ ФОНА ОЗНАЧАЕТ ЧЕРНЫЙ ЦВЕТ. ОПЕРАТОР COLOR ИЗМЕНЯЕТ ЦВЕТ ВЫВОДИМОГО ТЕКСТА, ВСЕ ОПЕРАТОРЫ ГРАФИКИ ТАКЖЕ ПО УМОЛЧАНИЮ ИСПОЛЬЗУЮТ ЦВЕТ, CTP. 49 207537 1.00100-01 35 УСТАНОВЛЕННЫЙ ЭТИМ ОПЕРАТОРОМ. ЕСЛИ ПЕРЕДНИЙ И ЗАДНИЙ ПЛАНЫ СЛУЧАЙНО ОКАЗАЛИСЬ ТОГО ЖЕ ЦВЕТА, ТО СОЗДАЕТСЯ ВПЕЧАТЛЕНИЕ, ЧТО ЭКРАН ПУСТОЙ, А КОМПЬЮТЕР НЕ РЕАГИРУЕТ НА КЛАВИАТУРУ. ДЛЯ ПРИВЕДЕНИЯ МИКРО-ЭВМ В ГОТОВНОСТЬ ПОСЛЕ ОСТАНОВКИ ПРОГРАММЫ КЛАВИШЕЙ "СТОП" НЕОБХОДИМО НАЖАТЬ КЛЮЧ 6, ВОССТАНАВЛИВАЮЩИЙ СТАНДАРТНЫЕ ЦВЕТА. ПРИ ОТСУТСТВИИ ОБОИХ ПАРАМЕТРОВ ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 24. В СЛУЧАЕ НАРУШЕНИЯ ДОПУСТИМЫХ ГРАНИЦ ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 5. ПРИМЕР: 100 COLOR 2,3 110 DRAW A$ 120 COLOR 1 130 PSET @(20,0) 140 DRAW A$ 5.5.3. ОПЕРАТОР LOCATE ПЕРЕДВИГАЕТ КУРСОР НА ЭКРАНЕ, ВЫСВЕЧИВАЯ И ПОГАШАЯ ЕГО. ФОРМАТ: LOCATE [<АРГ1>][,<АРГ2>][,<АРГ3>] <АРГ1>::= ПОЗИЦИЯ X (СТОЛБЕЦ), НА КОТОРОМ ДОЛЖЕН БЫТЬ РАСПОЛОЖЕН КУРСОР, ЦЕЛОЕ ВЫРАЖЕНИЕ С ЗНА- ЧЕНИЕМ ИЗ ИНТЕРВАЛА [0,255]; <АРГ2>::= ПОЗИЦИЯ Y (СТРОКА), НА КОТОРОЙ ДОЛЖЕН БЫТЬ РАСПОЛОЖЕН КУРСОР, ЦЕЛОЕЕ ВЫРАЖЕНИЕ С ЗНАЧЕ- НИЕМ ИЗ ИНТЕРВАЛА [0,255]; <АРГ3>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, УКАЗЫВАЮЩЕЕ, ГАСИТЬСЯ (НУЛЕВОЕ ЗНАЧЕНИЕ) ИЛИ ВЫСВЕЧИВАТЬСЯ (НЕНУЛЕВОЕ ЗНАЧЕНИЕ) ДОЛЖЕН КУРСОР; ОПЕРАТОР LOCATE КОТРОЛИРУЕТ МЕСТОПОЛОЖЕНИЕ КУРСОРА НА ЭКРАНЕ. СТРОКИ ИМЕЮТ НОМЕРА ОТ 0 (ВЕРХНЯЯ) ДО 23 (НИЖНЯЯ). СТОЛБЦЫ НУМЕРИРУЮТСЯ ОТ 0 ДО 31 С ЛЕВА НА ПРАВО. КУРСОР ПЕРЕДВИГАЕТСЯ НА ПОЗИЦИЮ, УКАЗАННУЮ В ОПЕРАТОРЕ LOCATE. ЕСЛИ ОПУЩЕН ЛЮБОЙ ИЗ ПЕРВЫХ ДВУХ ПАРАМЕТРОВ, ТО СОХРАНЯЕТСЯ ПРЕДЫДУЩЕЕ ЕГО ЗНАЧЕНИЕ. ЕСЛИ ПРИСУТСТВУЕТ АРГУМЕНТ 3 И ОН НЕ РАВЕН 0, ТО ОПЕРАТОР ВЫСВЕЧИВАЕТ КУРСОР, КОТОРЫЙ ОБЫЧНО ГАСИТСЯ ВО ВРЕМЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ. КУРСОР ВЫСВЕЧИВАЕТСЯ ТАКЖЕ ОПЕРАТОРОМ INPUT. ДЛЯ ВВОДА ДАННЫХ С ПОГАШЕННЫМ КУРСОРОМ НЕОБХОДИМО ИСПОЛЬЗОВАТЬ ФУНКЦИЮ INKEY$. НА ПОЛОЖЕНИЕ ГРАФИЧЕСКОГО КУРСОРА ОПЕРАТОР LOCATE НЕ ВЛИЯЕТ. ФУНКЦИИ CSRLIN И POS ПОЗВОЛЯЮТ УЗНАТЬ ПОЛОЖЕНИЕ КУРСОРА, УСТАНОВЛЕННОЕ ЭТИМ ОПЕРАТОРОМ. ЕСЛИ НОМЕР СТОЛБЦА ИЛИ СТРОКИ БОЛЬШЕ ЧИСЛА ПРИСУТСТВУЮЩИХ НА ЭКРАНЕ СТОЛБЦОВ ИЛИ СТРОК, НО НЕ БОЛЬШЕ 255, ТО КУРСОР БУДЕТ ПЕРЕНЕСЕН ЧЕРЕЗ МАКСИМАЛЬНОЕ ЧИСЛО ПОЗИЦИЙ В ЭТОМ НАПРАВЛЕНИИ. ОТРИЦАТЕЛЬНЫЕ ИЛИ БОЛЬШИЕ, ЧЕМ 255 ЗНАЧЕНИЯ ПЕРВЫХ ДВУХ CTP. 50 207537 1.00100-01 35 ПАРАМЕТРОВ ПРИВОДЯТ К ОШИБКЕ 5. ПРИМЕР: 100 LOCATE 0,22 110 INPUT "ЧИСЛО";X 120 LOCATE 0,0,0 130 PRINT X 5.6. ОПЕРАТОРЫ И ФУНКЦИИ ГРАФИКИ 5.6.1. ОПЕРАТОР PSET ИСПОЛЬЗУЕТСЯ ДЛЯ ОКРАШИВАНИЯ ТОЧКИ НА ЭКРАНЕ В ЗАДАННЫЙ ЦВЕТ. ФОРМАТ: PSET [ @ ](<АРГ1>,<АРГ2>)[,<АРГ3>] STEP <АРГ1>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КООРДИНАТУ X ТОЧКИ; <АРГ2>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КООРДИНАТУ Y ТОЧКИ; <АРГ3>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ ЦВЕТ ТОЧКИ; ЧИСЛО ИЗ ИНТЕРВАЛА [0,4]; STEP (@) - КООРДИНАТЫ УКАЗАННОЙ ТОЧКИ ПОДСЧИТЫВАЮТСЯ ОТНОСИТЕЛЬНО ПОСЛЕДНЕЙ ТОЧКИ, ОБРАБОТАН- НОЙ ОПЕРАТОРАМИ ГРАФИКИ. ЕСЛИ ЗАДАННАЯ ТОЧКА НАХОДИТСЯ ЗА ПРЕДЕЛАМИ ЭКРАНА (КООРДИНАТА X ИЗ ИНТЕРВАЛА [0,255], Y - [0,240]), ТО КОМАНДА НИКАКИХ ДЕЙСТВИЙ НЕ ПРОИЗВОДИТ. В ПРОТИВНОМ СЛУЧАЕ ОНА ОКРАШИВАЕТСЯ В ЦВЕТ, ОПРЕДЕЛЕННЫЙ АРГУМЕНТОМ 3, ИЛИ, ЕСЛИ ОН ОТСУТСТВУЕТ, В ТЕКУЩИЙ ЦВЕТ, ОПРЕДЕЛЕННЫЙ ОПЕРАТОРОМ COLOR. ЕСЛИ НОМЕР ЦВЕТА ВЫХОДИТ ЗА ДОПУСТИМЫЕ ПРЕДЕЛЫ, ТО ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 5. ПРИМЕР: 10 FOR Y=1 TO 120 20 PSET(SQR(Y),Y) 30 NEXT CTP. 51 207537 1.00100-01 35 5.6.2. ОПЕРАТОР PRESET ОПЕРАТОР ИСПОЛЬЗУЕТСЯ ДЛЯ ОКРАШИВАНИЯ ТОЧКИ НА ЭКРАНЕ В ЦВЕТ ФОНА. ФОРМАТ: PRESET [ @ ](<АРГ1>,<АРГ2>)[,<АРГ3>] STEP <АРГ1>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КООРДИНАТУ X ТОЧКИ; <АРГ2>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КООРДИНАТУ Y ТОЧКИ; <АРГ3>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ ЦВЕТ ТОЧКИ; ЧИСЛО ИЗ ИНТЕРВАЛА [0,4]; STEP (@) - КООРДИНАТЫ УКАЗАННОЙ ТОЧКИ ПОДСЧИТЫВАЮТСЯ ОТНОСИТЕЛЬНО ПОСЛЕДНЕЙ ТОЧКИ, ОБРАБОТАННОЙ ОПЕРАТОРАМИ ГРАФИКИ ЭТОТ ОПЕРАТОР ОКРАШИВАЕТ ЗАДАННУЮ ТОЧКУ ЭКРАНА В ЦВЕТ ФОНА. ЕСЛИ ЗАДАН АРГУМЕНТ 3, ТО ОПЕРАТОР ПРЕВРАЩАЕТСЯ В ОПЕРАТОР PSET - ТОЧКА ОКРАШИВАЕТСЯ В УКАЗАННЫЙ ЦВЕТ. КООРДИНАТЫ ТОЧКИ X И Y ДОЛЖНЫ НАХОДИТЬСЯ В ИНТЕРВАЛАХ [0,255] И [0,240] СООТВЕТСТВЕННО, ИНАЧЕ НИКАКИХ ДЕЙСТВИЙ НЕ ПРОИЗОИДЕТ. ЕСЛИ НОМЕР ЦВЕТА ВЫХОДИТ ЗА ДОПУСТИМЫЕ ПРЕДЕЛЫ, ТО ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 5. ПРИМЕР: 100 C%=POINT(X%,Y%) 110 PRESET(X%,Y%) ... 200 IF POINT(X%,Y%)<>C% THEN PSET(X%,Y%),C% 5.6.3. ФУНКЦИЯ POINT ФУНКЦИЯ ВЫДАЕТ НОМЕР ЦВЕТА УКАЗАННОЙ ТОЧКИ ЭКРАНА. ФОРМАТ: X=POINT(<АРГУМЕНТ1>,<АРГУМЕНТ2>) <АРГУМЕНТ1>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КООРДИНАТУ X; <АРГУМЕНТ2>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КООРДИНАТУ Y; ФУНКЦИЯ POINT ВЫДАЕТ ЗНАЧЕНИЕ ЦЕЛОГО ТИПА - НОМЕР ЦВЕТА ЗАДАННОЙ ТОЧКИ ЭКРАНА, ЧИСЛО ОТ 1 ДО 4. ЕСЛИ КООРДИНАТЫ ТОЧКИ ВЫХОДЯТ ЗА ПРЕДЕЛЫ ЭКРАНА, ТО ВЫДАЕТСЯ ЗНАЧЕНИЕ -1. ЕСЛИ ТОЧКА НЕ ПРИНАДЛЕЖИТ НИ ОДНОМУ ИЗ НАЧЕРЧЕНЫХ НА ЭКРАНЕ ОБ'ЕКТОВ, ТО ВЫДАЕТСЯ НОМЕР ЦВЕТА ФОНА. CTP. 52 207537 1.00100-01 35 С ПОМОЩЬЮ ФУНКЦИИ POINT МОЖНО ОПРЕДЕЛИТЬ, ВЫЧЕРЧИВАЛОСЬ ЛИ ЧТО -НИБУДЬ В ЗАДАННОМ МЕСТЕ ЭКРАНА. ПРИМЕР: 100 GOSUB 1000 110 IF POINT(X0,Y0)=4% THEN 100 120 GOSUB 2000 5.6.4. ОПЕРАТОР LINE ОПЕРАТОР ИСПОЛЬЗУЕТСЯ ДЛЯ ВЫЧЕРЧИВАНИЯ НА ЭКРАНЕ ЛИНИЙ И ПРЯМОУГОЛЬНИКОВ. ФОРМАТ: LINE [[ @ ](<АРГ1>,<АРГ2>)] - STEP [ @ ](<АРГ3>,<АРГ4>)[,<АРГ5>,[B ] STEP BF <АРГ1>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КООРДИНАТУ X НАЧАЛЬНОЙ ТОЧКИ ОБ'ЕКТА; <АРГ2>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КООРДИНАТУ Y НАЧАЛЬНОЙ ТОЧКИ ОБ'ЕКТА; <АРГ3>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КООРДИНАТУ X КОНЕЧНОЙ ТОЧКИ ОБ'ЕКТА; <АРГ4>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КООРДИНАТУ Y КОНЕЧНОЙ ТОЧКИ ОБ'ЕКТА; <АРГ5>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ НОМЕР ЦВЕТА ОБ'ЕКТА, ЧИСЛО ИЗ ИНТЕРВАЛА [0,4]; B - ВЫЧЕРЧИВАЕТСЯ ПРЯМОУГОЛЬНИК МЕЖДУ ЗАДАННЫМИ ВЕРШИНАМИ; BF - ВЫЧЕРЧИВАЕТСЯ ЗАКРАШЕННЫЙ ПРЯМОУГЛЬНИК; STEP (@) УКАЗЫВАЕТ, ЧТО КООРДИНАТЫ ПОДСЧИТЫВАЮТСЯ ОТНОСИТЕЛЬНО ПОСЛЕДНЕЙ ТОЧКИ, ОБРАБОТАННОЙ ОПЕРАТОРАМИ ГРАФИКИ. ЭТОТ ОПЕРАТОР ИСПОЛЬЗУЕТСЯ ДЛЯ ВЫЧЕРЧИВАНИЯ НА ЭКРАНЕ ЛИНИЙ, КОНТУРОВ ПРЯМОУГОЛЬНИКОВ ИЛИ ЗАКРАШЕННЫХ ПРЯМОУГОЛЬНИКОВ. АРГУМЕНТЫ С ПЕРВОГО ПО ЧЕТВЕРТЫЙ ЗАДАЮТ КООРДИНАТЫ НАЧАЛЬНОЙ (<АРГ1> И <АРГ2>) И КОНЕЧНОЙ (<АРГ3> И <АРГ4>) ТОЧКИ ОБ'ЕКТА (ДЛЯ ПРЯМОУГОЛЬНИКА ЭТО ДИАГОНАЛЬНО ПРОТИВОПОЛОЖНЫЕ УГЛЫ). ЕСЛИ ПЕРВЫЕ ДВА АРГУМЕНТЫ ОПУЩЕНЫ, ТО ПО УМОЛЧАНИЮ БЕРУТСЯ КООРДИНАТЫ ТОЧКИ, ЗАДАННЫЕ В ПРЕДЫДУЩЕМ ОПЕРАТОРЕ ГРАФИКИ. ЕСЛИ АРГУМЕНТ 5 ОПУЩЕН,ТО ВЫБИРАЕТСЯ ТЕКУЩИЙ ЦВЕТ, ОПРЕДЕЛЕННЫЙ ОПЕРАТОРОМ COLOR. ЕСЛИ ЗАДАН ПАРАМЕТР B (BF), ТО ВЫЧЕРЧИВАЕТСЯ ПРЯМОУГОЛЬНИК CTP. 53 207537 1.00100-01 35 (ЗАКРАШЕННЫЙ ПРЯМОУГОЛЬНИК). ЕСЛИ НИ ОДНОГО ИЗ ЭТИХ ПАРАМЕТРОВ НЕТ, ТО ЧЕРТИТСЯ ЛИНИЯ. АРГУМЕНТЫ С ПЕРВОГО ПО ЧЕТВЕРТЫЙ МОГУТ ПРИНИМАТЬ ЗНАЧЕНИЯ ИЗ ИНТЕРВАЛА [-32768,32767], О НА ЭКРАНЕ ОТОБРАЖАЮТСЯ ТОЛЬКО ТОЧКИ С КООРДИНАТАМИ X И Y В ИНТЕРВАЛАХ [0,255] И [0,240] СООТВЕТСТВЕННО. ЕСЛИ КОД ЦВЕТА ВЫХОДИТ ЗА ДОПУСТИМЫЕ ГРАНИЦЫ, ТО ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 5. ПРИМЕР: 10 LINE -@(SCALE*3,SCALE*4),2% 20 LINE (100,100)-(200,200),,B 30 LINE (125,125)-@(50,50),,BF 5.6.5. ОПЕРАТОР CIRCLE ИСПОЛЬЗУЕТСЯ ДЛЯ ВЫЧЕРЧИВАНИЯ НА ЭКРАНЕ ОКРУЖНОСТЕЙ, ЭЛИПСОВ И ДУГ ПРОИЗВОЛЬНОГО РАЗМЕРА И ЦВЕТА. ФОРМАТ: CIRCLE [ @ ](<АРГ1>,<АРГ2>),<АРГ3> STEP [,<АРГ4>][,<АРГ5>][,<АРГ6>][,<АРГ7>] <АРГ1>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КООРДИНАТУ X ЦЕНТРА ОКРУЖНОСТИ; <АРГ2>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КООРДИНАТУ Y ЦЕНТРА ОКРУЖНОСТИ; <АРГ3>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ РАДИУС ОКРУЖНОСТИ; <АРГ4>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ НОМЕР ЦВЕТА; ЧИСЛО ИЗ ИНТЕРВАЛА [0,4]; <АРГ5>::= АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ ПОЛОЖЕ- НИЕ НАЧАЛЬНОЙ ТОЧКИ ДУГИ (В РАДИАНАХ); <АРГ6>::= АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ ПОЛОЖЕ- НИЕ КОНЕЧНОЙ ТОЧКИ ДУГИ (В РАДИАНАХ); <АРГ7>::= АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КОЭФИЦИ- ЕНТ "СЖАТИЯ" ЭЛИПСА; STEP (@) - КООРДИНАТЫ УКАЗАННОЙ ТОЧКИ ВЫЧИСЛЯЮТСЯ ОТ- НОСИТЕЛЬНО ПОСЛЕДНЕЙ ТОЧКИ, ОБРАБОТАННОЙ ОПЕРАТОРАМИ ГРАФИКИ. ЭТОТ ОПЕРАТОР ИСПОЛЬЗУЕТСЯ ДЛЯ ВЫЧЕРЧИВАНИЯ ОКРУЖНОСТЕЙ, ЭЛИПСОВ ИЛИ ИХ ЧАСТЕЙ (ДУГ). НА ЭКРАН ВЫВОДИТСЯ ЛИШЬ ТА ЧАСТЬ ОКРУЖНОСТИ, КОТОРАЯ ПОМЕЩАЕТСЯ НА КООРДИНАТНОЙ ПЛОСКОСТИ (КООРДИНАТА X В ПРЕДЕЛАХ [0,255], Y - [0,240]). ПЕРВЫЕ ДВА АРГУМЕНТЫ ЗАДАЮТ ПОЛОЖЕНИЕ ЦЕНТРА ОКРУЖНОСТИ НА КООРДИНАТНОЙ ПЛОСКОСТИ. CTP. 54 207537 1.00100-01 35 АРГУМЕНТ 3 ЗАДАЕТ РАДИУС ВЫЧЕРЧИВАЕМОЙ ОКРУЖНОСТИ. АРГУМЕНТ 5 И АРГУМЕНТ 6 УКАЗЫВАЮТ НАЧАЛО И КОНЕЦ ВЫЧЕРЧИВАЕМОЙ ДУГИ СООТВЕТСТВЕННО. ЕСЛИ ЭТИ АРГУМЕНТЫ ОТРИЦАТЕЛЬНЫ, ТО БЕРУТСЯ ИХ АБСОЛЮТНЫЕ ЗНАЧЕНИЯ, А ЦЕНТР ОКРУЖНОСТИ СОЕДИНЯЕТСЯ С СООТВЕТСТВУЮЩИМ КОНЦОМ ДУГИ. ПО УМОЛЧАНИЮ ОНИ РАВНЫ 0 И 2*PI (6.283185). ЕСЛИ ЗАДАН АРГУМЕНТ 7, ТО ВЫЧЕРЧИВАЕТСЯ ЭЛИПС. ПО УМОЛЧАНИЮ ЭТОТ ПАРАМЕТР РАВЕН 1. НЕПРАВИЛЬНОЕ ЗАДАНИЕ АРГУМЕНТОВ МОЖЕТ ПРИВЕСТИ К СИНТАКСИЧЕСКОЙ ОШИБКЕ ИЛИ ОШИБКЕ ПЕРЕПОЛНЕНИЯ. ЕСЛИ НОМЕР ЦВЕТА ВЫХОДИТ ЗА ДОПУСТИМЫЕ ПРЕДЕЛЫ, ТО ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 5. ПРИМЕР: 10 COLOR 3 20 CIRCLE(100,100),75,,-1,-.001,1.2 30 CIRCLE(10,-5),75,,-.001,-1,1.2 5.6.6. ОПЕРАТОР PAINT ИСПОЛЬЗУЕТСЯ ДЛЯ ОКРАШИВАНИЯ ЧАСТИ ЭКРАНА В ОДИН ЦВЕТ ФОРМАТ: PAINT [ @ ](<АРГ1>,<АРГ2>)[,<АРГ3>][,АРГ4] STEP <АРГ1>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КООРДИНАТУ Х НАЧАЛЬНОЙ ТОЧКИ; <АРГ2>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ КООРДИНАТУ Y НАЧАЛЬНОЙ ТОЧКИ; <АРГ3>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ НОМЕР ЦВЕТА; ЧИСЛО ИЗ ИНТЕРВАЛА [0,4]; <АРГ4>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ ЦВЕТ ГРАНИЦЫ ЗАКРАШИВАЕМОЙ ОБЛАСТИ; ЧИСЛО ИЗ ИНТЕРВАЛА [0,4]; STEP (@) - КООРДИНАТЫ УКАЗАННОЙ ТОЧКИ ПОДСЧИТЫВАЮТСЯ ОТНОСИТЕЛЬНО ПОСЛЕДНЕЙ ТОЧКИ, ОБРАБОТАН- НОЙ ОПЕРАТОРАМИ ГРАФИКИ. ЭТОТ ОПЕРАТОР ПРЕДНАЗНАЧЕН ДЛЯ ОКРАШИВАНИЯ ЧАСТИ ЭКРАНА В УКАЗАННЫЙ ЦВЕТ. ЕСЛИ АРГУМЕНТ 3 ОПУЩЕН, ТО ОБЛАСТЬ ОКРАШИВАЕТСЯ ТЕКУЩИМ ЦВЕТОМ, ОПРЕДЕЛЕННЫМ ОПЕРАТОРОМ COLOR. ЕСЛИ АРГУМЕНТ 4 ОПУЩЕН, ТО БЕРЕТСЯ ОБЛАСТЬ С ГРАНИЦЕЙ ЦВЕТА ЗАКРАШИВАНИЯ. ТОЧКА, С КОТОРОЙ НАЧИНАЕТСЯ ОКРАШИВАНИЕ, МОЖЕТ БЫТЬ ЛЮБАЯ ВНУТРЕННЯЯ ТОЧКА ОБЛАСТИ. ГРАНИЦЫ ОБЛАСТИ ДОЛЖНЫ БЫТЬ ЧЕТКО ОЧЕРЧЕНЫ, ИНАЧЕ ПРОИЗОЙДЕТ ВЫХОД ЗА ПРЕДЕЛЫ ОБЛАСТИ. ЗА ПРЕДЕЛАМИ ЭКРАНА ОПЕРАТОР НИКАКИХ ДЕЙСТВИЙ НЕ ПРОИЗВОДИТ. СЛЕДУЕТ ОТМЕТИТЬ, ЧТО ЗА ГРАНИЦУ ОБЛАСТИ ПРИНИМАЮТСЯ КОНТУРА НЕ ТОЛЬКО С ЦВЕТОМ, УКАЗАННЫМ АРГУМЕНТОМ 4, НО И С ЦВЕТОМ ЗАКРАШИВАНИЯ, ПОЭТОМУ, ЕСЛИ ВНУТРИ ОКРАШИВАЕМОЙ ОБЛАСТИ ОКАЖЕТСЯ ЗАКРЫТЫЙ КОНТУР С ЦВЕТОМ ЗАКРАШИВАНИЯ, ТО ОН ОСТАНЕТСЯ CTP. 55 207537 1.00100-01 35 НЕЗАКРАШЕННЫМ. ЕСЛИ НОМЕРА ЦВЕТОВ ВЫХОДЯТ ЗА ДОПУСТИМЫЕ ПРЕДЕЛЫ, ТО ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 5. ПРИМЕР: 100 DRAW A$ 110 PAINT(105,22),3 5.6.7. ОПЕРАТОР DRAW ВЫПОЛНЯЕТ СТРОКИ ГРАФИЧЕСКИХ КОМАНД. ФОРМАТ: DRAW <СИМВОЛЬНОЕ ВЫРАЖЕНИЕ> <СИМВОЛЬНОЕ ВЫРАЖЕНИЕ>::= СТРОКА, СОДЕРЖАЩАЯ ГРАФИ- ЧЕСКИЕ КОМАНДЫ. ОПЕРАТОР ДАЕТ ВОЗМОЖНОСТЬ УДОБНО УПРАВЛЯТЬ ГРАФИКОЙ. ДЛЯ ЭТОГО ИМЕЮТСЯ КОМАНДЫ "ГРАФИЧЕСКОГО ЯЗЫКА", ПЕРЕДАВАЕМЫЕ ОПЕРАТОРУ DRAW ЧЕРЕЗ СТРОКУ СИМВОЛОВ. ВОЗМОЖНЫ ВЫЗОВЫ ПОДСТРОК С КОМАНДАМИ, ЧТО ОСВОБОЖДАЕТ ОТ ОГРАНИЧЕНИЙ ДЛИНЫ СТРОК (255 СИМВОЛОВ). КОМАНДА ОПЕРАТОРА DRAW СОСТОИТ ИЗ БУКВЫ, ИДЕНТИФИЦИРУЮЩЕЙ КОМАНДУ, С СЛЕДУЮЩИМИ ЗА НЕЙ АРГУМЕНТАМИ. АРГУМЕНТОМ МОЖЕТ БЫТЬ ЦЕЛАЯ КОНСТАНТА ИЗ ИНТЕРВАЛА [0,32767] ИЛИ ОБРАЩЕНИЕ К ПЕРЕМЕННОЙ (ИНДЕКСИРОВАННОЙ ПЕРЕМЕННОЙ): =<ИМЯ ЧИСЛОВОЙ ПЕРЕМЕННОЙ>; ЗНАЧЕНИЕ ПЕРЕМЕННОЙ ДОЛЖНО БЫТЬ В ИНТЕРВАЛЕ [-32768,32767]. НА ЭКРАНЕ ОТОБРАЖАЮТСЯ ТОЛЬКО ТЕ ЗНАЧЕНИЯ АРГУМЕНТОВ, КОТОРЫЕ СООТВЕТСТВУЮТ КООРДИНАТАМ X И Y ТОЧЕК В ИНТЕРВАЛАХ [0,255] И [0,240] СООТВЕТСТВЕННО. В КАЧЕСТВЕ РАЗДЕЛИТЕЛЕЙ МЕЖДУ КОМАНДАМИ МОЖНО ИСПОЛЬЗОВАТЬ ПРОБЕЛЫ ИЛИ ТОЧКУ С ЗАПЯТОЙ ";", НО ИХ МОЖЕТ И НЕ БЫТЬ. ИМЕЮТСЯ СЛЕДУЮЩИЕ КОМАНДЫ ОПЕРАТОРА DRAW: U[<ДЛИНА>] ЧЕРЧЕНИЕ ВВЕРХ ОТ ТЕКУЩЕЙ ТОЧКИ; D[<ДЛИНА>] ВНИЗ; L[<ДЛИНА>] НАЛЕВО; R[<ДЛИНА>] НАПРАВО; E[<ДЛИНА>] В ПРАВЫЙ ВЕРХНИЙ УГОЛ; F[<ДЛИНА>] В ПРАВЫЙ НИЖНИЙ УГОЛ; G[<ДЛИНА>] В ЛЕВЫЙ НИЖНИЙ УГОЛ; H[<ДЛИНА>] В ЛЕВЫЙ ВЕРХНИЙ УГОЛ. В ГРАФИЧЕСКОМ ПРЕДСТАВЛЕНИИ (ВСЕ УГЛЫ 45 ГРАДУСОВ): H U E \!/ L-+-R /!\ G D F CTP. 56 207537 1.00100-01 35 ДЛЯ ЧЕРЧЕНИЯ С УКАЗАНИЕМ КООРДИНАТ ТОЧЕК ИСПОЛЬЗУЕТСЯ КОМАНДА M. M[+]<АРГ1>,[+]<АРГ2> - - КОМАНДА ЧЕРТИТ ОТ ТЕКУЩЕЙ ТОЧКИ ДО ТОЧКИ С КООРДИНАТАМИ (<АРГ1>,<АРГ2>). ЕСЛИ ПЕРЕД ПЕРВЫМ АРГУМЕНТОМ УКАЗАН ЗНАК "+" ИЛИ "-", ТО КООРДИНАТЫ ПОДСЧИТЫВАЮТСЯ ОТНОСИТЕЛЬНО КООРДИНАТ ТЕКУЩЕЙ ТОЧКИ. ЗНАК ПЕРЕД ВТОРЫМ АРГУМЕНТОМ НЕ ВЛИЯЕТ НА ЭТОТ РЕЖИМ. В КОМАНДЕ M ";" ПОСЛЕ ИМЕНИ ЧИСЛОВОЙ ПЕРЕМЕННОЙ В ПЕРВОМ АРГУМЕНТЕ НЕ ЗАМЕНЯЕТ ЗАПЯТОЙ. ИМЕЮТСЯ КОМАНДЫ, ИСПОЛЬЗУЕМЫЕ НЕПОСРЕДСТВЕННО ПЕРЕД ПЕРЕЧИСЛЕННЫМИ КОМДНДАМИ, ИЗМЕНЯЮЩИЕ ИХ ДЕЙСТВИЕ: B УКАЗЫВАЕТ, ЧТО КОМАНДА ДОЛЖНА ПЕРЕДВИГАТЬ ТЕКУЩУЮ ТОЧКУ, НО НЕ ЧЕРТИТЬ; N - ПОСЛЕ ВЫПОЛНЕНИЯ КОМАНДЫ ВОЗВРАЩАЮТСЯ БЫВШИЕ БЫВШИЕ КООРДИНАТЫ ТЕКУЩЕЙ ТОЧКИ. СЛЕДУЮЩИЕ КОМАНДЫ ИЗМЕНЯЮТ РЕЖИМ ДЛЯ ВСЕХ ПОСЛЕДУЮЩИХ КОМАНД ВО ВСЕХ ПОСЛЕДУЮЩИХ ОПЕРАТОРАХ DRAW, ИСКЛЮЧАЯ КОМАНДУ M С АБСОЛЮТНЫМИ КООРДИНАТАМИ. A[<ПОВОРОТ>] ИЗМЕНЯЕТ НАПРАВЛЕНИЕ ЧЕРЧЕНИЯ, ЗНАЧЕНИЯ АРГУМЕНТА ОЗНАЧАЮТ: 0 - НОРМАЛЬНАЯ ОРИЕНТАЦИЯ (ПРИНИМА- ЕТСЯ ПО УМОЛЧАНИЮ); 1 - 90 ГРАДУСОВ ПО ЧАСОВОЙ СТРЕЛКЕ; 2 - 180 ГРАДУСОВ ПО ЧАСОВОЙ СТРЕЛКЕ; 3 - 270 ГРАДУСОВ ПО ЧАСОВОЙ СТРЕЛКЕ; S[<МАСШТАБ>] ПОЗВОЛЯЕТ ИЗМЕНЯТЬ МАСШТАБ ЧЕРЧЕНИЯ; АРГУМЕНТ ДОЛЖЕН БЫТЬ В ПРЕДЕЛАХ [1,255]. ПО УМОЛЧАНИЮ ПРИНИМАЕТСЯ ЗНАЧЕНИЕ 4. ЗНАЧЕНИЕ 0 ТОЖЕ УКАЗЫВА- ЕТ ОТСУТСТВИЕ МАСШТАБИРОВАНИЯ, Т.Е. ЗНАЧЕНИЕ 4. ЗНАЧЕНИЕ АРГУМЕНТА ОПЕРАТОР DRAW ДЕЛИТ НА 4 И УМНОЖАЕТ НА АРГУМЕНТЫ КОМАНД ЧЕРЧЕНИЯ. ТАКИМ ОБРАЗОМ S1 ОЗНАЧАЕТ 4-КРАТНОЕ УМЕНЬ- ШЕНИЕ, S12 - 3-КРАТНОЕ УВЕЛИЧЕНИЕ. ДЛЯ ИЗМЕНЕНИЯ ЦВЕТА ИМЕЕТСЯ КОМАНДА C: C[<ЦВЕТ>] ЗАДАЕТ НОВЫЙ ЦВЕТ ЧЕРЧЕНИЯ, НОМЕР КОТО- РОГО УКАЗЫВАЕТСЯ АРГУМЕНТОМ И ДОЛЖЕН БЫТЬ В ПРЕДЕЛАХ [0,4]. ДЛЯ ВКЛЮЧЕНИЯ ПОДСТРОК ИСПОЛЬЗУЕТСЯ КОМАНДА X: X<ИМЯ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ>; ПЕРЕМЕННАЯ ИНТЕРПРЕТИРУЕТСЯ КАК ПОДСТРОКА, СОДЕРЖАЩАЯ ГРАФИЧЕСКИЕ КОМАНДЫ. ОПЕРАТОР DRAW УДОБЕН ДЛЯ ЧЕРЧЕНИЯ РАЗЛИЧНЫХ ФИГУР, СОЗДАНИЯ CTP. 57 207537 1.00100-01 35 ШРИФТОВ И БИБЛИОТЕК ЭЛЕМЕНТОВ ЧЕРТЕЖЕЙ С ПОСЛЕДУЮЩЕЙ ИХ КОМПОНОВКОЙ ПРИ ПОМОЩИ КОМАНДЫ X, РАЗМЕЩЕНИЯ ИХ В ЛЮБОМ МЕСТЕ, НАПРАВЛЕНИИ И МАСШТАБЕ. НАРУШЕНИЕ ПРЕДЕЛОВ АРГУМЕНТОВ ИЛИ НЕПРАВИЛЬНАЯ ЗАПИСЬ КОМАНД ВЫЗЫВАЕТ ОШИБКУ 5. ПРИМЕР: 10 A%=100 20 B%=150 30 A$="E10F10D20L20U20R20" 40 DRAW"BM=A%;,100X=A$;BM=B%;,100S2X=A$;" 5.7. ОПЕРАТОР УПРАВЛЕНИЯ ЗВУКОМ 5.7.1. ОПЕРАТОР BEEP ОПЕРАТОР ВЫДАЕТ КОРОТКИЙ ЗВУКОВОЙ СИГНАЛ. ФОРМАТ: BEEP ЭТОТ ОПЕРАТОР ИСПОЛЬЗУЕТСЯ ДЛЯ ВЫДАЧИ КОРОТКОГО ЗВУКОВОГО СИГНАЛА. ЭТОТ ЖЕ СИГНАЛ ВЫДАЕТСЯ СИСТЕМОЙ В СЛУЧАЕ ОШИБКИ. ПРИМЕР: 100 FOR I=1 TO 10 110 BEEP 120 NEXT 130 INPUT "НОМЕР МЕСЯЦА";MN 140 IF MN>12 OR MN<1 THEN 100 150 PRINT MONTH$(MN) 5.8. ОПЕРАТОРЫ ТРАССИРОВКИ ПРОГРАММЫ CTP. 58 207537 1.00100-01 35 5.8.1. ОПЕРАТОР TRON ЗАПУСКАЕТ ТРАССИРОВКУ НОМЕРОВ СТРОК. ФОРМАТ: TRON В РЕЖИМЕ ТРАССИРОВКИ НОМЕР КАЖДОЙ ВЫПОЛНЯЕМОЙ СТРОКИ ПРОГРАММЫ ВЫДАЕТСЯ НА ЭКРАН В ФОРМАТЕ [NNN]. ЕДИНСТВЕННЫЙ СПОСОБ ОСТАНОВИТЬ ВЫВОД НОМЕРОВ СТРОК - ЭТО ПЕРЕЗАПУСТИТЬ ЭВМ ИЛИ ВЫПОЛНИТЬ ОПЕРАТОР TROFF. КОМАНДА RUN НЕ ОТМЕНЯЕТ ДЕЙСТВИЯ ОПЕРАТОРА TRON. ЭТОТ РЕЖИМ ПОМОГАЕТ СЛЕДИТЬ ЗА ВЫПОЛНЕНИЕМ СЛОЖНЫХ И ТРУДНОПОНЯТНЫХ ПРОГРАММ, УСТАНОВИТЬ, КОТОРАЯ ИЗ ВЕТВЕЙ ПРОГРАММЫ ВЫПОЛНЯЕТСЯ. 5.8.2. ОПЕРАТОР TROFF ОПЕРАТОР ВЫКЛЮЧАЕТ ВКЛЮЧЕННЫЙ ОПЕРАТОРОМ TRON РЕЖИМ ТРАССИРОВКИ. ФОРМАТ: TROFF ПРИМЕР: ... 249 TRON 250 ... ... 300 ... 301 TROFF ... RUN [250][260][270][280][290][300] OK CTP. 59 207537 1.00100-01 35 6. ФУНКЦИИ ЯЗЫК БЕЙСИК ПОЗВОЛЯЕТ ИСПОЛЬЗОВАТЬ АППАРАТ ФУНКЦИЙ. РАЗЛИЧАЮТ СТАНДАРТНЫЕ ФУНКЦИИ, КОТОРЫЕ ЗАРАНЕЕ ОПРЕДЕЛЕНЫ В СИСТЕМЕ, И ВНУТРЕННИЕ, КОТОРЫЕ ОПРЕДЕЛЯЕТ САМ ПОЛЬЗОВАТЕЛЬ. СТАНДАРТНЫЕ В СВОЮ ОЧЕРЕДЬ ПОДРАЗДЕЛЯЮТСЯ НА ЧИСЛОВЫЕ, ПРЕДНАЗНАЧЕННЫЕ ДЛЯ РАБОТЫ С ЧИСЛОВЫМИ ВЕЛИЧИНАМИ, И СИМВОЛЬНЫЕ, ПРЕДНАЗНАЧЕННЫЕ ДЛЯ ДЕЙСТВИЙ НАД СИМВОЛЬНЫМИ СТРОКАМИ. 6.1. ЧИСЛОВЫЕ ФУНКЦИИ РЕЗУЛЬТАТЫ ВСЕХ ЧИСЛОВЫХ ФУНКЦИЙ - ЧИСЛА ДВОЙНОЙ ТОЧНОСТИ. 6.1.1. ФУНКЦИЯ SQR РЕЗУЛЬТАТ ФУНКЦИИ - КВАДРАТНЫЙ КОРЕНЬ. ФОРМАТ: X=SQR(<АРГУМЕНТ>) <АРГУМЕНТ>::= АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ, ПРИНИМАЮЩЕЕ НЕОТРИЦАТЕЛЬНЫЕ ЗНАЧЕНИЯ. ФУНКЦИЯ ВЫЧИСЛЯЕТ КВАДРАТНЫЙ КОРЕНЬ. ПОПЫТКА ОБРАТИТЬСЯ К ЭТОЙ ФУНКЦИИ С ОТРИЦАТЕЛЬНЫМ ЗНАЧЕНИЕМ АРГУМЕНТА ПРИВЕДЕТ К ОШИБКЕ 5. ПРИМЕР: PRINT SQR(3) 1.7320508075688773 OK 6.1.2. ФУНКЦИЯ SIN ФУНКЦИЯ ВЫЧИСЛЯЕТ СИНУС УГЛА, ЗАДАННОГО В РАДИАНАХ. ФОРМАТ: X=SIN(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>) ЭТА ФУНКЦИЯ ВЫЧИСЛЯЕТ СИНУС УГЛА, ЗАДАННОГО В РАДИАНАХ. ДЛЯ ТОГО, ЧТОБЫ ПЕРЕВЕСТИ ГРАДУСЫ В РАДИАНЫ, МОЖНО ИСПОЛЬЗОВАТЬ ПРЕОБРАЗОВАНИЕ X=X*PI/180. ПРИМЕР: CTP. 60 207537 1.00100-01 35 PRINT SIN(PI/2) 1 OK 6.1.3. ФУНКЦИЯ COS ФУНКЦИЯ ВЫЧИСЛЯЕТ КОСИНУС УГЛА, ЗАДАННОГО В РАДИАНАХ. ФОРМАТ: X=COS(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>) ПРИМЕР: PRINT COS(0) 1 OK 6.1.4. ФУНКЦИЯ TAN ФУНКЦИЯ ВЫЧИСЛЯЕТ ТАНГЕНС УГЛА, ЗАДАННОГО В РАДИАНАХ. ФОРМАТ : X=TAN(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>) ПРИМЕР: 100 PRINT "РАССТОЯНИЕ=";S;"УГОЛ=";A 110 PRINT "ВЫСОТА=";S*TAN(A) 6.1.5. ФУНКЦИЯ ATN ИСПОЛЬЗУЕТСЯ ДЛЯ ВЫЧИСЛЕНИЯ АРКТАНГЕНСА (В РАДИАНАХ). ФОРМАТ: X=ATN(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>) ЭТА ФУНКЦИЯ ВЫЧИСЛЯЕТ АРКТАНГЕНС ВЫРАЖЕНИЯ. РЕЗУЛЬТАТ ФУНКЦИИ УКАЗЫВАЕТСЯ В РАДИАНАХ И НАХОДИТСЯ МЕЖДУ PI/2 И -PI/2. ПРИМЕР: PRINT ATN(1)*4 3.1415926535897932 OK CTP. 61 207537 1.00100-01 35 6.1.6. ФУНКЦИЯ PI РЕЗУЛЬТАТ ФУНКЦИИ - ЧИСЛО "ПИ". ФОРМАТ: X=PI ЭТА ФУНКЦИЯ ИСПОЛЬЗУЕТСЯ ДЛЯ ОБОЗНАЧЕНИЯ ЧИСЛА "ПИ". ПРИМЕРЫ: PRINT PI 3.1415926535897932 OK PRINT SIN(PI/2) 1 OK 6.1.7. ФУНКЦИЯ EXP РЕЗУЛЬТАТ ФУНКЦИИ - E В УКАЗАННОЙ СТЕПЕНИ. ФОРМАТ: X=EXP(<АРГУМЕНТ>) <АРГУМЕНТ>::= АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ, ПРИНИМАЮЩЕЕ ЗНАЧЕНИЯ ИЗ ИНТЕРВАЛА [-88.499999999999992,88.029685974121093]. ФУНКЦИЯ ВЫДАЕТ ВОЗВЕДЕНИЕ Е В УКАЗАННУЮ СТЕПЕНЬ. ПРИМЕНЯЕТСЯ ГЛАВНЫМ ОБРАЗОМ ДЛЯ НАУЧНЫХ ВЫЧИСЛЕНИЙ. ЭТА ФУНКЦИЯ ЯВЛЯЕТСЯ ОБРАТНОЙ К ФУНКЦИИ LOG( ), КОТОРАЯ ВЫЧИСЛЯЕТ НАТУРАЛЬНЫЕ ЛОГАРИФМЫ (С ОСНОВАНИЕМ E), ПОЭТОМУ X=EXP(LOG(X)). ПРИМЕР: PRINT EXP(LOG(3)) 2.9999999999999911 OK 6.1.8. ФУНКЦИЯ LOG РЕЗУЛЬТАТ ФУНКЦИИ - НАТУРАЛЬНЫЙ ЛОГАРИФМ. ФОРМАТ: X=LOG(<АРГУМЕНТ>) <АРГУМЕНТ>::= АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ, ПРИНИМАЮЩЕЕ ПОЛОЖИТЕЛЬНЫЕ ЗНАЧЕНИЯ. ФУНКЦИЯ ИСПОЛЬЗУЕТСЯ ДЛЯ ВЫЧИСЛЕНИЯ НАТУРАЛЬНОГО ЛОГАРИФМА. CTP. 62 207537 1.00100-01 35 ПРИМЕНЕНИЕ ФУНКЦИИ К АРГУМЕНТУ, ИМЕЮЩЕМУ ОТРИЦАТЕЛЬНОЕ ИЛИ РАВНОЕ НУЛЮ ЗНАЧЕНИЕ, ВЫЗЫВАЕТ ОШИБКУ 5. LOG( ) МОЖНО ИСПОЛЬЗОВАТЬ ДЛЯ ВЫЧИСЛЕНИЯ ЛОГАРИФМА С ЛЮБЫМ ОСНОВАНИЕМ. НАПРИМЕР, ДЛЯ ВЫЧИСЛЕНИЯ ЛОГАРИФМОВ С ОСНОВАНИЕМ 10 МОЖНО ИСПОЛЬЗОВАТЬ ФОРМУЛУ: LG(X)=LOG(X)/LOG(10). ПРИМЕР: PRINT LOG(EXP(1)) .99999999999999793 OK 6.1.9. ФУНКЦИЯ ABS РЕЗУЛЬТАТ ФУНКЦИИ - АБСОЛЮТНОЕ ЗНАЧЕНИЕ АРГУМЕНТА. ФОРМАТ: X=ABS(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>) РЕЗУЛЬТАТОМ ФУНКЦИИ ЯВЛЯЕТСЯ ЗНАЧЕНИЕ АРГУМЕНТА С ПОЛОЖИТЕЛЬНЫМ ЗНАКОМ. ПРИМЕР: X=-1/3 OK PRINT ABS(X*2) + 2 2.6666666666666667 OK 6.1.10. ФУНКЦИЯ FIX РЕЗУЛЬТАТ ФУНКЦИИ - ЦЕЛАЯ ЧАСТЬ АРГУМЕНТА. ФОРМАТ: X=FIX(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>) ФУНКЦИЯ ОТБРАСЫВАЕТ ДРОБНУЮ ЧАСТЬ АРГУМЕНТА. ДЛЯ ПОЛОЖИТЕЛЬНЫХ АРГУМЕНТОВ FIX( ) И INT( ) ЯВЛЯЮТСЯ ТОЖДЕСТВЕННЫМИ, НО ДЛЯ ОТРИЦАТЕЛЬНЫХ ЗНАЧЕНИЙ АРГУМЕНТОВ РЕЗУЛЬТАТЫ ЭТИХ ФУНКЦИЙ РАЗЛИЧАЮТСЯ (СМ. INT( ) ). ПРИМЕР: PRINT FIX(-5.3) -5 OK PRINT FIX(6.25) 6 OK IF X/N=FIX(X/N) THEN PRINT "X ДЕЛИТСЯ НА N" OK CTP. 63 207537 1.00100-01 35 6.1.11. ФУНКЦИЯ INT РЕЗУЛЬТАТ ФУНКЦИИ - ЦЕЛОЕ ЗНАЧЕНИЕ, МЕНЬШЕЕ ЧЕМ АРГУМЕНТ. ФОРМАТ: X=INT(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>) ФУНКЦИЯ ВЫДАЕТ БЛИЖАЙШЕГО ЦЕЛОГО ЧИСЛА, НЕ ПРЕВОСХОДЯЩЕГО АРГУМЕНТА. ФУНКЦИЯ INT( ) ПОХОЖА НА FIX( ), НО, В ОТЛИЧИЕ ОТ INT( ), FIX( ) ПРОСТО ОТБРАСЫВАЕТ ДРОБНУЮ ЧАСТЬ АРГУМЕНТА. РАЗЛИЧИЯ МЕЖДУ ФУНКЦИЯМИ ПРОЯВЛЯЮТСЯ ПРИ ОТРИЦАТЕЛЬНЫХ АРГУМЕНТАХ. ДЛЯ ОПИСЫВАЕМОЙ ФУНКЦИИ ВЫРАЖЕНИЯ X=ABS(INT(Z)) И X=ABS(INT(-Z)) ДЛЯ РЕАЛЬНЫХ Z ДАДУТ РАЗНЫЕ РЕЗУЛЬТАТЫ. ПРИМЕР: IF ABS(INT(Z))=ABS(INT(-Z))THEN PRINT"Z-ЦЕЛОЕ" OK PRINT INT(-5.3),FIX(-5.3) -6 -5 OK 6.1.12. ФУНКЦИЯ SGN РЕЗУЛЬТАТ ФУНКЦИИ РАВЕН -1, 0 ИЛИ 1, В ЗАВИСИМОСТИ ОТ ЗНАКА АРГУМЕНТА. ФОРМАТ: X=SGN(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>) ФУНКЦИЮ SGN( ) НАЗЫВАЮТ ФУНКЦИЕЙ ЗНАКА. ЭТА ФУНКЦИЯ ДАЕТ СЛЕДУЮЩИЕ РЕЗУЛЬТАТЫ: - ЕСЛИ АРГУМЕНТ<0, РЕЗУЛЬТАТ -1; - ЕСЛИ АРГУМЕНТ=0, РЕЗУЛЬТАТ 0; - ЕСЛИ АРГУМЕНТ>0, РЕЗУЛЬТАТ +1. ФУНКЦИЮ МОЖНО ИСПОЛЬЗОВАТЬ, НАПРИМЕР, КОГДА НЕОБХОДИМО БЕЗ ОПЕРАТОРА IF ПРИСВОИТЬ ПЕРЕМЕННОЙ ЧИСЛО 0 ТОЛЬКО ТОГДА, КОГДА ДРУГАЯ ПЕРЕМЕННАЯ ИМЕЕТ ЗНАЧЕНИЕ 0. ПРИМЕР: 100 INPUT A 110 PRINT B*SGN(A) CTP. 64 207537 1.00100-01 35 6.1.13. ФУНКЦИЯ RND РЕЗУЛЬТАТ ФУНКЦИИ RND - СЛУЧАЙНОЕ ЧИСЛО ИЗ ИНТЕРВАЛА [0,1]. ФОРМАТ: X=RND(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>) ФУНКЦИЯ ИСПОЛЬЗУЕТСЯ ДЛЯ ПОЛУЧЕНИЯ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ, ИМЕЮЩИХ РАВНОМЕРНОЕ РАСПРЕДЕЛЕНИЕ НА ИНТЕРВАЛЕ [0,1]. ЕЕ УДОБНО ИСПОЛЬЗОВАТЬ ПРИ СОЗДАНИИ ИГРОВЫХ ПРОГРАММ. ВЫДАВАЕМЫЕ ФУНКЦИЕЙ ЗНАЧЕНИЯ ЗАВИСЯТ ОТ ЗНАКА АРГУМЕНТА: - ЕСЛИ ЗНАЧЕНИЕ АРГУМЕНТА ПОЛОЖИТЕЛЬНО, ТО РЕЗУЛЬТАТ RND( ) - ОЧЕРЕДНОЕ ЗНАЧЕНИЕ ИЗ ПОСЛЕДОВАТЕЛЬНОСТИ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ. САМА ПОСЛЕДОВАТЕЛЬНОСТЬ ЗАВИСИТ ОТ НАЧАЛЬНОГО ЗНАЧЕНИЯ; - ЕСЛИ АРГУМЕНТ ОТРИЦАТЕЛЬНЫЙ, ТО ИЗМЕНЯЕТСЯ НАЧАЛЬНОЕ ЗНАЧЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ. КАЖДОМУ ОТРИЦАТЕЛЬНОМУ ЗНАЧЕНИЮ АРГУМЕНТА СООТВЕТСТВУЕТ ОДНА ПОСЛЕДОВАТЕЛЬНОСТЬ, ПРИЧЕМ ОНА НЕ ЗАВИСИТ ОТ ПОРЯДКА АРГУМЕНТА; - ЕСЛИ ИСПОЛЬЗУЕТСЯ НУЛЕВОЕ ЗНАЧЕНИЕ АРГУМЕНТА, ТО РЕЗУЛЬТАТ ФУНКЦИИ ТОТ ЖЕ, ЧТО И В ПРЕДЫДУЩЕМ ОБРАЩЕНИИ К НЕЙ. ПРИМЕР: PRINT RND(1),RND(-5),RND(-50) .47099434036014261 .53368281796108777 .53368281796108777 OK PRINT RND(3),RND(0) .60542409693567598 .60542409693567598 OK 6.1.14. ФУНКЦИЯ FRE УКАЗЫВАЕТ, СКОЛЬКО ОСТАЛОСЬ СВОБОДНОЙ ПАМЯТИ КОМПЬЮТЕРА ДЛЯ ПРОГРАММЫ ПОЛЬЗОВАТЕЛЯ. ФОРМАТ: X=FRE[(<АРГУМЕНТ>)] <АРГУМЕНТ>::= СИМВОЛЬНОЕ ИЛИ АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ (ВАЖЕН ЕГО ТИП, А НЕ ЗНАЧЕНИЕ). ЕСЛИ АРГУМЕНТ - ЧИСЛО ИЛИ ОТСУТСТВУЕТ, ТО ПОДСЧИТЫВАЕТСЯ И ВЫДАЕТСЯ ОБ'ЕМ ПАМЯТИ, ОТВЕДЕННОЙ ПОД ПРОГРАММУ ПОЛЬЗОВАТЕЛЯ. ЕСЛИ ЖЕ АРГУМЕНТ СИМВОЛЬНОГО ТИПА, ТО ВЫДАЕТСЯ СВОБОДНЫЙ ОБ'ЕМ ПАМЯТИ, ОТВЕДЕННОЙ ПОД СИМВОЛЬНЫЕ ПЕРЕМЕННЫЕ (СМ. ОПЕРАТОР CLEAR). ТАКИМ ОБРАЗОМ, ФУНКЦИЯ СОВЕРШЕННО НЕ ЗАВИСИТ ОТ ЗНАЧЕНИЯ АРГУМЕНТА, ВАЖЕН ТОЛЬКО ЕГО ТИП. С ДРУГОЙ СТОРОНЫ, ПРИ ОБРАЩЕНИИ К ФУНКЦИИ ЗНАЧЕНИЕ ВЫРАЖЕНИЯ ВСЕ ЖЕ ВЫСЧИТЫВАЕТСЯ, И, В СЛУЧАЕ CTP. 65 207537 1.00100-01 35 ВОЗНИКНОВЕНИЯ ОШИБКИ (НАПРИМЕР, ПЕРЕПОЛНЕНИЯ), ДАЛЬНЕЙШЕЕ ВЫПОЛНЕНИЕ ПРОГРАММЫ ПРЕКРАЩАЕТСЯ. ПРИМЕР: PRINT FRE(" "),FRE(0) 200 11000 6.2. ФУНКЦИИ ПРЕОБРАЗОВАНИЯ ТИПОВ 6.2.1. ФУНКЦИЯ CINT ФУНКЦИЯ ПРЕОБРАЗУЕТ ТИП ЗНАЧЕНИЯ АРИФМЕТИЧЕСКОГО ВЫРАЖЕНИЯ В ЦЕЛЫЙ. ФОРМАТ: X=CINT(<АРГУМЕНТ>) <АРГУМЕНТ>::= АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ, ПРИНИМАЮЩЕЕ ЗНАЧЕНИЯ ИЗ ИНТЕРВАЛА [-32768,32767]. ФУНКЦИЯ ОТБРАСЫВАЕТ ДРОБНУЮ ЧАСТЬ АРИФМЕТИЧЕСКОГО ВЫРАЖЕНИЯ ТАКЖЕ, КАК ЭТО ДЕЛАЕТ ФУНКЦИЯ FIX( ). ЕСЛИ ЗНАЧЕНИЕ ВЫХОДИТ ЗА ПРЕДЕЛЫ 16-БИТНОГО ЦЕЛОГО ЧИСЛА [-32768,32767], ТО ВЫДАЕТСЯ ОШИБКА ПЕРЕПОЛНЕНИЯ. ФУНКЦИЯ ИСПОЛЬЗУЕТСЯ ПО УМОЛЧАНИЮ, КОГДА ЗНАЧЕНИЕ АРИФМЕТИЧЕСКОГО ВЫРАЖЕНИЯ ПРИСВАИВАЕТСЯ ПЕРЕМЕННОЙ ЦЕЛОГО ТИПА. ПРИМЕР: PRINT CINT(5.93), CINT(-6.352) 5 -6 OK 6.2.2. ФУНКЦИЯ CSNG ФУНКЦИЯ ПРЕОБРАЗУЕТ АРГУМЕНТ В ЧИСЛО ОДИНАРНОЙ ТОЧНОСТИ, ОКРУГЛЯЯ ЕГО. ФОРМАТ: X=CSNG(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>) ФУНКЦИЯ ИСПОЛЬЗУЕТСЯ ДЛЯ ПРЕОБРАЗОВАНИЯ ЗНАЧЕНИЯ АРИФМЕТИЧЕСКОГО ВЫРАЖЕНИЯ В ВЕЩЕСТВЕННОЕ ЧИСЛО ОДИНАРНОЙ ТОЧНОСТИ. ОНА ИСПОЛЬЗУЕТСЯ ПО УМОЛЧАНИЮ, КОГДА ПРОИЗВОДИТСЯ ПРИСВОЕНИЕ ЗНАЧЕНИЯ ПЕРЕМЕННОЙ ОДИНАРНОЙ ТОЧНОСТИ. ФУНКЦИЮ УДОБНО ИСПОЛЬЗОВАТЬ, КОГДА ВРЕМЕННО НУЖНО ЗНАЧЕНИЕ ОДИНАРНОЙ ТОЧНОСТИ, НАПРИМЕР, ДЛЯ ПЕЧАТИ. ПРИМЕР: CTP. 66 207537 1.00100-01 35 PRINT CSNG(PI) 3.141593 OK 6.2.3. ФУНКЦИЯ CDBL ФУНКЦИЯ ПРЕОБРАЗУЕТ РЕЗУЛЬТАТ АРИФМЕТИЧЕСКОГО ВЫРАЖЕНИЯ В ЧИСЛО ДВОЙНОЙ ТОЧНОСТИ. ФОРМАТ: X=CDBL(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>) ФУНКЦИЯ ПРЕДНАЗНАЧЕНА ДЛЯ ПРЕОБРАЗОВАНИЯ ЗНАЧЕНИЙ АРИФМЕТИЧЕСКИХ ВЫРАЖЕНИЙ В ЧИСЛА ДВОЙНОЙ ТОЧНОСТИ, Т. Е., С МАНТИСОЙ ИЗ 17-ТИ ДЕСЯТИЧНЫХ ЦИФР. ЭТА ФУНКЦИЯ ИСПОЛЬЗУЕТСЯ ПО УМОЛЧАНИЮ, КОГДА ПРОИСХОДИТ ПРИСВОЕНИЕ ПЕРЕМЕННОЙ ДВОЙНОЙ ТОЧНОСТИ. ПРИМЕР: PRINT CDBL(2/3) .66666666666666667 OK 6.3. ФУНКЦИИ НЕПОСРЕДСТВЕННОГО ОБРАЩЕНИЯ К ПАМЯТИ 6.3.1. ФУНКЦИЯ PEEK ПОЗВОЛЯЕТ ПРОЧЕСТЬ СОДЕРЖИМОЕ ЛЮБОЙ ЯЧЕЙКИ ПАМЯТИ. ФОРМАТ: X=PEEK(<АРГУМЕНТ>) <АРГУМЕНТ>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗАДАЮЩЕЕ АДРЕС ЯЧЕЙКИ. ЭТА ФУНКЦИЯ ПОЗВОЛЯЕТ ИССЛЕДОВАТЬ ЛЮБОЕ ОПРЕДЕЛЕННОЕ МЕСТО ПАМЯТИ В АДРЕСНОМ ПРОСТРАНСТВЕ. С ЕЕ ПОМОЩЬЮ МОЖНО ЧИТАТЬ СИСТЕМНЫЕ ПЕРЕМЕННЫЕ ДРАЙВЕРОВ И БЕЙСИК-СИСТЕМЫ. ТАКЖЕ ФУНКЦИЯ PEEK УДОБНА ДЛЯ ВВОДА ДАННЫХ НЕПОСРЕДСТВЕННО С РЕГИСТРОВ ВНЕШНИХ УСТРОЙСТВ. РЕЗУЛЬТАТОМ ФУНКЦИИ ЯВЛЯЕТСЯ ЦЕЛОЕ ЧИСЛО - СОДЕРЖИМОЕ СЛОВА ПАМЯТИ, АДРЕС КОТОРОГО ЗАДАЕТСЯ АРГУМЕНТОМ. ЗНАЧЕНИЯ АРГУМЕНТА ОТ -32768 ДО -1 ОБОЗНАЧАЮТ АДРЕСА ОТ 32768 ДО 65535 СООТВЕТСТВЕННО. ПРИМЕР: PRINT PEEK(&O176),PEEK(&O200) 100 120 OK CTP. 67 207537 1.00100-01 35 (ПЕЧАТАЮТСЯ ЗНАЧЕНИЯ КООРДИНАТ ГРАФИЧЕСКОГО КУРСОРА). 6.3.2. ФУНКЦИЯ INP РАЗРЕШАЕТ ЧТЕНИЕ ДАННЫХ В ОПЕРАТИВНОЙ ПАМЯТИ ПО МАСКЕ. ФОРМАТ: X=INP(<АДРЕС>,<МАСКА>) <АДРЕС>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, УКАЗЫВАЮЩЕЕ ФИЗИЧЕСКИЙ АДРЕС ЯЧЕЙКИ ОЗУ; <МАСКА>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, УКАЗЫВАЮЩЕЕ, КОТОРЫЕ БИТЫ СЧИТЫВАЮТСЯ ИЗ СОДЕРЖИМОГО ЯЧЕЙКИ. ПРИ ПОМОЩИ ФУНКЦИИ INP МОЖНО АНАЛОГИЧНО ФУНКЦИИ PEEK НЕПОСРЕДСТВЕННО ЧИТАТЬ СОДЕРЖИМОЕ ЯЧЕЕК ОПЕРАТИВНОЙ ПАМЯТИ, ПРИ ЭТОМ МОЖНО ВЫБИРАТЬ ТОЛЬКО НЕОБХОДИМЫЕ БИТЫ. ФУНКЦИЯ ДАЕТ РЕЗУЛЬТАТ ЦЕЛОГО ТИПА, В КОТОРОМ БИТЫ, СООТВЕТСТВУЮЩИЕ НЕНУЛЕВЫМ БИТАМ МАСКИ, ЧИТАЮТСЯ ИЗ УКАЗАННОЙ ЯЧЕЙКИ, А ДРУГИЕ БИТЫ ИМЕЮТ ЗНАЧЕНИЕ 0. ПРИМЕР: POKE A%,&B10101 OK PRINT BIN$(INP(A%,&B11001)) 10001 OK ФУНКЦИЯ УДОБНА ПРИ РАБОТЕ С РЕГИСТРАМИ ВНЕШНИХ УСТРОЙСТВ. ПРИМЕР: 10 POKE &177660,&O100 20 IF INP(&O177660,&O200) THEN 30 ELSE 20 30 A%=PEEK(&0177662) 40 PRINT A% 50 GOTO 20 (ПРОГРАММА ПЕЧАТАЕТ КОДЫ КЛАВИШ КЛАВИАТУРЫ). 6.4. СИМВОЛЬНЫЕ ФУНКЦИИ CTP. 68 207537 1.00100-01 35 6.4.1. ФУНКЦИЯ ASC ФУНКЦИЯ ПЕРЕВОДИТ ОДИН БАЙТ СТРОКИ СИМВОЛОВ В КОД ASCII. ФОРМАТ: X=ASC(<АРГУМЕНТ>) <АРГУМЕНТ>::= НЕ ПУСТОЕ СИМВОЛЬНОЕ ВЫРАЖЕНИЕ. ЭТА ФУНКЦИЯ ОБРАБАТЫВАЕТ ПЕРВЫЙ БАЙТ СТРОКИ СИМВОЛОВ. ЗНАЧЕНИЕ ЭТОЙ ФУНКЦИИ ВЫДАЕТСЯ КАК ЦЕЛОЕ ЧИСЛО, КОТОРОЕ ЯВЛЯЕТСЯ КОДОМ СООТВЕТСТВУЮЩЕГО СИМВОЛА ПО ТАБЛИЦЕ ASCII, ПРИВЕДЕННОЙ В ПРИЛОЖЕНИИ 3. ПОЭТОМУ РЕЗУЛЬТАТ ФУНКЦИИ ПРИНАДЛЕЖИТ ИНТЕРВАЛУ [0,255]. ОБРАТНОЙ К ФУНКЦИИ ASC( ) ЯВЛЯЕТСЯ ФУНКЦИЯ CHR$( ). ДЛЯ ПОЛУЧЕНИЯ ИНФОРМАЦИИ О БОЛЕЕ ДАЛЬНИХ БАЙТАХ СИМВОЛЬНОЙ СТРОКИ МОЖНО ПРИМЕНЯТЬ ФУНКЦИЮ MID$. ЕСЛИ АРГУМЕНТ - ПУСТАЯ СТРОКА, ТО ВЫЗОВ ФУНКЦИИ ПРИВОДИТ К ОШИБКЕ 5. ПРИМЕР: ZZ$="ABC" OK PRINT ASC(ZZ$) 65 OK PRINT ASC(MID$(ZZ$,2)) 66 OK 6.4.2. ФУНКЦИЯ CHR$ ФУНКЦИЯ ПЕРЕВОДИТ ЦЕЛОЕ ЧИСЛО (КОД ASCII) В СИМВОЛЬНУЮ СТРОКУ ИЗ ОДНОГО СИМВОЛА. ФОРМАТ: X$=CHR$(<АРГУМЕНТ>) <АРГУМЕНТ>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ПРИНИМАЮЩЕЕ ЗНАЧЕНИЯ ИЗ ИНТЕРВАЛА [0,255]. ПРИ ВЫЗОВЕ ФУНКЦИИ ЗНАЧЕНИЕ АРГУМЕНТА ТРАКТУЕТСЯ КАК КОД ИЗ ТАБЛИЦЫ ASCII И ПРЕОБРАЗОВЫВАЕТСЯ В СИМВОЛЬНУЮ СТРОКУ ИЗ ОДНОГО СИМВОЛА, СООТВЕТСТВУЮЩЕГО ЭТОТ КОД. ТАКИМ ОБРАЗОМ CHR$(65) И "A" ТОЖДЕСТВЕННЫ. ФУНКЦИЯ CHR$( ) ЯВЛЯЕТСЯ ОБРАТНОЙ К ФУНКЦИИ ASC( ). ЕСЛИ X ПОПАДАЕТ В НЕОБХОДИМЫЙ ДИАПАЗОН, И ПЕРЕМЕННАЯ X$ СОСТОИТ ИЗ ОДНОГО СИМВОЛА, ТО ВСЕГДА ВЕРНО: X=ASC(CHR$(X)) И X$=CHR$(ASC(X$)). ЕСЛИ ЗНАЧЕНИЕ АРГУМЕНТА ВЫХОДИТ ЗА ПРЕДЕЛЫ УКАЗАННОГО ИНТЕРВАЛА, ТО ФИКСИРУЕТСЯ ОШИБКА 5. РАССМАТРИВАЕМУЮ ФУНКЦИЮ МОЖНО ИСПОЛЬЗОВАТЬ И ПРИ РАБОТЕ С МНОГОБАЙТОВЫМИ СТРОКАМИ, НАПРИМЕР: CTP. 69 207537 1.00100-01 35 10 OTVET$=" " 20 FOR I=1 TO 3 30 PRINT "УКАЖИТЕ НОМЕР";I;" ОТВЕТА" 40 INPUT NOMER 50 OTVET$=OTVET$+CHR$(NOMER) 60 NEXT 70 PRINT "ОТВЕТЫ="; OTVET$ ДЛЯ МНОГОБАЙТНЫХ СТРОК ТАКЖЕ МОЖНО ИСПОЛЬЗОВАТЬ ФУНКЦИЮ MID$. ЗАМЕТИМ, ЧТО СУЩЕСТВУЮТ СИМВОЛЫ, КОТОРЫЕ МОЖНО ЗАНЕСТИ В СТРОКУ ТОЛЬКО ПРИ ПОМОЩИ ФУНКЦИИ CHR$, НАПРИМЕР: 10 PRINT CHR$(7); (ВЫДАЕТСЯ ЗВУКОВОЙ СИГНАЛ). 6.4.3. ФУНКЦИЯ LEN РЕЗУЛЬТАТ ФУНКЦИИ - ДЛИНА СИМВОЛЬНОЙ СТРОКИ. ФОРМАТ: X=LEN(<СИМВОЛЬНОЕ ВЫРАЖЕНИЕ>) ФУНКЦИЯ LEN( ) ПОДСЧИТЫВАЕТ КОЛИЧЕСТВО СИМВОЛОВ СТРОКИ И МОЖЕТ ДАТЬ ЛЮБОЕ ЧИСЛО ОТ 0 (ЕСЛИ СТРОКА ПУСТАЯ) ДО 255 (ЕСЛИ СТРОКА НАЙБОЛЬШЕЙ ДОПУСТИМОЙ ДЛИНЫ). ЭТА ФУНКЦИЯ ПОЗВОЛЯЕТ УЗНАТЬ ДЛИНУ ПЕРЕМЕННОЙ ДО ЕЕ ОБРАБОТКИ. ПРИМЕНЕНИЕ НЕКОТОРЫХ ФУНКЦИЙ ДЛЯ "ПУСТЫХ" СИМВОЛЬНЫХ ПЕРЕМЕННЫХ МОГУТ ПРИВЕСТИ К ОШИБКЕ, А ИСПОЛЬЗОВАНИЕ ФУНКЦИИ LEN ПОЗВОЛЯЕТ ИЗБЕЖАТЬ ЭТОГО, НАПРИМЕР: IF LEN(A$)>0 THEN T$=MID$(A$,1,1) ПРИМЕР: 100 IF LEN(S$)>32-POS THEN PRINT CHR$(10); 110 PRINT S$ 6.4.4. ФУНКЦИЯ MID$ ФУНКЦИЯ ВЫБИРАЕТ ИЛИ ЗАМЕНЯЕТ ЧАСТЬ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ. ФОРМАТ: X$=MID$(<АРГ1>,<АРГ2>[,<АРГ3>]) ИЛИ MID$(<АРГ4>,<АРГ2>[,<АРГ3>])= =<СИМВОЛЬНОЕ ВЫРАЖЕНИЕ> <АРГ1>::= СИМВОЛЬНОЕ ВЫРАЖЕНИЕ; <АРГ2>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ПРИНИМАЮЩЕЕ ЗНАЧЕНИЯ ОТ 1 ДО 255 И ОПРЕДЕЛЯЮЩЕЕ НОМЕР СИМВОЛА, С CTP. 70 207537 1.00100-01 35 КОТОРОГО НАЧИНАЕТСЯ ИСПОЛЬЗУЕМАЯ В ОПЕРА- ЦИИ ЧАСТЬ СИМВОЛЬНОЙ СТРОКИ; <АРГ3>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ПРИНИМАЮЩЕЕ НЕОТРИЦА- ТЕЛЬНЫЕ ЗНАЧЕНИЯ И ОПРЕДЕЛЯЮЩЕЕ КОЛИ- ЧЕСТВО СИМВОЛОВ, УЧАВСТВУЮЩИХ В ОПЕРАЦИИ; <АРГ4>::= СИМВОЛЬНАЯ ПЕРЕМЕННАЯ. ФУНКЦИЯ MID$ ПОЗВОЛЯЕТ ВЫБРАТЬ ЧАСТЬ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ. ЭТО ЕДИНСТВЕННАЯ ФУНКЦИЯ, КОТОРАЯ МОЖЕТ ВСТРЕЧАТЬСЯ ПО ОБЕ СТОРОНЫ ЗНАКА РАВЕНСТВА. В ПЕРВОМ ВАРИАНТЕ MID$ ИСПОЛЬЗУЕТСЯ ДЛЯ ВЫБОРА ПОДСТРОКИ ИЗ РЕЗУЛЬТАТА СИМВОЛЬНОГО ВЫРАЖЕНИЯ <АРГ1>, НАЧИНАЯ С СИМВОЛА, УКАЗАННОГО ВТОРЫМ АРГУМЕНТОМ, ПРИЧЕМ ВЫБИРАЕТСЯ СТОЛЬКО СИМВОЛОВ, СКОЛЬКО ЗАДАНО ТРЕТИМ АРГУМЕНТОМ. ЗНАЧЕНИЕ ВТОРОГО АРГУМЕНТА НЕ ДОЛЖНО ПРЕВЫШАТЬ ДЛИНУ СИМВОЛЬНОГО ВЫРАЖЕНИЯ, УКАЗАННОГО ПЕРВЫМ АРГУМЕНТОМ. ЕСЛИ ТРЕТИЙ АРГУМЕНТ НЕ УКАЗАН ИЛИ ВЫХОДИТ ЗА ГРАНИЦЫ СТРОКИ, ТО ВЫДЕЛЯЕТСЯ ЧАСТЬ СИМВОЛЬНОЙ СТРОКИ ОТ СИМВОЛА, УКАЗАННОГО ВТОРЫМ АРГУМЕНТОМ, ДО КОНЦА. ЗАМЕТИМ, ЧТО ВЫДЕЛЕННАЯ ФУНКЦИЕЙ MID$ ПОДСТРОКА ПОМЕЩАЕТСЯ В ОБЛАСТИ ПАМЯТИ, ОТВЕДЕННОЙ ПОД СИМВОЛЬНЫЕ ПЕРЕМЕННЫЕ. ВО ВТОРОМ ВАРИАНТЕ, КОГДА ФУНКЦИЯ MID$( ) НАХОДИТСЯ С ЛЕВОЙ СТОРОНЫ ЗНАКА РАВЕНСТВА, ДОПОЛНИТЕЛЬНАЯ ПАМЯТЬ ИЗ ОБЛАСТИ, ОТВЕДЕННОЙ ПОД СИМВОЛЬНЫЕ ПЕРЕМЕННЫЕ, НЕ ИСПОЛЬЗУЕТСЯ. В ЭТОМ СЛУЧАЕ ОБРАБАТЫВАЕМЫЕ СИМВОЛЬНЫЕ ДАННЫЕ ПРИСВАИВАЮТСЯ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ, ЗНАЧЕНИЕ КОТОРОЙ УЖЕ НАХОДИТСЯ В УКАЗАННОЙ ОБЛАСТИ. В ЗТОМ СЛУЧАЕ АРГУМЕНТЫ 2 И 3 УКАЗЫВАЮТ ИЗМЕНЯЕМОЕ МЕСТО В СИМВОЛЬНОЙ ПЕРЕМЕННОЙ И ДОЛЖНЫ СООТВЕТСТВОВАТЬ АНАЛОГИЧНЫМ ТРЕБОВАНИЯМ, КАК И В ПЕРВОМ СЛУЧАЕ. ПРИМЕР: 100 A$="ФАЙЛ ПЕРВЫЙ" 110 A1$=STRING$(20," ") 120 MID$(A1$,1)=MID$(A$,6) 130 MID$(A1$,7)=MID$(A$,1,4) 140 PRINT A1$ RUN ПЕРВЫЙ ФАЙЛ OK 6.4.5. ФУНКЦИЯ STRING$ ФУНКЦИЯ ИНИЦИАЛИЗИРУЕТ СИМВОЛЬНУЮ ПЕРЕМЕННУЮ. ФОРМАТ: X$=STRING$(<АРГУМЕНТ1>,<АРГУМЕНТ2>) <АРГУМЕНТ3> <АРГУМЕНТ1>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ПРИНИМАЮЩЕЕ ЗНАЧЕНИЯ ОТ 0 ДО 255 И ОПРЕДЕЛЯЮЩЕЕ ДЛИНУ СОЗДАВАЕМОЙ СИМВОЛЬНОЙ СТРОКИ; CTP. 71 207537 1.00100-01 35 <АРГУМЕНТ2>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ПРИНИМАЮЩЕЕ ЗНАЧЕНИЯ ОТ 0 ДО 255, СООТВЕТСТВУЮЩИЕ КОДУ ASCII, КОТОРЫМ ЗАПОЛНЯЕТСЯ НОВАЯ СИМВОЛЬНАЯ СТРОКА; <АРГУМЕНТ3>::= СИМВОЛЬНОЕ ВЫРАЖЕНИЕ, ПЕРВЫМ СИМВОЛОМ КОТОРОГО ЗАПОЛНЯЕТСЯ НОВАЯ СИМВОЛЬНАЯ СТРОКА. ПРЕДНАЗНАЧЕНИЕМ ФУНКЦИИ STRING$( ) ЯВЛЯЕТСЯ СОЗДАНИЕ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ ЛЮБОЙ ДЛИНЫ, СОДЕРЖАЩЕЙ ОДИНАКОВЫЕ СИМВОЛЫ. ВЫ МОЖЕТЕ ОПРЕДЕЛИТЬ ЭТОТ СИМВОЛ ЛИБО ЗАДАВ ЕГО ПО ТАБЛИЦЕ ASCII КОДОВ (СМ. ПРИЛОЖЕНИЕ 3), ЛИБО УКАЗАВ НУЖНЫЙ СИМВОЛ С ПОМОЩЬЮ СИМВОЛЬНОГО ВЫРАЖЕНИЯ, В ЧАСТНОСТИ ТЕКСТОВОЙ КОНСТАНТЫ. ТИП ВТОРОГО АРГУМЕНТА ФУНКЦИИ STRING$ УКАЗЫВАЕТ, КАКИМ ПУТЕМ ОПРЕДЕЛЯЕТСЯ СИМВОЛ, КОТОРЫМ ИНИЦИАЛИЗИРУЕТСЯ СИМВОЛЬНАЯ ПЕРЕМЕННАЯ. НАПРИМЕР, ВЫРАЖЕНИЯ STRING$(41,32) И STRING$(41," ") ПРИВОДЯТ К ОДИНАКОВОМУ РЕЗУЛЬТАТУ. БУДЕТ ЗАФИКСИРОВАНА ОШИБКА 5, ЕСЛИ ОДИН ИЗ ЧИСЛОВЫХ ПАРАМЕТРОВ ВЫЙДЕТ ЗА ПРЕДЕЛЫ ИНТЕРВАЛА [0,255]. ЕСЛИ ЗАДАННАЯ ВАМИ ДЛИНА СИМВОЛЬНОЙ СТРОКИ РАВНА 0, ТО БУДЕТ СОЗДАНА ПУСТАЯ СТРОКА, НЕСМОТРЯ НА ИНИЦИАЛИЗИРУЮЩИЙ СИМВОЛ. ПРИМЕР: PRINT NAZV$; STRING$(50-LEN(NAZV$),"."); NOM 6.4.6. ФУНКЦИЯ VAL РЕЗУЛЬТАТ ФУНКЦИИ - ЧИСЛОВОЙ ЭКВИВАЛЕНТ ЧАСТИ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ, СОДЕРЖАЩЕЙ ЦИФРЫ. ФОРМАТ: X=VAL(<СИМВОЛЬНОЕ ВЫРАЖЕНИЕ>) ФУНКЦИЯ ПРИМЕНЯЕТСЯ К СИМВОЛЬНОМУ ВЫРАЖЕНИЮ, КОТОРОЕ ПРЕДПОЛОЖИТЕЛЬНО СОДЕРЖИТ ДЕЙСТВИТЕЛЬНОЕ ЧИСЛО, ЗАПИСАННОЕ В ASCII КОДАХ. ЭТО ЧИСЛО МОЖЕТ ВКЛЮЧАТЬ ЗНАК, ДЕСЯТИЧНУЮ ТОЧКУ И ОБОЗНАЧЕНИЕ ПОРЯДКА. ФУНКЦИЯ VAL( ) ДАЕТ ЗНАЧЕНИЕ ДВОЙНОЙ ТОЧНОСТИ. РЕЗУЛЬТАТ СИМВОЛЬНОГО ВЫРАЖЕНИЯ ПРОСМАТРИВАЕТСЯ СЛЕВА НАПРАВО ДО НЕДОПУСТИМОГО ДЛЯ ЧИСЕЛ КОДА. ЕСЛИ ПЕРВЫЙ СИМВОЛ СТРОКИ НЕЛЬЗЯ ОТНЕСТИ К ЧИСЛУ, ТО РЕЗУЛЬТАТ БУДЕТ НУЛЕВОЙ. НАПРИМЕР, РЕЗУЛЬТАТ VAL("A12:") РАВЕН 0, НО VAL("23A12:") - ЧИСЛО 23. ФУНКЦИЯ VAL ЯВЛЯЕТСЯ ОБРАТНОЙ К ФУНКЦИИ STR$( ). ПРИМЕР: PRINT VAL(MID$("A12:",2)) 12 OK CTP. 72 207537 1.00100-01 35 6.4.7. ФУНКЦИЯ INKEY$ ДАЕТ ОДИН СИМВОЛ, ВВЕДЕННЫЙ С КЛАВИАТУРЫ. ФОРМАТ: X$=INKEY$ ЭТА ФУНКЦИЯ СЧИТЫВАЕТ СИМВОЛ С БУФЕРА ВВОДА КЛАВИАТУРЫ. ЕСЛИ НЕ БЫЛО ВВЕДЕНО НИКАКОГО СИМВОЛА, ТО INKEY$ ВЫДАЕТ ПУСТУЮ СИМВОЛЬНУЮ СТРОКУ (""). ЕСЛИ СИМВОЛ БЫЛ ВВЕДЕН, ТО ОН СЧИТЫВАЕТСЯ ИЗ БУФЕРА И ВЫДАЕТСЯ ЧЕРЕЗ INKEY$. ПОСЛЕ ОБРАЩЕНИЯ К ЭТОЙ ФУНКЦИИ БУФЕР ОЧИЩАЕТСЯ, ПОЭТОМУ НАДО ЗАБОТИТЬСЯ О СОХРАНЕНИИ РЕЗУЛЬТАТА. ЭТА ФУНКЦИЯ МОЖЕТ БЫТЬ ПРИМЕНЕНА ВЕЗДЕ В КАЧЕСТВЕ СИМВОЛЬНОЙ СТРОКИ. НАДО ОБРАТИТЬ ВНИМАНИЕ НА ТО, ЧТО РЕЗУЛЬТАТОМ ФУНКЦИИ МОЖЕТ БЫТЬ ПУСТАЯ СТРОКА, В НЕКОТОРЫХ СЛУЧАЯХ ВЫЗЫВАЮЩАЯ ОШИБКУ. ЭТА ФУНКЦИЯ ЯВЛЯЕТСЯ ГЛАВНЫМ СПОСОБОМ СЧИТЫВАНИЯ КОДОВ КЛАВИШ. ДОСТОИНСТВАМИ ЭТОЙ ФУНКЦИИ ЯВЛЯЮТСЯ ТО, ЧТО ОНА НЕ ПОВТОРЯЕТ СЧИТЫВАНИЯ КОДА КЛАВИШИ, А ТАКЖЕ НЕ ЖДЕТ СИМВОЛА, ЕСЛИ НЕ БЫЛО НАЖАТО НИ НА ОДНУ КЛАВИШУ, ЧТО ОБЕСПЕЧИВАЕТ НЕ ДИАЛОГОВЫЙ РЕЖИМ ВВОДА С КЛАВИАТУРЫ, ПРИМЕНЯЕМЫМ, НАПРИМЕР, В ОПЕРАТОРЕ INPUT. INKEY$ МОЖЕТ ПРОЧИТАТЬ КОДЫ НЕ ТОЛЬКО АЛФАВИТНО-ЦИФРОВЫХ КЛАВИШ. ПРИ СЧИТЫВАНИИ НЕ ПРОИЗВОДИТСЯ ЭХО ПЕЧАТЬ НА ЭКРАНЕ. ПРИМЕР: 10 CH$=INKEY$ 20 IF CH$="" THEN 10 30 PRINT ASC(CH$); 40 GOTO 10 (ПРОГРАММА ПЕЧАТАЕТ КОДЫ КЛАВИШ). 6.4.8. ФУНКЦИЯ STR$ ПРЕВРАЩАЕТ ЧИСЛЕННЫЕ ДАННЫЕ В СТРОКУ В ASCII КОДЕ. ФОРМАТ: X$=STR$(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>) ЭТА ФУНКЦИЯ ПЕРЕВОДИТ ЧИСЛА В СТРОКУ СИМВОЛОВ АНАЛОГИЧНО ПЕРАТОРУ PRINT. ЧИСЛЕННОЕ ВЫРАЖЕНИЕ ВЫЧИСЛЯЕТСЯ КАК ОБЫЧНО, А РЕЗУЛЬТАТ "ПЕЧАТАЕТСЯ" В НОВУЮ ВРЕМЕННУЮ СТРОКУ В ОБЛАСТИ СТРОК, ЧТО И ЯВЛЯЕТСЯ РЕЗУЛЬТАТОМ ФУНКЦИИ STR$. (НЕ СПУТАЙТЕ STR$( ) С ФУНКЦИЕЙ STRING$( )). НАПРИМЕР, ЕСЛИ N=1/3, ТО STR$(N) ДАСТ СТРОКУ ".33333333333333333" И КАЖДОЕ ЧИСЛО "3" В САМОМ ДЕЛЕ ЕСТЬ СИМВОЛ, ОПРЕДЕЛЕННЫЙ КАК "3" (ВОСЬМЕРИЧНЫЙ КОД 63). ЭТА ФУНКЦИЯ ЯВЛЯЕТСЯ ОБРАТНАЙ К ФУНКЦИИ VAL. НАПРИМЕР, РЕЗУЛЬТАТ VAL(STR$(N)) БУДЕТ N, А STR$(VAL(NM$)) БУДЕТ СТРОКА NM$, ЕСЛИ NM$ СОДЕРЖИТ ДЕЙСТВИТЕЛЬНОЕ ЧИСЛО. ФУНКЦИЯ УДОБНА ДЛЯ ФОРМАТИРОВАНИЯ ЧИСЛОВЫХ ДАННЫХ ПЕРЕД ВЫВОДОМ НА ЭКРАН, ДЛЯ ВКОМПОНОВКИ ЧИСЕЛ В ТЕКСТ. ОТ ОПЕРАТОРА PRINT ФУНКЦИЯ ОТЛИЧАЕТСЯ ТЕМ, ЧТО НЕ ВЫДАЕТ ПРОБЕЛА В КОНЦЕ СТРОКИ. CTP. 73 207537 1.00100-01 35 ПРИМЕР: A=123 OK PRINT MID$(STR$(A),LEN(STR$(A))-1) 23 OK 6.4.9. ФУНКЦИЯ BIN$ ПРЕВРАЩАЕТ ЦЕЛЫЕ ЧИСЛА В СИМВОЛЫ ДВОИЧНОГО ФОРМАТА. ФОРМАТ: X$=BIN$(<ЦЕЛОЕ ВЫРАЖЕНИЕ>) РЕЗУЛЬТАТ ВЫРАЖЕНИЯ ПЕРЕВОДИТСЯ В ЦЕЛЫЙ ТИП И ПРЕВРАЩАЕТСЯ В СИМВОЛЬНУЮ СТРОКУ, ПРЕДСТАВЛЯЮЩУЮ ДВОИЧНЫЙ ЕГО КОД. НАПРИМЕР, АРГУМЕНТ С ЗНАЧЕНИЕМ 3 ДАСТ РЕЗУЛЬТАТ "11", Т. Е., СТРОКУ ИЗ ДВУХ СИМВОЛОВ "1" (ВОСМЕРИЧНЫЙ КОД 61). ЗНАКА ИЛИ ПРОБЕЛОВ ФУНКЦИЯ НЕ ГЕНЕРИРУЕТ, НЕЗНАЧНЫЕ НУЛИ ПЕРЕД ЧИСЛОМ НЕ ОБРАБАТЫВАЮТСЯ. МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ РЕЗУЛЬТАТА ФУНКЦИИ BIN$( ) ЕСТЬ 16 БАЙТОВ. ГЛАВНЫМ ОБРАЗОМ BIN$( ) ИСПОЛЬЗУЕТСЯ ДЛЯ ПЕЧАТИ ДВОИЧНОГО ПРЕДСТАВЛЕНИЯ ЧИСЕЛ. ПРИМЕР: PRINT BIN$(44) 101100 OK 6.4.10. ФУНКЦИЯ OCT$ ПРЕВРАЩАЕТ ЦЕЛОЕ ЧИСЛО В СИМВОЛЬНУЮ СТРОКУ ВОСЬМЕРИЧНОГО ПРЕДСТАВЛЕНИЯ. ФОРМАТ: X$=OCT$(<ЦЕЛОЕ ВЫРАЖЕНИЕ>) ЗНАЧЕНИЕ АРГУМЕНТА ПЕРЕВОДИТСЯ В ЦЕЛЫЙ ТИП, ПОЛУЧЕННЫЙ РЕЗУЛЬТАТ ПРЕВРАЩАЕТСЯ В СТРОКУ СИМВОЛОВ В СООТВЕТСТВИИ С ЕГО ЗНАЧЕНИЕМ В ВОСЬМEРИЧНОЙ СИСТЕМЕ СЧИСЛЕНИЯ АНАЛОГИЧНО ФУНКЦИИ BIN$. ПРОБЕЛОВ НЕ СОЗДАЕТСЯ, НЕЗНАЧНЫЕ НУЛИ ОТБРАСЫВАЮТСЯ. ТАКИМ ОБРАЗОМ, АРГУМЕНТ 12 ДАЕТ РЕЗУЛЬТАТ "14", Т. Е., СТРОКУ ИЗ ДВУХ СИМВОЛОВ "1" И "4" (ВОСМЕРИЧНЫЕ КОДЫ ASCII 61 И 64 СООТВЕТСТВЕННО). МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ, ПОЛУЧЕННОЙ ПРИ ПОМОЩИ OCT$, - ШЕСТЬ СИМВОЛОВ. ФУНКЦИЯ ИСПОЛЬЗУЕТСЯ ДЛЯ ПЕЧАТИ ВОСМЕРИЧНОГО ПРЕДСТВЛЕНИЯ ЧИСЕЛ. ПРИМЕР: PRINT OCT$(&HFFFF) 177777 CTP. 74 207537 1.00100-01 35 OK 6.4.11. ФУНКЦИЯ HEX$ ПРЕВРАЩАЕТ ЧИСЛЕННЫЙ АРГУМЕНТ В СИМВОЛЬНУЮ СТРОКУ ШЕСТНАДЦАТЕРИЧНОГО ПРЕДСТАВЛЕНИЯ. ФОРМАТ: X$=HEX$(<ЦЕЛОЕ ВЫРАЖЕНИЕ>) ФУНКЦИЯ HEX$ ПЕРЕВОДИТ ЗНАЧЕНИЕ АРГУМЕНТА В ЦЕЛЫЙ ТИП И РЕЗУЛЬТАТ ПРЕВРАЩАЕТ В СИМВОЛЬНУЮ СТРОКУ, БАЙТЫ КОТОРОЙ ПРЕДСТАВЛЯЮТ ЗНАЧЕНИЕ АРГУМЕНТА, ПРЕДСТАВЛЕННОЕ В ШЕСТНАДЦАТЕРИЧНОМ ФОРМАТЕ. ЗНАК И ПРОБЕЛЫ НЕ ГЕНЕРИРУЮТСЯ, НЕЗНАЧНЫЕ НУЛИ ОТБРАСЫВАЮТСЯ. ЭТО ЗНАЧИТ, ЧТО АРГУМЕНТ 43 ДАЕТ РЕЗУЛЬТАТ "2B", ДРУГИМИ СЛОВАМИ, СТРОКУ ИЗ ДВУХ СИМВОЛОВ С ВОСМЕРИЧНЫМИ КОДАМИ ASCII 62 И 102. ИЗ ЭТОГО СЛЕДУЕТ, ЧТО МАКСИМАЛЬНАЯ ДЛИНА ЗНАЧЕНИЯ ФУНКЦИИ HEX$( ) - 4 БАЙТА. ФУНКЦИЯ ИСПОЛЬЗУЕТСЯ ДЛЯ РАСПЕЧАТКИ ШЕСТНАДЦАТЕРИЧНОГО ПРЕДСТАВЛЕНИЯ ЧИСЛА. ПРИМЕР: PRINT HEX$(&H1A) 1A OK 6.5. ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ ВВОДА/ВЫВОДА 6.5.1. ФУНКЦИЯ CSRLIN РЕЗУЛЬТАТ ФУНКЦИИ - НОМЕР СТРОКИ ЭКРАНА, НА КОТОРОЙ НАХОДИТСЯ КУРСОР. ФОРМАТ: X=CSRLIN [(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>)] РЕЗУЛЬТАТ ФУНКЦИИ - ЧИСЛО ЦЕЛОГО ТИПА, УКАЗЫВАЮЩЕЕ, НА КОТОРОЙ СТРОКЕ ЭКРАНА НАХОДИТСЯ КУРСОР. ВЕРХНЯЯ СТРОКА ИМЕЕТ НОМЕР 0, НИЖНЯЯ - 23. ЗАКЛЮЧЕННОЕ В СКОБКИ АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ НЕ ИСПОЛЬЗУЕТСЯ, ХОТЯ ПОДСЧИТЫВАЕТСЯ, ЧТО МОЖЕТ ПРИВЕСТИ К ОШИБКЕ. CSRLIN ВМЕСТЕ С ФУНКЦИЕЙ POS ПРИМЕНЯЕТСЯ ДЛЯ ОПРЕДЕЛЕНИЯ МЕСТА НА ЭКРАНЕ, КУДА БУДЕТ ВЫВОДИТСЯ ИНФОРМАЦИЯ. ОПЕРАТОРОМ LOCATE МОЖНО МЕНЯТЬ МЕСТОРАСПОЛОЖЕНИЕ КУРСОРА. ПРИМЕР: CTP. 75 207537 1.00100-01 35 ? CSRLIN 10 OK (РЕЗУЛЬТАТ ПРИМЕРА ЗАВИСИТ ОТ МЕСТОНАХОЖДЕНИЯ КУРСОРА). 6.5.2. ФУНКЦИЯ POS ФУНКЦИЯ ВЫДАЕТ ПОЛОЖЕНИЕ КУРСОРА В ПЕЧАТНОЙ СТРОКЕ (НОМЕР СТОЛБЦА). ФОРМАТ: X=POS[(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>)] ФУНКЦИЯ ПОЗВОЛЯЕТ ПОЛУЧИТЬ НОМЕР СТОЛБЦА, В КОТОРОМ НАХОДИТСЯ КУРСОР. ЭТА ФУНКЦИЯ ВМЕСТЕ С CSRLIN ПРИМЕНЯЕТСЯ ДЛЯ ОПРЕДЕЛЕНИЯ ПОЛОЖЕНИЯ КУРСОРА. ЗНАЧЕНИЕ ЗАКЛЮЧЕННОГО В СКОБКИ АРИФМЕТИЧЕСКОГО ВЫРАЖЕНИЯ ХОТЯ И ПОДСЧИТЫВАЕТСЯ, НО ФУНКЦИЕЙ НЕ ИСПОЛЬЗУЕТСЯ. ПРИМЕР: 1000 X=POS 1010 Y=CSRLIN 1020 LOCATE X1,Y1 1030 GOSUB 2000 1040 STOP 2000 LOCATE X,Y 2100 RETURN 6.5.3. ФУНКЦИЯ LPOS ДАЕТ ПОЛОЖЕНИЕ ГОЛОВКИ ПЕЧАТАЮЩЕГО УСТРОЙСТВА. ФОРМАТ: X=LPOS[(<АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ>)] ФУНКЦИЯ LPOS ВЫДАЕТ ЗНАЧЕНИЕ СЧЕТЧИКА ПОЛОЖЕНИЯ ГОЛОВКИ ПЕЧАТАЮЩЕГО УСТРОЙСТВА. ПЕРВАЯ ПОЗИЦИЯ ИМЕЕТ НОМЕР 1. КАЖДЫЙ НАПЕЧАТАННЫЙ СИМВОЛ УВЕЛИЧИВАЕТ ЗНАЧЕНИЕ СЧЕТЧИКА, ПЕРЕХОД К НОВОЙ СТРОКЕ ОЧИЩАЕТ ЕГО, ПРИСВАИВАЯ ЗНАЧЕНИЕ 1. ДЕЙСТВИЕ ФУНКЦИИ НАДЕЖНО ТОЛЬКО ПРИ ВЫВОДЕ ТЕКСТА, ТАК КАК БЕЙСИК-СИСТЕМА НЕ КОНТРОЛИРУЕТ УПРАВЛЯЮЩИХ СИМВОЛОВ, КОТОРЫЕ МОГУТ ПОВЛИЯТЬ НА ПОЛОЖЕНИЕ ГОЛОВКИ. ФУНКЦИЮ LPOS( ) МОЖНО ИСПОЛЬЗОВАТЬ ПРИ ВЫВОДЕ ДАННЫХ НА ПРИНТЕР СТОЛБЦАМИ. ПРИМЕР: 250 IF LPOS>20 THEN LPRINT 260 LPRINT TAB(20);A CTP. 76 207537 1.00100-01 35 6.5.4. ФУНКЦИЯ EOF ПРОВЕРЯЕТ ДОСТИЖЕНИЕ КОНЦА ФАЙЛА. ФОРМАТ: X=EOF ФУНКЦИЯ ПРОВЕРЯЕТ, РАВЕН ЛИ СЛЕДУЮЩИЙ ЕЩЕ НЕ ВВЕДЕННЫЙ ОПЕРАТОРОМ INPUT# СИМВОЛ УКАЗАТЕЛЮ КОНЦА ФАЙЛА "СУ/Z" (ВОСМЕРИЧНЫЙ КОД 32). ЕСЛИ НЕТ, ТО ВЫДАЕТСЯ ЗНАЧЕНИЕ -1 (TRUE), В ПРОТИВНОМ СЛУЧАЕ - 0 (FALSE). ЕСЛИ ПРИ ОБРАЩЕНИИ К ФУНКЦИИ EOF БУФЕР ОКАЗЫВАЕТСЯ ПУСТЫМ, ТО ВВОДИТСЯ ОЧЕРЕДНОЙ БЛОК ФАЙЛА. ТАК КАК ЧТЕНИЕ МЕТКИ КОНЦА ФАЙЛА ВЫЗЫВАЕТ ОШИБКУ 55, ТО ЦЕЛЕСООБРАЗНО ПЕРЕД КАЖДЫМ INPUT# ПРОВЕРЯТЬ ДОСТИЖЕНИЕ КОНЦА ФАЙЛА ПРИ ПОМОЩИ ФУНКЦИИ EOF. ФУНКЦИЯ ДАЕТ ЛОГИЧЕСКИЙ РЕЗУЛЬТАТ, ПОЭТОМУ ЕЕ УДОБНО ИСПОЛЬЗОВАТЬ В ОПЕРАТОРЕ IF. ЕСЛИ ФАЙЛ НЕ ОТКРЫТ, ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 59. ЕСЛИ ОТКРЫТ ВЫХОДНОЙ ФАЙЛ, ТО ОБРАЩЕНИЕ К EOF ПРИВОДИТ К ОШИБКЕ 52. ПРИМЕР: 50 IF NOT EOF THEN 20 60 CLOSE 6.6. ФУНКЦИИ ОПЕРАТОРА PRINT 6.6.1. ФУНКЦИЯ AT ФУНКЦИЯ ПОЗВОЛЯЕТ ОРГАНИЗОВАТЬ ВЫВОД ДАННЫХ ОПЕРАТОРОМ PRINT С ПРОИЗВОЛЬНОЙ ПОЗИЦИИ ЭКРАНА. ФОРМАТ: PRINT AT(<АРГУМЕНТ1>,<АРГУМЕНТ2>) <АРГУМЕНТ1>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗНАЧЕНИЕ КОТОРОГО УКАЗЫВАЕТ КОЛОНКУ ЭКРАНА, НАЧИНАЯ С КОТОРОЙ БУДУТ ВЫВОДИТЬСЯ ДАННЫЕ; ЧИСЛО ИЗ ИНТЕРВАЛА [0,255]; <АРГУМЕНТ2>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ЗНАЧЕНИЕ КОТОРОГО УКАЗЫВАЕТ СТРОКУ ЭКРАНА; ЧИСЛО ИЗ ИНТЕРВАЛА [0,255]. ДЕЙСТВИЯ ФУНКЦИИ AT( ) АНАЛОГИЧНЫ ДЕЙСТВИЯМ ОПЕРАТОРА LOCATE. ОТЛИЧИЕ СОСТОИТ В ТОМ, ЧТО, ИСПОЛЬЗУЯ АТ( ), МОЖНО ВЫВОДИТЬ ТЕКСТ В ПРОИЗВОЛЬНЫХ МЕСТАХ ЭКРАНА ОДНИМ ОПЕРАТОРОМ PRINT. ЗНАЧЕНИЕ ПЕРВОГО АРГУМЕНТА ЗАДАЕТ КОЛОНКУ ЭКРАНА, А ЗНАЧЕНИЕ ВТОРОГО - СТРОКУ. ТЕМ САМЫМ ЗАДАЕТСЯ ПОЗИЦИЯ НА ЭКРАНЕ, С КОТОРОЙ НАЧИНАЕТСЯ ВЫВОД ПОСЛЕДУЮЩИХ ДАННЫХ. КОЛОНКИ ЭКРАНА CTP. 77 207537 1.00100-01 35 НУМЕРИРУЮТСЯ ОТ 0 ДО 31 С ЛЕВА НА ПРАВО, СТРОКИ - ОТ 0 ДО 23 С ВЕРХУ В НИЗ. ЕСЛИ ЗНАЧЕНИЕ ПЕРВОГО АРГУМЕНТА ПРЕВЫШАЕТ 31, ТО ПОДСЧЕТ КОЛОНОК ПРОДОЛЖАЕТСЯ С НАЧАЛА ТОЙ ЖЕ СТРОКИ. АНАЛОГИЧНЫЕ ДЕЙСТВИЯ ПРОИСХОДЯТ И СО СТРОКАМИ. ЕСЛИ ЗНАЧЕНИЯ АРГУМЕНТОВ ВЫХОДЯТ ЗА ДОПУСТИМЫЕ ПРЕДЕЛЫ, ТО ВЫДАЕТСЯ СООБЩЕНИЕ ОБ ОШИБКЕ 5. ПРИМЕР: PRINT AT(15,14);"A" OK PRINT AT(15,38);"C" OK 6.6.2. ФУНКЦИЯ TAB ФУНКЦИЯ ПОМОГАЕТ ОРГАНИЗОВАТЬ ПОСТРОЕНИЕ КОЛОНОК В ОПЕРАТОРАХ PRINT. ФОРМАТ: PRINT TAB(<АРГУМЕНТ>) <АРГУМЕНТ>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, УКАЗЫВАЮЩЕЕ НОМЕР ПО- ЗИЦИИ, С КОТОРОЙ ДОЛЖЕН ПРОДОЛЖАТЬСЯ ВЫВОД; ЧИСЛО ИЗ ИНТЕРВАЛА [0,255]. ФУНКЦИЯ TAB( ) МОЖЕТ ПРИМЕНЯТСЯ И В ОПЕРАТОРЕ LPRINT. ОНА ВЫВОДИТ ПРОБЕЛЫ ДО ТЕХ ПОР, ПОКА НЕ БУДЕТ ДОСТИГНУТА КОЛОНКА С НОМЕРОМ, РАВНЫМ ЗНАЧЕНИЮ АРГУМЕНТА. ЕСЛИ КУРСОР НАХОДИТСЯ НА ПОЗИЦИИ С БОЛЬШИМ НОМЕРОМ, ЧЕМ ЗНАЧЕНИЕ АРГУМЕНТА, ТО TAB( ) ИГНОРИРУЕТСЯ. ПОЗИЦИИ СТРОКИ ЭКРАНА НУМЕРИРУЮТСЯ ОТ 0 ДО 31 С ЛЕВА НА ПРАВО. ЕСЛИ ЗНАЧЕНИЕ АРГУМЕНТА ПРЕВЫШАЕТ 31, ТО ПОДСЧЕТ КОЛОНОК ПРОДОЛЖАЕТСЯ НА ТОЙ ЖЕ СТРОКЕ, Т.Е., TAB(1) СОВПАДАЕТ С TAB(33), TAB(65) И Т.Д. ЕСЛИ ЗНАЧЕНИЕ АРГУМЕНТА ВЫХОДИТ ЗА ДОПУСТИМЫЕ ПРЕДЕЛЫ, ТО ФИКСИРУЕТСЯ ОШИБКА 5. ПРИМЕР: 100 CW=8: 110 PRINT A;TAB(CW);B;TAB(2*CW);C;TAB(3*CW);D CTP. 78 207537 1.00100-01 35 6.6.3. ФУНКЦИЯ SPC В ОПЕРАТОРЕ PRINT ВЫВОДИТ ПРОБЕЛЫ. ФОРМАТ: PRINT SPC(<АРГУМЕНТ>) <АРГУМЕНТ>::= ЦЕЛОЕ ВЫРАЖЕНИЕ, ОЗНАЧАЮЩЕЕ ЧИСЛО ПРО- БЕЛОВ И ПРИНИМАЮЩЕЕ ЗНАЧЕНИЯ В ПРЕДЕ- ЛАХ [0,255]. ЭТА ФУНКЦИЯ ИСПОЛЬЗУЕТСЯ В ОПЕРАТОРАХ PRINT И LPRINT ДЛЯ ВЫВОДА НЕОБХОДИМОГО ЧИСЛА ПРОБЕЛОВ. ОНА НЕ ИСПОЛЬЗУЕТ СИМВОЛЬНОЙ ОБЛАСТИ. SPC( ) МОЖЕТ УПОТРЕБЛЯТЬСЯ ДЛЯ ОЧИСТКИ ЭКРАНА ВПЕРЕДИ И ПОСЛЕ ВЫВОДИМЫХ ДАННЫХ ОТ "МУСОРА", ВОЗМОЖНО ОСТАВШЕГОСЯ ПОСЛЕ ПРЕДЫДУЩЕГО ВЫВОДА. ПРИМЕР: 220 ZZ=8 230 PRINT SPC(ZZ);AX;SPC(ZZ);BX;SPC(ZZ) 6.7. ФУНКЦИИ, ОПРЕДЕЛЕННЫЕ ПОЛЬЗОВАТЕЛЕМ 6.7.1. ФУНКЦИИ FN ОБОЗНАЧАЮТ МЕСТО ВЫЗОВА ПОЛЬЗОВАТЕЛЬСКИХ ФУНКЦИЙ. ФОРМАТ: X=FN <ИМЯ> [(<СПИСОК>)] <ИМЯ>::= ИМЯ ФУНКЦИИ, ОПРЕДЕЛЕННОЙ ОПЕРАТОРОМ DEF FN; <СПИСОК>::= ОДНО ИЛИ НЕСКОЛЬКО ВЫРАЖЕНИЙ, РАЗДЕЛЕННЫХ ЗАПЯТЫМИ. ФУНКЦИИ FN - ЭТО ФУНКЦИИ БЕЙСИК-СИСТЕМЫ, ОПРЕДЕЛЕННЫЕ ПОЛЬЗОВАТЕЛЕМ. ФУНКЦИЯ ДОЛЖНА БЫТЬ ОПРЕДЕЛЕНА ПРИ ПОМОЩИ ОПЕРАТОРА DEF FN РАНЬШЕ ЕЕ ВЫЗОВА. ВЫРАЖЕНИЯ В СПИСКЕ ЯВЛЯЮТСЯ ФАКТИЧЕСКИМИ ПАРАМЕТРАМИ И ДОЛЖНЫ ПО ЧИСЛУ, РАСПОЛОЖЕНИЮ В СПИСКЕ И ТИПУ СООТВЕТСТВОВАТЬ СПИСКУ ФОРМАЛЬНЫХ ПАРАМЕТРОВ В ОПЕРАТОРЕ DEF FN. ЗНАЧЕНИЯ ФАКТИЧЕСКИХ ПАРАМЕТРОВ ВСТАВЛЯЮТСЯ В ВЫРАЖЕНИЕ В ОПРЕДЕЛЕНИИ ФУНКЦИИ, И ЗНАЧЕНИЕ ЭТОГО ВЫРАЖЕНИЯ СЧИТАЕТСЯ РЕЗУЛЬТАТОМ ФУНКЦИИ. ПРИ ПОЯВЛЕНИИ ОШИБОК В ВЫЗОВЕ ФУНКЦИИ СЛЕДУЕТ ПРОВЕРИТЬ ЕЕ ОПРЕДЕЛЕНИЕ, ТАК КАК В ОПЕРАТОРЕ DEF FN ОШИБКИ НЕ ПРОВЕРЯЮТСЯ. ПРИМЕР: CTP. 79 207537 1.00100-01 35 10 DEF FN LG(X)=LOG(X)/LOG(10) 20 PRINT FNLG(100) 6.7.2. ФУНКЦИИ USR ПОЗВОЛЯЕТ ОБРАЩАТЬСЯ К ПОДПРОГРАММАМ МАШИННОГО ЯЗЫКА. ФОРМАТ: X=USR[<ЦИФРА>](<АРГУМЕНТ>) <ЦИФРА>::= ЦЕЛАЯ КОНСТАНТА ИЗ ИНТЕРВАЛА [0,9], УКАЗЫ- ВАЮЩАЯ НОМЕР ВЫЗЫВАЕМОЙ ФУНКЦИИ; ПО УМОЛ- ЧАНИЮ 0; <АРГУМЕНТ>::= ВЫРАЖЕНИЕ, ЗНАЧЕНИЕ КОТОРОГО ПЕРЕДАЕТСЯ ФУНКЦИИ USR. ПЕРЕД ОБРАЩЕНИЕМ К ФУНКЦИИ НЕОБХОДИМО ОПРЕДЕЛИТЬ ЕЕ ПРИ ОМОЩИ ОПЕРАТОРА DEFUSR. ОДНОВРЕМЕННО МОГУТ БЫТЬ ОПРЕДЕЛЕНЫ 10 РАЗЛИЧНЫХ ФУНКЦИЙ USR С НОМЕРАМИ ОТ 0 ДО 9. ВЫЗОВ ФУНКЦИИ ПРОИСХОДИТ ПРИ ПОМОЩИ МАШИННОЙ ИНСТРУКЦИИ JSR PC. ПОДПРОГРАММА МОЖЕТ НАХОДИТЬСЯ В ЛЮБОМ МЕСТЕ ДОСТУПНОГО АДРЕСНОГО ПРОСТРАНСТВА, ВКЛЮЧАЯ ТАКЖЕ ПОДПРОГРАММЫ САМОГО БЕЙСИКА. ВОЗМОЖНЫ НЕПОСРЕДСТВЕННАЯ ПЕРЕДАЧА ПОДПРОГРАММЕ ОДНОГО АРГУМЕНТА ЛЮБОГО ТИПА И ВОЗВРАТ ОДНОГО ЗНАЧЕНИЯ ОБЯЗЯТЕЛЬНО ТОГО ЖЕ ТИПА. ПОСЛЕ ПЕРЕДАЧИ УПРАВЛЕНИЯ ПОДПРОГРАММЕ В РЕГИСТРЕ ОБЩЕГО НАЗНАЧЕНИЯ R5 НАХОДИТСЯ АДРЕС, А В R3 - ТИП АРГУМЕНТА. ТИП ЗАКОДИРОВАН СЛЕДУЮЩИМ ОБРАЗОМ: ЕДИНИЦА В 15-ОМ РАЗРЯДЕ ОЗНАЧАЕТ СИМВОЛЬНУЮ СТРОКУ; ИНФОРМАЦИЯ О ДРУГИХ ТИПАХ ХРАНИТСЯ В МЛАДШЕМ БАЙТЕ И ИМЕЕТ ЗНАЧЕНИЯ: -1 - ЦЕЛЫЙ АРГУМЕНТ, 0 - ЧИСЛО С ПЛАВАЮЩЕЙ ЗАПЯТОЙ ДВОЙНОЙ ТОЧНОСТИ, 1 - ЧИСЛО С ПЛАВАЮЩЕЙ ЗАПЯТОЙ ОДИНАРНОЙ ТОЧНОСТИ. В СЛУЧАЕ СИМВОЛЬНОЙ СТРОКИ В КАЧЕСТВЕ ЗНАЧЕНИЯ АРГУМЕНТА ПЕРЕДАВАЮТСЯ ДВА СЛОВА, В ПЕРВОМ ИЗ КОТОРЫХ ХРАНИТСЯ ДЛИНА, В ДРУГОМ - НАЧАЛЬНЫЙ АДРЕС СТРОКИ. В ВЕРШИНЕ СТЕКА НАХОДИТСЯ АДРЕС ВОЗВРАТА, А ЗА НИМ - ЗНАЧЕНИЕ АРГУМЕНТА. ТАКИМ ОБРАЗОМ В R5 ХРАНИТСЯ ЗНАЧЕНИЕ SP+2. ВЕРНУТЬ УПРАВЛЕНИЕ ВЫЗВАВШЕЙ ПРОГРАММЕ ВОЗМОЖНО ПРИ ПОМОЩИ ИНСТРУКЦИИ RTS PC, ПРЕДВАРИТЕЛЬНО ПОМЕСТИВ РЕЗУЛЬТАТ ФУНКЦИИ В ЯЧЕЙКИ, УКАЗЫВАЕМЫЕ РЕГИСТРОМ R5. ЕСЛИ СОДЕРЖИМОЕ ЭТИХ ЯЧЕЕК НЕ БУДЕТ ИЗМЕНЯТСЯ, ТО РЕЗУЛЬТАТОМ ОСТАНЕТСЯ ЗНАЧЕНИЕ АРГУМЕНТА. ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ USR ПОЗВОЛЯЕТ РАСШИРИТЬ ВОЗМОЖНОСТИ БЕЙСИК-СИСТЕМЫ, ВЫПОЛНИТЬ НЕВОЗМОЖНЫЕ ИЛИ МЕДЛЕННО ВЫПОЛНЯЕМЫЕ В НЕЙ ДЕЙСТВИЯ. ВЫЗОВ НЕОПРЕДЕЛЕННОЙ ФУНКЦИИ USR ПРИВОДИТ К ОШИБКЕ 5. ПРИМЕР: 10 PRINT USR(0%) 20 A%=USR2(A%) CTP. 80 207537 1.00100-01 35 ПРИЛОЖЕНИЕ 1 СООБЩЕНИЯ ОБ ОШИБКАХ В СООБЩЕНИЯХ ОБ ОШИБКАХ УКАЗЫВАЕТСЯ КОД ОШИБКИ В ВИДЕ: ОШИБКА XX В СТРОКЕ YYYYY, ГДЕ XX-КОД ОШИБКИ, YYYYY-НОМЕР СТРОКИ, СОДЕРЖАЩЕЙ ОШИБКУ. В ПРИЛОЖЕНИИ УКАЗАНЫ КОДЫ ОШИБОК,ИХ СОКРАЩЕННЫЕ НАЗВАНИЯ И ОПИСАНИЯ. 1 NEXT БЕЗ FOR NEXT НЕ ПРЕДШЕСТВОВАЛ FOR ИЛИ ПЕРЕМЕННАЯ,ИСПОЛЬ- ЗОВАННАЯ В FOR НЕ СООТВЕТСТВУЕТ ПЕРЕМЕННОЙ, ИСПОЛЬЗОВАННОЙ В NEXT. 2 СИНТАКСИЧЕСКАЯ ОШИБКА НЕВЕРНОЕ ИСПОЛЬЗОВАНИЕ СИМВОЛОВ, НАПРИМЕР, ЧИСЛО ОТКРЫВАЮЩИХ СКОБОК НЕ СООТВЕТСТВУЕТ ЧИСЛУ ЗАКРЫВАЮЩИХ, НЕПРАВИЛЬНАЯ ЗАПИСЬ ОПЕРАТОРОВ ИЛИ ИХ СОСТАВНЫХ ЧАСТЕЙ, НЕПРАВИЛЬНО ИСПОЛЬЗОВАНА ЗАПЯТАЯ И Т.П. 3 RETURN БЕЗ GOSUB ПРИ ВЫПОЛНЕНИИ RETURN ОБНАРУЖЕНО, ЧТО НЕ БЫЛО ВЫПОЛНЕНО GOSUB. 4 ИСЧЕРПАН СПИСОК ОПЕРАТОРА DATA ПРИ ВЫПОЛНЕНИИ ОПЕРАТОРА READ ОБНАРУЖЕНО, ЧТО СПИСОК ОПЕРАТОРА DATA ИСЧЕРПАН. 5 НЕДОПУСТИМОЕ ИСПОЛЬЗОВАНИЕ ФУНКЦИИ 6 ПЕРЕПОЛНЕНИЕ РЕЗУЛЬТАТ АРИФМЕТИЧЕСКОЙ ОПЕРАЦИИ НЕ МОЖЕТ БЫТЬ ЗАПИСАН В ФОРМАТЕ, ПРИНЯТОМ ДЛЯ ЧИСЕЛ В БЕЙСИК СИСТЕМЕ. (В СЛУЧАЕ ПОТЕРИ ПОРЯДКА РЕЗУЛЬТАТ ПРИРАВНИВАЕТСЯ НУЛЮ И ОШИБКИ НЕ ВЫДАЕТСЯ). 7 ПЕРЕПОЛНЕНИЕ ПАМЯТИ ПРОГРАММА НЕ ПОМЕЩАЕТСЯ В ПАМЯТИ, ЛИБО ИСПОЛЬЗОВАНО СЛИШКОМ МНОГО ОПЕРАТОРОВ FOR ИЛИ CTP. 81 207537 1.00100-01 35 ПЕРЕМЕННЫХ. 8 НЕОПРЕДЕЛЕН НОМЕР СТРОКИ В GOTO, GOSUB, IF, RESTORE, RENUM, AUTO ИЛИ DELETE ИСПОЛЬЗОВАН НЕОПРЕДЕЛЕННЫЙ НОМЕР СТРОКИ. 9 НЕДОПУСТИМЫЙ ИНДЕКС (ЗА ПРЕДЕЛАМИ) ССЫЛКА НА ЭЛЕМЕНТ МАССИВА С ИНДЕКСОМ, КОТОРЫЙ ВЫХОДИТ ЗА ПРЕДЕЛЫ РАЗМЕРНОСТИ МАССИВА, ЛИБО УКАЗАНО НЕПРАВИЛЬНОЕ ЧИСЛО ИНДЕКСОВ. 10 ПОВТОРНОЕ ОПРЕДЕЛЕНИЕ МАССИВА МАССИВ ОПРЕДЕЛЕН ДВУМЯ ОПЕРАТОРАМИ DIM, ИЛИ МАССИВ ОПРЕДЕЛЕН ОПЕРАТОРОМ DIM ПОСЛЕ ТОГО, КАК ПО УМОЛЧАНИЮ ДЛЯ ЭТОГО МАССИВА БЫЛА УСТАНОВЛЕНА РАЗМЕРНОСТЬ 10. 11 ДЕЛЕНИЕ НА НУЛЬ В ВЫРАЖЕНИИ ВСТРЕТИЛОСЬ ДЕЛЕНИЕ НА НУЛЬ, ИЛИ НУЛЬ БЫЛ ВОЗВЕДЕН В ОТРИЦАТЕЛЬНУЮ СТЕПЕНЬ. 12 НЕДОПУСТИМЫЙ ОПЕРАТОР В РЕЖИМЕ НЕПОСРЕДСТВЕННОГО ВЫПОЛНЕНИЯ. 13 ОШИБКА ТИПОВ ПОПЫТКА ПРИСВОИТЬ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ ЧИСЛОВОЕ ЗНАЧЕНИЕ ИЛИ НАОБОРОТ; ФУНКЦИИ, ИСПОЛЬЗУЮЩЕЙ ЧИСЛОВОЙ АРГУМЕНТ, ПЕРЕДАЕТСЯ СИМВОЛЬНЫЙ АРГУ- МЕНТ ИЛИ НАОБОРОТ. 14 НЕ ХВАТАЕТ МЕСТА СИМВОЛЬНЫМ ПЕРЕМЕННЫМ ПРЕВЫШЕНО КОЛИЧЕСТВО ОСТАВШЕЙСЯ ПАМЯТИ, КОТОРАЯ БЫЛА ОТВЕДЕНА СИМВОЛЬНЫМ ПЕРЕМЕННЫМ ПО УМОЛЧАНИЮ ИЛИ ОПЕРАТОРОМ CLEAR. 15 СЛИШКОМ ДЛИННАЯ СТРОКА БЫЛА ПОПЫТКА СОЗДАТЬ СТРОКУ ДЛИНОЙ БОЛЕЕ ЧЕМ 255 СИМВОЛОВ. 16 НЕОПРЕДЕЛЕНА CTP. 82 207537 1.00100-01 35 17 ПРОДОЛЖЕНИЕ ВЫПОЛНЕНИЯ ПРОГРАММЫ НЕВОЗМОЖНО БЫЛА СДЕЛАНА ПОПЫТКА ПРОДОЛЖИТЬ ВЫПОЛНЕНИЕ ПРОГРАММЫ, КОТОРАЯ: 1.БЫЛА ПРЕРВАНА ИЗ-ЗА ВОЗНИКНОВЕНИЯ ОШИБКИ; 2.БЫЛА ИЗМЕНЕНА; 3.НЕ СУЩЕСТВУЕТ. 18 НЕОПРЕДЕЛЕНА ФУНКЦИЯ ПОЛЬЗОВАТЕЛЯ ПОПЫТКА ОБРАТИТЬСЯ К ФУНКЦИИ USR ДО ЕЕ ОПРЕДЕЛЕ- НИЯ ОПЕРАТОРОМ DEF. 19 ОШИБКА УСТРОЙСТВА ВВОДА/ВЫВОДА ВСТРЕЧАЕТСЯ ПРИ РАБОТЕ УСТРОЙСТВА ВВОДА/ВЫВОДА. 20 НЕОПРЕДЕЛЕНА 21 НЕОПРЕДЕЛЕНА 22 НЕОПРЕДЕЛЕНА 23 НЕОПРЕДЕЛЕНА 24 ОТСУТСТВУЕТ ОПЕРАНД ВЫРАЖЕНИЕ СОДЕРЖИТ ОПЕРАТОР БЕЗ ОПЕРАНДА, ИЛИ В ОПЕРАТОРЕ (КОМАНДЕ) НЕТ ОБЯЗАТЕЛЬНЫХ ПАРАМЕТРОВ. 25 ПЕРЕПОЛНЕНИЕ БУФЕРА ВВОДА БЫЛА СДЕЛАНА ПОПЫТКА ВВЕСТИ СТРОКУ ДЛИНОЙ БОЛЕЕ ЧЕМ 255 СИМВОЛОВ. 26-51 НЕОПРЕДЕЛЕНЫ 52 ОШИБОЧНЫЙ НОМЕР ФАЙЛА ОПЕРАТОР ИЛИ КОМАНДА ССЫЛАЕТСЯ НА ФАЙЛ, КОТОРЫЙ НЕ ОТКРЫТ; ИЛИ НОМЕР ФАЙЛА ВЫХОДИТ ЗА ПЕРВОНАЧАЛЬНО ОПРЕДЕЛЕННЫЙ ПРЕДЕЛ НОМЕ- РОВ ФАЙЛОВ. 53 НЕОПРЕДЕЛЕНА 54 ФАЙЛ УЖЕ ОТКРЫТ ПРИМЕНЕН ОПЕРАТОР OPEN ДЛЯ ФАЙЛА, КОТОРЫЙ УЖЕ ОТКРЫТ; ИЛИ ОПЕРАТОР KILL ПРИМЕНЕН ДЛЯ ФАЙЛА, КОТОРЫЙ ОТКРЫТ. CTP. 83 207537 1.00100-01 35 55 ПОПЫТКА ПРОЧИТАТЬ ЗАПИСЬ ОКОНЧАНИЯ ФАЙЛА ОПЕРАТОР INPUT# БЫЛ ВЫПОЛНЕН ПОСЛЕ ТОГО, КАК ВСЕ ДАННЫЕ ИЗ ФАЙЛА БЫЛИ ВВЕДЕНЫ, ИЛИ ПРИМЕНЕН ДЛЯ ПУСТОГО ФАЙЛА. ЧТОБЫ ИЗБЕЖАТЬ ЭТОЙ ОШИБКИ, ДЛЯ ОБНАРУЖЕНИЯ ОКОНЧАНИЯ ФАЙЛА ПРИМЕНЯЙТЕ ФУНК- ЦИЮ EOF. 56 ОШИБОЧНОЕ ИМЯ ФАЙЛА В ОПЕРАТОРАХ LOAD, SAVE ИЛИ OPEN ИСПОЛЬЗОВАНО НЕПРАВИЛЬНОЕ ИМЯ ФАЙЛА (ИМЯ ФАЙЛА СОСТОИТ ИЗ СЛИШКОМ БОЛЬШОГО КОЛИЧЕСТВА СИМВОЛОВ). 57 КОМАНДА НЕПОСРЕДСТВЕННОГО ВЫПОЛНЕНИЯ В ПРОГРАММЕ ВО ВРЕМЯ ЗАГРУЗКИ ASCII ФАЙЛА. ЗАГРУЗКА ЗАКАНЧИ- ВАЕТСЯ. 58 НЕОПРЕДЕЛЕНА 59 ФАЙЛ НЕ ОТКРЫТ ОПЕРАТОР ВВОДА/ВЫВОДА ПРИМЕНЕН К ФАЙЛУ, КОТОРЫЙ НЕ БЫЛ ОТКРЫТ. 60 НЕОПРЕДЕЛЕНА 61 НЕОПРЕДЕЛЕНА 62 ОШИБОЧНОЕ ИМЯ УСТРОЙСТВА БЫЛО ИСПОЛЬЗОВАНО ОШИБОЧНОЕ ИМЯ УСТРОЙСТВА. (В ДАННОЙ ВЕРСИИ ЯЗЫКА ОТСУТСТВУЕТ). 63-255 НЕОПРЕДЕЛЕНЫ CTP. 84 207537 1.00100-01 35 ПРИЛОЖЕНИЕ 2 СПИСОК КОМАНД, ОПЕРАТОРОВ И ФУНКЦИЙ В ПРИЛОЖЕНИИ ПРИВОДЯТСЯ КОМАНДЫ, ОПЕРАТОРЫ И ФУНКЦИИ БЕЙСИК СИСТЕМЫ ( ВЕРСИЯ 24.07.1986), СГРУППИРОВАННЫЕ ПО НАЗНАЧЕНИЮ. МОДИФИКАЦИЯ ТЕКСТА ПРОГРАММЫ В ПАМЯТИ AUTO АВТОМАТИЧЕСКИ НУМЕРУЕТ СТРОКИ ПРИ ВВОДЕ ТЕКСТА ПРОГРАММЫ. DELETE УДАЛЯЕТ ГРУППЫ СТРОК ИЗ ТЕКСТА ПРОГРАММЫ. NEW УДАЛЯЕТ ВСЮ ПРОГРАММУ И ВЫПОЛНЯЕТ ОПЕРАТОР CLEAR. LIST ВЫВОДИТ ТЕКСТ ПРОГРАММЫ НА ЭКРАН. LLIST ВЫВОДИТ ТЕКСТ ПРОГРАММЫ НА ПЕЧАТАЮЩЕЕ УСТРОЙСТВО. RENUM ПЕРЕНОМЕРОВЫВАЕТ СТРОКИ ТЕКСТА ПРГОРАММЫ. . ПОЗВОЛЯЕТ РЕДАКТИРОВАТЬ СТРОКУ. ПОЗВОЛЯЕТ РЕДАКТИРОВАТЬ ПОСЛЕДНЮЮ ВВЕДЕННУЮ СТРОКУ. ХРАНЕНИЕ ПРОГРАММ НА МАГНИТНОЙ ЛЕНТЕ BLOAD ЗАГРУЖАЕТ С ЛЕНТЫ В ОПЕРАТИВНУЮ ПАМЯТЬ ДВОИЧНЫЕ КОДЫ. BSAVE ЗАПИСЫВАЕТ БЛОК ПАМЯТИ НА ЛЕНТУ В ДВОИЧНОМ КОДЕ. CLOAD ЗАГРУЖАЕТ ПРОГРАММУ С КАССЕТНОЙ МАГНИТНОЙ ЛЕНТЫ ВО ВНУТРЕННЕМ ФОРМАТЕ БЕЙСИК-СИСТЕМЫ. CSAVE ЗАПИСЫВАЕТ ПРОГРАММУ НА МАГНИТНУЮ ЛЕНТУ ВО ВНУТРЕННЕМ ФОРМАТЕ. CTP. 85 207537 1.00100-01 35 LOAD ЗАГРУЖАЕТ ПРОГРАММУ С ЛЕНТЫ ( ФОРМАТ ASCII ). SAVE ЗАПИСЫВАЕТ ПРОГРАММУ НА ЛЕНТУ ( ФОРМАТ ASCII ). MERGE ЗАГРУЖАЕТ ПРОГРАММУ (ФАЙЛ В ФОРМАТЕ ASCII) С КАССЕТНОЙ МАГНИТНОЙ ЛЕНТЫ И ОБ'ЕДИНЯЕТ ЕЕ С ПРОГРАММОЙ В ОЗУ. FIND ФИКТИВНОЕ ЧТЕНИЕ ИЛИ ПОИСК ФАЙЛА С УКАЗАННЫМ ИМЕНЕМ. ИНИЦИАЛИЗАЦИЯ СИСТЕМНЫХ ПЕРЕМЕННЫХ CLEAR ОЧИЩАЕТ ВСЕ ПЕРЕМЕННЫЕ, ЗАКРЫВАЕТ ФАЙЛЫ И Т.П. РЕЗЕРВИРУЕТ ПАМЯТЬ ПОД СИМВОЛЬНЫЕ ПЕРЕМЕННЫЕ, ОПРЕДЕЛЯЕТ ВЕРХНИЙ АДРЕС ОЗУ ДЛЯ БЕЙСИКА. KEY ПЕРЕОПРЕДЕЛЯЕТ ФУНКЦИОНАЛЬНЫЕ КЛАВИШИ. TRON ВКЛЮЧАЕТ РЕЖИМ ТРАССИРОВКИ. TROFF ВЫКЛЮЧАЕТ РЕЖИМ ТРАССИРОВКИ. КОМАНДЫ ВЛИЯЮЩИЕ НА ВЫПОЛНЕНИЕ ПРОГРАММЫ CONT ПРОДОЛЖАЕТ ВЫПОЛНЕНИЕ ПРОГРАММЫ ПОСЛЕ ОПЕРАТОРА STOP ИЛИ КЛАВИШИ "СТОП". RUN НАЧИНАЕТ ВЫПОЛНЕНИЕ ПРОГРАММЫ. MONIT ОСУЩЕСТВЛЯЕТ ПЕРЕХОД В РЕЖИМ МОНИТОРА МАШИНЫ. <ШАГ> ОСУЩЕСТВЛЯЕТ ШАГОВЫЙ РЕЖИМ ВЫПОЛНЕНИЯ ПРОГРАММЫ. LIN3 ОПРЕДЕЛЕНИЕ ПАРАМЕТРОВ СИСТЕМЫ CLEAR УСТАНАВЛИВАЕТ РАЗМЕРЫ ОБЛАСТИ ДАННЫХ ПОД СИМВОЛЬНЫЕ ПЕРЕМЕННЫЕ, ОЧИЩАЕТ ВСЕ ЗНАЧЕНИЯ ПЕРЕМЕННЫХ, УСТАНАВЛИВАЕТ ВЕРХНИЙ АДРЕС ПАМЯТИ, ДОСТУПНЫЙ СИСТЕМЕ. DIM ОПРЕДЕЛЯЕТ,РЕЗЕРВИРУЕТ ПАМЯТЬ И ИНИЦИАЛИЗИРУЕТ МАССИВЫ. DEF FN ОПРЕДЕЛЕНИЕ ПОЛЬЗОВАТЕЛЬСКИХ ФУНКЦИЙ. CTP. 86 207537 1.00100-01 35 DEF USR ОПРЕДЕЛЯЕТ СТАРТОВЫЕ АДРЕСА ПОЛЬЗОВАТЕЛЬСКИХ МАШИННЫХ ПОДПРОГРАММ-ФУНКЦИЙ. ОПЕРАТОРЫ,ИЗМЕНЯЮЩИЕ ЗНАЧЕНИЯ ПЕРЕМЕННЫХ FOR ОПЕРАТОР ЦИКЛА. МЕНЯЕТ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ ЦИКЛА. LET ОСНОВНОЙ ОПЕРАТОР ПРИСВОЕНИЯ НОВЫХ ЗНАЧЕНИЙ ПЕРЕМЕННЫМ. СЛОВО LET НЕ ОБЯЗАТЕЛЬНО. ЧИСЛОВЫЕ ФУНКЦИИ ABS( ) АБСОЛЮТНОЕ ЗНАЧЕНИЕ. ATN( ) АРКТАНГЕНС.РЕЗУЛЬТАТ ВЫДАЕТСЯ В РАДИАНАХ. CDBL( ) ПРЕОБРАЗОВАНИЕ РЕЗУЛЬТАТА ВЫРАЖЕНИЯ В ТИП ДВОЙНОЙ ТОЧНОСТИ. CINT( ) ПРЕОБРАЗОВАНИЕ РЕЗУЛЬТАТА ВЫРАЖЕНИЯ В ЦЕЛЫЙ ТИП. COS( ) КОСИНУС УГЛА,ЗАДАННОГО В РАДИАНАХ. CSNG( ) ПРЕОБРАЗОВАНИЕ РЕЗУЛЬТАТА ВЫРАЖЕНИЯ В ТИП ОДИНАРНОЙ ТОЧНОСТИ. EXP( ) ВОЗВЕДЕНИЕ Е В СТЕПЕНЬ. FIX( ) ОТБРАСЫВАЕТ ДРОБНУЮ ЧАСТЬ АРГУМЕНТА. FRE( ) РЕЗУЛЬТАТ В ЗАВИСИМОСТИ ОТ ТИПА АРГУМЕНТА - FRE ОБ'ЕМ СВОБОДНОЙ ОБЛАСТИ ПАМЯТИ (АРГУМЕНТ АПИФМЕТИЧЕСКИЙ ИЛИ ОТСУТСТВУЕТ) ИЛИ СВОБОДНОЙ ОБЛАСТИ ПАМЯТИ,ОТВЕДЕННОЙ ПОД СИМВОЛЬНЫЕ ПЕРЕМЕННЫЕ (АРГУМЕНТ СИМВОЛЬНЫЙ). INT( ) ОКРУГЛЯЕТ АРГУМЕНТ ДО ЦЕЛОГО ЧИСЛА,НЕ ПРЕВОСХОДЯЩЕГО АРГУМЕНТА. LOG( ) НАТУРАЛЬНЫЙ ЛОГАРИФМ. PI ЧИСЛО "ПИ". RND( ) ПСЕВДОСЛУЧАЙНОЕ ЧИСЛО. SGN( ) ФУНКЦИЯ ЗНАКА. SIN( ) СИНУС УГЛА,ЗАДАННОГО В РАДИАНАХ. CTP. 87 207537 1.00100-01 35 SQR( ) КВАДРАТНЫЙ КОРЕНЬ. TAN( ) ТАНГЕНС УГЛА,ЗАДАННОГО В РАДИАНАХ. СИМВОЛЬНЫЕ ФУНКЦИИ ASC( ) ПЕРЕВОДИТ СИМВОЛ В ЧИСЛОВОЙ КОД ASCII. BIN$( ) ПРЕОБРАЗОВАНИЕ ЦЕЛОГО ЧИСЛА В СТРОКУ, СОДЕРЖАЩУЮ ДВОИЧНОЕ ПРЕДСТАВЛЕНИЕ ЧИСЛА. CHR$( ) ПЕРЕВОДИТ ЧИСЛОВОЙ КОД ASCII В СИМВОЛ. HEX$( ) ПРЕОБРАЗОВАНИЕ ЦЕЛОГО ЧИСЛА В СТРОКУ, СОДЕРЖАЩУЮ 16-РИЧНОЕ ПРЕДСТАВЛЕНИЕ ЧИСЛА. LEN( ) ТЕКУЩАЯ ДЛИНА СИМВОЛЬНОГО ВЫРАЖЕНИЯ. MID$( ) ВЫБОР ЧАСТИ СИМВОЛЬНОГО ВЫРАЖЕНИЯ. MID$( )= ПРИСВОЕНИЕ РЕЗУЛЬТАТА СИМВОЛЬНОГО ВЫРАЖЕНИЯ ЧАСТИ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ. OCT$( ) ПРЕОБРАЗОВАНИЕ ЦЕЛОГО ЧИСЛА В СТРОКУ, СОДЕРЖАЩУЮ ВОСЬМЕРИЧНОЕ ПРЕДСТАВЛЕНИЕ ЧИСЛА. SPC( ) ФУНКЦИЯ, ВХОДЯЩАЯ В КОМАНДУ PRINT. ВЫВОДИТ УКАЗАННОЕ КОЛИЧЕСТВО ПРОБЕЛОВ. STRING$() ФОРМИРУЕТ СРОКУ ПОВТОРЯЮЩЕГОСЯ УКАЗАННОГО СИМВОЛА. STR$( ) ПРЕОБРАЗОВЫВАЕТ ЧИСЛО В СИМВОЛЬНУЮ СТРОКУ, СОДЕРЖАЩУЮ ЧИСЛО. TAB( ) ФУНКЦИЯ,ВХОДЯЩАЯ В КОМАНДУ PRINT. ВЫВОДИТ ПРОБЕЛЫ ДО УКАЗАННОЙ ПОЗИЦИИ. VAL( ) ПРЕОБРАЗУЕТ ЧАСТЬ СИМВОЛЬНОЙ ПЕРЕМЕННОЙ, СОДЕРЖАЩЕЙ ЦИФРЫ, В ЧИСЛО. ОПЕРАТОРЫ,УПРАВЛЯЮЩИЕ ВЫПОЛНЕНИЕМ ПРОГРАММЫ CALL ВЫЗОВ ВНЕШНИХ МОДУЛЕЙ ПЗУ. _ END ОКАНЧИВАЕТ ВЫПОЛНЕНИЕ ПРОГРАММЫ. FOR НАЧИНАЕТ ВЫПОЛНЕНИЕ ЦИКЛА. CTP. 88 207537 1.00100-01 35 GOSUB ВЫЗОВ ПОДПРОГРАММЫ. GOTO ПЕРЕХОД НА НОВУЮ СТРОКУ ПРОГРАММЫ. IF В ЗАВИСИМОСТИ ОТ ВЫПОЛНЕНИЯ УСЛОВИЯ ВЫПОЛНЯЕТСЯ ОДНА ИЗ ВЕТВЕЙ ОПЕРАТОРА IF. NEXT ОКАНЧИВАЕТ ЦИКЛ,НАЧАТЫЙ ОПЕРАТОРОМ FOR. RETURN ОКАНЧИВАЕТ ПОДПРОГРАММУ И ОСУЩЕСТВЛЯЕТ ВОЗВРАТ К СЛЕДУЮЩЕМУ ЗА GOSUB ОПЕРАТОРУ. ON ОПЕРАТОР ВЫБОРА, ВЫПОЛНЯЮЩИЙ БЕЗУСЛОВНЫЙ ПЕРЕХОД ИЛИ ВЫЗЫВАЮЩИЙ ПОДПРОГРАММЫ В ЗАВИСИМОСТИ ОТ ЗНАЧЕНИЯ ВЫРАЖЕНИЯ. STOP ВРЕМЕННО ПРИОСТАНАВЛИВАЕТ ВЫПОЛНЕНИЕ ПРОГРАММЫ И ВЫДАЕТ СООБЩЕНИЕ. ОПЕРАТОРЫ ИНИЦИАЛИЗАЦИИ ПЕРЕМЕННЫХ DATA ОПРЕДЕЛЯЕТ СПИСОК ВНУТРЕННИХ ДАННЫХ. READ ВВОД ДАННЫХ ИЗ ОПЕРАТОРОВ DATA В ПЕРЕМЕННЫЕ. RESTORE УСТАНАВЛИВАЕТ ВВОД С ОПРЕДЕЛЕННОГО ОПЕРАТОРА DATA. ОПЕРАТОРЫ КОММЕНТАРИЯ REM ОПЕРАТОР ДЛЯ КОММЕНТАРИЯ. ' ВЕСЬ ТЕКСТ В СТРОКЕ ПОСЛЕ ЭТОГО ЗНАКА РАССМАТРИВАЕТСЯ КАК КОММЕНТАРИЙ. РАБОТА С ПАМЯТЬЮ И РЕГИСТРАМИ ВНЕШНИХ УСТРОЙСТВ INP( ) ЧТЕНИЕ ДАННЫХ ПО МАСКЕ. OUT ЗАПИСЬ ДАННЫХ ПО МАСКЕ. PEEK( ) ЧТЕНИЕ ДАННЫХ ИЗ ПАМЯТИ. POKE ЗАПИСЬ ДАННЫХ В ПАМЯТЬ. USR( ) ВЫЗВОВ ПОЛЬЗОВАТЕЛЬСКОЙ ПОДПРОГРАММЫ-ФУНКЦИИ В МАШИННЫХ КОДАХ. CTP. 89 207537 1.00100-01 35 УПРАВЛЕНИЕ ЭКРАНОМ ДИСПЛЕЯ CLS ОЧИСТКА ЭКРАНА. COLOR ПЕРЕКЛЮЧЕНИЕ ЦВЕТА ФОНА И ТЕКУЩЕГО ЦВЕТА БУКВ. LOCATE ПЕРЕДВИГАЕТ КУРСОР,ВЫСВЕЧИВАЯ ИЛИ ПОГАШАЯ ЕГО. PRINT ВЫВОДИТ ДАННЫЕ НА ЭКРАН. ? ФУНКЦИИ УПРАВЛЕНИЯ КУРСОРОМ AT( ) ФУНКЦИЯ, ВХОДЯЩАЯ В КОМАНДУ PRINT.ПОМЕЩАЕТ КУРСОР В ПРОИЗВОЛЬНУЮ ПОЗИЦИЮ ЭКРАНА. CSRLIN( ) НОМЕР СТРОКИ, НА КОТОРОЙ НАХОДИТСЯ КУРСОР. CSRLIN ПАРАМЕТР ФИКТИВНЫЙ. POS( ) НОМЕР СТОЛБЦА, НА КОТОРОМ НАХОДИТСЯ КУРСОР. POS ПАРАМЕТР ФИКТИВНЫЙ. SPC( ) ФУНКЦИЯ, ВХОДЯЩАЯ В КОМАНДУ PRINT. ВЫВОДИТ УКАЗАННОЕ КОЛИЧЕСТВО ПРОБЕЛОВ. TAB( ) ФУНКЦИЯ, ВХОДЯЩАЯ В КОМАНДУ PRINT. ВЫВОДИТ ПРОБЕЛЫ ДО УКАЗАННОЙ ПОЗИЦИИ. ОПЕРАТОРЫ ГРАФИКИ CIRCLE РИСУЕТ ОКРУЖНОСТИ, ОВАЛЫ, ДУГИ. DRAW ВЫПОЛНЯЕТ СТРОКИ ГРАФИЧЕСКИХ КОМАНД. LINE ЧЕРТИТ ЛИНИИ И ПРЯМОУГОЛЬНИКИ. PAINT ЗАПОЛНЯЕТ ЗАМКНУТУЮ ОБЛАСТЬ ЛЮБЫМ ЦВЕТОМ. POINT( ) ДАЕТ НОМЕР ЦВЕТА УКАЗАННОЙ ТОЧКИ ЭКРАНА. PRESET ВЫКРАШИВАЕТ УКАЗАННУЮ ТОЧКУ В ЦВЕТ ФОНА. PSET( ) ВЫКРАШИВАЕТ УКАЗАННУЮ ТОЧКУ В УКАЗАННЫЙ ЦВЕТ. CTP. 90 207537 1.00100-01 35 УПРАВЛЕНИЕ ЗВУКОМ BEEP ВЫДАЕТ ЗВУКОВОЙ СИГНАЛ. РАБОТА С ФАЙЛАМИ ДАННЫХ CLOSE ЗАКАНЧИВАЕТ ОПЕРАЦИИ ВВОДА (ВЫВОДА) С ФАЙЛОМ НА МЛ. EOF ФУНКЦЯ ПРОВЕРКИ КОНЦА ВХОДНОГО ФАЙЛА НА МАГНИТНОЙ ЛЕНТЕ. INPUT# ВВОД ДАННЫХ ИЗ ФАЙЛА НА МАГНИТНОЙ ЛЕНТЕ. OPEN ИНИЦИАЛИЗАЦИЯ ОБМЕНА ДАННЫМИ С ФАЙЛОМ НА МЛ ДЛЯ ВВОДА (ВЫВОДА). PRINT# ВЫВОД ДАННЫХ В ФАЙЛ НА МАГНИТНОЙ ЛЕНТЕ. УПРАВЛЕНИЕ КЛАВИАТУРОЙ INKEY$ РЕЗУЛЬТАТ - ВВЕДЕННЫЙ СИМВОЛ ИЛИ ПУСТАЯ СТРОКА. INPUT ВВОДИТ СТРОКУ СИМВОЛОВ. ВЫВОД НА ПЕЧАТАЮЩЕЕ УСТРОЙСТВО LPRINT ПЕЧАТЬ ДАННЫХ НА ПЕЧАТАЮЩЕМ УСТРОЙСТВЕ. ОПЕРАЦИИ AND,OR,NOT,EQV,IMP,XOR ЛОГИЧЕСКИЕ ОПЕРАЦИИ ^, *, /, +, -, MOD, \ БИНАРНЫЕ АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ -, + УНАРНЫЕ АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ CTP. 91 207537 1.00100-01 35 + БИНАРНАЯ СИМВОЛЬНАЯ ОПЕРАЦИЯ (КОНКАТЕНАЦИЯ) =, <>, ><, <, >, <=, =<, =>, >= ЛОГИЧЕСКИЕ ОПЕРАТОРЫ ОТНОШЕНИЯ CTP. 92 207537 1.00100-01 35 ПРИЛОЖЕНИЕ 3 ТАБЛИЦА КОДОВ ASCII "ЭЛЕКТРОНИКИ БК 0010" ========================================================== 0 1 2 3 4 5 6 7 8 9 A B C D E F ========================================================== 0 СБР ПРО 0 @ Р ' ШАГ - Ю П ТАБ БЕЛ ---------------------------------------------------------- 1 ! 1 A Q ПОВТ К - -- А Я ** ---------------------------------------------------------- 2 " 2 B R ИСУ З # Б Р * ---------------------------------------------------------- 3 ГТ ! # 3 C S С - ! Ц С ---------------------------------------------------------- 4 ! $ 4 D T БЛР Ч = Д Т ---------------------------------------------------------- 5 -- % 5 E U ГРАФ - - Е У ---------------------------------------------------------- 6 -- & 6 F V ЗАП - !! Ф Ж ---------------------------------------------------------- 7 ЗБ -- / 7 G W СТИР = ! Г В ---------------------------------------------------------- 8 -- -- ( 8 H X = Х Ь ---------------------------------------------------------- 9 -- ) 9 I Y ТАБ СБР- - И Ы ** ---------------------------------------------------------- AВВОД ! * : J Z ГАШ - = Й З КУРСОРА * ---------------------------------------------------------- B ! + ; K [ 32/ - - К Ш 64 ---------------------------------------------------------- CСБР , < L \ РП ИНВС - = Л Э ---------------------------------------------------------- DУСТ - = M ] ИНВЭ ! = М Щ ТАБ ** ---------------------------------------------------------- EРУС . > N - УСТ - -- Н Ч ** ИНД * ---------------------------------------------------------- FЛАТ / ? O - ЗБ ПОДЧ !! О ** ========================================================== CTP. 93 207537 1.00100-01 35 П_Р_И_М_Е_Ч_А_Н_И_Е. * - КОДЫ ПЕРЕДАЮТСЯ С ДРАЙВЕРА КЛАВИАТУРЫ НА ДРАЙВЕР ТВ- ПРИЕМНИКА, МИНУЯ ВНЕШНЮЮ ПРОГРАММУ. ** - КОДЫ ИСПОЛЬЗУЮТСЯ ТОЛЬКО ДРАЙВЕРОМ КЛАВИАТУРЫ. CTP. 94 207537 1.00100-01 35 ПРИЛОЖЕНИЕ 4 ЗАРЕЗЕРВИРОВАННЫЕ В БЕЙСИК-СИСТЕМЕ СЛОВА ПРИВЕДЕННЫЕ В СПИСКЕ СЛОВА ЯВЛЯЮТСЯ КЛЮЧЕВЫМИ В БЕЙСИК-СИСТЕМЕ, ПОЭТОМУ ИХ НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ КАК ИМЕНА ПЕРЕМЕННЫХ. РЯДОМ УКАЗЫВАЕТСЯ СТРАНИЦА, ГДЕ ОПИСЫВАЕТСЯ ДАННОЕ СЛОВО. ABS BEEP AND BLOAD ASC BSAVE AT ATN AUTO CDBL COLOR CHR$ CONT CINT COS CIRCLE CSAVE CLEAR CSNG CLOAD CSRLIN CLS DELETE ELSE DIM END DRAW EOF EXP FIND GOSUB FIX GOTO FOR FRE HEX$ IF IMP INKEY$ INPUT INT KEY LEN LIST LLIST LOAD LOCATE LOG CTP. 95 207537 1.00100-01 35 LPOS MID$ NEW MOD NEXT MONIT NOT ON PAINT OR PEEK OUT PI POINT POKE POS PRESET PRINT PSET REM SAVE RENUM SGN RETURN SIN RND SQR RUN STEP STOP STR$ TAB VAL TAN THEN TO TROFF TRON XOR П_Р_И_М_Е_Ч_А_Н_И_Е. В БОЛЕЕ ПОЗДНИХ ВЕРСИЯХ БЕЙСИК-СИСТЕМЫ ЗАРЕЗЕРВИРОВАННЫХ СЛОВ МОЖЕТ БЫТЬ БОЛЬШЕ.