C# - C Sharp: break và continue


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

1. Câu lệnh break;

Câu lệnh break; dùng được cho tất cả các loại vòng lặp của C# (whiledo-whilefor và foreach).

Câu lệnh break; có tác dụng thoát khỏi vòng lặp tức thì và bỏ qua mọi lệnh ở phía sau nó trong vòng lặp.

Cú pháp:

break;

Ví dụ 1: Hãy nhập vào một số nguyên N và kiểm tra xem N có phải số nguyên tố không?

Chương trình được viết như sau:

namespace Demo1
{
  internal class demo1
  {
    static void Main(string[] args)
    {
      /*Nhập vào một số N bất kỳ và kiểm tra xem N có phải
        là số nguyên tố hay không?
        Số nguyên tố là số nguyên dương >1 và chỉ chia hết cho
        1 và chính nó. Ví dụ: 2, 3, 5, 7, 11, 13, ...
        Cách thức xử lý: Cho 1 biến chạy i chạy từ 2 -> sqrt(N),
        và dùng 1 biến đánh dấu, nếu N chia hết cho i thì đánh dấu
        lại. Dựa trên giá trị của biến đánh dấu để kết luận N có
        là số nguyên tố hay không.
      */
      float N;
      bool isPrime = true; //Đây là biến đánh dấu, ban đầu chứa
                              //1 với mục đích giả sử ban ban đầu
                              //N là số nguyên tố

      Console.Write("Please enter any number: ");
      N = float.Parse(Console.ReadLine());

      if (N > 1 && N == (int)N) //Nếu N>1 và N là số nguyên thì mới check nguyên tố
      {
        for (int i = 2; i <= Math.Sqrt(N); i++)
        {
          if ((int)N % i == 0) //nếu N chia hết cho i
          {
            isPrime = false; //thì đặt biến isPrime chứa 0
            break; //, đồng thời thoát khỏi vòng lặp, không cần lặp thêm nữa
          }
        }
        if (isPrime) //Nếu biến isPrime không thay đổi giá trị so với ban đầu (true)
        {
          Console.WriteLine("{0} is a prime number", N); //thì khẳng định N là số nguyên tố
        }
        else //nếu không thì
        {
          //khẳng định N không phải số nguyên tố
          Console.WriteLine("{0} is not a prime number", N);
        }
      }
      else //ngược lại thì
      {
        //khẳng định N không đủ điều kiện xác định tính nguyên tố.
        Console.WriteLine("{0} does not qualify for primality", N);
      }
    }
  }
}

Ví dụ 2: Nhập vào một chuỗi bất kỳ và kiểm tra xem chuỗi đó có chứa ký số (ký tự số, chữ số) hay không?

Solution tham khảo viết dưới dạng không dùng hàm như sau:

namespace Demo1
{
  internal class demo1
  {
    static void Main(string[] args)
    {
      ///Bài toán: Hãy kiểm tra xem có tồn tại ký số
      ///(ký tự số hay chữ số) trong chuỗi hay không?
      string str;
      do
      {
        Console.Write("Input a string (0<str<30): ");
        str = Console.ReadLine();
      } while (!(0 < str.Length && str.Length < 30));

      bool found = false;
      for (int i = 0; i < str.Length; i++)
      {
        if (str[i] >= '0' && str[i] <= '9')
        {
          /*
            nếu một ký tự bất kỳ của chuỗi nằm
            trong đoạn ['0','9'], tức là chuỗi chứa ký số
          */
          found = true; //, thì đánh dấu việc tìm thấy ký số
                        //trong chuỗi.
          Console.WriteLine("String \"{0}\" contains digits", str);
          break; //thoát khỏi vòng lặp for mà không cần lặp thêm lần nào.
        }
      }
      if (!found)
      {
        Console.WriteLine("String \"{0}\" does not contain digits", str);
      }
    }
  }
}

Solution tham khảo viết dưới dạng dùng hàm như sau:

namespace Demo1
{
  internal class demo1
  {
    static void inputString(out string str)
    {
      do
      {
        Console.Write("Input a string (0<str<30): ");
        str = Console.ReadLine();
      } while (!(0 < str.Length && str.Length < 30));
    }

    static void checkNumericCharater(string str)
    {
      bool found = false;
      for (int i = 0; i < str.Length; i++)
      {
        if (str[i] >= '0' && str[i] <= '9')
        {
          /*
            nếu một ký tự bất kỳ của chuỗi nằm
            trong đoạn ['0','9'], tức là chuỗi chứa ký số
          */
          found = true; //, thì đánh dấu việc tìm thấy ký số
                        //trong chuỗi.
          Console.WriteLine("String \"{0}\" contains digits", str);
          break; //thoát khỏi vòng lặp for mà không cần lặp thêm lần nào.
        }
      }
      if (!found)
      {
        Console.WriteLine("String \"{0}\" does not contain digits", str);
      }
    }

