• Добро пожаловать на сайт - Forumteam.digital !

    Что бы просматривать темы форума необходимо зарегестрироваться или войти в свой аккаунт.

    Группа в телеграме (подпишитесь, что бы не потерять нас) - ForumTeam Chat [Подписатся]
    Связь с администратором - @ftmadmin

8. Изучаем условия и циклы.

Redman

<FORUMTEAM>
Команда форума
Регистрация
13.11.17
Сообщения
13.340
Реакции
8.377
Баллы
1.200
FTC
208¢
Условия и циклы.

В 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++ более существенны:

  1. Оператор выхода из метки case или необязательной метки default должен присутствовать, даже если данная метка последняя в операторе switch.
  2. Прохождение сквозь метки case недопустимы
Код:
switch ( a )
{
   case 5:
      ++a;
   case 6:  // ошибка компиляции ( нельзя "забыть" выйти из case )
      --a;
   break;
}

Проходить сквозь case можно, если он не содержит операторов
Код:
switch ( a )
{
   case 5:
   case 6:  // ошибок нет
      --a;
   break;
}

3.Выход из метки case можно осуществить при помощи оператора goto
Код:
switch ( a )
{
   case 5:
      ++a;
   goto default;  // переход на другую метку
   case 6:
      --a;
   break;         // выход из switch
   default:
      b = 0;
   goto case 6;   // переход на другую метку
}

4. Выражение, передаваемое оператору switch ( switch( a ) ), может быть целого ( не float, не double, не decimal ) или строкового типа
Код:
switch ( a )
{
   case "Hello":
      Console.WriteLine(a + ", World!!!");
   break;
}

Циклы

Цикл с предусловием
Код:
while ( условие )
{
   ...
}

Цикл с постусловием
Код:
do
{
   ...
}while ( условие );

Параметрический цикл
Код:
for ( инициализация; условие;  приращение )
{
   ...
}

Во всех циклах, как и в операторе if, условие должно иметь тип bool.

Цикл foreach

Данный оператор позволяет перебрать все значения в массиве (см. следующий раздел) или в классе-коллекции (см. следующие уроки). Например, если arr - массив, а N - его длина, то вывести на экран значения элементов массива можно следующими способами (рассматриваются циклы for и foreach):
Код:
for(int i = 0; i < N; i++)
   Console.WriteLine("{0} ", arr[i]);
foreach(int i in arr) // знать длину массива не обязательно
   Console.WriteLine("{0} ", i);

***********
параметр цикла в блоке операторов, следующих за foreach, доступен только для чтения !!!
Код:
foreach(int i in arr) // знать длину массива не обязательно
   i++; // Ошибка

***********


 
Сверху Снизу