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

Процедура q має два параметри: параметр-функцію s і параметр-значення b.

Тут формальний параметр f - функція від одного цілого аргументу, результат f - речовинний.

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

Звернутися до процедури q (function f (i: integer): real) можна так: q (sinus (k)); де sinus (k) є sin (k). Якщо k має тип integer. тоді sinus (k) - типу real. Це збігається з типами i і f в заголовку q. Не можна, однак, звернутися до q з функцією abs (k), а саме q (abs (k)); в цьому випадку тип формального параметра f - real. а тип фактичного abs (k) - integer. тобто формальний і фактичний параметри не збігаються за типом.

Завдання. Скласти процедуру видачі таблиці довільної речової функції. Процедура повинна мати такі формальні параметри: речову функцію, нижню межу документа, крок по аргументу.

Вираз trunc ((up - low) / step) дає число точок, в яких виконується функція f (при рахунку від 0).

Якщо до функції tab звернутися оператором

то буде надрукована таблиця функції sin x для x від 0 до 6.4 з кроком 0.33. Алгоритми, що вживаються найбільш часто різними користувачами, оформляються у вигляді процедур і функцій, і складають бібліотеку стандартних програм (модулів).

При використанні параметрів-процедур і параметрів-функцій треба мати на увазі можливі ускладнення.

  1. Помилки, допущені програмістом в процедурах, що мають параметри-процедури і параметри-функції, іноді буває важко знайти, що веде до тривалої налагодженні таких процедур.
  2. Якщо число і тип параметрів формального параметра-функції не збігається з числом або типом параметрів відповідного фактичного параметра-функції, то така програма не може бути правильно виконана, а багато версій трансляторів з Паскаля не видають в цьому випадку ніякої діагностики.
  3. Правила мови Pascal вимагають, щоб фактичні параметри-функції містили тільки параметри-значення. Це накладає серйозні обмеження на використання параметрів-процедур і параметрів-функцій.

Схожі статті