Підпрограми
Часто, працюючи над
програмою, програміст помічає, що деяка послідовність команд, зустрічається в
різних частинах програми декілька разів. Можна запобігти дублюванню коду в програмі. Для цього потрібно
оформити команди, які зустрічаються декілька разів як підпрограму і замінити
команди, оформлені як підпрограма командою виклику підпрограми.
Важливим принципом програмування є принцип модульності. В модульній
програмі окремі її частини, призначені для розв’язування часткових задач,
організовані в підпрограми.
Підпрограмою називається самостійний фрагмент
програми, який має ім’я та оформлений певним чином.
Модульний принцип організації програм має дві великі переваги :
1.
один і той же фрагмент можна використовувати
багаторазово в різних програмах, не набираючи текст наново;
2.
програми краще писати невеликими частинами.
В мові Паскаль модульність забезпечується використанням підпрограм – процедур, підпрограм –
функцій і модулів.
По структурі процедура і функція аналогічні самій
програмі: є заголовок, може бути присутній один із розділів опису, який
передбачений в основній програмі, і тіло процедури, яке являє собою сукупність
операторів, закріплених в операторні дужки begin-end, а в кінці
ставиться крапка з комою.
Як видно із синтаксичних діаграм, розрізняють
процедури з параметром і без параметрів (це ті, де відсутній список формальних
параметрів). Виклик процедури здійснюється шляхом вказування імені процедури і
списку фактичних параметрів.
Процедури без
параметрів
Процедура
вводиться у використання (визначається) за допомогою опису процедури в розділі
процедур і функцій програми:<заголовок процедури>;<блок>;
Заголовок
процедури починається із службового слова procedure, містить ім’я
процедури.
Для
активізації процедури (тобто для виконання фрагменту програми, оголошеного
процедурою) в потрібному місці програми служить оператор процедури:
<ім'я процедури>;
Різні
особливості опису процедур і способи їх використання будемо розглядати на
прикладі такої задачі.
Задача: по заданих дійсних значеннях x і y обчислити u=max(x+y,x*y), v=max(0.5,u).
запишемо цю
програму в такому вигляді:
program MAX2;
var x, y, u, v, a, b, s: real;
begin read (x, y);
a: = x + y; b: = x*y;
if a > b then s: = a else s: = b;
u: = s;
a: = 0.5; b: = u;
if a > b then s: = a else s: = b;
v: = s;
writeln (‘u=’, u, ‘v=’, v)
end.
Тут два умовні оператори співпадають. Щоб не
записувати цей оператор два рази, оголосимо його процедурою з ім’ям MAXPR:
program MAX3;
var x, y, u, v, a, b, s: real;
procedure MAXPR;
begin if a > b then s: = a else s: = b end;
begin read (x, y);
a: = x + y; b: = x*y;
MAXPR;
u: = s;
a: = 0.5; b: = u;
MAXPR;
v: = s;
writeln (‘u=’, u, ‘v=’, v)
end.
Приклад. Скласти програму з використанням процедур
без параметрів: порахувати
суму елементів матриці розміру 3´4, що містить дійсні елементи.
program PR2;
const m =3; n = 4;
var i,
j: integer;a:array[1..3,1..4]
of real; s:real;
procedure Vvid;
begin
for
i: = 1 to 3 do
for j: = 1 to 4 do
read(a[i, j]);
end;
procedure SUM;
begin
s: =0;
for i: = 1 to 3 do
for j: = 1 to 4 do
s: = s + a[i, j];
end;
begin
Vvid;
SUM;
writeln
(‘s=’, s);
end.
Підручник : ст. 201-203.
Д./з.
1. Ввести ціле
число x. Обчислити u = min(x,x2), v = min(0.2,u).
2. Порахувати суму і кількість додатніх
елементів кожного з трьох векторів, які складаються з n дійсних елементів.
Немає коментарів:
Дописати коментар