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

Else

Else

Else

Else

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

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

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

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

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

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

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

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

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

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

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

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

int K;

cin >> K;

if (K >= 0)

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

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

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

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

int K;

cin >> K;

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

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

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

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

int K;

cin >> K;

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

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

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 - инструкций.

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

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

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

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

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

Инструкция множественного выбора (switch)

Эта инструкция служит для ветвления программы во многих направлениях.

Ее синтаксис:

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

{

case < Константа 1 >:

< Последовательность инструкций 1 >

break;

case < Константа 2 >:

< Последовательность инструкций 2 >

break;

……….

case < Константа N >:

< Последовательность инструкций N >

break;

default:

< Последовательность инструкций >

}

При совпадении значения выражения со значением одной из констант 1 – N будет выполнена соответствующая этой ветви последовательность инструкций. Инструкция break осуществляет прерывание выполнения инструкции switch и управление передается следующему за switch- инструкцией оператору. Если значение выражения не совпадет ни с одной из констант, то будут выполнены инструкции ветви default.

Ветвь default не обязательна. В случае отсутствия ветви default при несовпадении значения выражения ни с одной из констант не будет выполнена ни одна из инструкций оператора switch.

Значение выражения в инструкции switch обязательно должно быть либо целого, либо символьного типа (в принципе тип выражения может быть и логическим, но в этом случае выгоднее пользоваться if -инструкцией) вещественные значения не допускаются.

Пример записи инструкции:

unsigned i;

cin >> i;

switch (i)

{

case 0:

cout << "ноль\n";

break;

case 1:

cout << "один\n ";

break;

case 2:

cout << "два\n ";

break;

default:

cout << "много\n ";

}

Если в выбранной ветви будет отсутствовать инструкция break, то после выполнения инструкций этой ветви начнут выполняться инструкции следующей ветви до тех пор, пока не встретится инструкция break или не будет достигнут конец оператора switch. Например:

unsigned i;

cin >> i;

switch (i)

{

case 0: cout << 0;

case 1: cout << 1;

case 2: cout << 2;

case 3: cout << 3;

case 4: cout << 4;

case 5: cout << 5;

}

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

Инструкция switch более эффективна, чем структура “лесенка”, реализованная с помощью вложенных инструкций if.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: