- •Содержание
- •1Алгоритмы линейных структур
- •2 Циклы
- •Введение
- •1 Алгоритмы линейных структур
- •1.1 Этапы разработки программы
- •1.2 Основные понятия
- •1.3 Основная структура программы
- •1.4 Алфавит языка
- •1.5 Идентификаторы
- •1.6 Константы
- •1.7 Понятие переменной Типы
- •1.8 Оператор присваивания Арифметические выражения
- •1.9 Операторы ввода и вывода информации
- •1.10 Практические задачи
- •1.11 Примеры решения задач
- •2 Циклы
- •2.1 Цикл с предусловием
- •Цикл с постусловием
- •Цикл со счетчиком
- •2.2 Задачи
- •2.3 Примеры
- •3 Немного об алгоритмах Алгоритм Кнута - Морриса - Пратта
- •Алгоритм Бойера – Мура
- •Алгоритм Рабина
- •Алгоритмы сортировки
- •Метод пузырька.
- •Сортировка выбором
- •Метод Шелла
- •Метод Хoopа
- •3.1 Разветвляющиеся алгоритмы
- •3.2 Задачи Свойства и виды треугольников (задачи 1-4)
- •Свойства и виды четырехугольников (задачи 5, 6)
- •Каким будет значение переменной а после выполнения фрагмента программы с составным оператором?
- •4 Массивы
- •4.1 Объявление массива
- •4.2 Действия над массивами
- •4.3 Вывод массива
- •4.4 Ввод массива
- •4.5 Сортировка массива
- •4.6 Поиск в массиве
- •4.7 Поиск минимального (максимального) элемента массива
- •4.8 Многомерные массивы
- •4.9 Ошибки при использовании массивов
- •4.10 Практические задачи
- •5 Множества
- •5.1 Описание типа множество
- •5.2 Операции над множествами
- •5.3 Группы операций
- •5.4 Упражнения
- •5.5 Задачи Тема: Множества
- •6 Записи
- •6.1 Понятие записи
- •6.2 Оператор присоединения With ... Do
- •6.3 Вариантные записи
- •6.4 Работа с файлами записей
- •6.5 Задачи
- •7 Файлы
- •7.1 Работа с файлами
- •7.2 Текстовые файлы
- •7.3 Типизированные файлы
- •7.4 Нетипизированные файлы
- •7.5 Задачи
- •8 Графика
- •8.1 Графика в Турбо Паскале
- •8.2 Базовые процедуры и функции
- •Процедуры модуля Graph
- •Функции модуля Graph
- •8.3 Экран и окно в графическом режиме
- •8.4 Вывод простейших фигур
- •8.5 Графические процедуры
- •8.6 Построение прямоугольников
- •8.7 Построение многоугольников
- •8.8 Построение дуг и окружностей
- •8.9 Работа с текстом
- •8.10 Построение графиков функций
- •8.11 Циклы в графике. Построение случайных процессов
- •8.12 Создание иллюзии движения
- •Задания
- •Контрольные тесты
- •1. Программирование алгоритмов линейных структур
- •2. Программирование алгоритмов разветвляющейся структуры
- •3. Программирование алгоритмов циклических структур
- •4. Массивы
- •5. Множества
- •6. Записи
- •7. Файлы
- •8. Графика
5 Множества
5.1 Описание типа множество
Множества- это структурированный тип данных, представляющий собой набор взаимосвязанных по какому- либо признаку или группе признаков объектов, которые можно рассматривать как единое целое. Каждый отдельный объект в множестве называется элементом множества. Все элементы множества должны принадлежать одному из скалярных типов, кроме вещественного. Этот тип называется базовым типом множества. Базовый тип задается диапазоном или перечислением. Область значений типа множество- набор всевозможных подмножеств, составленных из элементов базового типа. В выражениях на языке Паскаль значения элементов множества указываются в квадратных скобках: [1,2,3,4], ['а', 'b', 'c'], ['a'..'z'].Если множество не имеет элементов оно называется пустым и обозначается как [ ]. Количество элементов множества называется его мощностью.
Для описания множественного типа используется словосочетание set of (множество из…). Синтаксическая диаграмма множественных типов имеет следующий вид:
Изображение множества:
Исходя из синтаксической диаграммы, представим формат записи: множественных типов:
Type
<имя типа>= set of <элемент1,…,элемент n>;
var
<идентификатор,…>: <имя типа>;
Можно задать множественный тип и без предварительного описания:
Var
<идентификатор, …>: set of <элемент1,…>;
Примеры:
1. TYPE
Simple= set of 'a'..'h';
Number= set of 1..31;
Var
Pr: Simply;
N: Number;
Letter: set of char;{Определение множества без предварительного описания в разделе типов}.
В данном примере переменная Pr может принимать значения символов латинского алфавита от 'a' до 'h'; N- любое значение в диапазоне 1..31; Letter- любой символ. Попытка присвоить другие значения вызовет программное прерывание.
2. TYPE
SetOfChar = Set Of Char; {множество символов}
SetOfByte = Set Of Byte; {множество чисел}
SetOfDigit = Set of 0..9; {множество чисел от 0 до 9}
SetOfDChar = Set of ’0’.. ’9’; {множество символов ’0’,’1’ ’2’.. ’9’}
Можно использовать не только базовые типы:
3. TYPE
ElemColor = (Red, Yellow, Blue); {круглые скобки!}
Color = Set of ElemColor;
Последнее описание можно записать короче:
Color = Set of (Red, Yellow, Blue);
Если же переменная описана:
VAR S: Set of (1,3,5);
то возможны следующие присваивания:
S := [];
S := [2];
S := [1,3];
S := [5,1,3];
Элементы множества записываются в квадратных скобках через запятую. Возможно и указание диапазонов.
Sprost := [2,3,5,7,11];
Sdiap := [1..4, 6,8, 10..15];
Schar1 := [’a’, ’d’, ’n’, ’z’];
ScharRus := [’а’.. ’п’, ’р’.. ’я’];
Spusto := []; {пустое множество}
Заметим, что порядок следования и число повторений не имеет значения. Так следующие множества означают одно и то же.
[1,2,3]
[3,1,2]
[2,3,2,1,1,1]
Как элементы множества в квадратные скобки могут включаться константы и переменные соответствующих базовых типов, а также выражения, чьи результаты совпадают с базовым типом множества. Например:
VAR
X: byte;
S : Set of Byte;
…
X:=7;
S:=[1,3,X];
S:=S+[X+1];
Количество элементов множества не должно превышать 256. соответственно номера значений базового типа должны находиться в диапазоне 0..255. Контроль диапазонов осуществляется включением директивы {$R+}. Объем памяти, занимаемый одним элементом множества, составляет 1 бит. Объем памяти для переменной типа множество вычисляется по формуле:
Объем памяти =(Max DIV 8) - (Min DIV 8) + 1 , где Max и Min- верхняя и нижняя границы базового типа.