Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 1.doc
Скачиваний:
10
Добавлен:
22.08.2019
Размер:
266.24 Кб
Скачать

4) Условные выражения. Операторы выбора. Приведите примеры.

Тернарная или условная операция

Тернарная операция, т.е. операция с тремя операндами, имеет форму

операнд1 ? операнд2 : операнд3

Первый операнд может быть целого или плавающего типа (а также указателем, ссылкой или элементом перечисления). Для этой операции важно, является значение первого операнда нулем или нет. Если операнд1 не равен 0, то вычисляется операнд2 и его значение является результатом операции. Если операнд1 равен 0, то вычисляется операнд3, и его значение является результатом операции. Заметим, что вычисляется либо операнд2, либо операнд3, но не оба.

Пример:

max= a<=b? b:a;

Здесь переменной max присваивается максимальное значение из переменных а и b .

Если в условной операции операнд2 и операнд3 являются адресными выражениями, то тернарная операция может стоять слева от знака присваивания:

a< b? a:b = c*x+d;

Здесь значение выражения c*x+d присваивается меньшей из двух переменных а и b.

Оператор if

Оператор if ("если") позволяет организовать ветвление в программе. Он имеет две формы: оператор "если" и оператор "если...иначе". Оператор "если" имеет вид

if (условие)

действие;

оператор "если...иначе" имеет вид

if (условие)

действие1;

else

действие2;

В качестве условия можно использовать любое выражение логического или целого типа. Напомним, что при использовании целочисленного выражения значению "истина" соответствует любое ненулевое значение. При выполнении оператора "если" сначала вычисляется условное выражение после if. Если оно истинно, то выполняется действие, если ложно, то ничего не происходит. Например, в следующем фрагменте в переменную m записывается максимальное из значений переменных x и y:

double x, y, m;

. . .

m = x;

if (y > x)

m = y;

При выполнении оператора "если...иначе" в случае, когда условие истинно, выполняется действие, записанное после if ; в противном случае выполняется действие после else. Например, предыдущий фрагмент переписывается следующим образом:

double x, y, m;

. . .

if (x > y)

m = x;

else

m = y;

Когда надо выполнить несколько действий в зависимости от истинности условия, следует использовать фигурные скобки, объединяя несколько операторов в блок, например,

double x, y, d;

. . .

if (d > 1.0) {

x /= d;

y /= d;

}

Здесь переменные x и y делятся на d только в том случае, когда значение d больше единицы.

Фигурные скобки можно использовать даже, когда после if или else стоит только один оператор. Они улучшают структуру текста программы и облегчают ее возможную модификацию. Пример:

double x, y;

. . .

if (x != 0.0) {

y = 1.0;

}

Если нужно будет добавить еще одно действие, выполняемое при условии " x отлично от нуля", то мы просто добавим строку внутри фигурных скобок.

Выбор из нескольких возможностей: if...Else if...

Несколько условных операторов типа "если...иначе" можно записывать последовательно (т.е. действие после else может снова представлять собой условный оператор). В результате реализуется выбор из нескольких возможностей. Конструкция выбора используется в программировании очень часто. Пример: дана вещественная переменная x, требуется записать в вещественную переменную y значение функции sign(x):

sign(x) = -1, при x < 0

sign(x) = 1, при x > 0

sign(x) = 0, при x = 0

Это делается с использованием конструкции выбора:

double x, s;

. . .

if (x < 0.0) {

s = (-1.0);

}

else if (x > 0.0) {

s = 1.0;

}

else {

s = 0.0;

}

При выполнении этого фрагмента сперва проверяется условие x < 0.0. Если оно истинно, то выполняется оператор s = (-1.0) ; иначе проверяется второе условие x > 0.0. В случае его истинности выполняется оператор s = 1.0, иначе выполняется оператор s = 0.0. Фигурные скобки здесь добавлены для улучшения структурности текста программы.

В любом случае, в результате выполнения конструкции выбора исполняется лишь один из операторов (возможно, составных). Условия проверяются последовательно сверху вниз. Как только находится истинное условие, то производится соответствующее действие и выбор заканчивается.