Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-7,13-15,20-32.docx
Скачиваний:
5
Добавлен:
26.09.2019
Размер:
48.11 Кб
Скачать

6.Множества в тп. Описание Типа. Задание значений множественных переменных.

Перечислимый тип.

Удобна возможность введения нестандартных типов, например перечислимый. Формат описания типа имеет вид:

Type <идентификатор>=(<список значений через запятую>);

Замечание: элементами списка могут быть только идентификаторы. Нумерация элементов перечислимого типа начинается снуля.

1)Повторяющиеся элементы недопустимы

2)Переменной перечислимого типа можно назначать любое значение в пределах типа.

3)Нет представления ввода-вывода переменных перечислимого типа

4)Допускается использование операции сравнения для переменных перечислимого типа.

Ограниченный тип.

Описание:

Type<идентификатор> = (<начальное значение>..<конечное значение>)

Начальное и конечное значения могут быть целого или символьного типа, при этом начальное значение <= конечное значение.

Замечание: при преобразовании типа возможен выход за границы типа, {$R+} – сигнал для компилятора, так называемая директива (проверяет выход за границу).

Функция sizeof(x), возвращающая размер памяти в байтах, которую занимает переменная Х, может быть именем типа.

Writeln(sizeof(byte))

Замечание: функция sizeof может использоваться для структурированных типов.

Множества(set).

Структура описания:

Type <идентификатор>=set of <тип элементов>, тип элементов –порядковый, удовлетворяющий ограничению число элементов не более 256 (0..255)

Type letter=set of ‘A’..’Z’;

Type seol=set of (Red,Green);

Type all=set of char;

Замечание: в отличие от массива, множество-неупорядочно, сами элементы множества в памяти не записываются, там хранится только информация об их наличии или отсуствии

Var colset:scol;

Colset:=[Red];

Множество может быть задано в виде списка элементов в квадратных скобках.

[ ]-пустое множество.

Var A:All Let;

A:[‘a’ .. ’c’ , ’A’ .. ‘Z’];

Замечание: в качестве элементов списка в квадратных скобках можно использовать выражение, допустимый тип.

Если начальное и конечное значения диапазона образуют ошибку задания типа.

7.Операции с множеством

1)объединение множеств(+)

2)пересечение(*)

3)Разность(-)

4)Проверка принадлежности элемента множеству(“in”)

5)Отношения(<>, =, <=, >=)

Пример 1 операции:

А+В, в котором будут находиться все элементы А и В, но если есть повторяющиеся, то они пишутся один раз

Пример 2 операции:

А*В , то есть которые повторяются и в А и в В

Пример 3:

А-В

Пример 4:

А in S

Выраж. Множество

Результат-логическое значение.

А - может быть выражение базового типа(Red in Colset) или Red in [Red, Green]=true 8+1 in [1..12]=true

Type chs=set of char;

Var chs 1,chs 2,chs 3,:chs;

Chs 1:=[‘a’ , ‘x’ , ‘e’];

Chs 2:=[‘c’ , ‘x’];

Chs 3:=chs 1 + chs 2;{‘a’ , ‘x’ , ‘e’ , ‘c’};

Chs 3:=chs 1*chs 2;{‘x’};

Chs 3:=chs 1*[‘o’ , ‘n’];{[]};

Chs 3:=chs 1-chs 2; {‘a’ , ‘e’};

Пример использования множества .

Множества можно использовать вместо case или наборов операторов if.

Var sp:set of char;

DZ:char;

……………………..

Sp:=[‘A’ , ‘B’ , ‘C’ , ‘D’ , ‘a’ , ‘b’ , ‘c’ , ‘d’];

Repeat writeln(‘введите допустимое значение’);

Readln(DZ);

Until DZ in sp;