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

 


Зв’язані теми