Условные операторы
Условные операторы позволяют управлять потоком выполнения программы, чтобы не выполнялась каждая строка кода, как она следует в программе. Давайте рассмотрим все условные операторы языка C#:
Оператор if
Для организации условного ветвления язык C# унаследовал от С и С++ конструкцию if...else. Ее синтаксис должен быть интуитивно понятен для любого, кто программировал на процедурных языках:
if (условие)
оператор (операторы)
else
оператор (операторы)
Если по каждому из условий нужно выполнить более одного оператора, эти операторы должны быть объединены в блок с помощью фигурных скобок {...}. (Это также касается других конструкций C#, в которых операторы могут быть объединены в блок — таких как циклы for и while.)
Стоит обратить внимание, что в отличие от языков С и С++, в C# условный оператор if может работать только с булевскими выражениями, но не с произвольными значениями вроде -1 и 0.
В операторе if могут применяться сложные выражения, и он может содержать операторы else, обеспечивая выполнение более сложных проверок. Синтаксис похож на применяемый в аналогичных ситуациях в языках С (С++) и Java. При построении сложных выражений в C# используется вполне ожидаемый набор логическихоператоров. Давайте рассмотрим следующий пример:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
stringmyStr;
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);
elseConsole.WriteLine("\nВ данной строке больше 12 символов");
Console.ReadLine();
}
}
}
Как видите количество elseif, добавляемых к единственному if, не ограничено. Один момент, который следует отметить касательно if: фигурные скобки применять не обязательно, если в условной ветви присутствует только один оператор, как показано в исходном примере.
Оператор switch
Вторым оператором выбора в C# является оператор switch, который обеспечивает многонаправленное ветвление программы. Следовательно, этот оператор позволяет сделать выбор среди нескольких альтернативных вариантов дальнейшего выполнения программы. Несмотря на то что многонаправленная проверка может быть организована с помощью последовательного ряда вложенных операторов if, во многих случаях более эффективным оказывается применение оператора switch. Этот оператор действует следующим образом. Значение выражения последовательно сравнивается с константами выбора из заданного списка. Как только будет обнаружено совпадение с одним из условий выбора, выполняется последовательность операторов, связанных с этим условием. Ниже приведена общая форма оператора switch:
switch(выражение) {
case константа1:
последовательность операторов
break;
case константа2:
последовательность операторов
break;
caseконстантаЗ:
последовательность операторов
break;
...
default:
последовательность операторов
break;
}
Хотя оператор switch...case должен быть знаком программистам на С и С++, в C# он немного безопаснее, чем его эквивалент С++. В частности, он запрещает "сквозные" условия почти во всех случаях. Это значит, что если часть case вызывается в начале блока, то фрагменты кода за последующими частями case не могут быть выполнены, если только не используется явно оператор goto для перехода к ним. Компилятор обеспечивает это ограничение за счет того, что требует, чтобы за каждой частью case следовал оператор break, в противном случае он выдает ошибку.
Важно отметить, что заданное выражение в операторе switch должно быть целочисленного типа (char, byte, short или int), перечислимого или же строкового. А выражения других типов, например с плавающей точкой, в операторе switch не допускаются. Зачастую выражение, управляющее оператором switch, просто сводится к одной переменной. Кроме того, константы выбора должны иметь тип, совместимый с типом выражения. В одном операторе switch не допускается наличие двух одинаковых по значению констант выбора.
Давайте на примере рассмотрим использование оператора switch:
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введитеязык (C#, VB или C++)");
stringmyLanguage = 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;
}
}
}
}
ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ ДЛЯ ВЫПОЛНЕНИЯ
Составить программы разветвляющейся структуры, используя оператор IFили условную трехместную операцию. Исходные данные вводить с клавиатуры.
1) Даны 6 чисел. На сколько их сумма меньшеили больше их произведения?
2) Даны 5 чисел. Вычислить сумму положительных среди них чисел.
3) Даны 4 числа. Все отрицательные среди них числа заменить на 0.
4) Даны 8 чисел. Определить сколько среди них отрицательных и сколько положительных.
5) Даны 4 числа. Определить порядковый номер наименьшего среди них.
6) Даны четыре числа. Найти разность между наибольшим и наименьшим среди них.
7) Даны 3 числа K, M и N. Поменять их значения местами таким образом, чтобы K<M<N.
8) Даны 4 разных числа. Найти среди них два наибольших.
Дополнительные задания.
Задание 1.
Напишите программу и составьте блок-схему для решения следующей задачи. Задано некоторое целое число N. Выведите на экран название рабочего дня недели, считая, что N его номер.
Задание 2
Напишите программу и составьте блок-схему для решения следующей задачи. Задано некоторое целое число N. Выведите на экран название геометрической фигуры (объекта), имеющей N вершин.
Задание 3.
Напишите программу и составьте блок-схему для решения следующей задачи. Задано некоторое целое число N. Выведите на экран название оценки, соответствующей N баллам.