- •Содержание
- •Раздел 1.Подпрограммы Общие сведения
- •Процедуры Описание процедур
- •Вызов процедур
- •Процедуры без параметров
- •Процедуры с параметрами
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Параметры-переменные без типа
- •Параметры процедурного типа
- •Использование производных типов в качестве параметров подпрограмм
- •Принцип локализации имен
- •Функции Описание функций
- •Вызов функции
- •Рекурсивные подпрограммы
- •Директивы
- •Библиотечные модули пользователя Общие сведения
- •Структура модуля Unit
- •Особенности работы с модулями
- •Подключение к программе внешнего файла
- •Раздел 2.Простейший ввод-вывод Процедуры ввода из стандартного текстового файла Input
- •248 15 4 70 Значения 1-й строки
- •11 Значения 2-й строки
- •Процедуры вывода в стандартный текстовый файл Output
- •Раздел 3.Записи Структура записи
- •Записи без вариантной части
- •Записи с вариантами
- •Оператор присоединения With
- •Константа-запись
- •Раздел 4.Множества Общие сведения
- •Конструктор множества
- •Задание множественного типа
- •Операции над множествами
- •Ввод / вывод значения множественной переменной
- •Типизованные константы-множества
- •Раздел 5.Файлы Общие сведения
- •Процедура Assign
- •Файлы с типом
- •Процедура Assign
- •Процедура Rewrite (f)
- •Процедура Write (f, v1 [, v2, … , vn])
- •Процедура Reset (f)
- •Процедура Read (f, V [, v2, …, vn])
- •Функция Eof(f)
- •Процедура Seek (f, n)
- •Функция Filepos (f)
- •Функция Filesize(f)
- •Процедура Close (f)
- •Текстовые файлы
- •Процедура Assign (f, Name)
- •Процедура AssignСrt(f)
- •Процедура Append (f)
- •Процедура Rewrite (f)
- •Процедура Reset (f)
- •Процедура Read ([f,] v1 [, v2, …, vn])
- •Процедура Readln [([f] [,] [v1, v2, …, vn])]
- •Процедура Write ([f,] e1 [, e2, …, en])
- •Процедура Writeln([f,][e1,e2, …,en])
- •Процедура Close(f)
- •Процедура SetTextBuf (f, Buf [, Size])
- •Процедура Flush (f)
- •Сравнительная характеристика представления информации в файлах с типом и текстовых файлах
- •I. Представление числовой информации.
- •II. Представление текстовой информации.
- •Файлы без типа
- •Процедуры Reset и Rewrite
- •Процедура Blockread
- •Процедура Blockwrite
- •Проверка операций ввода-вывода
- •Раздел 6.Ссылочный тип (тип указатель) Общие сведения
- •Методы работы с динамическими переменными
- •Процедуры New и Dispose
- •Процедуры Getmem и Freemem
- •Процедуры Mark и Release
- •Раздел 7.Динамические структуры данных Динамические цепочки Структура динамической цепочки
- •Формирование цепочки
- •Поиск элемента в цепочке
- •Удаление элемента из цепочки
- •Вставка элемента в цепочку
- •Линейный однонаправленный список
- •Двунаправленные списки
- •Вставка элемента
- •Создание двунаправленного кольцевого списка с заглавным звеном
- •Удаление элемента
- •Поиск элемента
- •Очереди и стеки
- •Очередь lifo
- •Очередь fifo
- •Общие сведения
- •Способы организации таблиц
- •Однонаправленный список.
- •Однонаправленный список с упорядоченными записями.
- •Однонаправленный список с отдельным хранением текста записи.
- •Представление в виде массива.
- •Двоичное дерево.
- •Двоичные деревья Структура двоичного дерева
- •Построение дерева
- •Поиск записи в дереве
- •Включение записи в дерево
- •Удаление записи из дерева
- •Раздел 8.Оверлеи Общие сведения
- •Правила оформления оверлейных программ
- •Инициализация работы оверлеев
- •Включение администратора оверлеев
- •Обработка ошибок администратора
- •Размещение оверлейного файла в ems-памяти
- •Управление оверлейным буфером
- •Литература Основная и дополнительная литература
- •Перечень наглядных пособий, методических указаний, методических материалов и используемых в учебном процессе технических средств
Операции над множествами
Над множествами определены операции, которые представляет Таблица 4 .2.
Таблица 4.2 – Операции над множествами
Операция |
Описание операции |
Тип результата |
= |
Равно |
Boolean |
<> |
Не равно |
|
<= |
Результат операции равен True, если левое множество является подмножеством правого |
|
>= |
Результат операции равен True, если правое множество является подмножеством левого |
|
In |
Результат операции равен True, если некоторое скалярное значение (левый операнд) является элементом множества (правый операнд) |
|
Not *) |
Дополнение множества (одноместная операция) |
Set |
+ |
Объединение множеств |
|
* |
Пересечение множеств |
|
– |
Разность множеств A – B = A * Not B |
|
Xor *) |
Исключающее объединение множеств A Xor B = A + B – A * B |
Здесь *) – операции, определенные не во всех версиях языка Паскаль.
Над множественными переменными определена одна встроенная функция – Sizeof(X), указывающая количество байт для представления значения X множественной переменной.
Операция In представляет собой операцию проверки вхождения элемента в множество. Левый операнд должен принадлежать базовому типу, правый операнд – множественному типу, построенному на основе этого базового типа.
Пример 4.5.
Операции над множествами. Пусть имеются объявления, приведенные в примере 4.3.
I := [1, 3, 5];
B := 2 In I {в B значение False}
B := [3, 5]<=I {в B значение True}
B := [4, 5]<=I {в B значение False}
I := Not I {в I значение [2, 4, 6..10] – дополнение множества}
В двухместных операциях оба операнда должны принадлежать одному и тому же множественному типу значений.
Объединение множеств (I2 := I + I1) – это множество, состоящее из элементов, входящих хотя бы в одно из исходных множеств I и I1. Объединение множеств иллюстрирует Рисунок 4 .31.
Рисунок 4.31 – Объединение множеств
Пересечение множеств (I2 := I * I1) – это множество, состоящее из элементов, входящих в оба исходных множества I и I1. Пересечение множеств иллюстрирует Рисунок 4 .32.
Рисунок 4.32 – Пересечение множеств
Разность множеств (I2 := I – I1) – это множество, состоящее из элементов множества I, не входящих в множество I1. Разность множеств иллюстрирует Рисунок 4 .33.
Рисунок 4.33 – Разность множеств
Пример 4.6.
Операции над множествами. Пусть имеются объявления, приведенные в примере 4.3.
I1 := [1, 2, 3];
I := [1, 3, 5];
I2 := I1 + I; {в I2 значение [1, 2, 3, 5]}
I2 := I1*I; {в I2 значение [1, 3]}
I2 := I – I1; {в I2 значение [5]}
Выражения, приведенные в примере 4.6, представляют собой множественные выражения.
Старшинство операций в множественных выражениях аналогично старшинству в арифметических выражениях: вначале вычисляются выражения в скобках, затем операция *, после этого операции + и – в порядке их следования слева направо.
Например, результатом вычисления множественного выражения
[1, 2, 5, 6, 7] * [2 .. 6] + [3, 9]
является множество
[2, 3, 5, 6, 9].
Пример 4.7.
Использование множественного типа. Подсчитать общее количество букв X, Y, Z в исходном тексте, оканчивающемся точкой.
Program Mno;
Var
Kol: Integer;
B: Char;
Begin
Kol := 0;
Read (B); {Чтение первой буквы текста}
While B<>’.’ Do
Begin
If B In [‘X’, ‘Y’, ‘Z’] Then {Если значение буквы входит в
множество [‘X’, ‘Y’, ‘Z’]}
Kol := Kol + 1;
Read (B); {Чтение очередной буквы текста}
End;
Writeln (Kol);
End.