Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
42
Добавлен:
16.02.2016
Размер:
123.39 Кб
Скачать

Условный оператор ?:

Вместо операторов if-else вполне можно использовать условный оператор ?:, если входящие в него выражения являются достаточно простыми. Данная конструкция будет иметь следующий вид:

условие ? выражение1 : выражение2;

По аналогии с оператором if, данный условный оператор работает так: если условие приняло истинное значение, выполняется выражение1, а если ложное - выражение2. Обычно возвращаемое значение присваивается какой-либо переменной.

Например, решим задачу нахождения максимума из двух целочисленных переменных:

#include <iostream.h>

int main {) {

int a = 10;

int b = 20;

int max;

max = (a > b) ? a : b;

cout « max;

return 0;

}

Оператор switch

Еще одной альтернативой управляющей конструкции if-else может служить оператор ветвления switch. Он имеет следующий синтаксис:

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

{

case константное_выражение : группа операторов; break;

case константное_выражение : групла операторов; break;

default константное_выражение : группа операторов;

}

Конструкция switch-case представляет собой своеобразный "переключатель". Работает он следующим образом.

На первом этапе анализируется выражение и осуществляется переход к той ветви программы, для которой его значение совпадает с указанным константным_выражением. Далее следует выполнение оператора или группы_операторов до тех пор, пока не встретится ключевое слово break (происходит выход из тела оператора switch-case) или не будет достигнут конец блока конструкции (соответствующая закрывающаяся фигурная скобка }). Если значения выражения и константных_выражений, указанных в case, не совпадут ни в одном из случаев, выполнится ветвь программы, определенная с помощью ключевого слова default. Вообще говоря, ключевые слова default и break не являются обязательными и зачастую программисты умышленно их опускают.

Подобный прием может в некоторых случаях упростить код программы, однако его следует применять очень аккуратно. Приведенный ниже фрагмент иллюстрирует работу конструкции switch-case. Объявленная символьная переменная Answer служит для приема та входного потока ответа пользователя на вопрос, продолжить ли работу с программой.

#include <iostream.h>

int main ()

{

char Answer = '';

cout « "Продолжить работу? ";

cin » Answer;

switch(Answer)

{

case 'y': case ' У': case 'д': case 'Д':

cout « "Продолжим... \n"; break; default:

cout « "Завершение...\n";

return 0;

}

// Продолжение работы

return 0;

}

Как видно из примера, пользователю достаточно выбрать любую из букв у, У, д, Д, чтобы продолжить выполнение программы, либо нажать любую другую клавишу для завершения.

Если же по ошибке пропустить оператор break, на экран будет выведено сразу два сообщения без выполнения содержательной части программы:

Продолжим...

Завершение...

Хотя оператор switch и допускает вложения в себя аналогичных операторов, стоит избегать подобных конструкций, так как в противном случае код становятся визуально плохо воспринимаемым.

Наиболее эффективно применение связки операторов switch-case с использованием в программе перечислений. В приведенном ниже фрагменте объявляется перечисление цветов гаммы Rainbow и соответствующая этому типу переменная Color. .Далее осуществляется сравнение значения переменной Color с заданными значениями цветов.

#include <iostream.h>

int main ()

{

enum Rainbow {Red, Orange, Yellow, Green, Blue, Cyan, Magenta}; Rainbow Color;

...

switch(Color)

{

case Red: case Orange: case Yellow:

cout « "Выбрана теплая гамма\n";

break; case Green: case Blue: case Cyan: case Magenta:

cout « "Выбрана холодная гамма\n";

break; default:

cout « "Радуга не имеет такого "

cout « "цвета!\n";

}

return 0;

}

Если на момент проверки переменная Color примет значение, соответствующее красному (Red), оранжевому (Orange) или желтому (Yellow) цвету, будет выведено сообщение "Выбрана теплая гамма". Если проверяемая переменная будет соответствовать зеленому (Green), синему (Blue), голубому (Cyan) или фиолетовому (Magenta) цвету, будет отображено сообщение "Выбрана холодная гамма". Если же проверяемое значение переменной Color не совпадет ни с одним из вышеперечисленных, будет выведена строка "Радуга не имеет такого цвета!".

Соседние файлы в папке ЯзыкС++Глушаков