Bài giảng Giới thiệu lập trình - Bài 3: Cấu trúc lựa chọn - Lê Nguyên Khôi
Một Số Lưu Ý
Nhầm lẫn giữa gán (=) và so sánh bằng (==)
Không lỗi khi dịch
Kết quả chạy khác nhau
if (a = 1) // luôn đúng
if (a = 0) // luôn sai
if (a = b) // tương đương
if ( (a = b) != 0 )
Thực hiện phép gán xong rồi kiểm tra điều kiện
Không (0, 0.0) là sai (false)
Khác không là đúng (true)
Giới Thiệu Lập TrìnhMột Số Lưu Ý
Biểu thức lô-gic trong toán học
(0 ≤ tuoi ≤ 150)
Chuyển sang ngôn ngữ lập trình
(0 <= tuoi <= 150)
dịch không lỗi nhưng chạy sai!!!
Biểu thức logic trong ngôn ngữ lập trình
Phải sử dụng các phép toán lô-gic
(0 <= tuoi && tuoi <= 150)
Lỗi thường gặp: biểu thức lô-gic luôn sai/đúng
(0 >= tuoi && tuoi >= 150
31 trang |
Chia sẻ: thucuc2301 | Lượt xem: 658 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Giới thiệu lập trình - Bài 3: Cấu trúc lựa chọn - Lê Nguyên Khôi, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Giới Thiệu Lập Trình
Cấu Trúc Lựa Chọn
TS. Lê Nguyên Khôi
Trường Đại học Công nghệ, ĐHQGHN
Nội Dung
1
Biểu thức lô-gic
Luồng điều khiển
Cấu trúc lựa chọn:
if
if else
switch
Giới Thiệu Lập Trình
Biểu Thức Lô-gic
2
Các phép toán logic
PHỦ ĐỊNH (!), VÀ (&&), HOẶC (||)
Mức độ ưu tiên: && cao hơn ||
Kiểu dữ liệu cơ bản lô-gic bool
đúng (true), sai (false)
Chuyển đổi kiểu dữ liệu:
Không (0, 0.0) là sai (false)
Khác không là đúng (true)
Sai (false) là 0
Đúng (true) là 1
Giới Thiệu Lập Trình
Phép Toán So Sánh
3
Phép Toán Toán Tử Ví Dụ Kết quả
Nhỏ hơn < a < b1 < 2 true
Nhỏ hơn
hoặc bằng <=
a <= b
1 <= 2 true
Lớn hơn > a > b1 > 2 false
Lớn hơn
hoặc bằng >=
a >= b
1 >= 2 false
Bằng == a == b1 == 2 false
Không bằng
(khác) !=
a != b
1 != 2 true
Giới Thiệu Lập Trình
Phép Toán Lô-gic
4
Phép Toán Toán Tử Ví Dụ Kết quả
Và && a && btrue && true true
Hoặc || a || bfalse || false false
Phủ định ! !a!true false
Giới Thiệu Lập Trình
Bảng Lô-gic (Toán Tử Lười)
5
int a = 0; bool b;
b = (false) && (1/a); cout << b;
b = (true) || (1/a); cout << b;
Giới Thiệu Lập Trình
a b a && b
false false false
false true false
true false false
true true true
a b a || b
false false false
false true true
true false true
true true true
Độ Ưu Tiên Các Phép Toán
6
Xác định thứ tự để tính giá trị biểu thức
x + 1 > 2 || x + 1 < -3 tương đương:
(( x + 1 ) > 2) || (( x + 1 ) < -3)
Giới Thiệu Lập Trình
Độ Ưu Tiên Toán Tử
Cao nhất ++, --, !
*, /, %
+, -
, >=
==, !=
&&
||
Thấp nhất =, +=, -=, *=, /=, %=
Luồng Điều Khiển
7
Thứ tự các mệnh lệnh ch.tr. thực hiện
Thứ tự đơn giản: tuần tự
Thực hiện theo thứ tự viết trong mã nguồn
Thứ tự mệnh lệnh phụ thuộc dữ liệu đầu vào
Ví dụ: nhập 2 số nguyên dương thì tính ucln, nếu
không, không tính, in ra thông báo, và dừng ch.tr.
Cần lựa chọn mệnh lệnh nào thực hiện
Điều khiển mã nguồn chạy như thế nào
Giới Thiệu Lập Trình
Cấu Trúc Lựa Chọn Trong C++
8
if
if else
switch
Giới Thiệu Lập Trình
Cấu Trúc Lựa Chọn if
9
Cú pháp:
if (BiểuThứcLôgic)
{
// thân if
MệnhLệnh;
MệnhLệnh;
}
Ý nghĩa: nếu BiểuThứcLôgic đúng (true),
thân if được thực hiện, nếu không, điều khiển
chuyển sang mệnh lệnh tiếp theo ngay sau cấu
trúc if
Giới Thiệu Lập Trình
Cấu Trúc Lựa Chọn if
10
Ví dụ:
Giới Thiệu Lập Trình
double luong = MUC_LUONG_CO_BAN * soGioLam;
if (soGioLam > SO_GIO_LAM_QUY_DINH)
{
int luongTangThem = MUC_LUONG_CO_BAN * 0.5 *
(soGioLam - SO_GIO_LAM_QUY_DINH);
luong = luong + luongTangThem;
}
Cấu Trúc Lựa Chọn if else
11
Cú pháp:
if (BiểuThứcLôgic)
{
// thân if
MệnhLệnh;
}
else
{
// thân else
MệnhLệnh;
}
Giới Thiệu Lập Trình
Cấu Trúc Lựa Chọn if else
12
Cú pháp:
if (BiểuThứcLôgic)
{
// thân if
}
else
{
// thân else
}
Ý nghĩa: nếu BiểuThứcLôgic đúng (true),
thân if được thực hiện, nếu BiểuThứcLôgic
sai (false), thân else được thực hiện
Giới Thiệu Lập Trình
Cấu Trúc Lựa Chọn if else
13
Ví dụ:
Giới Thiệu Lập Trình
bool hocCaiThien;
if (diemSo < 60)
{
hocCaiThien = true;
}
else
{
hocCaiThien = false;
}
Cấu Trúc Lựa Chọn if else
14
Ví dụ:
Giới Thiệu Lập Trình
bool hocCaiThien = false;
if (diemSo < 60)
{
hocCaiThien = true;
}
else
{
hocCaiThien = false;
}
Cấu Trúc Lựa Chọn if else Lồng
15Giới Thiệu Lập Trình
char xepHang = 'F';
if (diemSo >= 80)
xepHang = 'A';
else if (diemSo >= 70)
xepHang = 'B';
else if (diemSo >= 60)
xepHang = 'C';
else if (diemSo >= 50)
xepHang = 'D';
else if (diemSo >= 40)
xepHang = 'E';
Cấu Trúc Lựa Chọn if else Lồng
16Giới Thiệu Lập Trình
char xepHang = 'F';
if (diemSo >= 80)
xepHang = 'A';
else
if (diemSo >= 70)
xepHang = 'B';
else
if (diemSo >= 60)
xepHang = 'C';
else
if (diemSo >= 50)
xepHang = 'D';
else
if (diemSo >= 40)
xepHang = 'E';
Cấu Trúc Lựa Chọn if else Lồng
17Giới Thiệu Lập Trình
char xepHang = 'F';
if (diemSo >= 80)
{
xepHang = 'A';
}
else
{
if (diemSo >= 70)
{
xepHang = 'B';
}
else
{
}
}
Sử dụng
{
}
để mã nguồn
dễ đọc,
dễ gỡ lỗi
Cấu Trúc Lựa Chọn if else Lồng
18
Lỗi thường xảy ra:
error: ‘else’ without a previous if
Giới Thiệu Lập Trình
char xepHang = 'F';
if (diemSo >= 80)
xepHang = 'A';
soDiemA = soDiemA + 1;
else
Cấu Trúc Lựa Chọn if else Lồng
19
else của if nào?
Khi x=5, mệnh lệnh nào thực hiện, in ra?
else của if gần nhất
Giới Thiệu Lập Trình
if (x > 5)
if (y > 5)
std::cout 5";
else
std::cout << "x <= 5";
Cấu Trúc Lựa Chọn if else
loại bỏ trường hợp không cần thiết
20
if (!a && !b) output = false;
else if (!a && b) output = true;
else if (a && !b) output = true;
else if (a && b) output = true;
Phân tích và loại trường hợp không cần thiết
if (!a && !b) output = false;
else output = true;
Giới Thiệu Lập Trình
a b output
false false false
false true true
true false true
true true true
Cấu Trúc Lựa Chọn if else
21
Bài tập (xem mã nguồn)
1. Kiểm tra số nhập vào chẵn hay lẻ
2. Tìm số lớn nhất trong 3 số nhập vào
3. Đoán số
Giới Thiệu Lập Trình
Một Số Lưu Ý
22
Nhầm lẫn giữa gán (=) và so sánh bằng (==)
Không lỗi khi dịch
Kết quả chạy khác nhau
if (a = 1) // luôn đúng
if (a = 0) // luôn sai
if (a = b) // tương đương
if ( (a = b) != 0 )
Thực hiện phép gán xong rồi kiểm tra điều kiện
Không (0, 0.0) là sai (false)
Khác không là đúng (true)
Giới Thiệu Lập Trình
Một Số Lưu Ý
23
Biểu thức lô-gic trong toán học
(0 ≤ tuoi ≤ 150)
Chuyển sang ngôn ngữ lập trình
(0 <= tuoi <= 150)
dịch không lỗi nhưng chạy sai!!!
Biểu thức logic trong ngôn ngữ lập trình
Phải sử dụng các phép toán lô-gic
(0 <= tuoi && tuoi <= 150)
Lỗi thường gặp: biểu thức lô-gic luôn sai/đúng
(0 >= tuoi && tuoi >= 150)
Giới Thiệu Lập Trình
Cấu Trúc Lựa Chọn switch
24
Cú pháp:
switch (BiểuThức)
{
case HằngSố1: CụmMệnhLệnh1; break;
case HằngSố2: CụmMệnhLệnh2; break;
case HằngSố3: CụmMệnhLệnh2; break;
default: CụmMệnhLệnhMặcĐịnh;
}
Lưu ý: kiểu của BiểuThức là kiểu số nguyên
(bool, char, int, short, long)
Giới Thiệu Lập Trình
Cấu Trúc Lựa Chọn switch
25
Cú pháp:
switch (BiểuThức)
{
}
Ý nghĩa:
Mệnh lệnh case được xét từ trên xuống
Giá trị HằngSố của case nào ứng với giá trị của
BiểuThức, CụmMệnhLệnh của case đó thực hiện
Khi gặp break, thì thoát khỏi cấu trúc switch
Thực hiện CụmMệnhLệnhMặcĐịnh nếu không có
case nào tương ứng
Giới Thiệu Lập Trình
Cấu Trúc Lựa Chọn switch
26
Ví dụ:
Giới Thiệu Lập Trình
int ngay; std::cin >> ngay;
switch (ngay)
{
case 2: std::cout << "hoc chieu"; break;
case 3: std::cout << "hoc sang"; break;
case 4: std::cout << "di lam"; break;
case 5: std::cout << "hoc sang va chieu"; break;
case 6: std::cout << "hoc chieu va toi"; break;
case 7: std::cout << "choi the thao"; break;
case 0: std::cout << "di sang nha ban"; break;
default: std::cout << "o nha ngu";
}
Cấu Trúc Lựa Chọn switch
27
Nếu không có break sẽ thực hiện các case tiếp theo
đến khi nào gặp break thì thoát khỏi switch
Giới Thiệu Lập Trình
int ngay; std::cin >> ngay;
switch (ngay)
{
case 2:
case 3:
case 5:
case 6: std::cout << "di hoc"; break;
case 4: std::cout << "di lam"; break;
case 7:
case 0: std::cout << "di choi"; break;
default: std::cout << "o nha ngu";
}
Cấu Trúc Lựa Chọn switch
28Giới Thiệu Lập Trình
int nam, thang, soNgay;
std::cin >> thang;
std::cin >> nam;
switch (thang)
{
case 2:
soNgay = (nam % 4 == 0 &&
(nam % 100 != 0 || nam % 400 == 0)) ?
29 : 28; break;
case 4: case 6: case 9: case 11:
soNgay = 30; break;
default:
soNgay = 31; break;
}
Cấu Trúc Lựa Chọn switch
sử dụng thiết kế menu điều khiển
29Giới Thiệu Lập Trình
switch (comboKFC)
{
case 1: std::cout << "ga popcorn 10k"; break;
case 2: std::cout << "2 canh 1 nuoc 50k"; break;
case 3: std::cout << "2 canh 2 dui 100k"; break;
case 4: std::cout << "A U C E 200k"; break;
default: std::cout << "clean the kitchen";
}
Tham Khảo
30
Đọc sách:
Chương 3, Lập Trình Cơ Bản C++
Giới Thiệu Lập Trình
Các file đính kèm theo tài liệu này:
- ts_le_nguyen_khoibaigiang03_cautrucluachon_9273_2032114.pdf