1. Tổng quan về câu lệnh continue
và tầm quan trọng của nó
continue
là gì?
Câu lệnh continue
là một câu lệnh điều khiển trong ngôn ngữ lập trình C, được sử dụng trong các vòng lặp lặp lại. Nó thường được áp dụng trong các vòng lặp như for
, while
và do-while
, cho phép bỏ qua phần còn lại của vòng lặp khi thỏa mãn một điều kiện nhất định và chuyển sang lần lặp tiếp theo. Nhờ đó, bạn có thể tránh các xử lý không cần thiết và viết mã hiệu quả hơn.
Ưu điểm và nhược điểm của câu lệnh continue
Câu lệnh continue
rất hữu ích trong việc điều khiển luồng chương trình, tuy nhiên nếu sử dụng không đúng cách có thể làm giảm khả năng đọc mã. Ví dụ, nếu sử dụng nhiều câu lệnh continue
trong một vòng lặp, chương trình sẽ khó hiểu hơn. Vì vậy, cần sử dụng continue
một cách cẩn thận và hợp lý.
2. Cú pháp cơ bản của câu lệnh continue
Cú pháp cơ bản của continue
Câu lệnh continue
có cú pháp đơn giản như sau:
continue;
Khi thực thi, nó sẽ dừng vòng lặp hiện tại và chuyển sang lần lặp tiếp theo. Nhờ đó, bạn có thể bỏ qua xử lý không cần thiết trong những điều kiện nhất định và viết chương trình hiệu quả hơn.
Sự khác biệt giữa continue
và break
Câu lệnh continue
và break
đều là các câu lệnh điều khiển, nhưng được sử dụng với mục đích khác nhau. continue
bỏ qua phần còn lại của vòng lặp và tiếp tục với lần lặp tiếp theo, trong khi break
sẽ thoát hoàn toàn khỏi vòng lặp. Vì vậy, dùng continue
khi muốn bỏ qua một phần xử lý trong vòng lặp, còn break
dùng để kết thúc vòng lặp luôn.
3. Cách sử dụng cơ bản của continue
Ví dụ sử dụng continue
với vòng lặp for
Khi sử dụng continue
trong vòng lặp for
, nếu một điều kiện nào đó được thỏa mãn, vòng lặp sẽ chuyển sang lần lặp tiếp theo. Ví dụ dưới đây sẽ bỏ qua xử lý khi i
là số chẵn.
#include <stdio.h>
int main() {
for(int i = 0; i < 10; i++) {
if(i % 2 == 0) {
continue; // Bỏ qua khi i là số chẵn
}
printf("%dn", i);
}
return 0;
}
Trong chương trình này, khi i
là số chẵn thì câu lệnh continue
được thực thi và printf
sẽ bị bỏ qua, chỉ các số lẻ mới được in ra.
Ví dụ sử dụng continue
với vòng lặp while
Bạn cũng có thể sử dụng continue
trong vòng lặp while
. Khi continue
được gọi, vòng lặp while
sẽ chuyển sang lần lặp tiếp theo.
#include <stdio.h>
int main() {
int i = 0;
while(i < 10) {
i++;
if(i % 2 == 0) {
continue; // Bỏ qua khi i là số chẵn
}
printf("%dn", i);
}
return 0;
}
Trong ví dụ này, khi i
là số chẵn thì printf
sẽ không được thực thi, chỉ các số lẻ được in ra.
Ví dụ sử dụng continue
với vòng lặp do-while
Bạn cũng có thể sử dụng continue
trong vòng lặp do-while
. Tuy nhiên, do do-while
luôn chạy ít nhất một lần nên hành vi của continue
sẽ hơi khác một chút.
#include <stdio.h>
int main() {
int i = 0;
do {
i++;
if(i % 2 == 0) {
continue; // Bỏ qua khi i là số chẵn
}
printf("%dn", i);
} while(i < 10);
return 0;
}
Trong chương trình này, khi i
là số chẵn, continue
sẽ được thực thi, printf
sẽ bị bỏ qua, và vòng lặp sẽ tiếp tục cho tới khi i
đạt đến 10.

