В структурном программировании базовыми являются три структуры: последовательность, ветвление и цикл.
Условные операторы позволяют выполнять ветвление, чтобы не выполнялась каждая строка кода, как она следует в программе.
В языке 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(); } } }
Введем слово ЛОГИКА, тогда:
Как видите количество 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; } } } }
Результат:
Перейдем к рассмотрению операторов цикла.
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.