Чи потрібні процедури і функції » Pascal - основи програмування

Основи програмування на мові Pascal

 

Спонсори

Чи потрібні процедури і функції

    Питання, винесене до заголовку даного параграфу, може здатись вам дещо незрозумілим, як воно незрозуміле і нам. Адже ми до цього весь час використовували стандартні процедури і функції мови програмування, правда особливо на цьому не наголошували. А оскільки ми їх використовували, то вони потрібні! Але мова йтиме далі не про процедури і функції, вкладені в систему програмування розробниками мови, а про написання власних процедур і функцій. І ось тут питання стає доречним: чи потрібні власні процедури і функції? Відповідь однозначна: потрібні і навіть дуже, особливо при написанні великих програм. Уявимо собі таку картину, взяту з футбольного матчу. Перед початком гри тренер дає вказівку правому захиснику: “Ти повинен на 7, 12, 15, 21, 29, 43, 47, 54, 76 і 86 хвилинах зустрічі здійснювати рейди по правому краю.” Мабуть всім вам така інструкція здасться абсурдною. Нам також! Мабуть набагато простішою і ціннішою для гравця і всієї команди в цілому була б інструкція такого типу: “При можливості частіше здійснюй проходи по правому краю”!

Те ж саме і з програмою. Візьмемо конкретний приклад. Нехай нам потрібно розв’язати наступну задачу.

    Задача 146 Знайти найменше спільне кратне (НСК) 5-ти чисел.

    Розв’язання: Для розв’язання цієї задачі нам потрібно вміти знаходити НСК двох чисел. Тому спочатку розв’яжемо саме цю задачу, а потім повернемось до розв’язання сформульованої вище.

    Задача 147 Знайти НСК 2-х чисел.

    Розв’язання: Нам відомо, як знаходити НСД (nsd) за алгоритмом Евкліда (див задачу ). Скористаємось ним для знаходження НСК (nsk) на підставі такого твердження: якщо НСД (a,b)=nsd, то nsk=(a div nsd)·b. Спробуйте самостійно вивести дану формулу. А ми приведемо програмну реалізацію розв’язку задачі, не використовуючи ніяких коментарів, ми вже й так все роз’яснили.


program n_s_k1;
var a, b, a1, b1, nsk : longint;
begin
write(’ Введіть перше число: ’); readln(a);
write(’ Введіть друге число: ’); readln(b);
a1:=a; b1:=b;
while a1 <> b1 do
if a1 > b1 then a1 := a1–b1
else b1 := b1–a1;
nsk := (a div a1)*b;
writeln(’НСК чисел ’,a,’ та ’,b,’ = ’,nsk);
readln
end.

    Тепер ми можемо повернутись до розв’язання попередньої задачі. Спосіб знаходження НСК для п’яти чисел полягатиме у тому, що ми знайдемо НСК для першого і другого числа, потім знайдемо НСК для знайденого перед цим НСК і третього числа, потім для НСК і четвертого і, нарешті, знайдемо НСК для знайденого на попередньому кроці НСК і п’ятого (останнього!) числа. Спробуйте самостійно реалізувати запропонований спосіб і перевірити, наскільки ваша програма відрізнятиметься від приведеної нижче нами.


program n_s_k1;
var a, b, b1, b2, b3, b4, b5, nsk : longint;
begin
write('Введiть перше число: '); readln(b1);
write('Введiть друге число: '); readln(b2);
write('Введiть трете число: '); readln(b3);
write('Введiть четверте число: '); readln(b4);
write('Введiть п''яте число: '); readln(b5);
a:=b1; b:=b2;
while a <> b do
if a > b then a := a - b
else b := b - a;
nsk := (b1 div a)*b2;
a:=nsk; b:=b3;
while a <> b do
if a > b then a := a - b
else b := b - a;
nsk := (nsk div a)*b3;
a:=nsk; b:=b4;
while a <> b do
if a > b then a := a - b
else b := b - a;
nsk := (nsk div a)*b4;
a:=b1; b:=b2;
a:=nsk; b:=b5;
while a <> b do
if a > b then a := a - b
else b := b - a;
nsk := (nsk div a)*b5;
writeln('НСК п''яти чисел = ',nsk);
readln
end.

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

скачать dle 10.4фильмы бесплатно Наступна сторінка » Процедури Попередня сторінка » Поняття про процедури та функції