- •Р.К. Ахмадулин технология программирования
- •Оглавление
- •§1. Основные понятия
- •Основные символы языка Паскаль
- •Элементарные конструкции языка Паскаль
- •Примеры записи чисел и выражений на языке Паскаль
- •Вопросы для самопроверки
- •§2. Типы данных
- •Целые типы
- •Вещественные типы
- •Символьный тип
- •Логический тип
- •Скалярные типы, определяемые пользователем
- •Вопросы для самопроверки
- •§3. Операции и выражения
- •Приоритет операций и отношений в выражениях
- •Стандартные (встроенные) функции
- •Вопросы для самопроверки
- •§4. Структура программы
- •Комментарии
- •Директивы компилятора
- •Оформление исходного текста
- •Вопросы для самопроверки
- •§5. Переменные и константы. Оператор присваивания
- •Понятие константы
- •Понятие переменной
- •Оператор присваивания
- •Совместимость типов данных
- •Понятие типизированной константы
- •Вопросы для самопроверки
- •§6. Процедуры ввода и вывода
- •Процедуры вывода
- •Форматированный вывод
- •Процедуры ввода
- •Вопросы для самопроверки
- •§7. Условный оператор и оператор выбора. Оператор перехода
- •Условный оператор if
- •Понятие составного оператора
- •Оператор выбора
- •Оператор перехода
- •Вопросы для самопроверки
- •§8. Операторы цикла
- •Циклы с заданным числом итераций
- •Циклы с предусловием
- •Циклы с постусловием
- •Вопросы для самопроверки
- •§9. Пример использования циклов
- •Вычисление факториала
- •Вычисление суммы по заданной формуле
- •Вычисление суммы по формуле с заданной точностью
- •Вычисление максимального элемента последовательности
- •Вычисление длины последовательности элементов
- •Вопросы для самопроверки
- •§10. Массивы
- •Описание массива
- •Обращение к элементам массива
- •Многомерные массивы
- •Допустимые операции с массивами
- •Инициализация массива
- •Вопросы для самопроверки
- •§11. Алгоритмы сортировки
- •Сортировка выбором
- •Сортировка вставкой
- •Пузырьковая сортировка
- •Улучшенные сортировки
- •Вопросы для самопроверки
- •§12. Строковый тип
- •Описание строковых переменных
- •Операции над строками
- •Процедуры и функции для работы со строками
- •Вопросы для самопроверки
- •§13. Записи
- •Объявление записи
- •Обращение к записям
- •Оператор присоединения with
- •Записи с вариантами
- •Инициализация записи
- •Вопросы для самопроверки
- •§14. Множества
- •Описание множеств
- •Операции над множествами
- •Пример использования множеств
- •Множества как типизированная константы
- •Вопросы для самопроверки
- •§15. Процедуры и функции
- •Понятие процедуры и функции
- •Структура процедуры
- •Структура функции
- •Формальные параметры
- •Глобальные и локальные объекты
- •Вопросы для самопроверки
- •§16. Модули
- •Понятие модуля
- •Стандартные модули в Турбо Паскаль
- •Подключение модулей
- •Структура модуля
- •Вопросы для самопроверки
- •§17. Файлы
- •Понятие файла
- •Процедуры и функции для работы с файлами
- •Понятие буфера ввода-вывода
- •Вопросы для самопроверки
- •§18. Типизированные файлы
- •Описание типизированных файлов
- •Операции над типизированными файлами
- •Последовательный и прямой доступ
- •Вопросы для самопроверки
- •§20. Текстовые файлы
- •Описание типизированных файлов
- •Чтение и запись
- •Конец строки и конец файла
- •Дополнительные процедуры для работы с текстовыми файлами
- •Файлы Input и Output
- •Вопросы для самопроверки
- •§21. Ссылки и указатели
- •Понятие указателя
- •Описание указателей
- •Операции с указателями
- •Выделение и освобождение динамической памяти
- •Вопросы для самопроверки
- •Рекомендуемая литература
- •Технология программирования
- •625000, Тюмень, ул. Володарского, 38
- •625039, Тюмень, ул. Киевская, 52
Вопросы для самопроверки
1. Чем записи отличаются от массивов?
2. Как называются переменные, описываемые внутри записи?
3. Как описываются записи в языке Паскаль?
4. Как происходит обращение к полям записи?
5. Для чего служит оператор With?
§14. Множества
Множество (Set) – это структурированный тип данных, который позволяет хранить до 256 элементов. Основное отличие множества от массивов и строк заключается в том, что его элементы не упорядочены.
Таким образом, множества используют там, где важен сам факт наличия того или иного элемента, вне зависимости от его позиции.
Например, множества подойдут тогда, когда нам нужно знать, какие студенты группы присутствовали на лекции. При этом нам не важно, в какой последовательности они пришли на занятие или ушли с него – важен лишь сам факт присутствия.
Описание множеств
Для описания множеств используют ключевое слово Set, за которым следует of и указывается тип элементов множества:
SET OF <тип элементов множества>
Тип элементов множества может быть любым порядковым, размер которого не превышает 1 байт (256 элементов).
Указанная конструкция может использоваться как в разделе type, так и в разделе var.
Пример: описание множеств
type
TMySet = Set of Char; {множество из 256-ти элементов (символов)}
var
s1: TMySet;
s2: Set of 'a'..'z', 'A'..'Z'; {множество из 52-х элементов (лат. букв)}
s3: Set of 0..10; {множество из 11-ти элементов}
s4: Set of Boolean; {множество из 2-х элементов}
Операции над множествами
В языке Паскаль реализованы все теоретико-множественные операции.
Таблица 14.1.
Операции над множествами в языке Паскаль
Операция |
Запись |
1) Пересечение двух множеств s1 и s2 |
s:=s1*s2; |
2) Объединение двух множеств s1 и s2 |
s:=s1+s2; |
3) Разность двух множеств s1 и s2 (все элементы, которые принадлежат множеству s1 и одновременно не принадлежат множеству s2) |
s:=s1-s2; |
4) Проверка принадлежности элемента el множеству s (результат этой операции имеет тип Boolean) |
el in s |
5) Обозначение для пустого множества |
[] |
6) Создание множества из списка элементов |
s:=[e1,_,eN]; |
7) Проверка двух множеств на равенство или строгое включение (результат этих операций имеет тип boolean) |
s1 = s2 s1 > s2 s1 < s2 |
Чтобы представить набор констант в виде множества в тексте программы, необходимо заключить их в квадратные скобки:
[<список_элементов>]
Список элементов может быть задан перечислением значений через запятую или интервалом. Элементы и границы интервалов могут быть переменными, константами и выражениями. Если левая граница интервала окажется больше правой, результатом будет пустое множество.
Пример: задание различных множеств:
if c in ['a','e','i','o','u']
then writeln('Гласная буква');
if set1 < [k*2+1..n, 13] then set1:=[];
Следует отметить, что не существует такой процедуры, которая позволила бы распечатать содержимое множества на экране. Выполнить это можно лишь программно.
Пример: печать на экране элементов множества
var
s1: Set of ‘1’..’10’;
i: Integer;
…
for i:=1 to 10 do
if i in s1 then writeln(i);