    static void Main(string[] args)
    {
      ///Bài toán: Hãy kiểm tra xem có tồn tại ký số
      ///(ký tự số hay chữ số) trong chuỗi hay không?
      string str;
      inputString(out str);
      checkNumericCharater(str);
    }
  }
}

Ví dụ 3: Nhập vào một chuỗi bất kỳ và cắt những ký tự trắng (space) ở cuối chuỗi?

Sau đây là solution tham khảo:

namespace Demo1
{
  internal class CutSpaceAtTheEndOfString
  {
    static void Main(string[] args)
    {
      //* Bài toán: Hãy cắt các ký tự trắng (space) ở
      //cuối chuỗi?
      //* Thuật toán: Ta cho một biến chạy i chạy từ cuối
      //chuỗi str về đầu chuỗi, nếu phát hiện ký tự nào không
      //phải là ký tự cách thì lấy phần chuỗi từ 0 đến
      //sau ký tự chỉ số i và gán lại cho str.
      //* Tiến hành xử lý:
      string str;
      do
      {
        Console.Write("Input a string (0<str<30): ");
        str = Console.ReadLine();
      } while (!(0 < str.Length && str.Length < 30));
      Console.WriteLine("Before cutting space characters at the " +
                        "end of the string: \"{0}\"", str);
      for (int i = str.Length - 1; i >= 0; i--)
      {
        //cho biến chạy i chạy từ cuối chuỗi về
        //đầu chuỗi.
        if (str[i] != ' ') //nếu ký tự chỉ số i
        {//không phải ký tự cách
          str = str.Substring(0, i + 1);//thì lấy phần chuỗi từ
          //chỉ số 0 đến sau ký tự chỉ số i rồi gán lại cho str
          break;//và thoát khỏi vòng lặp ngay
        }
      }
      Console.WriteLine("After cutting space characters at the " +
                        "end of the string: \"{0}\"", str);
    }
  }
}

Sau đây là solution tham khảo sử dụng hàm để xử lý:

namespace Demo1
{
  internal class CutSpaceAtTheEndOfString
  {
    static void InputString(out string str)
    {
      do
      {
        Console.Write("Input a string (0<str<30): ");
        str = Console.ReadLine();
      } while (!(0 < str.Length && str.Length < 30));

    }

    static void CutSpace(ref string str)
    {
      for (int i = str.Length - 1; i >= 0; i--)
      {
        //cho biến chạy i chạy từ cuối chuỗi về
        //đầu chuỗi.
        if (str[i] != ' ') //nếu ký tự chỉ số i
        {//không phải ký tự cách
          str = str.Substring(0, i + 1);//thì lấy phần chuỗi từ
          //chỉ số 0 đến sau ký tự chỉ số i rồi gán lại cho str
          break;//và thoát khỏi vòng lặp ngay
        }
      }

    }

    static void Main(string[] args)
    {
      //* Bài toán: Hãy cắt các ký tự trắng (space) ở
      //cuối chuỗi?
      //* Thuật toán: Ta cho một biến chạy i chạy từ cuối
      //chuỗi str về đầu chuỗi, nếu phát hiện ký tự nào không
      //phải là ký tự cách thì lấy phần chuỗi từ 0 đến
      //sau ký tự chỉ số i và gán lại cho str.
      //* Tiến hành xử lý:

      string str;

      InputString(out str);

      Console.WriteLine("Before cutting space characters at the " +
                        "end of the string: \"{0}\"", str);

      CutSpace(ref str);

      Console.WriteLine("After cutting space characters at the " +
                        "end of the string: \"{0}\"", str);
    }
  }
}

2. Câu lệnh continue;

Câu lệnh continue; dùng để bỏ qua những lệnh còn lại trong khối lệnh của lần lặp hiện thời.

Theo đó tất cả các câu lệnh phía sau continue; nhưng nằm trong khối lệnh của vòng lặp sẽ bị bỏ qua tại lần lặp hiện thời.

Cú pháp:

continue;

Ví dụ 1: In ra những số chẵn trong đoạn 1-100 dùng continue?

Solution tham khảo như sau:

namespace Demo1
{
  internal class demo1
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Even numbers in the range 1-100:");
      for (int i = 1; i <= 100; i++) //lấy từng số ra
      {
        if (i % 2 != 0) //kiểm tra nếu không chia hết cho 2
        {
          continue; //thì bỏ qua lần lặp hiện thời
        }
        Console.WriteLine(i); //lệnh này sẽ được thực thi
                              //nếu i chia hết cho 2
      }
    }
  }
}
» Tiếp: Mảng (Array)
« Trước: Vòng lặp lồng
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!