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 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 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 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 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 p1
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, g tr c a bi n ế num l n h n 0 hay không. N u đi u ki n th a l nh ơ ế
‘printf()’ đ c th c thi 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’ 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ò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 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 s in giá tr ế ướ ế
sau đó ki m tra đi u ki n. Trong tr ng h p này đi u ki n sai. s thoát kh i vòng l p ườ
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 p3
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 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 1, sau đó s ki m tra đi u ki n. N u đi u ki n đúng, 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 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 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 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 p5