Оператор выбора if else

В некоторых источниках говорится, что оператор выбора if else — самостоятельный оператор. Но это не так, if else — это всего лишь форма записи оператора выбора if. Оператор if else позволяет определить программисту действие, когда условие истинно и альтернативное действие, когда условие ложно. Тогда как if позволял определить действие при истинном условии.

Синтаксис записи оператора выбора if else:

if (/*проверяемое условие*/)
{
   /*тело оператора выбора 1*/;
} else
      {
         /*тело оператора выбора 2*/;
      }

Читается так: «Если проверяемое условие истинно, то выполняется тело оператора выбора 1, иначе (то есть проверяемое условие ложно) выполняется тело оператора выбора 2«. Обратите внимание на то, как записан оператор if else. Слово else специально сдвинуто вправо для того чтобы программный код был понятен и его было удобно читать.

Рассмотрим задачу с предыдущей темы, с использованием if else. Напомню условие задачи: «Даны два числа, необходимо их сравнить».

// if_else.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
    int a, b;
    cout << "Vvedite pervoe chislo: ";
    cin >> a;
    cout << "Vvedite vtoroe chislo: ";
    cin >> b;
    if ( a >= b) // если a больше либо равно b, то
    {
     cout << a << " >= " << b << endl;
    } else  // иначе 
         {
          cout << a << " <= " << b << endl;
         }
    system("pause");
    return 0;
}

В данном коде нас интересуют строки 14-20. Эти строки читаются так: если a (первое число) больше либо равно b (второе число), то выполнить оператор вывода в строке 16

cout << a << " >= " << b << endl;

иначе выполнить оператор вывода в строке 19

cout << a << " <= " << b << endl;

В данном ифе мы используем операции соотношений >= и <=. Условие перехода не совсем правильно, так как условие будет ложно только в том случае, если первое число будет меньше второго, во всех остальных случаях условие истинно. Значит, строку 19 нужно записать так

cout << a << " < " << b << endl; // в кавычках записать не меньше или равно, а просто меньше.

А вот так сработала программа (см. Рисунок 1).

CppStudio.com
Vvedite pervoe chislo: 15
Vvedite vtoroe chislo: -4
15 >= -4
Для продолжения нажмите любую клавишу . . .

Рисунок 1 — Оператор выбора if else

Покажу еще один пример использования операторов выбора if  else (так называемые вложенные операторы if  else для множественного выбора).

Условие задачи:
Составить алгоритм находящий значение y, если у=х, при х<0; у=0, при 0<=х<30; у=х2, при х>=30;
// inif_else.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
    int x, y;
    cout << "Vvedite x: ";
    cin >> x;
    if (x < 0)
    {
     y = x; // выполняется, если х меньше нуля
    } else
           {
             if ( (x >= 0) && (x < 30) )
             {
                y = 0; // выполняется, если х больше либо равно нуля и меньше 30
             } else
                     {
                       if (x >= 30)
                       {
                        y = x * x; // выполняется, если х больше либо равен 30 
                       }
                     }
           }
    cout << "y=" << y << endl;
    system("pause");
    return 0;
}

В данной задаче возможны три случая:
1-й случай: х < 0;
2-й случай: х лежит в пределах от 0 (включая 0) до 30;
3-й случай: х больше или равен 30.

Заметьте новшество!! В 17 строке такую запись:  if ( ( x >= 0 ) && ( x< 30 ) )я использовал символы && — это логическое И. Операция логического И && необходима для объединения нескольких простых условий в одно составное. В нашем случае необходимо проверить истинность двух условий: первое – x >= 0, второе – х < 30. Все проверяемое условие будет истинно, если истинны два простых условия. В математике правильной записью считается такая запись: 0 <= x < 30, а в С++ правильной записью считается вот такая запись: ( x >= 0 ) && ( x < 30 )  или такая  0 <= x && x < 30. Кстати круглые скобочки () && () не обязательны, так как условия простые, но для уверенности, я прописываю, всегда, данные скобочки и вам советую.

Разбор частного случая:

Допустим, пользователь ввел число 31. Начиная со строки 12, выполняется проверка условий. Читается так: «Если х (31 в нашем случае) < 0, то выполнить оператор в строке 14». Но так как 31 > 0 условие ложно мы переходим к слову else (иначе) строка 15. Дальше проверяем, входит ли число 31 в заданный интервал. Читается так: если х>=0 и х<30 то выполнить оператор в строке 19. Но так как число 31 не входит в заданный интервал, то условие ложно. Подробно строка 17: программа сначала проверит первое простое условие х >= 0 – оно истинно, а если первое истинно, то программа перейдет к проверке второго простого условия х < 30 – оно ложно. Следовательно всё составное условие ложно, ведь в составном условии у нас используется логическая операция &&, а это значит, что все составное условие истинно только в том случае, когда истинны оба простых условия. Переходим к else (иначе ), здесь у нас последний if, (строка 22). Выполняется проверка х >= 30. Читается так: Если х >= 30 то выполнить оператор, находящийся в строке 24. Наконец-то условие истинно, итак выполнился оператор в строке 24. И строка 28 печатает получившееся значение. Ну, все, рассмотрели программу по мельчайшим деталям. Результат работы программы, в случае, если пользователь ввел число 31 (см. Рисунок 2)

CppStudio.com
Vvedite x: 31
y=961
Для продолжения нажмите любую клавишу . . .

Рисунок 2 — Оператор выбора if else

Автор: admin
Дата: 25.08.2012
Поделиться:

Комментарии

  1. Max Petrov

    Может это для наглядности, но к слову, если кому интересно, сложное условие можно исключить, так как первый if сам проверяет x на его знак. В общем можно записать так.

       if (x < 0)
        {
         y = x; // выполняется, если х меньше нуля
        } else
               {
                 if ( x < 30 )
                 {
                    y = 0; // выполняется, если х больше либо равно нуля и меньше 30
                 } else
                         {
                            y = x * x; // выполняется, если х больше либо равен 30
                           }
                         }
               }
  2. Denya Lorents

    Во втором куске кода логическая ошибка

     if ( a >= b) // если a больше либо равно b, то
        {
         cout << a << " >= " << b << endl;
        } else  // иначе
             {
              cout << a << " <= " << b << endl;
             }

    Мы же сначала проверяем равно или больше а и b. Тогда после этого в else может выполнится только в том случае если a меньше чем b но никак если равно.

  3. Sergen13rs

    Вроде нашёл ещё одну опечатку. После кода задачи в объяснении. Написано: Читается так:если х>=0 и х<30 то выполнить оператор в строке 17.

    Должно выполнять оператор в строке 19, а не 17.

    Быть может я ошибаюсь. Ибо я абсолютный новичок.

  4. Найруми

    почему бы не так?
    #include <iostream>
    using namespace std;
    int main(){
    int x, y;
    cout <<«Vvedite znachenie x: «;
    cin >> x;
    if (x < 0) y = x;
    else if ((x>=0) && (x < 30)) y = 0;
    else if (x > 30) y = x * x;
    cout << «y= » << y;
    system («pause >> void»);
    return 0;
    }

  5. Mishka

    тут есть опечатка где написано:

    В данной задаче возможны три случая:

    в 1-ом будет х<0

     

     

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.