[an error occurred while processing this directive]

.сс

.шп6

20 Еще о клавиатуре, циклах и функциях

.шп0

В этой главе мы изучим хронометрированные тесты нажатий клавиш. Мы будем считывать данные в массив с помощью циклов и познакомимся с VAL и STR¤.

В предыдущих главах мы использовали GET или GET¤, ожидая нажатия клавиши. Мы также использовали TIME для замера задержки. Все эти команды можно скомбинировать в одну.

.шп14

20.1 INKEY

.шп0

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

.шп1

x := INKEY(n) - это указание ожидать нажатие клавиши в течение n сотых секунды. Если клавиша нажимается то х присваивается его код ASCII: иначе х присваивается -1.

.шп0

Введите new и

10 MODE := 6
20 FOR go := 1 TO 20
30   PRINT TAB( 6,8);"Press a key"
40   answer := INKEY (200)
50   IF answer = -1 THEN
60     PRINT TAB( 25,8);"Too slow"
70   ELSE
80     PRINT TAW( 25,8);"Code ";answer
90   END IF
100   x := INKEY (100) // to see comment
110   CLS
120 NEXT go
230 PRINT ''"Program complete"

Запустите программу, проверяя быструю и медленную реакцию.

Нажмите РЕД чтобы выйти из программы и просмотреть ее.

.шп14

20.2 INKEY¤

.шп1

x¤ := INKEY¤ - указание ждать нажатия клавиши в течение n сотых секунды. Если клавиша нажимается, то x¤ присваивается символ этой клавиши: в противном сучае x¤ присваивается нулевая строка.

.шп0

Измените следующие строки так, чтобы можно было использовать INKEY¤. Изменения подчеркнуты.

   40 anwer¤ := INKEY¤ (200)
          ---        --
   50 IF answer¤ = "" THEN
               --  --
   80   PRINT TAB( 25,8);answer¤
                         -------
  100   x¤ := INKEY¤ (100) // to see comment
        --        --

Запустите программу снова, чтобы посмотреть действие INKEY¤.

.шп14

20.3 Клавиши без кодов ASCII

.шп0

На клавиатуре имеется несколько клавиш, которые не возвращают коды ASCII. Например, клавиши со стрелками или функциональные клавиши. Как нам проверить нажата одна из этих клавиш, или нет?

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

.шп14

20.4 INKEY минус

.шп1

INKEY(-n) является функцией,, которая проверяет была ли нажата клавиша с номером сканирования клавиатуры n. При этом задержка не используется. если клавиша нажимается во время проверки, то дается величина TRUE(-1), в других сучаях получается FALSE(0).

.шп0

Мы можем использовать номер сканирования клавиатуры для проверки не только нормальных клавиш, но и специальных.

Введите new и затем

   10 mode := 6
   20 print ''"Press the RETURN kej"
   30 delay := inkey(100) // pause for title
   40 repeat
   50 test := inkey(-74)
   60 print test
   70 until time<0 //  loop fr ever

Нажмите несколко раз клавишу ВВОД во время работы программы.

Нажмите клавишу РЕД, просмотрите ее, уничтожьте строки 20 и 30 и измените строку 50

   50 test := inkey(-99)

Опять запустите программу и попробуйте найти, которая клавиша имеет номер 99.

.шп14

20.5 Коды сканирования клавиатуры на ПЭВМ АГАТ

.шп0

На следующих рисунках приведены шестнадцатиричные коды сканирования клавиатуры:

