Yurijnd.com
Четверг, 06.02.2025, 19:48
Меню сайта

Вход на сайт

Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Онлайн всего: 3
    Гостей: 3
    Пользователей: 0

    Условные операторы в Си-шарп. Тернарный оператор 

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

    В Си-шарп есть три условных оператора: «if-else», «switch» и «?:» - тернарный оператор.

    Оператор «if-else»

    Данный оператор имеет следующую структуру:

     
    if ([условное выражение])
    {
       Блок кода, который нужно выполнить при удовлетворении условия,   [условное выражение] = true (истина)
    }
    else
    {
      Блок кода, который нужно выполнить при неудовлетворении условия,   [условное выражение] = false (ложь)
    }


    Часть else не является обязательной и может отсутствовать.

    Пример использования оператора «if-else» в программе, которая проверяет вводимое число на чётность:

     
    static void Main(string[] args)
    {
       int a;
       Console.WriteLine("Введите число:");
       a = Convert.ToInt32(Console.ReadLine()); // вводим данные с клавиатуры*
       if (a % 2 == 0) //проверяем число на чётность путем нахождения остатка от деления числа на 2
       {
         Console.WriteLine("Число " + a + " - чётное");
       }
       else
       {
         Console.WriteLine("Число " + a + " - нечётное");
       }
       Console.ReadKey();
    }

    * Функция Console.ReadLine() позволяет ввести данные с клавиатуры. Данные вводятся как строка, а так как нужно число, мы преобразовываем ее в числовой тип. Для преобразования мы используем функцию Convert.ToInt32().

    Если после if или else необходимо выполнить лишь одну команду, фигурные скобки можно опускать:

    if ([условное выражение])
    [команда1] // команда1 выполнится лишь если условное выражение истинно
    [команда2]// команда2 выполнится в любом случае

    Оператор if может иметь несколько условий:

    if ([логическое выражение1])
    {блок1}
    else if ([логическое выражение2])
    {блок2}
    else 
    {блок3}

    Пример программы, которая определяет, какое из двух введенных чисел больше:

     
    static void Main(string[] args)
    {
       int a, b;
       Console.WriteLine("Введите первое число:");
       a = Convert.ToInt32(Console.ReadLine());
       Console.WriteLine("Введите второе число:");
       b = Convert.ToInt32(Console.ReadLine());
       if (a > b)
         Console.WriteLine("Первое число больше второго");
       else if (a < b)
         Console.WriteLine("Второе число больше первого");
       else
         Console.WriteLine("Числа равны");

       Console.ReadKey();
    }

    Логическое выражение может быть сложнее. Здесь и используются логические операторы «!», «||» и «&&».

    Пример программы которая дает совет, что делать, в зависимости от температуры на дворе:

     
    static void Main(string[] args)
    {
       int t;
       Console.WriteLine("Введите температуру во дворе");
       t = Convert.ToInt32(Console.ReadLine());
       if (t < -20 || t > 40) //если температура меньше -20 или больше 40
         Console.WriteLine("Вам лучше посидеть дома!");
       else
         Console.WriteLine("Можете идти гулять");
       Console.ReadKey();
    }

    Оператор switch

    В некоторых случаях удобно использовать условный оператор «switch» вместо «if-else». Он имеет следующую структуру:

    switch (выражение)
    {
       case значение1: 
         блок1;
         break;
       case значение2: 
         блок2; 
         break;
         ... 
       case значениеN: 
         блокN; 
         break; 
       default: 
         блокN+1;
         break;
    }

    Выражение сравнивается последовательно со значениями. Если выражение равно значению – выполняется соответственный блок кода и при достижении ключевого слова break оператор switch заканчивает работу. Если выражение не будет соответствовать ни одному значению, тогда выполнится блок после default.

    Пример программы с использованием switch, которая выводит на экран название дня недели соответственно вводимому порядковому номер дня:

     
    static void Main(string[] args)
    {
       int a;
       Console.WriteLine("Введите порядковый номер дня недели:");
       a = Convert.ToInt32(Console.ReadLine());
       switch (a)
       {
         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;
         }
         Console.ReadKey();
    }

    Тернарный оператор «?:»

    Этот оператор используется для сокращения объема кода. Им можно заменять простые по сложности операторы if-else. Тернарный оператор имеет такую структуру:

    логическое выражение ? выражение1 : выражение2

    Сначала вычисляется логическое выражение. Если оно истинно, то вычисляется выражение1, в противном случае - вычисляется выражение2.

    Пример использования тернарного оператора «?:» в той же программе для проверки числа на чётность:

     
    static void Main(string[] args)
    {
       int a;
       Console.WriteLine("Введите число:");
       a = Convert.ToInt32(Console.ReadLine());
       Console.WriteLine( a % 2 == 0 ? "Число чётное" : "Число нечётное" );
       Console.ReadKey();
    }

    «?:» также можно использовать для присваивания значений. Пример программы, которая находит большее число из двух вводимых:
     
    static void Main(string[] args)
    {
       int a, b, max;
       Console.WriteLine("Введите первое число:");
       a = Convert.ToInt32(Console.ReadLine());
       Console.WriteLine("Введите второе число:");
       b = Convert.ToInt32(Console.ReadLine());
       max = a > b ? a : b;
       Console.WriteLine("max = " + max);   
       Console.ReadKey(); 
    }

    Домашнее задание

    1) С клавиатуры вводятся два числа – количество забитых голов хозяевами и гостями в футбольном матче. Вывести на экран результат игры – победили хозяева/гости/ничья.

    2) Напишите программу, которая будет проверять число на кратность 3-м и 7-ми (это числа 21, 42, 63…). Вывести на экран соответствующее сообщение.
    Copyright MyCorp © 2025
    Сделать бесплатный сайт с uCoz