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

Контрольні питання до лабораторної роботи № 31:

  1. Який тип характеризує об'єкти, що називаються записами?

  2. Чи можуть компоненти запису бути різних типів?

  3. Як здійснюється доступ до полів запису?

  4. Що являється селектором в операторі Case при завданні варіантної частини запису?

  5. Чи може запис мати вкладену структуру?

  6. Чим запис відрізняється від масиву?

  7. Яку функцію виконує оператор приєднання?

________________________________________________________________________________________________

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

Тема: Розвязування задач з використанням записів

Мета роботи. Закріпити навики складання програм з використанням записів, вкладених записів та записів з варіантами.

Методичні вказівки до виконання лабораторної роботи

При розв’язуванні задач дотримуватись такої послідовності дій:

  • Вивчити умову задачі

  • Скласти математичну модель розв’язку задачі та блок-схему алгоритму

  • Написати текст програм на мові Pascal.

  • Виконати відладку та тестування програми

  • Записати в зошиті текст програми та результати її виконання.

Задача 1. У масиві міститься інформація про зимову сесію 2-курсу. Відомості про кожного студента (максимальна кількість студентів —150) мають наступні дані:

  • прізвище (до 12 символів);

  • номер групи (від 1 до 7);

  • оцінки по трьох предметах (програмування, економіка, історія).

Написати програму, яка вводить цю інформацію та друкує наступні дані:

а) прізвища студентів, які мають заборгованість хоча б з одного предмету;

б) процент студентів, що здали всі екзамени на 5 і 4;

в) назву предмету, який був зданий найкраще.

Задача 2. Відомості про студентів ВУЗу записані в масиві і містять наступну інформацію: прізвище, ім'я, стать (Ч або Ж), вік (від 16 до 32), курс (від 1-го до 5-го). Написати програму, яка вводить цю інформацію і друкує наступні дані:

а) номер курсу, на якому найбільший процент чоловіків;

б) імена чоловіків і жінок, що зустрічаються найчастіше;

в) прізвища наймолодших студентів.

_____________________________________________________________________________________________

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

Тема: Складання програм з використанням вказівних типів даних

Мета роботи. Навчитися складати програми з використанням динамічних структур даних: стеків, черг, лінійних списків, бінарних дерев.

Методичні вказівки до виконання лабораторної роботи

В мові Паскаль є засоби створення динамічних структур даних, які дозволяють під час виконання програми: • створювати об'єкти; • виділяти для них пам'ять; • знищувати, коли в них зникає необхідність.

Назва динамічної пам'яті – heap (купа, куча). Розмір динамічної пам’яті — сотник кілобайт на відміну від статичної, 65520 байт. Адреса початку кучі зберігається в стандартній змінній Heaporg, кінець — в змінній Heapend. Поточна границя незайнятої динамічної пам'яті зберігається у змінній Heapprt.

Дані в динамічної пам'яті розміщують з використанням покажчиків.

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

Формат опису покажчика : Type <тип покажчика> = ^ <ідентифікатор типу>, тобто покажчик пов'язаний з деяким типом даних.

Такі покажчики називаються типізованими.

Проте в Турбо Паскалі можна оголошувати покажчик і не пов'язувати його з конкретним типом даних. Такий покажчик називається нетипізованим. Для його оголошення служить стандартний тип pointer. Структура і тип таких даних можуть змінюватися під час виконання програми.

При роботі з покажчиками обов'язкові два етапи:

1. Оголошення покажчика; 2. Формування динамічних даних, пам'ять яких відводиться під час виконання програми.

Для роботи з покажчиками використовуються наступні процедури:

New (P) - процедура, яка створює в динамічній пам'яті нову змінну. Р - покажчик змінної того типу, який треба створити. Кожна окрема процедура new може створити тільки одну динамічну змінну.

Dispose (P) - процедура, що дозволяє повернути в купу ділянку пам'яті, зайняту об'єктом з покажчиком Р.

Параметрами процедур new і dispose може бути тільки типізований покажчик.

Для роботи з нетипізованими покажчиками використовуються аналогічні процедури:

GetMem (P, Size) - резервування пам'яті;

FreeMem (P, Size) - звільнення пам'яті.

Тут Р - нетипізований покажчик, Size - розмір в байтах необхідної або звільненої частини купи (до 65521 байт).

Над покажчиками можуть бути визначені операції перевірки на рівність і присвоєння.

Покажчику може бути присвоєної "порожнє" значення адреси, позначене службовим словом nil, що означає, що покажчик не вказує ні на один динамічний об'єкт. Це присвоєння можна робити до виконання процедури new. Значення nil - це два нульових слова. Воно може бути присвоєно вказівнику будь-якого типу.

Хід роботи

Задача 1. Скласти програму, яка формує стек, додає в нього довільну кількість компонентів, а потім читає всі компоненти та виводить їх на екран. В якості даних взяти рядок символів.

Задача 2. Скласти програму, яка формує чергу, додає в нього довільну кількість компонентів, а потім читає всі компоненти та виводить їх на екран. В якості даних взяти рядок символів.

Вказівка: Для формування черги і роботи з нею необхідно мати три змінні типу вказівник, перша з яких визначає початок черги, друга — кінець черги, третя —допоміжна.

Додаткове завдання:

Задача 3. Скласти програму, яка вводить числа і виводить їх у зворотному порядку. Використати вказівник для резервування пам'яті в динамічній області, куди буде вводитись масив чисел.