[an error occurred while processing this directive]
.сс
.шп6;
:= :+ :- .шп14;
Операторы присваивания
.шп2
Описание
.шп0
Эти операторы используются для присваивания величин числовым и системным переменным, содержанию определенных местоположений памяти, и (только := :+) для присваивания строк к строчным переменным.
:= используется для присваивания выражения, следующего за ним, переменной, предшествующей ему. Символ : является необязательным при вводе и, будучи опущенным, автоматически вставляется.
:+ используется с числовыми переменными для сложения величины выражения, седующего за ним, и существующей величины переменной, и для присваивания результата переменной. Со строчными переменными он используется для добавления строчного выражения, следующего за ним, к концу содержимого переменной. Он не может быть использован с подстрокой слева от символа присваивания.
:- используется только с числовыми переменными. Он берет величину выражения, следующего за ним, и вычитает ее из текущей величины переменной. Результат присваивается переменной.
Обратите внимание что, например:
a :+ b AND c эквивалентно a := a + (b AND c), а не
a := (a + b) AND c
.шп2
Ссылки
.шп0
Секции 3.2, 6.7, 6.8 и таблица предшествования (40.6).
.шп2
Синтаксис
.шп0
┏═┓ ╔╣+╠╗ |┗═┛| ╔╣ ╠╗ ||┏═┓|| ┏═┓ |╚╣═╠╝| ╔╣?╠╗ | ┗═┛ | ╔═══════════╗ |┗═┛↓╔═══════════╗ ┏═┓| ┏═┓ ↓╔═════════╗ ╔╣числ. пер-я╠╦╣ ╠╣числ. пер-я╠╦╦╣:╠╩╦╣=╠═╩╣лог.выр═е╠→╗ |╚═══════════╝||┏═┓↑╚═══════════╝↑|┗═┛ ↑┗═┛ ╚═════════╝ | | |╚╣!╠╝ |╚═*══╝ | | | ┗═┛ | | | ╚═════════════════→╣ | ╦╣┏═┓ ╔════════════════╗ | | |╠╣?╠══╣числовой элемент╠════════→╣ | ||┗═┛ ╚════════════════╝ | | ||┏═┓ ╔════════════════╗ | | |╠╣!╠══╣числовой элемент╠════════→╝ | ||┗═┛ ╚════════════════╝ | || ╔══*══╗ | || ╔════════════════╗|┏═┓ ↓┏═┓ ╔══════════════╗ | |╚═════╣ строчная пер-я ╠╩╣:╠╦→╩╣=╠╦╣строчное выр═е╠═════→╣ | ╚════════════════╝ ┗═┛| ┗═┛↑╚══════════════╝ | | | ┏═┓| | | ╚══╣+╠╝ | | ┗═┛ | | ╔═════════════════════╝ | ┏═┓ ↓ ╔═════╗ ╚══════════════╣;╠════════←═════════╩═══════→═══════╣ eol | ┗═┛ ╚═════╝
.шп2
Примеры (смотрите также секции 6.7 6.8)
.шп0
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
.шп6;
+ - * / ^ .шп14;
Арифметические операторы
.шп2
Описание
.шп0
Ниже приведены стандартные арифметические операторы.
+ является или бинарным оператором, который возвращает результат от сложения двух операндов, или единичным оператором, указывающим, что следующий аргумент не должен менять свой знак.
- является или бинарным оператором, который возвращает результат вычитания второго операнда из первого, или единичным оператором, указывающим, что следующий аргумент должен изменить свой знак (т.е. быть умноженным на -1).
* является бинарным оператором, который возвращает результат умножения двух операндов.
/ является бинарным оператором, который возвращает результат деления первого операнда на второй.
^ является бинарным оператором, который возвращает результат возвидения в степень. Обратите внимание что, например, 2^3^4 это (2^3)^4.
.шп2
Известная проблема
.шп0
В первой версии Комала символ (/), за которым следует точка (.) воспринимается, как краткая форма отделителя комментария. При делении на постоянную от 0 до 1 необходимо перед десятичной точкой поместить или пробел, или нуль.
.шп2
Ссылки
.шп0
Секции 2.4, 2.7 и таблица предшествования (40.6)
.шп2
Синтаксис
.шп0
Смотрите числовой элемент, константу, двоичный оператор.
.шп2
Примеры
.шп0
twenty_three := 3 + 4 + 5
minus_seventeen := 30.4 - 11.85 * 2 ^ 2
twentu?five := 5 * 20 / 4
plus?one := -1 ^ 4
.шп6;
= <> IN .шп14;
Операторы отношения
.шп2
Описание
.шп0
Это бинарные операторы, используемые при определении логического отношения, которое возвращает или истинный (true), или ложный (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 в кратком изложении ключевых слов.
.шп2
Ссылки
.шп0
Секции 15.2, 15.3, 25.4 и таблица предшествования (40.6).
.шп2
Синтаксис
.шп0
Смотрите логический оператор, логическое выражение, WHEN.
.шп2
Примеры .шп0;
(смотрите также главу 15, IN и все примеры условных структур) 100 IF x < 0 THEN PRINT "Negative" 150 WHEN >= 5, <= 10 95 UNTIL repeat¤ <> "Yes"
.шп6;
(:) .шп14;
Спецификаторы подстрок
.шп2
Описание
.шп0
С помощью операторов подстрок можно производить действия с частями строки или строчного выражения.
Подстрока определяется заданием строчного идентификатора (который может быть элементом строки или строчного массива, или строчным выражением), за которым следует выражение в форме (start:finish), где start и finish являются положениями первого и последнего символов подстроки в строке. Любой из определителей можно опустить и они будут приниматься по умолчанию в начале и конце строки соответственно.
С положительными аргументами позиция считается от начала строки (первый символ на позиции 1).
С отрицательными аргументами позиция считается от конца строки к началу (последний символ на пзиции -1).
Если первая позиция находится за второй, подстрока возвращается , как нулевая строка.
Присваивания подстрокам могут или уменьшить длину пдстроки, или оставить ее без изменений. Увеличить подстроку невозможно. Если предпринимается попытка сделать это, то так как строка присваивается подстроке, она усекается справа до тех пор, пока она не становится такой же длины.
Обратите внимание, что подстроки с одним символом (напр. a¤(x:x) могут быть определены только одиночной величиной в скобках (напр. a¤ (x), но перед скобками необходимо оставить пробел, чтобы не спутать со строчными массивами.
.шп2
Ссылки
.шп0
Глава 29
.шп2
Синтаксис
.шп0
╔══════════════╗ ╔═════════════════════╣лог. выражение╠═╗ | ╚══════════════╝ | | ╔════════════════→╣ ┏═┓|╔══════════════╗ ┏═┓|╔══════════════╗ ↓ ┏═┓ ═╦═╣(╠╩╣лог. выражение╠═╣:╠╩╣лог. выражение╠═╬═╣)╠══ | ┗═┛ ╚══════════════╝ ┗═┛ ╚══════════════╝ ↑ ┗═┛ | | | ┏════════════┓ ╔══════════════╗ | ╚═╣ пробел ╠═══════════╣лог. выражение╠═╝ ┗════════════┛ ╚══════════════╝
.шп2
Примеры .шп0;
(смотри также главу 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)
.шп6;
& ~ .шп14;
Шестнадцатиричные операторы
.шп2
Описание
.шп0
Эти операторы применяются, когда числа используются в их шестнадцатиричной форме.
& непосредственно предшествует числовой константе, чтобы указывать, что она выражена в шестнадцатиричном счислении. Число в этом сучае используется точно так же, как и любое другое.
~ используется перед числовым элементом, чтобы указывать, что число должно быть выражено как строка в шестнадцатиричной форме.
Обратите внимание, что оба оператора имеют наивысшее предшествование.
.шп2
Ссылки
.шп0
Таблица предшествования
.шп2
Синтаксис
.шп0
Смотри числовой элемент, строчное выражение.
.шп2
Примеры .шп0;
(смотри также главу 34)
PAGE := &1A00
PRINT FREE
ffffff¤ := (-1)
zero¤ := 0,1
.шп6;
? ! .шп14;
Косвенные операторы
.шп2
Описание
.шп0
Эти операторы используются для прямого чтения и письма в определенных адрсеах памяти.
? работает с одиночным байтом. ?х означает "содержание адрсеа памяти х". Он может быть использован для чтения сдержания этого адрсеа (PRINT ?х) или установки содержимого (?х := y).
! работает на четырех последовательных байтах: на одном, указанном аргументом и трех последующих. Четыре байта - это объем памяти для хранения целой переменной, поэтому оператор может использоваться для действий с ними. Наименее значащий байт целой переменной хранится в байте, указанном аргументом, а другие байты хранятся в порядке возрастания их значимости, т.е. самый значимый байт хранится по старшему адресу.
Кроме того, эти операторы могут быть использованы, как бинарные операторы (с переменными или постоянными, как операнды). Например, х?8 воспринимается, как содержание адреса памяти х+8.
.шп2
Ссылки
.шп0
Таблица предшествования (40.6)
.шп2
Синтаксис
.шп0
Смотри числовой элемент, двоичный оператор, аргумент.
.шп2
Примеры
.шп0
PRINT ?&3000
35 !y := i# 100 FOR i#:= 0 TO 16 DO PRINT (x+i#), (x?i#)
.шп6;
// .шп14;
Комментарий
.шп2
Описание
.шп0
// используется перед комментарием в программе. Все симвволы между // и концом строки интерпретатором игнорируются.
Комментарий можно поместить на отдельной програмной строке или в конце значимой програмной строки, но не после: DELETE LOAD SAVE SELECT OUTPUT или команд операционной системы.
.шп2
Ссылки
.шп0
Секция 5.12.
.шп2
Синтаксис
.шп0
╔════════════════╗ ┏═══════════╗ ↓┏══════════════┓| ┏══┓ | // ╠╦╩╣ любой символ ╠╩╦╣cr| ╚═══════════╝| ┗══════════════┛ ↑┗══┛ ╚══════════════════╝
.шп2
Пример
.шп0
100 x_coord:=640; y_coord:=512 // centre of screen
.ст комал15в
[an error occurred while processing this directive]