Оператор «if»

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

В мові програмування (і у багатьох інших) для таких речей існує оператор Запам’ятати доволі просто переклавши, отримаємо

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

Необхідно вказати далі у круглих дужках умову і у фігурних дужках наші дії.

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

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

Для того щоб задати часто використовують знаки рівності А також оператори та для того щоб об’єднати між собою декілька умов.

Розглянемо таку ситуацію:

    
            #include <iostream>
            int main()
            {
                if(3 > 4) //на справді «3» є меншим за «4», тому дана умова є не правильною
                          //і дії не виконаються
                {
                    std::cout << "error" << std::endl;
                }
            
                //звісно, ми можемо виконувати якісь дії в умові, але краще такого не робити.
                //в даній ситуації програма виконає дію додавання, адже вона має вищий пріоритет.
                //«3 + 2 = 5» після чого наша програма порівняє «5» та «7».
                //враховуючи, що «5» є меншим за «7», то умова виконається і тому
                //виконаються всі дії які належать цій умові (знаходяться між фігурними дужками)
                if(3 + 2 < 7)
                {
                    std::cout << "3 + 2 = 5" << std::endl;
                    std::cout << "5 < 7" << std::endl;
                    std::cout << "ok" << std::endl;
                }
                return 0;
            }
        
	

Варто зауважити, що умова буде вважатися виконаною, якщо результатом дії буде Це можна порівняти з відповіддю «так». Наприклад: відповідь тому умова виконається.

Тому в якості умови ми можемо записувати булівський тип Відповідно, при умова буде виконуватися завжди, а при не буде виконуватися. Також, в якості буде сприйматися число крім нуля програма вважатиме як

    
            #include <iostream>
            int main()
            {
                if(1) //сприймаємо як «правду»
                {
                    std::cout << "ok1" << std::endl;
                }
                if(-1) //сприймаємо як «правду»
                {
                    std::cout << "ok2" << std::endl; 
                }
                if(0) //сприймаємо як «не правду»
                {
                    std::cout << "error" << std::endl;
            	}
            	return 0;
            }
        
    

В якості умови ми можемо записувати змінні.

    
            #include <iostream>
            int main()
            {
                int a, b;
                std::cout << "input a, b" << std::endl;
                std::cin >> a >> b;
                if(a < b)
                {
                    std::cout << "max: b" << std::endl;
                }
                if(a == b)
                {
                    std::cout << "=" << std::endl;
                }
                if(a > b)
                {
                    std::cout << "max: a" << std::endl;
                }
                return 0;
            }
        
    

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

    
            #include <iostream>
            int main()
            {
                int a;
                std::cout << "input a" << std::endl; 
                if(a < 5)
                {
                    std::cout << " < 5" << std::endl;
                }
                if(a < 15)
                {
                    std::cout << " < 15" << std::endl;
                }
                if(a < 25)
                {
                    std::cout << " < 25" << std::endl;
                }
                return 0;
            }
        
    

Якщо ми введемо в якості змінної число менше за то всі наші умови виявляться правдою та виконають свої дії.

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

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

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

    
            #include <iostream>
            int main()
            {
                int a, b;
                std::cout << "input a, b" << std::endl;
                std::cin >> a >> b;
                if(a < b)
                {
                    b = b – a;
                }
                if(a > b)
                {
                    a = a – b;
                }
                std::cout << "a = " << a << "\nb = " << b << std::endl;
                return 0;
            }
        
    

Спробуйте відгадати який результат продемонструє програма, якщо ви введете числа а тепер вгадайте, що буде, якщо ввести числа

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

У випадку, коли ми вводили числа то отримали, що Відповідно, перша перевірка виявилася «не правдою», бо не є меншим за А друга перевірка пройшла успішно і ми отримали результат який очікували



Щоб уникати таких ситуацій використовують комбінацію

Їх суть доволі легко зрозуміти, якщо ми просто перекладемо їх

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

    
            #include <iostream>
            int main()
            {
                int a, b;
                std::cout << "input a, b" << std::endl;
                std::cin >> a >> b;
                if(a < b)
                {
                    b = b – a;
                }
                else if(a > b)
                {
                    a = a – b;
                }
                std::cout << "a = " << a << "\nb = " << b << std::endl;
                return 0;
            }
        
    

Тепер, якщо ми введемо числа то наша програма виконає першу перевірку, побачить, що вона є і не буде виконувати наступні перевірки.

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

    
            #include <iostream>
            int main()
            {
                int a, b;
                std::cout << "input a, b" << std::endl;
                std::cin >> a >> b;
                if(a < b)
                {
                    b = b – a;
                }
                else if(a > b)
                {
                    a = a – b;
                }
                else
                {
                    std::cout << "error: a = b" << std::endl;
                }
                std::cout << "a = " << a << "\nb = " << b << std::endl;
                return 0;
            }
        
    

В реальному житті часто виникають ситуації, коли ваші вчинки залежать не від однієї умови, а від декількох.

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

Отже, якщо вам необхідно об’єднати дві умови частинкою то між ними варто поставити При цьому умов може бути не обмежена кількість. Дуже часто ці умови поміщають у круглі дужки

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

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

                //виведемо значення "а" лише, якщо
                //воно є більшим-рівним за "5"
                //і меншим-рівним за "10"
                if((a >= 5) && (a <= 10))
                {
                    std::cout << "a = " << a << std::endl;
                }
                return 0;
            }
        
    

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

Наприклад, у вас з’явиться автомобіль, якщо: позначають так також потрібно записувати між умовами:

Наприклад, програма виведе значення змінної, якщо воно є меншим за або більшим за

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

                //виведемо значення "а" лише, якщо
                //воно є меншим за "5"
                //або більшим за "10"
                if((a < 5) || (a > 10))
                {
                    std::cout << "a = " << a << std::endl;
                }
                return 0;
            }
        
    

Ніхто не забороняє вам комбінувати дані елементи.

Наприклад, виведемо значення змінної лише, якщо воно є або або

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

                if((a > 3 && a < 6) || (a == 9) || (a > 14 && a < 20))
                {
                    std::cout << "a = " << a << std::endl;
                }
                return 0;
            }
        
    

Як помітно у рядку ми не додавали ще внутрішні дужки. Звісно при бажанні можна написати так

Запам’ятайте, що дужки варто використовувати й ставити не Ви маєте чітко визначити які умови йдуть через а які через