Назад Зміст Вперед

Цикли з умовою. Структура операторів

Оператор циклу з параметром (for) використовують, якщо заздалегідь відомо скільки разів потрібно виконувати деякі оператори.

Існують задачі, коли заздалегідь невідомо скільки разів потрібно виконувати деякі оператори, але відома умова при який цикл виконується або умова при який цикл завершується.

Коли спочатку потрібно перевірити умову, а потім виконувати тіло циклу використовується оператор циклу while

Коли спочатку потрібно виконати тіло циклу, а потім перевіряти умову використовується оператор циклу do while.

Цикл з передумовою

Загальний вигляд   Приклад   
 {оператори до циклу}
  while (B)
    {
        S1;
        S2;
        ...
    }

 {оператори після циклу}
 (B)  – умова продовження циклу.
 S1; S2; ... - оператори, що виконуються у циклі.
 
int a=6;
    while (a>0)
    {
        cout<<a<<" ";
        a--;
    }

a>0  – умова продовження циклу.
У фігурних дужках оператори, що виконуються у циклі.

Порядок виконання

  1. Спочатку перевіряється умова B
  2. Якщо умова вірна:
  3. Якщо умова невірна, тіло циклу пропускається і виконується оператор, що йде після "}"

Особливості виконання оператору

  1. Тіло циклу while (оператори S1; S2;...Sn) виконується, якщо умова B вірна. Цикл while закінчується, якщо умова B не вірна .
  2. Умова перевіряється перед виконанням тіла циклу. Тому, можливі випадки, коли цикл не зробить жодного витка (якщо у прикладі, перед циклом присвоїти a=-6, то тіло циклу не виконається ні разу).
  3. У тілі циклу повинен бути оператор (у прикладі a--), що впливає на умову. Якщо такого оператору немає, то можливе зациклювання (якщо у прикладі, замість a-- написати a++).

Приклад 1

Дано натуральне число n. Чи є воно степенем числа 2?

Щоб з’ясувати, чи є число степенем числа 2, потрібно ділити це число на 2 (тобто виконувати оператор n=n / 2) поки це можна виконувати без остачі (тобто, якщо вірна умова n % 2==0). Тобто, спочатку ми перевіряємо умову – чи ділиться число n на 2 і, якщо ділиться, виконуємо ділення. Тому у цій задачі потрібно використовувати оператор циклу while

В результаті одного чи декількох ділень числа на 2 ми отримаємо n=1, якщо число є степенем числа 2 (бо ділення на 2 завжди можливе), або n!=1, якщо число не є степенем числа 2.

Результат роботи програми

Ввід Вивід
8yes
12no

Програма

Цикл з післяумовою

Загальний вигляд   Приклад   
 {оператори до циклу}
  do
    {
        S1;
        S2;
        ...
    } while (B);

 {оператори після циклу} 
 (B)  – умова продовження циклу.
 S1; S2; ... - оператори, що виконуються у циклі.
 
int a=6;
    do
    {
        cout<<a<<" ";
        a--;
    } while (a>0);

a>0  – умова продовження циклу.
У фігурних дужках оператори, що виконуються у циклі.

Порядок виконання

  1. Спочатку виконується тіло циклу (оператори S1; S2;...Sn).
  2. Потім перевіряється умова B.

Особливості виконання оператору

  1. Тіло циклу do while (оператори S1; S2;...Sn) виконується, якщо умова B вірна. Цикл закінчується, якщо умова B невірна.
  2. Умова перевіряється після виконанням тіла циклу. Тому, цикл завжди зробить хоча б один виток.
  3. У тілі циклу повинен бути оператор (у прикладі a--), що впливає на умову. Якщо такого оператору немає, то можливе зациклювання.

Приклад 2

У циклі вводяться цілі числа. Умова закінчення вводу – ввід числа 0. Знайти суму додатних чисел.

