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

Контрольні запитання

  1. Що таке структура даних?

  2. Наведіть класифікацію значень структур даних.

  3. Наведіть типи та засоби представлень лінійних структур даних.

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

  5. Поясніть сутність векторної реалізації структур даних

  6. Поясніть сутність зв’язаної реалізації структур даних

  7. Наведіть приклад опису типа вузла лінійного списку у зв’язаній реалізації та поясніть устрій вузла

  8. Наведіть приклад опису односпрямованого та двоспрямованого списків та поясніть різницю.

Лабораторна робота 2.5 дослідження механізму підпрограм Мета лабораторної роботи - вивчити опис та використання закритих підпрограм.

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

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

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

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

<підпрограма> ::= <відкрита підпрограма>|<закрита підпрограма>

< закрита підпрограма>::=<процедура>|<функція>

< відкрита підпрограма >::=<inline підпрограми>|<шаблон>|<макрос>

Закрита підпрограма

<опис процедури>::=void< позначка >({<список формальних параметрів>}0)

<тіло>

<опис функції>::=< позначка типу вироблювального значення>< позначка >

({<список формальних параметрів>}0)<тіло>

< позначка типу вироблювального значення>::=< позначка типу>

<список формальних параметрів>::=<формальний параметр>|{,<формальний

параметр>}0

<формальний параметр>::=>:< позначка типу>< позначка формального

параметру>

<тіло>::={{<оператор>}0}

<оператор>::= <оператор привласнення>|<структурний оператор>

<виклик процедури чи функції>::=< позначка > ({<список фактичних

параметрів>}0)

<список фактичних параметрів>::=< позначка фактичного параметру>|

{,<позначка фактичного параметру>}

<опис прототипу процедури>::=< позначка типу вироблювального

значення>< позначка >({<список формальних параметрів>}0)

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

Не вертайте значення, що виробляється підпрограмою, через глобальні змінні.

Кожна закрита підпрограма повинна реалізовувати єдину концепцію.

Сформулюйте порівняльні характеристики для типів підпрограм та перевірте їх на прикладах програм лабораторної роботи.

Завдання

Написати програму, яка складається з наступних дій:

  1. Опису підпрограми, що обчислює функцію згідно з варіантом (табл. 2.6).

  2. Опису головної програми, що табулює функцію, значення якої обчислюється підпрограмою, вказаною в п.1 завдання.

Таблиця 2.6

варіанта

Функція

1

,

2

,

3

,

4

,

5

,

6

,

7

,

8

,

9

,

10

,

11

,

12

,

13

,

14

,

15

,

Завдання 2

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

  1. Опису підпрограми_1 та підпрограми_2 згідно варіанта (табл.2.7).

  2. Опису та ініціювання змінної індексованого типу (двовимірний масив вимірністю M x N, де M – кількість рядків, а N – кількість стовпців) (табл.2.7).

  3. Опису та ініціювання рядка символів (кількість символів не менш 5).

  4. Виклику підпрограми_1 для обробки двовимірного масиву.

  5. Виклику підпрограми_2 для обробки рядка символів.

Таблиця 2.7

варіанта

Розмір

Тип

даних

Призначення підпрограми_1

Призначення підпрограми_2

M

N

5

5

Цілий

Транспонування матриці

Отримати новий рядок шляхом вставки через кожні два символи заданого рядка символу ’=’

4

4

Дійсний

Знайти мінімальний елемент та обміняти його місцями з лівим верхнім елементом

Отримати новий рядок шляхом подвоєння кожного символу заданого рядка

6

5

Цілий

Замінити елементи рядка з максимальним елементом на одиниці

Отримати новий рядок шляхом заміни символу ’A’ заданого рядка на символи ’**’

5

5

Дійсний

Обміняти елементи головної діагоналі з елементами побічної діагоналі

Отримати новий рядок шляхом зсуву заданого рядка праворуч на один елемент та переміщення останнього елементу на перше місце

5

6

Цілий

Знайти максимальний елемент та обміняти його місцями з правим нижнім елементом

Отримати новий рядок шляхом додавання до заданого рядка елементів, які стоять на парних позиціях, а потім елементів на непарних позиціях

4

5

Дійсний

Замінити елементи стовпця з максимальним елементом на нулі

Отримати новий рядок шляхом дублювання заданого рядка в оберненому вигляді

6

5

Цілий

Обміняти місцями елементи першого стовпця з останнім, другого з передостаннім і т.д.

Отримати новий рядок шляхом вставки через кожні три символи заданого рядка символу ’!’

4

5

Дійсний

Знайти мінімальний елемент та обміняти його місцями з правим верхнім елементом

Отримати новий рядок шляхом дублювання заданого рядка

5

6

Цілий

Замінити елементи стовпця з мінімальним елементом на одиниці

Отримати новий рядок шляхом вставки після кожного символу заданого рядка символу ’*’

5

4

Дійсний

Збільшити у два рази елементи рядка з максимальним елементом

Отримати новий рядок шляхом видалення з заданого рядка символу ’k’

6

5

Цілий

Знайти максимальний елемент та обміняти його місцями з лівим нижнім елементом

Отримати новий рядок шляхом видалення з заданого рядка кожного третього елементу

5

4

Дійсний

Обміняти місцями елементи першого рядка з останнім, другого з передостаннім і т.д.

Отримати новий рядок шляхом додавання до заданого рядка елементів, які стоять на непарних позиціях, а потім елементів на парних позиціях

6

5

Цілий

Замінити елементи стовпця з максимальним елементом на –1

Отримати новий рядок шляхом заміни символу ’a’ заданого рядка на символи ’++’

4

5

Дійсний

Збільшити у два рази елементи стовпця з максимальним елементом

Отримати новий рядок шляхом зсуву заданого рядка вліво на один елемент та переміщення першого елементу на останнє місце

5

6

Цілий

Знайти мінімальний елемент та обміняти його місцями з правим нижнім елементом

Отримати новий рядок шляхом видалення з заданого рядка кожного другого елементу

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]