Vòng l pặ Vòng l pặ
ươ
Ch
ng 6
ụ ụ
ọ ủ ọ ủ M c tiêu c a bài h c M c tiêu c a bài h c
ặ ử ấ
d u ph y ( ặ ồ
ặ
ề ể Tìm hi u v vòng l p ‘for’ trong C ẩ ,) ệ ớ Làm vi c v i toán t ề ể Tìm hi u v các vòng l p l ng nhau ề ể Tìm hi u v vòng l p ‘while’ và ‘do
while’
ệ ệ ớ Làm vi c v i các l nh break và continue ề ể Tìm hi u v hàm exit()
Elementary Programming with C/Session 6/ 2 of 21
ặ ặ Vòng l p là gì? Vòng l p là gì?
ệ
M t đo n mã l nh trong
ự
ế
ề
ệ ặ ộ ỏ
ị
ộ ươ ch ặ ạ l p l ệ ki n xác đ nh đ
ạ ng trình th c hi n l p đi i cho đ n khi m t đi u ượ c th a mãn
Elementary Programming with C/Session 6/ 3 of 21
ể ấ ể ấ
ặ ặ
3 ki u c u trúc vòng l p 3 ki u c u trúc vòng l p
Vòng l pặ for
Vòng l pặ while
Vòng l pặ do….while
Elementary Programming with C/Session 6/ 4 of 21
ặ ặ Vòng l p for Vòng l p for
parameter){
statement
}
Cú pháp: for (initialize counter; conditional test; reevaluation
ở ạ
ế ướ ặ
initialize counter là m t l nh gán đ kh i t o ể ộ ệ ể ủ ề bi n đi u khi n c a vòng l p tr c khi đi vào vòng l pặ ệ ể ỉ conditional test là m t bi u th c quan h đ ch ặ ẽ ế ị đ nh khi nào vòng l p s k t thúc
ứ ể ộ
reevaluation parameter đ nh nghĩa cách th c ề
ứ
Elementary Programming with C/Session 6/ 5 of 21
ị ể ế ặ ỗ
ổ ủ thay đ i c a bi n đi u khi n vòng l p m i khi ặ ượ vòng l p đ ự c th c thi
ặ ặ Vòng l p for (tt.) Vòng l p for (tt.)
ả ượ
c phân
ặ for ph i đ
ầ ủ Ba ph n c a vòng l p ở ấ
ấ
ẩ ;)
ặ
ể Ph n l nh t o nên thân vòng l p có th là ộ ậ
ầ ệ ộ ệ
ộ ệ
ặ
cách b i d u ch m ph y( ạ ơ m t l nh đ n ho c m t l nh ghép (m t t p ề ệ nhi u l nh)
ể
ứ
ự ẫ
ự
ế ụ ượ Vòng l p ặ for ti p t c đ c th c thi khi ể ị ệ ề bi u th c ki m tra đi u ki n v n có giá tr ở ệ ề ng false, ch true. Khi đi u ki n tr thành ệ ệ trình th c hi n l nh theo sau vòng l p
ươ ặ for
Elementary Programming with C/Session 6/ 6 of 21
Ví dụVí dụ
ặ ặ Vòng l p for Vòng l p for
/*This program demonstrates the for loop in a C program*/
#include
int count; printf(“\tThis is a \n”); for(count = 1;count <=6;count++) printf(“\n\t\t nice”); printf(“\n\t\t world. \n”);
Elementary Programming with C/Session 6/ 7 of 21
}
ử ấ ử ấ
Toán t Toán t
ẩ ẩ d u ph y d u ph y
ể ượ ằ c m r ng b ng cách ch a
Vòng l p ặ for có th đ ở ạ
ề ứ ể
ị ặ ả ủ ở ộ ề c a vòng l p for
ứ ị nhi u giá tr kh i t o và nhi u bi u th c tăng tr ặ trong đ c t Cú pháp: exprn1 , exprn2 ;
#include
main()
{
int i, j , max; printf(“Please enter the maximum value \n”); printf(“for which a table can be printed:“); scanf(“%d”, &max); for(i = 0 , j = max ; i <=max ; i++, j--)
printf(”\n%d + %d = %d”,i, j, i + j);
}
Elementary Programming with C/Session 6/ 8 of 21
ồ ồ
ặ ặ
Vòng l p for l ng nhau Vòng l p for l ng nhau
ồ
khi nó có
Các vòng l p for l ng nhau
ặ ư
ạ d ng nh sau
for (i = 1; i
…
for (j = 0; j < = max2; j++){
…
}
…
}
Elementary Programming with C/Session 6/ 9 of 21
ồ
ồ
ặ
ặ
Vòng l p for l ng nhau
Vòng l p for l ng nhau
Ví dụ
#include
main() {
int i, j, k;
i = 0;
printf("Enter no. of rows :");
scanf("%d", &i);
printf("\n");
for (j = 0; j < i ; j++){
printf("\n");
for (k = 0; k <= j; k++) /*inner for loop*/
printf("*");
}
}
Elementary Programming with C/Session 6/ 10 of 21
ặ
ặ
Vòng l p while
Vòng l p while
Cú pháp
while (condition is true)
statement ;
ặ
ệ
i các l nh
ệ
ề
ặ ạ
ứ
ộ
ị
Vòng l p while l p l
ể
trong khi m t bi u th c đi u ki n
mang giá tr True
Elementary Programming with C/Session 6/ 11 of 21
Ví dụ
ặ
ặ
Vòng l p while
Vòng l p while
/*A simple program using the while loop*/
#include
main() {
int count = 1;
while( count <= 10) {
printf(“\n This is iteration
%d\n”,count);
count++;
}
printf(“\n The loop is completed.\n”);
}
Elementary Programming with C/Session 6/ 12 of 21
ặ
ặ
Vòng l p do…while
Vòng l p do…while
do{
statement;
} while (condition);
Cú pháp
ầ ủ
ướ ặ
ệ ượ ề c th c thi tr ứ
c khi bi u th c đi u ki n đ
ệ ị
ặ do while
ế ệ ể và đi u khi n chuy n đ n l nh
Elementary Programming with C/Session 6/ 13 of 21
ệ Trong vòng l p ặ do while ph n thân c a vòng l p
ể
ự
ượ
c
đ
ể
ki m tra
Khi đi u ki n mang giá tr False, vòng l p
ề
ề
ẽ ượ ế
c k t thúc,
s đ
ệ
ấ
xu t hi n ngay sau l nh ể
while
ặ
ặ
Ví dụ
Vòng l p do…while
Vòng l p do…while
#include
main (){
int num1, num2;
num2 = 0;
do {
printf( "\nEnter a number : ");
scanf(“%d”,&num1);
printf( " No. is %d",num1);
num2++;
} while (num1 != 0);
printf ("\nThe total numbers entered were
%d",--num2);
/*num2 is decremented before printing because
count for last integer (0) is not to be considered
*/
}
Elementary Programming with C/Session 6/ 14 of 21
ệ
ệ
ể
ể
ề
ể
ề
ể
Các l nh chuy n đi u khi n
Các l nh chuy n đi u khi n
expression
ượ ử ụ
ể ở ề ừ
ệ
c s d ng đ tr v t
L nh return đ
m t hàmộ
ự
ệ ệ
ể ở ề ị
Th c hi n l nh return đ tr v v trí mà
ạ
t
i đó hàm đ
ượ ọ
c g i
ệ
ể
ộ
ị
ượ
ươ
L nh return có th có m t giá tr đi cùng,
ả ề
ng trình
c tr v cho ch
ị
giá tr này đ
g iọ
Elementary Programming with C/Session 6/ 15 of 21
ệ
ệ
ể
ể
ề
ề
ể
ể
Các l nh chuy n đi u khi n
Các l nh chuy n đi u khi n
(tt.)
(tt.)
label
ế ệ ệ ể ề ể ộ L nh goto chuy n đi u khi n đ n m t câu l nh b t
ấ
ộ ộ ươ ỳ
k khác bên trong cùng m t hàm trong m t ch ng
trình C
ậ ủ ế ề ạ ậ ộ Đi u này th t ra vi ph m đ n qui lu t c a m t ngôn
ữ ậ ấ ng l p trình c u trúc.
ậ ủ ả ộ ươ Chúng làm gi m đ tin c y c a ch ng trình và
Elementary Programming with C/Session 6/ 16 of 21
ươ ả ch ng trình khó b o trì.
ệ
ệ
ề
ề
ể
ể
ể
ể
Các l nh chuy n đi u khi n
Các l nh chuy n đi u khi n
(tt.)
(tt.)
statement
ộ
ể ế
c s d ng đ k t thúc m t
ệ
ệ
L nh break đ
m nh đ
ượ ử ụ
ề case trong câu l nh ệ
ể ượ ử ụ
switch
ể ế
Nó cũng có th đ
c s d ng đ k t thúc
ặ
Khi g p l nh break, vòng l p s k t thúc
ế ệ
ặ ẽ ế
ể
ể
ượ
c chuy n đ n l nh
ặ
ữ
ngang gi a vòng l p
ặ ệ
ề
ngay và đi u khi n đ
ế ế
k ti p bên ngoài vòng l p
Elementary Programming with C/Session 6/ 17 of 21
ệ
ệ
ụ
ụ
L nh break – Ví d
L nh break – Ví d
#include
main (){
int count1, count2;
for(count1 = 1, count2 = 0;
count1 <=100; count1++){
printf("Enter %d count2: ",count1);
scanf("%d", &count2);
if(count2==100) break;
}
}
Elementary Programming with C/Session 6/ 18 of 21
ệ
ệ
ề
ề
ể
ể
ể
ể
Các l nh chuy n đi u khi n
Các l nh chuy n đi u khi n
(tt.)
(tt.)
statement
ể ắ ầ
ự
L nh ệ
continue dùng đ b t đ u th c
ặ
hi n l n l p k ti p c a vòng l p
ệ
ệ ầ ặ
Khi g p l nh
ặ ệ
ể
ế ế ủ
continue, các câu l nh còn
ề
ị ỏ
ặ
i trong thân vòng l p b b qua và đi u
ế ế
ế ầ ặ
ể ượ
c chuy n đ n l n l p k ti p
ạ
l
khi n đ
Elementary Programming with C/Session 6/ 19 of 21
ệ
ệ
ụ
ụ
L nh continue – Ví d
L nh continue – Ví d
#include
main () {
int num;
for(num = 1;num<=100; num++){
if(num % 9 == 0)
continue;
printf("%d\t",num);
}
Elementary Programming with C/Session 6/ 20 of 21
}
ệ
ệ
ề
ề
ể
ể
ể
ể
Các l nh chuy n đi u khi n
Các l nh chuy n đi u khi n
(tt)
(tt)
hàm
ượ ử ụ
ỏ
Hàm exit() đ
ể
c s d ng đ thoát kh i
ươ
ch
ng trình
ử ụ
ẽ ế
ươ
S d ng hàm này s k t thúc ngay ch
ng
ể ượ
ể
ề
ề
trình và đi u khi n đ
ệ
c chuy n v cho h
ề
đi u hành
Elementary Programming with C/Session 6/ 21 of 21
…
for (j = 0; j < = max2; j++){ … } …
}
Elementary Programming with C/Session 6/ 9 of 21
ồ ồ
ặ ặ
Vòng l p for l ng nhau Vòng l p for l ng nhau
Ví dụ
#include
main() {
int i, j, k; i = 0; printf("Enter no. of rows :"); scanf("%d", &i); printf("\n"); for (j = 0; j < i ; j++){
printf("\n"); for (k = 0; k <= j; k++) /*inner for loop*/ printf("*");
}
}
Elementary Programming with C/Session 6/ 10 of 21
ặ ặ Vòng l p while Vòng l p while
Cú pháp
while (condition is true)
statement ;
ặ
ệ
i các l nh ệ ề
ặ ạ ứ
ộ ị
Vòng l p while l p l ể trong khi m t bi u th c đi u ki n mang giá tr True
Elementary Programming with C/Session 6/ 11 of 21
Ví dụ
ặ ặ Vòng l p while Vòng l p while
/*A simple program using the while loop*/
#include
main() {
int count = 1; while( count <= 10) { printf(“\n This is iteration
%d\n”,count);
count++; } printf(“\n The loop is completed.\n”);
}
Elementary Programming with C/Session 6/ 12 of 21
ặ ặ
Vòng l p do…while Vòng l p do…while
do{ statement; } while (condition);
Cú pháp
ầ ủ
ướ ặ ệ ượ ề c th c thi tr ứ c khi bi u th c đi u ki n đ
ệ ị
ặ do while ế ệ ể và đi u khi n chuy n đ n l nh
Elementary Programming with C/Session 6/ 13 of 21
ệ Trong vòng l p ặ do while ph n thân c a vòng l p ể ự ượ c đ ể ki m tra Khi đi u ki n mang giá tr False, vòng l p ề ề ẽ ượ ế c k t thúc, s đ ệ ấ xu t hi n ngay sau l nh ể while
ặ ặ
Ví dụ
Vòng l p do…while Vòng l p do…while
#include
main (){
int num1, num2;
num2 = 0;
do { printf( "\nEnter a number : "); scanf(“%d”,&num1); printf( " No. is %d",num1); num2++; } while (num1 != 0); printf ("\nThe total numbers entered were
%d",--num2);
/*num2 is decremented before printing because count for last integer (0) is not to be considered */
}
Elementary Programming with C/Session 6/ 14 of 21
ệ ệ
ể ể
ề ể ề ể Các l nh chuy n đi u khi n Các l nh chuy n đi u khi n expression
ượ ử ụ
ể ở ề ừ
ệ
c s d ng đ tr v t
L nh return đ m t hàmộ ự
ệ ệ
ể ở ề ị
Th c hi n l nh return đ tr v v trí mà
ạ t
i đó hàm đ
ượ ọ c g i
ệ
ể
ộ
ị
ượ
ươ
L nh return có th có m t giá tr đi cùng, ả ề ng trình
c tr v cho ch
ị giá tr này đ g iọ
Elementary Programming with C/Session 6/ 15 of 21
ệ ệ
ể ể
ề ề
ể ể Các l nh chuy n đi u khi n Các l nh chuy n đi u khi n (tt.) (tt.)
label
ế ệ ệ ể ề ể ộ L nh goto chuy n đi u khi n đ n m t câu l nh b t ấ
ộ ộ ươ ỳ k khác bên trong cùng m t hàm trong m t ch ng
trình C
ậ ủ ế ề ạ ậ ộ Đi u này th t ra vi ph m đ n qui lu t c a m t ngôn
ữ ậ ấ ng l p trình c u trúc.
ậ ủ ả ộ ươ Chúng làm gi m đ tin c y c a ch ng trình và
Elementary Programming with C/Session 6/ 16 of 21
ươ ả ch ng trình khó b o trì.
ệ ệ
ề ề
ể ể
ể ể Các l nh chuy n đi u khi n Các l nh chuy n đi u khi n (tt.) (tt.)
statement
ộ
ể ế c s d ng đ k t thúc m t
ệ ệ
L nh break đ m nh đ
ượ ử ụ ề case trong câu l nh ệ
ể ượ ử ụ
switch ể ế
Nó cũng có th đ
c s d ng đ k t thúc
ặ
Khi g p l nh break, vòng l p s k t thúc ế ệ
ặ ẽ ế ể
ể
ượ c chuy n đ n l nh ặ
ữ ngang gi a vòng l p ặ ệ ề ngay và đi u khi n đ ế ế k ti p bên ngoài vòng l p
Elementary Programming with C/Session 6/ 17 of 21
ệ ệ
ụ ụ
L nh break – Ví d L nh break – Ví d
#include
main (){
int count1, count2; for(count1 = 1, count2 = 0;
count1 <=100; count1++){
printf("Enter %d count2: ",count1); scanf("%d", &count2); if(count2==100) break;
}
}
Elementary Programming with C/Session 6/ 18 of 21
ệ ệ
ề ề
ể ể
ể ể Các l nh chuy n đi u khi n Các l nh chuy n đi u khi n (tt.) (tt.)
statement
ể ắ ầ
ự
L nh ệ
continue dùng đ b t đ u th c
ặ hi n l n l p k ti p c a vòng l p ệ
ệ ầ ặ Khi g p l nh ặ ệ
ể
ế ế ủ continue, các câu l nh còn ề ị ỏ ặ i trong thân vòng l p b b qua và đi u ế ế ế ầ ặ ể ượ c chuy n đ n l n l p k ti p
ạ l khi n đ
Elementary Programming with C/Session 6/ 19 of 21
ệ ệ
ụ ụ
L nh continue – Ví d L nh continue – Ví d
#include
main () {
int num; for(num = 1;num<=100; num++){
if(num % 9 == 0) continue;
printf("%d\t",num);
}
Elementary Programming with C/Session 6/ 20 of 21
}
ệ ệ
ề ề
ể ể
ể ể Các l nh chuy n đi u khi n Các l nh chuy n đi u khi n (tt) (tt)
hàm
ượ ử ụ
ỏ
Hàm exit() đ
ể c s d ng đ thoát kh i
ươ
ch
ng trình
ử ụ
ẽ ế
ươ
S d ng hàm này s k t thúc ngay ch
ng
ể ượ
ể
ề
ề trình và đi u khi n đ
ệ c chuy n v cho h
ề
đi u hành
Elementary Programming with C/Session 6/ 21 of 21