Основы программирования на С++ для начинающих

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

До этого урока, изучая основы программирования для начинающих, мы с вами писали очень простые и скучноватые программы, которые как-то работали, что-то делали, но были абсолютно лишены способности выбирать, как им развиваться. Такие программы называются линейными. Они были, как трамваи: если путь прегражден – стоп. Ни в право, ни влево не свернёшь.

Теперь же, хочу всех немного обрадовать – наши программы с сегодняшнего дня будут намного интересней. Мы научимся применять в нашем коде операторы логического выбора if и  else  и программы приобретут некую интригу,  смогут “думать”, анализировать и решать, как поступить и какой “дорогой” пойти. То есть теперь программа –  это уже не трамвай, а Ваш  автомобиль ))) Если дорогу преградили, вы легко можете объехать преграду и определиться, куда ехать дальше.

Перед тем, как приступить к изучению этой темы, вам уже надо хорошо знать, что такое логические операции. Так что, если кто не уверен, уделите немного времени и прочитайте о них статью.

Ну что же – приступим к нашим операторам выбора (они же условные операторы, они же операторы ветвления). Мы рассмотрим несколько простых примеров, которые помогут вам познакомиться с этими операторами и применять их  в дальнейшем уже в более сложных программах.

Пример: Пользователь вводит два числа и программа определяет какое их этих двух чисел большее.

До 14-й строки все понятно – пользователь ввел два числа, они записались в соответствующие переменные. Как же их теперь сравнить и показать результат  сравнения? Для этого  мы применим оператор if (переводится -ЕСЛИ). Пишем if, далее в круглых скобках () записываем условие – сравнение значений переменных  (variable1 > variable2).

И если variable1 действительно больше variable2  –  это условие  вернет true (истину). Тогда выполнение программы перейдет к коду, который размещен внутри фигурных скобок {} – строки 21 – 23. То есть на экране мы увидим сообщение, о том что первое число больше второго.

Если же условие в круглых скобках  () не выполняется (возвращает false (ложь)), то код в фигурных скобках {} будет проигнорирован и выполнение программы продолжится со следующей строки кода под блоком if – со строки 26.  Там мы снова проверяем отношение переменных между собой.

Все аналогично – если условие истинно – выполнится код этого блока if, если ложно – переход ниже.  В строке 33 проверка последнего возможного варианта – проверка на равенство. Обязательно применяем оператор == (равно), а не = (присвоить). Иначе код этого блока if  будет работать с ошибкой. Например variable1 = 3, а variable2 = 4 , то если мы ошибочно запишем в условии if (variable1 = variable2) , значение 4 запишется в variable1.

Получаем  if (4) . А любое значение отличное от 0, как вы помните, компилятор воспринимает как true . В итоге этот блок выполнится и мы увидим сообщение о том, что значения равны, хотя это изначально было не так.  Будьте внимательны.

Этот код можно значительно сократить. Во-первых, можно добавить оператор else (посмотрим ниже). Во вторых – если блоки if или else содержат только одну строку кода в фигурных скобках {} , то эти фигурные скобки можно не писать. Посмотрим, как изменится наш код:

Вы видите, что фигурные скобки в этом примере мы уже не используем. Еще один плюс – если первое условие if выполняется, то остальные блоки if else и else, уже не проверяются (т.е. время на выполнение программы сокращается). Ну а если первое условие ложно, программа идет в следующий блок else if (иначе если), и проверяет его условие – (variable1 < variable2) – строка 18. Если и тут ложь, то выполнится последний блок else, в котором условие можно уже не проверять, так как мы до этого перебрали все возможные варианты отношения двух значений и остается только их равенство.

Результат работы этих программ одинаков. Но во втором случае и код компактней и работы компилятору меньше.

операторы логического выбора if  elseОсновное, что важно запомнить:

  • синтаксис if:

операторы логического выбора if else

  •  синтаксис if else:

операторы логического выбора if else

или если необходимо больше условий:

операторы логического выбора if else

  • конструкция блоков if else  – неразрывна. Если она встречается в коде, её  нельзя разделять посторонним кодом. Например :

