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

Неповний умовний оператор

if (B)
{
  S1; S2; … Sn;
}
T1;

Якщо умова B істинна, то виконуються оператори S1, S2, …, Sn, а потім виконується оператор T1, що слідує після оператора if.

Якщо умова B хибна, то блок S1…Sn пропускається і виконується лише T1.

Зауваження

  1. Неповний if застосовують тоді, коли дія потрібна лише за виконання умови, а в іншому випадку нічого робити не потрібно.
  2. Якщо потрібно вибрати один варіант із кількох взаємовиключних, тоді використовують ланцюжок if … else if … else (або switch), а не набір незалежних if.
  3. Приклад 1. Кілька незалежних if: можливий випадок, коли не виконається жоден

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int x = 0;
    
        if (x == 1) {
            cout << "1";
        }
        if (x == 2) {
            cout << "2";
        }
        if (x == 3) {
            cout << "3";
        }
    
        cout << "END";
        return 0;
    }

    Тут x = 0, тому жодна умова x == 1, x == 2, x == 3 не є істинною. Виведеться лише END. Це нормально, якщо так і задумано.

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

    Результат прикладу 1

    Як зробити правильно, якщо потрібен вибір одного з варіантів

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int x = 0;
    
        if (x == 1) {
            cout << "1";
        }
        else if (x == 2) {
            cout << "2";
        }
        else if (x == 3) {
            cout << "3";
        }
        else {
            cout << "Жоден з варіантів не підійшов";
        }
    
        cout << " END";
        return 0;
    }
  4. Умови можуть перетинатися. Якщо умови перетинаються, то при кількох незалежних if можуть виконатися декілька блоків — це не “помилка мови”, а результат логіки умов.
  5. Приклад 2. Перетин умов: виконуються два if

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int x = 0;
    
        if (x == 0) {
            cout << "1\n";
        }
    
        if (x < 1) {
            cout << "2";
        }
    
        return 0;
    }

    За x = 0 істинні обидві умови: x == 0 і x < 1, тому виконуються обидва оператори if.

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

    Результат прикладу 2

    Приклад 3. Перетин умов у присвоєннях: друге присвоєння “перезапише” перше

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int x = 0, y = 0;
    
        if (x >= 0) {
            y = 8;
        }
    
        if (x <= 0) {
            y = 4;
        }
    
        cout << y;
        return 0;
    }

    За x = 0 обидві умови істинні, тому y спочатку стане 8, а потім стане 4. Наприкінці буде виведено 4.

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

    Результат прикладу 3

  6. Можна використовувати і неповні, і повні умовні оператори в одній програмі. Головне — розуміти, що else належить до найближчого попереднього if, який ще не має свого else.
  7. Приклад 4. Поєднання if та if-else (це дозволено)

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int x = 5;
    
        if (x >= 0) {
            cout << "8\n";
        }
    
        if (x <= 0) {
            cout << "4";
        }
        else {
            cout << "7";
        }
    
        return 0;
    }

    За x = 5 перший if виконається (бо x >= 0 істинна). У другому блоці умова x <= 0 хибна, тому виконається else і буде виведено 7.

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

    Результат прикладу 4

    Приклад 5. Те саме з присвоєнням у змінну

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int x = 5, y = 0;
    
        if (x >= 0) {
            y = 8;
        }
    
        if (x <= 0) {
            y = 4;
        }
        else {
            y = 7;
        }
    
        cout << y;
        return 0;
    }

    За x = 5 спочатку y = 8, а потім спрацює else другого оператора і y стане 7. Виведеться 7.

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

    Результат прикладу 5

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