Масиви як параметри

Параметрами підпрограм можуть бути змінні не тільки простих, але і складних типів, таких як масиви, записи, множини. Розглянемо для ілюстрації приклад з масивами.

Завдання. Є два масиви, по два числа в кожному. Надрукувати суму елементів кожного масиву. Використовувати функцію sum, єдиним параметром якої є ім'я сумовною масиву.

TYPE vector = array [1..2] of Integer;

FUNCTION sum (c: vector): Integer;

WriteLn (sum (a), '', sum (b));

Починаючи обчислювати функцію sum (a). Паскаль підставляє в осередку для елементів масиву c значення елементів масиву a. Починаючи ж обчислювати функцію sum (b). Паскаль підставляє в осередку для елементів масиву c значення елементів масиву b.

У заголовку функції неправильно було б писати

function sum (c: array [1..2] of Integer): Integer.

Необхідно було спочатку визначити тип масиву в розділі TYPE. а потім використовувати цю постанову і в описі a і b. і в заголовку функції. Така вимога синтаксису Паскаля.

Параметри-значення та параметри-змінні

Багато процедури не тільки малюють або звучать, але і, подібно до функцій, обчислюють що-небудь корисне. Наприклад, процедура B з наступної програми збільшує глобальну змінну x на значення параметра y.

PROCEDURE B (y: Integer);

Буде надруковано число 1001.

Однак керівники проектів не люблять, коли в підпрограма зустрічаються імена глобальних змінних. Хіба мало - керівнику прийде в голову змінити ім'я глобальної змінної, і що тоді - переписувати все підпрограми? Тому придумали використовувати так звані параметри-змінні. Ось та ж програма з їх використанням:

PROCEDURE B (y: Integer; var c: Integer);

Тут y - добре знайомий нам параметр. Називається він параметр-значення. При виконання підпрограми для параметра-значення виділяється місце в стеку і туди надсилається значення відповідного фактичного параметра (1).

Питання: чи має сенс писати B (1, 1000). Відповідь: не має, так як підпрограма не знатиме, який змінної привласнювати результат 1001. Природно, Паскаль видасть повідомлення про помилку.

Завдання по темі «Процедури і функції»

Що таке процедура? Що таке функція? У чому їхня відмінність?

Перерахувати кілька стандартних функцій і процедур.

Схожі статті