pascalabcnet/PABCNetHelp/LangGuide/Operations_Expressions/IfOperation.html

54 lines
2.9 KiB
HTML
Raw Permalink Normal View History

<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 &lt; b ? a : b;</code></p>
</blockquote>
<p>Нетрудно видеть, что условная операция позволяет в простых случаях не
использовать условный оператор. Например, предыдущий код для вещественных a и b
эквивалентен следующему:</p>
<blockquote>
<p><code><b>var</b> min: real;<br><strong>if</strong> a&lt;b <strong>then</strong><br>&nbsp;
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 &lt; b <strong>then</strong> a
<strong>else</strong> b;</code></p>
</blockquote>
<p>Рекомендуется использовать вторую форму условной операции.</p>
<p><strong>Ограничение</strong>. Вторую форму условной операции нельзя
использовать в качестве выражения верхнего уровня в лямбдах. Следующий код
<strong><em>ошибочен</em></strong>:</p>
<blockquote>
<p><code><b>var</b> l: real -&gt; real := x -&gt; <strong>if</strong> x&lt;0 <strong>
then</strong> 0 <strong>else</strong> x;</code></p>
</blockquote>
<p>Для решения указанной проблемы нужно <em><strong>взять условную операцию в скобки</strong></em>:</p>
<blockquote>
<p><code><b>var</b> l: real -&gt; real := x -&gt; (<strong>if</strong> x&lt;0 <strong>
then</strong> 0 <strong>else</strong> x);</code></p>
</blockquote>
<p>&nbsp;</p>
</body></html>