VÒNG LẶP VÀ CÁC LỆNH VÒNG LẶP TRONG C (PHẦN 2)
Trong kỳ trước, chúng ta đã cùng khám phá khái niệm vòng lặp trong C cùng 2 trong 3 lệnh vòng lặp. Nào, xem thử lệnh vòng lặp còn lại là gì bạn nhé!
3 lệnh vòng lặp trong C
3. Vòng lặp for trong C
Dưới đây là cú pháp câu lệnh của vòng lặp for:
for (initial value; condition; incrementation or decrementation )
{
statements;
}
Trong đó:
- Giá trị ban đầu của vòng lặp for chỉ được thực hiện một lần.
- Điều kiện là một kiểu dữ liệu Boolean. Nó sẽ kiểm tra và so sánh bộ đếm với một giá trị cố định sau mỗi lần lặp. Và vòng lặp for sẽ trả về khi cho kết quả là False.
- Sự tăng lên/ giảm bớt của bộ đếm bởi một giá trị đã được cài đặt.
Ví dụ minh họa:
#include<stdio.h>
int main()
{
int number;
for(number=1;number<=10;number++) //for loop to print 1-10 numbers
{
printf("%d\n",number); //to print the number
}
return 0;
}
Kết quả trả về:
1
2
3
4
5
6
7
8
9
10
Chương trình trên thực hiện hàm print một chuỗi số từ 1 đến 10 bằng vòng lặp for. Trong đó:
- Khai báo một biến kiểu dữ liệu int data để lưu trữ các giá trị.
- Ở phần khởi tạo, gán giá trị 1 cho biến và chỉ định điều kiện gia tăng.
- Thân vòng lặp có một hàm Print để in các giá trị trên một dòng mới trong bảng điều khiển, Chúng ta có một giá trị được lưu trữ trong số. Sau vòng lặp đầu tiên, giá trị sẽ tăng lên và bằng 2. Lúc này, điều kiện sẽ được kiểm tra lại và vì điều kiện đúng nên vòng lặp sẽ được thực hiện. Vòng lặp này sẽ tiếp tục thực hiện cho đến khi giá trị = 10. Sau chuỗi vòng lặp kết thúc, một chuỗi từ 1-10 sẽ hiện lên trên màn hình.
Một số lưu quan trọng:
- Trong C, vòng lặp for có thể có nhiều biểu thức và được phân tách rằng dấu “,”.
Ví dụ:
for (x = 0, y = num; x < y; i++, y--) {
statements;
}
- Ngoài ra, chúng ta có thể bỏ qua biểu thức giá trị ban đầu, điều kiện và/hoặc gia tăng bằng cách thêm một dấu “ ; ”.
Ví dụ:
int i=0;
int max = 10;
for (; i < max; i++) {
printf("%d\n", i);
}
Các vòng lặp cũng có thể lồng vào nhau. Lúc này, sẽ có một outer loop (vòng lặp ngoài) và một inner loop (vòng lặp trong). Đối với mỗi vòng lặp của outer loop, inner loop sẽ lặp lại toàn bộ chu kỳ của nó.
Ví dụ: dưới đây là ví dụ sử dụng vòng lặp for lồng vào nhau trong C để xuất ra một bảng cửu chương.
#include <stdio.h>
int main() {
int i, j;
int table = 2;
int max = 5;
for (i = 1; i <= table; i++) { // outer loop
for (j = 0; j <= max; j++) { // inner loop
printf("%d x %d = %d\n", i, j, i*j);
}
printf("\n"); /* blank line between tables */
}}
Kết quả trả về:
1 x 0 = 0
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 5 = 5
2 x 0 = 0
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
- Việc lồng các vòng lặp for có thể được thực hiện ở bất kỳ cấp độ nào. Những vòng lặp lồng vào nhau phải được thụt lề để giúp người đọc dễ dàng xem xét.
- Một số phiên bản của C giới hạn việc lồng vòng lặp tối đa 15 vòng. Tuy nhiên, trong một số version khác, số lượng này có thể nhiều hơn.
4. Lệnh Break trong C
Lệnh Break được sử dụng chủ yếu trong câu lệnh chuyển đối (switch statement). Đây còn là một câu lệnh Break khá hữu hiệu khi muốn dừng một vòng lặp ngay tức khắc.
Dưới đây là một ví dụ minh họa sử dụng lệnh Break để dừng vòng lặp while:
#include <stdio.h>
int main () {
int num = 5;
trong khi (num> 0) {
if (num == 3)
phá vỡ;
printf ("% d \ n", num);
num--;
}}
Kết quả trả về:
5
4
5. Lệnh Continue trong C
Nếu lệnh Break cho dừng toàn bộ vòng lặp, lệnh Continue lại chỉ loại bỏ vòng lặp tiếp theo nhưng vẫn giữ cho thuật toán không thoát khỏi vòng lặp.
Ví dụ minh họa:
#include <stdio.h>
int main () {
int nb = 7;
trong khi (nb> 0) {
nb--;
nếu (nb == 5)
tiếp tục;
printf ("% d \ n", nb);
}}
Kết quả trả về:
6
4
3
2
1
Trong trường hợp này, 5 đã bị bỏ qua
Nên lựa chọn vòng lặp nào?
Việc lựa chọn một vòng lặp luôn là một trong những nhiệm vụ khó khăn với lập trình viên. Tuy nhiên, một vài gợi ý dưới đây có thể giúp bạn lựa chọn dễ dàng hơn:
- Phân tích vấn đề và kiểm tra xem nó yêu cầu một vòng lặp được kiểm soát đầu vào hay một vòng lặp được kiểm soát đầu ra?
- Nếu là một vòng lặp được kiểm soát đầu vào, hãy sử dụng vòng lặp while trong C hoặc vòng lặp for.
- Trường hợp yêu cầu sử dụng vòng lặp kiểm soát đầu ra, bạn có thể sử dụng vòng lặp do-while.
New Paragraph