Методические указания
Лабораторная работа
Тема: Использование условных операторов при реализации ветвящихся процессов
Цель работы: Получить практические навыки в разработке программ, использующих условные операторы
Методические указания
Условный оператор if предназначен для выполнения одной или другой последовательности действий в зависимости от истинности или ложности некоторого условия.
Условный оператор имеет две формы: ifи if...else….
Форма if имеет вид:
if (условие) оператор;
Заметим, что круглые скобки обязательны, так как играют роль ограничителя. Если условие (условное выражение в скобках) истинно (условие соблюдается), то выполняется оператор справа от скобки. При ложности условного выражения действий не происходит.
Условием может быть любое выражение, преобразуемое в булевый тип. Если условие выполняется, то результатом условного выражения является ненулевое значение—истина(true) (возвращается 1), то указанный оператор в конструкции if выполняется. В противном случае управление сразу передается следующему за конструкцией if оператору. Например, в результате выполнения операторов
С = А;
if (В > А) С = В;
переменная С станет равна максимальному из чисел А и В, поскольку оператор С = В будет выполнен только при В > А.
Форма if...else….имеет вид:
if (условие) оператор1; else оператор2;
Если условное выражение истинно (условие соблюдается), то выполняется оператор1, если нарушается - оператор2 (после else).
Если условие возвращает true,то выполняется первый из указанных операторов, в противном случае выполняется второй оператор. Обратите внимание, что в конце первого оператора перед ключевым словом elseставится точка с запятой.
Приведем примеры.
if (g = = 0)
cout<<"Деление на нуль";
else
p = i/g;
В качестве и первого, и второго оператора могут, конечно, использоваться
и составные операторы:
if (g = = 0)
{
Cout<<"Деление на нуль";
p = 0;
)
else
p = i/g;
Напомним, что последовательность операторов, заключенная в фигурные скобки, называется составным оператором.
Составной оператор в языке C++ интерпретируется как один оператор и может использоваться везде, где допускается применение одного оператора.
Следует обратить внимание, что после фигурной скобки перед elseточка с запятой не ставится.
Поскольку в C++ арифметическое (целое или действительное) значение может преобразовываться к булеву (любое ненулевое значение воспринимается как true,а нулевое — как false), то условие может иметь целый тип. Например:
int а, b, с;
i f ( а - b/с)
В данном случае условие if(a- b/c)эквивалентно if(a= = b/c),поскольку а - b/c возвращает нуль при равенстве а и b/с. Аналогичные условия формально можно записывать и для действительных чисел:
double а, b, с;
if(а - b/с)
Но из-за ошибок округления это может не сработать, даже если теоретически значения а и b/с должны совпадать.
Сравнивать вещественные числа на равенство рекомендуется с некоторой погрешностью:
double а, b, с;
if(fabs(а - b/с) < 1e-7)
что означает, что величины а и b/с должны отличаться друг от друга на величину не больше, чем 0.0000001.
В условии можно объявлять переменные. Например:
if (int v = f u n c ( a ) ) . ..;
В этом случае область действия и существования объявленной переменной - только данная структура if,включая ее выполняемый оператор.
При вложенных конструкциях ifмогут возникнуть неоднозначности в понимании того, к какой из вложенных конструкций ifотносится элемент else.Компилятор всегда считает, что elseотносится к последней из конструкций if, в которой не было раздела else.
Например, в конструкции
if (условие1)
if (условие2)
оператор1;
else оператор2;
elseбудет отнесено компилятором ко второй конструкции if,т.е. оператор2будет выполняться в случае, если первое условие истинно, а второе ложно. Иначе говоря, вся конструкция будет прочитана как
if (условие1)
{
if (условие2) оператор1;
else оператор2;
}
Если же вы хотите отнести elseк первому if,это надо записать в явном виде с помощью фигурных скобок:
if (условие1)
{
if (условие3) оператор1;
}
else оператор2;