╔══╦══╦══╦══╦══╦══╦══╦══╦══╦══╦══╦══╦═══╦══╦══╗ ╔══╦══╦══╗
|A8|CF|CE|EE|ED|EC|CB|DB|EA|D9|D8|E8|ПВТ|C6|8F| |8E|8D|8C|
╚╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦══╬══╬══╣ ╠══╬══╬══╣
 |BA|AD|CA|B9|DD|AA|AC|C7|A7|9E|AB|B7|E6|D6|86| |EB|8B|8A|
 ╚╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩═╦╝ ╠══╬══╬══╣
  |BC|BB|DE|BE|C8|CC|C9|A9|CD|9C|87|98|LT| B6|  |E9|89|88|
  ╚╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩═╦═╝  ╠══╬══╬══╣
   |EF|E7|AE|9A|DA|DC|BD|9B|B8|99|97|D7|РЕГ|    |DF|A6|96|
   ╚══╩══╬══╩══╩══╩══╩══╩══╩══╩══╬══╩══╩═══╝    ╠══╬══╬══╣
         |          9D           |              |f1|f2|f3|
         ╚═══════════════════════╝              ╚══╩══╩══╝

╔══╦══╦══╦══╦══╦══╦══╦══╦══╦══╦══╦══╦═══╦══╦══╗ ╔══╦══╦══╗
| ;| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -|ПВТ| ↑|РД| | 1| 2| 3|
╚╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦══╬══╬══╣ ╠══╬══╬══╣
 | J| C| U| K| E| N| G| [| ]| Z| H| :| ←| ↓| →| | 4| 5| 6|
 ╚╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩═╦╝ ╠══╬══╬══╣
  | F| Y| W| A| P| R| O| L| D| V| \| .|LT| ↵ |  | 7| 8| 9|
  ╚╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩╦═╩═╦═╝  ╠══╬══╬══╣
   | Q| ^| S| M| I| T| X| B| @| ,| /| _|РЕГ|    | 0| .| =|
   ╚══╩══╬══╩══╩══╩══╩══╩══╩══╩══╬══╩══╩═══╝    ╠══╬══╬══╣
         |                       |              |F1|F2|F3|
         ╚═══════════════════════╝              ╚══╩══╩══╝

.шп14

20.7 Пример программы

.шп0

Введите INKEY 'минус' программу.

  100 // Movement
  110 //
  120 MODE := 4
  130 initialise
  140 REPEAT
  150   test_key
  160   test_off_screen
  170   show_star
  180 UNTIL FALSE
  190 //
 1000 PROC initialise
 1010   across := 19 // Star Mid Screen
 1020   down := 15
 1030   VDU 23,1,,0;0;0;0; // Cursor off
 1040   Left := -26 // Inkeys values
 1050   right := -122
 1060   up := -58
 1070   back := -42 // down already used
 1080 END PROK initialise
 1090 //
 1200 PROC test_off_screen
 1210   // if off sides then swap
 1220   IF across < 0 THEN across := 39
 1230   IF across >39 THEN across := 0
 1240   // if off top/bottom then swap
 1250   IF down <0 THEN down := 29
 1260   IF down >29 THEN down := 0
 1280 END PROC test_off_scren
 1290 //
 1300 PROC show_star
 1310   PRINT TAB( acros,down);"*"
 1320   FOR delay := 1 TO 28 DO
 1330     NULL // slow our speed
 1340   NEXT delay
 1350   // Now wipe off
 1360   PRINT TAB( across,down);""
 1380 END PROC show_star
 1390 //
 1400 END //Change mode to get cursor
 Сейчас запустите программу, используя клавиши со стрелками, чтобы переместить звездочку.

.шп14

20.8 Использование процедур

.шп0

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

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

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

Считается, что составление программ таким образом занимает в два раза меньше времени, а устранение ошибок - в десять раз меньше.

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

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

.шп14

20.9 Вложенные циклы

.шп0

Введите new и следующую программу.

   10 MODE :=6
   20 FOR j:=1 TO 15 DO
   30   FOR k:= 1 TO 5 DO
   40     PRINT TAB( j,k);"*"
   50     delay:=INKEY (10) // to slow down
   60   NEXT k
   70 NEXT j

Запустите программу.

Внутренний цикл выполняется в первую очередь

Просмотрите программу.

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

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

Измените строку 40 на

   40 print tab(k,j);"*"

И запустите ее.

В этот раз первыми печатаются ряды.

.шп2

Перепутанные циклы.

