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

pdf31 trang | Chia sẻ: thucuc2301 | Lượt xem: 658 | Lượt tải: 0download
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:

  • pdfts_le_nguyen_khoibaigiang03_cautrucluachon_9273_2032114.pdf