- •Программирование на языке высокого уровня
- •1 Часть Учебное пособие Москва 2007
- •Оглавление
- •1. Основы алгоритмизации
- •1.1. Алгоритмизация и требования к алгоритму
- •1.2. Блок-схемы алгоритмов
- •1.2.1. Способы записи алгоритма
- •1.2.2. Блок-схемы
- •1.2.3. Следование, ветвление, цикл
- •1.3. Этапы разработки программы
- •1.3.1. Язык программирования. Программа
- •1.3.2. Этапы разработки
- •1.4. Ошибки
- •1.4.1. Компилятор. Синтаксис и семантика
- •1.4.2. Типы ошибок
- •2. Алфавит языка Турбо Паскаль. Программа
- •2.1. Идентификаторы
- •2.2. Разделители
- •2.3. Специальные символы
- •2.4. Структура Pascal-программы
- •Пример простейшей программы на языке Pascal
- •3. Типы данных
- •3.1. Структура типов данных
- •3.2. Простые типы
- •3.2.1. Порядковые типы
- •3.2.1.1 Целые типы.
- •3.2.1.1.1. Встроенные процедуры и функции, применимые к целым типам
- •3.2.1.2. Логический тип.
- •3.2.1.3. Символьный тип.
- •3.2.1.4. Перечисляемый тип.
- •3.2.2. Вещественные типы
- •3.3. Константы и переменные
- •3.4. Преобразование типов
- •4. Операторы
- •4.1. Ввод данных
- •4.2. Вывод данных
- •4.3. Составной оператор
- •4.4. Условный оператор
- •4.5. Операторы циклов
- •4.5.1. Оператор for
- •4.5.2. Оператор while
- •4.5.3. Оператор repeat
- •4.5.4. Стандартные функции для циклов
- •4.6. Оператор выбора case
- •5. Массивы
- •5.1 Определение массива
- •5.2. Ввод/вывод одномерного массива (вектора).
- •5.3 Типизированные константы – массивы
- •5.4. Сортировка массивов (ранжирование)
- •6. Процедуры и функции
- •6.1. Подпрограммы
- •6.2. Параметры. Глобальные и локальные описания
- •6.3. Процедуры
- •6.4. Функции
- •6.5. Процедура exit
- •6.6. Рекурсия
- •6.7. Директивы подпрограмм
- •6.8. Открытые массивы
- •7. Записи
- •7.1.Определение и правила записи
- •7.2. Оператор присоединения
- •7.3. Записи с вариантами (экономия пространства)
- •8. Множества
- •8.1. Понятие множества
- •8.2. Конструктор множества
- •8.3. Операции над множествами
- •8.4. Примеры программ, использующих множества.
- •Литература
8. Множества
8.1. Понятие множества
Множества в математике – произвольной набор объектов природы, понимаемый как единое целое. На вид объектов и их число не накладывается никаких ограничений. Понятие множества в Т-П несколько уже, чем математическое понятие.
Множества – это наборы однотипных связанных друг с другом объектов. Характер связи между объектами лишь подразумевается программистом, но не контролируется Т-П. Количество элементов, входящих в множество, может меняться 0-255. 1 элемент множества занимает 1 байт.
Множество, не содержащее элементов, называется пустым. Множества отличаются от массивов и записей непостоянным количеством своих элементов.
Нельзя обратиться к элементу множества по его индексу.
Множества используются, когда порядок следования элементов не имеет значения.
Описание типа множества имеет вид:
<имя типа> = set of <базовый тип>;
<имя типа> - правильный идентификатор;
set of - зарезервированные слова (множество ,из);
<базовый тип> - базовый тип элементов множества, используется любой порядковый тип, кроме WORD, INTEGER, LONGINT, SHORINT, т.е. порядковые значения нижней и верхней границы базового типа не должны выходить за пределы 0-255.
Пример
TYPE
Daytype = (mon,tue,wed,thu,fri,sat.sun);
VAR
Washdays,bathdays : set of daytype;
Можно вовсе опустить TYPE
VAR
Washdays,bathdays : set of (mon,tue,wed,thu,fri,sat.sun)
Несколько примеров определения переменных типа множество:
Var
Teaset : set of char;
Letters : set of ‘A’..’Z’;
digits: set of ‘0’..’9’;
dice: set of 2..122;
const
number :set of=[4,7,1,9];
8.2. Конструктор множества
Конструктор множества используется для задания множества: список элементов множества перечисляется через (,), обрамляется квадратными скобками.
Пример
Var
town : set of (Moscow, Kiev, Sochi);
S1,S2,S3 : set of ‘0’…’9’
S4,S5,S6 : set of 0…9;
S1=: [‘1’,’2’,’3’];
S2=: [‘3’,’2’,’1’];
S3=: [‘2’,’3’];
S4=: [0…3,6];
S5=: [4,5];
S6=: [3..9];
Переменная town множественного типа может принимать следующие значения:
[Moscow] [Kiev] [Sochi]
[Moscow,Sochi] [Moscow, Kiev] [Kiev, Sochi]
[Moscow, Kiev, Sochi] [ ]
В общем случае, если базовое множество содержит N элементов, производный множественный тип определяет подмножеств. Переменная town может принимать =8 различных значений.
Пример
Множество [‘c’..’a’] является пустым, т.к. в перечислении объектов базового типа порядковый номер ‘c’ > порядкового номера ‘a’.
8.3. Операции над множествами
Над множествами определены три операции:
*- пересечение множеств ; результат содержит общие для обоих множеств элементы, т.е. S4*S6 содержит [3,6],
S4*S5 – [ ]
+ - объединение множеств; результат содержит элементы первого множества, дополненные недостающими элементами второго множества,
т.е. S4+S5 содержит [0…6],
S5+S6 содержит [3..9]
- разность множеств; результат содержит элементы из первого множества, которые не принадлежат второму множеству,
т.е. S6-S5 содержит [3,6,7,8,9]
S4-S5 содержит [0,1,2,3,6]
Для сравнения множеств используются операции отношения =,<>,<=,>=, IN.
-
= - проверка эквивалентности; возвращает TRUE, если оба множества эквивалентны. Множества S1и S2 эквивалентны, т.к. содержат одинаковые элементы (порядок следования элементов безразличен);
-
<>- проверка неэквивалентности, возвращает TRUE, если множества неэквивалентны .[7,1,3] <>[2,4,6,8] - TRUE;
-
<= - проверка вхождения; возвращает TRUE, если первое множество включено во второе. [Moscow] <= [Moscow, Kiev] - TRUE;
-
>= - проверка вхождения; возвращает TRUE, если второе множество включено в первое. [‘a’…’e’] >= [‘a’,’б’] - TRUE;
-
IN – проверка принадлежности; в этой операции первый элемент выражение, а второй множество. Оба элемента должны быть одного и того же типа. Операция возвращает TRUE, если выражение имеет значение, принадлежащее множеству.
Порядок выполнения операций сравнения следующий: 1) *; 2) +,-; 3 ) IN,=,<>,<=,>=.
Пример:
-
5 IN [3..7] – TRUE.
-
2) K:=1; K+2 IN [0..7]*[4,6,8] =false
Средства работы со множествами позволяет в некоторых случаях сократить программы и сделать их более наглядными за счет уменьшения числа различных проверок.