Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теоретический_курс.doc
Скачиваний:
36
Добавлен:
10.11.2019
Размер:
7.68 Mб
Скачать

3.5.9. Применение операторов: «if» и «switch» Применение операторов: «if» и «switch»

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

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

2. Оператор if

Для организации условного ветвления язык С# унаследовал от С и С++ конструкцию if-else. Ее синтаксис должен быть интуитивно понятен для любого, кто программировал на процедурных языках:

if (условие)

{

оператор (операторы)

} else { оператор (операторы) }

Если по каждому из условий нужно выполнить более одного оператора, эти операторы должны быть объединены в блок с помощью фигурных скобок {...}. Это также касается других конструкций С#, в которых операторы могут быть объединены в блок — таких как циклы for и while.

Стоит обратить внимание, что в отличие от языков С и С++, в С# условный оператор if может работать только с булевскими выражениями, но не с произвольными значениями вроде -1 и 0.

В операторе if могут применяться сложные выражения, и он может содержать операторы else, обеспечивая выполнение более сложных проверок. Синтаксис похож на применяемый в аналогичных ситуациях в языках С (С++) и Java. При построении сложных выражений в С# используется вполне ожидаемый набор логических операторов.

Рассмотрим следующий пример, демонстрирующий использование оператора if:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace LC_Console

{

class Program

{

static void Main()

{

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.WriteLine("Для продолжения нажмите любую клавишу . . . ");

Console.ReadKey();

}

}

}

/* Выведет:

* Введите строку:

* :7

* В этой строке 7 символов

* Для продолжение нажмите любую клавишу . . .

*/

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

2. Оператор switch

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

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

{

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

<последовательность операторов>

break;

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

<последовательность операторов>

break;

case <константаЗ>:

<последовательность операторов>

break;

...

default:

<последовательность операторов>

break;

}

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

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

Рассмотрим пример использования оператора switch:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace LC_Console

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Введите число (1, 2 или 3):");

string myLanguage = Console.ReadLine();

sw1(myLanguage);

Console.WriteLine("Для продолжения нажмите любую клавишу . . . ");

Console.ReadKey();

}

// Данный метод выводит выбор пользователя

static void sw1(string s)

{

switch (s)

{

case "1":

Console.WriteLine("Вы ввели число: 1");

break;

case "2":

Console.WriteLine("Вы ввели число: 2");

break;

case "3":

Console.WriteLine("Вы ввели число: 3");

break;

default:

Console.WriteLine("Вы ввели число не из диапазона");

break;

}

}

}

}

/* Выведет:

* Введите число (1, 2 или 3):

* :2

* Вы ввели число: 2

* Для продолжение нажмите любую клавишу . . .

*/