Урок 4. Условные конструкции

Видеоурок, на котором базируется данный пост - Условные конструкции. Для лучшего усвоения информации и более подробного изучения C# настоятельно рекомендуем Вам просмотреть видеокурс C# Starter.


В этой публикации мы рассмотрим операторы ветвления языка C# которые будут использоваться для построения условных конструкций, строение условных конструкций.

Оператор ветвления (Условный оператор) - это конструкция языка программирования, обеспечивающая выполнение определенной команды или набора команд при условии истинности определенного логического выражения. Давайте сразу рассмотрим простой пример с оператором if:

            int a = 1, b = 2; // создаем две целочисленные переменные
        // это условная конструкция if
        if (a < b)      // Если условие удовлетворяет истинности, выполняем тело условной конструкции.
        {
            Console.WriteLine("a < b");     // Ветвь 1
        }
        
        // Delay.
        Console.ReadKey();</pre>

В данном примере мы создали две переменные и в зависимости от истинности логического выражения выполняется тело условия.


Давайте теперь более подробно рассмотрим остальные условные конструкции:

Конструкция if-else

В данной условной конструкции если логическое выражение в скобках верно то мы выполняем блок if если же условие ложно (false) мы выполняем блок else. Пример:

            int a = 3, b = 2;
        if (a < b)  // Если условие удовлетворяет истинности, выполняем тело блока if.
        {
            Console.WriteLine("a < b");               // Ветвь 1
        }
        else        // Иначе, выполняем тело блока else.       
        {
            Console.WriteLine("a не меньше b");       // Ветвь 2
        }

        // Delay.
        Console.ReadKey();</pre>

Так же можно использовать несколько else, как в следующем примерe:

            int a = 1, b = 2;
        if (a < b)      // каскад условных операторов
        {
            Console.WriteLine("a < b");   // Ветвь 1
        }
        else if (a > b) // идем на новую проверку
        {
            Console.WriteLine("a > b");   // Ветвь 2
        }
        else 
        {
            Console.WriteLine("a == b");  // Ветвь 3
        }
        
        // Delay.
        Console.ReadKey();</pre>

Условные конструкции

  • Условный оператор: if ... else
  • Тернарный оператор: ...? ... : ...
  • Оператор многозначного выбора: switch - case

Тернарный оператор

Тернарный оператор должен обязательно возвращать значение. Посмотрим на примере:

 int a = 1, b = 2, max = 0;
        // Переменной max, присваиваем возвращаемое значение тернарного оператора.

        max = (a > b) ? a : b;   // ЕСЛИ:  (a > b)  ТО:  вернуть a  ИНАЧЕ: вернуть b;

        Console.WriteLine(max);

        // Delay.
        Console.ReadKey();</pre>

Пример тернарных операторов с строками

            string @string = "Hello ";
        Console.WriteLine("Введите свой логин:");

        // На 17 строке создаем переменную с именем login типа string и принимаем в нее ввод от пользователя
        
        string login = Console.ReadLine();

        // На 21 строке переменной @string присваиваем возвращаемое значение тернарного оператора
       
        @string  = login == "Admin" ? "Administrator" : "User"; 

        Console.WriteLine(@string);

        // Delay.
        Console.ReadKey();</pre>

В данном примере мы вводим значение с клавиатуры, если оно будет равно "Admin" то мы выведем "Hello Administrator" строки соединятся, в другом случае, если мы введем что то что не "Admin" мы получим вывод "Hello User".


Switch

Конструкция switch состоит из вложенных операторов case (случаи), тут всё логично, мы указываем в скобках switch значение чье состояние мы будем проверять в case и в зависимости от совпадения значения, выполняется тело оператора который совпал.

Давайте рассмотрим несколько примеров:

            Console.WriteLine("Введите число 1 или 2: ");
        // Принимаем ввод от пользователя.
        string number = Console.ReadLine();


        // На 21 строке создаем конструкцию многозначного выбора, переключатель - switch, 
        // которому в качестве выражения-селектора, передаем переменную - number.

        switch (number)  // (number) — выражение-селектор.
        {
            // В теле переключателя switch-case, на 29 и 35 строках,
            // создаем два оператора case, c постоянными выражениями равными "1" и "2" соответственно.

            // Если значение выражения-селектора совпадет с одним из значений постоянных выражений,
            // то выполняется тело оператора case, постоянное выражение которого, совпало с выражением-селектора. 

            case "1":    // "1" — постоянное выражение.
                {
                    Console.WriteLine("Один");                                       // Ветвь 1
                    // Выход из переключателя.
                    break;
                }
            case "2":
                {
                    Console.WriteLine("Два");                                        // Ветвь 2
                    break;
                }

            // На 44 строке создаем (необязательный) оператор default, тело которого выполняется в случае,
            // если значение выражения-селектора не совпадет ни с одним из значений постоянных выражений. 

            default:
                {
                    Console.WriteLine("Вы ввели значение отличное от 1 и 2.");       // Ветвь 3
                    break;
                }

            // Если в переключателе отсутствует оператор default, то управление передается за пределы переключателя switch.    
        }

        // Delay.
        Console.ReadKey();</pre>

Далее рассмотрим на более прикладном примере:

            Console.WriteLine("Введите номер дня недели: 1-2-3-4-5-6-7: ");
        string myDay = Console.ReadLine();

        // Конвертируем значение строковой переменной myDay в целочисленное значение
        // и записываем его в переменную с именем day типа int

        int day = Convert.ToInt32(myDay);

        switch (day)
        {
            case 1:
                Console.WriteLine("Понедельник.");
                break;
            case 2:
                Console.WriteLine("Вторник.");
                break;
            case 3:
                Console.WriteLine("Среда.");
                break;
            case 4:
                Console.WriteLine("Четверг.");
                break;
            case 5:
                Console.WriteLine("Пятница.");
                break;
            case 6:
                Console.WriteLine("Суббота.");
                break;
            case 7:
                Console.WriteLine("Воскресенье.");
                break;
            default:
                Console.WriteLine("Вы ввели несуществующий день недели.");
                break;
        }

        // Delay.
        Console.ReadKey();</pre>

В данном примере мы вводим номер дня недели, и в соответствии с введенным номером, нам выведет день недели который соответствует введенной цифре. В данном примере мы так же используем Convert, который конвертирует наш строковый тип в целочисленный. Блок default выполняется в случае если ни один случай не подошел. Оператор break прерывает выполнение.