Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги / 277.pdf
Скачиваний:
9
Добавлен:
07.06.2023
Размер:
1.06 Mб
Скачать

В этой программе впервые используется условный оператор, который служит для выбора формулы вычисления y в зависимости от введенного значения x.

Условный оператор

Условный оператор служит для ветвлений в программе и имеет следующий синтаксис:

if(<условие>) <оператор1>; else <оператор2>;

Здесь if, else - ключевые слова (пер. с англ. если, иначе соответственно); <условие> - это условное выражение типа сравнения (например, a>b,

c<=d, f==1);

<оператор1> и <оператор2> любые операторы C++.

Оператор работает следующим образом: если условие истинно, то выполняется <оператор1> и управление передается на следующий за условным оператор; если условие ложно, то выполняется <оператор2> и управление передается на следующий за условным оператор. Таким образом, всегда выполняется один из двух операторов: либо <оператор1>, либо <оператор2>.

Существует сокращенная форма условного оператора, в которой отсутствует ветвь else:

if (<условие>) <оператор1>;

Оператор работает следующим образом: если условие истинно, то выполняется <оператор1> и управление передается на следующий за условным оператор; если условие ложно, то управление сразу передается на следующий за условным оператор. Таким образом, в зависимости от условия, <оператор1> либо выполняется, либо не выполняется.

Ниже приведены фрагменты схем алгоритмов и соответствующие им фрагменты программ.

if (a>b) max=a; else max=b;

Рис. 17

65

if (k>0) s=s+k;

Рис. 18

if (a > b) if (a > c) max = a; else

max = c;

Рис. 19

if (a > b) if (a > c) max = a;

else max = c; else

if (b > c) max = b; else

max = c;

Рис. 20

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

При определении последовательности выполнения вложенных условных операторов каждое else соответствует тому if, которое ему

66

непосредственно предшествует. Таким образом, исключается всякая двусмысленность.

Подробнее остановимся на понятии условное выражение. В С++ используются следующие операции отношения:

< меньше; <= меньше равно; > больше;

>= больше равно; == равно; != не равно.

В языке С++ нет логического типа, но любое выражение имеет значение, в том числе и условное. «Истина» - это все ненулевые значения, и только 0 - «ложь» [6]. В программе pr8 это иллюстрируется:

//Пример pr8 #include <stdio.h> #include <conio.h> void main()

{

int true, false; true = 10 > 2; false = 10 == 2;

printf ( « true = %d; false = %d\n», true, false ); if (200)

printf ( « 200 - это истина \n» ); if (-200)

printf ("-200 - это истина \n"); if (0);

else

printf("0 - это ложь \n"); getch();

}

В результате работы этой программы будут выведены сообщения: true = 1; false = 0;

200 - это истина - 200 - это истина 0 - это ложь

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

Если нужно проверить несколько условий, то можно воспользоваться булевыми операциями. Эти операции образуют инструментальный фундамент булевой логики, алгебры логики,

67

разработанной в ХIХв. математиком Джорджем Булем. Рассмотрим три основные булевы операции.

Операция && - логическое пересечение (умножение, операция «и"). Если а и b - условные выражения, например a=k>l или b=d==5, то выражение a&&b дает значение истина только в том случае, если a и b имеют значения истина, в остальных случаях - ложь.

Операция || - логическое сложение (объединение, операция «или"). Выражение a||b дает ложь значение в том и только в том случае, если a и b имеют значения ложь, в остальных случаях - результат истина.

Операция !- отрицание (операция «не"). Выражение !a имеет значение, противоположное значению a.

Эти операции полезны, если необходимо проверить сложные условия. Например:

if ( a>b&&a>c ) max=a;

Рис. 21

if ( x==y||x==z ) z=y;

Рис. 22

Самый высокий приоритет имеют операции сравнения, затем идет операция логического отрицания, затем - логическое умножение, а только потом - логическое сложение.

68

Соседние файлы в папке книги