Підпрограми – процедури та функції

В мові Паскаль використовується два види підпрограм ­­­­­­- процедури та функції. Вони відрізняються між собою структурою та способом виклику.

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

Структура процедури має вигляд: 

 Procedure ім’я (список формальних параметрів);

         Розділ локальних даних

   Begin

         {розділ виконавчих операторів}

   End;

 Перший рядок складає заголовок процедури, ім’я процедури вибирає програміст так як і ім’я змінної. В списку формальних параметрів описуються через ; параметри та інформація про їх тип. Деякі параметри призначені для передачі даних в процедуру, інші для повернення результатів з процедури до тієї програмної одиниці, яка її викликала.

В розділі локальних даних (який взагалі може бути відсутнім) описують ті дані, які використову­ються тільки для «службових» цілей в самій процедурі (параметри циклів, робочі змінні та маси­ви, тощо).

Всередині підпрограми записують послідовність операторів, які реалізують потрібний алгоритм. При цьому вони працюють з формальними параметрами, локальними та глобальними даними.

Зв’язок між окремими частинами програми здійснюється через списки формальних параметрів та за допомогою глобальних змінних.

Глобальні дані описуються в головній програмі вони не являються фактичними параметрами при виклику підпрограм, не описані в підпрограмах, а використовуються в одній з них і в головній програмі.

Результати роботи підпрограми можуть бути передані до головної програми через формальні параметри та глобальні дані.

Приклад. Програма обчислення суми десяткових цифр.

 Програма:

 Const N=5;

Var X:Array [1..N] of Integer;

       SumX, Kill,I : Integer;

Procedure Sum(A:Integer; Var ISum:Integer);

  Begin

    ISum:=0;

    While A<>0 do

      Begin

        Kill:=Kill+1;

        ISum:=ISum+Abs(A) mod 10;

        A:=A div 10;

     End;

  End;

Begin

  Writeln(‘Введіть масив’);

  For I:=1 to N do Read(X[i]);

  Kill:=0;

  For I:=1 to N do

    Begin

      Sum(X[I], SumX);

      Writeln(X[I]:6, SumX:4);

    End;

  Writeln(‘Загальна кількість цифр’, Kill);

End.

 Підпрограми-функції використовуються для реалізації алгоритму та повернення в головну програму одного результату в вигляді імені функції.

Ім’я функції вибирається довільно (як ім’я змінної).

Структура функції:

Function ім’я(список формальних параметрів): тип імені;

  {локальні дані}

  Begin

    …

              ім’я := …;

              …

            End;

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

Відносно формальних параметрів, локальних та глобальних даних в функції діють такі ж самі обмеження та вимоги, що і в процедурах.

В виконавчій частині підпрограми-функції повинен бути хоча б один оператор в якому імені функції: призначається значення.

Звернення до функції виконується з якого-небудь арифметичного виразу так, як і до стандартних функцій тину sin(x), ln(x), тощо. Результат роботи функції передається в місце її виклику.

Приклад. Використання функції для обчислення степені.

Програма:

 Var x,y,z : Real ;

Function Step(a:real; b:real):real;

 Begin

  If a<=0 then

   Begin

                Writeln( ‘перевірте дані’);

                 Halt(0);

             End;

             If b=0 then Step:=1

                       else Step:=exp(b*ln(a));

            End;

Begin

 Readln(x:y);  

 Z:=Step(x,y)+Step(y,x);

 Writeln(x,y,z);

End.

Попередня стаття
Наступна стаття