Slide bài giảng Lập trình C++ - Lương Trần Hy Hiến - Cấu trúc điều khiển
Tuần tự(sequence)
Rẽnhánh (branch)
Lặp (loop) (Böhm-Jacopini theorem)
Tóm tắt nội dung Slide bài giảng Lập trình C++ - Lương Trần Hy Hiến - Cấu trúc điều khiển, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Nội dung
Cấu trúc rẽ nhánh
if, switch
Cấu trúc lặp
while, for, do – while
Các từ khóa
break, continue
2
Tuần tự (sequence)
Rẽ nhánh (branch)
Lặp (loop) (Böhm-Jacopini theorem)
3
bool exprT F
4
block 1 block 2
bool expr
block 1
T F-
Dạng thiếu:
if (bool expr) statement;
if (bool expr) { … }
Dạng đủ:
if (bool expr) statement1;
else statement2;
if (bool expr) {…}
else {…}
5
//Tìm số lớn nhất trong 2 số
int a, b, max;
cin >> a >> b;
if (a > b)
max = a;
else
max = b;
cout << ”max = ” << max << endl;
6
//In ra 2 số a,b nhập từ bàn phím sao cho b luôn
mang giá trị lớn nhất
int a, b;
cin >> a >> b;
if (a > b) {
int tmp = a;
a = b;
b = tmp;
}
cout << a << ”, ” << b << endl;
7
Lưu ý
Nếu đặt dấu chấm phẩy (;) ở ngay sau biểu thức
điều kiện thì lệnh S của if xem như “KHÔNG
LÀM GÌ”
if (expr1) statement1;
else if (expr2) statement2;
else if (expr3) statement3;
…
else
statementn;
9
Ví dụ về if-else-if
if ( N< 0 ){
cout << N << " là số âm" << endl;
}
else if ( N > 0 ) {
cout << N << " là số dương " << endl;
}
else {
cout << N << " bằng 0" << endl;
}
Chuyển if, switch, for sang while
if(BTDK)
{
Lệnh;
}
while(BTDK)
{
Lệnh; break;
}
11
if(BTDK1)
Khối Lệnh 1;
else if (BTDK2)
Khối lệnh 2;
else
khối lệnh;
bool flag = true;
while(BTDK1)
12
{
khối lệnh 1; flag = false; break;
}
while(BTDK2)
{
khối lệnh 2; flag = false; break;
}
while(flag){
Khối lệnh; break; }
Yêu cầu: Viết chương trình thực hiện:
1. nhập từ bàn phím số nguyên dương year
2. in ra màn hình Yes nếu là năm nhuận, No
nếu không
13
Dễ nhầm với toán tử gán, kết quả của toán tử
gán cũng có thể đổi thành giá trị logic
if (a = 10) luôn đúng
if (a = 0) luôn sai
if (a = b) tương đương if ( (a=b) > 0)
Đảo thứ tự
if ( 0 == a)
if (10 == a)
14
Cấu trúc switch
Cú pháp:
switch (biểu thức){
case : Lệnh/Khối lệnh 1; break;
case : Lệnh/Khối lệnh 2; break;
case : Lệnh/Khối lệnh 3; break;
…
case : Lệnh/Khối lệnh n; break;
default:
Lệnh/Khối lệnh;
}
15
Ví dụ về switch
char ch; cout> ch;
switch (ch) {
case 'a': case 'A':
case 'e': case 'E':
case 'i': case 'I':
case 'o': case 'O':
case 'u': case 'U':
cout << ch << " là nguyên âm" << endl;
break;
default:
cout << ch << " không phảI nguyên âm" <<
endl;
}
cout << “Nhập vào biểu thức: ";
int a;
int b;
char Operator;
cin >> a>> Operator >> b;
cout << a<< " " << Operator << " " << b
<< " = ";
switch (Operator) {
case '+' : cout << a + b << endl; break;
case '-' : cout << a – b << endl; break;
case '*' : cout << a * b << endl; break;
case '/' : cout << a / b << endl; break;
default: cout << “Không hợp lệ" << endl;
}
Ví dụ khác – switch
//Doan chuong trinh doc so 0..9
switch(so) {
case 0: cout<<“khong”<<endl;
case 1: cout<<“mot"<<endl;
2 h i dlcase : cout<<“ a "<<en ;
case 3: cout<<“ba"<<endl;
case 4: cout<<“bon"<<endl;
case 5: cout<<“nam"<<endl;
case 6: cout<<“sau"<<endl;
case 7: cout<<“bay"<<endl;
case 8: cout<<“tam"<<endl;
case 9: cout<<“chin"<<endl;
}
block block
19
bool exprT
F
bool exprT
F
while (BT điều kiện) lệnh;
while (BT điều kiện) {
…
}
20
int i = 1, n, gt = 1;
cin >> n;
while (i++ < n) gt *= i;
// while (i < n) gt *= ++i;
/* while (i < n) {
i++;
gt *= i;
} */
cout << gt << endl;
21
Lưu ý dấu chấm phẩy ;
Dấu ‘;’ đặt ngay sau biểu thức điều kiện đồng
nghĩa với lệnh S là rỗng.
int j = 5;
while(j > 0);
cout<<"j = “<<j--;
Chương trình bị lặp
không thoát được
Yêu cầu: Viết chơng trình:
1. Nhập vào 2 số nguyên dương m, n
2. In ra ước số chung lớn nhất của 2 số này
23
for (state1; bool expr; expr2)
state2;
int i, gt=1, n;
cin >> n;
for (i=1; i<=n; i++)
gt *= i;
cout << gt << endl;
24
int gt=1, n;
…
for (int i=1; i<=n; i++) gt *= i;
-------------------------------------
int i=1, gt=1, n;
…
for (; i<=n;) gt *= i++;
25
Thường được sử dụng cho lặp với số lần
xác định
Không nhất thiết bước lặp là 1
Trong C/C++, vòng lặp for là sự mở rộng
của while
26
for (state1; bool expr; expr2) state2;
Tương đương với:
{
state1;
while (bool expr) {
state2;
expr2;
}
}
27
Nói thêm về for
Phần lệnh khởi động và lệnh điều khiển có thể
gồm nhiều lệnh đơn giản, các lệnh này cách
nhau bởi dấu phẩy (,)
i t i j kn , , ;
for(i = 0, j = 5, k = -1; i < 10; i++, j++, k--)
Các phần: khởi động, điều kiện lặp, điều
khiển có thể không có lệnh nào.
for(; i < 10; i++, j++, k--)
for(;i < 10;)
for(;;)
Dùng while sẽ
hợp lý hơn
Vòng lặp không kết thúc
do statement;
while (bool expr);
do {
…
} while (bool expr);
29
do{
khối lệnh;
}while (biểu thức điều kiện);
30
khối lệnh;
while(biểu thức điều kiện)
{
khối lệnh;
}
int n;
do {
cout << ”n = ”;
cin >> n;
} while (0 >= n);
31
Chờ nhập phím thích hợp
char TraLoi;
do {
cout << “Có hay không? (c/k): ";
if (cin >> TraLoi)
TraLoi = tolower(Traloi);
else
TraLoi = ‘k';
} while ((TraLoi != ‘c') && (TraLoi
!= ‘k'));
Các vòng lặp chiếm nhiều thời gian thực hiện
chương trình nhất
Cần tối ưu vòng lặp
dùng các phép toán có tốc độ cao
đưa ra khỏi vòng lặp các giá trị có thể tính
toán trước, không thay đổi trong vòng lặp
Kiểm tra về tính dừng
33
break: lệnh nhảy, đến vị trí ngay sau vòng lặp
thoát khỏi vòng lặp
continue: lệnh nhảy, đến vị trí ngay sau câu
lệnh cuối cùng trong vòng lặp
bắt đầu lượt lặp mới
34
//Nhập và In các số lẻ từ bàn phím cho tới nhập
giá trị 0
int n;
while (true) {
cout << ”n = ”;
cin >> n;
if (0 == n) break;
if (0 == n%2) continue;
cout << n << endl;
}
35
Nhập số nguyên dương n từ bàn phím, in ra
màn hình Yes nếu là số nguyên tố, No nếu
không
Nh p các số nguyên t bàn phím, d ng l i khi ậ ừ ừ ạ
gặp số nguyên tố, in ra màn hình tổng số các số
đã nhập
36
Nhập số nguyên dương m, in ra m số Fibonacy
đầu tiên, mỗi số cách nhau một dấu cách
(space)
f(1) = 1, f(2) = 1;
f(i+2) = f(i+1) + f(i) : i >0;
37
Nhập số thực dương a, tính căn bậc 2 của a với
độ chính xác đến 5 chữ số thập phân. Không sử
dụng hàm thư viện.
Ph ng pháp Newton ươ
s(1) = 1;
s(i+1) = ( s(i) + a/s(i) )/2 : i > 0;
38
Thao tác thành thạo với các câu lệnh điều khiển
đã học
Cài đặt hoàn chỉnh các ví dụ trong bài giảng
39
File đính kèm:
Slide bài giảng Lập trình C++ - Lương Trần Hy Hiến - Cấu trúc điều khiển.pdf

