- •§1. Начало программирования на языке Паскаль.
- •Краткое знакомство.
- •Функциональные клавиши Турбо Паскаль.
- •§2. Алфавит языка Паскаль. Переменные. Типы переменных Алфавит языка Паскаль.
- •Стандартные математические функции
- •Типы переменных
- •§3. Операторы присваивания.
- •Оператор ввода-вывода.
- •Арифметические операции.
- •Стандартные функции
- •Правила записи арифметических выражений.
- •Правила записи стандартных функций.
- •Оператор ввода .
- •Оператор вывода .
- •§4. Структура программы.
- •Первая программа.
- •Эксперименты с программой.
- •§5. Разветвляющие алгоритмы. Составной оператор
- •Оператор if или условный оператор
- •Блок-схема полного у словного оператора
- •Блок-схема неполного у да Условие словного оператора
- •§6. Оператор цикла с параметром Циклический алгоритм
- •Цикл с предусловием «Пока»
- •Цикл с постусловием «До»
- •Цикл с параметром «Для» Цикл с параметром «Для»
- •Блок-схема цикла «for»
- •§7. Базовые циклические алгоритмы
- •1. Алгоритм вычисления суммы чисел.
- •2. Подсчет количества чисел удовлетворяющих заданному условию.
- •3. Вычислить сумму чисел, кратных 3, из десяти чисел введенных с клавиатуры.
- •4. Алгоритм вычисления n!.
- •5. Алгоритм вычисления аn.
- •§8. Цикл с предусловием while
- •Блок-схема цикла «Пока»
- •§9. Оператор цикла с постусловием Repeat
- •Блок-схема цикла «До»
- •§10. Эксперимент с программой. Лабораторная работа
- •§11. Оператор варианта выбора
- •§12. Типы определенные пользователем Раздел описания типов
- •Перечислимый тип данных
- •§13. Вложенные циклы
- •§14. Одномерные массивы Работа с элементами
- •Способы задания значений элементов массива
- •Алгоритмы работы с массивами
- •Эксперименты с программой
- •§15. Обработка символьных массивов. Данные символьного типа.
- •Описание строковых переменных
- •Операции над строковыми переменными
- •§16. Двумерные массивы Работа с элементами
- •5.Вычисление суммы элементов всего двумерного массива.
- •6. Задача поиска максимального (минимального) элемента и его индексов.
- •7. Алгоритм поиска минимального элемента и его индексов для всего массива.
- •8. Квадратные матрицы.
- •Примеры решения задач
- •§17. Подпрограммы
- •Процедура в Паскале и ее формат.
- •Функции
- •§18. Примеры рекурсивного программирования
- •Задачи с рекурсивной формулировкой
- •Задачи, из постановки которых можно извлечь рекурсию
- •Задачи, которые можно решить как частный случай обобщенной
- •Задачи, в которых можно использовать характеристику или свойство функции
- •§19. Графика
- •Установка цвета и стиля заполнения
- •Процедуры создания графических примитивов
- •1. Текущий указатель.
- •2. Вывод точки
- •3. Вывод отрезка
- •4. Построение прямоугольника
- •5. Построение дуг, окружностей, эллипсов.
- •6. Построение закрашенного эллипса:
- •7. Заполнение внутренней или внешней области замкнутой фигуры.
- •Материалы для дополнительного чтения. §20. Файловый тип данных
- •Связь переменной файлового типа с файлом на диске.
- •Чтение из файла.
- •Закрытие файла
- •Признак конца файла
- •Запись в файл
- •Прямой доступ к элементам файла
- •§21. Текстовые файлы
- •§22. Множества
- •Операции над множествами
- •Операция определения принадлежности элемента множеству
- •Сравнение множеств
- •§23. Комбинированный тип данных (записи)
- •2. С использованием оператора присоединения.
- •§24. Приближенные вычисления.
- •§25. Основы структурного программирования
- •10. Комплексный пример
- •Содержание
§22. Множества
Множество в Паскале представляет собой набор различных элементов одного (базового) типа.
Базовый тип - это совокупность всех возможных элементов множества. Всего в базовом типе должно быть не более 256 различных элементов. Значение переменной множественного типа может содержать любое количество различных элементов базового типа - от нуля элементов (пустое множество) до всех возможных значений базового типа
Множества, используемые в программе, могут быть описаны либо в разделе Type:
Type <имя типа> = Set Of <тип элементов>;
Var <имя множества> : <имя типа>;
Либо непосредственно в разделе описания переменных Var:
Var <имя множества> : Set Of <тип элементов>;
Пример.
Type mnog_Char=Set Of Char;
Var mn1 : Set Of Char;
mn2 : mnog_Char;
mn3 : Set Of ‘A’..’Z’;
s1 : Set Of Byte;
s2 : Set Of 1000..1200;
Здесь mn1 и mn2 - это множества символов; так как различных символов всего 256, то тип Char можно использовать в качестве базового;
mn3 - множество больших латинских букв;
s1 - множество целых чисел (от 0 до 255); так как тип Byte содержит только целые числа от 0 до 255, его тоже можно использовать в качестве базового типа элементов;
s2 - множество целых чисел от 1000 до 1200.
Формирование (конструирование) множеств. В программе элементы множества задаются в квадратных скобках, через запятую. Если элементы идут подряд друг за другом, то можно использовать диапазон.
Пример Type digit = Set Of 1..5;
Var s : digit;
Переменная s может принимать значения, состоящие из любой совокупности целых чисел от 1 до 5;
[ ] - пустое множество;
[1], [2], [3], [4], [5] - одноэлементные множества;
[1,2], [1,3], ...., [2,4], [4,5] - двухэлементные множества (пара любых элементов);
[1,2,3], [1,2,4], ... , [3,4,5] - трехэлементные (тройка элементов);
[1,2,3,4], [1,2,3,5], [1,2,4,5], [1,3,4,5], [2,3,4,5] - четырехэлементные;
[1,2,3,4,5] - полное множество (взяты все элементы базового типа).
Операции над множествами
Объединение двух данных множеств называется множество элементов, принадлежащих хотя бы одному из этих множеств. Знак операции объединения множеств - «+».
A B A+B
Примеры
1) [‘A’, ‘F’] + [‘B’, ‘D’] = [‘A’, ‘F’, ‘B’, ‘D’];
2) [1..3, 5, 7, 11] + [3..8, 10, 12, 15..20] = [1..8, 10..12, 15..20]
Пусть S1:=[1..5, 9], a S2:=[3..7, 12]. Тогда если S:=S1 + S2,
то S=[1..7, 9, 12].
Пусть А1:=[‘a’..’z’]; A1:=A1 = [‘A’]. Тогда A1=[‘A’, ‘a’..’z’].
Пересечением двух множеств называется множество элементов, принадлежащих одновременно и первому, и второму множеству. Знак операции пересечения - «*».
А
B
A*B
Примеры.
1) [‘A’, ‘F’] * [‘B’, ‘D’] = [ ] , так как общих элементов нет;
[1..3, 5, 7, 11] * [3..8, 10, 12, 15..20] = [3, 5, 7];
если S1:=[1..5, 9] и S2:=[3..7, 12], a S:=S1 * S2, то S=[3..5].
Разностью двух множеств называется множество, состоящее из тех элементов первого множества, которые не являются элементами второго. Знак операций вычитания множеств - «»
A B A-B
Примеры.
[‘A’, ‘F’] - [‘B’, ‘D’] = [‘A’, ’F’ ] , так как общих элементов нет;
[1..3, 5, 7, 11] - [3..8, 10, 12, 15..20] = [1, 2, 11];
если S1:=[1..5, 9] и S2:=[3..7, 12], a S:=S1 - S2, то S=[1, 2, 9];
A1:=[‘A’..’Z’]; A1:=A1 - [‘A’]. Тогда А1=[‘B’..’Z’].
