Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 20-21.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
380.74 Кб
Скачать

Способи передачі значень параметрів підпрограми. 2

Механізм зв’язування фактичних і формальних параметрів мови програмування визначає спосіб передавання значень у тіло підпрограми.

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

У третьому способі передається не обчислений параметр, а обчислення відбувається щоразу, коли використовується відповідний формальний параметр.

Передавання значення вмісту. 1

Фактичний параметр обчислюється, і знайдене значення підставляється замість значення відповідного формального параметра:

Передавання значення вмісту. 2

Використання програмних об’єктів як фактичних параметрів:

  • якщо фактичний параметр літерал або константа, то обчислюється значення літерала, і воно заміщує значення вмісту формального параметру;

  • якщо фактичний параметр - змінна, то вона розіменовується, а значення її вмісту підставляється замість значення вмісту формального параметра;

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

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

Передавання значення вмісту. 3

Семантика:

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

Операції присвоювання над формальними параметрами дозволені, але вони діють тільки на локальні об'єкти – формальні параметри підпрограми, які після її завершення зникають.

Передавання посилання. 1

Обчислюється посилання (значення) імені об'єкту, котрий є фактичним параметром, і воно заміщує посилання в імені формального параметра:

Передавання посилання. 2

Використання програмних об’єктів як фактичних параметрів:

  • фактичний параметр може бути тільки змінною, тому що лише змінна має у своїй конструкції ім’я, яке заміщує посилання в імені формального параметра ;

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

Передавання посилання. 3

Семантика:

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

Передавання імені. 1

Ім'я фактичного параметра подається буквально (текстуально) без обчислень замість імені формального параметра:

Передавання імені. 2

Використання програмних об’єктів як фактичних параметрів:

  • якщо фактичний параметр – скалярна змінна, то передавання імені точно відповідає способу передавання посилання;

  • якщо фактичний параметр – вираз, побудований із скалярних об'єктів, то результат буде аналогічний способу передавання значення. Однак обчислення виразу у підпрограмі відбуватиметься щоразу при обчисленні формального параметра;

  • Якщо фактичний параметр – елемент мультизначення індексованого типу, то результат буде аналогічний способу передавання значення. Проте індекс обчислюється щораз при використанні формального параметра.