Тобто, спочатку потрібно ввести число з клавіатури, зробити з ним потрібні дії, а потім перевірити і, якщо введене число =0, то цикл потрібно завершити. Тому у цій задачі потрібно використовувати оператор циклу do while

Результат роботи програми

Ввід Вивід
8 -3 4 -2 012

Програма

Приклад 3

У циклі вводяться цілі числа. Умова закінчення вводу – ввід числа 0. Знайти суму чисел з парними порядковими номерами. Тобто потрібно знайти суму другого, четвертого, шостого і т.д. чисел.

Ця задача відрізняється від попередньої тільки тим, що перевіряються не самі числа, а їх порядкові номери. Нумерацію чисел прийдеться організувати самостійно, бо цикл з умовою не має параметру.

Результат роботи програми

Ввід Вивід
8 3 4 2 0 5

Програма

Варіанти задач

  1. У циклі вводяться цілі додатні числа. Умова закінчення вводу – ввід від’ємного числа. Знайти кількість додатних чисел.
  2. У циклі вводяться цілі непарні числа. Умова закінчення вводу – ввід парного числа. Знайти суму непарних чисел.
  3. У циклі вводяться будь-які цілі числа. Умова закінчення вводу – ввід числа 0. Знайти порядковий номер найменшого числа.
  4. У циклі вводяться будь-які цілі числа. Умова закінчення вводу – ввід числа 0. Знайти найбільше число та його порядковий номер.
  5. У циклі вводяться будь-які цілі числа. Умова закінчення вводу – ввід числа 777. Чи є серед цих чисел, хочаб одне число, що кратне 7?
  6. У циклі вводяться будь-які цілі числа. Умова закінчення вводу – ввід числа 0. Чи всі ці числа додатні?
  7. У циклі вводяться будь-які цілі числа. Умова закінчення вводу – ввід числа 0. Знайти серед введених чисел останнє, яке закінчується цифрою 0. Якщо таких чисел немає, вивести повідомлення.
  8. Вводіть у циклі цілі числа, які створюють послідовність, яка спадає. Умова закінчення вводу – ввід числа, що порушує спадання. Знайти суму чисел у послідовності.
  9. Вводіть у циклі цілі числа, які створюють послідовність, яка зростає. Умова закінчення вводу – ввід числа, що порушує зростання. Знайти кількість чисел у послідовності.
  10. Дано ціле число. Знайти його найменший дільник, який відрізняється від 1.
  11. Громадянин 1 березня відкрив у банку рахунок та поклав на нього А грн. Через кожний місяць розмір вкладу збільшується на 2% від суми, що є на рахунку. Через скільки місяців величина вкладу стане більше В грн?
  12. У циклі вводяться будь-які цілі числа. Умова закінчення вводу – ввід числа 0. Знайти скільки разів у цій послідовності чисел змінюється знак. Наприклад, серед чисел 1 -34 8 14 -5 0 знак змінюється 3 рази.
  13. У циклі вводяться будь-які цілі числа. Умова закінчення вводу – ввід числа 0. Знайти кількість чисел, які більші своїх сусідів.
  14. У циклі вводяться будь-які цілі числа. Умова закінчення вводу – ввід числа 0. Знайти суму тих чисел, що є простими числами.
  15. У циклі вводяться будь-які цілі числа. Умова закінчення вводу – ввід числа 0. Знайти суму тих чисел, що є числами Фібоначчі.
  16. Дано ціле число. Розкласти це число на прості множники. Наприклад, для числа 2340, відповідь буде така: 2 2 3 3 5 13 .
  17. Дано прямокутник розмірами a на b. Від нього відрізают квадрати максимального розміру, поки це можливо. Потім, від прямокутника, що залишився знову відрізают квадрати максимального розміру і так далі. На які квадрати та в який кількості буде розрізано початковий прямокутник? Наприклад для прямокутника a=11 b=3 відповідь буде така:
    1) 3 x 3
    2) 3 x 3
    3) 3 x 3
    4) 2 x 2
    5) 1 x 1
    6) 1 x 1

Назад Зміст Вперед