- •Вимоги до виконання лабораторної роботи та оформлення звіту
- •Лабораторна робота № 1
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота № 2
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Лабораторна робота № 3
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Контрольні запитання
- •Контрольні запитання
- •Лабораторна робота № 4
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота № 5
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота № 6
- •Методичні вказівки до роботи:
- •Задача для конкретного варіанту.
- •Лістинг програми.
- •Висновок до роботи. Теоретичні відомості
- •Контрольні запитання
- •Додаток а
- •Додаток б
- •Література
Контрольні запитання
Які дані має в собі тип вказівник?
Як ініціалізується вказівник?
Як можна порівнювати вказівники?
Яке призначення процедури NEW(P)?
Яке призначення процедури DISPOSE(P)?
На що вказує вказівник зі зніченням NIL?
Лабораторна робота № 2
(4 год.).
Тема роботи: створення динамічних масивів.
Мета роботи: Оволодіння навичками створення і використання динамічних масивів з елементами типу запис.
Постановка задачі: Створити динамічний масив з записами вказаної структури відповідно до варіанту. Виконати задані дії. Вивести динамічну змінну і результати її обробки. Звільнити пам’ять.
Методичні вказівки до роботи:
Створити динамічну змінну – одновимірний масив записів.
При створенні змінної врахувати властивості базового типу відповідно до завдання (наявність від’ємних елементів, діапазон можливих значень).
Забезпечити введення першого поля, як випадкового даного, друге поле записів ввести з клавіатури.
Вивести вміст усіх записів масиву.
Виконати обробку записів масиву відповідно до варіанту.
Вивести результати обробки масиву записів.
Вивести інформацію про виконавця роботи (прізвище, ініціали, група, варіант).
Завдання до роботи вибрати згідно з варіантом з Таблиці 2.
Зміст звіту:
Задача для конкретного варіанту.
Блок-схема програми.
Лістинг програми.
Результати виконання.
Висновок до роботи.
Теоретичні відомості
При застосування складних типів даних їх оголошення слід виконувати в два етапи - в розділі типів TYPE і в розділі змінних VAR. Наприклад, для оголошення вказівників на масив або запис слід створити відповідні типи, а потім їх використовувати.
TYPE MAS=ARRAY[1..20] OF REAL;
REC=RECORD
A,B,C:INTEGER;
END;
VAR UK:^REAL;
UK1:^MAS;
UK2:^REC;
UK – вказівник на дійсну змінну.
UK1 - вказівник на масив з 20-ти дійсних чисел.
UK2 - вказівник на запис.
Запис у мові PASCAL - структура даних, що складається з фіксованого числа компонентів, які звуться полями.
Поля можуть бути різних типів. Ця особливість робить записи найбільш загальним і гнучким типом даних.
Крім того в структурі запису явним чином виражено ідею підпорядкованості між її елементами.
Записи оголошуються в розділах опису TYPE або VAR, а використовуються в розділі операторів.
VAR<ім'я запису>:RECORD
<ім'я елемента1>:<тип>;
<ім'я елемента2>:<тип>;
…
<ім'я елементаN>:<тип>;
END;
Звернення до елементу запису у програмі виконується за допомогою складеного (уточненого) імені, що складається з імені запису і імені елемента і записується у вигляді:
<ім'я запису>.<ім'я елемента>
Для спрощення звернення до елементів запису застосовується оператор приєднання WITH. Ім’я запису виноситься до заголовку оператора WITH, а в блоці використовуються лише імена елементів запису:
WITH <ім’я запису > DO
BEGIN
<оператор, що мають в собі імена елементів запису >
END;
Приклад: Створити динамічний масив, елементами якого є 5 записів такої структури
дійсне поле,
ціле поле,
поле логічного типу.
Чисельні поля – випадкові числа. Поле логічного типу отримує значення true , якщо дійсне поле за модулем більше за ціле і мають значення false, якщо дійсне поле за модулем менше за ціле. Вивести усі поля записів динамічного масиву. Звільнити пам’ять.
USES CRT;
CONST N=5;
TYPE ZP=RECORD
P1:INTEGER;
P2:REAL;
P3:BOOLEAN
END;
MS=ARRAY[1..N] OF ZP;
VAR VK:^MS;
I:BYTE;
BEGIN
CLRSCR;
NEW(VK);
RANDOMIZE;
FOR I:=1 TO N DO
BEGIN
VK^[I].P1:=RANDOM(50)-25;
VK^[I].P2:=RANDOM+RANDOM(50)-RANDOM(25);
IF ABS(VK^[I].P1)<ABS(VK^[I].P2) THEN VK^[I].P3:=TRUE ELSE VK^[I].P3:=FALSE;
END;
FOR I:=1 TO N DO
WITH VK^[I] DO
WRITELN(P1:4, P2:8:3, P3:10);
READKEY;
END.
Результат виконання програми:
3 -1.509 FALSE
13 14.073 TRUE
4 -2.077 FALSE
6 -2.921 FALSE
-4 20.500 TRUE
