Bài giảng Tin đại cương - Bài 6: Lựa chọn - Trương Xuân Nam
Tóm tắt Bài giảng Tin đại cương - Bài 6: Lựa chọn - Trương Xuân Nam: ... Có nhiều quan điểm phân loại lệnh lựa chọn Thường chia làm 3 loại: Có làm việc A hay không? Chọn làm 1 trong 2 việc Chọn làm 1 trong nhiều việc Nếu muốn chọn n việc trong số m việc thì sao? Không có câu lệnh cho tình huống này Chia nhỏ thành những câu lệnh đơn giản (thuộc m...0: case 12: ngay = 31; break; case 4: case 6: case 9: case 11: ngay = 30; break; default: ngay = 28; } Trương Xuân Nam - Khoa CNTT 13 Câu lệnh if và if-else Phần 4 Trương Xuân Nam - Khoa CNTT 14 Câu lệnh if Cú pháp: if () { } Quá trình thực hiện: 1. Kiểm tra , nếu sai thì bỏ qua...100; i++) if ((i % 3 == 0) || (i % 7 == 0)) cout << i << endl; Câu lệnh switch Phần 6 Trương Xuân Nam - Khoa CNTT 20 Câu lệnh switch Một số bài toán có quá nhiều lựa chọn: Sử dụng liên tiếp nhiều lệnh if Chương trình dài Dễ nhầm lẫn Ví dụ: Nhập vào chữ số X (từ 0 đến...
TIN ĐẠI CƯƠNG BÀI 6: LỰA CHỌN Nội dung buổi trước Cú pháp vòng lặp FOR, WHILE và DO-WHILE Vòng lặp FOR phù hợp nhất với những loại lặp biết trước số lần (thường sử dụng biến đếm) Vòng lặp WHILE và DO-WHILE thường sử dụng khi biết trước điều kiện kết thúc lặp WHILE kiểm tra điều kiện trước khi lặp DO-WHILE kiểm tra điều kiện sau khi lặp Ngắt vòng lặp bằng lệnh break Kết thúc sớm bước lặp bằng lệnh continue Trương Xuân Nam - Khoa CNTT 2 Nội dung chính 1. Đặt vấn đề 2. Khái niệm câu lệnh lựa chọn 3. Các loại lệnh lựa chọn 4. Câu lệnh if và if-else 5. Kết hợp lựa chọn và vòng lặp 6. Câu lệnh switch 7. Bài tập Trương Xuân Nam - Khoa CNTT 3 Đặt vấn đề Phần 1 Trương Xuân Nam - Khoa CNTT 4 Đặt vấn đề Ba cấu trúc điều khiển cơ bản trong máy tính Tuần tự Đã học trong bài trước nữa Lặp Chương 3 (bài trước) Lựa chọn Chương 4 (bài này) Lựa chọn là một thao tác ra quyết định cơ bản trong cuộc sống Sử dụng chọn làm một trong nhiều việc Sử dụng khi suy diễn logic Trong ngôn ngữ tự nhiên, thường được phát biểu dưới dạng điều kiện: nếu thì (if then ) Trương Xuân Nam - Khoa CNTT 5 Đặt vấn đề Nhiều thuật toán cũng yêu cầu có sự chọn lựa Các hành động xử lý ứng với từng tình huống Kiểm tra điều kiện thực hiện công việc Ví dụ: Kiểm tra xem số nguyên a có là số chẵn không? Giải phương trình bậc 2 (biện luận giá trị Δ) Ngày mai là ngày bao nhiêu? Giá trị nào là lớn nhất trong 3 số a, b, c? Trương Xuân Nam - Khoa CNTT 6 Khái niệm câu lệnh lựa chọn Phần 2 Trương Xuân Nam - Khoa CNTT 7 Khái niệm câu lệnh lựa chọn Khái niệm: câu lệnh trong máy tính cho phép quyết định làm một việc hay không dựa trên một điều kiện cụ thể Mức ngôn ngữ: Nếu a chia hết cho 2 thì a là số chẵn Mức thuật toán: Nếu a chia 2 dư 0 thì in ra là a chẵn Mức lập trình: if ((a%2)==0) { cout << "A là số chẵn"; } Trương Xuân Nam - Khoa CNTT 8 Các loại lệnh lựa chọn Phần 3 Trương Xuân Nam - Khoa CNTT 9 Các loại lệnh lựa chọn Có nhiều quan điểm phân loại lệnh lựa chọn Thường chia làm 3 loại: Có làm việc A hay không? Chọn làm 1 trong 2 việc Chọn làm 1 trong nhiều việc Nếu muốn chọn n việc trong số m việc thì sao? Không có câu lệnh cho tình huống này Chia nhỏ thành những câu lệnh đơn giản (thuộc một trong 3 loại trên) Trương Xuân Nam - Khoa CNTT 10 Ví dụ về “làm việc A hay không” if (delta < 0) { cout << "Phuong trinh vo nghiem." << endl; } if (delta == 0) { cout << "Phuong trinh co nghiem duy nhat:" << endl; cout << " X = " << -b/2/a << endl; } if (delta > 0) { cout << "Phuong trinh co 2 nghiem phan biet:" << endl; cout << " X1 = " << (-b - sqrt(delta))/2/a << endl; cout << " X2 = " << (-b + sqrt(delta))/2/a << endl; } Trương Xuân Nam - Khoa CNTT 11 Ví dụ “chọn 1 trong 2 việc” if ((a*a + b*b) == c*c) { cout << "Tam giac ABC vuong tai C" << endl; } else { cout << "Goc C khong phai goc vuong" << endl; } if (nhietdo < 10) { cout << "Hom nay học sinh duoc nghi hoc!" << endl; } else { cout << "Hom nay học sinh di hoc binh thuong!" << endl; } Trương Xuân Nam - Khoa CNTT 12 Ví dụ “chọn 1 trong nhiều việc” switch (thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: ngay = 31; break; case 4: case 6: case 9: case 11: ngay = 30; break; default: ngay = 28; } Trương Xuân Nam - Khoa CNTT 13 Câu lệnh if và if-else Phần 4 Trương Xuân Nam - Khoa CNTT 14 Câu lệnh if Cú pháp: if () { } Quá trình thực hiện: 1. Kiểm tra , nếu sai thì bỏ qua 2. Thực hiện Chú ý: Khối là một biểu thức logic Nếu chỉ có một lệnh duy nhất thì có thể không cần viết cặp ngoặc nhọn { } Trương Xuân Nam - Khoa CNTT 15 Câu lệnh if-else Cú pháp: if () { } else { } Quá trình thực hiện: 1. Kiểm tra , nếu sai thì xuống bước 3 2. Thực hiện sau đó xuống bước 4 3. Thực hiện Trương Xuân Nam - Khoa CNTT 16 Một số ví dụ đơn giản if ((a * b) < 0) cout << "A & B trái dấu"; if (0 == (a % b)) cout << "A chia hết cho B"; else cout << "A không chia hết cho B"; if (delta == 0) { x = -b/2/a; cout << "Có một nghiệm x = " << x; } Trương Xuân Nam - Khoa CNTT 17 Kết hợp lựa chọn và vòng lặp Phần 5 Trương Xuân Nam - Khoa CNTT 18 Trương Xuân Nam - Khoa CNTT 19 Kết hợp lựa chọn và lặp Vòng lặp và lựa chọn có kết hợp với nhau làm chương trình rất uyển chuyển và mạnh mẽ Ví dụ: in ra màn hình các số dương chia hết cho 3 hoặc 7 nhỏ hơn 100. Cách làm: duyệt các số từ 1 đến 100, in ra nếu nó chia cho 3 hoặc 7 dư 0. Đoạn mã: for (int i = 1; i <= 100; i++) if ((i % 3 == 0) || (i % 7 == 0)) cout << i << endl; Câu lệnh switch Phần 6 Trương Xuân Nam - Khoa CNTT 20 Câu lệnh switch Một số bài toán có quá nhiều lựa chọn: Sử dụng liên tiếp nhiều lệnh if Chương trình dài Dễ nhầm lẫn Ví dụ: Nhập vào chữ số X (từ 0 đến 9), hãy in ra màn hình tên (tiếng Việt) của chữ số đó Nhập số 0: in ra “không” Nhập số 1: in ra “một” Cách làm duy nhất là liệt kê mọi tình huống Trương Xuân Nam - Khoa CNTT 21 Nhập chữ số X và in tên ra // cách chạy chậm hơn: viết ngắn hơn if (x == 0) cout << "Khong"; if (x == 1) cout << "Mot"; if (x == 9) cout << "Chin"; // cách chạy nhanh hơn: viết dài hơn if (x == 0) cout << "Khong"; else if (x == 1) cout << "Mot"; else if (x == 9) cout << "Chin"; Trương Xuân Nam - Khoa CNTT 22 Câu lệnh switch Ngôn ngữ C++ cung cấp cấu trúc lệnh switch để đơn giản hóa trường hợp nhiều lựa chọn Cú pháp: switch () { case : ; break; case : ; break; case : ; break; default: ; } Trương Xuân Nam - Khoa CNTT 23 Nhập chữ số X và in tên ra switch (x) { case 0: cout << “Không”; break; case 1: cout << “Một”; break; case 2: cout << “Hai”; break; case 3: cout << “Ba”; break; case 4: cout << “Bốn”; break; case 5: cout << “Năm”; break; case 6: cout << “Sáu”; break; case 7: cout << “Bảy”; break; case 8: cout << “Tám”; break; case 9: cout << “Chín”; break; default: cout << “X không phải là chữ số”; } Trương Xuân Nam - Khoa CNTT 24 Bài tập Phần 7 Trương Xuân Nam - Khoa CNTT 25 Bài tập 1. Viết hàm TamGiacDeu(a, b, c) trả về true nếu tam giác ABC là tam giác đều và ngược lại. Tương tự hãy việc các hàm TamGiacCan, TamGiacVuong 2. Nhập n và in ra các số chẵn nhỏ hơn n. 3. Nhập a, b và n. In các số nhỏ hơn n và chia a dư b. 4. Nhập a, b và n. In các số nhỏ hơn n chia cho a và b đều dư 1. 5. Viết hàm isPrime(int x) - kiểm tra xem x có là số nguyên tố không? Trương Xuân Nam - Khoa CNTT 26
File đính kèm:
- bai_giang_tin_dai_cuong_bai_6_lua_chon_truong_xuan_nam.pdf