
- •Вимоги до виконання лабораторної роботи та оформлення звіту
- •Лабораторна робота № 1
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота № 2
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота № 3
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота № 4
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота № 5
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота № 6
- •Методичні вказівки до роботи:
- •Задача для конкретного варіанту.
- •Лістинг програми.
- •Висновок до роботи. Теоретичні відомості
- •Контрольні запитання
- •Додаток а
- •Додаток б
- •Література
Контрольні запитання
Які файлові типи застосовуються в мові Паскаль?
Які особливості текстових файлів?
Які специфічні процедури і функції обслуговування текстових файлів?
Як створити динамічну змінну типу символьний рядок STRING?
Лабораторна робота № 4
(6 год.).
Тема роботи: обробка масивів вказівників.
Мета роботи: Оволодіння навичками створення статичних масивів вказівників на записи заданої структури.
Постановка задачі: Створити типізований файл записів заданої структури. Використовуючи динамічні змінні, створені за допомогою масиву вказівників, виконати обробку інформації файлу. Звільнити пам’ять.
Методичні вказівки до роботи:
Створити типізований файл записів заданої структури з випадковими даними.
Вивести вміст файлу.
Створити статичний масив вказівників на записи заданої структури.
Створити динамічні змінні – записи.
Ввести інформацію з файлу до динамічних змінних.
Виконати аналіз полів динамічних змінних відповідно до завдання.
Вивести результати аналізу.
Звільнити память.
Вивести інформацію про завдання ( варіант, текст завдання ).
Вивести інформацію про виконавця роботи (прізвище, ініціали, група).
Завдання до роботи вибрати згідно з варіантом з Таблиці 4.
Зміст звіту:
Задача для конкретного варіанту.
Блок-схема програми.
Лістинг програми.
Результати виконання програми.
Висновок до роботи.
Теоретичні відомості
Використання вказівників сумісно з процедурами NEW і DISPOSE дає можливість керувати розподілом динамічної пам’яті.
Процедура NEW(P), де P - вказівник, що дозволяє виділити область пам’яті такого розміру, в якому можна розмістити дані базового типу. Вказівник P приймає значення адреси виділеної області.
Процедура DISPOSE(P) дозволяє вивільнити область пам’яті, на яку посилається вказівник P для подальшого її використання в інших цілях. Після виконання цієї процедури значення P не визначене, тобто цей вказівник ні на що не посилається.
Вказівник, щойно оголошений, ні на що не вказує. Він є статичною змінною і перед використанням в програмі вказівник має бути ініціалізований, тобто йому треба присвоїти певне значення, що є адресою динамічної змінної. Значення вказівника можна задати декількома способами:
процедурами NEW або GETMEM;
за допомогою адресного оператора @;
простим присвоюванням йому значення іншої змінної того ж типу.
Змінній типу вказівник можна присвоїти значення NIL, що означає відсутність посилання на будь-який об’єкт (фактично в такому випадку змінній присвоюється значення 0).
Приклад:
TYPE ZAP=RECORD
INF:REAL;
RAD:CHAR;
FG:BYTE;
END;
PNT=^ZAP;
ADRL=^REAL;
VAR DOP:ZAP;
PN1,PN2,PN3,PN4:PNT;
AD:ADRL;
BEGIN
…
NEW(PN3); виділення пам’яті для нового елемента типу ZAP
PN2:=@DOP; визначення адреси змінної DOP, присвоєння значення цієї адреси вказівнику PN2;
PN1:=PN3; присвоєння значення одного вказівника іншому того ж типу
PN4:=NIL; присвоєння вказівнику значення 0
NEW(AD); виділення пам’яті для нового елемента типу INTEGER
…
END.
Під час роботи програми, в якій виконується багаторазове використання купи динамічної пам’яті, програмісту слід мати інформацію про кількість вільної пам’яті. Для цього існують дві функції – MEMAVAIL і MAXAVAIL. MEMAVAIL Інформує про сумарну кількість вільної пам’яті, а MAXAVAIL повертає розмір найбільшого блока вільної пам’яті.
Приклад: Створити статичний масив, елементами якого є вказівники на дані типу запис, що мають такі поля: byte, word, char. Масив складається з 5-ти елементів. За допомогою вказівників масиву створити динамічні змінні типу запис. Інформація полів динамічних записів – випадкові числа. Вивести дані з динамічних змінних. Визначити кількість вільної пам’яті до і після створення динамічних змінних. Вивести об’єм пам’яті, виділений для них. Звільнити пам’ять.
USES CRT;
TYPE ZP=RECORD
P1:BYTE;
P2:WORD;
P3:CHAR
END;
VAR MAS:ARRAY[1..5] OF ^ZP;
I:BYTE;
B:LONGINT;
BEGIN
CLRSCR;
RANDOMIZE;
WRITELN(MEMAVAIL);
B:=MEMAVAIL;
FOR I:=1 TO 5 DO
BEGIN
NEW(MAS[I]);
MAS[I]^.P1:=RANDOM(5);
MAS[I]^.P2:=RANDOM(50);
MAS[I]^.P3:=CHR(RANDOM(255));
END;
FOR I:=1 TO 5 DO
BEGIN
WITH MAS[I]^DO
WRITE(P1:4,P2:4,P3:4);
END;
WRITELN;
WRITELN(MEMAVAIL);
WRITELN(B-MEMAVAIL);
FOR I:=1 TO 5 DO
DISPOSE(MAS[I]);
READKEY;
END.
Результат виконання програми
300896
2 19 f 4 42 ) 3 9 [ 3 25 Х 1 33 ј
300856
40