Bài giảng Giới thiệu lập trình - Cấu trúc lựa chọn - Lê Nguyên Khôi
Tóm tắt Bài giảng Giới thiệu lập trình - Cấu trúc lựa chọn - Lê Nguyên Khôi: ...GioLam > 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... } 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 ...&& 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; d...
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
File đính kèm:
- bai_giang_gioi_thieu_lap_trinh_cau_truc_lua_chon_le_nguyen_k.pdf