- •Лабораторна робота №1. Тема: Програмування алгоритмів циклічної структури. Оператор циклу з параметром. Оператори циклу while, repeat.
- •Хід роботи
- •Лабораторна робота №2. Тема: Робота з одновимірними масивами.
- •Хід роботи
- •Теоретичні відомості до лабораторної роботи № 2 . Масиви.
- •Дії над масивами. Заповнення масиву даними
- •Лабораторна робота №3. Тема: Сортування масивів. Робота з двовимірними масивами.
- •Хід роботи
- •Виведення масиву.
- •Дії з одновимірними масивами
- •Сортування масиву
- •Лабораторна робота №4. Тема: Процедури та функції. Рекурсивні функції. Відкриті масиви
- •Хід роботи
- •Використання процедур без параметрів та з параметрами.
- •Використання функцій.
- •Лабораторна робота №5. Тема: Робота з даними рядкового типу.
- •Хід роботи
- •Теоретичні відомості до лабораторної роботи № 5 . Рядки (string)
- •Змінну рядкового типу оголошують за допомогою слова string так:
- •Лабораторна робота №6. Тема: Модулі користувача. Модулі crt і graph.
- •Хід роботи
- •Теоретичні відомості до лабораторної роботи № 6. Модулі.
- •Виведення тексту
- •Приклад виводу тексту.
- •Поняття модуля
- •Структура модуля
- •Компіляція модулів
- •Стандартні модулі Короткий опис модулів
- •Графіка
- •Лабораторна робота №7. Тема: Записи. Команда приєднання (with).
- •Хід роботи
- •Теоретичні відомості до лабораторної роботи № 7. Поняття запису
- •Оператор with
- •Лабораторна робота №8. Тема: Робота з текстовими файлами. Використання типізованих файлів.
- •Хід роботи
- •Теоретичні відомості до лабораторної роботи № 8. Файли і робота з ними.
Теоретичні відомості до лабораторної роботи № 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, знайдемо величини.
