Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



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

 

Питання, винесене до заголовку даного параграфу, може здатись вам дещо незрозумілим, як воно незрозуміле і нам. Адже ми до цього весь час використовували стандартні процедури і функції мови програмування, правда особливо на цьому не наголошували. А оскільки ми їх використовували, то вони потрібні! Але мова йтиме далі не про процедури і функції, вкладені в систему програмування розробниками мови, а про написання власних процедур і функцій. І ось тут питання стає доречним: чи потрібні власні процедури і функції? Відповідь однозначна: потрібні і навіть дуже, особливо при написанні великих програм. Уявимо собі таку картину, взяту з футбольного матчу. Перед початком гри тренер дає вказівку правому захиснику: “Ти повинен на 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.

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

 

 


Читайте також:

  1. Адвокатура в Україні: основні завдання і функції
  2. Алгоритм знаходження ДДНФ (ДКНФ) для даної булевої функції
  3. Але відмінні від значення функції в точці або значення не існує, то точка називається точкою усувного розриву функції .
  4. Аналіз коефіцієнтів цільової функції
  5. Аналітичні процедури внутрішнього аудиту та їх класифікація.
  6. АРХІВНІ ДОВІДНИКИ В СИСТЕМІ НДА: ФУНКЦІЇ ТА СТРУКТУРА
  7. АРХІВНІ ДОВІДНИКИ В СИСТЕМІ НДА: ФУНКЦІЇ ТА СТРУКТУРА
  8. Асимптоти графіка функції
  9. Асимптоти графіка функції
  10. Аудиторські докази: поняття та процедури отримання
  11. Базальні ядра, їх функції, симптоми ураження
  12. Базові функції, логічні функції




Переглядів: 365

<== попередня сторінка | наступна сторінка ==>
Поняття про процедури та функції | Процедури

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.004 сек.