Tin học đại cương - Bài 5: Các câu lệnh lựa chọn

pdf 21 trang vanle 1540
Bạn đang xem 20 trang mẫu của tài liệu "Tin học đại cương - Bài 5: Các câu lệnh lựa chọn", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdftin_hoc_dai_cuong_bai_5_cac_cau_lenh_lua_chon.pdf

Nội dung text: Tin học đại cương - Bài 5: Các câu lệnh lựa chọn

  1. BÀI 5: CÁC CÂU LỆNH LỰA CHỌN Nguyễn Mạnh Hiển Khoa Công nghệ thông tin hiennm@tlu.edu.vn
  2. Nội dung bài giảng • Câu lệnh if • Câu lệnh if-else • Viết hàm đệ quy • Câu lệnh switch-case
  3. Câu lệnh if: Ví dụ mở đầu #include using namespace std; int main() { int n; cout > n; if (n == 1) cout << "Chuc may man!\n"; // neu n = 1 if (n == 2) cout << "Chuc vui ve!\n"; // neu n = 2 return 0; }
  4. Câu lệnh if • Cú pháp: if (điều-kiện) công-việc • Giải thích: − điều-kiện là một biểu thức lôgic − công-việc là câu lệnh đơn hoặc khối lệnh − Nếu điều-kiện đúng, thực hiện công-việc − Nếu điều-kiện sai, bỏ qua công-việc
  5. công-việc là câu lệnh/khối lệnh • công-việc là một câu lệnh đơn: if (x != 1) y = 1 / (x – 1); • công-việc là một khối lệnh ( đặt giữa cặp dấu { } ): if (x != 1) { y = 1 / (x – 1); cout << y; }
  6. Sự khác nhau khi có/không có cặp dấu { } • Khi có cặp dấu { } double x = 1.2, y = 3.4; if (x < 0) { x = 5.6; y = 7.8; } cout << x << " " << y; // sẽ in ra 1.2 và 3.4 • Khi không có cặp dấu { } double x = 1.2, y = 3.4; if (x < 0) x = 5.6; y = 7.8; cout << x << " " << y; // sẽ in ra 1.2 và 7.8
  7. Kiểm tra tính chẵn lẻ: Dùng hai câu lệnh if #include using namespace std; int main() { int n; cout > n; if (n % 2 == 0) cout << n << " la mot so chan\n"; if (n % 2 != 0) cout << n << " la mot so le\n"; return 0; }
  8. Kiểm tra tính chẵn lẻ: Dùng câu lệnh if-else #include using namespace std; int main() { int n; cout > n; if (n % 2 == 0) cout << n << " la mot so chan\n"; else // nguoc lai cout << n << " la mot so le\n"; return 0; }
  9. Câu lệnh if-else • Cú pháp: if (điều-kiện) công-việc-1 else công-việc-2 • Giải thích: − điều-kiện là một biểu thức lôgic − công-việc-1 và 2 là câu lệnh đơn hoặc khối lệnh − Nếu điều-kiện đúng, thực hiện công-việc-1 − Nếu điều-kiện sai, thực hiện công-việc-2
  10. Giải phương trình bậc nhất ax + b = 0 #include using namespace std; int main() { double a, b, x; cout > a; cout > b; if (a != 0) { x = -b/a; cout << "Phuong trinh co nghiem duy nhat x = " << x << endl; } else if (b == 0) cout << "Phuong trinh nghiem dung voi moi x" << endl; else cout << "Phuong trinh vo nghiem" << endl; return 0; }
  11. Bài tập về câu lệnh if • Bài 1 (về nhà): Giải phương trình bậc hai • Bài 2 (tại lớp): Nhập vào ba số thực và hiển thị số lớn nhất ra màn hình • Bài 3 (tại lớp): − Nhập một đường tròn có tâm O(xo, yo) và bán kính R − Nhập một điểm M(xm, ym) − Kiểm tra xem điểm M nằm trong, nằm trên hay nằm ngoài đường tròn (O, R)?
  12. Hàm đệ quy • Hàm đệ quy là hàm được định nghĩa bằng chính bản thân nó • Ví dụ: dãy Fibonacci được định nghĩa theo kiểu đệ quy F0 = 1 F1 = 1 Fn = Fn-1 + Fn-2 (n > 1) • C++ cho phép viết hàm đệ quy tương tự như vậy
  13. Viết hàm đệ quy tính số Fibonacci #include using namespace std; int fibo(int n) { Hai lời gọi đệ quy if (n > n; int fn = fibo(n); // tinh so thu n trong day Fibonacci cout << "So thu " << n << " trong day Fibonacci la "; cout << fn << endl; return 0; }
  14. Viết hàm đệ quy tính n! #include using namespace std; int giai_thua(int n) { Lời gọi đệ quy if (n > n; int gt = giai_thua(n); // tinh n! cout << n << "! = " << gt << endl; return 0; }
  15. Câu lệnh switch-case: Ví dụ mở đầu #include using namespace std; int main() { int n; cout > n; switch (n) { case 1: cout << "Good morning!"; // nếu n = 1 break; case 2: cout << "Good afternoon!"; // nếu n = 2 break; case 3: cout << "Good evening!"; // nếu n = 3 break; default: cout << "Ban da nhap sai du lieu!"; // nếu n khác 1,2,3 break; } return 0; }
  16. Cú pháp câu lệnh switch-case switch (biểu-thức) { Giải thích: case hằng-1: • Tùy theo giá trị của biểu công-việc-1 thức bằng hằng nào thì công break; việc tương ứng sẽ được case hằng-2: thực hiện, trong khi các công công-việc-2 việc khác sẽ bị bỏ qua break; • Nếu giá trị của biểu thức không bằng bất kỳ hằng nào, default: công việc ngầm định trong công-việc-ngầm-định phần default sẽ được break; thực hiện }
  17. Chú ý thêm về câu lệnh switch-case • biểu-thức phải có giá trị thuộc các kiểu sau: − số nguyên − ký tự − lôgic (biểu-thức kiểu số thực không được phép) • Phần default không bắt buộc phải có • Các câu lệnh break cũng không bắt buộc phải có nhưng phải thận trọng khi bỏ break!
  18. Điều gì xảy ra khi bỏ break? #include using namespace std; int main() { double x = 2.1; int k = 100; cout << "Truoc switch: x = " << x << endl; // x = 2.1 switch (k) { Không có break ở đây nên sau khi thực hiện case 100: xong "x *= 2" sẽ chuyển xuống thực hiện tiếp x *= 2; "x *= 3" thay vì kết thúc câu lệnh switch như case 200: thông thường x *= 3; break; } cout << "Sau switch: x = " << x << endl; // x = 12.6 return 0; }
  19. Tính tổng hoặc hiệu theo yêu cầu #include using namespace std; int main() { double x, y, tong, tich; int n; cout > x >> y; cout > n; switch (n) { case 1: tong = x + y; cout << "Tong = " << tong << endl; break; case 2: tich = x * y; cout << "Tich = " << tich << endl; break; default: cout << "Ban da nhap sai du lieu!" << endl; break; } return 0; }
  20. Tính số ngày trong một tháng int tinh_so_ngay(int thang, int nam) { switch (thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 4: case 6: case 9: case 11: return 30; case 2: if ((nam % 100 != 0 && nam % 4 == 0) || (nam % 100 == 0 && nam % 400 == 0)) return 29; else return 28; } }
  21. Hết bài 5