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

Вступ

Дані методичні вказівки призначені для проведення лабораторних робіт з курсу “Алгоритми та структури даних” для студентів спеціальності 7.050103 всіх форм навчання.

Лабораторна робота – це вид заняття, на якому студент під керівництвом викладача виконує практичні завдання з метою реалізації на практиці теоретичного матеріалу, отриманого ним під час лекційних занять.

Навчальною метою проведення лабораторних робіт є отримання студентами навичок по створенню програмних продуктів з застосуванням динамічної пам’яті, динамічних структур даних, алгоритмів сортування та пошуку даних для подальшого використання цих навичок в учбовій та науковій роботі.

Виконання лабораторної роботи поділяється на такі етапи

  1. проведення вхідного контролю знань студентів по тематиці конкретної лабораторної роботи

  2. виконання конкретного завдання відповідно до тематики, варіанту і часу, відведеного для роботи

  3. оформлення індивідуального звіту про виконання роботи

  4. захист студентом результатів виконання роботи, представлених у звіті.

Вимоги до виконання лабораторної роботи та оформлення звіту

  1. На кожну лабораторну роботу відводиться стільки часу, скільки вказано в її заголовку

  2. Відповідно до вимог Болонського процесу весь курс розбитий на два модулі. Кожному модулю відповідають три лабораторні роботи.

  3. Лабораторні роботи №1 - №6 виконуються студентами стаціонару самостійно відповідно до запропонованого варіанту з обов’язковим оформленням звіту

  4. Лабораторні роботи №1 - №3 виконуються студентами заочної форми навчання самостійно на лабораторних заняттях під час сесії відповідно до запропонованого варіанту в присутності викладача

  5. Лабораторні роботи №4 - №6 виконуються студентами заочної форми навчання самостійно відповідно до запропонованого варіанту як одна контрольна робота з обов’язковим оформленням звіту

  6. Звіт про виконання лабораторної роботи має складатися з таких обов’язкових частин

  • титульний лист (див. Додаток А);

  • тема роботи

  • мета роботи

  • стислі теоретичні відомості по темі роботи

  • індивідуальне завдання;

  • текст програми;

  • надруковані результати виконання завдання

  • висновки

  1. Звіт оцінюється викладачем по системі заліків (зараховано або не зараховано) і студент отримує відповідні бали в залежності від терміну виконання та захисту лабораторної роботи.

  2. Студент, який має заліки по всіх лабораторних роботах та набрав необхідну кількість балів допускається до семестрового іспиту.

Лабораторна робота № 1

(4 години)

Тема роботи:Використання купи динамічної пам’яті засобами мови PASCAL.

Мета роботи:Оволодіння навичками створення і використання динамічних змінних.

Постановка задачі: Створити динамічну змінну вказаного типу відповідно до варіанту. Виконати задані дії. Вивести динамічну змінну і результати її обробки. Звільнити пам’ять.

Методичні вказівки до роботи:

  1. Розібратися з створенням і використанням динамічних змінних.

  2. Створити динамічну змінну – двовимірний масив випадкових чисел і виконати над ним задані дії.

  3. При створенні змінної врахувати властивості базового типу відповідно до завдання (наявність від’ємних елементів).

  4. Вивести створений масив.

  5. Вивести результати обробки масиву.

  6. Вивести інформацію про виконавця роботи (прізвище, ініціали, група, варіант).

  7. Завдання до роботи вибрати згідно з варіантом з Таблиці 1.

Зміст звіту:

    1. Задача для конкретного варіанту.

    2. Блок-схема програми.

    3. Лістинг програми.

    4. Результати виконання.

    5. Висновок до роботи.

Теоретичні відомості

Динамічна пам’ять – це вся пам’ять обчислювальної системи. Усі змінні розміщуються в одній суцільній області, що зветься сегментом даних. Кожний байт пам’яті має свою адресу і система звертається до даних саме через цю адресу. Для статичних змінних вона пов’язана з іменем змінної, а для динамічних – безпосередньо з адресою області, що зберігається у вказівнику.

