[an error occurred while processing this directive]
─PL70
─TM0
─HM2
─DH//-|P-//
│..................................................................<
─PE
5 Ключевые слова языка Бейсик BBC
Эта глава содержит детальное описание слов, которые Бейсик
"понимает". Такие слова называются "ключевыми". Из-за
ограниченного объема руководства, некоторые операторы, описанные
в других главах, здесь опущены.
Каждое описание состоит из нескольких частей:
|||/КЛЮЧЕВОЕ СЛОВО/|||
/Назначение/
Описание действия слова. Этот раздел предназначен для
изучающих Бейсик.
/Примеры/
Этот раздел содержит несколько примеров использования слова
(но не законченные программы).
|||/Описание/|||
В этом разделе слово описывается на нормальном компьютерном
жаргоне.
|||/Синтаксис/|||
Следующие символы используются для описания синтаксиса
ключевых слов:
{} обозначает возможность повторения содержимого скобок ноль
или больше раз.
[] обозначает возможность использования содержимого скобок.
| обозначает альтернативы, одна из которых должна быть
использована.
<num-const> обозначает численную константу, такую как "4.5"
или "127"
<num-var> обозначает численную переменную, такую как "X" или
"length"
<numeric> обозначает или <num-const> или <num-var>, или
комбинацию их в выражении, например: "4*X+6"
<string-const> обозначает символьную строку заключенную в
кавычки, например "GAVINMOUNT"
<string-var> обозначает символьную переменную, такую как A¤
или NAME¤
<string> обозначает или <string-const> или <string-var>, или
выражение, такое как A¤+"WOMBAT"
<testable condition> обозначает что-нибудь, принимающее
значение TRUE (истинно) или FASLE (ложно)
<statement> обознчает любой оператор Бейсика, например, PRINT
или GOSUB или PROC.
<variable name> обозначает последовательность букв или цифр,
которая соответствует правилам составления имен переменных.
─PE
|||/ ABS/||| абслоютное значение
/Назначение/
Эта функция преобразовывет отрицательные числа в эквивалентные
положительные, остабляя положительные числа без изменений.
Например абсолютное значение -9.75 есть 9.75, а абсолютное
значение 4.56 ест 4.56.
Функция ABS часто используется при вычеслении разницы между
двумя значениями если Вы не знаете, которе из них больше другого.
Так (K-L) будте положительным, если K больше чем L, и будет
отрицательным, если L больше K.
Например, если K=9 и L=12, то (K-L) будет равно -3. Однако
значение ABS(K-L) будет всегда положительным. В нашем примере
ABS(K-L) будет равно 3.
/Примеры/
205 error=ABS(DIFFERENCE)
100 DIFF=ABS(X20-X1)
PRINT ABS(temp%-50)
|||/Описание/|||
Функция возвращает абсолютное значение своего аргумента.
|||/Синтаксис/|||
<num-var>=ABS (<numeric>)
----------------------------------------------------------
─PE5
|||/ ACS/||| арккосинус
/Назначение/
Для вычисления угла по значеню его косинуса. Значение угла
возвращается в радианах. Для преобразования радиан в градусы
используйте функцию DEG.
/Примеры/
10 X=ACS(Y)
1205 angle=DEG (ACS(0.5678))
330 OUT=ACS(.234)
PRINT ACS (0.5)
|||/Описание/|||
Функция возвращает арккосинус от аргумента. Результат
представляется в радианах.
|||/Синтаксис/|||
<num-var>=ACS(<numeric>)
-----------------------------------------------------------
─PE5
|||/ ADVAL/||| преобразование аналогового значения в цифровое
/Назначение/
Аналоговый сигнал может принимать любые значения, включая
дробные. В это заключается его принципиальное отличие от
цифрового сигнала, который может принимать только дискретные
(фиксированные) значения. Вес воды в емкости - это аналоговое
значение, а количество судов в порту - дискретное.
Имеется два аналоговых входа в Агате, которые позволяют
преобразовывать аналоговое значение подключенного на вход
сопротивления в дискретное значение. Как правило в качестве
аналоговых устройств используются игровые пульты или джойстики.
Цифра в скобках после слова ADVAL указывает номер
опрашиваемого входа (1 или 2).
ADVAL(0) позволяет определять состояние кнопок на пультах. Для
этого надо выделить два младших бита возвращаемого значения
X=ADVAL(0) AND 3
после чего полученные значения будут иметь следющую
интерпретацию:
Х=0 ни одна из кнопок не нажата Х=1 нажата 1-я кнопка Х=2 нажата
2-я кнопка Х=3 нажаты обе кнопки
/Примеры/
980 X=ADVAL(2)
125 TEMP=ADVAL(X)
INTENSITY=ADVAL(1)
|||/Синтаксис/|||
<num-var>=ADVAL(<numeric>)
|||/Описание/|||
Функция, возвращающая значение аналогового входа. Имеется два
аналоговых входа дискретизируемых на 256 уровней. Однако
возвращаемое значение принимает значения от 0 до 65535 (т.е.
умноженное на 16).
-----------------------------------------------------------
─PE5
|||/ AND/|||
/Назначение/
AND может быть использована как логический оператор, или как
"по-битный" оператор.
Как логический оператор AND используется для определения
выполнени нескольких событий. Например
IF X=9 AND Y=0 THEN PRINT "HELLO"
Логический AND часто используется как часть конструкции
IF...AND...THEN...
Побитный AND сравнивает первый бит одного числа с первым битом
другого числа. Есле оба бита равны единице, первый бит
возвращаемого значения так же устанавливается в еденицу. Эта
операция повторяется для всех 32-х битов. Например результат 14
AND 7 равен 6, это хорошо видно из бинарного представления
операции
14 0000 0000 0000 0000 0000 0000 0000 1110
7 0000 0000 0000 0000 0000 0000 0000 0111
6 0000 0000 0000 0000 0000 0000 0000 0110
/Примеры/
300 IF length>9 AND wt>9 THEN PRINT "YES"
100 IF X=2 AND cost>5 AND J=12 THEN PRINT "NO!!"
В последнем примере NO!! напечтается только при выполнении
всех трех условий.
|||/Описание/|||
Операция логического "И".
|||/Синтаксис/|||
<num-var>=<numeric> AND <numeric>
<testable condition>=<testable condition> AND <testable
condition>
----------------------------------------------------------
─PE5
|||/ ASC/||| Американский Стандартный Код (ASCII)
/Назначение/
Имеется два широко используемых метода представления символов
(элементов типа А, Б, 5, ?, и т.д.). Для большинства это просто
символы! Так мы можем сказать, что D¤="H" означает "поместить
букву H в область памяти, помеченную D¤". Компьютер не может
поместить в память просто символ, так как он оперирует только с
байтами (т.е. с числами от 0 до 255). Вместо символа он помещает
число соответстующее сохраняемому символу ( символу H
соответствует число 72). Каждый символ имеет уникальное
соответствующее только иму значение, называемое ASCII кодом.
Иногда бывает нужно определить, какое значение соответствует
конкретному символу. Вы можете псмотреть требуемое значение в
конце этой книги или Вы можете сказать компьютеру
PRINT ASC("H")
Функция ASC возвращает код первого символа в строке аргумента.
Так
PRINT (ASC("Good")
возвращает 71, ASCII код символа "G".
Обратный процесс преобразования кода в символ выполняется
функцией CHR¤.
/Примеры/
25 X=ASC ("Today")
650 value5=ASC(A¤)
|||/Описание/|||
Функция возвращает ASCII код первого сивола строки аргумента.
Если строка пустая, возвращается значение -1.
|||/Синтаксис/|||
<num-var>=ASC(<string>)
----------------------------------------------------------
─PE5
|||/ ASN/||| арксинус
/Назначение/
Вычисление угла по синусу. Значение возвращается в радианах,
однако его можно перевести в градусы с помощью функции DEG. 1
радиан приблизительно равен 57 7градусам. Математики часто
предпочитают работать с радианами.
/Примеры/
340 J=ASN(0.3456)
30 angle=DEG(ASN(.7654))
PRINT ASN(.5)
|||/Описание/|||
Функция возвращает арксинус от аргумента. Резльтат
представляется в радианах.
|||/Синтаксис/|||
<num-var>=ASN(<numeric>)
----------------------------------------------------------
─PE5
|||/ ATN/||| арктангенс
/Назначение/
Вычисление угла по тангенсу. Значение возвращается в радианах,
однако его можно перевести в градусы с помощью функции DEG.
/Примеры/
1250 X=ATN(Y)
240 value=DEG(ATN(2.31))
|||/Описание/|||
Функция возвращает арктангенс от аргумента. Результат
представляется в радианах
----------------------------------------------------------
─PE5
|||/ AUTO/||| автоматический
/Назначение/
При вводе программы на Бейсике в память компьютера первая
строка как правило имеет номер 10, вторая - номер 20 и т.д. Чтобы
не вводить номера строк в ручную используется команда AUTO,
которая нумерует строки автоматически. По умолчанию AUTO
присваивает первой строке номер 10, следующим 20, 30, 40 и т.д.
Команда AUTO 455 присвоит первой строке номер 455, затем 465,
475, 485 и т.д.
Другой параметр позволяет пользователю задавть шаг нумерации,
который по умолчанию равен 10. Таким образом команда AUTO 465,2
будет нумеровать строки 465, 467, 469, 471 и т.д. Максимальный
размер шага равен 255.
Для прекравщения автоматического ввода пользователь должен
нажать клавишу РЕД. Режим автоматического ввода прерывается, если
компьютер пытается сгенерировать строку с номером больше 32767.
/Примеры/
AUTO
AUTO 220
AUTO 105,5
|||/Синтаксис/|||
AUTO[<num-const>[,<num-const>]]
|||/Описание/|||
AUTO - это команда, позволяющая пользователю вводить строки
программы не нумеруя их. Так как AUTO - команда, она не может
использоваться в составной строке. Режим AUTO прерывается при
нажатии клавиши РЕД или при достижении строки превышающей 32767.
AUTO может иметь два параметра. Первый параметр указывает
номер первой строки, а второй параметр указывает шаг нумерации
строк.
----------------------------------------------------------
─PE5
|||/ BGET#/||| взять байт из файла
/Назначение/
Числа и слова могут быть записаны на дискетте. Функция BGET#
позволяет считывать одиночные символы или числа в память
компьютера с дискетты или по локальной сети. Перед использованием
этого оператора необходимо открыть файл с помощью оператора
OPENIN, в противном случае будет выдано сообщение об ошибке.
Когда файл открыт оператором OPENIN для обращения к файлу
выделяется уникальный номер. Этот номер используется во всех
последующих операциях с открытым файлом, например прич чтении или
при записи в новый файл.
/Примеры/
6000 character=BGET# (channel)
340 next_letter%=BGET#C
|||/Описание/|||
Функция, берущая байт из открытого ранее файла. Аргумент
функции является номером открытого файла.
|||/Синтаксис/|||
<num-var>=BGET#<num-var>
-----------------------------------------------------------
─PE5
|||/ BPUT#/||| поместить байт в файл
/Назначение/
Для сохранения байта на дискетте. Число, помещаемое в файл
должно иметь значение от 0 до 255. Если вы попытаетесь поместить
в файл число, превышающее 255, из него будет вычитаться значение
256 до тех пор, пока разность не станет меньше 256. Полученный
результат будет помещен в файл. (Этот оператор предназначен толко
бля сохранения байтов - небольших чисел. Для больших и
отрицательных чисел используйте оператор PRINT#.) Также, как и дл
BGET# файл должен быть педварительно открыт, но оператором
OPENOUT.
/Примеры/
30 BPUT# channel,number
700 BPUT#N,32
450 BPUT# STAFF_FILE,A/256
|||/Описание/|||
Оператор, который помещает байт в файл. Аргумет является
номером файл. Файл необходимо предварительно открыть.
|||/Синтаксис/|||
BPUT#<num-var>, <numeric>
----------------------------------------------------------
─PE5
|||/ CALL/||| передача управления машинной подпрограмме
/Назначение/
Этот оператор приказывает компьютеру выполнить фрагмент
машинного кода, который пользователь предварительно поместил в
память. Прежде чем воспользоваться этим мощным средством, Вы
должны хорошо разобраться в принципах работы компьютера и
программировании на ассемблере, так как некорректное использоваие
этого оператора может не только уничтожить Вашу программу, но и
"завесить" компьютер. К сожалению, из-за ограниченного размера
данного руководства здесь не приводится подробное описание на
ассемблере. Однако в руководстве "Программирование на Ассемблере
в среде ОС ОНИКС" приведена информация по программированию на
ассемблере специфичная для этой версии Бейсика. Для изучения
ассемблера рекомендуется изучить соответствующую документацию
ПЭВМ АГАТ; описание "Диалоговый Отладочный Комплекс (ДОК)
программной системы "Школьница" для ПЭВМ "АГАТ"" (автор
В.А.Цикоза); книгу "Язык Ассемблера для персонального компьютера
ЭПЛ" (автор У.Морер), а также другую литературу по
программированию процессора 6502.
/Примеры/
50 rotate=&0270
60 CALL rotate,J,K,L
200 CALL 1234,A¤,M,J¤
|||/Описание/|||
Оператор обращения к машинной подпрограмме. Число параметров
переменно, и может быть равно нулю. Прараметры являются
переменными, и могут быть изменены в процессе выполнения
подпрограммы. Адреса параметров передаются в Блоке Параметров
начинающегося с &600.
При входе в подпрограмму регистрам процессора A, X, Y,
присваиваются значения младших значащих байт переменных A%, X% и
Y%. Флаг переноса устанавливается в ссответствии с состоянием
младшего значащего бита переменной C%.
Перед вызовом подпрограммы компьютер создает Блок Параметров,
содержащий следующие данные:
Количество параметров - 1 байт
адрес 1-го параметра - 2 байта
тип 1-го параметра - 1 байт
адрес 2-го параметра - 2 байта
тип 2-го параметра - 1 байт
.................... - .......
адрес N-го параметра - 2 байта
тип N-го параметра - 1 байт
|||/Типы параметров/|||
0- 8 бит байт (например ?X)
4- 32 бит целая переменная (например !X или X%)
5- 40 бит число с плавающей запятой (например V)
128- Строка с заданным адресом (например ¤X-оканчивающаяся
&0D)
129- Символьная переменная (например A¤)
В случае символьной переменной адрес параметра содержит адрес
Информационного Блока Строки, который содержит стартовый адрес,
количество выделенных байт и текущую длину строки.
|||/Синтаксис/|||
CALL <numeric>,{,<num-var>|<string-var>}
-----------------------------------------------------------
[an error occurred while processing this directive]