[an error occurred while processing this directive]

232

39 Краткое изложение ключевых слов и операторов.

------------------------------------------------

Эта глава содержит следующие секции:

- Подопределенные элементы для синтаксических схем

- Операторы присваивания := :+ :-

- Арифметические операторы + - * / Ч

- Операторы отношений = < > IN

- Опредилители подстрок (:)

- Шестнадцатиричные операторы & -

- Косвенные операторы ? !

- Делимитеры комментариев //

за ними приведен полный алфавитный перечень ключевых слов.

****************************************************************

233

Подопределенные элементы синтаксических схем

Эта секция содержит определения всех подопределенных элементов, используемых в синтаксических схемах в качестве основных элементов, которые могут быть введены с клавиатуры.

Эти элементы приводятся в алфавитном поряке.

В синтаксических схемах используются следующие обозначения:

             указывает, что элемент является ключевым
             словом, за которым должен седовать не 
             алфавитно-цифровой символ.
             указывает, что это подопределенный элемент.

    или      указывает, что это основной элемент.

   элемент   указывает, что если элемент опущен  при вводе,
             то он будет вставлен автоматически.

   элемент   указывает, что необходимо ввести n элементов,
             разделенных запятыми.

двоичный оператор

постоянная

число число число

конец строки (eol)

символ

****************************************************************

234

 определитель файлов
     файл    логическое выражение    логическое выражение
имя файла

          строчное выражение

         любой символ
        за исключением
         "," или " "

головное дополнение
        определитель  S  OF   логическое выражение

        определитель  #                              закрыто

        REF     определитель    

определитель

                        буква
   буква                определитель
                        цифра

логическое выражение
                     логический оператор
                     числовое выражение

       строчное выражение           срочное выражение

****************************************************************

235

логический оператор 
    AND             OR           EOR

номер
        цифра
список номеров

          номер            номер
          номер
числовой элемент
    определитель        список параметров
  числовые переменные
  постоянные
  VAL
  LEN                   строчный элемент
  ORD
  системная функция
  стандартная функция

                       числовой элемент


                       логическое выражение

****************************************************************

236

числовое выражение
              двоичный оператор
              числовой оператор

числовой список

      логическое выражение    логическое выражение

числовая переменная

  определитель                 логическое выражение
  системная переменная

****************************************************************

237

простой оператор

Синтаксически правильная версия любого из седующих ключевых слов или элементов будет полноценным простым оператором.

 CLEAR    CLG    CLOSE    CLS
 COLOUR   DELETE DRAW  ENVELOPE
 EXEC     GCOL   GOTO    INPUT
 MOVE     NEW    NULL    OPEN
 OSCLI    PLOT   PRINT   READ
 RESTORE  RETURN RUN    SELECT 
                        OUTPUT
 SOUND    VDU    WRITE

     символ

   eol

определитель
                        логическое выражение
логическое выражение    логическое выражение

  пробел                логическое выражение

****************************************************************

238


стандартная функция






строчная переменная
            символ

строчный элемент

    GET¤
  строчная переменная
  идентификатор        список параметров
  строчная постоянная
  INKEY¤
  STR¤                 числовой элемент
  CHR¤

  строчное выражение

строчное выражение
  строчный элемент   определитель

****************************************************************

239


строчная переменная

  индентификатор    логическое выражение

системная функция



