Trường Đại học Sư phạm
Khoa Tin	
  học
Bài giảng 03
Các câu lệnh điều khiển chương trình
Nội dung
• Cấu trúc tuần tự
• Cấu trúc điều kiện (quyết định)
• Cấu trúc lặp
• Ngắt vòng lặp – break
• Kết thúc chương trình
• Vòng lặp lồng nhau
• Một số lưu ý	
  về các cấu trúc
2014 Nguyễn	
  Thanh	
  Tuấn 2
Cấu trúc tuần tự
2014 Nguyễn	
  Thanh	
  Tuấn 3
• Chương trình là một dãy các câu lệnh
• Các câu lệnh được thực thi tuần từ theo thứ
tự được viết.
Cấu trúc điều kiện (quyết định)
2014 Nguyễn	
  Thanh	
  Tuấn 4
• Các cấu trúc điều kiện:	
   if-­‐then, if-­‐then-­‐
else, nested-­‐if (if-­‐elseif-­‐elseif-­‐...-­‐else), switch-­‐
case,	
  và biểu thức điều kiện.
Cấu trúc điều kiện (quyết định)
2014 Nguyễn	
  Thanh	
  Tuấn 5
Cú pháp Ví dụ
//	
  if-­‐then
if	
  (	
  booleanExpression )	
  {
true-­‐block	
  ;
}
if	
  (mark	
  >=	
  50)	
  {
printf("Congratulation!n");
printf("Keep	
   it	
  up!n");
}
Cấu trúc điều kiện (quyết định)
2014 Nguyễn	
  Thanh	
  Tuấn 6
Cú pháp Ví dụ
//  if-­‐then-­‐else
if  (  booleanExpression )  {
true-­‐block ;
}  else  {
false-­‐block ;
}
if  (mark  >=  50)  {
printf("Congratulation!n");
printf("Keep  it  up!n");
}  else  {
printf("Try  Harder!n");
}
Cấu trúc điều kiện (quyết định)
2014 Nguyễn	
  Thanh	
  Tuấn 7
Cú pháp Ví dụ
//  nested-­‐if
if  (  booleanExpr-­‐1 )  {
block-­‐1 ;
}  else  if  (  booleanExpr-­‐2 )  {
block-­‐2 ;
}  else  if  (  booleanExpr-­‐3 )  {
block-­‐3 ;
}  else  if  (  booleanExpr-­‐4 )  {
......
}  else  {
elseBlock ;
}
if  (mark  >=  80)  {
printf("An");
}  else  if  (mark  >=  70)  {
printf("Bn");
}  else  if  (mark  >=  60)  {
printf("Cn");
}  else  if  (mark  >=  50)  {
printf("Dn");
}  else  {
printf("Fn");
}
Cấu trúc điều kiện (quyết định)
2014 Nguyễn	
  Thanh	
  Tuấn 8
Cú pháp Ví dụ
//  switch-­‐case
switch  (  selector  )  {
case  value-­‐1:
block-­‐1;  break;
case  value-­‐2:
block-­‐2;  break;
case  value-­‐3:
block-­‐3;  break;
......
case  value-­‐n:
block-­‐n;  break;
default:
default-­‐block;
}
char  oper;  int num1,  num2,  result;
......
switch  (oper)  {
case  '+':  
result  =  num1  +  num2;  break;
case  '-­‐':  
result  =  num1  -­‐ num2;  break;
case  '*':  
result  =  num1  *  num2;  break;
case  '/':  
result  =  num1  /  num2;  break;
default:
printf("Unknown  operatorn");
}
Cấu trúc điều kiện (quyết định)
2014 Nguyễn	
  Thanh	
  Tuấn 9
• Toán tử điều kiện
Cú pháp booleanExpr ?  trueExpr :  falseExpr
Ví dụ
printf("%sn",  (mark  >=  50)  ?  "PASS"  :  "FAIL");
//  in  "PASS"  hoặc "FAIL"
max  =  (a  >  b)  ?  a  :  b;      //  vế trái là a  hoặc b
abs  =  (a  >  0)  ?  a  :  -­‐a;    // vế phải là a  hoặc -­‐a
Cấu trúc điều kiện (quyết định)
• Ngoặc:	
  Ta	
  có thể bỏ ngoặc nếu chỉ có một lệnh
nằm trong khối lệnh.
2014 Nguyễn	
  Thanh	
  Tuấn 10
if  (mark  >=  50)  
printf("PASSn");      //  Có thể bỏ ngoặc nếu chỉ có một lệnh
else  {                                  //  Nhiều hơn một dòng lệnh,  cần có {  }
printf("FAILn");
printf("Try  Harder!n");
}
Cấu trúc lặp
2014 Nguyễn	
  Thanh	
  Tuấn 11
Cú pháp Ví dụ
//  for-­‐loop
for  (init; test;
post-­‐proc)  {
body ;
}
//  Sum  from  1  to  1000
int sum  =  0,  number;
for  (number  =  1;  number  <=  1000;  ++number)  {
sum  +=  number;
}
Cấu trúc lặp
2014 Nguyễn	
  Thanh	
  Tuấn 12
Cú pháp Ví dụ
//  while-­‐do
while  ( condition )  {
body ;
}
int sum  =  0,  number  =  1;
while  (number  <=  1000)  {
sum  +=  number;
++number;
}
Cấu trúc lặp
2014 Nguyễn	
  Thanh	
  Tuấn 13
Cú pháp Ví dụ
//  do-­‐while
do  {
body ;
}
while  ( condition )  ;
int sum  =  0,  number  =  1;
do  {
sum  +=  number;
++number;
}  while  (number  <=  1000);
Ngắt vòng lặp – break,	
  continue
• Lệnh break:	
  ngắt và thoát khỏi vòng lặp hiện
tại.
• Lệnh continue:	
  bỏ qua	
  vòng hiện tại và tiếp
tục ở	
  vòng mới.
• Chỉ sử dụng khi thật sự cần thiết,	
  có thể viết
chương trình mà không cần những lệnh này.
2014 Nguyễn	
  Thanh	
  Tuấn 14
Kết thúc chương trình
• Một số cách kết thúc chương trình:
– exit():	
  sử dụng hàm exit(int exitCode)	
  trong
<stdlib.h>	
  để kết thúc chương trình và quay	
  lại hệ
điều hành.
– Sử dụng exit(-­‐1)	
  nếu kết thúc không bình thường
– abort():	
  giống exit(-­‐1)
– return:	
  sử dụng trong hàm main().
2014 Nguyễn	
  Thanh	
  Tuấn 15
Vòng lặp lồng nhau
2014 Nguyễn	
  Thanh	
  Tuấn 16
Một số lưu ý	
  về các cấu trúc
• Phạm	
  vi	
  của else:	
  
• Vòng lặp vô hạn:
– while(1)	
  {	
  …	
  }
2014 Nguyễn	
  Thanh	
  Tuấn 17
if	
  (i ==	
  0)
if	
  (j	
  ==	
  0)
printf("i and	
  j	
  are	
  zeron");
else	
  printf("i is	
  not	
  zeron");

Baigiang03 cac cau lenh dieu khien

  • 1.
    Trường Đại họcSư phạm Khoa Tin  học Bài giảng 03 Các câu lệnh điều khiển chương trình
  • 2.
    Nội dung • Cấutrúc tuần tự • Cấu trúc điều kiện (quyết định) • Cấu trúc lặp • Ngắt vòng lặp – break • Kết thúc chương trình • Vòng lặp lồng nhau • Một số lưu ý  về các cấu trúc 2014 Nguyễn  Thanh  Tuấn 2
  • 3.
    Cấu trúc tuầntự 2014 Nguyễn  Thanh  Tuấn 3 • Chương trình là một dãy các câu lệnh • Các câu lệnh được thực thi tuần từ theo thứ tự được viết.
  • 4.
    Cấu trúc điềukiện (quyết định) 2014 Nguyễn  Thanh  Tuấn 4 • Các cấu trúc điều kiện:   if-­‐then, if-­‐then-­‐ else, nested-­‐if (if-­‐elseif-­‐elseif-­‐...-­‐else), switch-­‐ case,  và biểu thức điều kiện.
  • 5.
    Cấu trúc điềukiện (quyết định) 2014 Nguyễn  Thanh  Tuấn 5 Cú pháp Ví dụ //  if-­‐then if  (  booleanExpression )  { true-­‐block  ; } if  (mark  >=  50)  { printf("Congratulation!n"); printf("Keep   it  up!n"); }
  • 6.
    Cấu trúc điềukiện (quyết định) 2014 Nguyễn  Thanh  Tuấn 6 Cú pháp Ví dụ //  if-­‐then-­‐else if  (  booleanExpression )  { true-­‐block ; }  else  { false-­‐block ; } if  (mark  >=  50)  { printf("Congratulation!n"); printf("Keep  it  up!n"); }  else  { printf("Try  Harder!n"); }
  • 7.
    Cấu trúc điềukiện (quyết định) 2014 Nguyễn  Thanh  Tuấn 7 Cú pháp Ví dụ //  nested-­‐if if  (  booleanExpr-­‐1 )  { block-­‐1 ; }  else  if  (  booleanExpr-­‐2 )  { block-­‐2 ; }  else  if  (  booleanExpr-­‐3 )  { block-­‐3 ; }  else  if  (  booleanExpr-­‐4 )  { ...... }  else  { elseBlock ; } if  (mark  >=  80)  { printf("An"); }  else  if  (mark  >=  70)  { printf("Bn"); }  else  if  (mark  >=  60)  { printf("Cn"); }  else  if  (mark  >=  50)  { printf("Dn"); }  else  { printf("Fn"); }
  • 8.
    Cấu trúc điềukiện (quyết định) 2014 Nguyễn  Thanh  Tuấn 8 Cú pháp Ví dụ //  switch-­‐case switch  (  selector  )  { case  value-­‐1: block-­‐1;  break; case  value-­‐2: block-­‐2;  break; case  value-­‐3: block-­‐3;  break; ...... case  value-­‐n: block-­‐n;  break; default: default-­‐block; } char  oper;  int num1,  num2,  result; ...... switch  (oper)  { case  '+':   result  =  num1  +  num2;  break; case  '-­‐':   result  =  num1  -­‐ num2;  break; case  '*':   result  =  num1  *  num2;  break; case  '/':   result  =  num1  /  num2;  break; default: printf("Unknown  operatorn"); }
  • 9.
    Cấu trúc điềukiện (quyết định) 2014 Nguyễn  Thanh  Tuấn 9 • Toán tử điều kiện Cú pháp booleanExpr ?  trueExpr :  falseExpr Ví dụ printf("%sn",  (mark  >=  50)  ?  "PASS"  :  "FAIL"); //  in  "PASS"  hoặc "FAIL" max  =  (a  >  b)  ?  a  :  b;      //  vế trái là a  hoặc b abs  =  (a  >  0)  ?  a  :  -­‐a;    // vế phải là a  hoặc -­‐a
  • 10.
    Cấu trúc điềukiện (quyết định) • Ngoặc:  Ta  có thể bỏ ngoặc nếu chỉ có một lệnh nằm trong khối lệnh. 2014 Nguyễn  Thanh  Tuấn 10 if  (mark  >=  50)   printf("PASSn");      //  Có thể bỏ ngoặc nếu chỉ có một lệnh else  {                                  //  Nhiều hơn một dòng lệnh,  cần có {  } printf("FAILn"); printf("Try  Harder!n"); }
  • 11.
    Cấu trúc lặp 2014Nguyễn  Thanh  Tuấn 11 Cú pháp Ví dụ //  for-­‐loop for  (init; test; post-­‐proc)  { body ; } //  Sum  from  1  to  1000 int sum  =  0,  number; for  (number  =  1;  number  <=  1000;  ++number)  { sum  +=  number; }
  • 12.
    Cấu trúc lặp 2014Nguyễn  Thanh  Tuấn 12 Cú pháp Ví dụ //  while-­‐do while  ( condition )  { body ; } int sum  =  0,  number  =  1; while  (number  <=  1000)  { sum  +=  number; ++number; }
  • 13.
    Cấu trúc lặp 2014Nguyễn  Thanh  Tuấn 13 Cú pháp Ví dụ //  do-­‐while do  { body ; } while  ( condition )  ; int sum  =  0,  number  =  1; do  { sum  +=  number; ++number; }  while  (number  <=  1000);
  • 14.
    Ngắt vòng lặp– break,  continue • Lệnh break:  ngắt và thoát khỏi vòng lặp hiện tại. • Lệnh continue:  bỏ qua  vòng hiện tại và tiếp tục ở  vòng mới. • Chỉ sử dụng khi thật sự cần thiết,  có thể viết chương trình mà không cần những lệnh này. 2014 Nguyễn  Thanh  Tuấn 14
  • 15.
    Kết thúc chươngtrình • Một số cách kết thúc chương trình: – exit():  sử dụng hàm exit(int exitCode)  trong <stdlib.h>  để kết thúc chương trình và quay  lại hệ điều hành. – Sử dụng exit(-­‐1)  nếu kết thúc không bình thường – abort():  giống exit(-­‐1) – return:  sử dụng trong hàm main(). 2014 Nguyễn  Thanh  Tuấn 15
  • 16.
    Vòng lặp lồngnhau 2014 Nguyễn  Thanh  Tuấn 16
  • 17.
    Một số lưuý  về các cấu trúc • Phạm  vi  của else:   • Vòng lặp vô hạn: – while(1)  {  …  } 2014 Nguyễn  Thanh  Tuấn 17 if  (i ==  0) if  (j  ==  0) printf("i and  j  are  zeron"); else  printf("i is  not  zeron");