Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_2_С_Условн опер.doc
Скачиваний:
4
Добавлен:
23.11.2019
Размер:
104.45 Кб
Скачать

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

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

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

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

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