POINT(    логическое выражение   логическое выражение

RND       логическое выражение   логическое выражение

системная переменная



список пременных

   числовая переменная

   строчная переменная

****************************************************************

240

:= :+ :- Операторы присваивания

Описание

Эти операторы используются для присваивания величин числовым и системным переменным, содержанию определенных местоположений памяти, и (только := :+) для присваивания строк к строчным переменным.

:= используется для присваивания выражения, слудующего за ним, переменной, предшествующей ему. Символ : является оптимальным при вводе и, будучи опущенным, автоматически вставляется.

:+ используется с числовыми переменными для сложения величины выражения, седующего за ним, и существующей величины переменной, и для присваивания результата переменной. Со строчными переменными он используется для добавления строчного выражения, седующего за ним, к концу текущего сдержания переменной. Он не может быть использован с подстрокой слева от символа присваивания.

:- используется только с числовыми переменными. Он берет величину выражения, следующего за ним, и вачитает ее из текущей величины переменной. Результат присваивается переменной.

Обратите внимание что, например:

a :+ b AND c эквивалентно a:= + (b AND s), а не

a := (a + b) AND c

Ссылки

Секции 3.2, 6.7, 6.8 и таблица предшествования (40.6).

Синтаксис

числовая переменная    числовая переменная     логическое выражение

    числовой элемент
                           eol
    числовой элемент
    срочная переменная    строчное выражение 

****************************************************************

241

Примеры (смотрите также секции 6.7 6.8)

a:= number1 * number2
b# := a / d
c¤ := message¤
mode := 6

d(i#) :+ i#
e¤(2) :+ "end of string"
f :+ g ^ 2

g :- 17.5 * const1
h(6) :- d(4) * 6
?x :- 1

****************************************************************

242

+ - * / Ч Арифметические операторы

Описание

Ниже приведены стандартные арифметические операторы.

+ является или бинарным оператором, который возвращает результат от сложения двух операндов, или еденичным оператором, указывающим, что следующий аргумент не должен менять свой знак.

- является или бинарным оператором, который возвращает результат вычитания второго операнда из первого, или единичным оператором, указывающим, что следующий аргумент должен изменить свй знак (т.е. быть умноженным на -1).

* является бинарным оператором, который возвращает результат умножения двух операндов.

/ является бинарным оператором, который возвращает результат деления первого операнда на второй.

^ является бинарным оператором, который возвращает результат возвидения во вторую степень. Обратите внимание что, например, 2^3^4 это (2^3)^4.

Известная проблема

В первом выпуске Комала символ (/), за которым следует точка (.)воспринимается, как краткая форма отделителя комментария. При делении на постоянную от 0 до 1 необходимо перед десятичной точкой поместить или пробел, или нуль.

Ссылки

Секции 2.4, 2.7 и таблица предшествования (40.6)

Синтаксис

Смотрите числовой элемент, постоянную, двоичный оператор.

Примеры

twenty_three := 3 + 4 + 5
minus_seventeen := 30.4 - 11.85 * 2 ^ 2
twentu?five := 5 * 20 / 4
plus?one := -1 ^ 4

****************************************************************

243

= <> IN Операторы отношения

Описание

Это бинарные операторы, используемые при определении логического отношения, которое возвращает или истинный, или FALSE результат. Они могут быть использованы или по одному, или парами.

Обратите внимание, что true (истинный) означает не FALSE (т.е. не нуль), тогда как TRUE имеет величину -1.

= возвращает TRUE, если два операнда оцениваются, как равные числам или идентичным строкам, в противном случае - FALSE (остерегайтесь ошибок округления).

< сравнивает величины числовых выражений или коды ASCII строчных символов. С числовыми выражениями < возвращает TRUE, если первое выражение оценено меньшей величиной, чем вторая, и в иных случаях FALSE. Со строками эти два операнда оцениваются и сравниваются буква за буквой, пока коды ASCII двух символов не будут разными. Если код символа в первй строке ниже, чем во второй строке, тогда < возвращает TRUE, иначе он взвращает FALSE. Если конец одной строки достигается прежде, чем обнаруживается какое-либо различие, то принимается, что более короткая строка имеет более низкий код ASCII.

<= сравнивает два операнда и возвращает TRUE, если первый меньше или равен второму, в противном случае - FALSE. Полученный результат будет противоположным результату, возвращаемому >.

> сравнивает два операнда таким же образом, как и в случае с <, но возвращает TRUE, если первое выражение больше, чем второе, а в противном случае - FALSE. Он возврашает результат противоположный результату <=.

>= савнивает два операнда и возвращает TRUE, если первый больше, чем второй. Полученный результат будет противоположным, возвращаемому <.

<> возвращае TRUE, если два операнда не являются равными числами (или идентичными строками), и FALSE в противном случае. Результат будет противоположным результату, возвращаемому =.

IN используется как оператор отношений для сравнения двух строковых операндов. Если первая строка появляется во второй строке, то IN возвращает ее позицию (что считается результатом TRUE), а если нет, то - FALSE. Подробное описание можно найти в секции IN в кратком изложении ключевых слов.

Ссылки

Секции 15.2, 15.3, 25.4 и таблица предшествования (40.6).

****************************************************************

Синтаксис

Смотрите логический оператор, логическое выражение, WHEN.

Примеры (смотрите также главу 15, IN и все примеры условных структур)

   100 IF x < 0 THEN PRINT "Negative"
   150 WHEN >= 5, <= 10
    95 UNTIL repeat¤ <> "Yes"

****************************************************************

245

(:) Спецификаторы подсрок

Описание

С помощью операторов подстрок можно производить действия с частями строки или строчного выражения.

Подстрока определяется пдачей срочного идентификатора (который может быть элементом строки или строчного массива, или строчным выражением), за которым следует выражение в форме (start:finish), где start и finish являются положениями первого и последнего символов подстроки в строке. Любой из определителей можно опустить и они будут приниматься по умолчанию в начале и конце строки соответственно.

С положительными аргументами позиция считается от начала строки (первый символ на позиции 1).

С отрицательными аргументами позиция считается от конца строки к началу (последний символ на пзиции -1).

Если первая позиция находится за второй, подстрока возвращается , как нулевая строка.

Присваивания подстрокам могут или уменьшить длину пдстроки, или оставить ее без изменений. Увеличить подстроку невозможно. Если предпринимается попытка сделать это, то так как строка присваивается подстроке, она усекается справа до тех пор, пока она не становится такой же длины.

Обратите внимание, что подстроки с одним символом (напр. a¤(x:x) могут быть определены только одиночной величиной в скобках (напр. a¤ (x), но перед скобками необходимо оставить пробел, чтобы не спутать со строчными массивами.

Ссылки

Глава 29

Синтаксис

                           логическое выражение
   логическое выражение    логическое выражение
 пробел                    логическое выражение
****************************************************************
Примеры (смотри также главу 29)
PRINT a¤(3:6)
  200 b¤ :+ a¤(-6:-3)
  315 c¤ := (" " + d¤)(-6)
  400 UNTIL a¤ (1) = "Y"
  500 a¤(1:3) := "HI" // reduce length of substring
  600 d¤ := a¤(x:y)(2:3)
****************************************************************

247 & Шестнадцатиричные операторы

Описание

Эти операторы применяются, когда числа используются в их шестнадцатиричной форме.

& непосредственно предшествует числовой постоянной, чтобы указывать, что она выражена в шестнодцатиричном счислении. Число в этом сучае используется точно так же, как и любое другое.

используется перед числовым элементом, чтобы указывать, что число должно быть выражено как строка в шестнадцатиричной форме.

Обратите внимание, что оба оператора имеют наивысшее предшествование.

Ссылки

Таблица предшествования

Синтаксис

Смотри числовой элемент, строчное выражение.

Примеры (смотри также главу 34)

PAGE := &1A00

PRINT FREE

ffffff¤ := (-1)

zero¤ := 0,1

****************************************************************

248

? ! Косвенные операторы

Описание

Эти операторы используются для прямого чтения и письма в определенных размещениях памяти.

? работает на одиночном байте. ?х означает "содержание размещения памяти х". Он может быть использован для чтения сдержания этого размещения (PRINT ?х) или установки сдержания (?х := y).

! работает на четырех последовательных байтах: на одном, указанном аргументом и трех последующих. Четыре байта - это объем памяти для хранения целой переменной, поэтому оператор может использоваться для действий с ними. Самый незначительный байт целой переменной хранится в байте, указанном аргументом, а другие байты хранятся в порядке возрастания их значимости, т.е. самый значительный байт хранится в размещении с наивысшим числом.

Кроме того, эти операторы могут быть использованы, как бинарные операторы (с переменными или постоянными, как операнды). Например, х?8 воспринимается, как содержание (размещения памяти х +8).

Ссылки

Таблица предшествования (40.6)

Синтаксис

Смотри числовой элемент, двоичный оператор, аргумент.

Примеры

PRINT ?&3000

   35 !y := i#
  100 FOR i#:= 0 TO 16 DO PRINT  (x+i#), (x?i#)

****************************************************************

249

// Комментарий //

Описание

// используется перед комментарием в программе. Все симвволы между // и концом строки интерпретатором игнорируются.

Комментарий можно поместить на отдельной програмной строке или в конце значимой програмной строки, но не после: DELETE LOAD SAVE SELECT OUTPUT или команд операционной системы.

Ссылки

Секция 5.12.

Синтаксис

   //        любой символ

Пример

  100 x_coord:=640; y_coord:=512 // centre of screen

****************************************************************

250

ABS Абсолютная величина AB.

Описание

Эта функция возвращает абсолютную величину своего аргумента. Например, абсолютная величина -3.67 это 3.67, а абсолютная величина 1.72 это 1.72

Ссылка

Секция 18.6

Синтаксис

  ABS    числовой элемент

Примеры

print abs (SPEED# - 30)
   10 size _of_offset := ABS (reading - referense_value)
  120 four := ABS (-2) + 2

Ассоциируемые ключевые слова

SGN

****************************************************************

251

ACS Арккосинус AC.

Описание

ACS возвращает принципиальную величину угла, косинус которого является аргументом. Возвращенная велична в радиантах в пределах от 0 до PI. Для перевода величины в градусы можно использовать DEG.

Ссылка

секция 33.1.

Синтаксис

  ACS   числовой элемент

Примеры

PRINT ACS (0.5)
   35 angle_in_degrees := deg (acs (0.3))

Ассоциируемые ключевые слова

ASN ATN SIN COS TAN RAD DEG

****************************************************************

52

ADVAL Аналог величины цифрового конвертера AD.

Описание

ADVAL выполняет три различные функции в зависимости от того, является ли следующий за ней аргумент положительным, равным нулю, или отрицательным.

С аргументами в пределах от 1 до 4 ADVAL возвращает самую последню обращенную величину аналога в цифровой канал с этим числом. Возвращенное число имеет 8 битное разрешение, но шкалировано на 16 бит (т.е. имеет пределы от 0 до 65520 с шагом 256).

ADVAL (0) можно использовать, чтобы указывать на то, какие кнопки нажимаются в игре, а также указывать, какой канал A-D завершил обращение последним. Информация может быть определена следующм образом:

(ADVAL (0)) AND 3 возвращает 0, если не нажимается ни одна из клавиш, 1, если нажимается первая кнопка на, 2, если нажимается вторая кнопка или 3, если нажимаются обе кнопки.

ADVAL (0) DIV 256 возвращает число последнего канала A-D, завершившего обращение, 0 указывает, что ни один канал этого еще не сделал.

С отрицательными аргументами ADVAL используется для определения, до какой степени заполнены внутренние буферы.

ADVAL (-1) возвращает число символов в буфере клавиатуры.

ADVAL (-2) возвращает число символов в входном буффере RS232.

ADVAL (-3) возвращает число свободных позиций в выходном буфере RS232.

ADVAL (-4) возвращает число свободных позиций в выходном буфере принтера.

ADVAL (-5) возвращает число свободных позиций в буфере звукового канала 0.

ADVAL (-6) возвращает число свободных позиций в буфере звукового канала 1

ADVAL (-7) возвращает число свободных позиций в буфере звукового канала 2.

ADVAL (-8) возвращает число свободных позиций в буфере звукового канала 3.

ADVAL (-9) возвращает число свободных позиций в речевом буфере.

Ссылки

Секция 33.3 и руководство "Программирование на Бейсике в среде ОС ОНИКС"

****************************************************************

253

Синтаксис

   ADVAL    Числовой элемент

Примеры (также смотрите руководство "Программирование на Бейсике в среде ОС ОНИКС")

PRINT ADVAL 2
   100 *FX 2 1
   105 // line 100 takes input from RS232
   110 REPEAT
   120   message¤ :+ get¤
   130 UNTIL ADVAL (-2) = 0
   140 *FX 2
   145 // line 140 returns to keyboard input

Ассоциируемое ключевое слово

SOUND (звук)

****************************************************************

254

AND            AN.

Описание

AND - это логический оператор, который выполняет AND в двоичном представлении на двух операндах, т.е. он рассматривает каждый бит двоичного представления двух операндов по очереди и для каждого из нх устанавливает соответсствующий результирующий бит на 1, если устанавливаются оба, или на 0 в противном случае (давая 32 битное число).

Ссылка

Секция 21.2.

Синтаксис

  логическкое выражение  AND  логическое выражение

Примеры

   210 IF a<>FALSE AND b<>FALSE THEN
   220   PRINT "Both a and b"
   230 ELSE
   240   PRINT "At least one iz false"
   250 END IF

Ассоциируемые ключевые слова

OR NOT EOR

****************************************************************

255

APPEND           AP.

Описание

APPEND - это определяющее ключевое слово, используемое при открытии файла, который уже существует, для последовательной записи начиная с текущего конца этого файла.

Ссылки

Секции 32.10 и OPEN

Синтаксис

Смотри OPEN

Примеры (также смотри OPEN)

OPEN FILE 1,name¤,APPEND

Ассоциируемое ключевое слово

OPEN

****************************************************************

256

ASN  Арксинус          AS.

Описание

ASN возвращает главную величину угла, чей синус является аргументом. Величина возвращается в радиантах в пределах OT -PI/2 до + PI/2. Для перевода этой величины в градусы можно использовать DEG.

Ссылки

Секция 33.1.

Синтаксис

   ASN    числовой элемент

Примеры

PRINT ASN (-0.7)

   45 phase_shift := ASN (value_when_reference_zero)

Ассоциируемы ключевые слова

ACS ATN SIN COS TAN RAD DEG

****************************************************************

257

ATN  Арктангенс         AT.

Описание

ATN возвоащает главную величину угла, чей тангенс является аргументом. Величина в радиантах в пределах от

-PI/2 до +PI/2. Для перевода величины в градусы можно использовать DEG.

Ссылки

Секция 33.1.

Синтаксис

   ANT      числовой элемент

Примеры

PRINT ANT (-1)

   25 angle := ANT slope

Ассоциируемые ключевые слова

ACS ASN SIN COS TAN RAD DEG

****************************************************************

258

AUTO     Автоматическая нумерация строк   А.

Описание

Эта команда выполняет ввод программы с клавиатуры, автоматически генерируя номер следующей строкпосле каждого нажатия клавиши RETURN. AUTO нельзя использовать как часть програмной строки.

Можно использовать два аргумента, первый определяет номер начальной строки, а второй - исплользуемый инкремент. Если оба аргумента опускаются, то принимаются по умолчанию равными 10.

Если на вводимой строке обнаружена синтаксическая ошибка, то AUTO повторяет номер.

Из режима AUTO можно выйти, нажав клавишу РЕД, или присвоив номер строки больше, чем 32767.

Ссылки

Секция 5.11

Синтаксис

AUTO 100,20
AUTO 100
AUTO ,20

Ассоциируемые ключевые слова

RENUMBER

****************************************************************

259

CASE              CA.

Описание

Это декларативный оператор для структуры многократного выбора CASE.

Аргумент, стоящий после оператора CASE, оценивается и используется для выбора одного из блоков операторов на последовательных строках, о которых заявлено с помощью WHEN или OTHERWISE. Чтобы найти, какой блок должен быть выполнен, аргумент проверяется с каждым из выражений в условных блоках WHEN по очереди, пока не будет найдено истинное отношение. Выполняется блок операторов между этим условным блоком WHEN и следующим элементом структуры (WHEN, OTHERWIZE или END CASE), после чего программа продолжается со строки, следующей за оператором END CASE.

Если в условных блоках WHEN для аргумента соответсвие не найдено, то выполняетс условный блок, следующий за OTHERWISE, если он присутствует. Если оператор OTHERWISE отсутствует, то CASE не удовлетворяется и выполнение продолжается после оператора END CASE.

Обратите внимание, что всегда выполняется только один блок операторов. Это ближайший к верхней части структуры блок, который удовлетворяет селектор CASE.

В конце строки CASE вставляется оператор OF, так как это требует языковое определение. При вводе он необязателен.

Ссылки

Глава 25

Синтаксис
      логическое выражение
CASE                      OF eol
      строчное выражение

****************************************************************

260

Примеры (также смотри главу 25)

   10 CASE MODE OF
   20 WHEN 0,3
   30   max_col := 79
   40 WHEN 2,5
   50   max_col := 19
   60 OTHERWISE
   70   max_col := 39
   80 END CASE

Ассоциируемые ключевые слова

WHEN OTHERWISE END CASE

****************************************************************

61

CHR¤  Строка символов    СН.

Описание

CNR¤ это строчная функция, требующая одиночный числовой аргумент. Она возвращает строку одиночного символа, который является символом ASCII, соответствующим наименее значительному байту числового аргумента.

CHR¤ необходима при построении строки, содержащей символы, которых нет на клавиатуре (напр. CHR¤ (10), перевод строки). Следует отметить, что часто для контрольных кодов вывода на экран, или для других выводов проще использовать VDU.

Ссылки

Секция 7.6 и таблица кодов ASCII (40.1)

Синтаксис

  CHR¤    числовой элемент

Примеры

message¤ := CHR¤ (7) + text¤ // CHR¤ (7) = "sound bell"
   10 his := CHR¤ (34) + hi¤ + CHR¤ (34) // add quotes

Ассоциируемые ключевые слова

ORD VDU VAL STR¤
[an error occurred while processing this directive]