pascalabcnet/PABCNetHelp/LangGuide/Operations_Expressions/setop.html

64 lines
3.3 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="in">
</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>К множествам с базовыми элементами одного типа применимы
операции <code><b>in</b></code>
(принадлежность) <code>+</code> (объединение), <code>-</code>
(разность) и <code>*</code> (пересечение)<span lang="ru">, а также операторы </span><code>
+=</code><span lang="ru">, </span><code>-=</code><span lang="ru"> и </span>
<code>*=</code>: </p>
<blockquote>
<p><code><b>var</b> s1,s2,s: <b>set</b> <b>of</b> byte;<br>
<b>begin<br>
</b>&nbsp; s1 := [1..4];<br>
&nbsp; s2 := [2..5];<br>
&nbsp; s := s1 + s2; // s = [1..5]<br>
&nbsp; s := s1 - s2; // s = [1]<br>
&nbsp; s := s1 * s2; // s = [2..4]<br>// s <span lang="ru">+</span>=<span lang="ru">
s1 эквивалентно s := s + s1</span><br>// s -=<span lang="ru">
s1 эквивалентно s := s - s1</span><br>// s *=<span lang="ru">
s1 эквивалентно s := s * s1</span><br><span lang="ru">&nbsp; </span>s <span lang="ru">+</span>=<span lang="ru">
</span>[3..6];&nbsp; // s = [2..6] <br>
<span lang="ru">&nbsp; </span>s -=<span lang="ru"> </span>[3];&nbsp;&nbsp;&nbsp;&nbsp;
// s = [2,4..6] <br>
<span lang="ru">&nbsp; </span>s *=<span lang="ru"> </span>[1..5];&nbsp; // s = [2,4..5]
<br>&nbsp; Print(3 <strong>in</strong> s1); // True<br>
<b>end</b>.</code></p>
</blockquote>
<p>К множествам&nbsp;с базовыми элементами одного типа применимы также операции
сравнения = (равенство), <code>&lt;&gt;</code>
(неравенство), &lt;= (нестрого вложено), &lt; (строго вложено), &gt;= (нестрого содержит) и
&gt; (строго содержит):</p>
<blockquote>
<p><code>[1..3] = [1,2,3]<br>
['a'..'z'] &lt;&gt; ['0'..'9']<br>
[2..4] &lt; [1..5]<br>
[1..5] &lt;= [1..5]<br>
[1..5] &gt; [2..4]<br>
[1..5] &gt;= [1..5]</code></p>
</blockquote>
<p>Но неверно, что <code>[1..5] &lt; [1..5]</code>.</p>
<p>Наконец, операция <code><b>in</b></code>
определяет, принадлежит ли элемент множеству: <code>3 <b>in</b> [2..5]</code>
вернет <code>True</code>, <code>1 <b>in</b> [2..5]</code> вернет <code>False</code>.</p>
<p>К множествам относятся также типы HashSet&lt;T&gt; и SortedSet&lt;T&gt;. К переменным
этого типа применимы те же операции, что и к встроенным множествам:</p>
<blockquote>
<p><code><b>begin<br>
&nbsp; var
</b>s1 := new HashSet&lt;integer&gt;;<br>&nbsp; s1 := HSet(Range(1,4));<br>
<b>&nbsp; var
</b>s2 := HSet(Range(2,5));<br>
&nbsp; <strong>var </strong>s := s1 + s2; // s = [1..5]<br>
&nbsp; <strong>var </strong>s := s1 - s2; // s = [1]<br>
&nbsp; <strong>var </strong>s := s1 * s2; // s = [2..4]<br>&nbsp; Print(3
<strong>in</strong> s1); // True<br><b>end</b>.</code></p>
</blockquote>
<p>&nbsp;</p>
</body></html>