Ví dụ về cách viết và sử dụng chương trình con
Trường THPT Sơn Tây Tổ bộ môn Lý – CN – Tin Đoàn TT trường ĐHSP Hà Nội Chương VI. CHƯƠNG TRÌNH CON VÀ LẬP TRÌNH CÓ CẤU TRÚC § 18. Ví dụ về cách viết và sử dụng chương trình con. GVHD: Trần Thị Thu Thủy Giáo sinh thực tập: Nguyễn Thị Huệ Ngày soạn: ……/……/2011 1. KIẾN THỨC, KĨ NĂNG 1.1. Kiến thức - Biết được cấu trúc chung và vị trí của thủ tục trong chương trình. - Phân biệt được tham số giá trị và tham số biến. - Nắm được khái niệm về biến toàn cục và biến cục bộ. 1.2. Kĩ năng - Nhận biết được các thành phần trong đầu của thủ tục. - Nhận biết được hai loại tham số hình thức trong đầu của thủ tục. - Biết cách khai báo hai loại chương trình con cùng với tham số hình thức của chúng. - Sử dụng đúng lời gọi chương trình con trong thân chương trình chính. - Phân biệt được khác nhau cơ bản của hàm và thủ tục. - Phân biệt và sử dụng đúng biến toàn cục và biến cục bộ. 2. PHƯƠNG PHÁP, PHƯƠNG TIỆN 2.1. Phương pháp: - Kết hợp các phương pháp giảng dạy như: Thuyết trình, vấn đáp,… 2.2. Phương tiện: - Chuẩn bị của giáo viên: giáo án, SGK, sách bài tập,… - Chuẩn bị của học sinh: SGK, vở ghi, sách bài tập . GVHD: Trần Thị Thu Thủy Giáo sinh: Nguyễn Thị Huệ 3. TIẾN TRÌNH LÊN LỚP, NỘI DUNG BÀI GIẢNG 3.1. Ổn định lớp. (3’) - Khi vào lớp yêu cầu lớp ổn định, giữ trật tự, chuẩn bị đầy đủ các thiết bị học tập cần thiết và bắt đầu bài học. - Yêu cầu lớp trưởng báo cáo sĩ số của lớp. 3.2. Kiểm tra bài cũ, gợi động cơ cho bài mới 3.2.1. Kiểm tra bài cũ: (5’) Câu hỏi: Chương trình con có mấy loại? Đó là những loại nào? Cấu trúc chung của chương trình con? - Trả lời: + Chương trình con có hai loại: Hàm và thủ tục • Hàm (Function): là chương trình con thực hiện một số thao tác nào đó và trả về một giá trị qua tên của nó. • Thủ tục (Procedure): là chương trình con thực hiện thao tác nhất định nhưng không trả về giá trị nào qua tên của nó. + Cấu trúc chung của một chương trình con: <Phần đầu> [<Phần khai báo>] <Phần thân> Hỏi thêm: Lợi ích của việc sử dụng chương trình con? 3.2.2. Gợi động cơ cho bài mới: (1’) Trong bài học trước, chúng ta đã được học về chương trình con và phân loại. Vậy để hiểu rõ hơn cách viết và sử dụng của mỗi loại chương trình con chúng ta bài hôm nay. Bài 18: Ví dụ về cách viết và sử dụng chương trình con. 3.3. Nội dung bài giảng: (T: thời gian dự kiến; GV: Giáo viên; HS: học sinh) Hoạt động của GV Nội dung Hoạt động của HS Trước tiên ta tìm hiểu loại thứ nhất của chương trình con. Chúng ta vào phần 1. Thủ tục. ? Một em hãy xem trong SGK và hãy cho cô biết cấu trúc của thủ tục. 1. Cách viết và sử dụng thủ tục a. Cấu trúc: (3’) Procedure <tên_TT>[(<DS tham số hình thức>: <kiểu dữ liệu>)]; [<Phần khai báo>] Begin - Lắng nghe và ghi bài. - Trả lời cấu trúc của thủ tục. Trang 2 GVHD: Trần Thị Thu Thủy Giáo sinh: Nguyễn Thị Huệ - Trong cấu trúc của thủ tục mà bạn vừa nêu chúng ta cần phải chú ý một số đặc điểm sau: Tên_TT: do người dùng đặt; <DS tham số> có thể có hoặc không. - Để hiểu rõ hơn về cấu trúc của thủ tục, chúng ta sang phần b: Ví dụ. ? Để in ra các dấu x thì chúng ta phải dùng lệnh gì? ? Vậy thì chúng ta phải dùng mấy lệnh writeln? - Ta phải dùng 3 lệnh writeln. - Vậy từ đây em nào có thể đứng lên viết cho cô thủ tục vẽ HCN này? ? Để in 1 HCN ta phải làm thế nào? - Khi chúng ta đã có thủ tục rồi, vậy thì sử dụng nó trong chương trình như thế nào? - Như vậy, để gọi thủ tục veHCN chúng ta phải gọi tên của nó trong chương trình chính. ? Nếu chúng ta muốn vẽ 3, 4 HCN thì phải làm như thế nào? - Nếu chúng ta muốn vẽ 100, 1000 HCN thì liệu chúng ta có thể liệt kê được 100, 1000 thủ tục veHCN không? Vậy chúng ta phải làm thế nào? - Dựa vào chương trình trên, một em hãy cho cô biết vị trí của thủ tục? <Dãy câu lệnh>; End; b. Ví dụ: (5’) - VD1 : Vẽ HCN có dạng: x x x x x x x x x x x x x x x x x x Lệnh Writeln: Writeln(‘x x x x x x x x ’); Writeln(‘x x’); Writeln(‘x x x x x x x x ’); Program HCN; Var i, n: integer; Procedure veHCN; Begin Writeln(‘x x x x x x x x ’); Writeln(‘x x’); Writeln(‘x x x x x x x x ’); End; BEGIN veHCN; veHCN; n:= 100; for i:= 1 to n do veHCN; Readln; END. * VD2 : (10’) Vẽ HCN có kích thước khác nhau: 10x5, 8x6,… - Lắng nghe và ghi bài. - writeln - 3 lệnh writeln - Lắng nghe và ghi bài. - Trả lời. - Quan sát và ghi bài. - Chúng ta phải gọi thủ tục veHCN 3 hay 4 lần. - Không. Chúng ta phải sử dụng lệnh for to do. - Thủ tục nằm trước thân chương trình chính và sau phần khai báo của chương Trang 3 GVHD: Trần Thị Thu Thủy Giáo sinh: Nguyễn Thị Huệ - Ở đây chúng ta chỉ vẽ được HCN có kích thước bằng nhau. Ví dụ, cô muốn vẽ nhiều hình chữ nhật có kích thước khác nhau thì cô phải làm thế nào? Chúng ta cùng sang ví dụ thứ 2. - Để vẽ được những HCN có kích thước khác nhau như thế này thì chúng ta phải làm thế nào? Giả sử chúng ta muốn viết thủ tục vẽ hình chữ nhật với các kích thước d, r bất kì như sau: - Vậy thì dựa vào đây chúng ta phải viết các câu lệnh như thế nào? Dựa vào đó chúng ta sẽ viết thủ tục như thế nào? - Trong ví dụ trước chúng ta đã gọi thủ tục không tham số. Vậy thì thủ tục có tham số như thủ tục này thì chúng ta phải gọi như thế nào? ? Nếu chúng ta muốn nhập trực tiếp cạnh hình chữ nhật thì phải làm thế nào? - Tiếp theo chúng ta sang khái niệm mới tham biến, tham trị. + dòng 1: d x + dòng r: d x + dòng từ 2 đến r-1 có 2 dấu x ở đầu và cuối còn ở giữa có d-2 dấu cách. Uses crt; Procedure HCN(d, r:integer); Var i, j: integer; Begin For i:= 1 to d do write(‘x ’); writeln; For i:= 2 to r-1 do Begin Write(‘x ’); For j:= 2 to d-1 do write(‘ ’); writeln(‘x ’); End; For i:= 1 to d do write(‘x ’); writeln; End; BEGIN HCN(10, 5); HCN(8, 6); readln; END. Readln(d, r); HCN(d, r); - Tham biến: khi gọi chương trình con nó đem giá trị thay đổi ra khỏi chương trình con. Được khai báo bằng từ khóa Var. trình chính. - Lắng nghe và ghi bài. - Quan sát và lắng nghe. - Trả lời: - Chúng ta phải gọi cả tên thủ tục cùng với danh sách tham số của nó. - Dùng lệnh readln(dài, rộng); - Lắng nghe và ghi bài. Trang 4 GVHD: Trần Thị Thu Thủy Giáo sinh: Nguyễn Thị Huệ - Chúng ta xét ví dụ dùng thủ tục Hoandoi. ? Để hoán đổi giá trị trong hai biến x, y ta phải làm thế nào? - Vậy thì dựa vào những gì các em đã được học thì các em hãy suy đoán xem kết quả của hai chương trình trong SGK trang 99 và 100 là như thế nào? - Tham trị: khi gọi chương trình con nó không đem giá trị thay đổi ra khỏi chương trình con. Không được khai báo bằng từ khóa Var. tg:= x; x:= y; y:= tg; - Trong VD_thambien1 5 10 10 5 - Trong VD_thambien2 5 10 5 5 - Dùng biến trung gian. - Trả lời. Chúng ta sẽ sang tìm hiểu loại thứ hai của chương trình con. - Dựa vào cấu trúc của thủ tục và hàm như thế này. Một em hãy so sánh cho cô sự giống và khác nhau giữa hàm và thủ tục. - Để tìm hiểu rõ hơn về hàm chúng ta sẽ đi vào các ví dụ cụ thể. - Các em còn nhớ mấy phương pháp để tìm UCLN của hai số bất kì mà ta đã học ở lớp 10? - Sau đây cô sẽ giới thiệu với các em phương pháp trừ để tìm UCLN của hai số. Vậy từ ví dụ trên các em hãy viết thủ tục tìm UCLN 2. Cách viết và sử dụng hàm a. Cấu trúc: (3’) Function <tên_hàm>[(<DS tham số hình thức>: <kiểu dữ liệu>)]: <kiểu trả về>; [<Phần khai báo>] Begin <Dãy lệnh>; <tên_hàm>: = <giá trị trả về>; End; - Giống nhau: - Khác nhau: b. Ví dụ: (10’) * VD1: Tìm UCLN của 2 số m, n. Function UCLN(m, n: integer): integer; Begin While m<>n do If m>n then m:= m- n Else n:= n- m; - Lắng nghe và ghi bài. - Trả lời: - Lắng nghe và ghi bài. - 3 phương pháp: phương pháp trừ, chia, nguyên tố. - Quan sát, lắng nghe và ghi bài. - Trả lời: Trang 5 GVHD: Trần Thị Thu Thủy Giáo sinh: Nguyễn Thị Huệ của hai số m, n bất kì: - Cũng như thủ tục, việc gọi hàm trong chương trình cũng cần gọi tên hàm và danh sách tham số kèm theo, nhưng khác là hàm trả về kết quả. Để tìm hiểu rõ hơn về điều này chúng ta cùng xét VD2. - Để dựa vào hàm UCLN chúng ta có ví dụ sau: - Do thời gian không còn nhiều nên cô sẽ gợi ý và các em về nhà hãy viết chương trình tính. Coi như đây là bài tập về nhà. UCLN:= m; End; * VD 2: (4) Dựa vào hàm tính UCLN của hai số m, n bất kì ở trên em hãy viết chương trình tối giản phân số a, b bất kì: 12/18 = 2/3. Mà UCLN(12,18)=6. + UC:= UCLN(a, b); + a:= a div UC; + b:= b div UC; - Lắng nghe và ghi bài. - Quan sát và ghi bài 4. CỦNG CỐ KIẾN THỨC (thời gian còn lại) 4.1. Củng cố: - Biết cách phân loại hàm và thủ tục. Chú ý: chương trình con chỉ được thực hiện khi có lời gọi nó. - Biết được cấu trúc chung và vị trí của hàm, thủ tục trong chương trình. - Cách viết và sử dụng thủ tục, hàm trong mỗi bài toán, chương trình cụ thể. - Phân biệt được tham biến, tham trị, cách sử dụng chúng. Ngoài ra cũng phải xác định được biến toàn cục và biến địa phương (biến cục bộ). 4.2. Bài tập về nhà. - Đọc trước các bài tập thực hành 6 và 7. Bài 19: Thư viện chương trình con chuẩn - Làm bài tập trong sách giáo khoa và sách bài tập. - Bài tập làm thêm: Viết chương trình có sử dụng chương trình con (thủ tục hoặc hàm) để thực hiện tính chu vi và diện tích hình chữ nhật. Yêu cầu nhập chiều dài và chiều rộng trong chương trình chính rồi gọi chương trình con để tính diện tích và chu vi. Trang 6 GVHD: Trần Thị Thu Thủy Giáo sinh: Nguyễn Thị Huệ Nhận xét của giáo viên hướng dẫn ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………… Giáo viên hướng dẫn Người soạn giáo án (Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên) ………………………. …………………… Trần Thị Thu Thủy Nguyễn Thị Huệ Trang 7 . và sử dụng chương trình con. 3.3. Nội dung bài giảng: (T: thời gian dự kiến; GV: Giáo vi n; HS: học sinh) Hoạt động của GV Nội dung Hoạt động của HS Trước. chương trình con và phân loại. Vậy để hiểu rõ hơn cách vi t và sử dụng của mỗi loại chương trình con chúng ta bài hôm nay. Bài 18: Ví dụ về cách vi t và sử