Vòng lặp
là một đoạn mã lệnh trong chương trình được thực hiện lặp đi lặp lại cho đến
khi thỏa mãn một điều kiện nào đó. Vòng lặp là một khái niệm cơ bản trong lập
trình cấu trúc.
Trong C
có các loại vòng lặp sau:
Vòng lặp for
Vòng lặp while
Vòng lặp do…while
Ta sử dụng
các toán tử quan hệ và toán tử logic trong các biểu thức điều kiện
để điều khiển sự thực hiện của vòng lặp.
Vòng
lặp ‘while’:
Cấu
trúc lặp thứ hai trong C là vòng lặp while. Cú pháp tổng quát như sau:
while (điều_kiện là đúng)
câu_lệnh;
Ở đó,
câu_lệnh có thể là rỗng, hay một lệnh đơn, hay một khối lệnh. Nếu vòng lặp
while chứa một tập các lệnh thì chúng phải được đặt trong cặp ngoặc xoắn {}.
điều_kiện có thể là biểu thức bất kỳ. Vòng lặp sẽ được thực hiện lặp đi
lặp lại khi điều kiện trên là đúng (true). Chương trình sẽ chuyển đến thực
hiện lệnh tiếp sau vòng lặp khi điều kiện trên là sai (false).
Vòng lặp
for có thể được sử dụng khi số lần thực hiện vòng lặp đã được xác định
trước. Khi số lần lặp không biết trước, vòng lặp while có thể được sử dụng.
Ví
dụ:
/* A
simple program using the while loop*/
#include
<stdio.h>
int main()
{
int count = 1;
while (count <= 10) {
printf(“\n
This is iteration %d\n”, count);
count++;
}
printf(“\nThe loop is completed. \n”);
}
Kết quả
của chương trình trên được minh họa như sau:
This is iteration 1
This is iteration 2
This is iteration 3
This is iteration 4
This is iteration 5
This is iteration 6
This is iteration 7
This is iteration 8
This is iteration 9
This is iteration 10
The loop is completed.
Đầu
tiên chương trình gán giá trị của count là 1 ngay trong câu lệnh khai
báo nó. Sau đó chương trình chuyển đến thực hiện lệnh while. Phần biểu
thức điều kiện được kiểm tra. Giá trị hiện tại của count là 1, nhỏ hơn
10. Kết quả kiểm tra điều kiện là đúng (true) nên các lệnh trong thân
vòng lặp while được thực hiện. Các lệnh này được đặt trong cặp dấu ngoặc
nhọn {}. Giá trị của biến count là 2 sau lần lặp đàu tiên. Sau đó biểu
thức điều kiện lại được kiểm tra lần nữa. Quá trình này cứ lặp đi lặp lại cho đến
khi giá trị của count lớn hơn 10. Khi vòng lặp kết thúc, lệnh printf()
thứ hai được thực hiện.
Giống
như vòng lặp for, vòng lặp while kiểm tra điều kiện ngay khi bắt đầu thực hiện
vòng lặp. Do đó các lệnh trong thân vòng lặp sẽ không được thực hiện nếu ngay từ
ban đầu điều kiện đó là sai
Biểu thức
điều kiện trong vòng lặp có thể phức tạp tùy theo yêu cầu của bài toán. Các biến
trong biểu thức điều kiện có thể bị thay đổi giá trị trong thân vòng lặp, nhưng
cuối cùng đièu kiện đó phải sai (false) nếu không vòng lặp sẽ không bao
giờ kết thúc. Sau đây là ví dụ về một vòng lặp while vô hạn.
Ví
dụ:
#include
<stdio.h>
int main()
{
int count = 0;
while (count < 100) {
printf(“This
goes on forever, HELP!!!\n”);
count += 10;
printf(“\t%d”, count);
count -= 10;
printf(“\t%d”, count);
printf(“\Ctrl - C will
help”);
}
}
Ở trên,
count luôn luôn bằng 0, nghĩa là luôn nhỏ hơn 100 và vì vậy biểu thức
luôn luôn trả về giá trị true. Nên vòng lặp không bao giờ kết thúc.
Nếu có
hơn một điều kiện được kiểm tra để kết thúc vòng lặp, vòng lặp sẽ kết thúc khi có ít nhất một điều kiện trong các điều
kiện đó là false. Ví dụ sau sẽ minh họa điều này.
#include
<stdio.h>
int main()
{
int i, j;
i = 0;
j = 10;
while (i < 100 && j > 5) {
...
i++;
j -= 2;
}
...
}
Vòng lặp
này sẽ thực hiện 3 lần, lần lặp thứ nhất j sẽ là 10, lần lặp kế tiếp j
bằng 8 và lần lặp thứ ba j sẽ bằng 6. Khi đó i vẫn nhỏ hơn 100 (i bằng 3), j nhận giá
trị 4 và điều kiện j > 5 trở thành false, vì vậy vòng lặp kết thúc.
Chúng
ta hãy viết một chương trình nhận dữ liệu từ bàn phím và in ra màn hình. Chương
trình kết thúc khi bạn nhấn phím ^Z (Ctrl + Z).
Ví
dụ:
/* ECHO
PROGRAM */
/* A
program to accept input data from the console and print it on the screen */
/* End
of input data is indicated by pressing ‘^Z’*/
#include
<stdio.h>
int main()
{
char ch;
while ((ch = getchar()) != EOF) {
putchar(ch)
}
}
Kết quả
của chương trình trên được minh họa như sau:
Ví dụ một
kết quả thực thi như sau:
Have
Have
a
a
good
good
day
day
^Z
Dữ liệu
người dùng nhập vào được in đậm. Chương trình làm việc như thế nào ? Sau khi nhập
vào một tập hợp các ký tự, nội dung của nó sẽ được in hai lần lên màn hình khi
bạn nhấn <Enter>. Điều này là do các ký tự bạn nhập vào từ bàn
phím được lưu trữ trong bộ đệm bàn phím. Và lệnh putchar() sẽ lấy nó từ
bộ đệm sau khi bạn nhấn phím <Enter>. Chú ý cách thức kết thúc quá
trình nhập dũe liệu bằng tổ hợp phím ^Z, đây là kí tự kết thúc file tront
DOS.
إرسال تعليق