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

Условная инструкция (if)

Условная инструкция ifпозволяет выбрать одно из двух направлений выполнения программы.

Имеются две формы записи этой инструкции:

if (<Выражение>)

<Инструкция 1>;

else

<Инструкция 2>;

if (<Выражение>)

<Инструкция>;

Если под термином <Инструкция> понимаются несколько последовательных инструкций, то формат записи будет таким:

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

Термин <Выражение> представляет собой любое выражениеC++, значение которого может трактоваться как значение логического типа (bool).

Пример записи:

int K;

cin >> K;

if (K >= 0)

cout << “Вы ввели положительное число.” << endl;

else

cout << “Вы ввели отрицательное число.” << endl;

Здесь в качестве выражения использовано логическое выражение, значение которого равно trueилиfalseв зависимости от введенного с клавиатуры значения переменнойK.

Еще один пример:

int K;

cin >> K;

if (K) // Здесь использовано арифметическое выражение

cout << “Вы ввели число не равное 0.” << endl;

else

cout << “Вы ввели 0.” << endl;

В этом примере выражение не является логическим, однако его значение может трактоваться как логическое (помним, что любое числовое значение, отличное от 0, соответствует значениюtrue, а числовое значение0 – логическому значению false). Этот пример можно было бы переписать так (эквивалент предыдущего примера):

int K;

cin >> K;

if (K != 0) // Здесь использовано логическое выражение

cout << “Вы ввели число не равное 0.” << endl;

else

cout << “Вы ввели 0.” << endl;

Способ записи выражения во втором (из последних двух) примере следует считать менее эффективным и с точки зрения написания текста, и с точки зрения использования ресурсов (расхода памяти и быстродействия).

А вот пример с использованием блока инструкций:

int Max, Min, B;

cin >> Max >> Min;

if (Min > Max)

{

B = Max;

Max = Min;

Min = B;

}

В этом примере используется “укороченная” (без ветви else) форма инструкцииif, и в случае, когда переменнаяMinсодержит значение большее, чем переменнаяMax, выполняется последовательность инструкций (блок), осуществляющих перераспределение значений этих переменных так, что переменнаяMaxбудет содержать большее значение, а переменнаяMin- меньшее.

Выполняемые внутри оператора ifинструкции могут быть любыми инструкциями языкаC++, в том числе и другими инструкциямиif. То есть, другими словами, инструкцииifмогут вкладываться друг в друга. Количество уровней вложенияif – инструкций в языкеC++ ограничено 256 уровнями.

Рассмотрим несколько примеров вложений if - инструкций.

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

Слово else относится к ближайшему сверху слову if, находящемуся в том же блоке инструкций, но еще не связанному ни с каким другим словом else.

Между словами ifиelseдолжна находиться хотя бы одна инструкция. Поэтому в первой реализации последнего примера мы вынуждены были использовать так называемую “пустую инструкцию”, которая не имеет никакого изображения и располагается между записью выражения(p)и разделителем;. Вторая реализация этой схемы алгоритмы, основанная на инвертировании выраженияp, является более корректной и эффективной.

В первой реализации последнего примера мы также использовали “пустую инструкцию”, так как после слова else (как и после словаif) также должна находиться хотя бы одна инструкция или блок инструкций. Если в первой реализации не записать словоelseи пустую инструкцию вложенной инструкцииif, а во второй реализации не оформить эту вложенную инструкциюifв виде блока, то будет реализована схема совершенно другого алгоритма:

В программах очень часто используется многоуровневое вложение if– инструкции так называемой “лесенкой”, схема алгоритма которой выглядит так:

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

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