Инструменты пользователя

Инструменты сайта


help:expressions

Различия

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

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
help:expressions [2025/09/28 10:13]
aleks_versus [Логические операции]
help:expressions [2025/09/28 13:37] (текущий)
aleks_versus [Операции сравнения]
Строка 41: Строка 41:
 ===== Описание операций ===== ===== Описание операций =====
  
-**Важно!** ​Поскольку в **QSP** нет булевого типа данных,​ истинность или ложность ​выражения определяется по его числовому значению. Верным считается числовое выражение, значение которого отлично от ''​%%0%%''​. При значении ''​%%0%%''​ выражение считается ложным. Для значения "​верно"​ настоятельно рекомендуется использовать число ''​%%1%%'',​ т.к. операции сравнения и логические операции возвращают именно это значение в случае истинности выражения.+==== Правда или ​Ложь? ====
  
 +Поскольку в **QSP** нет булевого типа данных,​ истинность или ложность выражения определяется по его числовому значению. Верным считается числовое выражение,​ значение которого отлично от ''​**0**''​. При значении ''​**0**''​ выражение считается ложным. Для значения "​верно"​ настоятельно рекомендуется использовать число ''​**1**'',​ т.к. операции сравнения и логические операции возвращают именно это значение в случае истинности выражения.
 +
 +Начиная с версии 5.9.4 верными так же считаются:​
 +
 +  * строковые значения,​ отличные от пустой строки (''​**""​**''​).
 +    * Примеры:​ <sxh qsp>
 +if '':​ *pl '​Пустая строка. Надпись не увидим.'​
 +if '​непустая строка':​ *pl '​Условие выполняется. Надпись увидим.'​
 +</​sxh>​
 +  * непустые кортежи,​ в т.ч. содержащие пустые кортежи.
 +    * Примеры:​ <sxh qsp>
 +if []:  *pl '​Пустой кортеж. Надпись не увидим.'​
 +if [[]]: *pl 'Не пустой кортеж. Надпись увидим.'​
 +</​sxh>​
 +
 +Благодаря этому вы можете использовать логические операции со значениями любого типа и не проводить явного сравнения со значениями по умолчанию.
 +
 +Пример со строками:​
 +
 +  * В QSP 5.9.3 и ниже: <sxh qsp>
 +loop while $name = '':​
 +  $name = $input('​Введите имя:'​)
 +end
 +</​sxh>​
 +  * В QSP 5.9.4 и выше: <sxh qsp>
 +loop while no $name:
 +  $name = $input('​Введите имя:'​)
 +end
 +</​sxh>​
 ==== Математические операции ==== ==== Математические операции ====
  
Строка 67: Строка 96:
  
 ==== Операции сравнения ==== ==== Операции сравнения ====
 +
 +Сравнивать можно данные любых типов. Подробнее о сравнении [[help:​strings|строк]] и [[help:​tuples|кортежей]] читайте в соответствующих разделах.
  
   * **''​[выр1] = [выр2]''​** - операция **равно**. Верно, если значения рядом стоящих выражений равны. Данную операцию не стоит путать с операцией присваивания,​ хотя на первый взгляд они похожи. Чтобы операция **равно** корректно вернула значение,​ она должна быть записана после ключевого слова **''​IF''​**,​ **''​ELSEIF''​**,​ **''​WHILE''​** или в первом аргументе функции **''​IIF''​**,​ или стоять после явного оператора вывода текста вроде **''​*PL''​**,​ или если используется с неявным оператором,​ быть заключённой в скобки. Примеры:​ <sxh qsp>   * **''​[выр1] = [выр2]''​** - операция **равно**. Верно, если значения рядом стоящих выражений равны. Данную операцию не стоит путать с операцией присваивания,​ хотя на первый взгляд они похожи. Чтобы операция **равно** корректно вернула значение,​ она должна быть записана после ключевого слова **''​IF''​**,​ **''​ELSEIF''​**,​ **''​WHILE''​** или в первом аргументе функции **''​IIF''​**,​ или стоять после явного оператора вывода текста вроде **''​*PL''​**,​ или если используется с неявным оператором,​ быть заключённой в скобки. Примеры:​ <sxh qsp>
Строка 143: Строка 174:
 ==== Логические операции ==== ==== Логические операции ====
  
-  * ''​**OBJ** [$выр]''​ - операция проверки наличия предмета в **Инвентаре**. Верно, если ​в **Окне ​предметов** есть предмет ​с названием ''​%%[$выр]%%''​. <sxh qsp>+  * ''​**OBJ** [$выр]''​ - возвращает число одинаковых предметов с названием ''​%%[$выр]%%'' ​в **Инвентаре**. <sxh qsp>
 addobj "​Отвёртка"​ addobj "​Отвёртка"​
 *pl obj "​Отвёртка"​ & ! на экране будет число 1, так как предмет **Отвёртка** есть в окне предметов ​ *pl obj "​Отвёртка"​ & ! на экране будет число 1, так как предмет **Отвёртка** есть в окне предметов ​
help/expressions.1759054397.txt.gz · Последние изменения: 2025/09/28 10:13 — aleks_versus