Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lr_hw_IZDN.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
1.12 Mб
Скачать

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

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

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

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

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

  5. Як можна ефективно представити лінійні та нелінійні структури даних?

Література: [2]; [6]; [7].

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

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

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

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

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

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

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

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

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

Паскаль:

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

<тіло>

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

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

< позначка >::=<ідентифікатор>

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

{;<формальний параметр>}0

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

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

<тіло>::=<опис програмних об’єктів та типів>begin<оператор>end

<опис програмних об’єктів та типів>::=(див. лаб. 3, 6)

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

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

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

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

Cі:

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

<тіло>

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

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

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

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

параметр>}0

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

параметру>

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

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

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

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

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

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

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

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

Шаблони Сі++:

<шаблон>::=template<class <ідентифікатор типу>><опис процедури чи функції з використанням введеного ідентифікатору типу>

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