Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОП Конспект лекций - Паскаль.doc
Скачиваний:
20
Добавлен:
30.11.2018
Размер:
1.46 Mб
Скачать

Тема 22: Структурований тип даних – записи

Розглянемо список успішності учнів:

№ п/п Прізвище , ім'я Оцінки

1 Іванов Петро 4 5 5 5

2 Петров Сергій 4 4 5 4

3 Сидоров Віктор 4 4 4 5

Він складається з даних різних типів:

№ п/п – ціле число;

прізвище й ім'я – рядок;

оцінки – масив цілих чисел.

При обробці подібних списків і документів дані різного типу поєднують в одну групу, що називається записом.

Запис – це структурований тип даних, що складається з фіксованого числа елементів одного чи декількох типів.

Запис і кожен елемент запису позначають іменами. Для списку успішності учнів можна ввести наступні позначення:

sap – ім'я запису ;

nom – порядковий номер;

fam – прізвище та ім'я;

oc – оцінки.

До елемента запису звертаються за допомогою імені запису та імені елемента, розділеними крапкою:

Sap.nom – ім'я елемента 1;

Sap.fam – ім'я елемента 2;

Sap.oc – ім'я елемента 3;

Опис запису має вид:

type ім'я типу = record

ім'я елемента 1 : тип;

. . .

ім'я елемента n: тип;

end;

var ім'я запису : ім'я типу;

Службові слова Record (запис) і End виконують роль операторних дужок, усередині яких описуються елементи запису. Елементи запису з їхнім описом називаються полями запису. Список успішності учнів буде мати наступний опис:

type spisok = record

nom : integer;

fam : string[20];

oc : array[1..4] of integer;

end;

var sap : array[1..n] of spisok;

Тут spisok – ім'я типу; sap – змінна, що представляє собою масив типу spisok. Кожен елемент запису має свій опис: nom – змінна цілого типу, fam – рядок з 20 символів, ос – масив з 4-х цілих чисел.

Записи можна описувати безпосередньо в розділі змінних:

var ім'я запису : record

ім'я елемента 1 : тип;

. . .

ім'я елемента n: тип;

end;

Список успішності учнів буде мати наступний опис :

var sap = record

nom : integer;

fam : string[20];

oc : array[1..4] of integer;

end;

Елемент запису в програмі використовується як звичайна змінна, та її можна вказувати як у лівій частині оператора присвоювання, так і у вираженнях. Над елементами запису виконують ті операції, що припустимі для типу їхніх даних. Наприклад:

  • ввести значення порядкових номерів Read(Sap.nom);

  • обчислити середній бал оцінок

Sr_bal := (Sap.oc[1] + Sap.oc[2] + Sap.oc[3] + Sap.oc[4]) / 4;

Оператор приєднання With…do

При спільній обробці декількох полів можна скористатися оператором приєднання With…do, який дозволяє спростити звертання до полів запису. Ім'я запису виноситься в заголовок оператора приєднання, а в блоці Begin-End використовуються тільки імена полів, тобто без вказівки перед ім'ям поля імені змінної, що визначає запис.

Оператор приєднання має вид:

with ім'я запису do

begin

оператори;

end;

Для нашого приклада оператор приєднання можна записати так:

with sap[i] do

begin

read(nom);

sr_bal := (oc[1] + oc[2] + oc[3] + oc[4])/4;

end;

Приклад. Інформація про успішність учнів зберігається в масиві записів, кожен з який містить прізвище учня й оцінки по чотирьох предметах. Роздрукувати прізвище відмінників.

const n = 10; {кількість учнів у класі}

type

spisok = record

fam : string[20];

oc : array[1..4] of byte;

end;

var

uch : array[1..n] of spisok; i, j, k, sum : integer;

begin

writeln(Уведіть список ‘,n,’ учнів:’);

for i :=1 to n do

begin

writeln(‘прізвище ’,i,’-го учня:’);

readln(uch[i].fam);

for j := 1 to 4 do

begin

writeln(j,’-я оцінка:’);

readln(uch[i].oc[j]);

end;

end;

for i := 1 to n do

begin

with uch[i] do

begin

for j := 1 to 4 do sum := sum + oc [j];

if sum=20 then

begin

write(‘Відмінник: ‘);

writeln(fam); k := k+1;

end;

end;

end;

if k=0 then writeln(‘Відмінників немає’);

end.

Питання для контролю.

  1. Поняття запису в Pascal-і.

  2. Звертання до елементів запису.

  3. Оголошення запису.

  4. Яка роль службових слів Record і End?

  5. Що таке поле запису?

  6. Як використовується елемент запису в програмі?

  7. Які операції можна виконувати над елементами запису?

  8. Оператор приєднання, його опис і застосування.