Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Множества и операции над ними



МНОЖЕСТВА - наборы однотипных логически связанных друг с другом объектов. Характер связей между объектами подразумевается лишь программистом и не контролируется Турбо Паскалем. Количество элементов в множестве может меняться от 0 до 255. Множество, которое не содержит элементов, называется пустым. От массивов множества отличаются тем, что количество элементов в нем не постоянно. Его можно расширять и сокращать по ходу выполнения программы.

Описание типа производится в разделе TYPE.

Структура:

<Имя идентификатора>=SET of <имя типа> ;

где <Имя идентификатора> - правильный идентификатор Турбо Паскаля;

<имя типа> - тип элементов множества, в качестве которого может

использоваться любой порядковый тип, кроме WORD, Integer, LogInt,

ShortInt.

пример: TYPE dchar=SET of '1'..'9'; {базовый символьный тип-диапазон}

digit=SET of 0..9;

Переменные этого типа описываются в разделе

VAR S1,S2,S3:dchar; S4,S5,S6,S7:digit;

Для задания множества может использоваться конструктор множества: список (спецификаций) элементов множества, отделенных друг от друга запятыми; список заключается в квадратные скобки. Спецификациями элементов м.б. константы или выражения базового типа, а также пример:

S1:=['1','2','3']; S4:=[0..3,7];

S2:=['2','1','3']; S5:=[4,6];

S3:=['1','2']; S6:=[3..8]; S7:=[]; (пустое)

Два множества считаются эквивалентными тогда и только тогда, когда все их элементы одинаковы причем порядок следования в множестве их безразличен. (S1 и S2 эквивалентны).Если все элементы одного множества входят в другое множество то говорят, что первое включено во второе. (S3 включено в S1).Пустое множество включено в любое другое.

Над множествами определены следующие операции:

1. * пересечение множеств; результат содержит элементы, общие

для обоих множеств. (S4*S6 содержит [3,7]; S4*S5 образует пустое мн.).

2. + объединение множеств, результат содержит элементы первого

множества, дополненные недостающими элементами второго.

S4+S5 содержит [0,1,2,3,4,6,7] S5+S6 содержит [3,4,5,6,7,8]

3. - разность множеств, результат содержит элементы из первого

множества, которые не принадлежат второму.

S6-S5 содержит [3,5,7,8])

S4-S5 содержит [0,1,2,3,7]) []-S4 даст [].

4. Операции отношений:

= операция эквивалентности; возвращает значение TRUE, если оба

множества эквивалентны; (S1:=S2; ['1','2','3']) =['2','3','1']

проверка неэквивалентности; (TRUE, если множества неэквивалентны); [1,2]<>[1] S3<>S2

>= проверка вхождения (TRUE, если второе множество входит в первое;

in - проверка принадлежности. Структура этой бинарной операции:

in ;возвращает TRUE, если выражение имеет значение, принадлежащее множеству.

пример:

3 in S6 TRUE; [] in [0..5] [] in S5

2*2 in S4 FALSE;

Множества имеют компактное машинное представление. Недостаток: невозможность вывода множества на экран, т.к. отсутствует механизм изъятия элемента из множества. Ввод множества возможен только поэлементно.

пример: Можно тип объявлять при описании переменных

VAR S:SET of char; {переменная-множество}

C: char; {элемент множества}

Begin

S:=[]; S:=#0; {обнуление значений}

while C '.' do {цикл до ввода "."}

begin

readln(C); {чтение символа в с}

S:=S+[C]; {добавление его к S}

end; ...

S:=S-['.']; {исключение точки}

End. {Смотри задание на л.р. N 12 }

34. Оператор выбора CASE (варианта). Комментарии.

CASE<ключ выбора> OF

Const1:оператор;

Const2:оператор;

ELSE: оператор;

END;

35. Записи. Вложенные записи. Записи с вариантами.

Запись – это структура данных, состоящая из фиксированного числа компонент, называемых полями записи. В отличие от массива компоненты могут быть различного типа. Поля именуются:

<имя типа>=RECORD<определение полей>END.

Type

Bd = record

D,m: byte;

Y: word

Var a,b: bd;

a::=8;

a.day:=27;-доступ к компоненту

Для упрощения доступа к полям записи используют оператор записи With

With<переменная>do<оператор>;

With c.bp do month:=9;

With c do with bp do month:=9;

c.bp.month:=9;

Вариантные поля

Type f= record

N: string;

Case byte of

0:(bp: string[30]);

1:(c: string[10],e: string[20],ed:1..31)

end;

Имена должны быть уникальны, хотя возможно повторение на различных уровнях

Вложенные поля:

Type bd =record

D,m: byte;

X: word;

End;

Var c: record;

Name: string;

Db: bd;

Begin if c.db.year=1939 then………..

End.

В качестве ключа переменная:

Type rec2=record

C: LongInt;

Case x: byte of

1: (d: word);

2: (e:record

case boolean of

3: (f: real);

3: (g: single);

‘3’: (c: word);

end;

end;

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.