
Bài 10 Vòng l pặ
M c tiêu:ụ
K t thúc bài h c này, b n có th :ế ọ ạ ể
S d ng c u trúc vòng l pử ụ ấ ặ
Vi t m t vài ch ng trình:ế ộ ươ
S d ng vòng l p ‘for’ử ụ ặ
S d ng vòng l p ‘while’ử ụ ặ
S d ng vòng l p ‘do...while’.ử ụ ặ
Các b c trong bài h c này đ c trình bày chi ti t, rõ ràng và c n th n. Đi u này giúp ta hi u rõ vướ ọ ượ ế ẩ ậ ề ể ề
công c l p trình. Th c hi n theo các b c sau th t c n th n.ụ ậ ự ệ ướ ậ ẩ ậ
Ph n I - Trong th i gian 1 gi 30 phút đ u:ầ ờ ờ ầ
10.1 S d ng vòng l p ‘for’:ử ụ ặ
Trong ph n này chúng ta s vi t m t ch ng trình s d ng vòng l p ‘for’. Ch ng trình hi n thầ ẽ ế ộ ươ ử ụ ặ ươ ể ị
các s ch n t 1 đ n 30.ố ẳ ừ ế
Trong ch ng trình, m t bi n ‘s nguyên’, ươ ộ ế ố num, đ c khai báo. Vòng l p ‘for’ đ c s d ng đượ ặ ượ ử ụ ể
hi n th các s ch n đ n 30. Đ i s đ u tiên c a vòng l p ‘for’, kh i t o bi n ể ị ố ẳ ế ố ố ầ ủ ặ ở ạ ế num là 2. Đ i s thố ố ứ
hai c a vòng l p ‘for’, ki m tra giá tr c a bi n có nh h n ho c b ng 30 không. N u đi u ki nủ ặ ể ị ủ ế ỏ ơ ặ ằ ế ề ệ
này th a, l nh trong vòng l p đ c th c hi n. L nh ‘printf()’ đ c s d ng đ hi n th giá tr c aỏ ệ ặ ượ ự ệ ệ ượ ử ụ ể ể ị ị ủ
bi n ếnum.
Trong đ i s th ba, giá tr c a bi n ố ố ứ ị ủ ế num đ c tăng lên 2. Trong C, num +=2 gi ng nh num = numượ ố ư
+ 2. L nh ‘printf’ đ c th c thi khi đ i s th hai v n th a. M t khi giá tr c a bi n tr nên l nệ ượ ự ố ố ứ ẫ ỏ ộ ị ủ ế ở ớ
h n 30, đi u ki n không th a n a và vì v y vòng l p không đ c th c thi. D u ngo c nh n {}ơ ề ệ ỏ ữ ậ ặ ượ ự ấ ặ ọ
không c n thi t khi ch có m t câu l nh hi n di n trong vòng l p, nh ng vi c s d ng c p d uầ ế ỉ ộ ệ ệ ệ ặ ư ệ ử ụ ặ ấ
ngo c {} là m t thói quen l p trình t t.ặ ộ ậ ố
1. T o m t t p tin m i.ạ ộ ậ ớ
2. Nh p vào đo n mã l nh sau đây trong c a s ‘Edit Window’:ậ ạ ệ ủ ổ
#include <stdio.h>
#include <conio.h>
void main()
{
int num;
clrscr();
printf(“The even Numbers from 1 to 30 are \n “);
for (num = 2; num <= 30; num +=2)
printf(“%d\n”, num);
}
3. L u t p tin v i tên ư ậ ớ for.C.
4. Biên d ch t p tin ị ậ for.C.
5. Th c thi ch ng trinh ự ươ for.C .
6. Tr v c a s ‘Edit Window’.ở ề ử ổ
Vòng l pặ1

