C: Условные инструкции

Условные инструкции позволяют изменить ход исполнения программы в зависимости от выбора пользователя или необходимого результата.

Инструкция if-else

Инструкции if-else используются для того, чтобы исполнять те или иные фрагменты кода в зависимости от сложившихся условий. Например, с помощью них может быть реализована проверка нахождения целочисленного значения в заданном диапазоне значений, проверка корректности ввода пароля или же проверка регистра отдельного символа. На самом деле, можно привести огромное множество подобных примеров.

В качестве примера рассмотрим проверку наличия достаточно количества баллов для сдачи экзамена. В частности, здесь осуществляется проверка значения целочисленной переменной result, а именно, его сравнение с заданным значением 40.

if (result >= 40)
    printf("Экзамен сданn")
else
    printf("Экзамен не сданn")

В том случае, если блоки кода представлены единичными инструкциями, как в примере выше, фигурные скобки и завершающие символы точек с запятыми не обязательны (хотя и желательны). При этом блоки, представленные множеством инструкций, должны в обязательном порядке помещаться в фигурные скобки. Символы точек с запятыми также должны использоваться для разделения инструкций:

if (result >= 40) {
    printf("Экзамен сданn");
    printf("Поздравляем!n");
} else {
    printf("Экзамен не сданn");
    printf("Ждем на пересдаче.n");
}

Если вам нужно выполнить определенное действие, например, вывести сообщение, лишь в случае исполнения заданного условия, вы можете просто отбросить необязательную часть инструкции со словом else:

if (balance < 0)
    printf("На вашем балансе не осталось средств!n");

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

if (result >= 80)
    printf("Экзамен сдан, оценка отличноn");
else if (result >= 60)
    printf("Экзамен сдан, оценка хорошоn");
else if (result >= 40)
    printf("Экзамен сдан, оценка удовлетворительноn");
else
    printf("Экзамен не сданn");

Наконец, вам никто не запрещает сравнивать значения сразу нескольких переменных в рамках одной инструкции.

Пример

А это пример сравнения значения строковой переменной. Так как в языке C строки представлены массивами символов, мы не можем использовать оператор сравнения напрямую так, как было показано выше. Вместо этого нам придется вызывать специальную функцию strcmp() и сравнивать возвращаемое ею целочисленное значение с 0 (да, нулевое значение указывает на совпадение строк).

  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.     char *animal = &quot;Cat&quot;;
  6.    
  7.     if (strcmp(animal, &quot;Dog&quot;) == 0)
  8.         printf(&quot;Животное - собака\n&quot;);
  9.     else if (strcmp(animal, &quot;Cat&quot;) == 0)
  10.         printf(&quot;Животное - кошка\n&quot;);
  11.     else
  12.         printf(&quot;Неизвестное животное\n&quot;);
  13.    
  14.     return 0;
  15. }

Загрузить файл исходного кода

Инструкции switch-case

Инструкции switch-case предназначены для той же цели, что и инструкции if-else и чаще всего используются тогда, когда нужно сравнить значение целочисленной переменной с множеством заданных значений.

Каждый блок case должен завершаться инструкцией break, так как без нее будет исполняться код из следующих за ним блоков case.

Пример

Вывод сообщения в зависимости от значения целочисленной переменной.

  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.     int choice = 2;
  6.  
  7.     switch (choice)
  8.     {
  9.         case 1:
  10.             printf(&quot;Выбрано значение один\n&quot;);
  11.             break;
  12.         case 2:
  13.             printf(&quot;Выбрано значение два\n&quot;);
  14.             break;
  15.         default:
  16.             printf(&quot;Выбрано другое значение\n&quot;);
  17.             break;
  18.     }
  19.  
  20.     return 0;
  21. }

Загрузить файл исходного кода