МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||
Чи потрібні процедури і функції
Питання, винесене до заголовку даного параграфу, може здатись вам дещо незрозумілим, як воно незрозуміле і нам. Адже ми до цього весь час використовували стандартні процедури і функції мови програмування, правда особливо на цьому не наголошували. А оскільки ми їх використовували, то вони потрібні! Але мова йтиме далі не про процедури і функції, вкладені в систему програмування розробниками мови, а про написання власних процедур і функцій. І ось тут питання стає доречним: чи потрібні власні процедури і функції? Відповідь однозначна: потрібні і навіть дуже, особливо при написанні великих програм. Уявимо собі таку картину, взяту з футбольного матчу. Перед початком гри тренер дає вказівку правому захиснику: “Ти повинен на 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. Погодьтесь, що навіть читати текст програми, у якій чотири рази використовується один і той самий алгоритм, справа не для зовсім нормальних людей. Мабуть саме так мислили ті, хто стояв у витоків програмування, і мабуть, саме тому і було створено механізм процедур і функцій, який дозволяє написати досить великий одноманітний фрагмент програми у вигляді процедури або функції, а потім при необхідності викликати його, або як ще іноді кажуть – звертатись до нього при допомозі одного єдиного слова, яке і є назвою процедури або функції. Втім, перейдемо до справи. Перейдемо спочатку до процедур, адже нам потрібно вияснити різницю між процедурами і функціями, а також потрібно вияснити у якому випадку краще використовувати процедури, а у якому – функції.
Читайте також:
|
||||||||
|