Тема: Программирование алгоритмов циклической структуры
Цель: изучение возможностей C# для программирования алгоритмов циклической структуры.
Теоретические сведения.
Операторы условия.
В C# поддерживаются многие операторы условий и циклов, применяемых в C++, поэтому рассмотрим только отличия.
Оператор условия if-else внешне выглядит, как в C++:
if (условие)
{
...
}
else if (условие)
{
...
}
...
else
{
...
}
Однако, в C# выражение в скобках должны иметь тип bool. Это означает, что выражения типа if(a) /* a не имеет тип bool) */ и if(a = 5) будут вызывать ошибку компиляции. Таким образом C# позволяет избежать известной ошибки, связанной с потерей одного знака = внутри оператора условия.
Условный оператор:
условие? выражение /*условие истинно*/: выражение /*условие ложно*/
Оператор множественного выбора:
switch(выражение)
{
case константное выражение:
выражение;
...
оператор выхода из case;
...
default:
выражение;
...
оператор выхода из default;
}
В данном случае отличия от языка C++ более существенны: оператор выхода из метки case или необязательной метки default должен присутствовать, даже если данная метка последняя в операторе switch.
Прохождение сквозь метки case недопустимы
switch (a)
{
case 5:
++a;
case 6: // ошибка компиляции (нельзя "забыть" выйти из case)
--a;
break;
}
Проходить сквозь case можно, если он не содержит операторов:
switch (a)
{
case 5:
case 6: // ошибок нет
--a;
break;
}
Выход из метки case можно осуществить при помощи оператора goto
switch (a)
{
case 5:
++a;
goto default; // переход на другую метку
case 6:
--a;
break; // выход из switch
default:
b = 0;
goto case 6; // переход на другую метку
}
Выражение, передаваемое оператору switch (switch(a)), может быть целого (не float, не double, не decimal) или строкового типа
switch (a)
{
case "Hello":
Console.WriteLine(a + ", World!!!");
break;
}
Циклы
Цикл с предусловием:
while (условие)
{
...
}
Цикл с постусловием:
do
{
...
}while (условие);
Параметрический цикл:
for (инициализация; условие; приращение)
{
...
}
Во всех циклах, как и в операторе if, условие должно иметь тип bool.