В Паскалi iснує два види пiдпрограми
– процедури i функцiї. Для того, щоб ввести пiдпрограму у Паскаль-програму її
треба описати пiсля роздiлу опису змiнних var. Кожна процедура або
функцiя описується один раз, а використовуватися може багаторазово.
Процедури i функцiї:
-
визначаються iменем, яке
надається програмiстом i створюється по правилах створення iдентифiкаторiв;
-
можуть мати або не мати
параметри (про них мова пiде нижче);
-
можуть використовувати будь-якi
змiннi, описанi у роздiлi var програми, їх називають глобальними;
-
крiм того можна описати
додатковi змiннi, якi будуть використанi тiльки в данiй процедурi або функцiї,
їх називають локальними;
-
можуть включати в себе iншi
процедури або функцiї, їх називають локальними або вкладеними, визвати їх можна
тiльки iз процедури, в яку вони вкладенi.
ФУНКЦIЇ
Функцiї звичайно
використовують для опису пiдпрограм, пiсля виконання яких значення результату
отримує одна змiнна. Iм`я такої змiнної - iм`я функцiї, тому у заголовку
функцiї через двокрапку описується тип функцiї. Формат заголовку функцiї:
Function <iм`я функцiї (<список формальних
параметрiв):<тип функцiї>;
Наприклад:
Function Summa(a,b: integer): integer;
Function D: boolean;
Описанi функцiї: Summa, яка
має два формальних параметри a, b цiлого типу i повертає результат цiлого типу;
функцiя D без параметрiв, повертає в результатi логiчну величину. У будь-якiй
функцiї обчислення результату повинно завершуватися оператором присвоєння, де
функцiї присвоюється конкретне значення, але такий оператор у тiлi функцiї
повинен бути тiльки один.
Звертання до функцiї
вiдбувається у виразi, коли записується iм`я функцiї, а далi у круглих дужках
перелiчуються фактичнi параметри (якщо вони є), з якими у даний момент буде
обчислено функцiю. Для кожного формального параметра, що входив в список
формальних параметрiв при описi функцiї, треба вказати один фактичний параметр.
Порядок слiдування, кiлькiсть, тип формальних параметрiв повинен спiвпадати з
порядком слiдування, кiлькiстю, типом фактичних параметрiв.
Приклад: написати програму,
в якiй зчитуються початкове i кiнцеве значення аргументу, крок, з яким вiн
змiнюється, коефiцiєнти a i b. Програма повинна надрукувати таблицю значень
функцiї
f(x)=a+b∙ch(x), де ch(x)=(x2–x3)/2
Program Fn;
var F, X,
S, Fi, K, A, B: real;
function CH(T: real): real;
begin
CH:=(T*T - T*T*T)/2
end;
begin
read(A,
B, S, Fi, K);
X:=S;
while X
<= Fi do
begin
F:= A + B*CH(X);
writeln(X:5:1, F:10:3);
X:=X + K
end
end.
ПРОЦЕДУРИ.
Не завжди можна пiдпрограму реалiзувати як функцiю (наприклад, робота з таблицями, сортування i т.д.). Якщо
потрiбно видати бiльше, нiж один
результат, то, як правило, використовують пiдпрограми-процедури.
Рiзниця мiж процедурами i функцiями:
-
процедури виживаються не у
виразi, а за допомогою оператора виклику процедур (це iм`я процедури з
перелiченими у круглих дужках фактичними параметрами);
-
у заголовку процедури вiдсутнiй
опис її типу, тому що iм`я процедури нiяким чином не пов`язане з результатами
виконання;
-
для передачi результатiв
виконання процедури використовуються формальнi параметри у заголовку процедури,
описанi за допомогою службового слова var.
-
Формат заголовку процедури:
Procedure <iм`я процедури>(<список формальних
параметрiв-даних>,var <список форм.парам.-результатiв>);
Приклад:
Procedure Pr1(D,C: byte; var FC, FD: word);
Описана процедура Pr1, яка має чотири параметри: D, C - типу byte,
результат буде повернений у змiнних FC i FD, якi мають тип word.
Приклад: написати програму для обчислення N-ого члену ряду Фiббоначчi
(перший i другий члени ряду мають значення 1, кожний наступний є сумою двох
попереднiх).
Program
Fib;
var i,n,x,y: integer;
Procedure Fibo(var First, Second: integer);
var
Fi: integer;
begin
Fi:=First;
First:=Second;
Second:=First+Fi
end;
begin
X:=1;
Y:=1;
write('Введiть кiлькiсть чисел: '); readln(N);
writeln('Числа Фiббоначчi:':35);
write(X:1,', ',Y:1);
for
i:=1 to N-2 do
begin
Fibo(X,Y);
write(', ', Y:1)
end;
end.
Немає коментарів:
Дописати коментар