4. Ứng dụng nâng cao của continue
Cách sử dụng continue
trong vòng lặp lồng nhau (nested loop)
Câu lệnh continue
có thể dùng trong vòng lặp lồng nhau. Ví dụ dưới đây sẽ bỏ qua khi j
bằng 2 trong vòng lặp bên trong.
#include <stdio.h>
int main() {
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 5; j++) {
if(j == 2) {
continue; // Bỏ qua khi j bằng 2
}
printf("i:%d, j:%dn", i, j);
}
}
return 0;
}
Chương trình này sẽ bỏ qua j:2
trong kết quả xuất ra, giúp tối ưu hoạt động của chương trình.
Ví dụ bỏ qua xử lý trong vòng lặp khi thỏa điều kiện cụ thể
Câu lệnh continue
rất hữu ích khi muốn bỏ qua xử lý đối với các điều kiện nhất định. Ví dụ dưới đây sẽ bỏ qua giá trị âm trong mảng và chỉ in ra giá trị dương.
#include <stdio.h>
int main() {
int data[10] = {1, -1, 2, -2, 3, -3, 4, -4, 5, -5};
for(int i = 0; i < 10; i++) {
if(data[i] < 0) {
continue; // Bỏ qua giá trị âm
}
printf("%dn", data[i]);
}
return 0;
}
Trong ví dụ này, nếu phần tử của mảng là số âm, continue
sẽ bỏ qua, chỉ xuất ra số dương.
5. Lưu ý và Best Practice khi dùng continue
Lạm dụng continue
có thể làm giảm khả năng đọc mã
continue
rất tiện lợi, nhưng nếu sử dụng quá nhiều sẽ làm mã nguồn khó đọc, đặc biệt là trong vòng lặp lồng nhau. Do đó, chỉ nên dùng continue
khi thực sự cần thiết.
Cách thay thế continue
bằng điều kiện khác
Để thực hiện hành động tương tự mà không dùng continue
, bạn có thể đảo ngược điều kiện với if
. Ví dụ sau đây chỉ in ra khi i
là số lẻ:
#include <stdio.h>
int main() {
for(int i = 0; i < 10; i++) {
if(i % 2 != 0) {
printf("%dn", i);
}
}
return 0;
}
Trong mã này, printf
chỉ chạy khi i
là số lẻ, không cần dùng continue
, giúp mã dễ hiểu hơn.
Best Practice để tránh làm mã phức tạp
Khi dùng continue
, nên chú ý các điểm sau:
- Giữ mã càng đơn giản càng tốt, hạn chế sử dụng
continue
. - Nếu dùng, nên thêm chú thích để giải thích mục đích sử dụng
continue
. - Xem xét các phương pháp thay thế, như kết hợp điều kiện hoặc dùng hàm, để chọn cách phù hợp nhất.
6. Thực hành: Bài tập lập trình với continue
Bài 1: Xuất ra các số từ 1 đến 10, bỏ qua số do người dùng nhập
Viết chương trình xuất ra các số từ 1 đến 10, nhưng bỏ qua số do người dùng nhập vào. Ví dụ, nếu người dùng nhập “3”, kết quả sẽ là “1 2 4 5 6 7 8 9 10”.
#include <stdio.h>
int main() {
int num;
printf("Nhập số cần bỏ qua (1-10): ");
scanf("%d", &num);
for(int i = 1; i <= 10; i++) {
if(i == num) {
continue; // Bỏ qua số đã chọn
}
printf("%d ", i);
}
return 0;
}
Chương trình này sẽ bỏ qua số mà người dùng nhập và xuất ra các số còn lại từ 1 đến 10.
Bài 2: Sử dụng continue
trong vòng lặp lồng nhau
Viết chương trình dùng hai vòng lặp để xuất ra các cặp giá trị i
và j
, nhưng bỏ qua khi j
là 3.
#include <stdio.h>
int main() {
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 5; j++) {
if(j == 3) {
continue; // Bỏ qua khi j bằng 3
}
printf("i:%d, j:%dn", i, j);
}
}
return 0;
}
Trong chương trình này, khi j
là 3, vòng lặp bên trong sẽ bỏ qua và chỉ xử lý các giá trị còn lại.
Bài 3: Xử lý dữ liệu mảng với continue
Viết chương trình xử lý các phần tử của mảng. Nếu phần tử là số âm, hãy bỏ qua và chỉ xử lý số dương.
#include <stdio.h>
int main() {
int data[10] = {1, -1, 2, -2, 3, -3, 4, -4, 5, -5};
for(int i = 0; i < 10; i++) {
if(data[i] < 0) {
continue; // Bỏ qua số âm
}
printf("%dn", data[i]);
}
return 0;
}
Đoạn mã trên sẽ bỏ qua các số âm trong mảng và chỉ in ra các số dương một cách hiệu quả.
7. Tổng kết
Câu lệnh continue
rất hữu ích để bỏ qua xử lý trong vòng lặp khi thỏa mãn một điều kiện cụ thể và chuyển sang lần lặp tiếp theo. Nếu sử dụng hợp lý, bạn có thể tránh các xử lý không cần thiết và tối ưu chương trình. Tuy nhiên, nên hạn chế sử dụng để giữ mã dễ đọc và xem xét các phương pháp thay thế như dùng điều kiện hoặc hàm khi phù hợp.
Điểm chính khi sử dụng hiệu quả câu lệnh continue
- Bỏ qua xử lý không cần thiết tùy theo điều kiện, giúp kiểm soát vòng lặp hiệu quả.
- Tránh lạm dụng để giữ mã nguồn dễ đọc.
- Cân nhắc phương pháp thay thế như dùng điều kiện hoặc hàm để chọn giải pháp tối ưu.
Để nâng cao kiến thức
Để hiểu rõ hơn về continue
, bạn nên tìm hiểu thêm về các câu lệnh điều khiển khác như break
, return
và luyện tập áp dụng trong các chương trình thực tế để cảm nhận rõ hiệu quả của nó.