[Lập trình C từ 0 đến 1] Bài 13. Thoát khỏi vòng lặp bằng break và continue
Bài viết “[Lập trình C từ 0 đến 1] Bài 13. Thoát khỏi vòng lặp bằng break và continue” là bài viết tiếp theo nằm trong series hướng dẫn học lập trình C của tek4.vn.
Độc giả có thể tham khảo các bài viết khác trong series bài viết này tại đây
Bài viết này sẽ cung cấp đến độc giả các cấu trúc vòng lặp cùng break continue, goto và cách sử dụng, ứng dụng trong các bài tập. Trong loạt bài hướng dẫn [Lập trình C từ 0 đến 1], IDE được sử dụng là Code::Blocks
Trong lệnh for còn có thể sử dụng lệnh break và continue:
Khi gặp câu lệnh break bên trong thân của toán tử for, máy sẽ thoát khỏi vòng for ngay lập tức.
Ví dụ
|
||
Kết quả in ra là:
Dem=1; |
Trái với lệnh break là lệnh continue. Câu lệnh continue dùng để bắt đầu một vòng mới của chu trình bên trong nhất chứa nó.
Nói một cách chính xác hơn:
Khi gặp câu lệnh continue bên trong thân của toán tử for, máy sẽ chuyển đến bước khởi đầu lại (bước 4 trong điểm “Sự hoạt động của for“). Một điểm cần lưu ý: Lệnh continue chỉ áp dụng cho các chu trình chứ không áp dụng cho switch.
Ví dụ
|
||
Kết quả in ra là:
Dem=1; Dem=2; Dem=3; Dem=4; Dem=5; |
CHÚ Ý KHI GẶP LỆNH BREAK VÀ CONTINUE TRONG WHILE VÀ DO. WHILE
Ghi chú:
Khi gặp câu lệnh continue bên trong thân của while hoặc do while, máy sẽ chuyển đến xác định giá trị biểu thức víết sau từ khóa while, và sau đó tiến hành kiểm tra điều kiện kết thúc chu trình. Trường hợp gặp câu lệnh break, máy sẽ thoát khỏi vòng while hay do..while ngay lập tức.
Ví dụ:
Ví dụ 1:
|
||
Kết quả in ra là:
Dem=1; |
Ví dụ 2:
|
||
Kết quả
Gia tri cua bien dem =1 Gia tri cua bien dem =2 Gia tri cua bien dem =3 Gia tri cua bien dem =4 Gia tri cua bien dem =5 Ket thuc vong lap. |
Các ví dụ minh họa
Tính tổng các số lẻ từ 1 đến 20 nhưng đến khi nào tổng vượt quá 15 thì dừng lại.
Ở đây chúng ta sẽ cộng tổng các số lẻ, giống như các số chẵn thôi, tuy nhiên khi mà tổng lớn hơn 15 rồi thì chúng ta sẽ dừng lại, không cộng nữa.
123456789101112131415161718192021 #include <stdio.h>int main(){int i;int s = 0;for (i = 1; i <= 20; i = i + 2){if(s <= 15){s = s + i;}}printf("S = %d\n", s);return 0;}
Tuy nhiên nếu bạn để ý, khi s > 15, chúng ta không cộng vào s nhưng vòng lặp for vẫn chạy cho đến khi i > 20. Tức là sẽ chạy tiếp các lần lặp i = 9, 11, 13, 15, 17, 19. Do vậy nó làm lãng phí, thừa thãi và làm chương trình chạy lâu hơn. Vì vậy chúng ta nên ngắt vòng lặp tại thời điểm thực hiện xong lệnh khi i = 7. Để thực hiện việc này có thể dùng break, hoặc goto, nhưng khuyên các bạn nên dùng break vì đơn giản và an toàn.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <stdio.h> int main() { int i; int s = 0; for (i = 1; i <= 20; i = i + 2) { if(s <= 15) { s = s + i; } else { break; } } printf("S = %d\n", s); return 0; } |
Nhập vào n số nguyên, tính tổng các số chẵn đã nhập.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include <stdio.h> int main() { int i, n, x; int s = 0; printf("Enter n = "); scanf("%d", &n); for (i = 1; i <= n; i++) { printf("Enter number %d : ", i); scanf("%d", &x); if(x % 2 != 0) continue; s = s + x; } printf("S = %d\n", s); return 0; } |
Ở ví dụ này, hướng dẫn các bạn cách dùng lệnh continue. Lệnh này không thoát khỏi vòng lặp nhưng lại có tác dụng là quay trở về biểu thức 3 mà không làm các lệnh đằng sau nó. Ở đây nếu x nhập vào không chẵn thì bỏ qua lệnh cộng dồn s mà chạy đến lệnh tăng i ngay.
Bài tập:
- Viết chương trình nhập vào số n và in ra các ước của số n đó.
- Viết chương trình kiểm tra 1 số có là số nguyên tố không? Số nguyên tố là số nguyên dương có duy nhất 2 ước là 1 và chính nó. Ví dụ số 2, 3, 5, …
- Viết chương trình kiểm tra 1 số có là số hoàn hảo không? Số hoàn hảo là số nguyên dương có tổng các ước bằng 2 lần nó. VD số 6 có các ước 1, 2, 3, 6 và tổng 1 + 2 + 3 + 6 = 12 (bằng 2 lần 6).
- Viết chương trình tính S = 1 + 1/2 + 1/3 + … + 1/N
- Viết chương trình tính tổng bình phương các số lẻ từ 1 đến n.
- Viết chương trình tính n! biết n! = 1.2.3.4…n
- Viết chương trình tính số thứ n của dãy fibonaci biết dãy f(n) = f(n-1) + f(n-2), n > 2 và f(1) = 1, f(2) = 1.
- Viết chương trình nhập vào chiều dài, chiều rộng của hình chữ nhật. Vẽ hình chữ nhật dấu sao (*) có kích thước đã nhập.
Chúng ta sẽ kết thúc “[Lập trình C từ 0 đến 1] Bài 11. Vòng lặp for trong C” trong series [Lập trình C từ 0 đến 1] ở đây. Hãy cùng đón xem phần bài tập lèn ruyện sau phần này nhé.
Hãy để lại bình luận và theo dõi series bài viết: “Lập trình C từ 0 đến 1” để tiếp tục cập nhật những thông tin mới nhất.