Обучение C#

Формула программиста
основатель — Волосатов Евгений Витольдович

Операторы проверки условия

К операторам проверки условия относят
  • условный оператор if
  • тернарный оператор ? :
  • оператор ветвления switch

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

Условный оператор if


Различают два варианта использования условного оператора if – полная развилка и неполная развилка, схематично показанные на рисунке ниже.
Полная развилка
if(выражение)
{
  НаборОпераций1;
}
else
{
  НаборОпераций2;
}

Неполная развилка
if(выражение)
{
  НаборОпераций1;
}






В обоих вариантах использования условного оператора НаборОпераций1 выполняется в случае если проверяемое выражение истинно (равно True).
В варианте полной развилки НаборОпераций2 выполняется в случае если проверяемое выражение ложно (равно False).
В варианте неполной развилки в случае ложного значения проверяемого выражения никакие действия не выполняются.
Выполняемый НаборОпераций заключается в фигурные скобки. Если НаборОпераций состоит только из одной операции, то эта операция в фигурные скобки может не заключаться.

В качестве примера использования неполной развилки рассмотрим задачу нахождения модуля введенного целого числа.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
namespace MyProgram
{
  class Program
  {
    static void Main(string[] args)
    {
      int value = int.Parse(Console.ReadLine());
      if (value < 0)
        value = -value;
      Console.WriteLine(value);
      Console.ReadKey();
    }
  }
}


В качестве примера использования полной развилки рассмотрим задачу определения максимума двух введенных чисел.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
namespace MyProgram
{
  class Program
  {
    static void Main(string[] args)
    {
      int a = int.Parse(Console.ReadLine());
      int b = int.Parse(Console.ReadLine());
      if (a > b)
        Console.WriteLine(a);
      else
        Console.WriteLine(b);
      Console.ReadKey();
    }
  }
}

Если выражение оператора if предполагает проверку на равенство, то для этого используется символ «двойное равно» ==.
Условные операторы могут быть вложенными. Синтаксис языка предполагает, что при вложениях условных операторов каждое else соответствует ближайшему к нему предшествующему if.

Рассмотрим пример вывода оценки в зависимости от балла
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
namespace MyProgram
{
  class Program
  {
    static void Main(string[] args)
    {
      int value = int.Parse(Console.ReadLine());
      if(value == 2)
        Console.WriteLine("неудовлетворительно");
      else if(value == 3)
        Console.WriteLine("удовлетворительно");
      else if (value == 4)
        Console.WriteLine("хорошо");
      else if (value == 5)
        Console.WriteLine("отлично");
      else Console.WriteLine("оценка не определена");
      Console.ReadKey();
    }
  }
}


Проверяемое выражение может содержать операции условных логических операций (И, ИЛИ, НЕ, Исключающее ИЛИ). При этом
  • если выражение содержит операцию И, то обязательным является истинное значение всех составляющих выражения;
  • если выражение содержит операцию ИЛИ, то обязательным является истинное значение хотя бы одной составляющей выражения;
  • если выражение содержит операцию Исключающее ИЛИ, то обязательным является истинное значение только одной из двух составляющих выражения;
  • если проверяется логическое НЕ (инверсия выражения), то значение самого выражения для выполнения условия должно быть ложно.
Ниже приводятся примеры представления логических операций в виде вложенных операций if для условных логических операций И и ИЛИ
Логическое И
if(выражение1 && выражение 2)
{
  НаборОпераций1;
} else
{
  НаборОпераций2;
}









if(выражение1)
{
  if(выражение2)
  {
    НаборОпераций1;
  }
  else
  {
    НаборОпераций2;
  }
}
else
{
  НаборОпераций2;
}
 

Логическое ИЛИ
if(выражение1 || выражение 2)
{
  НаборОпераций1;
} else
{
  НаборОпераций2;
}





if(выражение1)
{
  НаборОпераций1;
}
else if(выражение2)
{
  НаборОпераций1;
}
else
{
  НаборОпераций2;
}

 

Рассмотрим пример сдачи зачета в зависимости от балла
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
namespace MyProgram
{
  class Program
  {
    static void Main(string[] args)
    {
      int value = int.Parse(Console.ReadLine());
      if(value==3 || value == 4 || value == 5)
        Console.WriteLine("зачет");
      else
        Console.WriteLine("незачет");
      Console.ReadKey();
    }
  }
}

Тернарные операции


Тернарная операция используется в операциях присваивания и применяется для проверки условия и имеет три составляющих
Переменная = Условие ? Значение1 : Значение2;
Если условие выполняется, то переменной присваивается Значение1, иначе – Значение2.

Рассмотрим тот же пример сдачи зачета в зависимости от балла, реализованный с использованием тернарных операций
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
namespace MyProgram
{
  class Program
  {
    static void Main(string[] args)
    {
      int value = int.Parse(Console.ReadLine());
      string s;
      s = value == 3 || value == 4 || value == 5 ? "зачет" : "незачет";
      Console.WriteLine(s);
      Console.ReadKey();
    }
  }
}

Тернарные операции, как и оператор if, могут быть вложенными.
10
s = value == 3 ? "зачет" : value == 4 ? "зачет" : value == 5 ? "зачет" : "незачет";

Оператор ветвления switch


Оператор ветвления switch является удобным способом реализации множественного ветвления (когда значение переменной необходимо проверить на соответствие одному из нескольких значений). Этот оператор позволяет проверять значения только целочисленных, символьных или строковых переменных или значения перечислений enum.
Синтаксис использования оператора ветвления следующий
switch (Выражение)
{
  case Значение1: НаборОпераций1; break;
  case Значение2: НаборОпераций2; break;
  ...
  case Значениеn: НаборОперацийn; break;
  default: НаборОпераций по умолчанию; break;
}

 
Синтаксическая конструкция оператора ветвления использует ключевые слова switch, case, break, и default и обязательные фигурные скобки, ограничивающие тело оператора.
Конструкция
case Значение:

называется меткой переключателя.
Управляющая конструкция
switch(Выражение)

передает управление той метке переключателя, для которой значение выражения совпадает со значением метки. Оператор break завершает выполнение НабораОпераций и осуществляет переход к операции, следующей за ветвлением.
В случае если вычисленному Выражению не сопоставлена ни одна метка переключателя, будут выполнены операции метки по умолчанию default.
В каждом операторе ветвления может быть не больше одной метки default. Если метка default отсутствует, то при несовпадении переключающего выражения ни с одной меткой переключателя оператор ветвления не выполнит никаких действий.
Рассмотрим пример вывода оценки в зависимости от балла
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
namespace MyProgram
{
  class Program
  {
    static void Main(string[] args)
    {
      int value = int.Parse(Console.ReadLine());
      switch(value)
      {
        case 2: Console.WriteLine("неудовлетворительно"); break;
        case 3: Console.WriteLine("удовлетворительно"); break;
        case 4: Console.WriteLine("хорошо"); break;
        case 5: Console.WriteLine("отлично"); break;
        default: Console.WriteLine("оценка не определена"); break;
      }
      Console.ReadKey();
    }
  }
}

Автор: Вставская Елена Владимировна

 
Написать комментарий:




Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.