pascalabcnet/PABCNetHelp/LangGuide/Operations_Expressions/setop.html

64 lines
3.3 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>