- •Конспект лекций по информатике
- •Организация данных в эвм и основы программирования
- •1. Основные понятия языка программирования паскаль
- •1.1. Структурное программирование
- •1.2. Основные символы языка
- •1.3. Элементы языка
- •1.4. Интегрированная среда turbo pascal
- •1.5. Структура программы в turbo pascal
- •1.6. Определение типов
- •1.7. Операторы в программе
- •1.7.1. Операторные скобки
- •1.7.2. Операторы ввода
- •1.7.3. Оператор присваивания
- •1.7.4. Условный оператор
- •1.7.5. Пример простой программы
- •1.7.6. Оперетор безусловного перехода
- •1.8. Организация циклов
- •1.8.1. Использование операторов условного и безусловного перехода
- •1.8.2. Цикл с параметром
- •1.8.3. Цикл с предусловием - цикл while
- •1.8.4. Цикл с постусловием - цикл repeat
- •1.9. Оператор выбора варианта
- •1.10. Расположение операторов в программе
- •1.11. Концепция типов данных
- •2. Стандартные простые типы
- •2.1 Целый тип
- •2.1.1. Операции над данными целого типа:
- •2.2. Действительный тип
- •2.2.1. Операции над данными действительного типа:
- •2.3. Логический тип
- •Var p, q, r : Boolean;
- •2.3.1. Алгебра логики в Паскале
- •2.3.2. Законы алгебры логики в Паскале
- •2.4. Символьный тип
- •2.4.1. Символьные строковые константы
- •3. Нестандартные простые типы (определяемые пользователем)
- •3.1. Перечисляемый тип
- •3.2. Ограниченный тип (диапазон, интервал)
- •4. Процедуры и функции
- •4.1. Описание процедур
- •4.2. Стандартные процедуры
- •4.3. Описание функций
- •4.4. Стандартные функции
- •4.5. Итерация и рекурсия
- •4.6. Побочный эффект рекурсии
- •4.7. Предварительное описание (ссылки вперед)
- •5. Регулярные типы
- •5.1. Одномерный массив, или переменные с индексами
- •Алгоритмы сортировки массивов
- •1. Метод пузырька (метод обменной сортировки с выбором)
- •2. Сортировка выбором
- •3. Метод Шелла
- •4. Метод Хoopа
- •5.2. Многомерные массивы
- •5.3. Упакованные массивы
- •5.4. Строки
- •6. Множественные типы
- •6.1. Свойства множеств
- •6.2. Операции над множествами
- •7. Комбинированные типы
- •7.1. Описание записей и действия с ними
- •7.2. Оператор присоединения.
- •7.3. Записи с вариантами
- •8. Типизированная константа
- •8.1. Простая типизированная константа
- •8.2. Структурированная (сложная) типизированная константа
- •8.2.1. Типизированная константа массива
- •8.2.2. Типизированная константа записи
- •8.2.3. Типизированная константа множества.
- •9. Преобразование типов
- •9.1. Неявные преобразования типов
- •9.2. Использование стандартных функций для преобразования
- •9.3. Явные преобразования типов
- •9.5. Совместимость типов
- •10. Файловые типы
- •10.1. Определение файлового типа
- •10.2. Структура файла
- •10.3. Имя файла
- •10.4. Описание файлового типа
- •10.5. Файловая переменная
- •10.6. Операции над файлами
- •10.7. Типизированные файлы
- •10.8. Текстовые файлы
- •10.9. Нетипизированные файлы
- •10.10. Стандартные файлы inpuTиOutput
6. Множественные типы
Множественный тип данных строится на основе некоторого базового типа, в качестве которого может быть любой простой тип, кроме действительного и неограниченного целого.
Множеством называется совокупность объектов, обладающих некоторым общим свойством.
Множества могут состоять из любого числа объектов (элементов), но могут и не содержать элементов.
В математике под множеством понимается некоторый набор элементов. Например, множество плоских геометрических фигур:
[круг, ромб, квадрат, треугольник, прямоугольник].
Все элементы одного множества различны и неупорядочены. Элементы множества не могут повторяться.
Пример.[круг, ромб, круг] – неверная запись множества.
[круг, ромб, квадрат]=[ромб, круг, квадрат] – одинаковы и равны между собой.
Множество в языке программирования Паскаль – это ограниченный, неупорядоченный набор различных элементов одинакового типа.
Элементы множества заключаются в […].
Множество может не содержать ни одного элемента. В этом случае оно называется пустым [ ].
Если множества используются в программе, то они должны быть описаны либо с помощью раздела Type, либо непосредственно в разделе переменных.
Type имя_типа = set of t;
базовый тип элементов множества (любой простой кроме realиinteger)
Varимя_множества: имя_типа;
Дело вот в чём. Размерность множества, то есть допустимое количество элементов множества обычно небольшое. Для большинства компьютеров оно не превышает 256 (то есть от 0 до 255). Поэтому объявление
SetofIntegerявляется недопустимым.
Вместе с тем запись TypeM=SetofBooleanявляется корректной, поскольку объявляется множество, содержащее два элемента со значениямиTrueиFalse.
Таким образом, указанным ограничениям на тип элемента удовлетворяют базовые стандартные типы:
Byte,
Char,
перечислимые типы,
ограниченные типы.
Пример. Type Letters = Set of ‘A’..’Z’;
Holidays = Set of 1..31;
U = Set of Char;
I = Set of Byte;
Пример. Type M = Set of (A, B, C, D);
VarG,F:M;
Здесь задан тип множества М. В разделе переменных указано, что переменные имеют тип М, то есть могут принимать значения любых из перечисленных букв, например:
G := [A, B, D];
F := [C, A, B];
Пример. Type Town = (Moscow, Kiev, Yalta);
M = Set of Town;
Var P1, P2 : M;
P3 : Set of ‘A’..’Z’;
P4,P5 :Setof0..9;
Переменная Р1 множественного типа М может принимать следующие значения:
[Moscow] [Kiev] [Moscow, Yalta] [Moscow, Kiev] [Kiev, Yalta] [Moscow, Kiev, Yalta] [Yalta]
В общем случае, если базовое множество содержит Nэлементов, производный множественный тип определяет 2Nподмножеств. Смотритепример: 3 элемента, значит, 23= 8 подмножеств.
Другой примерописания:
TypeMNOG=Setof1980..2000;
VarM1,M2:MNOG;
В программе элементами множеств М1 и М2 могут быть любые целые числа от 1980 до 2000, например:
M1:= [1988, 1995, 1981];
M2:= [1980, 1981, 1982, 1983];
Приведём примерыописания множеств непосредственно в разделе переменных:
Var M1, M2: Set of 1980..2000;
Var MS: Set of Char;
Здесь элементами являются символьные константы, например:
MS:= [‘A’, ‘N’, ‘R’];
Количество элементов, входящих в множество, может быть ограничено. Оно зависит от компьютера и версии языка Паскаль.