- •2.1.1 Підпрограми-процедури
- •2.1.2 Підпрограми функції
- •2.2 Бібліотеки
- •2.2.1 Основні поняття
- •2.2.2 Залучення бібліотек до проекту
- •Наведемо приклад залучення бібліотеки для обчислення iнтеграла
- •2.2.3 Структура власної бібліотеки
- •2 Створити вектор х, як суми елементів рядків.
- •2.2.4 Послідовність створення файла бібліотеки
- •3 Приклад проекту з власною бібліотекою
- •4. Контрольні запитання
- •8Які елементи мови Object Pascal можна використовувати у вигляді формальних, а які − у вигляді фактичних параметрів?
- •9Чи визначає ім’я підпрограми-функції її тип?
- •Чи все є правильно в цьому фрагменті? а якщо − нi, то як його виправити?
- •5. Лабораторне завдання
- •Варіанти індивідуальних завдань
2.1.2 Підпрограми функції
Структура підпрограми-функції має такий вигляд:
Function ім’яF (список формальних параметрів) : тип_результату;
{ розділ описання локальних параметрів }
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
begin
{ розділ виконавчих операторів функції }
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ім’яF : = результат виконання пiдпрограми;
end;
Ім’я функції (ім’яF ) обирається довільно (як і ім’я змінної).
Характерною особливістю підпрограми-функції є те, що вона не має вихідних параметрів, а результат виконання пiдпрограми повертається в головну програму лише у вигляді імені функції. Тому у виконавчій частині підпрограми-функції повинен бути хоча б один оператор, у якому імені функції присвоюється значення результата. За типом цього значення й оголошується тип самої функції. Типом функції може бути лише скалярний тип, тобто цілий, дійсний, логічний, символьний, або рядковий тип.
Наприклад, функція
–1, якщо x < 0,
sign(x)= 0, якщо x = 0,
1, якщо x > 0
як пiдпрограма-функція матиме такий вигляд:
Function fsign(x : real):integer;
begin
if x < 0 then fsign : = −1
else if x = 0 then fsign : = 0
else fsign : = 1;
end;
Пiдпрограма-функція для обчислення факторiалу матиме вигляд
Function fact(n : integer) : real;
var k : integer; p : real;
begin p : = 1;
for k : = 1 to n do
p : = p*k;
fact : = p;
end;
Зауваження. Функцію fact оголошено зі значенням типу real, оскільки для аргументів n, більших за 7, ціле значення факторiалу перевищить 32767 і не розміститься в двобайтовому полі цілого числа.
Виклик пiдпрограми-функції здійснюється за її іменем у виразі (арифметичному, рядковому або логічному), записаному в операторі головної програми або іншої підпрограми, із зазначенням вхідних фактичних параметрів через кому у дужках. Правила встановлення відповідності між фактичними і формальними параметрами такі самі, що й для пiдпрограми-процедури. Результат роботи функції передається в місце її виклику.
Зуваження. Якщо виклик функції містить ім’я іншої функції як фак-тичний параметр, то на початку головного модуля (попереду слова Unit) слід поставити директиву{$F+}.
Наприклад, фрагмент програми обчислення виразу Z = xy*sign ( x ) за допомогою функції fsign, описаної вище, матиме вигляд
…………………..
var x,y,z : real;
begin
………………
x := ‑2; y := ‑2.557;
z :=x*y*fsign(x);
………………………………
end;
Фрагмент програми обчислення величини
з використанням підпрограми-функції fact матиме вигляд
…………………………………….
var m, n : integer; a : real;
…………………………………….
begin
m : = 5; n : = 2;
a : = fact (m) /fact(m ‑ n );
…………………………………
end;
2.2 Бібліотеки
