- •Содержание
- •Раздел 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 .29.
<Конструктор_множества> ::=
Рисунок 4.29 – Синтаксическая диаграмма конструктора множества
Как следует из синтаксической диаграммы, конструктор множества – это список разделенных запятой выражений или диапазонов, заключенный в квадратные скобки. При указании диапазона все значения из диапазона входят в результирующее множество. Все значения из списка должны быть одинакового типа – любого скалярного, кроме вещественных. Множество не может содержать более 256 элементов.
Пример 4.2.
Примеры множеств.
[] – пустое множество (не содержит элементов);
[2, 3, 5, 7, 11] – множество простых чисел от 2 до 11.
[‘A’ .. ‘Z’] – множество латинских букв.
[1..10, 100..110] – множество целых чисел от 1 до 10 и от 100 до 110.
[Pn, Vt, Sr] – множество из 3-х элементов перечислимого типа.
[X .. 5*X] – множество целых чисел от текущего значения X до значения выражения 5*X.
Конструктор множества – это фактически множественная константа.
Порядок перечисления элементов в множестве не играет роли. Каждый элемент учитывается только один раз.
Например, множества [1, 2, 3] и [1, 3, 2] – это одно и тоже множество.
Задание множественного типа
При задании множественного типа необходимо задать базовый тип. В совокупность значений множественного типа входят все возможные множества, являющиеся произвольными комбинациями значений базового типа.
Синтаксис задания множественного типа имеет вид, который представляет Рисунок 4 .30.
Рисунок 4.30 – Синтаксическая диаграмма задания множественного типа
Как уже отмечалось, <Базовый_скалярный_тип> - это любой перенумерованный тип, значения которого попадают в диапазон 0 .. 255.
Например:
Set Of 1..3 – значениями этого множественного типа могут быть множества [], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3].
Set Of Boolean – значениями этого множественного типа могут быть множества [True], [False], [True, False], [].
В качестве базового типа может быть использовано имя типа или задание типа.
Задание типа Set аналогично представлению множества с помощью массива:
Array [<Базовый_скалярный_тип>] Of Boolean.
Обработка таких массивов в Паскале неэффективна, поэтому используется тип Set.
Пример 4.3.
Объявление множественного типа.
Type
Ned = (Pn, Vt, Sr, Ch, Pt, Sb, Vs);
Denned = Set Of Ned; {Используется имя базового типа}
Log = Set Of Boolean; {Используется имя базового типа}
Var
Den: Denned;
L1, L: Log;
I1, I2, I: Set Of 1..10; {Используется задание базового типа}
B: Boolean;
В данном примере Den, L1, L, I1, I2, I – это множественные переменные (переменные-множества).
Для присваивания значений множественным переменным используются множественные выражения.
Множественное выражение – это выражение, значением которого является множество. Частным случаем множественных выражений являются множественные переменные и конструкторы множества.
Пример 4.4.
Использование множественных выражений. Для переменных, объявленных в примере 4.3, можно записать:
L1 := [True];
L := L1; {Значение L1 к этому моменту должно быть определено}
I := [1, 3, 5];
Den := [Sub, Vos];