.шп0

FOR и NEXT k находятся внутри FOR и NEXT j. Если вы перепутаете переменные цикла, то при запуске программы вы получите набор сообщений об ошибках. Попробуйте поменять местами j и к вводом

   60 NEXT j
   70 NEXT k

Запустите программу.

Программу можно исправить вводом

   60 NEXT
   70 NEXT

Переменные будут вставлены правильно.

Введите new и следующий массив

   10 DIM arrays(3,5)
   20 MODE := 6
   30 FOR j:= 1 TO 5 DO
   40   FOR k := 1 TO 3 DO
   50     READ array(k,j)
   60     PRINT TAB( k,j);array(k,j)
   70     delay:= INKEY (10) // slow down
   80   NEXT k
   90 NEXT j
  100 DATA 1,1,1,2,2,2,3,3,3,4,4,4,5,5,5

Запустите программу и просмотрите ее.

Сейчас измените строку 60 на

   60 PRINT TAB( j,k);array(k<j)

и опять запустите программу.

.шп14

20.10 Подбор индексов и переменных.

.шп0

Измените 10 на

   10 DIM array(5,3)

и попытайтесь запустить опять.

Возникает ошибка. Это происходит, потому что второй индекс неможет быть выше 3, а мы пытаемся использовать величины 4 и 5. Если мы хотим считать данные в массив, то нужно тщательно подобрать "форму" массива к формам цикла.

.шп14

20.11 VAL

.шп0

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

.шп1

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

.шп0

Введите прямую команду

this¤ := "2 * x + 3"

this¤ - это строка, но она похожа на математическое вычисление. Если бы мы знали величину х, то мы могли бы вычислить this¤.

Введите

х := 4

затем

rpint val(this¤)

VAL берет строку, названную this¤ и пытается вычислить ее величины, как будто бы это нормальное вычисление.

Введите

that¤ := "len nonsense"

и

print val(that¤)

.шп1

Если строка бессмыслена как укахзание вычисления, ее VAL (величину) найти невозможно.

.шп0

Строка может содержать цифры, напр. reply¤ := "123"

VAL можно использовать для получения цифрового эквивалента, 123.

Введите new и затем

   10 MODE := 6
   20 FOR question = 1 TO 6
   30   INPUT "Enter some figure > ":reply¤
   40   PRINT 'reply¤,VAL(reply¤)'
   50 NEXT question

Запустите программу.

Обратите внимание, что reply¤ печатается слева от своей зоны, потому что это строка, тогда как val(reply¤) печатается справа от своей зоны, потому что это число.

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

.шп14

20.12 STR¤

.шп0

Имеется функция перевода числовых элементов в строки.

.шп1

STR¤ - это функция, которая берет числовой элемент как аргумент и возвращает строку с таким же внешнем видом.

.шп0

Измените 30 на

   30 INPUT "Enter a number > ":reply

и 40 на

   40 PRINT 'reply,STR¤ (reply)'

Просмотрите программу.

Числовая переменная reply будет напечатана справа от своей зоны, а ее строковая величина будет напечатана слева от следующей зоны.

Запустите программу, используя интегральные и действительными величинами с десятичными позициями.

.шп14

20.13 Итоговые упражнения

.шп0

Запишите ваши ответы и сверьте их с ответами в главе 43.

1. Какие команды будут иметь следующий эффект?

а) Ожидание нажатия клавиши в течение 1 секунды и присвоение символа этой клавиши а¤.

б) Ожидание нажатия клавиши до 2 секунд и присвоение кода ASCII этой клавиши B.

в) Проверка, нажимается ли клавиша С и печать -1, если она нажимается.

2. Что неправильно в следующей программе?

   10 FOR j := 1 TO 5 DO
   20   FOR k := -5 TO 1 DO
   30     PRINT j*j - k*k
   40   NEXT j
   50 NEXT k

3. Если х := 2 и d¤ := "3 * 4 + x", каким будет VAL(d¤)?

