
- •Підпрограма. Визначення. 1
- •Підпрограма. Визначення. 2
- •Застосування підпрограм
- •Відкриті та закриті підпрограми
- •Закриті підпрограми. 1
- •Закриті підпрограми. 2
- •Процедурна абстракція
- •Абстракція управління
- •Оболонка підпрограмної капсули. Параметри підпрограми
- •Параметри закритої підпрограми. 1
- •Параметри закритої підпрограми. 2
- •Параметри закритої підпрограми. 3
- •Параметри закритої підпрограми. 4
- •Параметри закритої підпрограми. 5
- •Параметри закритої підпрограми. 6
- •Локальні об'єкти підпрограм. 1
- •Локальні об'єкти підпрограм. 2
- •Глобальні об'єкти підпрограм
- •Правило хорошого стилю програмування
- •Відмінності між параметрами та локальними об’єктами підпрограми. 1
- •Відмінності між параметрами та локальними об’єктами підпрограми. 2
- •Прототип підпрограми
- •Способи передачі значень параметрів підпрограми. 1
- •Способи передачі значень параметрів підпрограми. 2
- •Передавання значення вмісту. 1
- •Передавання значення вмісту. 2
- •Передавання значення вмісту. 3
- •Передавання імені. 3
- •Приклад застосування різних способів передачі параметрів
- •Передача значення
- •Передача посилання
- •Передача імені
- •Процедури
- •Функції
- •Абстрактний тип даних. 1
- •Абстрактний тип даних. 2
- •Операції абстрактних типів даних
- •Склад абстрактного типу даних
- •Процедурний тип
- •Процедурний тип. Приклад
- •Вказівник на функцію
- •Алгоритм читання оператора опису
- •Приклади читання оператора опису
- •Вказівник на функцію. Приклад
Способи передачі значень параметрів підпрограми. 2
Механізм зв’язування фактичних і формальних параметрів мови програмування визначає спосіб передавання значень у тіло підпрограми.
При цьому в перших двох способах питання, як передавати фактичний параметр у підпрограму (обчислення параметру), розв’язує програма, що викликає підпрограму.
У третьому способі передається не обчислений параметр, а обчислення відбувається щоразу, коли використовується відповідний формальний параметр.
Передавання значення вмісту. 1
Фактичний параметр обчислюється, і знайдене значення підставляється замість значення відповідного формального параметра:
Передавання значення вмісту. 2
Використання програмних об’єктів як фактичних параметрів:
якщо фактичний параметр літерал або константа, то обчислюється значення літерала, і воно заміщує значення вмісту формального параметру;
якщо фактичний параметр - змінна, то вона розіменовується, а значення її вмісту підставляється замість значення вмісту формального параметра;
якщо змінна індексованого типу, то індекс обчислюється, далі відбувається розіменування змінної, і значення вмісту підставляється замість значення вмісту формального параметра;
якщо фактичний параметр вираз, то він обчислюється і здобуте значення замінює значення вмісту формального параметра.
Передавання значення вмісту. 3
Семантика:
Якщо формальні параметри вважати локальними об'єктами, описаними в підпрограмі, то передавання значень відповідає створенню локальних змінних із позначенням формальних параметрів, ініціалізованих здобутими значеннями.
Операції присвоювання над формальними параметрами дозволені, але вони діють тільки на локальні об'єкти – формальні параметри підпрограми, які після її завершення зникають.
Передавання посилання. 1
Обчислюється посилання (значення) імені об'єкту, котрий є фактичним параметром, і воно заміщує посилання в імені формального параметра:
Передавання посилання. 2
Використання програмних об’єктів як фактичних параметрів:
фактичний параметр може бути тільки змінною, тому що лише змінна має у своїй конструкції ім’я, яке заміщує посилання в імені формального параметра ;
Якщо фактичний параметр є змінною індексованого типу, то індекс попередньо обчислюється.
Передавання посилання. 3
Семантика:
Цей спосіб дає змогу присвоювання фактичним параметрам значень через відповідні їм формальні параметри, впливаючи тим самим на середовище, яке оточує виклик підпрограми. А так як змінювати значення константи, літерали та вирази не мають змоги (на відміну від змінних), в якості фактичних параметрів, переданих за посиланням, данні програмні об’єкти використовувати неможливо.
Передавання імені. 1
Ім'я фактичного параметра подається буквально (текстуально) без обчислень замість імені формального параметра:
Передавання імені. 2
Використання програмних об’єктів як фактичних параметрів:
якщо фактичний параметр – скалярна змінна, то передавання імені точно відповідає способу передавання посилання;
якщо фактичний параметр – вираз, побудований із скалярних об'єктів, то результат буде аналогічний способу передавання значення. Однак обчислення виразу у підпрограмі відбуватиметься щоразу при обчисленні формального параметра;
Якщо фактичний параметр – елемент мультизначення індексованого типу, то результат буде аналогічний способу передавання значення. Проте індекс обчислюється щораз при використанні формального параметра.