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; re­evaluation

ở ạ

ế ướ ặ

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

ứ ể ộ

 re­evaluation 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 main() {

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