4. Если y := 5.678, каким будет результат команды print len(str¤(y))

.шп14

20.14 Выводы.

.шп0

1. INKEY¤(n) является функцией, которая ожидает нажатия клавиши в течение n сотых секунды. Если клавиша нажата, то она немедленно возвращает символ. Если ничего не нажимается, то возвращается нулевая строка.

2. INKEY(n) является функцией, которая ожидает нажатия клавиши в течение n сотых секунды. Если клавиша нажата, то немедленно возвращается код ASCII. Если клавиша не нажимается, то возвращается -1.

3. INKEY(-n) является функцией, которая проверяет, нажимается ли клавиша с кодом сканирования n . Возвращаются величины: -1 для истинной, и 0 для ложной.

4. VAL является функцией, которая переводит строчный аргумент, как выражение, введенное с клавиатуры.

5. STR¤ является функцией, которая возвращает строчное выражение, являющееся эквивалентом ее цифрового аргумента.

.сс

.шп6

21 Логические операторы

.шп0

В этой главе мы расширим область применения условий в структурах IF и циклах REPEAT. Мы будем использовать логические операторы OR, AND, EOR и NOT.

FALSE (в значении 0) обычно появляется в заглавных буквах, однако TRUE (в значении -1) и true (любая целая кроме 0) будут различаться соответственным использованием заглавных или строчных букв.

.шп14

21.1 OR (или)

.шп0

В секции, описывающей цикл REPEAT UNTIL..., мы помещали условие в конце цикла. Если условие удовлетворяется, то цикл заканчивается. Иногда требуется закончить цикл, когда удовлетворяется одно или другое условие.

.шп1

Логический оператор OR используется для получения true (истиннго) или FALSE (ложного) результата после проверки двух условий. Если одно или (OR) другое условие верное, то результат тоже верный.

.шп0

Введите new и

   10 goes := 0
   20 actual := 0
   30 MODE := 6
   40 PRINT TAB( 0,5);"Guess my number, 1 to 9"
   50 //
   60 REPEAT
   70   INRUT "Your gess ":guess
   80   goes :+ 1
   90 UNTIL guess = actual OR goes = 3
  100 //
  110 IF guess = actual THEN
  120   PRINT ''"Correct"
  130 ELSE
  140   PRINT ''"It was ";actual
  150 END IF

Запустите программу несколько раз.

Логический оператор OR также можно использовать с проверкой IF, когда должно удовлетворяться одно или другое условие (или оба).

.шп14

21.2 AND (и)

.шп0

Может потребоваться закончить цикл, когда удовлетворяется оба условия: и одно и другое. Таким же образом оператор IF может основываться на удовлетворении одного и друго условия.

.шп1

Логический оператор AND используется для проверки двух условий. Если оба условия верны, то возвращается TRUE. Если какое-либо из условий является ложным, то возвращается FALSE.

.шп0

Измените следующие строки на

   90 until GUESS = ACTUAL or GOES = 6
  110 if GUESS = ACTUAL and GOES < 3 then print "EcxellenT"
  120 if GUESS = ACTUAL and GOES > 2 and GOES < 5 then rpint "gOOD"
  130 if GUESS = ACTUAL and GOES > 4 then print "Slow"
  140 if GUESS <> ACTUAL then print "Hard luck"

и уничтожьте строку 150.

.шп14

21.3 EOR

.шп1

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

.шп0

В следующей программе мы будем печатать звездочку, если ряд меньше 12 или (OR), если колонка меньше 19, но если удовлетворяются не оба условия.

Введите new и

   10 MODE := 6
   20 FOR down := 0 TO 23 DO
   30   FOR across := 0 TO 39 DO
   40     IF down < 12 EOR across < 19 THEN PRINT TAB( across,down);"*"
   50   NEXT across
   60 NEXT down

Запустите программу.

.шп14

21.4 Таблицы истинности

.шп0

Мы можем показать результаты операторов OR,AND,EOR в таблицах, где Т обозначает TRUE (истинная), а F - FALSE (ложная).

