Ngày soạn: 15/03/2010 Ngày giảng: 17/03/2010 Tiết theo PPCT: 37 CHƯƠNG 6 – CHƯƠNG TRÌNH CON VÀ LẬP TRÌNH CÓ CẤU TRÚC §17. CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI I - Mục tiêu bài học 1. Kiến thức: - Biết được khái niệm chương trình con. - Biết được ý nghĩa của chương trình con, sự cần thiết phải viết một chương trình thành các chương trình con. 2. Kĩ năng: - Biết được lợi ích của việc sử dụng CTC. II – Phương pháp, phương tiện dạy học - Phương pháp: Đàm thoại, giảng giải… - Phương tiện: sgk, giáo án… III - Tiến trình bài học 1. Ổn định tổ chức lớp - Lớp: - Sĩ số: - Lí do vắng 2. Kiểm tra bàì cũ 3. Nội dung bài mới Hoạt động của giáo viên và học sinh Nội dung ? Để chuẩn bị cho ngày hội trại 26/3 thì học sinh các lớp chuẩn bị như thế nào? - Phân công việc cho từng nhóm phụ trách → gọi là chia nhỏ công việc. GV có thể lấy thêm ví dụ về việc chia nhỏ công việc Ví dụ: Thực hiện phép tính: S = x + y + z + f Với x, y, z, f là các biểu thức. ? Làm thế nào để tính được S nhanh nhất? - Ta sẽ tính lần lượt từng biểu thức x, y, z, f rồi lấy kết quả của từng biểu thức đó 1. Khái niệm chương trình con 1 cộng lại được tổng S cần tìm. → Để giải quyết 1 bài toán ta có thể chia bài toán đó ra thành nhiều bài toán nhỏ hơn hay còn gọi là bài toán con. Các chương trình giải các bài toán phức tạp thường rất dài, có thể gồm nhiều lệnh, khi đọc rất khó hình dung chương trình thực hiện những công việc gì và việc hiệu chỉnh chương trình cũng rất khó khăn. Như vậy làm thế nào để cho bài toán phức tạp dễ đọc, dễ hiểu, dễ hiệu chỉnh, dễ nâng cấp? Trong những chương trình lớn, có thể có những đoạn chương trình viết lặp đi lặp lại nhiều lần, để tránh rườm rà và mất thời gian khi viết chương trình, người ta thường phân chia chương trình thành nhiều module, mỗi module giải quyết một công việc nào đó. Các module như vậy gọi là các chương trình con. Do đó ta nghiên cứu vấn đề mới là CTC, để tìm hiểu CTC là gì? ? Ý tưởng giải bài toán này? - Chia bài toán thành 4 bài toán nhỏ a n , b m ,c p , d q → làm mịn dần bài toán - Giá trị Tluythua là tổng của 4 bài toán con. → Với những bài toán lớn hơn thì những bài tóan con có thể được phân chia thành những bài toán con khác. Xét ví dụ: Tính tổng : Tluythua = a n + b m + c p + d q - Những bài toán phức tạp có thể phân chia thành nhiều bài toán nhỏ, mỗi bài toán nhỏ được phân chia thành nhiều bài toán nhỏ, quá trình làm “mịn” dần bài toán như vậy được gọi là cách thiết kế từ trên xuống. - Khi lập trình để giải các bài toán có thể chia thành các khối, mỗi khối bao gồm các lệnh để giải 1 bài toán nào đó, mỗi khối 2 ? Trong chương trình này có nhữngkhối lệnh nào được viết tương tự nhau? - Có 4 khối lệnh được viết tương tự nhau ? Tác dụng của từng khối lệnh? -Khối lệnh 1dùng để tính luỹ thừa a n , Khối lệnh 1dùng để tính luỹ thừa b m , Khối lệnh 1dùng để tính luỹ thừa c p , Khối lệnh 1dùng để tính luỹ thừa d q . ? Việc lặp lại những khối lệnh này gây ra khó khăn gì? - Làm cho chương trình vừa dài, vừa khó theo dõi. GV giải rhích : các dòng lệnh: var j: integer; tich:=1.0; for j:=1 to k do tich:=tich*x + Để tính các luỹ thừa ta viết: Luythua(a,n), luythua(b,m), Luythua(c,p), luythua(d,q) + Và chỉ rõ các đoạn lệnh được thay thế bằng CTC. Chính vì vậy để nâng cao hiệu quả lập trình, các ngôn ngữ lập trình bậc cao đều cung cấp các chương trình con dạng tổng quát đại diện cho nhiều đoạn lệnh tương tự nhau. ?Chương trình con là gì? Việc sử dụng chương trình con làm lệnh được xây dựng thành 1 CTC , sau đó chương trình chính được xây dựng trên các CTC này, cách lập trình như vậy gọi là chương trình có cấu trúc. Xét ví dụ trên với chương trình pascal (trang 92 - sgk) Khái niệm Chương trình con là một dãy lệnh mô tả một số thao tác nhất định và có thể được thực hiện (được gọi) từ nhiều vị trí trong chương trình. 3 chương trình gọn hơn và dể quan sát hơn. ? Vậy lợi ích của việc sử dụng CTC là gì? Giới thiệu về lợi ích của việc sử dụng chương trình con: + Tránh sự lập đi lập lại của một dãy lệnh nào đó. + Các chương trình lớn như hệ điều hành Windows, họăc bộ Visual studio, Microsoft Office có thể phân chia nhiều công đọan cho nhiều người viết như. Người này tham gia vào công đọan viết giao diện chương trình, người khi tham gia vào công đọan hiệu ứng và định dạng văn bản v.v… + Trong lập trình Windows người ta có thể tạo ra cửa sổ Widows From chỉ bằng vài cái click chuột. Nhưng ít ai quan tâm tới cửa sổ Windows From được lập trình như thế nào, mà người ta chỉ quan tâm tới kết quả là tạo ra cửa sổ Windows From được thừa hưởng từ những lập trình ngôn ngữ lập trình đó họ viết sẵn cho. + Trong thực tế ít ai biết được thư viện đồ họa của hệ điều hành Windows (DirectX) là gì. Nhưng đây lại là một thành phần không thể thiếu của các chương trình * Lợi ích của việc sử dụng CTC + Tránh được việc phải viết đi viết lại nhiều lần cùng 1 dãy lệnh; + Hổ trợ việc thực hiện các chương trình lớn; + Phục vụ cho quá trình trừu tượng hoá ; + Mở rộng khả năng ngôn ngữ; + Thuận tiện cho phát triển, nâng cấp chương trình; 4 sử dụng giao diện đồ họa. + Khi viết một chương trình lớn, nếu không có chương trình con thì khi bị lỗi chúng ta sẽ khó mà biết đựơc là nó lỗi ở chỗ nào. VD: Windows Media Player chúng ta đang sử dụng, chúng có các chương trình con cơ bản như là: Chương trình con hiển thị Video, Chương trình con Play, Stop, Pause… Nếu chương trình con Stop bị lỗi (nhấn Stop mà Windows media player không dừng) thì chúng ta có thể biết là chương trình con Stop đang bị lỗi IV - Củng cố - Chương trình con là gì? - Thế nào là lập trình có cấu trúc? - Lợi ích việc sử dụng CTC. 5 . CHƯƠNG TRÌNH CON VÀ LẬP TRÌNH CÓ CẤU TRÚC §17. CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI I - Mục tiêu bài học 1. Kiến thức: - Biết được khái niệm chương trình con. - Biết được ý nghĩa của chương trình con,. ?Chương trình con là gì? Việc sử dụng chương trình con làm lệnh được xây dựng thành 1 CTC , sau đó chương trình chính được xây dựng trên các CTC này, cách lập trình như vậy gọi là chương trình có cấu. chương trình con 1 cộng lại được tổng S cần tìm. → Để giải quyết 1 bài toán ta có thể chia bài toán đó ra thành nhiều bài toán nhỏ hơn hay còn gọi là bài toán con. Các chương trình giải các bài