Передача параметрів
У стандарті мови Паскаль передача параметрів може здійснюватися в два способи – по значенню і по посиланню. Параметри, що передаються по значенню, називають параметрами-значеннями, що передаються по посиланню - параметрами-змінними. Останні відрізняються тим, що в заголовку процедури (функції) перед ними ставиться службове слово var.
Якщо використовується перший спосіб (передача за значенням) значення фактичних параметрів копіюється у відповідні формальні параметри. При зміні цих значень в ході виконання процедури (функції) вихідні дані (фактичні параметри) змінитися не можуть. Тому таким способом передають дані тільки із блоку викликів в підпрограму (тобто вхідні параметри). При цьому в якості фактичних параметрів можна використовувати і константи, і змінні, і вирази.
Якщо використовується другий спосіб (передача по посиланню) всі зміни, що відбуваються в тілі процедури (функції) з формальними параметрами, призводять до негайних аналогічним змінам відповідних їм фактичних параметрів. Зміни відбуваються із змінними блоку викликів, тому по посиланню передаються вихідні параметри. В разі виклику відповідні їм фактичні параметри можуть бути тільки змінними.
Вибір способу передачі параметрів при створенні процедури (функції) відбувається у відповідності до сказаного вище: вхідні параметри потрібно передавати за значенням, а вихідні - по посиланню. Практично це зводиться до розстановки в заголовку процедури (функції) зарезервованого слова var перед всіма параметрами, які позначають результат роботи підпрограми. Однак, у зв'язку з тим, що функція повертає тільки один результат, в її заголовку використовувати параметри-змінні не рекомендується.
Поняття рекурсії. Поняття підпрограми тісно пов’язане з одним методом розв’язання задач, яке має назву рекурсія. Рекурсія – це метод визначення чи вираження функції, процедури, мовної конструкції чи рішення задачі за допомогою тієї ж функції, процедури та т.п. Слово рекурсивний, рекурентний вийшло від латинського “recurro” (бігти назад, вертатися). Якщо відомо алгоритм розвязку задачі для найпростіших даних, та як звести розв’язок до більш простих даних в інших випадках, має сенс використати рекурсію. Співвідношення, в яких для обчислення поточного значення використовуються значення, отримані на попередніх етапах обчислення називають рекурентними. Рекурсією називається така ситуація, коли підпрограма (процедура або функція) викликає сама себе.
Будь-яке рекурсивне визначення складається з двох частин. Одна частина визначає поняття через нього ж, інша частина - через інші поняття. Будь-яке рекурсивне визначення складається з двох частин. Одна частина визначає поняття через нього ж, інша частина - через інші поняття.
Рекурсивні процедури і функції
Записати рекурсивний алгоритм на Паскалі можна за допомогою рекурсивної процедури. Процедура є рекурсивною, якщо вона звертається сама до себе прямо або через інші процедури.
Зауважимо, що при непрямому обертанні всі процедури в ланцюжку - рекурсивні.
Все сказане про процедури цілком відноситься і до функцій. Повернемося до рекурсивного визначення факторіала. Достатньо записати його на Паскалі й утвориться опис рекурсивної функції.
Function Factorial (N: Integer) : Integer;
Begin
< ти рекурсивний алгоритм на Паскалі можна за допомогою рекурсивної процедури. Процедура є рекурсивною, якщо вона звертається сама до себе прямо або через інші процедури.
Зауважимо, що при непрямому обертанні всі процедури в ланцюжку - рекурсивні.
Все сказане про процедури цілком відноситься і до функцій. Повернемося до рекурсивного визначення факторіала. Достатньо записати його на Паскалі й утвориться опис рекурсивної функції.
Function Factorial (N: Integer) : Integer;
Begin
If N=0 Then Factorial:=1 Else Factorial:=Factorial(N-1)*N
End;
