Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции АиП.doc
Скачиваний:
92
Добавлен:
15.11.2018
Размер:
668.67 Кб
Скачать
    1. Операторы переходов по условию

Условный оператор if. Этот оператор позволяет проверить условие (например, равны ли две переменные) и в зависимости от результата выполнить тот или иной участок кода. На блок-схеме алгоритма программы этот оператор обозначается следующим образом

Рис. 3.2. Обозначение условного оператора if на блок-схеме алгоритма программы

Простейшая форма оператора if имеет вид:

if (выражение)

оператор;

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

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

if (выражение)

{

оператор 1;

оператор 2;

оператор 3;

}

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

if (выражение)

оператор;

else

оператор;

Вместо оператора if можно использовать так называемый троичный условный оператор ? : Это единственный оператор в языке С++, который работает сразу с тремя операндами. Он записывается в следующей форме

(выражение 1) ? (выражение 2) : (выражение 3)

Эту строку можно прочитать так: «Если выражение 1 истинно, возвратить значение выражения 2, в противном случае возвратить значение выражения 3». Как правило, это значение присваивается переменной. Например, строка программного кода

z=(x>y) ? x : y;

эквивалентна следующему выражению

if (x>y)

z=x;

else

z=y;

однако она гораздо короче.

Оператор switch. В некоторых ситуациях применение оператора if может привести к возникновению очень сложных конструкций с большим количеством вложенных операторов. Язык С++ располагает альтернативным решением этой проблемы – оператором switch. Этот оператор имеет следующий синтаксис:

switch (выражение)

{

case значение Один: оператор;

break;

case значение Два: оператор;

break;

……………………

case значение N: оператор;

break;

default: оператор;

}

Выражение в скобках оператора switch представляет собой любое допустимое выражение языка С++, а оператор – это любой допустимый оператор или блок операторов. Выражение возвращает (или может быть однозначно преобразовано в) целочисленное значение. Поэтому использование логических операций или выражений сравнения здесь недопустимо.

Переход осуществляется к той строке оператора switch, где после ключевого слова case находится значение, соответствующее результату выражения. С этой строки выполнение операторов продолжается до тех пор, пока оператор switch не завершится, либо пока не встретится оператор break. Если ни одно значение case не соответствует результату выражения, выполняются операторы, следующие за ключевым словом default, а в случае его отсутствия оператор switch завершается.

Использование в операторах switch строки default считается хорошим стилем программирования. Даже если видимой необходимости в строке default нет, то в ней можно разместить обработчик непредвиденной ситуации, а также сообщение о ее возникновении. Это окажет неоценимую помощь при отладке. Следует заметить, что если оператор break в конце оператора case отсутствует, то выполнение переходит к следующему оператору case. Иногда это необходимо, но, как правило, приводит к ошибкам. Если такой прием решено применить, то стоит описать его в комментарии, чтобы впоследствии это не воспринималось как случайная ошибка. Пример использования оператора switch приведен в листинге 3.1.

Листинг 3.1. Пример использования оператора switch

1: #include <iostream>

2: int main()

3: {

4: using namespace std;

5: unsigned short int number;

6: cout << “Enter a number between 1 and 5: “;

7: cin >> number;

8: switch (number)

9: {

10: case 0: cout << “Too small, sorry!”;

11: break;

12: case 5: cout << “Good job! “ << endl; // далее

13: case 4: cout << “Nice Pick! “ << endl; // далее

14: case 3: cout << “Excellent! “ << endl; // далее

15: case 2: cout << “Masterful! “ << endl; // далее

16: case 1: cout << “Incredible! “ << endl;

17: break;

18: default: cout << “Too large! ” << endl;

19: break;

20: }

21: cout << endl << endl;

22: return 0;

23: }

РЕЗУЛЬТАТ

Enter a number between 1 and 5: 3

Excellent!

Masterful!

Incredible!

Enter a number between 1 and 5: 8

Too large!