До цього моменту часу ми використовували з розділу описів
тільки опис змінних і типів. На цьому занятті ми почнемо вивчати процедури.
Структура процедури повторює структуру програми.
Зразок структурного програмування процедури(підпрограми)
procedure <имя процедуры> (<параметри>);
label
<розділ опису міток>;
const
< розділ опису констант>;
type
< розділ опису типів даних>;
var
< розділ опису змінних>;
<процедури та функції >;
begin
<основное тело процедуры>;
end;
Напишемо для прикладу просту
програму з процедурою, що додає два числа.
Кодування мовою програмування Pascal;
program pr1;
var
a, b, c: integer;
procedure sum(x, y: integer; var z: integer);
begin
z := x + y;
end;
begin
write('Введіть
два числа: ');
readln(a, b);
sum(a, b, c); {процедура викликається своїм іменем, яке ви написали після зарезервованого слова procedure в описі}
writeln(c);
end.
Звернемося до прикладу, наведеного на малюнку вище. Зліва
наведено фрагмент тексту основної програми, праворуч - процедура. Як тільки в
тілі програми оголошується ім'я процедури з параметрами, виконання «головного»
тіла припиняється, і управління обчислювальними процесами передається
процедурі. Після виконання процедури здійснюється повернення на оператор
основної програми, наступний за викликом процедури.
При описуванні процедури вказується
список формальних параметрів. Кожен параметр є локальним по відношенню до
описуваної процедури, до нього можна звертатися тільки в межах даної процедури
(в нашому прикладі х, у, z - формальні параметри). Фактичні параметри - це
параметри, які передаються процедурі при зверненні до неї (а, b, с - фактичні
параметри). Число і тип формальних і фактичних параметрів повинні збігатися з
точністю до їх слідування.
Іншими словами, передача параметрів за
значенням. Копія фактичного параметра стає значенням відповідного формального
параметра. Усередині процедури можна проводити будь-які дії з даними формальним
параметром (допустимі для його типу), але ці зміни ніяк не відбиваються на
значенні фактичного параметра, тобто яким він був до виклику процедури, то
таким же і залишиться після завершення її роботи (х, у - параметри-значення).
Іншими словами, передача параметрів по
посиланню. Це ті формальні параметри, перед якими стоїть ідентифікатор var.
Передається адреса фактичного параметра (обов'язково змінної), після цього
формальний параметр стає його синонімом. Будь-які операції з формальним
параметром виконуються безпосередньо над фактичним параметром.
Функція
виглядає майже так само, як і процедура. Єдина відмінність в тому, що заголовок
функції починається з ключового слова Function і закінчується типом
повертаємого цією функцією значення.
Крім
того, в тілі функції обов'язково повинен бути хоча б один оператор присвоювання,
де в лівій частині стоїть ім'я функції або змінна result, а в правій - її
значення.
Приклади кодування допоміжної функції мовою програмування Pascal:
Program Zad1;
var
a,
b, c: integer;
function sum(x, y: integer): integer;
begin
sum
:= x + y;
end;
begin
readln(a, b);
writeln(sum(a, b));
end.
Або так:
Program Zad2;
var
a, b, c: integer;
function sum(x, y: integer): integer;
begin
result := x + y;
end;
begin
readln(a, b);
writeln(sum(a, b));
end.
Завдання
для самостійного опрацювання
Завдання 1. Закодувати процедуру PowerA3(A, B),
що обчислює третю степінь(куб) числа А і
повертає її в змінній В(А - вхідні дані; В - вихідні дані, обидва змінні
є дійсними числами). За допомогою цієї процедури знайти третю степінь для шести
даних чисел.
Завдання 2. Закодувати процедуру Mean(X, Y,
AMean, GMean), що обчислює середнє арифметичне
AMean = (X+Y)/2 і середнє
геометричне GMean = (X * Y)^0.5 двох додатних чисел Х та У повертає її
змінним AMean і GMean відповідно,(Х, У - вхідні дані; Amean,GMean -
вихідні дані, обидва змінні є дійсними числами). За допомогою цієї процедури
знайти середнє арифметичне і середнє геометричне для пари даних чисел(А;В),
(А;С), (А;К), якщо дані А,В,С,К.
Завдання 3. Закодувати процедуру TrianglePS(a,
P, S), що по даній стороні рівностороннього трикутника обчислює його периметр P
= 3*a, площу a*a *(3)^0.5, повертає її змінним P та S відповідно,(а - вхідні дані; P
та S - вихідні дані, обидва змінні є дійсними числами). За допомогою цієї
процедури знайти площу та периметр трикутників для трійки сторін(А;А;А),
(С;С;С), (В;В;В), якщо дані А,В,С.
Завдання 4. Закодувати процедуру
AddRightDigit(Р, K), що доповнює до цілого додатного числа К праворуч цифру Р,
повертає її змінним P та S
відповідно,(К, Р (від 0 до 9)- вхідні цілі дані; К - вихідні дані, обидва змінні
є цілими числами). За допомогою цієї процедури доповнити до даного числа К
праворуч спочатку цифру Р1 а потім доповнити праворуч цифру Р2. Вивести
результат кожного обновлення даного
числа.
Завдання 5. Закодувати процедуру
AddRightDigit(Р, K), що доповнює до цілого додатного числа К ліворуч цифру Р,
повертає її змінним P та S
відповідно,(К, Р (від 0 до 9)- вхідні цілі дані; К - вихідні дані, обидва
змінні є цілими числами). За допомогою цієї процедури доповнити до даного числа
К ліворуч спочатку цифру Р1 а потім доповнити ліворуч цифру Р2. Вивести
результат кожного обновлення даного
числа.
Немає коментарів:
Дописати коментар