<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40218&amp;view=findpost&amp;p=299593</guid>
        <pubDate>Sun, 15 Feb 2004 12:59:48 +0000</pubDate>
        <title>Что такое множество?</title>
        <link>https://forum.sources.ru/index.php?showtopic=40218&amp;view=findpost&amp;p=299593</link>
        <description><![CDATA[vesper1: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>KiRiK</strong>, 14.02.04, 02:15<br>
Если уж речь зашла.<br>
Как устроены переменные типа Set Of ...? </div></div><br>
Упакованный битовый массив. Х-й (0-7) бит У-ого (0-31) байта содержит 1, если в множестве есть элемент с индексом 8*У+Х. Собственно, из-за этого они медленнее, чем array[0..9] of byte.<br>
Если в множестве число эл-тов не кратно 8, то старшие биты последнего байта не в счет.<br>
Данные из ВР7.0.]]></description>
        <author>vesper1</author>
        <category>Pascal: Структуры данных</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40218&amp;view=findpost&amp;p=299073</guid>
        <pubDate>Fri, 13 Feb 2004 22:15:58 +0000</pubDate>
        <title>Что такое множество?</title>
        <link>https://forum.sources.ru/index.php?showtopic=40218&amp;view=findpost&amp;p=299073</link>
        <description><![CDATA[KiRiK: Если уж речь зашла.<br>Как устроены переменные типа Set Of ...?]]></description>
        <author>KiRiK</author>
        <category>Pascal: Структуры данных</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40218&amp;view=findpost&amp;p=260662</guid>
        <pubDate>Wed, 10 Dec 2003 02:19:14 +0000</pubDate>
        <title>Что такое множество?</title>
        <link>https://forum.sources.ru/index.php?showtopic=40218&amp;view=findpost&amp;p=260662</link>
        <description><![CDATA[@Hgpeu: Множества.<br>
Тип «множество» задаёт интервал значений, который является множеством всех подмножеств базового типа. Множество описывается в разделе var с помощью зарезервированного слова set. Базовым типом множества может быть любой тип, состоящий не более чем из 256 элементов. <br>
Вот пример описания множества:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Var s:set of char;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Для того чтобы пояснить особенность данного типа, рассмотрим пример. Если переменная типа «множество» описана как set of 1..3, то она может принимать значения из следующего множества: {(1,2,3),(1,2),(1,3),(2,3),(1),(2),(3),()}.<br>
Константы множественного типа записываются с помощью квадратных скобок [ ] и списка элементов. <br>
Примеры:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Const </div><div class="code_line">&nbsp;&nbsp; &nbsp; alphabet = [&#39;A&#39;..&#39;Z&#39;,&#39;a&#39;..&#39;z&#39;];</div><div class="code_line">&nbsp;&nbsp; &nbsp; empty = [];</div><div class="code_line">&nbsp;&nbsp; &nbsp; digits = [0..9];</div></ol></div></div></div></div><br>
<br>
Отсутствие списка элементов в квадратных скобках обозначает пустое множество. <br>
<br>
Операции над множествами.<br>
<br>
1) Присваивание. Например: S:=[ ];<br>
Множества языка Паскаль обладают свойствами математических множеств. В частности, над ними можно выполнять те же операции. Если S1 и S2 – константы или переменные множественного типа, то:<br>
<br>
2) Объединение. S1+S2 будет их объединением.<br>
Объединением математических множеств s1 и s2 называется множество, состоящее из элементов, принадлежащих или множеству s1, или множеству s2, или обеим множествам.<br>
<br>
3) Пересечение. S1*S2 будет их пересечением.<br>
Пересечение множеств состоит из элементов, одновременно принадлежащих обоим множествам.<br>
<br>
4) Разность S1-S2 будет их разностью.<br>
Разностью называется множество, состоящее из элементов, принадлежащих первому, но не принадлежащих второму множеству.<br>
<br>
5) Операции отношений:<br>
= (равенство), <br>
&lt;&gt; (неравенство), <br>
&lt;= (является подмножеством), <br>
&gt;= (является надмножеством)<br>
<br>
6) Зарезервированное слово in используется для определения принадлежности элемента множеству. И иногда в операторе if гораздо удобнее использовать множественный тип:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">if ch in [&#39;A&#39;..&#39;Z&#39;,&#39;a&#39;..&#39;z&#39;] then …</div></ol></div></div></div></div><br>
Чем, например пару операций сравнения: <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">if ((ch &#62;= &#39;A&#39;)and(ch&#60;=&#39;Z&#39;))or((ch&#62;=&#39;a&#39;)and(ch&#60;=&#39;z&#39;)) then …</div></ol></div></div></div></div><br>
<br>
Рассмотрим пример. Данный фрагмент программы формирует множество всех заглавных букв с нечетными кодами:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Var</div><div class="code_line">&nbsp;&nbsp; &nbsp;S:set of &#39;A&#39;..&#39;Z&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Ch:char;</div><div class="code_line">Begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;S:=[ ];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Ch:=&#39;A&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Repeat</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; S:=S+[ch];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Inc(ch); Inc(ch);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Until ch&#62;=&#39;Z&#39;;</div><div class="code_line">end.</div></ol></div></div></div></div><br>
Альтернативой оператору S:=S+[ch]: является оператор Include(S,ch). Имеется и обратная процедура Exclude исключения элемента из множества. У этих процедур два параметра: первый указывает множество, а второй элемент]]></description>
        <author>@Hgpeu</author>
        <category>Pascal: Структуры данных</category>
      </item>
	
      </channel>
      </rss>
	