Dấu ngắt trong C++ là một câu lệnh điều khiển vòng lặp được sử dụng để kết thúc vòng lặp. Ngay khi gặp câu lệnh break từ bên trong một vòng lặp, các lần lặp lại của vòng lặp dừng lại ở đó và quyền điều khiển quay trở lại ngay lập tức từ vòng lặp về câu lệnh đầu tiên sau vòng lặp.
Cú pháp:
phá vỡ;
Về cơ bản, câu lệnh break được sử dụng trong các trường hợp khi chúng ta không chắc chắn về số lần lặp thực tế của vòng lặp hoặc chúng ta muốn kết thúc vòng lặp dựa trên một số điều kiện.
Chúng ta sẽ thấy ở đây cách sử dụng câu lệnh break với ba loại vòng lặp khác nhau:
- vòng lặp đơn giản
- Vòng lồng nhau
- vòng lặp vô hạn
Bây giờ chúng ta hãy xem các ví dụ cho từng loại trong số ba loại vòng lặp trên bằng cách sử dụng câu lệnh ngắt.
Phá vỡ với các vòng lặp đơn giản
Hãy xem xét tình huống mà chúng ta muốn tìm kiếm một phần tử trong một mảng. Để thực hiện việc này, hãy sử dụng một vòng lặp để duyệt qua mảng bắt đầu từ chỉ mục đầu tiên và so sánh các phần tử của mảng với khóa đã cho.
Ví dụ:
- C++
// C++ program to illustrate // Linear Search #include <iostream> using namespace std; void findElement( int arr[], int size, int key) { // loop to traverse array and search for key for ( int i = 0; i < size; i++) { if (arr[i] == key) { cout << "Element found at position: " << (i + 1); } } } // Driver program to test above function int main() { int arr[] = { 1, 2, 3, 4, 5, 6 }; int n = 6; // no of elements int key = 3; // key to be searched // Calling function to find the key findElement(arr, n, key); return 0; } |
đầu ra
Phần tử được tìm thấy ở vị trí: 3
Đoạn mã trên chạy tốt không có lỗi. Nhưng đoạn mã trên không hiệu quả. Đoạn mã trên hoàn thành tất cả các lần lặp ngay cả sau khi phần tử được tìm thấy. Giả sử có 1000 phần tử trong mảng và khóa cần tìm nằm ở vị trí thứ nhất, vậy cách tiếp cận trên sẽ thực hiện 999 lần lặp không có mục đích và vô dụng.
Để tránh những lần lặp vô ích này, chúng ta có thể sử dụng câu lệnh break trong chương trình của mình. Khi gặp câu lệnh break, điều khiển từ vòng lặp sẽ quay trở lại ngay sau khi điều kiện được thỏa mãn. Vì vậy, sẽ sử dụng câu lệnh break với điều kiện if để so sánh khóa với các phần tử mảng như hình bên dưới:
Ví dụ:
- C++
// C++ program to illustrate // using break statement // in Linear Search #include <iostream> using namespace std; void findElement( int arr[], int size, int key) { // loop to traverse array and search for key for ( int i = 0; i < size; i++) { if (arr[i] == key) { cout << "Element found at position: " << (i + 1); // using break to terminate loop execution break ; } } } // Driver program to test above function int main() { int arr[] = { 1, 2, 3, 4, 5, 6 }; // no of elements int n = 6; // key to be searched int key = 3; // Calling function to find the key findElement(arr, n, key); return 0; } |
đầu ra
Phần tử được tìm thấy ở vị trí: 3
Phá vỡ với các vòng lặp lồng nhau
Chúng ta cũng có thể sử dụng câu lệnh break khi làm việc với các vòng lặp lồng nhau. Nếu câu lệnh break được sử dụng trong vòng lặp trong cùng. Điều khiển sẽ chỉ xuất hiện từ vòng lặp trong cùng.
Ví dụ:
- C++
// C++ program to illustrate // using break statement // in Nested loops #include <iostream> using namespace std; int main() { // nested for loops with break statement // at inner loop for ( int i = 0; i < 5; i++) { for ( int j = 1; j <= 10; j++) { if (j > 3) break ; else cout << "*" ; } cout << endl; } return 0; } |
đầu ra
*** *** *** *** ***
Trong đoạn mã trên, chúng ta có thể thấy rõ rằng vòng lặp bên trong được lập trình để thực hiện trong 10 lần lặp. Nhưng ngay khi giá trị của j trở nên lớn hơn 3, vòng lặp bên trong ngừng thực thi, điều này hạn chế số lần lặp của vòng lặp bên trong chỉ còn 3 lần lặp. Tuy nhiên, việc lặp lại vòng lặp bên ngoài vẫn không bị ảnh hưởng.
Do đó, break chỉ áp dụng cho vòng lặp mà nó hiện diện.
Đột phá với Vòng lặp vô hạn
Câu lệnh break có thể được đưa vào vòng lặp vô hạn với một điều kiện để kết thúc việc thực hiện vòng lặp vô hạn.
Ví dụ:
- C++
// C++ program to illustrate // using break statement // in Infinite loops #include <iostream> using namespace std; int main() { // loop initialization expression int i = 0; // infinite while loop while (1) { cout << i << " " ; i++; } return 0; } |
Đầu ra:
Hết thời gian thực hiện
Lưu ý : Vui lòng không chạy chương trình trên trong trình biên dịch của bạn vì nó là một vòng lặp vô hạn nên bạn có thể phải thoát khỏi trình biên dịch để kết thúc chương trình.
Trong chương trình trên, điều kiện vòng lặp dựa vào đó vòng lặp kết thúc luôn luôn đúng. Vì vậy, vòng lặp thực hiện vô số lần. Chúng ta có thể sửa lỗi này bằng cách sử dụng câu lệnh break như hình dưới đây:
- C++
// C++ program to illustrate // using break statement // in Infinite loops #include <iostream> using namespace std; int main() { // loop initialization expression int i = 1; // infinite while loop while (1) { if (i > 10) break ; cout << i << " " ; i++; } return 0; } |
đầu ra
1 2 3 4 5 6 7 8 9 10
Đoạn mã trên giới hạn số lần lặp lại là 10. Ngoài ra, dấu ngắt cũng có thể được sử dụng trong các câu lệnh Switch case.