Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект С++ (Часть 1).doc
Скачиваний:
17
Добавлен:
09.11.2019
Размер:
1.24 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 – инструкции так называемой “лесенкой”, схема алгоритма которой выглядит так:

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