Цикл «for»

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

Якщо завчасно відомо скільки разів має виконатися цикл, то використовують цикл

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

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

2. Умова завершення циклу.

3. Крок циклу.

Після чого у фігурних дужках вказують дії які мають виконуватися під час даного циклу.

    
            for(умова початку; умова завершення; крок)
            {
                Дії;
            }
        
    

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

Розглянемо як можна працювати із циклом «for».

Припустимо ми хочемо вивести всі не парні числа, що знаходяться між та включно.

Для цього в якості початку відліку ми можемо відразу в циклі створити змінну зі значенням Ця ж змінна буде використовуватися для задання умови завершення та кроку. Далі нам необхідно вказати умову завершення. Тому, вказуємо, що наш цикл буде продовжуватися поки змінна є меншою-рівною за Останнім етапом є задання кроку. Враховуючи, що ми маємо вивести всі не парні числа, то крок потрібно робити Адже, дробові числа йдуть через одне.

Отже, наший цикл виглядатиме так:

    
            #include <iostream>
            int main()
            {
                for(int i = 5; i <= 11; i += 2)
                {
                    //int i = 5 – початкова умова (умова відліку)
                    //i <= 11 – умова завершення (при якій цикл завершується)
                    //i += 2 – крок циклу
                    //дії, що виконуються в циклі
                    std::cout << "i =" << i << std::endl;
                }
                return 0;
            }
        
    

Початок відліку, умову завершення, крок може вказувати користувач. Напишемо програму яка буде виводити числа з певного проміжку та з певним кроком.

    
            #include <iostream>
            int main()
            {
                int a; //початок відліку
                int b; //умова завершення
                int c; //крок
                std::cin >> a >> b >> c;
                for(int i = a; i < b; i += c)
                {
                    std::cout << "i = " << i << std::endl;
                }
                return 0;
            }
        
    

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

Початок відліку має вказувати перед циклом.

    
            #include <iostream>
            int main()
            {
                int i = 5; // початок відліку вказуємо раніше
                for( ; i <= 11; i += 2)
                {
                    //int i = 5 – початкова умова (умова відліку)
                    //i <= 11 – умова завершення (при якій цикл завершується)
                    //i += 2 – крок циклу
                    //дії, що виконуються в циклі
                    std::cout << "i = " << i << std::endl;
                }
                return 0;
            }
        
    

Крок має бути в середині циклу (бо отримаєте безкінечний цикл).

    
            #include <iostream>
            int main()
            {
                for(int i = 5; i <= 11; )
                {
                    //int i = 5 – початкова умова (умова відліку)
                    //i <= 11 – умова завершення (при якій цикл завершується)
                    //i += 2 – крок циклу
                    //дії, що виконуються в циклі
                    std::cout << "i = " << i << std::endl;
                    i += 2; //крок вказуємо в середині циклу
                }
                return 0;
            }
        
    

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

        
            #include <iostream>
            int main()
            {
                for(int i = 5; ; i += 2)
                {
                    //int i = 5 – початкова умова (умова відліку)
                    //i <= 11 – умова завершення (при якій цикл завершується)
                    //i += 2 – крок циклу
                    //дії, що виконуються в циклі
                    if(i <= 11) //умову завершення вказуємо в середині циклу
                    {
                        break;
                    }
                    std::cout << "i = " << i << std::endl;
                }
                return 0;
            }
        
    

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

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

    
            #include <iostream>
            int main()
            {
                for( ; ; ) //створюємо безкінечний цикл
                {
                    std::cout << "Hello" << std::endl;
                }
                return 0;
            }
        
    

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

        
            #include <iostream>

            int main()
            {
                int n, sum = 0;

                std::cout << "Input number: ";
                std::cin >> n;

                for (int i = 1; i <= n; i += 2)
                    sum += i;

                std::cout << "sum = " << sum;
            }
        
    

А, тепер, погляньте на наступний вигляд програми:

        
            #include <iostream>

            int main()
            {
                int n, sum = 0;
                std::cout << "Input number: ";
                std::cin >> n;

                for (int i = 1; i <= n; sum += i, i += 2);

                std::cout << "sum = " << sum;
            }
        
    

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

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

Давайте розглянемо ще один приклад. Виведемо парних чисел.

        
            #include <iostream>

            int main()
            {
                for (int i = 1, k = 0; i <= 5; std::cout << i << ") = " << k << std::endl, k += 2, i++);
            }
        
    

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

1. Змінні створені в умовах (в середині круглих дужок) припиняють існувати при завершенні блоку коду з циклу

2. Змінна, яка символізує крок циклу має змінюватися останньою (в нашому прикладі це змінна

3. Використовуйте даний запис коли блок коду циклу складається з рядків.

І пам’ятайте, що ви можете завершити поточну ітерацію за допомогою ключового слова




Ви повинні увійти, щоб залишати коментарі.


Коментарі: