Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LABA_1sem.doc
Скачиваний:
7
Добавлен:
10.02.2016
Размер:
1.59 Mб
Скачать

Оператор if

Оператор if-else используется для принятия решения. Рассмотрим схему оператора:

if (условие)

{

операторы 1;

}

else

{

операторы 2;

}

Фигурные скобки в каждой ветви можно опустить, если оператор только один. Ветвьelse не обязательна.

Сначала вычисляется условие (точнее, условное выражение), и, если оно истинно (т.е. отлично от нуля), выполняются операторы 1. Если условие ложно (т.е. его значение равно нулю) и существуетelse-связь, то выполняются операторы 2.

В языке Си++ существуют следующие условные операторы:

Оператор

Проверяемое условие

>

Больше

>=

Больше либо равно

<

Меньше

<=

Меньше либо равно

==

Равно

!=

Не равно

Обратите внимание на условный оператор ==. Не путайте его с оператором присваивания=. Так, например, запись:

if ( a = 2 )

b = a;

означает вовсе не «если переменная а равна 2, то присвоить переменной b значение переменной а». На самом деле эта запись читается так: «если результат выполнения операции присваивания а = 2 есть истина, то присвоить переменной b значение переменной а». Так как результат выполнения операции присвоениявсегдаистина, в приведенном примере независимо от текущего значения переменнойавсегда будет выполняться строкаb=a. Если же вы хотите проверить условие не равно ли значение переменнойадвум, то операторifследует записать следующим образом:

if ( a == 2 )

b = a;

Ниже приведены примеры использования оператора if:

int a = 1;

int b = 2;

if ( a > b )

cout << a;

else

cout << b;

Вывод:

2

int a = 2;

if ( a == 0 )

cout << “inf”;

else

cout << 1. / a;

Вывод:

0.5

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

Разберем на примере листинга 12, как определиться со знаком числа с помощью конструкция if-else.

Листинг 12

/*Ваше число положительное или отрицательное? */

#include <iostream.h>

void main( void )

{

int a;

cout << "Vvedite luboe chislo:\n";

cin >> a;

if (a>=0)

{

cout << "Vawe chislo " << a << " polozitelnoe\n";

}

else

{

cout << "Vawe chislo " << a << " otricatelnoe\n";

}

}

Например, введем 96. Сначала программа проверит первую часть условия послеif. Еслиа(т.е. ваше число 96) ≥ 0 (а оно больше нуля), значит на экран будет выведено:Vawe chislo 96 polozitelnoe. Но если вы введете при запуске программы число-96, то первое условие-96 ≥ 0не выполнится и программа перейдет во вторую часть условия послеelseи выполнит ее оператор, то есть выведет вам на экран:Vawe chislo -96 otricatelnoe.

В листинге 13 приведен пример использования оператора ifдля реализации простейшего калькулятора.

Листинг 13

/*Калькулятор с оператором if*/

#include <math.h>

#include <iostream.h>

void main( void )

{

double dNumber1, dNumber2;

char cOperator;

cout << "Calculation:\n";

cout << "Input: number_1 operator number_2\n";

cin >> dNumber1 >> cOperator >> dNumber2;

if ( cOperator == '+' ) cout << "= " << dNumber1 + dNumber2 << '\n';

else if ( cOperator == '-' ) cout << "= " << dNumber1 - dNumber2 << '\n';

else if ( cOperator == '*' ) cout << "= " << dNumber1 * dNumber2 << '\n';

else if ( cOperator == '/' ) cout << "= " << dNumber1 / dNumber2 << '\n';

else cout << "Unknown operator\n\n";

}

Несмотря на то, что программа в листинге 13 достаточно компактна, не рекомендуется оформлять программный код подобным образом. Одними из критериев оценки качества программного кода является удобочитаемость и понятность. С точки зрения этих критериев, условные операторы из листинга 13 следовало бы оформить следующим образом:

if ( cOperator == '+' )

{

cout << "= " << dNumber1 + dNumber2 << '\n';

}

else if ( cOperator == '-' )

{

cout << "= " << dNumber1 - dNumber2 << '\n';

}

else if ( cOperator == '*' )

{

cout << "= " << dNumber1 * dNumber2 << '\n';

}

else if ( cOperator == '/' )

{

cout << "= " << dNumber1 / dNumber2 << '\n';

}

else cout << "Unknown operator\n\n";

Вы можете возразить, что объем программного кода увеличился более чем в 3 раза. Это верно. Но в свою очередь возросла понятность программы. Теперь гораздо легче отследить ее логику и, в случае необходимости, найти ошибку.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]