K T QU :Ế Ả
The even Numbers from 1 to 30 are
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
10.2 S d ng vòng l p ‘while’:ử ụ ặ
Trong ph n này chúng ta s vi t m t ch ng trình s d ng vòng l p ‘while’. Ch ng trình hi n thầ ẽ ế ộ ươ ử ụ ặ ươ ể ị
các s t 10 đ n 0 theo th t đ o ng c.ố ừ ế ứ ự ả ượ
Trong ch ng trình có m t bi n s nguyên ươ ộ ế ố num. Bi n đ c kh i t o.ế ượ ở ạ
Xét dòng mã l nh sau:ệ
while (num >= 0)
{ printf(“\n%d”, num);
num--;
}
L nh ‘while’ ki m tra, giá tr c a bi n ệ ể ị ủ ế num có l n h n 0 hay không. N u đi u ki n th a l nhớ ơ ế ề ệ ỏ ệ
‘printf()’ đ c th c thi và giá tr c a bi n num gi m 1. Trong C, num--làm vi c gi ng nhu num =ượ ự ị ủ ế ả ệ ố
num –1. Vòng l p ‘while’ v n ti p t c khi giá tr c a bi n l n h n 1 ho c b ng 0.ặ ẫ ế ụ ị ủ ế ớ ơ ặ ằ
1. T o m t t p tin m i.ạ ộ ậ ớ
2. Nh p vào đo n mã l nh sau đây trong c a s ‘Edit Window’:ậ ạ ệ ủ ổ
#include <stdio.h>
#include <conio.h>
void main()
{
int num;
clrscr();
num = 10;
printf(“\n Countdown“);
while (num >= 0)
{
printf(“\n%d”, num);
num--;
}
}
2 L p trình c b n Cậ ơ ả

