В Паскал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.
Немає коментарів:
Дописати коментар