Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум10.doc
Скачиваний:
52
Добавлен:
14.02.2016
Размер:
296.96 Кб
Скачать

2.3. Оператор присоединения

Использование в программе селекторов записи (составных имен) приводит к ее удлинению и излишней громоздкости. С целью устранения этого неудобства в языке Паскаль используется оператор присоединения(операторwith), который позволяет осуществлять доступ к компонентам записи таким образом, как если бы они были простыми переменными. Общий вид оператора присоединения таков:

with <имя записи> do <оператор>;

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

for i:=1 to 25 do with tbl[i] do readln(fam, b1,b2,b3,b4,b5);

Окончательный вариант программы имеет следующий вид:

{Определение среднего балла и сортировка}

program sball;

type stud=record

fam:string[15];

b1,b2,b3,b4,b5:2..5;

sb:real

end;

var tbl:array[1..25] of stud;

y:stud;

i,j,k,m:integer;

x:real;

begin

{ввод исходных данных}

writeln(‘Введите количество записей’);

read(m);{m – число записей в массив tbl}

writeln(‘Введите компоненты записей’);

for i:=1 to m do with tbl[i] do readln(fam,b1,b2,b3,b4,b5);

for i:=1 to m do {вычисление среднего балла}

with tbl[i] do sb:=(b1+b2+b3+b4+b5)/5;

for i:=1 to m-1 do {сортировка списка группы студентов}

begin

k:=i;

x:=tbl[i].sb;

for j:=i+1 to m do if tbl[i].sb>x then begin

k:=j;

x:=tbl[j].sb

end;

for i:=1 to m do {печать результатов}

with tbl[i] do writeln(fam:15,sb:6:3)

end.

В приведенной программе приняты следующие обозначения: m– число студентов в группе (может быть представлено целым числом от 1 до 25);y– вспомогательная запись, необходимая для промежуточного запоминания элемента массиваtblпри перестановке значений его элементов;x, k - вспомогательные переменные для запоминания максимального текущего значения среднего балла и его индекса в массиве записей.

2.4. Вложенные записи

Допускается использование записи в качестве элемента другой записи. В результате получается сложная запись.

Пример 4.В памяти ЭВМ требуется хранить анкетные данные, представленные в виде следующей таблицы.

А Н К Е Т А

п/п

Ф. И. О.

Дата рождения

Пол

Фамилия

Имя

Отчество

Год

Месяц

Число

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

var anketa:record

npp:integer;

fio:record

fam, im, ot:string[15]

end;

dr:record

god:1900..2100;

mes:string[8];

den:1..31

end;

pol:string[3]

end;

Элементами записи anketaявляются записиfioиdr. В результате получается сложная запись. Записьanketaсодержит анкетные данные одного лица. Если программист намеревается хранить анкетные данные о 100 человеках, то либо записьanketaдолжна иметь тип массива с числом элементов 100, либо каждый элемент второго уровня (npp, fio, dr, pol) должен быть массивом с числом элементов 100.

При обращении к компонентам сложных записей можно использовать оператор with, имеющий вложенную структуру с любой степенью вложенности. Например, обращение к полю происходит с помощью составного имениanketa.dr.god, а с использованием оператора присоединения – с помощью конструкции

with anketa do with dr do god:=1965;

или несколько проще

with anketa, dr do god:=1965;

Использование оператора присоединения существенно облегчает написание программ и делает более эффективным многократное обращение к полям одной записи.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]