Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_rab_pascal_delphi.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6.06 Mб
Скачать

Теоретичні відомості до лабораторної роботи № 7. Поняття запису

Запис — це структура даних, що складається з фіксованого числа компонентів, які називаються полями запису. На відміну від масиву, компоненти (поля) запису можуть бути різного типу. Щоб можна було посилатися на той або інший компонент запису, поля іменуються.

Структура оголошення типу запису така:

<Ім’я типу> = RECORD <список полів> END

Тут <ім’я типу> — правильний ідентифікатор;

RECORD, END — зарезервовані слова (запис, кінець);

< список полів > — список полів; є послідовністю розділів запису, між якими ставиться крапка з комою.

Кожний розділ запису складається з одного або декількох ідентифікаторів полів, які відокремлюються один від одного комами. За ідентифікатором (ідентифікаторами) ставиться двокрапка і опис типу поля (полів).

Приклад 1.

Type BirthDay = record

day,month : byte;

year : word

end;

var

a,b : Birthday;

В даному прикладі тип BIRTHDAY (день народження) є запис з полями DAY, MONTH і YEAR (день, місяць, і рік); змінні А і В записи типу BIRTHDAY.

Як і в масиві, значення змінних типу запису можна привласнювати іншим змінним того ж типу, наприклад

а := b;

До кожного з компонентів запису можна отримати доступ, якщо використовувати складове ім'я, тобто вказати ім'я змінної, потім крапку та ім'я поля:

a.day := 27;

b.year := 1939;

Приклад 2.

type

BirthDay = record

day,month: byte;

year : word

end;

begin

if BirthDay.year = 1939 then …

end.

Щоб спростити доступ до полів запису, використовується оператор приєднання WITH:

WITH <змінна > DO <оператор>

Тут WITH, DO — ключові слова (з, робити);

<змінна > — ім'я змінної типу запис, за яким можливо, слідує список вкладених полів;

<оператор> — будь-який оператор TURBO PASCAL.

Приклад 3.

with c.bd do month:=9;

це відповідно

with с do with bd do month : = 9;

або

with c,bd do month := 9;

або

c.bd.month= 9;

Поле запису може мати практично будь-який тип: масив, множина, інші записи. В останньому випадку елементи (поля, полів) мають ім'я, що складається з трьох частин. На практиці частіше всього використовують масиви записів, оскільки записи відображають табличну форму зберігання даних і застосовуються в різних додатках - від бухгалтерських задач до задач системного програмування. Порядок опису полів у визначенні запису задає їх порядок зберігання в пам'яті, а необхідний для цього об'єм складається з довжин полів.

Новий тип можна використовувати і для введення в програму констант, що типізуються.

Приклад 4.

Type

Point = record x,y: Real;

Vector = Array [0..1) of Point end;

Const Origin : Point = (X: 0.0; Y: 0.0);

Line : Vector = ((X: -1.9; Y: 1.7), (X: 2.0; Y: 1.7));

или

Type

Month = (Jan,Feb,Mar,Apr,May,Jun,Jly,Aug,Sep,Oct,Nov,Dec);

Date == record D: 1..31; M: Month; Y: 1917..2017 end;

Const BirthDate: Date = (D: 26; M: Jun; Y: 1985);

Приклад 5.

Багаж пасажира характеризується кількістю речей і загальною вагою речей. Є інформація про багаж декількох пасажирів - відповідні пари чисел. Підрахувати загальну кількість речей і з'ясувати, чи є пасажир, у якого багаж складається з однієї речі вагою не менше 30кг.

Const z:String[3]=' не' ;

total:Byte=0;

Турe In£o = record

q: Byte;

w: Real;

end;

Var luggage: Info;

i,n : Byte;

BEGIN

Write ('Введіть число пасажирів ');

ReadLn(n);

WriteLn('Введіть пари чисел (кількість і вага) ');

for i:=1 to n do

begin

ReadLn(luggage.q, luggage.w) ;

Inc(total,luggage.q);

if (luggage. q=1) and (luggage.w>=30) then z:= ' ';

end;

WriteLn('Сумарна кількість речей: ', total);

WriteLn(Шуканий пасажир', z,' знайшовся;

ReadLn;

END.

Визначимо тип Info - запис з двома полями. Імена полів q (кількість речей одного пасажира) і w (загальна вага речей одного пасажира); типи полів Byte і Real. Luggage - ідентифікатор змінної введеного типу. Введемо дані з клавіатури і, використовуючи складові імена полів запису luggage.q і luggage.w, знайдемо величини.

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