Например: если оператор 1 является Т (TRUE), а оператор 2 - F )FALSE)

то T OR F дает результат Т(RUE)
   T AND F дает результат F(ALSE)
   T EOR F дает результат T(RUE)


                     |Операнд 2
                     |
                 OR  |  T   F
═════════════════════╬══════════
                     |
    Операнд 1     T  |  T   T
                     |
                  F  |  T   F 


                     |Операнд 2
                     |
                AND  |  T   F
                     |
═════════════════════╬══════════
                     |
    Операнд 1     T  |  T   F
                     |
                  F  |  F   F


                     |Операнд 2
                     |
                EOR  |  T   F
═════════════════════╬═══════════
                     |
                     |
    Операнд 1     T  |  F   T
                     |
                     |  T   F

.шп14

21.5 Логические операторы

.шп0

OR, AND, EOR - это все 'логические операторы'. Они реализуются в Комале как операции, выполняемые в двоичных числах (нули и еденицы). Это означает, что можно делать указания следующего вида

PRINT 1 OR 2
PRINT 2 AND 1
PRINT 2 EOR 3

Каждая двоичная цифра одного числа сравнивается с соответствующей цифрой другого в соответствии с правилами OR, AND и EOR. Затем в надлежащем месте возвращаемой величины используется 1 или 0.

В качестве примера, использующего две бинарные цифры, посмотрим работу оператора OR.

1 OR 3 возвратит величину 3. Для каждой колонки делаются сравнения и, если в одной из них есть 1, то 1 затем используется в колонке результата.

                 Бинарные цифры
      число
 (основание 10)  Колонки величин
                       2    1
-----------------------------
           1           0    1
               OR
           3           1    1
------------------------------
Результат  3           1    1

Бинарное число 11 (десятичное 3) возвращается операцией 1 OR 3.

Если величина, возвращенная оператором OR равна 0, то она представляет ложное условие. Любая другая (целая) величина представляет истинное условие.

Логический оператор AND в результате даст 1, если в соответствующих позициях обоих аргументов есть 1.

                            Бинарные цифры
            Число
     (основание  10)        Коллонки величин
                                2      1
---------------------------------------------
              2                 1      0
                     AND 
              1                 0      1
----------------------------------------------
Результат     0                 0      0

Бинарное число 00 (десятичное 0) возвращается операцией 2 AND 1.

Оператор EOR дает 1 только, если в одной или другой соответствующей позиции аргумента, но не в двух, имеется 1.

                               Бинарные цифры
               Число
        (основание  10)        Колонки величин
                                   2      1
-----------------------------------------------
                2                  1      0
                       EOR
                3                  1      1
------------------------------------------------
Результат       1                  0      1

Бинарное число 01 (десятичное 1) возвращается операцией 2 EOR 3.

.шп14

21.6 NOT

.шп0

Ключевое слово NOT инвертирует величины TRUE и FALSE.

Введите

PRINT NOT TRUE

и

PRINT NOT FALSE

.шп1

NOT - это оператор, который инвертирует истинные и ложные беличины.

NOT FALSE, т.е. NOT (не) 0, производит -1 или истинную величину.

NOT TRUE,т.е NOT -1, производит 0 или ложную величину.

.шп14

21.7 Что является истинным.

.шп0

Необходимо быть осторожным со всеми величинами кроме -1 и 0.

NOT обычно применяется к значениям 0 и -1, хотя, строго говоря, он инвертирует каждую бинарную цифру, превращая единицы в нули и наоборот.

NOT - это оператор с наиболее высоким приоритетом. Он выполняется прежде операторов OR, AND, EOR.

Введите прямую команду

PRINT NOT 5

Компьютер считает, что любая величина, не равная нулю представляет истинное условие. Например, ни 5, ни -6 не являются ложными, поэтому они оба представляют условие, которое будет восприниматься как истинное.

