Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Русский_Проект: Изучение Visual Basic C#.Учебный курс


C#. Учебный курс

Здравствуйте, программисты! Сегодня на 16 занятии поговорим об операторах break, continue и goto.

Оператор break

Использование оператора break предоставляет возможность принудительного и немедленного выхода из цикла без выполнения оставшегося кода в теле цикла и проверки условия цикла. То есть цикл завершает свою работу, когда оператор break встречается внутри цикла, при этом управление программой передается оператору, следующему за циклом. Переделаем пример работы с циклом for

// Оператор break
class BreakDemo 
{
     public static void Main() 
    {
        // выводим числа от 1 до 10
         for (int i = 0; i < 10; i++)
           {
              if(i >= 7) break; // если число станет больше или равно 7, то завершаем цикл
              System.Console.WriteLine(i + 1);
           }
        System.Console.WriteLine("Цикл завершен");
    }
} 

Цикл for должен был повториться 10 раз, но включение в программу оператора break досрочно завершает цикл при достижении переменной i значения 7. Оператор break можно использовать в любом цикле. Рассмотрим пример использования бесконечного цикла с применением оператора break:

char ch;

for( ; ; )
{
    ch = (char) Console.Read();  // считываем символ
    if(ch == 'к') break;  // работа бесконечного цикла прекращается
}

Console.WriteLine("Вы нажали клавишу к");

Если оператор break используется внутри вложенных циклов, то он прекращает работу только внутреннего цикла. Кроме того, в цикле можно применять несколько операторов break

Оператор continue

В C# существует возможность принудительного перехода к следующей итерации цикла с помощью специального оператора continue, который является дополнением к оператору break. Предположим, нам нужно вывести на экран четные числа из диапазона чисел от 0 до 50:

// пример использования оператора continue
class ContinueDemo 
{
     public static void Main() 
    {
        int i;
        // выводим на экран четные числа из диапазона от 1 до 50
         for (i = 0; i <= 50; i++)
           {
              if ((i % 2) !=0) continue; // следующая итерация
              System.Console.WriteLine(i);
           }
     }
} 

В этой программе на экран выводятся только четные числа, поскольку присвоение переменной i нечетного значения заставляет перейти к следующей строке цикла с пропуском метода WriteLine().

В циклах while и do-while использование оператора приводит к передаче управления непосредственно выражению, после чего выполнение цикла продолжается. В цикле for сначала выполняется итерационное выражение цикла, затем оценивается выражение условия, а уже после этого продолжается выполнение цикла.

Таким образом, если вам в цикле понадобится прекратить выполнение какой-либо итерации цикла, то вам на помощь придет оператор continue.

Оператор goto

Оператор goto является оператором безусловного перехода. Как только программа встречает данный оператор, она сразу же переходит в указанное данным оператором место. Для этого создается специальная метка, причем ее определение должно быть выполнено в рамках того же метода, в котором она используется оператором goto. Метка представляет собой идентификатор, за которым следует двоеточие. Оператор goto можно эффективно использовать для выхода из глубоко вложенной процедуры:

// Оператор goto
class Use_goto 
{
     public static void Main() 
    {
        int i = 0, j = 0, k = 0;
        // выводим на экран четные числа из диапазона от 1 до 50
         for (i = 0; i <= 10; i++)
           {
              for (j = 0; j < 10; j++)
                 {
                    for (k = 0; k < 10; k ++)
                       {
                          System.Console.WriteLine("i, j, k: " + i + " "+ j + " " + k);
                          if (k == 3) goto stop;
                       }
                 }
              
           }
        stop:
        System.Console.WriteLine("Завершение цикла! i, j, k: " + i + " " + j + " " + k);
     }
} 

В результае выполнения примера было бы

i, j, k: 0 0 0
i, j, k: 0 0 1
i, j, k: 0 0 1
i, j, k: 0 0 3
Завершение цикла! i, j, k: 0 0 3

Если бы мы исключили из программы оператор goto, то пришлось бы трижды использовать операторы if и break (таким образом мы упростили код).

Microsoft читает мои мысли

Недавно на сайте Microsoft открылся новый раздел, предназначенный для непрофессиональных программистов, для которых написание программ являются больше увлечением, чем работой. Для таких начинающих энтузиастов компания предлагает серию статей (эту серию можно скачать и отдельно в виде документов Word). Я мельком просмотрел часть этого материала и увидел интересную картинку в главе, посвященной классам в .NET Framework. Как вы знаете, я частенько использую "кошачью" тематику в учебном курсе по C#. Так вот, в этой главе понятие класса объясняется на примере кота! Я и сам собирался использовать этот подход. А вот Герберт Шилдт использует для примеров автомобильную тематику. Так что, когда мы начнем изучать классы, то познакомимся с этими примерами. Ссылку давать не буду, кто захочет - сам найдет (учтите, что все материалы на английском).

Windows Mobile 6.0

Недавно Microsoft объявила о выходе новой операционной системы для КПК и смартфонов Windows Mobile 6.0 и выпустила соответствующие SDK. Также на сайте появилась большая статья о том, что нового появилось в Windows Mobile 6.0. Недостаток времени не позволяет мне полностью перевести статью на русский язык. Поэтому ознакомьтесь с полу-переведенным материалом. Может кто-то продолжит начатое и переведет и другие оставшиеся части статьи? Дословный перевод не обязателен. Достаточно выделить главные моменты статьи. Адрес статьи - http://rusproject.narod.ru/cf/new_winmobile6.htm< /a>

Visual Basic 6.0

Не забываем и про наш старый добрый VB 6.0. Нашел в своем архиве пример вращения курсора мыши по окружности. Не помню откуда скачал, но пример интересный. Пример будет доступен в течении недели на этой странице

Удачного вам программирования!


©2007 А.Климов
Русский_Проект

В избранное