Skip to content

Условный оператор if

Yuriy Syrovetskiy edited this page Dec 26, 2017 · 1 revision

Оператор if нужен, чтобы в зависимости от условия выполнять (или не выполнять) либо одни действия, либо другие.

Существует два варианта оператора if: с альтернативой (с двумя ветвями) и без альтернативы (с одной ветвью).

Синтаксис

Оператор if с альтернативой:

if (выражение) оператор-1 else оператор-2
Читается это так: "Если верно выражение, то выполнить оператор-1 иначе выполнить оператор-2."

Оператор if без альтернативы:

if (выражение) оператор
Читается это так: "Если верно выражение, то выполнить оператор."

if и else – это ключевые слова, т.е. они зарезервированы и их нельзя использовать в качестве идентификаторов , т.е. имен для чего-либо, например, переменных. Сами по себе ключевые слова операторами не являются, однако играют важную роль в записи (синтаксисе) операторов; оператором является вся конструкция целиком. Тем не менее, поскольку это ключевое встречается Несмотря на скобки после if, это не вызов функции if, а часть оператора if.

Запись оператора if состоит, в том числе, из других операторов. Вместо каждой из конструкций, обозначенной в шаблоне, с помощью которого мы описывыаем синтаксис, как оператор, оператор-1 или оператор-2 надо поставить что-то, что тоже будет правильным оператором. Внутри оператора if может оказаться другой оператор if – к этому случаю мы вернемся чуть позже. Кроме оператора if есть и другие операторы языка Си, которые тоже состоят из других операторов. Про оператор оказавшийся "внутри" другого, говорят что он "вложенный" (в тот, который его содержит).

Если посмотреть на синтаксис оператора, то никаких символов "точка с запятой" там не фигурирует. Тем не менее, в записи оператора if "точки с запятой" оказаться могут. Откуда? Они могут оказаться там в качестве частей других операторов, которые используются внутри оператора if. Поэтому лишних точек с запятой ставить не надо, это может привести к ошибке.

Обратите внимание, что то, что можно выполнить, в зависимости от условия – это ровно один оператор в каждой из ветвей. А что делать, если в зависимости от условия надо выполнить не один, а последовательность из нескольких операторов? Очень просто! Надо использовать составной оператор, с помощью которого мы объединяем последовательность из нескольких операторов в один.

Семантика

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

Выполнение оператора if с альтернативой: 1. Вычисляется выражение в скобках (оно играет роль условия). 2. Если вычисленное значение истина (т.е. условие верно), то выполняется оператор-1, иначе (т.е. если условие неверно) выполняется оператор-2.

Выполнение оператора if без альтернативы: 1. Вычисляется выражение в скобках. 2. Если вычисленное значение истина (т.е. условие верно), то выполняется оператор.

Пример

Целочисленный арифметический калькулятор.

  #include <stdio.h>
  int main(void) {
      int x, y;
      int op;
      printf("x = ");
      scanf("%d", &x);
      printf("y = ");
      scanf("%d", &y);
      printf("Choose operation number:\n\t1) +\n\t2) -\n");
      scanf("%d", &op);
      if (op == 1) {
          printf("x+y = %d+%d = %d\n", x, y, x+y);
      } else if (op == 2) {
          printf("x-y = %d-%d = %d\n", x, y, x-y);
      } else {
          printf("Error: wrong operation number %d\n", op);
      }
      return 0;
  }

Добавьте операции умножения и деления с остатком (при выборе операции деления печатается и результат целочисленного деления, и остаток). Учтите, что делить на ноль нельзя, перед выполнением деления надо делать проверку и в случае нулевого делителя печатать сообщение об ошибке и деление не производить.

Clone this wiki locally