Введите new и следующую программу.

   10 MODE := 6
   20 PRINT TAB( 5,5);"Press any number key"
   30 REPEAT
   40   x¤ := GET¤
   50 UNTIL x¤ IN "1234567890"
   60 PRINT x¤'"Finished"

Эта программа ожидает номер клавиши, которая должна быть нажата.

Запустите ее, чтобы доказать, что это так.

Когда нажимается клавиша с символом, функция х¤ IN "1234567890" производит числа от 1 до 10, т.е. позицию, на которой в строке находится символ. Так как величина не равна нулю, она воспринимается как означающая истинное условие и цикл завершается.

Измените строку 50 на

   50 UNTIL NOT (x¤ IN "1234567890")

Скобки здесь необходимы для того, чтобы IN исполнялось раньше NOT. NOT не имеет действия на строку. Сейчас запустите программу и нажмите клавишу 5.

Как x¤ IN "1234567890", так и NOT (x¤ IN "1234567890") производят величину, не равную нулю. Поэтому обе они представляют условие, заканчивающее цикл.

Если мы хотим исключить ряд символов, то необхлдимо проверять точное условие. Измените 50 на

   50 UNTIL x¤ IN "1234567890" <> 0

Будьте осторожны с NOT!

.шп14

21.8 Усечение до целых

.шп0

Все числа, используемые в логических тестах перед проверкой усекаются, например:

NOT 0.1 - это то же, что и NOT 0, T.E. -1 или истинное.

.шп14

21.9 Предшествование операторов

.шп0

Когда необходимо интерпретировать 'логическое' условие, между операторами NOT, AND, OR, EOR должен быть порядок предшествования. Это логический эквивалент предшествования, используемого в арифметике с * и +.

NOT имеет наивысшое предшествование.

AND имеет более высокое предшествование, чем OR и EOR.

OR и EOR имеют самое низкое предшестврвание.

Если OR или EOR встречаются в одном выражении, то они выполняются в том порядке, в котором они встречаются.

Пример:

2<3 EOR 3<4 AND 5<4

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

2<3 EOR ( 3<4 AND 5<4)

то есть

TRUE EOR    FALSE и возвращает TRUE

тогда как

( 2<3 EOR 3<4) AND 5<4

то есть

     FALSE    AND FALSE возвращает FALSE.

Полная таблица предшествования дана в секции 40.6.

.шп14

21.10 Итоговые упражнения

.шп0

Что возвращают следующие операторы, TRUE или FALSE?

1. 2 < 3 OR 3 < 4
2. 2 < 3 EOR 3 < 4
3. 2 < 3 AND 3 < 4
4. 3 > 2 OR 3 > 4
5. 3 > 2 EOR 3 > 4
6. 3 > 2 AND 3 > 4
7. NOT (2 < 3)
8. NOT (2 = 3)

Какие числа представляются

9. NOT 0
10. NOT -1
11. NOT 1

Ответы даны в главе 43, но их тоже можно проверить, приказав компьютеру командой PRINT (напечатать) приведенные в вопросах операторы.

.шп14

21.11 Выводы.

.шп0

1. Любое нецелое число усекается до целого прежде, чем оно используется логическим оператором.

2. FALSE имеет величину 0, а TRUE имеет величину -1, хотя любая целая величина, которая не равна нулю рассматривается как величина, представляющая истинное условие. Любое условие, не являющееся ложным, считается истинным. Обратное положение не принимается.

3. OR можно использовать для возвращения true или FALSE как результата двух условий. Если одно или другое условие истинное, то результат тоже истинный. Это включает случай, когда оба условия истинные. Только если оба условия ложные, результат тоже будет ложным.

4. EOR (Исключающий OR) может быть использован для возвращенния true или FALSE как результата двух условий. Это вид теста OR, но исключает случай, когда оба условия истинные. Если оба условия истинные, то результат ложный. Если оба условия ложные, то результат ложный.

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

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

7. Более точно, OR, AND, EOR, NOT производят логические операции с аргументами в бинарном представлении.

.ст комал11

[an error occurred while processing this directive]