Условные операторы

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

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

В языке C# — два типа условных операторов: двойного выбора (if) и множественного выбора (switch).

Оператор if

Оператор ifДля организации условного ветвления язык C# унаследовал от С и С++ конструкцию if…else (если … иначе).
Ее синтаксис понятен всем, кто программировал на процедурных языках:

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

Если по каждому из условий нужно выполнить более одного оператора, эти операторы должны быть объединены в блок с помощью фигурных скобок {…}. Это также касается других конструкций C#, в которых операторы могут быть объединены в блок,  таких как циклы for и while, см. далее.
Стоит обратить внимание, что в отличие от языков С и С++, в C# условный оператор if может работать только с булевскими выражениями, но не с произвольными значениями вроде -1 и 0.
В операторе if могут проверяться сложные логические выражения, и он может содержать операторы else,  внутри которых могут вставлены другие операторы if (вложенность операторов).
Рассмотрим следующий пример:

using System;
namespace ConsoleApplication1
{    
   class Program
   {        
      static void Main(string[] args)
      {
         string myStr;
         Console.WriteLine("Введите строку: ");
         myStr = Console.ReadLine();
         if (myStr.Length < 5)
            Console.WriteLine("\nВ строке меньше 5 символов");
         else if ((myStr.Length >= 5) && (myStr.Length <= 12))
            Console.WriteLine("\nВ строке {0} символов", myStr.Length);
         else Console.WriteLine("\nВ строке больше 12 символов");
         Console.ReadLine();
      }
   }
}

Введем слово ЛОГИКА, тогда:
2151
Как видите количество else if, добавляемых к единственному if, не ограничено.
Один момент, который следует отметить касательно if: фигурные скобки применять не обязательно, если в условной ветви присутствует только один оператор, как показано в примере.

Оператор switch

Оператор switch. Вторым оператором выбора в C# является оператор switch, который обеспечивает множественное ветвление программы.
Следовательно, этот оператор позволяет сделать выбор среди нескольких альтернативных вариантов дальнейшего выполнения программы.
Несмотря на то что многонаправленная проверка может быть организована с помощью последовательного ряда вложенных операторов if, во многих случаях более эффективным оказывается применение именно оператора switch.
Этот оператор действует следующим образом. Значение выражения последовательно сравнивается с константами выбора из заданного списка. Как только будет обнаружено совпадение с одним из условий выбора, выполняется последовательность операторов, связанных с этим условием.
Ниже приведена общая форма оператора switch:

switch(выражение) 
{
case константа1: 
   последовательность операторов
   break;
case константа2: 
   последовательность операторов
   break;
case константаЗ:
   последовательность операторов
   break;
 ... 
default:
   последовательность операторов
   break;
}

Важно отметить, что заданное выражение в операторе switch должно быть целочисленного типа (char, byte, short или int), перечислимого (enum) или же строкового (string). А выражения других типов, например с плавающей точкой, в операторе switch не допускаются. Зачастую выражение, управляющее оператором switch, просто сводится к одной переменной. Кроме того, константы выбора должны иметь тип, совместимый с типом выражения. В одном операторе switch не допускается наличие двух одинаковых по значению констант выбора.

Хотя оператор switch…case знаком программистам на С и С++, в C# он немного безопаснее, чем его эквивалент С++. В частности, он запрещает «сквозные» условия почти во всех случаях. Это значит, что если часть case вызывается в начале блока, то фрагменты кода за последующими частями case не могут быть выполнены, если только не используется явно оператор goto для перехода к ним. Компилятор обеспечивает это ограничение за счет требования, чтобы за каждой частью case следовал оператор break, в противном случае он выдает ошибку.
Рассмотрим на примере использование оператора switch:

using System;
namespace ConsoleApplication1
{
   class Program
   {
      static void Main(string[] args)
      {
         Console.WriteLine("Введите язык (C#, VB или C++)");
         string myLanguage = Console.ReadLine();
         sw1(myLanguage);
         Console.ReadLine();
      }
   // Данный метод выводит выбор пользователя
      static void sw1(string s)
      {
         switch (s)
         {
            case "C#":
               Console.WriteLine("Вы выбрали язык C#");
               break;
            case "VB":
               Console.WriteLine("Вы выбрали язык Visual Basic");
               break;
            case "C++":
               Console.WriteLine("Вы выбрали язык С++");
               break;
            default:
               Console.WriteLine("Такой язык я не знаю");
               break;
         }
      }
   }
}

Результат:
2152
Перейдем к рассмотрению операторов цикла.


NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.


Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о

0 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x