if(!x)
{
//если х = =0
...
}
if(x)
{
// если х != 0
...
}
Например, можно было бы написать:
if<!D = Ь * Ь - 4 * а * с)
{
...
}
что означало бы: присвоить переменной D вычисленное значение (Ь2-4ас), и если переменная D приняла ненулевое значение, выполнить блочный оператор {...}. Обычно в подобных случаях компилятор выдает предупреждение о вероятно ошибочном использовании оператора присвоения вместо сравнения.
Вместо операторов if-else вполне можно использовать условный оператор ?:, если входящие в него выражения являются достаточно простыми. Данная конструкция будет иметь следующий вид:
условие ? выражение! : выражекие2;
По аналогии с оператором if, данный условный оператор работает так: если условие приняло истинное значение, выполняется выражение 1, а если ложное — выражение2. Обычно возвращаемое значение присваивается какой-либо переменной.
Например, решим задачу нахождения максимума из двух целочисленных Переменных:
#include <iostream.h>
void main()
{
int a = 10;
int b = 20;
int max;
max = (a > b) ? a : b;
cout << max;
}
Еще одной альтернативой управляющей конструкции if-alse может служить оператор ветвления switch. Он имеет следующий синтаксис:
switch(выражение)
{
caseконстантное_выражение :
группа операторов;
break; caseконстантное_выражекие :
группа операторов;
break;
default константное_выражение : группа операторов;
}
Конструкция switch-case представляет собой своеобразный "переключатель". Работает он следующим образом.
На первом этапе анализируется выражение и осуществляется переход к той ветви программы, для которой его значение совпадает с указанным констанфным_выражеяием. Далее следует выполнение оператора или группы_операторов до тех пор, пока не встретится ключевое слово break (происходит выход из тела оператора switch-case) или не будет достигнут конец блока конструкции (соответствующая закрывающаяся фигурная скобка }). Если значения выражения и константных_выражений. указанных в case, не совпадут ни в одном из случаев, выполнится ветвь программы, определенная с помощью ключевого слова default. Вообще говоря, ключевые слова default и break не являются обя-|зательными н зачастую программисты умышленно их опускают.
Подобный прием может в некоторых случаях упростить код программы, однако его следует применять очень аккуратно. Приведённый ниже фрагмент иллюстрирует работу конструкции switch-, case. Объявленная символьная переменная Answer служит для приема из входного потока ответа пользователя на вопрос, тфЬдол-жить ли работу с программой.
#include <iostream.h>
void main ()
{
char Answer =' ';
cout << "Продолжаемработать? ";
cin >> Answer;
switch(Answer)
{
case 'y':
case 'Y':
case 'd':
case 'D':
cout << "Продолжим... \n";
break;
default:
cout << "Завершение... \n";
}
}
Как видно из примера, пользователю достаточно выбрать любую из букв y, Y, д, Д, чтобы продолжить выполнение про-граммы, либо нажать любую другую клавишу для завершения.
Если же по ошибке пропустить оператор break, на экран будет выведено сразу два сообщения без выполнения содержательной части программы:
Продолжим...
Завершение...
Хотя оператор switch и допускает вложения в себя аналогичных операторов, стоит избегать подобных конструкций, так
как в противном случае код становится визуально плохо воспринимаемым.
Наиболее эффективно применение связки операторов switch-case с использованием в программе перечислений. В приведенном ниже фрагменте объявляется перечисление цветов гаммы Rainbow и соответствующая этому типу переменная Color. Далее осуществляется сравнение значения переменной Color с заданными значениями цветов.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.