
- •Основные понятия языка программирования паскаль
- •Структурное программирование
- •Основные символы языка
- •Элементы языка
- •Интегрированная среда turbo pascal
- •Структура программы в turbo pascal
- •Определение типов
- •Операторы в программе
- •Операторные скобки
- •Операторы ввода
- •Оператор присваивания
- •Оператор условного перехода
- •Оперетор безусловного перехода
- •Организация циклов
- •Использование операторов условного и безусловного перехода
- •Цикл с параметром
- •Цикл с предусловием - цикл while
- •Цикл с постусловием - цикл repeat
- •Оператор выбора варианта
- •Концепция типов данных
- •Стандартные простые типы Целый тип
- •Операции над данными целого типа:
- •Действительный тип
- •Операции над данными действительного типа:
- •Логический тип
- •Символьный тип
- •Символьные строковые константы
- •Нестандартные простые типы (определяемые пользователем)
- •Перечисляемый тип
- •Ограниченный тип (диапазон, интервал)
- •Процедуры и функции
- •Описание процедур
- •Стандартные процедуры
- •Описание функций
- •Стандартные функции
- •Итерация и рекурсия
- •Побочный эффект рекурсии
- •Предварительное описание (ссылки вперед)
- •Регулярные типы Одномерный массив
- •Алгоритмы сортировки массивов
- •1. Метод пузырька (метод обменной сортировки с выбором)
- •Многомерные массивы
- •Упакованные массивы
- •Множественные типы
- •Свойства множеств
- •Операции над множествами
- •Комбинированные типы Описание записей и действия с ними
- •Оператор присоединения.
- •Записи с вариантами
- •Типизированная константа
- •Простая типизированная константа
- •Структурированная (сложная) типизированная константа Типизированная константа массива
- •Типизированная константа записи
- •Типизированная константа множества.
- •Преобразование типов
- •Неявные преобразования типов
- •Использование стандартных функций для преобразования
- •Явные преобразования типов
- •Эквивалентность типов
- •Совместимость типов
- •Файловые типы
- •Определение файлового типа
- •Структура файла
- •Имя файла
- •Описание файлового типа
- •Файловая переменная
- •Операции над файлами
- •Типизированные файлы
- •Ссылочные типы (указатели) Статические и динамические переменные
- •Ссылочные типы (указатели)
- •Удаление узла из стека:
- •Человек
- •Человек
- •Вставка
- •Динамические переменные
- •Процедуры создания и удаления динамических переменных
- •Динамические списковые структуры
- •Однонаправленные списки
- •Двунаправленные списки
- •Очереди
- •Деревья
- •Модульная система turbo pascal
- •Uses mod 1, mod 2, mod 3; (подключение трех модулей) Общая структура модуля
- •Использование идентификаторов модуля
- •Использование модуля в программе
- •Компиляция модулей
- •Системный файл turbo.Tpl
- •Стандартные модули
- •Модуль crt
- •Модуль dos
- •Модуль printer
- •Модуль overlay
- •Модуль string
- •Процедуры модуля graph
- •Графические процедуры
- •Координаты. Окна. Страницы
- •Линии и точки
- •Многоугольники
- •Дуги,окружности, эллипсы
Множественные типы
Множественный тип данных строится на основе некоторого базового типа, в качестве которого может быть любой простой тип, кроме действительного и неограниченного целого.
Множеством называется совокупность объектов, обладающих некоторым общим свойством.
Множества могут состоять из любого числа объектов (элементов), но могут и не содержать элементов.
В математике под множеством понимается некоторый набор элементов. Например, множество плоских геометрических фигур:
[круг, ромб, квадрат, треугольник, прямоугольник].
Все элементы одного множества различны и неупорядочены. Элементы множества не могут повторяться.
Пример. [круг, ромб, круг] – неверная запись множества.
[круг, ромб, квадрат]=[ромб, круг, квадрат] – одинаковы и равны между собой.
Множество в языке программирования Паскаль – это ограниченный, неупорядоченный набор различных элементов одинакового типа.
Элементы множества заключаются в […].
Множество может не содержать ни одного элемента. В этом случае оно называется пустым [ ].
Если множества используются в программе, то они должны быть описаны либо с помощью раздела Type, либо непосредственно в разделе переменных.
Type имя_типа = set of t;
базовый тип элементов множества (любой простой кроме real и integer)
Var имя_множества: имя_типа;
Дело вот в чём. Размерность множества, то есть допустимое количество элементов множества обычно небольшое. Для большинства компьютеров оно не превышает 256 (то есть от 0 до 255). Поэтому объявление
Set of Integer является недопустимым.
Вместе с тем запись Type M = Set of Boolean является корректной, поскольку объявляется множество, содержащее два элемента со значениями 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);
Var G, F: M;
Здесь задан тип множества М. В разделе переменных указано, что переменные имеют тип М, то есть могут принимать значения любых из перечисленных букв, например:
G := [A, B, D];
F := [C, A, B];
Приведём примеры описания множеств непосредственно в разделе переменных:
Var M1, M2: Set of 1980..2008;
Var MS: Set of Char;
Здесь элементами являются символьные константы, например:
MS:= [‘A’, ‘N’, ‘R’];
Количество элементов, входящих в множество, может быть ограничено. Оно зависит от компьютера и версии языка Паскаль.
Свойства множеств
Все элементы базового типа, образующие множество, должны быть различны. Запись элементов множества (2, 2, 3, 4) некорректна, поскольку два элемента тождественны.
2. Порядок расположения элементов во множестве не фиксируется, то есть множества представляют собой неупорядоченные совокупности объектов (элементов). Множества (1, 3, 5, 6), (6, 1, 3, 5) и (5, 3, 1,6) одинаковы.
Важным качеством данного типа значений является наличие новых операций по их обработке.
Операции над множествами
В языке программирования Паскаль имеются следующие операции над множествами:
+ объединение множеств;
* пересечение множеств;
– вычитание множеств;
=, < > проверка множеств на равенство, неравенство; множество А равно множеству В, если каждый элемент множества А является элементом множества В и наоборот, каждый элемент множества В является элементом множества А; иначе множества А и В неравны друг другу; результат операции будет логического типа: True или False;
<= проверка множества на включение; множество А включено в множество В, если элементы множества А являются также элементами множества В; результат операции А <= В – логический: True или False;
IN проверка на принадлежность какого-либо значения множеству; результат операции – логический: True или False; операция S IN A служит для проверки, принадлежит ли элемент базового типа S множеству А.
Пример. Решето Эратосфена. Составить программу, реализующую алгоритм определения набора простых чисел, не превышающих некоторого заданного числа, то есть алгоритм построения “решета Эратосфена”.
Program Resheto;
const N = 256; {Верхняя граница значений элементов множества}
var S: Set of 2..N;
C, M, P: integer;
begin writeln(‘Введите границу’);
read(P);
writeln(‘Простые числа до ‘, P: 3);
S := [2..N];
For C := 2 to P do
If C in S then
begin writeln(C: 3);
for M := 1 to (P div C) do
S := S – [C * M];
end;
end.