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

Множества

LABEL 1, 4.00, M1, EPS; | Определение процедур и функций | Вложенные подпрограммы | PROGRAM PROS; | И параметров-строк | Типы в Турбо Паскале | Служебные символы | Строковый тип | Перечислимый тип | Ограниченный тип (диапазон) |


Читайте также:
  1. Выпуклые множества
  2. Если некоторые элементы одного множества определенным образом связаны между собой, то соответствующие им элементы другого множества так же связаны.
  3. Количество элементов во множествах (мощность множества)
  4. Метод двадцатого века заключается в использовании не одной, а множества моделей экспериментального исследования, т.е. техники «подвешенного» суждения
  5. Наставление тридцать четвёртое Совершение множества земных поклонов введёт тебя в рай
  6. Операции над множествами.

Множества - наборы однотипных, логически связанных друг с другом обьектов. Характер связи обьектов определяется программистом и не контролируется Турбо Паскалем. Количество элементов в множестве может меняться от 0 до 256. Множество, которое не содержит элементов, назы­вается пустым. От массивов множества отличаются тем, что количество элементов не постоянно. Его можно расширять и сокращать по ходу выпол­нения программы.

Описание типа производится в разделе TYPE в следующем виде:

<ИмяТипа> = SET of <базовый _ тип>,

где <ИмяТипа> - правильный идентификатор ТП; <базовый_тип> - тип эле­ментов множества, в качестве которого может применяться любой порядко­вый тип кроме WORD, Integer, LogInt, ShortInt.

Пример:TYPE

dchar=SET of '1'..'9';

digit=SET of 1..9;

Переменные введенных типов-множеств описываются в разделе VAR. Пример:

VAR

S1, S2, S3: dchar;

S4, S5, S6, S7: digit;

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

VAR S1: set of '1'..'9';

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

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;

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

проверки вхождения (<=) принимает значение TRUE, если первое множество входит во второе, например, [1]<=[1,2];

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

проверки принадлежности (in) возвращает TRUE, если выражение име­ет значение, принадлежащее множеству. Структура этой бинарной операции имеет вид

<выражение> in <множество>;

Примеры:

3 in S6, и [ ] in [0..5] возвращают TRUE;

2*2 in S4 дает FALSE.

Множества имеют компактное машинное представление.

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

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

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

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

Begin

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

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

begin

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

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

end;

End.

Записи

Запись - описание комбинированного типа, состоящее из нескольких полей, каждое из которых имеет свой тип.

Структура записи аналогична таблице.

Записи состоят из фиксированного числа компонентов, называемых полями записи. В отличие от массива компоненты (поля) записи могут быть различного типа. Структура объявления типа "запись" имеет вид

TYPE

<ИмяТипа>=RECORD

<поле1>:<тип поля1>;

<поле2>:<тип поля2>;

...

<полеN>:<тип поляN>

End;

Если тип нескольких полей совпадает, то имена полей можно перечислить через запятую. <ИмяТипа> и поля являются правильными идентификаторами.

Например:

TYPE

DENROGD=RECORD

name:string; {фамилия или имя }

den,mes:byte; {день, месяц}

god:word {год}

end;

Объявление переменных производится, как и для других типов, в разделе VAR:

VAR a,b:DENROGD;

Доступ к каждой компоненте записи производится указанием состав­ного имени: имени переменной и затем через точку имени поля, например:

a.name:= 'MARINA';

a.god:= 1981;

a.den: = 23;

a.mes:= 3;

Таким образом, в типе "запись" определена операция присваивания. Кроме того, как и в массиве, все значения переменных типа "запись" можно присваивать другим переменным того же типа: B:= A;.

Над полями можно выполнять действия, разрешенные для базового типа:

b.god:=а.god+1; {на год старше}.

В качестве переменной может быть объявлен массив записей:

VAR s: array[1..20] of STUDENT;

Пример. Разработать программу формирования списка студентов с указанием дат рождения. Распечатать список в алфавитном порядке.


Дата добавления: 2015-09-05; просмотров: 60 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Структурированные типы данных. Массивы| Program zapis;

mybiblioteka.su - 2015-2024 год. (0.009 сек.)