Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản
Trường Cao đẳng Công nghệ Thông Tin
Khoa Công nghệ Thông Tin
CHƯƠNG 2 CẤU TRÚC ĐIỀU KHIỂN PHẦN 1: CẤU TRÚC ĐIỀU KIỆN và RẼ NHÁNH
GV: ThS. TRẦN NGUYỄN ANH CHI
TpHCM, 02/2011
Câu lệnh điều kiện IF
Câu lệnh IF thiếu (chỉ xét trường hợp ĐÚNG)
Đúng
Biểu thức điều kiện
Lệnh 1
2
Lệnh n
GV: ThS. Trần Nguyễn Anh Chi 1
Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản
Câu lệnh điều kiện IF (tt)
Cú pháp:
if(biểu thức điều kiện)
if(biểu thức điều kiện) {
Ví dụ 1:
}
void main() {
int x, y; cout<<“Nhap gia tri cho x va y“; cin>>x>>y; if(x >= y)
3
cout<<“Gia tri cua x lon hon y“;
}
Câu lệnh điều kiện IF (tt)
Ví dụ 2:
void main() {
int x, y; cout<<“Nhap gia tri cho x va y“; cin>>x>>y; if(x >= y) {
cout<<“Gia tri cua x lon hon y“;
x = x – y;
cout<<“Gia tri x moi: “< 4 } GV: ThS. Trần Nguyễn Anh Chi 2 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản Sai Đúng Biểu thức
điều kiện Lệnh 1’ Lệnh 1 5 Lệnh n’ Lệnh n if(biểu thức điều kiện) if(biểu thức điều kiện)
{ else }
else
{ } 6 GV: ThS. Trần Nguyễn Anh Chi 3 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản void main()
{ int x, y;
cout<<“Nhap gia tri cho x va y“;
cin>>x>>y;
if(x >= y) cout<<“Gia tri cua x lon hon y“; cout<<“Gia tri cua x nho hon y“; 7 } 8 GV: ThS. Trần Nguyễn Anh Chi 4 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản • Không được thêm ; sau điều kiện của if.
• Câu lệnh if có thể lồng nhau và else sẽ tương ứng với if gần nó nhất. Ví dụ: 9 • Nên dùng else để loại trừ trường hợp. 10 GV: ThS. Trần Nguyễn Anh Chi 5 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản 11 case n1: ………
case nk: [default: 12 GV: ThS. Trần Nguyễn Anh Chi 6 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản 13 • ni là các hằng số nguyên hoặc ký tự
• Các giá trị trong mỗi trường hợp phải khác nhau
• switch sẽ nhảy đến case tương ứng và thực hiện đến khi nào gặp break hoặc cuối switch sẽ kết thúc. Ví dụ: 14 7 GV: ThS. Trần Nguyễn Anh Chi Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản 15 Trường Cao đẳng Công nghệ Thông Tin
Khoa Công nghệ Thông Tin GV: ThS. TRẦN NGUYỄN ANH CHI TpHCM, 02/2011 GV: ThS. Trần Nguyễn Anh Chi 8 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản Viết chương trình xuất các số từ 1 đến 10 Sử dụng 10 câu lệnh cout Viết chương trình xuất các số từ 1 đến 1000 Sử dụng 1000 câu lệnh cout !!! Sử dụng cấu trúc lặp để lặp lại một hành động trong khi còn thỏa một điều kiện nào đó. Có 3 câu lệnh lặp: for, while, do… while 17 mỗi lần trên 1 dòng Hello 1 1 buoc 10? Hello 2 2 buoc 10? Hello 3 3 buoc 10? Hello 4 4 buoc 10? Hello 5 5 buoc 10? buoc 10? Hello 6 6 buoc 10? Hello 7 7 buoc 10? Hello 8 8 Hello 9 9 buoc 10? 10 10 Hello buoc 10? 18 11 buoc 10? Biểu thức
khởi đầu Biểu thức
điều kiện Bước
nhảy GV: ThS. Trần Nguyễn Anh Chi 9 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản Khởi gán Sai
(Biểu thức ĐK = 0) Đúng
(Biểu thức ĐK 0) Thực hiện (các) lệnh
trong vòng lặp 19 Tăng/Giảm chỉ số lặp
(bước nhảy) Ví dụ: n = 5 20 GV: ThS. Trần Nguyễn Anh Chi 10 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản Ví dụ: n = 3 21 22 GV: ThS. Trần Nguyễn Anh Chi 11 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản Biểu thức khởi đầu void main()
{ Biểu thức điều kiện int buoc;
buoc = 1;
while(buoc <= 10)
{ cout<<“Hello“< 23 } Bước nhảy } Ví dụ: n = 5 void main()
{ int i;
long s = ;
i = 1;
while(i<=n)
{ s=s*i;
i++; 24 }
cout<<“Tich = “< } GV: ThS. Trần Nguyễn Anh Chi 12 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản Ví dụ 3: Tính tích S(n) = 2*4*…*2n, n>0 Ví dụ: n = 5 void main()
{ int i;
long s = ;
i = ;
while(i=1 i++)
{ s =
i = ;
; 25 }
cout<<“Tich = “< } 26 GV: ThS. Trần Nguyễn Anh Chi 13 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản 27 void main()
{ Biểu thức khởi đầu int buoc;
buoc = 1;
do
{ Bước nhảy cout<<“Hello“< 28 } while(buoc<10); Biểu thức điều kiện } GV: ThS. Trần Nguyễn Anh Chi 14 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản • Câu lệnh DO… WHILE sẽ được thực hiện ít nhất 1 lần void main()
{ int n;
do
{ Thường sử dụng trong trường hợp nhập có kiểm tra. 29 cout<<“Nhap n: ”;
cin>>n; }while (n < 1 || n > 100); } • Đều có thể lặp lại nhiều hành động.
Ví dụ: n = 10; for (int i = 1; i <= n; i++) cout<
int i = 1;
while (i <= n)
{ cout<
int i = 1;
do
{ 30 cout<
GV: ThS. Trần Nguyễn Anh Chi 15 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản • Số lần lặp thường được xác định ngay trong câu lệnh FOR,
trong khi WHILE và DO…WHILE có thể sử dụng điều kiện
khác để thoát. int n = 10;
for (int i = 1; i <= n; i++) …; int i = 1;
while (1)
{ …; } int i = 1;
do
{ 31 …;
} while (1); • FOR, WHILE có thể không thực hiện lần nào.
• DO… WHILE sẽ được thực hiện ít nhất 1 lần. int n = 100;
while (n < 10)
{ } int n = 100;
do
{ 32 cout< GV: ThS. Trần Nguyễn Anh Chi 16 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản • Không được thêm ; ngay sau lệnh FOR, WHILE
Tương đương câu lệnh rỗng.
Ví dụ: for (i = 1 ; i <= 10 ; i++ );
{ cout<
int i = 1;
while(i <= 10);
{ 33 cout<
• Nếu có nhiều thành phần trong từng biểu thức của FOR, thì các thành phần cách nhau bằng dấu , Ví dụ: int i, j;
for (i=1, j=2 ; i+j < 10 ; i++, j+=2) 34 GV: ThS. Trần Nguyễn Anh Chi 17 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản • Nếu có nhiều thành phần trong biểu thức điều kiện của
WHILE và DO…WHILE, thì các điều kiện kết hợp với nhau
bằng phép AND (&&) hoặc phép OR (||) Ví dụ: int i=1, j=1, n = 3, m = 5;
while(i<=n && j 35 cout<
• Có thể có các câu lệnh lặp lồng nhau. Ví dụ: int i, j, n = 3, m = 5;
for (i = 1; i <= n; i++)
{ for (j = 1; j <= m; j++)
{ 36 cout<<(i + j);
cout<<“\n”; } } GV: ThS. Trần Nguyễn Anh Chi 18 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản • Trong câu lệnh FOR có thể không có int i;
for (i = 1 ; i <= 10 ; i++) cout<
37 int i = 1;
for ( ; i <= 10 ; i++) cout<
• Trong câu lệnh lặp có thể không có
Ví dụ: int i;
for (i = 1 ; i <= 10 ; i++ ) cout<
38 cout<
GV: ThS. Trần Nguyễn Anh Chi 19 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản • Trong câu lệnh lặp có thể không có int i;
for (i = 1; i <= 10; i++ ) cout<
39 int i;
for (i = 1; ; i++ )
{ if(i > 10) break; cout<
• Lệnh break làm kết thúc vòng lặp
• Lệnh continue bỏ qua lần lặp hiện tại
Ví dụ: for (i = 1; i <= 10; i++)
{ if (i % 2 == 0)
break; cout<
40 for (i = 1; i <= 10; i++)
{ if (i % 2 == 0) continue; cout<
GV: ThS. Trần Nguyễn Anh Chi 20 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản • Vòng lặp đi xuôi: giá trị bước nhảy tăng dần
• Vòng lặp đi ngược: giá trị bước nhảy giảm dần
Ví dụ: Xuất: int i;
for (i = 1 ; i <= 10 ; i++) cout<
Xuất: 41 int i;
for (i = 10 ; i >= 1 ; i--) cout<
• Câu lệnh lặp có thể bị lặp vô tận (bị loop).
Ví dụ 1: Xuất: Ví dụ 2: cout<
int n = 1;
while (n < 10)
{ cout< 42 Xuất: GV: ThS. Trần Nguyễn Anh Chi 21 Chương 2: Cấu trúc điều khiển Kỹ thuật lập trình cơ bản • Câu lệnh lặp có thể không được thực hiện lần nào, nếu ngay từ lần đầu điều kiện lặp đã không thỏa. Ví dụ: int i, n=0;
for (i = 1 ; i <= n ; i++) cout<
int n = 1;
while (n > 10)
{ 43 cout< GV: ThS. Trần Nguyễn Anh Chi 22}
Câu lệnh điều kiện IF (tt)
Câu lệnh IF đủ (xét trường hợp ĐÚNG và SAI)
Câu lệnh điều kiện IF (tt)
Cú pháp:
Câu lệnh điều kiện IF (tt)
Ví dụ 1:
else
//x < y
Câu lệnh điều kiện IF (tt)
void main()
{
Ví dụ 2:
int x, y;
cout<<“Nhap gia tri cho x va y“;
cin>>x>>y;
if(x >= y)
{
cout<<“Gia tri cua x lon hon y“;
x = x – y;
cout<<“Gia tri x moi: “<
//x < y
}
else
{
cout<<“Gia tri cua y lon hon x“;
y = y – x;
cout<<“Gia tri y moi: “<
}
}
Câu lệnh điều kiện IF (tt)
Một số lưu ý:
if (a != 0)
if (b > 0)
cout<<“a != 0 va b > 0”;
else
cout<<“a != 0 va b <= 0”;
if (a !=0)
{
if (b > 0)
cout<<“a != 0 va b > 0”;
else
cout<<“a != 0 va b <= 0”;
}
Câu lệnh điều kiện IF (tt)
if (delta < 0)
cout<<“PT vo nghiem”;
if (delta == 0)
cout<<“PT co nghiem kep”;
if (delta > 0)
cout<<“PT co 2 nghiem phan biet”;
if (delta < 0)
cout<<“PT vo nghiem”;
else //delta >= 0
{
if (delta == 0)
cout<<“PT co nghiem kep”;
else //delta > 0
cout<<“PT co 2 nghiem phan biet”;
}
Câu lệnh SWITCH
Đ
S
Đ
S
Cú pháp:
Câu lệnh SWITCH (tt)
switch (biểu thức)
Câu lệnh SWITCH (tt)
Ví dụ 1:
void main()
{
int n;
cout<<“Nhap gia tri cho n (1<=n<=3)“;
cin>>n;
switch(n)
{
case 1:
cout<<“Mot”;
break;
case 2:
cout<<“Hai”;
break;
default:
cout<<“Ba”;
}
}
Câu lệnh SWITCH (tt)
Một số lưu ý:
Câu lệnh SWITCH (tt)
switch(n)
{
case 1:
cout<<“Mot”;
case 2:
cout<<“Hai”;
case 3:
cout<<“Ba”;
}
switch(n)
{
case 1:
cout<<“Mot”;
break;
case 2:
cout<<“Hai”;
break;
case 3:
cout<<“Ba”;
}
CHƯƠNG 2
CẤU TRÚC ĐIỀU KHIỂN
PHẦN 2: CẤU TRÚC LẶP
Đặt vấn đề
Ví dụ
Giải pháp
Câu lệnh FOR
Bước
buoc
Đk
Xuất
Cú pháp
for(
void main()
{
int buoc;
for(buoc=1 ; buoc<=10 ; buoc++)
cout<<“Hello“<
}
Câu lệnh FOR (tt)
Sơ đồ
Kiểm tra biểu
thức điều kiện
Câu lệnh FOR (tt)
Ví dụ 2: Tính tổng S(n) = 1+2+3+…+n, n>0
void main()
{
Bước
i
Đk
s
int s=0, i;
cout<<“Nhap n: “;
cin>>n;
for(i=1 ; i<=n ; i++)
s=s+i;
cout<<“Tong = “<
}
Câu lệnh FOR (tt)
Ví dụ 3: Tính tổng S(n)=1+3+…+(2n-1), n>0
void main()
{
Bước
i
Đk
s
int s=0, i;
for(i=1 ; i<=n ; i++)
s=s+i;
cout<<“Tong = “<
}
Câu lệnh WHILE
Cú pháp
}
Ví dụ 1: Xuất câu “Hello!” 10 lần, mỗi lần trên 1 dòng
Câu lệnh WHILE (tt)
Câu lệnh WHILE (tt)
Ví dụ 2: Tính tích S(n) = 1*2*3*…*n, n>0
Bước
i
Đk
s
Câu lệnh WHILE (tt)
Bước
i
Đk
s
Câu lệnh DO…WHILE
Cú pháp
} while(
Câu lệnh DO…WHILE (tt)
Sơ đồ
Khởi gán
Lệnh 1
Tăng/Giảm chỉ
số lặp
Đúng
Sai
Biểu thức
điều kiện
Câu lệnh DO…WHILE (tt)
Ví dụ : Xuất câu “Hello!” 10 lần, mỗi lần trên 1 dòng
Câu lệnh DO…WHILE (tt)
So sánh FOR, WHILE và DO…WHILE
So sánh (tt)
So sánh (tt)
cout<
Một số lưu ý
Một số lưu ý (tt)
cout<<(i + j);
Một số lưu ý (tt)
Một số lưu ý (tt)
Một số lưu ý (tt)
Một số lưu ý (tt)
int i;
for (i = 1 ; i <= 10 ; )
{
Một số lưu ý (tt)
Một số lưu ý (tt)
Một số lưu ý (tt)
Một số lưu ý (tt)
int i;
for (i = 1 ; i <= 10 ; i--)
}
Một số lưu ý (tt)