Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция12.doc
Скачиваний:
7
Добавлен:
15.11.2018
Размер:
108.54 Кб
Скачать
    1. Безальтернативный оператор условия

Безальтернативный оператор условия представляет собой упрощенную форму альтернативного. Его отличием является отсутствие альтернативной ветви.

Синтаксис безальтернативного оператора:

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

Пример:

_

+ if (x < = 5)

{

y = a*x;

x + = 0.1;

}

В приведенном примере альтернативная ветвь отсутствует (на блок – схеме она пустая). Оператор основной ветви – составной, состоящий из двух операторов присваивания y = a*x и x + = 0.1.

Следует иметь в виду, что в безальтернативном операторе условия может отсутствовать только альтернативная ветвь. Основная ветвь должна быть всегда. Поэтому в блок – схеме следует записывать условие таким образом, чтобы пустой ветвью была ветвь НЕТ ( – ).

2.3. Вложенные условные операторы

Иногда при решении задач возникает ситуация, когда в качестве операторов, содержащихся в ветвях, могут, в свою очередь, быть другие условные операторы. Их называют вложенными операторами. Причем количество вложений или уровней вложений может быть несколько. Теоретически это количество не ограничено, но практически это ограничение определяется объемом оперативной памяти компьютера, а, главное, удобством чтения и восприятия такого оператора. На практике используют не более трех вложений. Например, вычислить значения нелинейной функции у = (х), график которой представлен на рис.1.

y

a

- b

b

x

-a

Рис. 1 График функции

Фрагмент блок – схемы вычисления функции

+ _

+

Из этого фрагмента видно, что в альтернативной ветви «НЕТ» верхнего условия вложен другой оператор условия. Запись этого фрагмента с помощью оператора условия будет иметь вид:

if ((x > – b) && (z < b) y = a/b*x;

else if (x < = – b) y = – a;

else y = a;

Здесь в альтернативной ветви else первого оператора условия вложен другой оператор условия.

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

_

+

_

+

if (a > b)

{

if (b > a) k++;

}

else k – –;

Здесь вложенное условие заключено в фигурные скобки и расположено в альтернативной ветви, но своей альтернативной ветви не имеет. Фигурные скобки в этом случае играют важную роль. Дело в том, что компилятор языка С++ автоматически подсоединяет альтернативную ветвь else к основной ветви ближайшего оператора условия. Поэтому запись без фигурных скобок вида:

if (a > b)

if (b > 0) k ++;

else k – –;

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

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

проще и надежнее всего заключать все вложенные операторы условия в эти скобки.

_

+

+

Рис.2. Фрагмент алгоритма.

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