Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Условия и циклы.

В 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++; // Ошибка

*************


 
 
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru