Множество представляет собой некоторую неупорядоченную совокупность элементов, которая является подмножеством допустимых значений определенного порядкового типа, именуемого базовым. В качестве базового типа могут использоваться простые типы: стандартные (кроме действительных и целых), перечисляемый и ограниченный.
Например, в математике – множество фигур на плоскости: прямоугольник, круг, ромб, квадрат и т.п. К множествам в математике применимы следующие операции:
- объединение множеств: С = АÈВ. Каждый элемент множества С является элементом либо множества А, либо множества В;
- пересечение множеств: С = АÇВ. Каждый элемент множества С является элементом множества А и В одновременно;
- разность множеств: С = А\В. Каждый элемент множества С является элементом множества А, но не множества В.
Примеры операций над множествами:
1) {круг, ромб} È {круг, квадрат} = {круг, ромб, квадрат}
2) {круг} Ç {круг, ромб, квадрат} = {круг}
3) {круг, ромб, квадрат}\{круг, квадрат} = {ромб}
|
|
Объявление множества производится следующим образом:
Type ИмяМножества = set of базовый тип;
Пример:
Type Год = set of 1880..2001;
Буква = set of 'A'..'M';
В языке Паскаль операции над множествами обозначаются так:
"+" – объединение множеств;
"*" – пересечение множеств;
"-" – вычитание множеств;
"=", "<>" – проверка множеств на равенство или неравенство (множество А равно множеству В, если каждый элемент множества А является элементом множества В и наоборот);
"<=", ">=" – проверка множеств на включение (множество А включено в множество В (А<=В или В>=А), если все элементы множества А являются также элементами множества В. Результат операции в этом случае может принимать одно из значение: True или False);
In – проверка на принадлежность элемента множеству: С in A – проверка принадлежности элемента множества С множеству А.
Пример.
Имеются три множества символьного типа:
Y1 = {'A', 'B', 'D', 'R', 'M'}
Y2 = {'R', 'A', 'H', 'D'}
Y3 = {'A', 'R'}
Сформировать новое множество: X = (Y1ÇY2)È(Y1\Y2). Вывести на печать новое множество и проверить, включено ли множество Y3 во множество Х.
Program p12_1;
Var
Y1, Y2, Y3: set of Char;
C: Char;
Begin
Y1:=['A', 'B', 'D', 'R', 'M'];
Y2:=['R', 'A', 'H', 'D'];
Y3:=['A', 'R'];
{Формирование и печать множества}
X:=(Y1*Y2) + (Y1-Y2);
Write ('Множество Х=');
For c:= 'A' to 'R' do
if C in X Then Write(C);
Writeln;
{Проверка включения множества Y3 в Х}
if Y3 <= X
then Writeln('Y3 включено в Х')
else Writeln('Y3 не включено в Х');
End.
Записи
Запись представляет собой совокупность ограниченного числа данных различного типа.
Формат записи:
ИмяЗаписи = record
ИмяЭлемента1: тип1;
ИмяЭлемента2: тип2;
...
ИмяЭлементаn: типn;
End;
Пример объявления записи:
|
|
Type
ДатаРождения = record
Год: integer;
Месяц: 1..12;
День: 1..31;
End;
Пример записи: Составим ведомость – список учащихся с их оценками вида:
№ п/п | Фамилия И.О. | Оценка |
Андреев С.Н. | 5 3 4 | |
Кузнецов И.Г. | 5 5 5 | |
Шишкин А.А. | 4 4 5 |
Каждая строка в этой ведомости состоит из отдельных элементов – данные различного типа:
а) порядковый номер – целое десятичное число;
б) Фамилия И.О. – массив символов;
в) оценки – массив целых чисел.
Эти данные можно объединить в одну группу и считать записью. Запись в целом и отдельные ее элементы обозначаются именами, например, такими:
В – имя всей записи; N – порядковый номер; ФИО – фамилия, имя, отчество; Оценка – оценки.
Обращение к элементу записи в программе выполняется с помощью составного имени, которое содержит имя записи и имя элемента, разделенные точкой:
ИмяЗаписи.ИмяЭлемента
Например, В.N, В.ФИО, В.Оценка
Элементы записи вместе с их описанием называются полями записи.
Для представления ведомости объявление записи выглядит так:
Type Ведомость = record
N: integer;
ФИО: string[20];
Оценка: array[1..3] of integer
end;
Var B: Ведомость;
Элемент записи используется в программе так же, как и обычная переменная. Над элементами записи можно выполнять такие же действия, как и над переменными. Например, порядковому номеру N записи В можно присвоить значение 1: B.N:=1; или найти сумму трех оценок: S:= В.Оценка[1] + В.Оценка[2] + В.Оценка[3], ввести значение Ф.И.О.: Readln(В.ФИО).
Пример.
Вычислить средний балл по каждому из трех студентов (в примере - по Андрееву).
program p12_2;
type vedomoct= record
n:integer;
FIO:string[20];
otmetka:array[1..3]of integer;
end;
var b:array [1..3]of vedomoct;
cr:real;
begin
b[1].n:=1;b[1].fio:='Андреев';b[1].otmetka[1]:=5;b[1].otmetka[2]:=3;
b[1].otmetka[3]:=4;
cr:=b[1].otmetka[1]+b[1].otmetka[2]+b[1].otmetka[3];
write('Средний балл Андреева = ',(cr/3):2:0);
readln;
end.