- •1. Постановка задачи:
- •Структура программы на Паскале
- •Классификация типов
- •Стандартные типы данных Логические типы Внутреннее представление
- •Операции
- •Целые типы Внутреннее представление
- •Операции
- •Стандартные функции и процедуры
- •Вещественные типы Внутреннее представление
- •Операции
- •Стандартные функции
- •Символьный тип
- •Порядковые типы
- •Алфавит языка
- •6.2. Идентификаторы
- •6.3. Константы
- •6.4. Выражения
- •6.5. Операции
- •Составной оператор
- •Оператор if выполняется так:
- •Оператор if может иметь сокращенную форму. Её синтаксис:
- •10.1. Процедура
- •10.2. Функция
- •10.3. Формальные и фактические параметры
- •10.3.1. Параметры-значения
- •Динамическая память
- •1. Объявление указателей
- •2. Выделение и освобождение динамической памяти
- •3. Процедуры и функции для работы с динамической памятью
- •Работа с файлами на языке программирования pascal. Типы файлов, команды для работы с файлами, типизированные, нетипизированные и текстовые файлы
- •Работа с файлами в языке Pascal. Файлы прямого доступа.
- •16. Графические возможности языка. Модуль Graph.
- •6.1. Массив
- •6.2. Строка типа string
- •6.3. Asciiz-строка
- •6.4. Запись
- •6.5. Множество
- •6.6. Файл
- •3.1. Алгоритмы обработки массивов
- •3.2. Ввод-вывод элементов одномерного массива
- •3.3. Вычисление суммы элементов массива
- •3.4. Вычисление произведения элементов массива
- •3.5. Поиска максимального элемента в массиве и его номера
- •3.6. Сортировка элементов в массиве
- •3.6.1. Сортировка методом "пузырька"
- •3.6.2. Сортировка выбором
- •3.6.3. Сортировка вставкой
- •3.7. Удаление элемента из массива
- •3.8. Примеры алгоритмов обработки массивов
- •20.Алгоритмы обработки массивов: алгоритмы на двумерных массивах.
- •21.Динамические структуры данных: очередь.
- •Занесение элемента в очередь
- •Извлечение элемента из очереди
- •Занесение элемента в стек
- •Извлечение элемента из стека
- •Абстрактные типы данных
- •Объекты и классы
- •Базовые принципы ооп
- •Пакетирование (инкапсуляция)
- •Наследование
- •Полиморфизм
- •Описание объектного типа
- •Иерархия типов (наследование)
- •Полиморфизм и виртуальные методы
- •Статические методы
- •Виртуальные методы
6.5. Множество
В языке Паскаль типом-множеством называется множество-степень исходного множества объектов
порядкового типа, т. е. множество всевозможных сочетаний объектов исходного множества.
Число элементов исходного множества в Turbo Pascal не может быть больше 256, а порядковые
номера элементов (т. е. значение функции Ord) должны находиться в пределах от 0 до 255.
Для задания типа-множества следует использовать зарезервированные слова set и of, а затем
указать элементы этого множества, как правило, в виде перечисления или диапазона, например:
type
Alfa = set of 'A'..'Z';
Count = set of (Plus, Minus, Mult, Divid);
Ten = set of 0..9;
Number = set of '0'..'9' ;
Введя тип-множество, можно задать переменные или типизированные константы этого
типа-множества.
При задании значений константе-множеству ее элементы перечисляются через запятую
(допустимо указывать диапазоны) и помещаются в квадратные скобки. Например, для введенных
выше типов можно задать такие переменные и типизированные константы:
var
CharVal: Alfa;
Operation: Count;
const
Index: Ten = [0, 2, 4, 6, 8];
Digit: Number = ['0'..'9'];
Примечание.
Так же как и для других структурированных типов, тип-множество можно ввести непосредственно
при задании переменных или типизированных констант:
var
CharVal: set of 'A'..'Z';
Operation: set of (Plus, Minus, Mult, Divid);
const
Index: set of 0..9 = [0, 2, 4, 6, 8];
Digit: set of '0'..'9'=['0'..'9'];
Множеству можно в программе присвоить то или иное значение. Обычно значение задается с
помощью конструктора множества. Конструктор задает множество элементов с помощью
перечисления в квадратных скобках выражений, значения которых дают элементы этого множества.
Допустимо использовать диапазоны элементов.
Пример. Следующие структуры являются конструкторами множеств:
[Plus, Minus]
[1..К mod 12, 15]
[Chr(0)..Chr(31), 'A' , 'В' ]
В каждое множество включается и т. н. пустое множество [ ], не содержащее никаких элементов.
Конструктор множества можно использовать и непосредственно в операциях над множествами.
Для множеств определены следующие операции:
+ - объединение множеств;
- - разность множеств;
* - пересечение множеств;
= - проверка эквивалентности двух множеств;
<> - проверка неэквивалентности двух множеств;
<= - проверка, является ли левое множество подмножеством правого множества;
>= - проверка, является ли правое множество подмножеством левого множества;
in - проверка, входит ли элемент, указанный слева, в множество, указанное справа.
Результатом операции объединения, разности или пересечения является соответствующее
множество, остальные операции дают результат логического типа.
Пример.
Ввести строку символов, состоящую из латинских букв, цифр и пробелов.
Осуществить проверку правильности введенных символов.
program EXAMPLE13;
var
Str: string;
L: Byte;
Tru: Boolean;
begin
WriteLn('Введите строку');
ReadLn(Str);
L := Length(str); {число введенных символов}
Tru := L > 0; {true, если не пустая строка}
while Tru and (L > 0) do {проверка с конца строки}
begin
Tru:=Str[L] in ['0'..'9', 'A'.,'Z', 'a'..'z', ' '];
{проверка допустимости символа}
Dec(L) {предыдущий символ}
end;
if Tru then
WriteLn('Правильная строка') else
WriteLn('Неправильная строка')
end.