Чтение онлайн

на главную

Жанры

Освой самостоятельно С++ за 21 день.

Либерти Джесс

Шрифт:

В данном примере получение истинного результата одним оператором if не избавляет от выполнения проверок другими операторами if.

Использование отступов в программных кодых

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

• Начальная открывающая скобка располагается после условия,

а закрывающая фигурная скобка, которая завершает блок операторов, выравнивается по одной линии с оператором 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 <iostream.h>

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 (условие)

выражение;

следующее выражение;

Если условие возвращает 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;

if (условие1)

{

if (условие2)

выражение1;

else

{

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

else

выражениеЗ;

}

}

else

выражение4;

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

Пример использования такой сложной конструкции с несколькими операторами if показан в листинге 4.7.

Листинг 4.7. Сложные конструкции с вложенными операторами if

1: // Листинг 4.7. Пример сложной конструкции с

2: // вложенными операторами if

3: #include <iostream.h>

4: int main

5: {

6: // Запрашиваем два числа

7: // Присваиваем числа переменным bigNumber и littleNumber

8: // Если значение bigNumber больше значения littleNumber,

9: // проверяем, делится ли большее число на меньшее без остатка

10: // Если да, проверяем, не равны ли они друг другу

11:

12: int firstNumber, secondNumber;

13: cout << "Enter two numbers.\nFirst: ";

14: cin >> firstNumber;

15: cout << "\nSecond: ";

16: cin >> secondNumber;

17: cout << "\n\n";

18:

19: if (firstNumber >= secondNumber)

20: {

21: if ( (firstNumber % secondNumber) == 0) // evenly divisible?

Поделиться:
Популярные книги

Черный Маг Императора 13

Герда Александр
13. Черный маг императора
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 13

Последняя Арена 4

Греков Сергей
4. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 4

Маяк надежды

Кас Маркус
5. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Маяк надежды

Великий перелом

Ланцов Михаил Алексеевич
2. Фрунзе
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Великий перелом

Сопротивляйся мне

Вечная Ольга
3. Порочная власть
Любовные романы:
современные любовные романы
эро литература
6.00
рейтинг книги
Сопротивляйся мне

Инквизитор Тьмы 2

Шмаков Алексей Семенович
2. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы 2

Мастер Разума V

Кронос Александр
5. Мастер Разума
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Мастер Разума V

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Гардемарин Ее Величества. Инкарнация

Уленгов Юрий
1. Гардемарин ее величества
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
фантастика: прочее
5.00
рейтинг книги
Гардемарин Ее Величества. Инкарнация

Падение Твердыни

Распопов Дмитрий Викторович
6. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Падение Твердыни

"Дальние горизонты. Дух". Компиляция. Книги 1-25

Усманов Хайдарали
Собрание сочинений
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Дальние горизонты. Дух. Компиляция. Книги 1-25

Ох уж этот Мин Джин Хо 2

Кронос Александр
2. Мин Джин Хо
Фантастика:
попаданцы
5.00
рейтинг книги
Ох уж этот Мин Джин Хо 2

Энфис 6

Кронос Александр
6. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 6