Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Лекции по Turbo Pascal [22].pdf
Скачиваний:
85
Добавлен:
02.05.2014
Размер:
536.84 Кб
Скачать

Одесский колледж компьютерных технологий “СЕРВЕР”

Const п = 20;

Var A: Set of 1. .200; j,x: Byte;

BEGIN A:= [ ];

For j:= 1 to n do Begin Readln(x);

A:= A + [x] End;

For x:= 1 to n do

If (x in A) Then Writeln(x); {Контрольный вывод} Readin;

END.

Сравнение множеств. Множества равны, только если они содержат одни и те же элементы. Например, отношение

[2.. 5] = [2,4,5,3]

имеет значение True, как и отношение

[2,4,5..8]-[7] = [2,4,5,6,8].

Множество А включает множество В (пишут А>=В), если все элементы множества В являются элементами А. То же самое можно записать по-другому: В<=А. Отношение строгого включения нетрудно сделать самому: (А>=В) And (А<>В) (В имеет меньше элементов).

Тип данных записи.

Все типы данных, как простые, так и сложные, которые мы изучали и применяли раньше, могут использоваться для хранения данных только одного типа. Например, в переменных типа integer можно хранить только целые числа. В переменных типа array, set можно хранить только элементы их базового типа и т.д. Но так как вычислительная техника используется в различных информационных, справочных, экономических и других информационных системах, то возникает необходимость в

18

Одесский колледж компьютерных технологий “СЕРВЕР”

организации сложного типа данных для хранения неоднородной (разного базового типа) информации.

Для работы с группой различных по типу данных, в системе программирования Turbo Pascal применяют тип данных «запись».

Рассмотрим пример списка учащихся с их оценками:

Фамилия И.О.

 

Оценки

 

1

Иванов И.И.

5

 

3

4

 

2

2

Петров С.С.

3

 

4

5

 

5

3

Сидоров П.П.

3

 

3

3

 

4

Каждая строка в этой ведомости состоит из отдельных элементов -данных разного типа:

а) порядковый номер - целое число; б) Фамилия И.О. - символьная строка; в) оценки - массив целых чисел.

Эти данные можно объединить в одну группу и считать записью. Запись в целом и отдельные её элементы (поля) обозначаются именами. Введём, например, следующие обозначения: R_EX - имя всей записи; N - порядковый номер; NAME - Фамилия И.О.; RB - оценки.

Обращение к элементу (полю) записи в программе выполняется с помощью уточнённого (составного) имени. Уточнённое имя содержит имя записи и имя элемента и записывается в следующем виде:

<имя записи>.<имя элемента (поля) записи>

Например: R_EX.N R_EX.NAME R_EX.RB

Объявление записи можно производить в разделе объявления переменных VAR или с использованием раздела объявления типов пользователя TYPE.

Объявление записи в разделе объявления переменных VAR имеет следующий вид:

19

Одесский колледж компьютерных технологий “СЕРВЕР”

VAR

<имя записи>: RECORD <имя поля 1>: тип; <имя поля 2>: тип;

. . .

<имя поля n>: тип

END;

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

Для представленной выше ведомости учащихся описание записи выглядит следующим образом:

VAR

R_EX: RECORD N: Integer;

NAME: String[25]; RB: Array[1..4] of byte

END;

Рассмотрим более универсальную форму объявления записи - с использованием раздела типов пользователя TYPE. Объявление имеет вид:

TYPE

<имя типа>: RECORD <имя поля 1>: тип; <имя поля 2>: тип;

. . .

<имя поля n>: тип

END;

VAR

<имя записи>: <имя типа>; Объявление двух записей нашей ведомости можно сде-

лать следующим образом: TYPE

20

Одесский колледж компьютерных технологий “СЕРВЕР”

SSS: RECORD N: Integer;

NAME: String[25]; RB: Array[1..4] of byte

END;

VAR

R_EX1, R_EX2: SSS;

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

R_EX1.N := 2;

R_EX2.Name := 'Сидоров П.П.';

Обращение к записи в целом, а не только к её отдельным её элементам, допускается только в операторе присваивания. При этом слева и справа от знака присваивания должны использоваться имена записей одинакового типа.

R_EX1 := R_EX2;

Обращение к элементам (полям) записи происходит с помощью уточнённого имени. Оператор присоединения позволяет упростить обращение к элементу (полю) записи. Имя записи выносится в заголовок оператора присоединения, а в блоке используются только имена элементов записи.

Общая форма оператора присоединения: WITH <имя записи> DO

Begin

{операторы, содержащие только имена элементов записи} End;

Например, для рассмотренной выше записи (списка учащихся) оператор присоединения может выглядеть так:

WITH R_EX1 DO Begin

Write('Введите номер записи '); Readln(N);

21