Вкладені оператори вибору, цикли

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

Ви можете помістити цикл в оператор вибору який в свою чергу може бути ще в одному операторі вибору Таких прикладів можна навести дуже багато.

Обмежень по вкладених операторах не має. Ви можете помістити хоч десять операторів один в одного. Але так робити не бажано.

Також ви можете поміщати декілька операторів в один.

Оператор вважається вкладеним, якщо він знаходиться у фігурних дужках що належать іншому оператору.

    
            #include <iostream>
            int main()
            {
                int a;
                for(int i = 0; i < 3; i++)
                {//початок "for"

                    //наступні оператори будуть вкладені
                    //у цикл "for"
                    std::cout << "**** for ****" << std::endl;

                    std::cout << "input a: ";
                    std::cin >> a;

                    //оператор "if" є вкладений у цикл "for"
                    //бо знаходиться в середині його фігурних дужок
                    if(a > 0)
                    {
                        std::cout << "**** if(a > 0) ****" << std::endl;

                        //даний оператор "if" знаходиться
                        //в середині іншого "if", тому
                        //він також є вкладеним
                        if(a > 10)
                        {
                            std::cout << "**** if(a > 10) ****" << std::endl;
                        }
                    }
                }//кінець "for"

                return 0;
            }
        
    

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

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

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

    
            #include <iostream>
            int main()
            {
                //це є зовнішній цикл "for"
                for(int i = 0; i < 3; i++)
                {
                    //демонструємо виконання дій зовнішнього циклу
                    //дії зовнішнього циклу виконуються "3" рази
                    //бо ми маємо "i < 3"
                    std::cout << "i = " << i << std::endl << std::endl;

                    //це є внутрішній цикл "for"
                    for(int j = 0; j < 2; j++)
                    {
                        //демонструємо виконання дій внутрішнього циклу

                        //дії внутрішнього циклу виконуються "2" рази
                        //бо ми маємо "j < 2"
                        std::cout << "j = " << j << std::endl;
                    }
                std::cout  << std::endl;

                }
                return 0;
            }
        
    

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

Коли ви хочете якусь дію в оператор, то потрібно їх записувати між фігурних дужок. Але, якщо ви маєте лише одну дію, то фігурні дужки можна не записувати.

Важливо! Якщо ви не записуєте у фігурних дужках, то лише одна ДІЯ вважається вкладеною. Багато хто помилково вважає, що одна СТРІЧКА КОДУ але це не так.

Пам’ятаємо, що кожна дія завершується

    
            #include <iostream>
            int main()
            {
                //скорочений запис вкладених одній
                //ми не записуємо фігурних дужок після "for"
                //тому перша дія буде вкладеною
                for(int i = 0; i < 2; i++)
                    std::cout << "i = " << i << std::endl;

                //зверніть увагу. вивід інформації
                //ми записали в одній стрічці
                //але вкладеною буде дія
                //std::cout << "string 1\n";
                //відповідно, оскільки умова "2 > 3" є
                //не правильною, то вкладені дії
                //не мають виконатися
                if(2 > 3)
                    std::cout << "string 1\n"; std::cout << "string 2\n";

                return 0;
            }
        
    

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

    
            #include <iostream>
            int main()
            {
                //ми можемо вкласти за скороченим записом
                //цикли або оператори вибору. при цьому
                //у вкладених операторах може бути
                //декілька дій. але у такому випадку вони
                //мають бути у фігурних дужках
                //якщо дія буде єдиною, то ви без
                //проблем можете використовувати ще раз
                //скорочений запис
                for(int i = 0; i < 3; i++)
                    for(int j = 0; j < 2; j++)
                    {
                        std::cout << "string 1\n";
                        std::cout << "string 2\n";
                        std::cout << "string 3\n\n";
                    }

                return 0;
            }
        
    

Оператори вибору та вважаються однією дією. Тому, вони вважаються однією дією.

    
            #include <iostream>
            int main()
            {
                int a;
                std::cout << "input number: ";
                std::cin >> a;

                //зовнішнім оператором вибору є
                //if(a % 2 == 0)
                if(a % 2 == 0)
                    //це є внутрішній оператор вибору
                    //пам'ятаємо, що умови
                    //if - else if - else
                    //вважаються однією дією
                    //тому ми можемо використовувати
                    //скорочений запис
                    if(a < 0)
                        //також ми використовуємо
                        //скорочений запис і у внутрішніх
                        //операторах
                        std::cout << "a < 0 and a%2 == 0" << std::endl;
                    else if(a == 0)
                        std::cout << "a == 0" << std::endl;
                    else if(a > 0)
                        std::cout << "a > 0 and a%2 == 0" << std::endl;

                return 0;
            }