if (SomeValue < 10) // проверка
; // пустое выражение, контролируемое оператором if
SomeValue = 10; // присваивание
При удалении ненужной точки с запятой последняя строка этого фрагмента станет частью конструкции с оператором if и программа заработает в соответствии с намерением программиста.
Если очки одной команды больше очков другой, на экран выводится соответствующее сообщение. Если сравниваемые очки равны, программа выполняет блок выражений, который начинается в строке 25 и оканчивается в строке 38. В этом блоке снова запрашивается счет очков для команды из Нью-Йорка, после чего вновь выполняется сравнение результатов игры команд.
Обратите внимание: если начальный счет команды Yankees превышает счет команды Red Sox, то оператор if в строке 15 возвратит значение false и строка 16 не будет выполняться. Проверка же в строке 18 даст истинный результат (true) и будут выполнены выражения в строках 20 и 21. Затем с помощью оператора if в строке 24 будет проверено равенство очков; результат этого тестирования должен быть ложным (false) (иначе и быть не может, если проверка в строке 18 дала в результате значение true). В этом случае программа пропустит целый блок и перейдет сразу к выполнению строки 39.
В данном примере получение истинного результата одним оператором if не избавляет от выполнения проверок другими операторами if.
Использование отступов в программных кодых
Обратите внимание, как в листинге 4.4 используются отступы в конструкции с оператором if. Наверное, фанаты программирования могли бы развязать войну по поводу того, какой стиль выделения программных блоков лучше использовать. И хотя возможны десятки различных стилей, чаще других используются три перечисленных ниже.
• Начальная открывающая скобка располагается после условия, а закрывающая фигурная скобка, которая завершает блок операторов, выравнивается по одной линии с оператором if:
If (условие) {
выражение
}
• Фигурные скобки располагаются под словом if, выравниваясь по одной линии, а операторы блока записываются с отступом:
if (условие)
{
выражение
}
• Отступ используется как для обеих фигурных скобок, так и для выражений блока:
if (условие)
{
выражение
}
Вариант, используемый в этой книге, отражает лишь пристрастие автора и ни к чему вас не обязывает.
Довольно часто в программах требуется, чтобы при выполнении некоторого условия (т.е. когда это условие возвратит значение 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. Форма 1: if (условие) выражение; следующее выражение; Если условие возвращает true, то выполняется выражение, а за ним и следующее выражение. Если условие возвратит false, то выражение игнорируется, а программа переходит к выполнению следующего выражения. Помните, что вместо выражения может использоваться целый блок, заключенный в фигурные скобки. Форма 2: if (условие) выражение1; else выражение2; следующее выражение; Если условие возвращает значение true, выполняется выражение1, в противном случае выполняется выражение2. После этого выполняется следующее выражение. Пример: if (SomeValue < 10); cout << "SomeValue is less than 10"; else cout << "SomeValue is not less than 10!"; cout << "Done." << endl;
Читать дальше