ТОП 10:

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



 

Обратите внимание, как в листинге 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 (условие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?

22: {

23: if (firstNumber == secondNumber)

24: cout << "They are the same!\n";

25: else

26: cout << "They are evenly divisible!\n";

27: }

28: else

29: cout << "They are not evenly divisible!\n";

30: }

31: else

32: cout << "Hey! The second one is larger!\n";

33: return 0;

34: }

 

Результат:

Eriter two numbers.

First: 10

Second: 2

They are evenly divisible!

 

Анализ: Сначала пользователю предлагается ввести два числа (по очереди), затем эти числа сравниваются. С помощью первого оператора if (в строке 19) мы хотим убедиться в том, что первое число больше или равно второму. Если мы убеждаемся в обратном, то выполняется выражение после оператора else, представленного в строке 31.

Если первое сравнение возвращает true, то выполняется блок инструкций, начинающийся в строке 20, где с помощью второго оператора if в строке 21 проверяется предположение, что первое число делится на второе без остатка (т.е. с остатком, равным нулю). Если это предположение подтверждается, то первое число либо кратно второму, либо они вообще равны друг другу. Оператор if в строке 23 проверяет версию о равенстве чисел, а затем на экран выводится сообщение, уведомляющее о выявленном соотношении.

Если оператор if в строке 21 возвращает значение false, то выполняется оператор else в строке 28.

 

 







Последнее изменение этой страницы: 2016-12-10; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.226.243.36 (0.004 с.)