www.ua5.org > Програмування мовою Pascal > Підпрограми - процедури та функції
Підпрограми - процедури та функції10 марта 2008. |
|
В мові Паскаль використовується два види підпрограм - процедури та функції. Вони відрізняються між собою структурою та способом виклику. При проектуванні програми визначається, які частини алгоритму треба реалізувати як процедури, а де знадобиться функція. В головній частині програми підпрограми розташовуються після розділу опису даних перед оператором 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. |