МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
Цикл з передумовою
Інколи при організації циклів постає необхідність перевірити умову виконання циклу, тобто чи взагалі на даному етапі слід виконувати цикл. Такий спосіб організації циклів називають циклом з передумовою. З філософської точки зору і розглянутий в попередньому параграфі цикл можна віднести саме до таких циклів, але ми вже домовились, що виділимо цикли з передумовою в окрему групу. Знову, приведемо спочатку програмну реалізацію задачі про знаходження суми перших ста натуральних чисел з використанням оператора циклу з передумовою, а потім детально його розглянемо. Program summa2; { варіант з використанням циклу з передумовою } var i, sum : integer; Begin sum := 0; i := 1; { початкове значення параметра циклу } While i <= 100 do { цикл з передумовою! } Begin sum := sum + i; { до суми додаємо чергове число } inc (i); { рівнозначно запису i := i+1 } End; { кінець циклу } Write ('S = ',sum); Readln; End. Розшифруємо нове словосполучення, яке і є початком циклу з передумовою: While i <= 100 do перекладається так: поки і менше або рівне 100 виконувати Це і є спосіб організації циклу з передумовою. У загальному випадку цикл з передумовою записується так: whileзмінна – умова do На алгоритмічній мові цикл з параметром організовуються наступним чином (в застосуванні до нашої задачі): поки і <= 100 пц Sum := Sum +i i := i+1 кц У машинному розумінні цикл розшифровуються так: поки для змінної і виконується задана умова виконувати наступні інструкції. В умовах поставленої нами задачі в приведеній вище програмі розуміється наступне: поки змінна і менша або рівна 100 виконувати операцію додавання до змінної Sum значення змінної і та збільшувати параметр і на 1. Звертаємо увагу, що в циклах з передумовою значення змінної–параметра (в нашому випадку і) автоматично не змінюється. Тобто, як нам потрібно змінювати параметр – змінну, що відповідає за умову виконання циклу, ми повинні вказувати самостійно у самому циклі. Більше того, якщо ми забудемо змінювати цю змінну в тілі циклу, то такий цикл буде виконуватись “вічно”, якщо до початку циклу змінна відповідала умові виконання циклу. В цьому випадку ми будемо змушені припинити його виконання апаратним шляхом, або знову ж таки при допомозі електрика, який економить електроенергію. Оскільки в даній задачі ми змінюємо змінну і на одиницю, то даний цикл також виконуються 100 разів, але порахувати кількість разів виконання циклу ми вже не можемо застосовуючи якусь конкретну формулу. В загальному випадку цикл з передумовою може: n не виконуватись жодного разу; n виконуватись скінчену кількість разів; n бути “вічним”. Параметр циклу ми можемо збільшувати або зменшувати на яку завгодно величину, тобто параметр циклу може бути як цілим так і дробовим числом, або взагалі відноситись до інших типів змінних – логічних, символьних і т.д. Знову пояснимо логіку машинного мислення при виконанні циклу з передумовою. До початку організації циклу ми присвоюємо значення 0 шуканій сумі і крім того, обов’язково задаємо значення параметра циклу – змінної і. Цикл починається з значення параметру рівного 1, ПЕОМ перевіряє, чи 1<=100, отримує результат “так”, виконує операцію циклу Sum := Sum +1, в результаті якої значення Sum = 1, збільшує значення параметра і на 1, і стає рівним 2. Знову перевіряється умова 2<=100, отримується результат “так”, виконується операція циклу Sum := Sum +2, в результаті якої значення Sum = 3, збільшується значення параметра і на 1, і стає рівним 3 і т.д. На 99 кроці значення Sum було 4950 і параметр і став 100, перевіряється чи 100<=100, отримується результат “так”, виконується операція циклу Sum := Sum +100, в результаті якої значення Sum = 5050, збільшується значення параметра і на 1, і стає рівним 101. Перевіряється чи 101<=100, отримується результат “ні” і цикл на цьому закінчується. Наступною виконується операція, що йде за циклом: надрукувати результат. Весь хід приведених “машинних роздумів” зручно привести в такій таблиці.
На відміну від циклу з параметром у циклі з передумовою необхідно практично завжди ставити операторні дужки Begin ... End. Приведемо приклад використання циклу з передумовою, де операторні дужки не ставляться і, крім того, параметром циклу служить не додаткова змінна, а співвідношення між змінними, що використовуються в циклі, тобто логічна умова. Задача 74. Знайти найбільший спільний дільник (НСД) двох чисел. Розв’язання: Використаємо для розв’язання цієї задачі класичний спосіб великого математика минуло – так званий алгоритм Евкліда. Запропонований ним спосіб знаходження НСД двох чисел можна словесно сформулювати так: доки дві змінні різні, то від більшої змінної віднімай меншу і результат занось у меншу. Якщо ж змінні стали однаковими, то це і є НСД початкових двох чисел. Погодьтесь, що все геніальне – просте! Що ж реалізуємо програмно алгоритм Евкліда: program nsd; var a, b, a1, b1 : integer; begin write(’Введіть перше число: ’); readln(a); write(’Введіть друге число: ’); readln(b); a1 := a; b1 := b; {Зберегли початкові значення змінних } while a1 <> b1 do { поки а1 № b1 то } if a1 > b1 then a1 := a1 - b1 { якщо більше а1 то а1=а1–b1 } else b1 := b1 - a1; { інакше b1 = b1 – a1 } writeln(’НСД чисел ’,a,’ та ’,b,’ = ’,a1); readln end. Запам’ятайте цей алгоритм, він вам не раз згодиться у програмістському житті. Ми також повернемось до нього на сторінках цієї книги і використаємо завсім несподіваним для багатьох вас чином. Якщо наша фраза вас заінтригувала, то ми можемо бути впевнені, що ви будете читати книгу далі. Зауважимо, що цикл з передумовою є більш гнучким у застосуванні, ніж цикл з параметром і використовується значно частіше, ніж розглянутий раніше цикл з параметром. Знову робимо підсумки. Отже, для циклів з передумовою необхідно запам’ятати, що: Читайте також:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|