×
Traktatov.net » Освой самостоятельно С++ за 21 день » Читать онлайн
Страница 43 из 448 Настройки

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

If (условие) {

   выражение

}

• Фигурные скобки располагаются под словом if, выравниваясь по одной линии, а операторы блока записываются с отступом:

if (условие)

{

   выражение

}

• Отступ используется как для обеих фигурных скобок, так и для выражений блока:

if (условие)

{

  выражение

  }

Вариант, используемый в этой книге, отражает лишь пристрастие автора и ни к чему вас не обязывает.

Ключевое слово else

Довольно часто в программах требуется, чтобы при выполнении некоторого условия (т.е. когда это условие возвратит значение true) программа выполняла один блок команд, а при его невыполнении (т.е. когда это условие возвратит значение false) —

другой блок. В листинге 4.4 программист намеревался выводить на экран одно сообщение, если первая проверка (RedSoxScore > Yankees) возвращает значение true, и другое сообщение, если эта проверка возвращает значение false.

Показанный выше способ последовательного использования нескольких операторов if для проверки ряда условий прекрасно работает, но слишком громоздкий. Улучшить читабельность программы в подобных случаях можно с помощью ключевого слова else (листинг 4.6):

if (условие)

   выражение;

else

   выражение;


Листинг 4.6. Пример использования ключевого слова else

1: // Листинг 4.6. Пример конструкции с ключевыми

2: // словами if и else

3: #include

4: int main()

5: {

6:    int firstNumber, secondNumber;

7:    cout << "Please enter a big number: ";

8:    cin >> firstNumber;

9:    cout << "\nPlease enter a smaller number: ";

10:   cin >> secondNumber;

11:   if (firstNumber > secondNumber)

12:     cout << "\nThanks!\n";

13:   else

14:     cout << "\nOops. The second is bigger!";

15:

16:   return 0;

17: }


Результат:

Please enter a big number: 10

Please enter a smaller number: 12

Oops. The second is bigger!


Анализ: В строке 11 проверяется условие, заданное в операторе if. Если это условие истинно, будет выполнена строка 12, после чего работа программы завершится в строке 16. Если же это условие возвратит false, программа продолжит работу со строки 14. Если в строке 13 удалить ключевое слово else, строка 14 будет выполнена в любом случае, вне зависимости от выполнения условия. Но в данной конструкции if-else будет выполняться либо блок после if, либо блок после else.

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

Оператор

Сложные конструкции с if

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

if (условие1)

{

  if (условие2)

    выражение1;

  else

  {

    if (условиеЗ) выражение2;

  else

    выражениеЗ;

  }

}

else

  выражение4;

Смысл этой конструкции из нескольких операторов if можно расшифровать так: если условие1 истинно и условие2 истинно, выполните выражение1. Если условие1 истинно, а условие2 — нет, тогда проверьте условиеЗ и, если оно истинно, выполните выражение2. Если условие1 истинно, а условие2 и условиеЗ — нет, тогда выполните выражениеЗ. Наконец, если условие1 ложно, выполните выражение4. Да, вложенные операторы if могут кого угодно запутать!