/
n-dimens
/
pascalabcnet
Обзор
Документация
Войти
/
n-dimens
/
pascalabcnet
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
PABCNetHelp/LangGuide/Operations_Expressions/IfOperation.html
54 строки
3 KB
samuraiGH
adding working-tree-encoding attribute (#3325)
07 ноя 2025, 16:12
Не верифицирован
07 ноя 2025, 16:12
cf1fd29
Код
Авторство
О чём код?
<html><head> <object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e"> <param name="Keyword" value="Условная операция"> </object> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title></title> <link rel="StyleSheet" href="../../default.css"> </head> <body><H1>Условная операция</H1> <p>Условная операция (<strong>первая форма</strong>) имеет следующий вид:</p> <blockquote> <em>условие</em> <code>?</code> <em>выражение1</em> <code>:</code> <em>выражение2</em> </blockquote> <p>Если условие выполняется, то результатом является значение выражения1, иначе значение выражения2.</p> <p>Например:</p> <blockquote> <p><code><b>var</b> min := a < b ? a : b;</code></p> </blockquote> <p>Нетрудно видеть, что условная операция позволяет в простых случаях не использовать условный оператор. Например, предыдущий код для вещественных a и b эквивалентен следующему:</p> <blockquote> <p><code><b>var</b> min: real;<br><strong>if</strong> a<b <strong>then</strong><br> min := a<br><strong>else</strong> min := b;</code></p> </blockquote> <p>Кроме того, имеется <strong>вторая форма условной операции</strong> в синтаксисе Паскаля: </p> <blockquote> <code><strong>if</strong><em> </em> </code> <em>условие</em> <code> <strong>then</strong></code> <em>выражение1</em> <code><strong>else</strong></code> <em>выражение2</em> </blockquote> <p>Например: </p> <blockquote> <p><code><b>var</b> min := <strong>if</strong> a < b <strong>then</strong> a <strong>else</strong> b;</code></p> </blockquote> <p>Рекомендуется использовать вторую форму условной операции.</p> <p><strong>Ограничение</strong>. Вторую форму условной операции нельзя использовать в качестве выражения верхнего уровня в лямбдах. Следующий код ошибочен:</p> <blockquote> <p><code><b>var</b> l: real -> real := x -> <strong>if</strong> x<0 <strong> then</strong> 0 <strong>else</strong> x;</code></p> </blockquote> <p>Для решения указанной проблемы можно взять условную операцию в скобки:</p> <blockquote> <p><code><b>var</b> l: real -> real := x -> (<strong>if</strong> x<0 <strong> then</strong> 0 <strong>else</strong> x);</code></p> </blockquote> <p> </p> </body></html>