операторы логического выбора if else

    • принцип работы оператора выбора if  – если условие в круглых скобках истина (true), то код блока выполнится. Если ложь (false) – игнорируется и выполнение программы начинается со строки кода, следующей под блоком if.

 

    • условие оператора выбора   в   круглых   скобках   может   быть обычным: if(variable > 0)  или комбинированным:  if (variable > 0 && variable < 100). Комбинированное условие вернёт true, если оба условия будут верными. 

 

    • условие оператора выбора может быть арифметическим выражением:  if (variable1 – variable2).  Код блока if  выполнится, если результат вычисления не будет равен 0. Например: if (5 – 7), if (2 + 5).  А вот если if (2 -2) – код блока будет проигнорирован.

 

  • если блоки if , else if или else  содержат только одну строку кода, фигурные скобки можно не использовать. Но для новичков, пока вы учитесь, рекомендую использовать фигурные скобки всегда.

Пожалуй и всё об условных операторах  if  и else. Тут есть практика программирования по этой теме.

По возможности, посмотрите это видео. В нем рассмотрены условные операторы if  и else

21 thoughts on “Операторы выбора if и else в C++

  1. А темы становятся всё сложнее… зато теперь есть ветвления в решении поставленых задач… интересно будет посмотреть какие будут задачи.

    1. Можно и так, только это будет один оператор if, а за ним следует независимый второй оператор if … только разделить их тогда нужно ;
      Но вы должны хорошо понимать что делаете:

      if( ( x = 5 ) > 2 ) { /*операторы №1*/ };
      if( x > 4 ) { /*операторы №2*/ };

      Здесь выполнятся обе группы операторов: №1 и №2.
      А если вы хотите исключающие ветки, то вам нужен if … else if … , который описан выше, или оператор case.

  2. ой, неправильно отправлено сообщение. я имел ввиду больше-равно, меньше-равно, равно

    1. Если ivan – это другая переменная а). того же целочисленного типа и б). объявленная раньше и в). ей присвоено какое-то числовое значение … то да, такое будет допустимо.

      Но я предполагаю, что это совсем не то, что вы имели в виду… А для того, чтобы name_student содержало именно имя студента, вам нужно name_student объявить с типом строка символов. Вот так:
      char name_student[] = "ivan";
      Или так:
      string name_student( "ivan" );

  3. Здравствуйте вот такая проблема.

    #include
    #include
    using namespace std;

    int main()
    {
    setlocale(LC_ALL, “rus”);
    int number1 = 0;
    int number2 = 0;

    cout <> number1;
    cout <> number2;

    if (number1 < number2)
    cout << "\a\a\a\a\a\a\a\a";
    cout < number2)
    cout << "\a\a\a\a\a\a";
    cout << "\t\t\tПервое число больше второго \n";
    else
    cout << "\a\a\a\a\a\a";
    cout <—— Сборка начата: проект: Project2, Конфигурация: Debug Win32 ——
    1>Source.cpp
    1>c:\users\goodjar\source\repos\project2\project2\source.cpp(19): error C2181: недопустимый else без парного if
    1>c:\users\goodjar\source\repos\project2\project2\source.cpp(22): error C2181: недопустимый else без парного if
    1>Сборка проекта “Project2.vcxproj” завершена с ошибкой.
    ========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

    Что с ним не так?

    1. if (number1 < number2)
      {
      cout << "\a\a\a\a\a\a\a\a";
      cout < number2)
      cout << "\a\a\a\a\a\a";
      cout << "\t\t\tПервое число больше второго \n";
      }
      else
      cout << "\a\a\a\a\a\a";

      1. упс… еще нашел

        #include
        using namespace std;

        int main()
        {
        setlocale(LC_ALL, “rus”);
        int number1 = 0;
        int number2 = 0;

        cout << number1;
        cout << number2;

        if (number1 < number2)
        {
        cout << "текст";
        cout << number2;
        cout << "текст";
        }
        else
        cout << "текст";
        }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *