Масиви в параметрах процедур і функцій - life-prog

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

const Max = 63; type TStatistics = array [0..Max] of Double; function Average (const A: TStatistics): Double; var I: Integer; begin Result: = 0; for I: = Low (A) to High (A) do Result: = Result + A [I]; Result: = Result / (High (A) - Low (A) + 1); end;

Функція Average приймає як параметр масив відомої розмірності. Вимога фіксованого розміру для масиву-параметра часто є надмірно стримуючим фактором. Процедура для знаходження середнього значення повинна бути здатна працювати з масивами довільної довжини. Для цієї мети в мову Delphi введені відкриті масиви-параметри. Такі масиви були запозичені розробниками мови Delphi з мови Modula-2.

1. Відкритий масив-параметр описується за допомогою словосполучення array of. при цьому межі масиву опускаються:

function Average (const A: array of Double): Double; var I: Integer; begin Result: = 0; for I: = Low (A) to High (A) do Result: = Result + A [I]; Result: = Result / (High (A) - Low (A) + 1); end;

2. Усередині підпрограми Average нижня межа відкритого масиву A дорівнює нулю (Low (A) = 0), а ось значення верхньої межі (High (A)) невідомо і з'ясовується тільки на етапі виконання програми.

3.Существует тільки два способи використання відкритих масивів. звернення до елементів масиву і передача масиву іншій підпрограмі, що приймає відкритий масив. Не можна привласнювати один відкритий масив іншому, тому що їх розміри заздалегідь невідомі.

Ось приклад використання функції Average:

var Statistics: array [1..10] of Double; Mean: Double; begin. Mean: = Average (Statistics); Mean: = Average ([0, Random, 1]) ;. end;

4. У другому операторі відкритий масив конструюється в момент виклику функції Average. Конструктор відкритого масиву представляє собою укладений у квадратні дужки список виразів. У виразах можуть використовуватися константи, змінні і функції. Тип виразів повинен бути сумісний з типом елементів масиву. Конструювання відкритого масиву рівносильно створенню і ініціалізації тимчасової змінної.

5. Відкриті масиви можуть бути передані в підпрограми тільки за значенням або як параметри-константи.

6. Деякі бібліотечні підпрограми мови Delphi приймають параметри типу array of const - відкриті масиви констант. Масив, переданий в якості такого параметра, обов'язково конструюється в момент виклику підпрограми і може складатися з елементів різних типів (!). Фізично він складається із записів типу TVarRec. кодують тип і значення елементів масиву (записи розглядаються нижче). Відкритий масив констант дозволяє емулювати підпрограми зі змінним кількістю різнотипних параметрів і використовується, наприклад, в функції Format для форматування рядка.

Схожі статті