Цикл «while»

Як ви помітили з попередніх уроків програма виконується з верху до низу і кожна дія виконується лише один раз. Часто доводиться виконувати якісь дії декілька разів підряд. Для цього використовують цикли.

Перший цикл який ми розглянемо називається ми можемо перекласти як А сприймати його варто так: «поки виконується умова, то виконувати дії». Відповідно, після слова необхідно в круглих дужках записати умову при якій будуть виконуватися якісь дії, а вже після цього у фігурних дужках варто вказати дії які будуть виконуватися.

    
            while (умова)
            {
                Дії;
            }
        
    

Даний цикл працює так:

1. Перевіряє умову. Якщо вона виконується, тобто є правильною (аналогічно з то програма переходить до дій.

2. Програма виконує всі дії які знаходяться між фігурними дужками.

3. Програма перевіряє умову. Якщо вона правильна, то знову виконує дії. Тобто, ми знову повертаємося в

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

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

    
            #include <iostream>
            int main()
            {
                //умова ніколи не змінюється, тому будемо мати зациклення
                while(true)
                {
                    std::cout << "error" << std::endl;
                }
                return 0;
            }
            
    

Коли, ви створюєте якісь цикли, то не забувайте умову завершення. Вона може бути вказана відразу:

    
            #include <iostream>
            int main()
            {
                int a = 3;
                // «a < 7» умова завершення. Цикл буде виконуватися поки умова буде правдою
                while(a < 7)
                {
                    std::cout << "a = " << a << std::endl;
                    a++; //змінюємо значення, щоб цикл зупинився (бо «а» стане рівним «7»)
                }
                return 0;
            }
        
    

В даній програмі ми вказали умову і під час виконання дій значення змінної змінюється. За рахунок цього наша умова рано чи пізно (буде не правильною) і цикл зупиниться. В таких ситуаціях потрібно все уважно записувати. Адже, можна дуже легко записати умову або зміни які зациклять програму.

В таких ситуаціях програма буде виконувати дії певну кількість разів.

Якщо вам потрібно щоб програма виконувала дії поки не виконається якась певна умова, то ви можете її вказати відразу або в самому циклі.

Наприклад, наступна програма буде просити вказати символ поки ви не введете

    
            #include <iostream>
            int main()
            {
                char a = 'y';
                while(a ! = 'e')
                {
                    std::cin >> a;
                    std::cout << "a = " << a << std::endl;
                }
                return 0;
            }
        
    

Як помітно, ми відразу вказали умову завершення. Також, цикл, можна зупиняти примусово за допомогою ключового слова Його можна сприймати як Якщо програма помічає дане слово у циклі, то вона відразу його зупиняє та завершує.

Зробимо безкінечний цикл але в ньому добавимо умову завершення.

    
            #include <iostream>
            int main()
            {
                int a = 3;
                // маємо безкінечний цикл
                while(true)
                {
                    std::cout << "a = " << a << std::endl;
                    a++; //змінюємо значення, щоб цикл зупинився (бо «а» стане рівним «7»)
                    if(a < 7) //умова примусового завершення
                    {
                        break; //примусово завершуємо програму
                    }
                }
                return 0;
            }
        
    

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

    
            #include <iostream>
            int main()
            {
                //умова ніколи не змінюється, тому будемо мати зациклення
                while(true)
                {
                    std::cout << "Hello" << std::endl; //дія виконається бо стоїть перед «break»
                    break; //примусово зупиняємо цикл
                    std::cout << "error" << std::endl; //дія не виконається бо стоїть після «break»
                }
                return 0;
            }
        
    

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

Записуємо цикл так: ставимо ключове слово далі у фігурних дужках дії які мають виконуватися в даному циклі, ключове слово в круглих дужках вказуємо умову та завершуємо все

    
            do
            {
                Дії;
            } while(умова);
        
    

Наприклад:

    
            #include <iostream>
            int main ()
            {
                //програма виконає дії як мінімум один раз
                do
                {
                    std::cout << "Hello" << std::endl;
                } while(false); //оскільки умова відразу «не виконується», то програма виконає дії лише 1 раз
                return 0;
            }
        
    
    
            #include <iostream>
            int main ()
            {
                int a;
                std::cout << "input number" << std::endl;
                std::cin >> a;
                //якщо вказати число більше за «7», то програма все одно виконає дії один раз
                do
                {
                    std::cout << "a = " << a << std::endl;
                    a++; //змінюємо значення, щоб цикл зупинився (бо «а» стане рівним «7»)
                    //«a < 7» умова завершення. Цикл буде виконуватися поки умова буде правдою
                } while(a < 7);
                return 0;
            }
        
    

Цикл аналогічно до циклу можна завершувати примусово за допомогою ключового слова