3. L u t p tin v i tên ư ậ ớ while.C.
4. Biên d ch t p tin ị ậ while.C.
5. Th c thi ch ng trinh ự ươ while.C.
6. Tr v c a s ‘Edit Window’.ở ề ử ổ
K T QU :Ế Ả
Countdown
10
9
8
7
6
5
4
3
2
1
0
10.3 S d ng vòng l p ‘do...while’:ử ụ ặ
Trong ph n này chúng ta s vi t m t ch ng trình s d ng vòng l p ‘do...while’. Vòng l p ‘do...ầ ẽ ế ộ ươ ử ụ ặ ặ
while’ khác v i vòng l p ‘while’ là nó th c thi l nh tr c khi đánh giá bi u th c. M t đi u quanớ ặ ự ệ ướ ể ứ ộ ề
tr ng c n ph i nh là, không gi ng nh vòng l p ‘while’, ph n thân c a vòng l p ‘do’ s đ cọ ầ ả ớ ố ư ặ ầ ủ ặ ẽ ượ
th c hi n ít nh t m t l n. B i vì vòng l p ‘while’ đánh giá bi u th c tr c khi th c thi l nh, n uự ệ ấ ộ ầ ở ặ ể ứ ướ ự ệ ế
đi u ki n là sai (0) ngay lúc b t đ u, ph n l nh s không bao gi đ c th c thi.ề ệ ắ ầ ầ ệ ẽ ờ ượ ự
Ch ng trình s nh n vào các s nguyên và hi n th chúng cho đ n khi s 0 đ c nh p vào. Sau đóươ ẽ ậ ố ể ị ế ố ượ ậ
nó s thoát kh i vòng l p ‘do...while’ và in ra các s nguyên đã đ c nh p.ẽ ỏ ặ ố ượ ậ
Ch ng trình khai báo hai bi n ươ ế cnt và cnt1. Bên trong vòng l p ‘do –while’ chúng ta s nh p sặ ẽ ậ ố
b ng cách s d ng mã l nh sau:ằ ử ụ ệ
printf(“\nEnter a Number: “);
scanf(“%d”,&cnt);
L nh bên d i s hi n th s đã nh p.ệ ướ ẽ ể ị ố ậ
printf(“No. is %d”, cnt);
cnt1++ s tăng giá tr bi n ẽ ị ế cnt1 lên 1. Gi s n u chúng ta nh p vào s 0, tr c h t nó s in giá trả ử ế ậ ố ướ ế ẽ ị
và sau đó ki m tra đi u ki n. Trong tr ng h p này đi u ki n là sai. Nó s thoát kh i vòng l p vàể ề ệ ườ ợ ề ệ ẽ ỏ ặ
in giá tr c a bi n ị ủ ế cnt1. Bi n ếcnt1 đ c gi m m t đ n v tr c khi in ra b i vì s nguyên cu i cùngượ ả ộ ơ ị ướ ở ố ố
(0) không đ c đ m.ượ ế
1. T o m t t p tin m i.ạ ộ ậ ớ
2. Nh p vào đo n mã l nh sau đây trong c a s ‘Edit Window’:ậ ạ ệ ủ ổ
#include <stdio.h>
#include <conio.h>
void main()
{
int cnt = 0, num;
Vòng l pặ3

clrscr();
do
{
printf(“\n Enter a Number: “);
scanf(“%d”, &num);
printf(“No. is %d”, num);
cnt++;
} while (num != 0);
printf(“\n The total numbers entered were %d”, --cnt);
}
3. L u t p tin v i tên ư ậ ớ dowhile.C.
4. Biên d ch t p tin ị ậ dowhile.C.
5. Th c thi ch ng trinh ự ươ dowhile.C.
6. Tr v c a s ‘Edit Window’.ở ề ử ổ
K T QU :Ế Ả
Enter a number 11
No is 11
Enter a number 50
No is 50
Enter a number 0
No is 0
The total numbers entered were 2
10.4 S d ng l nh break:ử ụ ệ
L nh break giúp thoát ra kh i vòng l p for, while, do-while hay l nh switch ngay l p t c.ệ ỏ ặ ệ ậ ứ
Ch ng trình sau minh h a các dùng c a l nh ươ ọ ủ ệ break.
Quan sát đo n mã l nh sau:ạ ệ
for (cnt = 1; cnt <= 10; cnt++)
{ if (cnt == 5)
break;
printf(“%d\n”, cnt);
}
Đo n mã l nh trên s d ng m t vòng l p ‘for’ đ in ra các giá tr t 1 đ n 10. Giá tr c a bi n ạ ệ ử ụ ộ ặ ể ị ừ ế ị ủ ế cnt
đ c kh i t o là 1, và sau đó nó s ki m tra đi u ki n. N u đi u ki n là đúng, nó s th c thi cácượ ở ạ ẽ ể ề ệ ế ề ệ ẽ ự
câu l nh bên trong vòng l p.ệ ặ
Trong tr ng h p này, ch ng trình ch in ra 1, 2, 3, 4. Khi giá tr c a bi n ườ ợ ươ ỉ ị ủ ế cnt là 5, đi u ki n ề ệ if trở
nên đúng, và đi u khi n s thoát kh i vòng l p.ề ể ẽ ỏ ặ
1. T o m t t p tin m i.ạ ộ ậ ớ
2. Nh p vào đo n mã l nh sau đây trong c a s ‘Edit Window’:ậ ạ ệ ủ ổ
#include <stdio.h>
#include <conio.h>
void main()
{
4 L p trình c b n Cậ ơ ả

int cnt;
clrscr();
for (cnt = 1; cnt <= 10; cnt ++)
{
if (cnt == 5)
break;
printf(“%d\t”, cnt);
}
}
3. L u t p tin v i tên ư ậ ớ breakex.C.
4. Biên d ch t p tin ị ậ breakex.C.
5. Th c thi ch ng trinh ự ươ breakex.C.
6. Tr v c a s ‘Edit Window’.ở ề ử ổ
K T QU :Ế Ả
1234
10.4 S d ng l nh continue:ử ụ ệ
L nh continue khi đ c dùng trong m t vòng l p while, for, ho c do-while s b qua t t c các câuệ ượ ộ ặ ặ ẽ ỏ ấ ả
l nh phía sau và l n l p k ti p đ c th c thi.ệ ầ ặ ế ế ượ ự
Ch ng trình sau minh h a cách s d ng c a l nh ươ ọ ử ụ ủ ệ continue.
Xem đo n mã l nh sau:ạ ệ
for ( cnt = 1; cnt <=10; cnt++)
{ if (cnt ==5)
continue;
printf(“%d\t”, cnt);
}
Đo n mã l nh s d ng m t vòng l p for đ in ra các giá tr t 1 đ n 10. Giá tr c a bi n ạ ệ ử ụ ộ ặ ể ị ừ ế ị ủ ế cnt đ cượ
kh i t o là 1, sau đó đi u ki n s đ c ki m tra. N u đi u ki n là đúng,các l nh trong vòng l p sở ạ ề ệ ẽ ượ ể ế ề ệ ệ ặ ẽ
đ c th c thi.ượ ự
Trong tr ng h p này, ch ng trình ch in ra các s 1, 2, 3, 4, 6, 7, 8, 9 và 10. Khi giá tr c a bi nườ ợ ươ ỉ ố ị ủ ế
cnt là 5, đi u ki n if tr nên đúng và đi u khi n tr v đ u vòng l p for mà không in ra giá tr 5.ề ệ ở ề ể ở ề ầ ặ ị
1. T o m t t p tin m i.ạ ộ ậ ớ
2. Nh p vào đo n mã l nh sau đây trong c a s ‘Edit Window’:ậ ạ ệ ủ ổ
#include <stdio.h>
#include <conio.h>
void main()
{
int cnt;
clrscr();
for (cnt = 1; cnt <= 10; cnt++)
{
if (cnt == 5)
continue;
Vòng l pặ5

