Bài giảng Kỹ thuật lập trình - Tuần 2: Điều khiển chọn

pdf 22 trang phuongnguyen 3300
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật lập trình - Tuần 2: Điều khiển 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:

  • pdfbai_giang_ky_thuat_lap_trinh_tuan_2_dieu_khien_chon.pdf

Nội dung text: Bài giảng Kỹ thuật lập trình - Tuần 2: Điều khiển chọn

  1. 24/08/2016 Kỹ thuật lập trình Tuần 2 - Điều khiển chọn Giáo viên: Hà Đại Dương duonghd@mta.edu.vn 24/08/2016 1 Bài trước • Thuật toán được thiết kế dựa trên ba cấu trúc logic về thứ tự thực hiện câu lệnh sau đây: – Tuần tự (Sequential): Các công việc (lệnh) được thực hiện một cách tuần tự, công việc này nối tiếp công việc kia (từ trên xuống dưới). – Lựa chọn (Selection) : Lựa chọn một công việc (lệnh) để thực hiện căn cứ vào một điều kiện nào đó. – Lặp (Repeating): Thực hiện lặp lại một công việc (lệnh) không hoặc nhiều lần căn cứ vào một điều kiện nào đó. 24/08/2016 2 1
  2. 24/08/2016 Nội dung 1. Tuần tự (Sequential) 2. Lệnh if else 3. Lệnh switch 4. Bài tập 24/08/2016 3 Tuần tự (Sequential) 24/08/2016 4 2
  3. 24/08/2016 Trên/dưới • Chương trình 24/08/2016 5 Trước/sau • Chương trình 24/08/2016 6 3
  4. 24/08/2016 Khối lệnh • Các lệnh nằm giữa cặp dấu { } • Ví dụ 24/08/2016 7 Khối lệnh lồng nhau • Ví dụ 24/08/2016 8 4
  5. 24/08/2016 Khai báo biến • Trong 1 khối lệnh có thể khai báo biến, ví dụ • Phạm vi tác động của biến: Trong khối lệnh và các khối con của nó. 24/08/2016 9 Khai báo biến trùng tên • Với khai báo biến như ví dụ sau: • Khối lệnh cha khai báo 4 biến: a, b, c, d • Khối lệnh con khai báo a, b trùng với khối cha • Biến a, b của khối lệnh cha ảnh hưởng thế nào đến biến a, b của khối lệnh con ??? 24/08/2016 10 5
  6. 24/08/2016 Điều khiển chọn (Selection) 24/08/2016 11 Yêu cầu xử lý đặt ra • Lựa chọn 1 trong 2 khả năng. Ví dụ: Giải phương trình bậc nhất a.x + b = 0 Lựa chọn 1: a 0 -> nghiệm x = -b/a; Lựa chọn 2: a=0 -> vô nghiệm/vô số nghiệm. • Lựa chọn 1 trong nhiều khả năng: Ví dụ: Hiển thị thời khóa biểu theo ngày T Lựa chọn 1: T=T2 -> Lịch ngày thứ 2 Lựa chọn 8: T=CN -> Lịch ngày chủ nhật 24/08/2016 12 6
  7. 24/08/2016 Lệnh if else 24/08/2016 13 Ý nghĩa, cú pháp • Ý nghĩa: Cho phép lựa chọn 1 trong hai khả năng • Cú pháp: or • Trong đó – if, else: từ khóa – BTLG: là 1 biểu thức logic (cho giá trị đúng hoặc sai) 24/08/2016 14 7
  8. 24/08/2016 Dạng 1 • Nếu BTLG có giá trị là đúng (1) thì các lệnh Lệnh 1, Lệnh 2 được thực hiện • Và nếu BTLG có giá trị sai (0) thì không có công việc nào được thực hiện 24/08/2016 15 Dạng 2 • Nếu BTLG có giá trị là đúng (1) thì các lệnh Lệnh 1_1, Lệnh 1_2 được thực hiện • Và nếu BTLG có giá trị sai (0) thì các lệnh Lệnh 2_1, Lệnh 2_2 được thực hiện 24/08/2016 16 8
  9. 24/08/2016 Ví dụ 1 • Số a0 có nghịc đảo là 1/a. Viết chương trình nhập vào số a, in số nghịch đảo của nó ra màn hình. 24/08/2016 17 Ví dụ 2 • Tìm số lớn nhất trong 3 số a, b, c. Yêu cầu: – Trình bày thuật toán (Bài tập trong tuần 1). – Viết chương trình (10 phút) 24/08/2016 18 9
  10. 24/08/2016 Ví dụ 3 • In số ngày của tháng trong năm (dương lịch), ví dụ nhập vào tháng 8 thì in ra là 31 (ngày). • Biết rằng: – Tháng 1,3,5,7,8,10,12 có 31 ngày – Tháng 4,6,9,11 có 30 ngày – Tháng 2 có 28 hoặc 29 ngày. – Viết chương trình(10 phút) 24/08/2016 19 24/08/2016 20 10
  11. 24/08/2016 Ví dụ 4 • Giải hệ bậc nhất a.x + b.y - c = 0 d.x + e.y - f = 0 – Trình bày thuật toán (Bài tập trong tuần 1). – Viết chương trình (10 phút) 24/08/2016 21 Một số lưu ý • Sau if và else nên dùng khối lệnh để tránh nhầm lẫn. Ví dụ xét đoạn lệnh sau: so1 = -1, so2 = 2, so3 = 3 a = ??? so1 = 1, so2 = 2, so3 = 3 a = ??? Khi không rõ ràng, mệnh đề else được hiểu là đi với if gần nhất. 24/08/2016 22 11
  12. 24/08/2016 Một số lưu ý • Sau if và else nên dùng khối lệnh để tránh nhầm lẫn. Muốn else là của if thứ nhất ta nên dùng khối lệnh như sau: 24/08/2016 23 Một số lưu ý • Sai lỗi cú pháp • Sai lỗi logic 24/08/2016 24 12
  13. 24/08/2016 Lệnh switch 24/08/2016 25 Ý nghĩa, cú pháp • Ý nghĩa: Lựa chọn 1 (1 số ) trong nhiều khả năng. • Cú pháp: • Trong đó: – switch, case, break, default: các từ khóa – BT: biểu thức nguyên 24/08/2016 26 13
  14. 24/08/2016 Tiến trình thực hiện 1. Tính giá trị của BT, gọi là V 2. Nếu V = Hằng_K các lệnh Lệnh K_1, Lệnh K_2 được thực hiện đến khi gặp break hoặc kết thúc switch 3. Nếu V  Hằng_K và có default thì các lệnh Lệnh N+1_1, Lệnh N+1_2 được thực hiện 24/08/2016 27 Ví dụ 5 • Viết chương trình cho phép: – Nhập vào 2 số: a, b ; – Một phép toán pt (số học: +, -, *, /); – Tính giá trị của a pt b – Ví dụ: a = 4, b = 7 và pt = ‘+’ thì a pt b = 11 24/08/2016 28 14
  15. 24/08/2016 24/08/2016 29 ???? • Thay vì nhập vào: – 2 số a, b và phép pt – rồi tính a pt b • Có thể nhập vào biểu thức – a pt b – Ví dụ 3 + 2 (hoặc 3*(2+5) ) – Rồi tính giá trị của biểu thức đó ??? 24/08/2016 30 15
  16. 24/08/2016 Ví dụ 6 • In số ngày của tháng trong năm (dương lịch), ví dụ nhập vào tháng 8 thì in ra là 31 (ngày). • Biết rằng: – Tháng 1,3,5,7,8,10,12 có 31 ngày – Tháng 4,6,9,11 có 30 ngày – Tháng 2 có 28 hoặc 29 ngày. – Viết chương trình dùng switch (10 phút) 24/08/2016 31 24/08/2016 32 16
  17. 24/08/2016 Ví dụ 7 • Tên của năm âm lịch được cấu tạo từ hai thành phần là can và chi, ví dụ năm 2010 tương ứng với năm âm lịch là Canh Dần trong đó Canh là can và Dần là chi. • Có tất cả 10 can là Giáp, Ất, Bính, Đinh, Mậu, Kỷ, Canh, Tân, Nhâm, Quý • Và 12 chi là Tí, Sửu, Dần, Mão, Thìn, Tỵ, Ngọ, Mùi, Thân, Dậu, Tuất, Hợi. 24/08/2016 33 Ví dụ 7 • Viết chương trình cho phép nhập vào một năm dương lịch (ví dụ 2015), hãy đưa ra tên âm lịch tương ứng của năm đó. • Ví dụ: – 2016 : Bính Thân – 2017: Đinh Dậu – 2018: Mậu Tuất – 24/08/2016 34 17
  18. 24/08/2016 Ví dụ 7 Ý tưởng 1. 2. 3. 24/08/2016 35 Một số lưu ý • BT: kiểu nguyên • Hằng_1, Hằng_2 Hằng_N: kiểu nguyên 24/08/2016 36 18
  19. 24/08/2016 Một số lưu ý • Đoạn chương trình Hiển thị thông báo lỗi 24/08/2016 37 Một số lưu ý • Khi BT có giá trị bằng Hằng_K, chương trình thực hiện Lệnh K_1 đến khi gặp break (hoặc kết thúc lệnh switch) • Chương trình Kết quả 24/08/2016 38 19
  20. 24/08/2016 Bài tập 24/08/2016 39 Bài tập 1. Viết chương trình tìm số lớn nhất trong 10 số. 2. Viết chương trình tính giá điện sinh hoạt theo qui tắc nêu ra trong bài tập tuần 1 khi biết số điện tiêu thụ và giá trung bình. 3. Viết chương trình cho biết tên âm lịch (dạng can/chi) của một năm dương lịch. 24/08/2016 40 20
  21. 24/08/2016 Bài tập về nhà 1. Việc khai báo biến a, b của khối lệnh cha ảnh hưởng thế nào đến biến a, b của khối lệnh con trong ví dụ ở sile 10. 2. Nếu không có lệnh fflush(stdin); trong chương trình của ví dụ 5 (dòng 7) chương trình hoạt động như thế nào? Tại sao? 3. Ký hiệu (float) trong câu lệnh thuong = (float) so1/so2; chương trình của ví dụ 5 (dòng 17) có ý nghĩa gì? Tại sao? 24/08/2016 41 Bài tập về nhà 4. Viết chương trình cho phép nhập vào tháng/năm, hãy cho biết số ngày của tháng/năm đó trong năm. Biết rằng: – Tháng 2 năm không nhuận có 28 ngày, năm nhuận có 29 ngày. – Những năm không chia hết cho 4 hoặc những năm chẵn thế kỷ nhưng không chia hết cho 400 là năm không nhuận, ví dụ các năm 1996, 2000 là năm nhuận; các năm 1900 hay 2002 không nhuận. 24/08/2016 42 21
  22. 24/08/2016 Bài tập về nhà 5. Viết chương trình tính số ngày tính từ ngày bắt đầu (NBD) đến ngày kết thúc (NKT). Ví dụ NBD = 1/8/2016 và NKT = 20/8/2016 thì số ngày tính được là 20 (NBD=1/8/1916 và NKT = 1/8/2016 thì số ngày là ????). 6. A, B, C và M là các điểm trên mặt phẳng. Viết chương trình kiểm tra xem M có nằm trong tam giác ABC hay không? 24/08/2016 43 22