- •Лабораторна робота № 2
- •1. Загальне завдання:
- •2. Порядок виконання лабораторної роботи:
- •4. Індивідуальне завдання
- •5. Теоретичні відомості
- •5.1. Тип даних «Запис»
- •5.2. Робота з типізованими файлами
- •6. Приклад виконання лабораторної роботи
- •Підпрограма LoadFromFile «Завантажити каталог книг з файлу»
- •Підпрограма SaveToFile «Збереження каталогу у файл»
- •Підпрограма SortCatalog «Сортування книг в каталозі за назвою»
- •Підпрограма PrintCatalog «Друк каталогу книг»
- •Підпрограма AddBook «Додавання книги до каталогу»
- •Var size : integer):boolean;
- •Val(s,year,er);
- •Val(s,number,er);
- •If (LoadFromFile(fname,books,n,size)) then
- •If (SaveToFile(fname,books,size)) then
- •If (AddBook(books,n,size)) then
- •Каталог
- •Каталог (сортування по назві)
- •7. Питання для захисту лабораторної роботи:
5. Теоретичні відомості
5.1. Тип даних «Запис»
Запис – це структура даних, що складається з фіксованого числа компонентів, які називаються полями.
Тип «запис» – це об’єднана разом під одним іменем наперед визначена сукупність змінних різного типу.
Загальний опис декларації типу «запис»:
<ім’я типу> = RECORD <список ідентифікаторів полів
із зазначенням їх типів>
END;
де
<ім’я типу> – ідентифікатор;
RECORD, END – зарезервовані слова;
<список ідентифікаторів полів із зазначенням їх типів> – послідовність розділів запису. Після кожного розділу ставиться точка з комою. Кожен розділ запису складається з одного чи декількох ідентифікаторів полів, відокремлених один від одного комою. Після ідентифікатору вказується двокрапка та назва типу поля (полів розділу).
Наприклад,
type
TPerson = record {Тип «запис» для опису даних про людину}
Surname, Name : String; {Прізвище, ім’я}
Year : Word; {Вік}
end;
var
a, b : TPerson; {Декларація двох змінних типу «запис»}
До кожного поля запису можно отримати доступ, якщо використовувати складене ім’я, тобто необхідно вказати назву запису, потім крапку та ім’я поля.
a.Surname := 'Іванов';
a.Name := 'Іван';
a.Year := 1986;
Для спрощення доступу до полів запису можна використовувати оператор приєднання WITH:
WITH <ім’я змінної типу record> DO <оператор>
де
WITH, DO – зарезервовані слова;
<оператор> – будь-який оператор.
Наприклад,
type
TPerson = record {Тип «запис» для опису даних про людину}
Surname, Name : String; {Прізвище, ім’я}
Year : Word; {Вік}
Addr : record {Вкладена запис для опису адреси проживання}
Index, Town, Street : String; {індекс, місто, вулиця}
House, Flat : Integer;{номер будинку та квартири}
end;
end;
var
a : TPerson;
BEGIN
with a do
begin
Surname := 'Іванов';
Year := 1986;
with Addr do Index := ’49026’;
end;
with a.Addr do
begin
Town := ’Дніпропетровськ’;
Street := ’пр. ім. газ. Правди’;
end;
END.
Якщо необхідно обробити сукупність різнорідних даних, наприклад, організувати роботу з каталогом книг чи з прайс-листом, тоді треба використовувати масив з елементами типу «запис».
Загальний опис декларації типу «масив з елементами типу запис»:
type
<ім’я типу масив> = array [<діапазон>] of <ім’я типу запис>;
Спочатку слід описати тип «запис», а потім тип «масив з елементами типу запис».
Наприклад,
type
TPerson = record {Тип «запис» для опису даних про людину}
Surname, Name : String; {Прізвище, ім’я}
Year : Word; {Вік}
end;
{Тип «Група з 10 чоловік»}
TArrPerson = array [1..10] of TPerson;
Для отримання доступу до елементу масиву необхідно написати вираз, що складається з імені змінної типу «масив», а потім в квадратних скобках вказати номер елементу.
Якщо необхідно отримати доступ к полю елементу масиву, тоді слід написати вираз:
<ім’я масиву записів> [<номер елементу масиву>].<ім’я поля запису>
Наприклад,
Var
A : TArrPerson; {змінна – масив записів}
i : integer; {номер елементу масиву}
Begin
...
for i:=1 to 10 do {цикл вводу даних про 10 людей}
begin
writeln(’№ ’,i);
write(’Вкажіть прізвище, ім’я людини => ’);
readln(A[i].Surname, A[i].Name);
write(’Вкажіть рік народження людини => ’);
readln(A[i].Year);
end;
...
End.