Структура принятия решений требует чтобы программист определил одно или несколько условий для вычисления или проверки программой, вместе с выражением или выражениями, которые будут выполняться, если условие определено как истина (true), и возможно, другие выражения которые будут выполняться, если условие определено как ложь (false).
Ниже приведена общая форма типичной структуры принятия решений в большинстве языков программирования:
C# предусматривает следующие типы выражений для принятия решения.
Выражение | Описание |
---|---|
Оператор if | Оператор if содержит логическое выражение за которым следует один или более операторов. |
Оператор if...else | Оператор if может сопровождаться дополнительным оператором else, которое выполняется, когда логическое выражение ложно. |
Вложенный оператор if | Вы можете использовать один оператор if или else if внутри другого оператора if или else if. |
Оператор switch | Оператор switch позволяет проверять переменную на соответствие списку значений. |
Вложенный оператор switch | Вы можете использовать один оператор swicth внутри другого оператора switch. |
Оператор if содержит логическое выражение за которым следует один или более операторов.
Синтаксис выражения if в C#:
if(boolean_expression)
{
/* операторы будут выполняться, если логическое выражение истинно */
}
Если логическое выражение имеет значение true, тогда блок кода внутри выражения if будет выполнен. Если логическое выражение имеет значение false, тогда первый оператор после окончания условного оператора (после закрывающей фигурной скобки), будет выполнен.
using System;
namespace DecisionMaking
{
class Program
{
static void Main(string[] args)
{
/* определение локальной переменной */
int a = 10;
/* проверка логического условия использованного выражением if */
if (a < 20)
{
/* если условие истинно вывести следующие */
Console.WriteLine("a меньше чем 20");
}
Console.WriteLine("значение a : {0}", a);
Console.ReadLine();
}
}
}
Если приведенный выше код скомпилировать и выполнить, это приведет к следующему результату:
a меньше чем 20;
значение a : 10
Оператор if может сопровождаться дополнительным выражением else, которое выполняется, когда логическое выражение ложно.
Синтаксис выражения if...else в C#:
if(boolean_expression)
{
/* операторы будут выполняться, если логическое выражение истинно */
}
else
{
/* операторы будут выполняться, если логическое выражение ложно */
}
Если логическое выражение принимает значение true, тогда блок кода внутри if будет выполнен, иначе будет выполнен блок кода внутри else block.
using System;
namespace DecisionMaking
{
class Program
{
static void Main(string[] args)
{
/* определение локальной переменной */
int a = 100;
/* проверка логического условия */
if (a < 20)
{
/* если условие истинно вывести следующие */
Console.WriteLine("a меньше чем 20");
}
else
{
/* если условие ложно вывести следующие */
Console.WriteLine("a не меньше чем 20");
}
Console.WriteLine("значение a : {0}", a);
Console.ReadLine();
}
}
}
Если приведенный выше код скомпилировать и выполнить, это приведет к следующему результату:
a не меньше чем 20;
значение a : 100
Оператор ifможет сопровождаться дополнительным выражением else if...else, которое очень полезно для тестирования различных условий с использованием одного выражения if...else if.
Когда используется оператор if , else if , else нужно иметь ввиду несколько моментов:
Синтаксис выражения if...else if...else в C#:
if(boolean_expression 1)
{
/* выполняется когда логическое выражение 1 верно */
}
else if( boolean_expression 2)
{
/* выполняется когда логическое выражение 2 верно */
}
else if( boolean_expression 3)
{
/* выполняется когда логическое выражение 3 верно */
}
else
{
/* выполняется когда ни одно из логических выражений не верно */
}
using System;
namespace DecisionMaking
{
class Program
{
static void Main(string[] args)
{
/* определение локальной переменной */
int a = 100;
/* проверка логического условия */
if (a == 10)
{
/* если условие истинно вывести следующие */
Console.WriteLine("Значение a = 10");
}
else if (a == 20)
{
/* если условие else if истинно */
Console.WriteLine("Значение a = 20");
}
else if (a == 30)
{
/* если условие else if истинно */
Console.WriteLine("Значение a = 30");
}
else
{
/* если не одно условие не выполнилось */
Console.WriteLine("Ни одно из значений не совпало");
}
Console.WriteLine("Точное значение a : {0}", a);
Console.ReadLine();
}
}
}
Если приведенный выше код скомпилировать и выполнить, это приведет к следующему результату:
Ни одно из значений не совпало
Точное значение a : 100
Всегда можно в C# вложить оператор if-else, что означает, что вы можете использовать один оператор if или else if внутри другого оператора if или else if.
Синтаксис для вложенного оператора if следующий:
if( boolean_expression 1)
{
/* выполняется когда логическое выражение 1 верно */
if(boolean_expression 2)
{
/* выполняется когда логическое выражение 2 верно */
}
}
Вы можете вкладывать оператор else if...else также как и оператор if.
using System;
namespace DecisionMaking
{
class Program
{
static void Main(string[] args)
{
//* определение локальной переменной */
int a = 100;
int b = 200;
/* проверка логического условия */
if (a == 100)
{
/* если условие истинно вывести следующие */
if (b == 200)
{
/* если условие истинно вывести следующие */
Console.WriteLine("Значение a = 100 и b = 200");
}
}
Console.WriteLine("Точное значение a : {0}", a);
Console.WriteLine("Точное значение b : {0}", b);
Console.ReadLine();
}
}
}
Если приведенный выше код скомпилировать и выполнить, это приведет к следующему результату:
Значение a = 100 и b = 200
Точное значение a : 100
Точное значение b : 200
Оператор switch позволяет проверять переменную на соответствие списку значений. Каждое значение называется случай (case), и переменная проверяется для каждого случая switch.
Синтаксис для выражения switch в C# следующий:
switch(expression){
case constant-expression :
statement(s);
break; /* необязательно */
case constant-expression :
statement(s);
break; /* необязательно */
/* вы можете иметь любое количество выражения для проверки */
default : /* необязательно */
statement(s);
}
Следующие правила применяются к выражениям switch:
using System;
namespace DecisionMaking
{
class Program
{
static void Main(string[] args)
{
/* определение локальной переменной */
char grade = 'B';
switch (grade)
{
case 'A':
Console.WriteLine("Отлично!");
break;
case 'B':
case 'C':
Console.WriteLine("Хорошо");
break;
case 'D':
Console.WriteLine("Удовлетворительно");
break;
case 'F':
Console.WriteLine("Лучше попробуй снова");
break;
default:
Console.WriteLine("Неправильная оценка");
break;
}
Console.WriteLine("Ваша оценка {0}", grade);
Console.ReadLine();
}
}
}
Если приведенный выше код скомпилировать и выполнить, это приведет к следующему результату:
Хорошо
Ваша оценка B
Возможно использование оператора switch как часть другого оператора switch. Даже если условия в обоих случаях одинаковые это не вызовет ошибки.
Синтаксис для вложенного оператора switch следующий:
switch(ch1)
{
case 'A':
printf("Эта A часть внешнего switch" );
switch(ch2)
{
case 'A':
printf("Эта A часть внутреннего switch" );
break;
case 'B': /* внутренный случай B */
}
break;
case 'B': /* внешний случай B */
}
using System;
namespace DecisionMaking
{
class Program
{
static void Main(string[] args)
{
int a = 100;
int b = 200;
switch (a)
{
case 100:
Console.WriteLine("Это часть внешнего switch");
switch (b)
{
case 200:
Console.WriteLine("Это часть внутреннего switch");
break;
}
break;
}
Console.WriteLine("Точное значение a : {0}", a);
Console.WriteLine("Точное значение b : {0}", b);
Console.ReadLine();
}
}
}
Если приведенный выше код скомпилировать и выполнить, это приведет к следующему результату:
Это часть внешнего switch
Это часть внутреннего switch
Точное значение a : 100
Точное значение b : 200
Оператор ? : может заменить оператор if...else. Обшая форма для оператора следующая:
Exp1 ? Exp2 : Exp3;
Где Exp1, Exp2, и Exp3 - выражения.
Значение выражения ? определяется когда выражение Exp1 вычисляется. Если значение вычисленого выражения true, тогда выражение Exp2 вычисляется и становиться значеним всего выражения ?. Если значение выражения Exp1 false, тогда вычисляется выражение Exp3 и уже оно становиться значением всего выражения.