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

на главную - закладки

Жанры

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

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

Шрифт:
empty-line/>

Условие в круглых скобках может быть любым выражением, но обычно оно содержит операторы отношений. Если это выражение возвращает false, то последующий оператор пропускается. Если же оно возвращает значение true, то оператор выполняется. Рассмотрим следующий пример:

if(bigNumber > smallNumber)

bigNumber = smallNumber;

Здесь сравниваются значения переменных bigNumber и smallNumber. Если значение переменной bigNumber больше, то во второй строке этого программного фрагмента

ее значение устанавливается равным значению переменной smallNumber.

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

if(условие)

{

выражение 1;

выражение2;

выражениеЗ;

}

Вот простой пример применения блока выражений:

if(bigNumber > smallNumber)

{

bigNumber = smallNumber;

cout << "bigNumber: " << bigNumber << "\n";

cout << "smallNumber: " << smallNumber << "\n";

}

На этот раз, если значение переменной bigNumber больше значения переменной smallNumber, то большая переменная не только устанавливается равной значению меньшей переменной, но на экран выводятся также информационные сообщения. В листинге 4.5 показан еще один пример ветвления программы, основанный на использовании операторов отношений.

Листинг 4.5. Пример ветвления с использованием операторов отношений 

1: // Листинг 4.5. Демонстрирует использование

2: // инструкции if совместно с операторами отношений

3: #include <iostream.h>

4: int main

5: {

6: int RedSoxScore, YankeesScore;

7: cout << "Enter the score for the Red Sox: ";

8: cin >> RedSoxScore;

9:

10: cout << "\nEnter the score for the Yankees: ";

11: cin >> YankeesScore;

12:

13: cout << "\n";

14:

15: if (RedSoxScore > YankeesScore)

16: cout << "Go Sox!\n";

17:

18: if (RedSoxScore < YankeesScore)

19: {

20: cout << "Go Yankees!\n";

21: cout << "Happy days in New York!\n";

22: }

23:

24: if (RedSoxScore == YankeesScore)

25: {

26: cout << "A tie? Naah, can't be.\n";

27: cout << "Give me the real score for the Yanks: ";

28: cin >> YankeesScore;

29:

30: if (RedSoxScore > YankeesScore)

31: cout << "Knew it! Go Sox!";

32:

33: if (YankeesScore > RedSoxScore)

34: cout << "Knew it! Go Yanks!";

35:

36: if (YankeesScore == RedSoxScore)

37: cout << "Wow, it really was a tie!";

38:

39: }

40: cout << "\nThanks for telling me.\n";

41: return 0;

42: }

Результат:

Enter the score for the Red Sox: 10

Enter the score for the Yankees: 10

A tie? Naah, can't be

Give me the real score for the Yanks: 8

Knew it! Go Sox!

Thanks for telling me..

Анализ:

В этой программе пользователю предлагается ввести счет очков для двух бейсбольных команд. Введенные очки сохраняются в целочисленных переменных. Значения этих переменных сравниваются оператором if в строках 15, 18 и 24.

Предупреждение:Многие начинающие программисты по невнимательности ставят точку с запятой после выражения с оператором if:

if (SomeValue < 10); SomeValue = 10;

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

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.

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

Ненаглядная жена его светлости

Зика Натаэль
Любовные романы:
любовно-фантастические романы
6.23
рейтинг книги
Ненаглядная жена его светлости

Прометей: повелитель стали

Рави Ивар
3. Прометей
Фантастика:
фэнтези
7.05
рейтинг книги
Прометей: повелитель стали

Беглец

Бубела Олег Николаевич
1. Совсем не герой
Фантастика:
фэнтези
попаданцы
8.94
рейтинг книги
Беглец

Надуй щеки! Том 5

Вишневский Сергей Викторович
5. Чеболь за партой
Фантастика:
попаданцы
дорама
7.50
рейтинг книги
Надуй щеки! Том 5

Страж Кодекса. Книга V

Романов Илья Николаевич
5. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга V

Система Возвышения. (цикл 1-8) - Николай Раздоров

Раздоров Николай
Система Возвышения
Фантастика:
боевая фантастика
4.65
рейтинг книги
Система Возвышения. (цикл 1-8) - Николай Раздоров

Надуй щеки! Том 4

Вишневский Сергей Викторович
4. Чеболь за партой
Фантастика:
попаданцы
уся
дорама
5.00
рейтинг книги
Надуй щеки! Том 4

Волков. Гимназия №6

Пылаев Валерий
1. Волков
Фантастика:
попаданцы
альтернативная история
аниме
7.00
рейтинг книги
Волков. Гимназия №6

Лэрн. На улицах

Кронос Александр
1. Лэрн
Фантастика:
фэнтези
5.40
рейтинг книги
Лэрн. На улицах

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Николай I Освободитель. Книга 2

Савинков Андрей Николаевич
2. Николай I
Фантастика:
героическая фантастика
альтернативная история
5.00
рейтинг книги
Николай I Освободитель. Книга 2

Купи мне маму!

Ильина Настя
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Купи мне маму!

Шаман. Похищенные

Калбазов Константин Георгиевич
1. Шаман
Фантастика:
боевая фантастика
попаданцы
6.44
рейтинг книги
Шаман. Похищенные

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II