2.4. Параметри процедури
У разі опису процедури в її заголовку можуть бути вказані параметри
чотирьох видів:
1) параметри-значення;
2) параметри-змінні;
3) параметри-функції;
4) параметри-процедури.
Параметри-значення використовуються для передачі вхідних даних у
підпрограму. У списку формальних параметрів вони перераховуються через
кому з обов’язковим вказуванням їхнього типу, наприклад:
PROCEDURE FS1(A,B: REAL; I,Y: INTEGER);
10
Як відповідний фактичний параметр у разі виклику процедури може вико-
ристовуватись або довільний вираз відповідного типу, або змінна, або константа.
FS1(A1+S/3,B1,9,24);
Якщо фактичний параметр заданий виразом, то цей вираз спочатку
обчислюється і вже конкретне значення підставляється замість нього.
Під час виконання процедури формальні параметри можуть змінюватися,
але це ніяк не позначається на відповідних фактичних параметрах-значеннях,
оскільки вони зберігають своє початкове значення. Тому параметри-значення
не можна використовувати для повернення результату в головну програму.
Параметри-змінні використовуються для повернення результатів вико-
нання процедури в головну програму.
У списку формальних параметрів вони перераховуються після службо-
вого слова VAR із обов’язковим вказуванням типу:
PROCEDURE MINMAX (A, B, C: REAL; VAR MIN,MAX: REAL);
Фактичні параметри, що відповідають параметрам-змінним, повинні бути
тільки змінними цього самого типу, тобто:
MINMAX (A1, B1, C1, SMIN, SMAX);
При виклику процедури і заміні формальних параметрів-змінних на
фактичні параметри здійснюється передача адреси змінної, а не її значення.
Отже, у комірки з іменем SMIN та SMAX буде записано результати MIN та
MAX, обчислені в процедурі MINMAX.
Як формальні параметри в мові Паскаль допускається використання імені
процедур і функцій, описаних раніше.
Параметри-процедури в списку формальних параметрів описуються
після службового слова PROCEDURE.
Наприклад:
PROCEDURE PRS (A,B: REAL;VAR Z: REAL; PROCEDURE SUM);
При виклику підпрограми на місце формальних параметрів процедур під-
ставляються фактичні процедури. Якщо ці процедури мають у свою чергу пара-
метри, то ці параметри можуть бути тільки параметрами-значеннями. У багатьох
задачах, особоливо задачах обчислювальної математики, необхідно передавати
імена процедур і функцій як параметри. Для цього в Turbo Pascal введений тип
даних – процедурний чи функціональний тип, залежно від того, що описується.
Опис процедурного чи функціонального типів проводиться у розділі опису типів:
11
TYPE FUN1 = FUNCTION (Z:REAL): REAL;
PRO3 = PROCEDURE (A,B:REAL; VAR X,Y: REAL);
Функціональний та процедурний типи визначаються як заголовок про-
цедури чи функцій зі списком формальних параметрів, але без імені. Можна
описувати цей тип і без параметрів.
Після опису процедурного чи функціонального типу його можна
використовувати для опису формальних параметрів – імен процедур та
функцій. Крім того, необхідно написати тіла тих реальних процедур та
функцій, імена яких будуть передаватися як фактичні параметри.
