Trong bài này, bạn sẽ được học về câu lệnh goto, cách nó hoạt động và tại sao nó lại cần tránh.
Trong lập trình C++, câu lệnh goto được sử dụng để thay đổi luồng thực thi thông thường của chương trình bằng cách nhảy tới một phần khác của chương trình.
Cú pháp của câu lệnh goto
goto label;
... .. ...
... .. ...
... .. ...
label:
câu_lệnh;
... .. ...
Trong cú pháp trên, label là một định danh. Khi goto label; được phát hiện, quá trình điều khiển của chương trình sẽ nhảy tới label: và thực thi các câu lệnh bên dưới nó.
Ví dụ: Câu lệnh goto
// Chương trình này tính giá trị trung bình của các số nhập vào bởi người dùng.
// Nếu người dùng nhập vào số âm, chương trình sẽ bỏ qua nó và
// tính giá trị trung bình của các số nhập vào trước đó.
# include <iostream>
using namespace std;
int main()
{
float num, average, sum = 0.0;
int i, n;
cout << "Maximum number of inputs: ";
cin >> n;
for(i = 1; i <= n; ++i)
{
cout << "Enter n" << i << ": ";
cin >> num;
if(num < 0.0)
{
// Chương trình chuyển tới thực thi mã nguồn tại jump:
goto jump;
}
sum += num;
}
jump:
average = sum / (i - 1);
cout << "nAverage = " << average;
return 0;
}
Đầu ra
Maximum number of inputs: 10
Enter n1: 2.3 Enter n2: 5.6 Enter n3: -5.6 Average = 3.95 |
Bạn có thể viết bất kỳ chương trình C++ nào mà không cần sử dụng câu lệnh goto và thường thì việc không sử dụng nó được xem là tốt.
Lý do cần tránh sử dụng câu lệnh goto
Câu lệnh goto cho phép nhảy tới bất kỳ phần nào của chương trình, nhưng logic của chương trình sẽ trở nên phức tạp và rối rắm.
Trong lập trình hiện đại, câu lệnh goto được xem là một cấu trúc gây hại và là một trường hợp cần tránh.
Câu lệnh goto có thể được thay thế trong hầu hết các chương trình C++ bằng cách sử dụng câu lệnh break và continue.