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