Mục đích
Các câu lệnh điều khiển vòng lặp giúp thay đổi luồng thực thi khi đang lặp. Thông dụng nhất là break để dừng hẳn vòng lặp và continue để bỏ qua phần còn lại của lần lặp hiện tại.
Ví dụ với break
for number in range(1, 10):
if number == 5:
break
print(number)
program BreakDemo;
var
number: Integer;
begin
for number := 1 to 9 do
begin
if number = 5 then Break;
Writeln(number);
end;
end.
#include <stdio.h>
int main(void) {
int number;
for (number = 1; number < 10; number++) {
if (number == 5) {
break;
}
printf("%d\n", number);
}
return 0;
}
#include <iostream>
using namespace std;
int main() {
for (int number = 1; number < 10; number++) {
if (number == 5) {
break;
}
cout << number << endl;
}
return 0;
}
for (int number = 1; number < 10; number++)
{
if (number == 5)
{
break;
}
Console.WriteLine(number);
}
for (let number = 1; number < 10; number++) {
if (number === 5) {
break;
}
console.log(number);
}
for (let number: number = 1; number < 10; number++) {
if (number === 5) {
break;
}
console.log(number);
}
package main
import "fmt"
func main() {
for number := 1; number < 10; number++ {
if number == 5 {
break
}
fmt.Println(number)
}
}
fn main() {
for number in 1..10 {
if number == 5 {
break;
}
println!("{}", number);
}
}
Ví dụ với continue
for number in range(1, 8):
if number % 2 == 0:
continue
print(number)
program ContinueDemo;
var
number: Integer;
begin
for number := 1 to 7 do
begin
if number mod 2 = 0 then Continue;
Writeln(number);
end;
end.
#include <stdio.h>
int main(void) {
int number;
for (number = 1; number < 8; number++) {
if (number % 2 == 0) {
continue;
}
printf("%d\n", number);
}
return 0;
}
#include <iostream>
using namespace std;
int main() {
for (int number = 1; number < 8; number++) {
if (number % 2 == 0) {
continue;
}
cout << number << endl;
}
return 0;
}
for (int number = 1; number < 8; number++)
{
if (number % 2 == 0)
{
continue;
}
Console.WriteLine(number);
}
for (let number = 1; number < 8; number++) {
if (number % 2 === 0) {
continue;
}
console.log(number);
}
for (let number: number = 1; number < 8; number++) {
if (number % 2 === 0) {
continue;
}
console.log(number);
}
package main
import "fmt"
func main() {
for number := 1; number < 8; number++ {
if number%2 == 0 {
continue
}
fmt.Println(number)
}
}
fn main() {
for number in 1..8 {
if number % 2 == 0 {
continue;
}
println!("{}", number);
}
}
Ghi chú theo ngôn ngữ
Free Pascal hỗ trợ Break và Continue như các thủ tục có sẵn. Lưu ý viết hoa chữ đầu theo phong cách Pascal, dù phiên bản nhỏ thường không phân biệt hoa thường.
Python còn có mệnh đề else đi kèm vòng lặp để xử lý khi vòng lặp kết thúc tự nhiên mà không gặp break.
C dùng break để thoát khỏi vòng lặp gần nhất (không phải tất cả vòng lặp lồng nhau). continue bỏ qua phần còn lại của bước lặp hiện tại và tiếp tục kiểm tra điều kiện.
C++ dùng break và continue giống hệt C. Trong các vòng lặp lồng nhau nhiều tầng, break chỉ thoát một tầng — cần kết hợp với cờ (flag) hoặc goto để thoát ra nhiều tầng cùng lúc (hiếm dùng).
C# dùng break và continue như C/C++. break trong switch-case cũng dùng tương tự. C# không có labelled break như Java; mánh lego thường dùng là bọ trong hàm riêng.
JavaScript hỗ trợ break và continue có nhãn (labeled): outerLoop: for (...) { for (...) { break outerLoop; } }. Đây là cách thoát vòng lặp ngoài từ bên trong.
TypeScript kế thừa labelled break/continue của JavaScript. Trong code TypeScript hiện đại, các phương pháp này hiếm khi cần nếu chương trình được tổ chức tốt.
Go hỗ trợ labelled break và continue tương tự JavaScript. Cú pháp: outerLoop: đặt trước vòng lặp, sau đó break outerLoop thoát ra khỏi đúng vòng lặp đó.
Rust dùng break và continue. Vòng lặp có thể đặt nhãn: 'outer: loop { ... break 'outer; }. break có thể trả về giá trị: let result = loop { ... break value; }.
Kết luận
break và continue giúp mã ngắn gọn hơn trong một số bài toán, nhưng lạm dụng chúng có thể làm luồng điều khiển khó theo dõi. Chỉ nên dùng khi thật sự làm cho ý nghĩa chương trình rõ hơn.
Bình luận