C#. Операторы break, continue, goto. Примеры применения

Операторы break, continue, goto. Примеры применения


Содержание


1. Оператор break. Назначение

В языке C# оператор break имеет два основных направления применения:

  • в операторах цикла оператор break используется для завершения циклического процесса (прерывание работы цикла). Такое действие необходимо, кода нужно прервать выполнение цикла в зависимости от некоторого условия;
  • в операторе выбора switch применение оператора break нужно для реализации выхода из данного оператора.

 

2. Оператор continue. Назначение

Оператор continue применяется внутри тела цикла. Оператор прекращает выполнение текущей итерации и переходит к следующей итерации (следующему шагу цикла). Использование оператора continue в цикле эффективно, если нужно пропустить некоторые итерации в зависимости от условия.

 

3. Оператор goto. Назначение

Оператор goto предназначен для выполнения безусловного перехода в программе. Общая форма использования оператора goto следующая

goto label;

где label – метка в программе для реализации перехода.

В программировании на C# оператор goto может применяться в двух аспектах:

  • в теле программы (некоторой функции) для организации перехода между операторами;
  • в операторе switch для перехода к одной из ветвей case.

Если в программе нужно перейти на метку с именем m1, то фрагмент программного кода может быть следующим

m1:

// операторы
// ...

if (условие) goto m1;

здесь условие – условное выражение согласно синтаксису C#.

Использование оператора goto в программе считается плохим тоном в программировании. Это связано с тем, что весьма частое использование оператора goto в программе путает программный код и усложняет его восприятие. Поэтому, по возможности, рекомендуется заменять goto операторами цикла. Однако, это только рекомендация.



 

4. Примеры программ с использованием оператора break

Пример 1. Дана последовательность из 10 чисел. Определить, есть ли эта последовательность упорядоченной по возрастанию. В случае отрицательного ответа определить порядковый номер первого числа, которое нарушает данную последовательность.

Одно из возможных решений задачи для приложения типа Console Application следующее

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp8
{
  class Program
  {
    static void Main(string[] args)
    {
      // Определение, есть ли последовательность возрастающей
      int num, pnum, pos = 0;
      int i;

      Console.WriteLine("Enter numbers:");

      // цикл ввода чисел (до 10 чисел)
      i = 0;
      num = Convert.ToInt32(Console.ReadLine());
      pnum = num;
      while (i < 9)
      {
        // если не первый раз выполняется тело цикла
        if (pnum > num)
        {
          // последовательность не есть возрастающей
          pos = i; // запомнить позицию
          break; // выход из цикла
        }
        pnum = num;
        i++;
        num = Convert.ToInt32(Console.ReadLine());
      }

      if (i == 9)
        Console.WriteLine("The sequence is ascending.");
      else
      {
        Console.WriteLine("The sequence is not ascending.");
        Console.WriteLine("break position = {0}", pos + 1);
      }
      Console.ReadKey();
    }
  }
}

Как видно из вышеприведенного кода, если последовательность не является возрастающей, то выход из цикла while происходит с помощью оператора break.

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

Enter numbers:
5
6
4
The sequence is not ascending.
break position = 3

Пример 2. Дана некоторая последовательность целых чисел, которая завершается числом 15. Реализовать вычисление суммы элементов последовательности. Число 15 в сумму не включать.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp8
{
  class Program
  {
    static void Main(string[] args)
    {
      // Вычисление суммы элементов последовательности
      int num;
      int sum;

      Console.WriteLine("Enter numbers:");

      // цикл ввода чисел, использован оператор do-while
      sum = 0; // искомая сумма
      do
      {
        num = Convert.ToInt32(Console.ReadLine());
        if (num == 15) break; // выход из цикла, если введено число 15
        sum = sum + num;
      } while (true); // бесконечный цикл

      Console.WriteLine("sum = {0}", sum);
      Console.ReadKey();
    }
  }
}

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

Enter numbers:
5
5
6
8
2
15
sum = 26

 

5. Примеры программ с использованием оператора continue

Пример 1. Дана последовательность целых чисел, которая завершается числом 0. Вычислить сумму элементов последовательности, номера позиций которых кратны 3 (элементы на позициях 3, 6, 9 …). Считать, что нумерация позиций элементов начинается с 1.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp8
{
  class Program
  {
    static void Main(string[] args)
    {
      // Вычисление суммы элементов последовательности,
      // которые размещены на позициях кратных 3
      int num;
      int sum;
      int i;

      Console.WriteLine("Enter numbers:");
      // цикл ввода чисел, использован оператор do-while
      sum = 0; // искомая сумма
      i = 0;
      do
      {
        num = Convert.ToInt32(Console.ReadLine());
        i++;

        // если позиция равна 3, то пропустить суммирование
        if (i % 3 != 0) continue;

        sum = sum + num;
      } while (num != 0);

      Console.WriteLine("sum = {0}", sum);
      Console.ReadKey();
    }
  }
}

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

Enter numbers:
1
1
100
2
2
215
3
3
150
5
6
0
sum = 465

Пример 2. Дана последовательность вещественных чисел, которая завершается числом -1. Вычислить сумму элементов последовательности, значения которых находятся в пределах [1.7… 2.7].

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp8
{
  class Program
  {
    static void Main(string[] args)
    {
      // Вычисление суммы элементов последовательности,
      // значения которых находятся в пределах [1.7 .. 2.7]
      const double MIN = 1.7;
      const double MAX = 2.7;
      double sum = 0;
      double number = 0;

      Console.WriteLine("Enter numbers:");

      while (number != -1)
      {
        number = Double.Parse(Console.ReadLine());
        if ((number < MIN) || (number > MAX))
continue;
          sum += number;
      }

      Console.WriteLine("sum = {0}", sum);
      Console.ReadKey();
    }
  }
}

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

Enter numbers:
1.1
2
3.1
-4.5
1.9
-1
sum = 3.9

 

6. Примеры программ с использованием оператора goto

Пример 1. Организовать циклический процесс вычисления суммы элементов последовательности с помощью оператора goto. Конец последовательности – число 0.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp8
{
  class Program
  {
    static void Main(string[] args)
    {
      // Вычисление суммы элементов последовательности,
      // оператор goto
      double sum = 0;
      double number;

      Console.WriteLine("Enter numbers:");

      number = 1;

      // метка, символизирует начало повторяющегося блока
      begLoop:

      number = Double.Parse(Console.ReadLine());

      if (number != 0)
      {
        sum += number;
        goto begLoop; // переход на метку begLoop
      }

      Console.WriteLine("sum = {0}", sum);
      Console.ReadKey();
    }
  }
}

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

Enter numbers:
5
6
1
0
sum = 12

 


Связанные темы