Для розв’язання усіх задач, які розглядалися вище, ми складали алгоритми, в яких всі дії виконувалися послідовно одна за одною. Такі алгоритми називаються лінійними. За допомогою лінійних алгоритмів можна розв’язувати, як правило, лише найпростіші задачі. Досить часто при розв’язуванні задач потрібно аналізувати умову, і в залежності від того, виконується вона або ні, виконувати різні дії. Алгоритмічна структура розгалуження – це структура, в якій, в залежності від поставленої умови, виконуються різні команди.
В мові програмування C# існує три види алгоритмів розгалуження:
Команда розгалуження if – else
//Команда розгалуження
if (умова)
{
команда 1;
команда 2;
…;
}
else
{
команда 1;
команда 2;
…;
}
В команді розгалуження if – else спочатку аналізується умова, якщо умова істинна (+) – виконуються дії 1, якщо ж умова хибна (–) – виконуються дії 2. В C# неповне розгалуження записується так:
if (умова)
{
команда 1;
команда 2;
…;
}
Зауваження 2. Якщо у гілках істинності умови (+) або/i хибності умови (–) потрібно виконати лише одну команду, то фігурні дужки можна не ставити. Таким чином, алгоритм може бути записаний в скороченій формі:
if (умова)
команда 1;
else
команда 2;
C# | Операція порівняння |
---|---|
> | Більше |
< | Менше |
>= | Більше або дорівнює |
<= | Менше або дорівнює |
== | Дорівнює |
!= | Не дорівнює |
Логічні операції
Логічні умови виду x>5 або a<=0 називають простими умовами. Складені умови поєднують в собі декілька простих умов. Для поєднання декількох простих умов використовують логічні операції кон’юнкції та диз’юнкції:
C# | Логічна операція | Приклад запису |
---|---|---|
&& | Логічне «І» - кон’юнкція. Логічний вираз буде істинним, якщо кожна з простих умов буде істинна. Хибним – якщо хоча б одна з простих умов є хибною. | x>0 && x<100 |
|| | Логічне «АБО» - диз’юнкція. Логічний вираз буде істинним, якщо хоча б одна з простих умов буде істинна. Хибним – якщо кожна з простих умов є хибна. | a==b || b==c || a==c |
Оператор вибору switch
В мові C# існує оператор вибору, який дозволяє реалізувати розгалуження обчислювального процесу в багато напрямків. В загальному оператор вибору має такий вигляд:
switch (змінна)
{
case значення1:
блок1;
break;
case значення2:
блок2;
break;
...
case значення N:
блокN;
break;
default:
блок;
break;
}
private void button1_Click(object sender, EventArgs e)
{
int n = int.Parse(textBox1.Text);
switch (n)
{
case 1:
label2.Text = "Понеділок";
break;
case 2:
label2.Text = "Вівторок";
break;
case 3:
label2.Text = "Середа";
break;
case 4:
label2.Text = "Четвер";
break;
case 5:
label2.Text = "П’ятниця";
break;
case 6:
label2.Text = "Субота";
break;
case 7:
label2.Text = "Неділя";
break;
default:
label2.Text = "Помилка введення!";
break;
}
}
Блок default в даній структурі є не обов’язковим.
Тернарний оператор ? :
Умова ? дія1 : дія2;
int max = a > b ? a : b;