Методические указания

Лабораторная работа

 

Тема: Использование условных операторов при реализации ветвящихся процессов

Цель работы: Получить практические навыки в разработке программ, использующих условные операторы

Методические указания

 

Условный оператор 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;