Страница 44 из 502
<b><i> оператор</i>; </b>
<b>else </b><b>if (<i>условие) </i></b>
<b><i> оператор;</i></b>
<b><i>.</i></b>
<b><i>.</i></b>
<b><i>.</i></b>
<b>else</b>
<b><i> оператор</i>;</b>
Условные выражения в такой конструкции вычисляются сверху вниз. Как только обнаружится истинное условие, выполняется связанный с ним оператор, а все остальные операторы в многоступенчатой конструкции опускаются.
Если ни одно из условий не является истинным, то выполняется последний оператор else, который зачастую служит в качестве условия, устанавливаемого по умолчанию. Когда же последний оператор else отсутствует, а все остальные проверки по условию дают ложный результат, то никаких действий вообще не выполняется.
В приведенном ниже примере программы демонстрируется применение многоступенчатой конструкции if-else-if. В этой программе обнаруживается наименьший множитель заданного целого значения, состоящий из одной цифры.
<b>// Определить наименьший множитель заданного</b>
<b>// целого значения, состоящий из одной цифры.</b>
<b>using System;</b>
<b>class Ladder {</b>
<b> static void Main() { </b>
<b> int num;</b>
<b> for(num = 2; num < 12; num++) { </b>
<b> if((num % <i>2) ==</i> 0)</b>
<b> Console.WriteLine("Наименьший множитель числа " + num + " равен 2.");</b>
<b> else if((num % 3) == 0)</b>
<b> Console.WriteLine("Наименьший множитель числа " + num + " равен 3.");</b>
<b> else if((num % 5) == 0)</b>
<b> Console.WriteLine("Наименьший множитель числа " + num + " равен 5.");</b>
<b> else if((num % 7) == 0)</b>
<b> Console.WriteLine("Наименьший множитель числа " + num + " равен 7.");</b>
<b> else</b>
<b> Console.WriteLine(num + " не делится на 2, 3, 5 или 7.");</b>
<b> }</b>
<b> }</b>
<b>}</b>
<b>Вот к какому результату приводит выполнение этой программы.</b>
<b>Наименьший множитель числа 2 равен 2. </b>
<b>Наименьший множитель числа 3 равен 3.</b>
<div class="fb2-code"><code><b>Наименьший множитель числа 4 равен 2. </b></code></div>
<div class="fb2-code"><code><b>Наименьший множитель числа 5 равен 5.</b></code></div>
<div class="fb2-code"><code><b>Наименьший множитель числа 6 равен 2. </b></code></div>
<div class="fb2-code"><code><b>Наименьший множитель числа 7 равен 7.</b></code></div>
<div class="fb2-code"><code><div class="fb2-code"><code>&lt;b&gt;Наименьший множитель числа 8 равен 2. &lt;/b&gt;</code></div></code></div>
<div class="fb2-code"><code><div class="fb2-code"><code>&lt;b&gt;Наименьший множитель числа 9 равен 3.&lt;/b&gt;</code></div></code></div>
<div class="fb2-code"><code><b>Наименьший множитель числа 10 равен 2.</b></code></div>
<b>11 не делится на 2, 3, 5 или 7.</b>
Как видите, последний оператор else выполняется лишь в том случае, если не удается выполнить ни один из предыдущих операторов.
Оператор switch
Вторым оператором выбора в C# является оператор switch, который обеспечивает многонаправленное ветвление программы. Следовательно, этот оператор позволяет сделать выбор среди нескольких альтернативных вариантов дальнейшего выполнения программы. Несмотря на то что многонаправленная проверка может быть организована с помощью последовательного ряда вложенных операторов if, во многих случаях более эффективным оказывается применение оператора switch. Этот оператор действует следующим образом. Значение выражения последовательно сравнивается с константами выбора из заданного списка. Как только будет обнаружено совпадение с одним из условий выбора, выполняется последовательность операторов, связанных с этим условием. Ниже приведена общая форма оператора switch.
<b>switch<i>(выражение) {</i> </b>
<b>case <i>константа1:</i></b>
<b><i> последовательность операторов</i> </b>
<b> break; </b>
<b>case <i>константа2:</i></b>
<b><i> последовательность операторов</i> </b>
<b> break; </b>
<b>case константаЗ:</b>