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

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

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

Процедури.

Процедура – це незалежна сукупність операторів, що виконують задану послідовність дій, і визначені окремо від основної частини програми. Опис процедури починається зі службового слова Procedure, після якого йде її ідентифікатор та формальні параметри. Інша частина аналогічна основній програмі.

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

Опис процедури має вигляд:

  • procedure ім’я_процедури (формальні параметри: тип даних);
    • var
      • локальні змінні;
    • begin
      • оператори
    • end;

Виклик процедури у програмі:

  • ім’я_процедури (фактичні параметри);

Приклад: скласти програму з процедурою PrintSum, яка буде складати два числа і виводити їхню суму на екран.

  • Program Print_Sum;
  • var
    • a, b: integer;
  • procedure PrintSum (x, y: integer);
    • var
      • z: integer;
    • begin
      • z := x + y;
      • WriteLn(z);
    • end;
  • begin
    • WriteLn('Введіть два числа');
    • Readln(a, b);
    • PrintSum(a, b);
  • end;

Параметри процедури.

У будь-якій програмі всі змінні діляться на два типи: локальні та глобальні.

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

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

Фактичні параметри – це параметри, які передаються процедурі при зверненні до неї (а, b – фактичні параметри). Число і тип формальних і фактичних параметрів повинні збігатися з точністю до їх слідування.

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

Приклад: скласти програму з процедурою Sum, яка буде складати два числа і передавати їхню суму.

  • Program NumberSum;
  • var
    • a, b, c: integer;
  • procedure Sum(x, y: integer; var z: integer);
    • begin
      • z := x + y;
    • end;
  • begin
    • Readln(a, b);
    • Sum(a, b, c);
    • WriteLn(c);
  • end.

Змінна z в процедуру Sum передана за посиланням, це означає, що якщо її змінити в тілі процедури, то вона зміниться і в тому місці, звідки її передали в процедуру (наприклад, в тілі основної програми).

Функції.

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

Опис функції починається зі службового слова Function, після якого вказується її ідентифікатор, формальні параметри та тип значення, що повертає функція. Інша частина аналогічна основній програмі.

Опис функції має вигляд:

  • Function ім’я_функції (список формальних параметрів): тип значення, що буде повертатися;
    • розділ опису
  • begin
    • оператори
  • end;

Виклик функції в програмі:

  • ім’я_функції (фактичні параметри);

Приклад: скласти програму з функцією Sum, що буде складати два числа і повертати їх значення.

  • Program NumberSum;
  • var
    • a, b: integer;
  • function Sum(x, y: integer) : integer;
    • begin
      • Sum := x + y;
    • end;
  • begin
    • Readln(a, b);
    • WriteLn('Сума двох чисел дорівнює',Sum(a, b));
  • end.