Bài giảng Giới thiệu lập trình: Cấu trúc lựa chọn do TS. Lê Nguyên Khôi biên soạn cung cấp cho người học các kiến thức về biểu thức lô-gic, luồng điều khiển, cấu trúc lựa chọn. Mời các bạn cùng tham khảo nội dung chi tiết.
Trang 1Giới Thiệu Lập Trình Cấu Trúc Lựa Chọn
TS Lê Nguyên KhôiTrường Đại học Công nghệ, ĐHQGHN
Trang 3Biểu Thức Lô-gic
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
Trang 5Phép Toán Lô-gic
Phép Toán Toán Tử Ví Dụ Kết quả
Và && a && b true && true true
Hoặc || a || b false || false false
Trang 6Bảng Lô-gic (Toán Tử Lười)
int a = 0; bool b;
b = (false) && (1/a); cout << b;
b = (true) || (1/a); cout << b;
a b a && b
false false false
false true false
true false false
false false false false true true true false true
Trang 7Độ Ưu Tiên Các Phép Toán
Trang 8Luồng Điều Khiển
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.
Trang 9Cấu Trúc Lựa Chọn Trong C++
if
if … else
switch
Trang 10Cấu Trúc Lựa Chọn if
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
Trang 11}
Trang 12Cấu Trúc Lựa Chọn if … else
Cú pháp :
if ( BiểuThứcLôgic ) {
// thân if
MệnhLệnh;
… … … }
else {
// thân else
MệnhLệnh;
… … …
Trang 13Cấu Trúc Lựa Chọn if … else
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
Trang 14Cấu Trúc Lựa Chọn if … else
Trang 15Cấu Trúc Lựa Chọn if … else
Trang 16Cấu Trúc Lựa Chọn if … else Lồng
Trang 17Cấu Trúc Lựa Chọn if … else Lồng
Trang 18Cấu Trúc Lựa Chọn if … else Lồng
xepHang = 'B';
} else {
… … … }
Sử dụng
{
… … … }
dễ đọc,
dễ gỡ lỗi
Trang 19Cấu Trúc Lựa Chọn if … else Lồng
Lỗi thường xảy ra:
error: ‘else’ without a previous if
Trang 20Cấu Trúc Lựa Chọn if … else Lồng
else của if nào?
Khi x=5, mệnh lệnh nào thực hiện, in ra?
Trang 21Cấu Trúc Lựa Chọn if … else
loại bỏ trường hợp không cần thiết
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;
false false false
false true true
true false true
Trang 22Cấu Trúc Lựa Chọn if … else
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ố
Trang 23Mộ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
if (a = 1) // luôn đúng
if (a = 0) // luôn sai
if (a = b) // tương đương
if ( (a = b) != 0 )
Không ( 0 , 0.0 ) là sai ( false )
Khác không là đúng ( true )
Trang 24dị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)
Trang 25Cấu Trúc Lựa Chọn switch
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)
Trang 26Cấu Trúc Lựa Chọn switch
Cú pháp :
switch ( BiểuThức ) {
… … … }
Ý nghĩ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
Trang 27Cấu Trúc Lựa Chọn switch
Ví dụ:
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";
}
Trang 28Cấu Trúc Lựa Chọn switch
int ngay; std::cin >> ngay;
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";
}
Trang 29Cấu Trúc Lựa Chọn switch
int nam, thang, soNgay;
Trang 30Cấu Trúc Lựa Chọn switch
sử dụng thiết kế menu điều khiển
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";
}
Trang 31Tham Khảo
Đọ c sách:
Chương 3, Lập Trình Cơ Bản C++