Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика.-3.pdf
Скачиваний:
5
Добавлен:
05.02.2023
Размер:
1.27 Mб
Скачать

тором строится множество, ограничено. В Pascal количество базовых элементов не должно превышать 256. Чтобы создать множество с начальными значениями используется конструкция:

const

seLit: Set of 'A'..'D'= [];

Пример программы.

Program simple_mno; Var

iI: intger; szS: string;

seA: set of char;

begin seA:=[]; readln(szS);

for iI:=1 to length(s) do begin

if not (szS[iI] in seA) then include(seA, szS[iI]);

end;

end.

3.2.4Записи

Часто бывают задачи, в которых требуется обработка логически связанных, но разнотипных данных. В таких случаях мы не можем использовать массивы.

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

56

носиться к любому типу, допустимому в языке Pascal (в том числе и к составному типу), за исключением файлового типа.

Описание записи в языке Pascal осуществляется с помощью служебного слова Record, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом End.

Для наглядности рассмотрим импользование записей на примере телефонной книги. Книжка является удобной, если в ней предусмотрены разные поля: фамилия, имя, телефон, e-mail, и т.д. Для этого в Pascal будем использовать конструкцию:

type TAdressBook=Record

name: String[20]; numb: String[10]

end;

var

AdressBook: TadressBook;

Описание записей возможно и без использования имени типа (сразу в разделе var), например:

var

AdressBook: Record

name: String[20]; numb: String[10]

end;

Это достаточно простая конструкция, которая впринципе может быть заменена массивом (конечно это ухудшит читаемочть кода программы, но тем не менее:

Var

57

AdressBook: array[1, 2]of string;,

здесь мы полагаем AdressBook[1] – Имя,

AdressBook[2] – телефон. Согласитесь, что это достаточно не удобно).

Обращение к записи в целом допускается только в операторах присваивания, где слева и справа от знака присваивания используются имена записей одинакового типа. Во всех остальных случаях оперируют отдельными полями записей. Чтобы обратиться к отдельной компоненте записи, необходимо задать имя записи и через точку указать имя нужного поля, например:

AdressBook.name AdressBook.numb (Замете как нагляден становится код программы)

Такое имя называется составным. Компонентой записи может быть также запись, в таком случае составное имя будет содержать не два, а большее количество имен. И вообще надо сказать, что чаще как рас и используются более сложные конструкции. Ниже в примере это будет рассмотрено.

Обращение к компонентам записей можно упростить, если воспользоваться оператором присоединения with.

Он позволяет заменить составные имена, характеризующие каждое поле, просто на имена полей, а имя записи определить в операторе присоединения:

with AdressBook do begin

name:=’Саня’; numb:=’89606739217’;

end;

58

Чтобы при создании записи изначально записать в нее значения, используется конструкция:

type

RecType= Record

x,y: Word; ch: Char;

dim: Array[1..3] of

Byte

end;

const

Rec: RecType= ( x: 127; y: 255; ch: 'A';

dim: (2, 4, 8) );

Пример программы создания Телефонной книги

на 100 номеров.

Program phone; Type

TAdressBook=record

szName, szFamil:

string[20];

szNumb: string[10]; birth: record

szMonth: string; day: 1..31; year: 1900..

2100;

end;

End;

Var

AdressBook: array[1..100]of TAdressBook;

59