Самі динамічні дані не мають імені і звернення до них відбувається через ім’я вказівника, що має в собі адресу цієї змінної.

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

VAR UK:^REAL;

При застосування складних типів даних їх оголошення слід виконувати в два етапи - в розділі типів TYPE і в розділі змінних VAR. Наприклад, для оголошення вказівників на масив або запис слід створити відповідні типи, а потім їх використовувати.

Вказівник є фізичним носієм адреси даних базового типу. Він займає 4 байти (2 слова). Перше слово - зміщення адреси відносно початку сегмента, друге - адреса сегмента.

Вказівник, щойно оголошений, ні на що не вказує. Він є статичною змінною і перед використанням в програмі вказівник має бути ініціалізований, тобто йому треба присвоїти певне значення, що є адресою динамічної змінної. Значення вказівника можна задати декількома способами:

  • процедурами NEW або GETMEM;

  • за допомогою адресного оператора @;

  • простим присвоюванням йому значення іншої змінної того ж типу.

Змінній типу вказівник можна присвоїти значення NIL, що означає відсутність посилання на будь-який об’єкт (фактично в такому випадку змінній присвоюється значення 0).

Вказівники, що посилаються на об’єкти різних типів самі є об’єктами різних типів і для таких об’єктів неприпустима операція присвоювання значень одне одному:

PN3:=AD;

Вказівники одного і того ж типу можна порівнювати за допомогою операцій = та <>. Наприклад, IF P1<>NIL THEN … або IF P1=P2 THEN

Щоб отримати значення елемента, на який посилається вказівник, слід після імені вказівника поставити символ '^'.

Використання вказівників сумісно з процедурами NEW і DISPOSE дає можливість керувати розподілом динамічної пам’яті.

Процедура NEW(P), де P - вказівник, що дозволяє виділити область пам’яті такого розміру, в якому можна розмістити дані базового типу. Вказівник P приймає значення адреси виділеної області.

Процедура DISPOSE(P) дозволяє вивільнити область пам’яті, на яку посилається вказівник P для подальшого її використання в інших цілях. Після виконання цієї процедури значення P не визначене, тобто цей вказівник ні на що не посилається.

Приклад: Створити у динамічній пам’яті матрицю випадкових дійсних чисел розміром 5*5. Знайти суму від’ємних елементів в кожному стовпчику матриці і вивести отримані суми в статичний масив. Вивести усі елементи статичного масиву. Звільнити память.

USES CRT;

CONST N=5;

TYPE MS=ARRAY[1..N,1..N] OF REAL;

VAR VK:^MS;

STAT:ARRAY[1..N] OF REAL;

I,J:BYTE;

S:REAL;

BEGIN

CLRSCR;

NEW(VK);

RANDOMIZE;

FOR I:=1 TO N DO

BEGIN

FOR J:=1 TO N DO BEGIN

VK^[I,J]:=RANDOM+RANDOM(10)-5;

WRITE(VK^[I,J]:6:2);

END;

WRITELN;

END;WRITELN;

FOR J:=1 TO N DO

BEGIN

S:=0;

FOR I:=1 TO N DO

IF VK^[I,J]<0 THEN S:=S+ VK^[I,J];

STAT[J]:=S;

END;

DISPOSE(VK);

FOR I:=1 TO N DO

WRITELN(STAT[I]:6:2) ;

READKEY;

END.

Результат виконання програми:

-4.16 3.84 2.25 -4.84 -1.62

-0.32 1.77 3.08 2.42 -0.09

-4.63 3.36 2.88 -3.49 -1.73

-1.94 -2.42 3.05 3.37 -1.19

1.48 0.28 4.59 -0.61 3.69

-11.05

-2.42

0.00

-8.95

-4.62