Ngy son: 22/03/2011 Ngy ging: 24/03/2011 Tit theo PPCT: 39 Đ18. V D V CCH VIT V S DNG CHNG TRèNH CON I - Mc tiờu bi hc 1. Kiến thức - Học sinh biết đợc cấu trúc của một thủ tục. - Hiểu đợc mối quan hệ giữa chơng trình và thủ tục. - Phân biệt đợc tham trị và tham biến. - Phân biệt đợc tham số hình thức và tham số thực sự. - Phân biệt đợc biến cục bộ và biến toàn cục. 2. Kĩ năng - Học sinh nhận biết đợc các thành phần trong phần đầu của thủ tục. - Học sinh nhận biết đợc hai loại tham số hình thức trong phần đầu của thủ tục. - Học sinh nhận biết lời gọi của thủ tục ở chơng trình chính cùng với tham số thực sự. II Ph ơng pháp, ph ơng tiện dạy hoc - Phơng pháp: Thuyết trình, đàm thoại, vấn đáp - 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ài cũ Câu hỏi 1: Chơng trình con có những loại nào?Cấu trúc của một chơng trình con? Câu hỏi 2: Viết chơng trình vẽ lên màn hình hình chữ nhật có dạng: ******** * * ******** 3. Nội dung Hoạt động của giáo viên và học sinh Nội dung ? Ta có thể vẽ hình chữ nhật trên nh thế nào? - Vẽ hình chữ nhật trên với 3 câu lệnh 1. Cách viết và sử dụng thủ tục Xét ví dụ: Vẽ hình chữ nhật có dạng ******* * * ******* 1 writeln. ? Giả sử 1 chơng trình yêu cầu vẽ nhiều hình chữ nhật nh trên thì ta thầy gặp khó khăn gì? - Chơng trình sẽ rất dài với nhiều câu lệnh lặp đi lặp lại. Để khắc phục khó khăn này ta nên sử dụng CTC. ?Theo các em với bài vẽ hình chữ nhật này, thì chúng ta nên dùng hàm hay thủ tục. Vì sao? - Chúng ta nên dùng thủ tục. Vì hàm thì trả về một giá trị qua tên của nó còn thủ tục thì không. ? Dựa vào chơng trình trên cho biết cấu trúc của thủ tục? CT vẽ hình chữ nhật trên: Program Ve_Hcn; Uses crt; Begin Clrscr; Writeln(********); Writeln(* *); Writeln(********); Readln; End. CT sử dụng CTC là thủ tục để vẽ hình chữ nhật Program Ve_Hcn; Uses crt; Procedure ve_hcn; Begin Writeln(*******); Writeln(* *); Writeln(*******); End; Begin Clrscr; Ve_hcn; Writeln; Ve_hcn; Writeln; Ve_hcn; Readln End. a, Cấu trúc của thủ tục Cấu trúc của thủ tục: procedure <tên thủ tục>[<ds tham số>] [<phần khai báo>] Begin [<dãy các lệnh>] End; Trong đó: + Phần đầu: Gồm tên dành riêng 2 ?Trong chơng trình trên vẽ mấy hình chữ nhật, kích thớc các hình nh thế nào? - Vẽ 3 hình chữ nhật. Kích thớc các hình chữ nhật nh nhau, chiều dài 7, chiều rộng 3. ? Nừu muốn vẽ hình chữ nhật có kích thớc khác nhau thì phải làm thế nào? - Cần phải có 2 tham số cho dữ liệu vào là chiều dài và chiều rộng Khi đó đầu thủ tục đợc viết Procedure Ve_Hcn (chdai, chrong: integer); Với khai báo nh vậy ta có thể vẽ đợc hình chữ nhật có kích thớc tuỳ theo giá trị của tham số chiều dài và chiều rộng. - Lời gọi vẽ hình chữ nhật có kích thớc 25x10 và kích thớc 10x15 procedure, tiếp theo là tên thủ tục. Danh sách tham số có thể có hoặc không có. + Phần khai báo: Dùng để xác định các hằng, kiểu, biến và cũng có thể xác định các chơng trình con khác đợc sử dụng trong thủ tục. + Dãy các câu lệnh: Đợc viết giữa cặp tên dành riêng begin và end; tạo thành thân của thủ tục. * Chú ý: - Các thủ tục (nếu có) phải đợc khai báo và mô tả trong phần khai báo của chơng trình chính, ngay sau phần khai báo các biến. - Khi cần thực hiện, ta phải viết lệnh gọi thủ tục tơng tự nh các thủ tục chuẩn. <tên thủ tục>[(các tham số thực sự)] b, Ví dụ về thủ tục Chơng trình mô tả đầy đủ với 2 tham số chiều dài và chiều rộng Program hcn; Uses crt; Var a, b, i : integer; Procedure ve_hcn(cd, cr : integer); Var i, j : integer; Begin For i:=1 to cd do Write(*); Writeln; For j:=1 to cr 2 do Begin Write(*); For i:=1 to cd 2 do Write(*); Writeln; End; Begin clrscr; Ve_hcn(25,10); Writeln; Ve_hcn(10,15); Reaadln; 3 Cùng học sinh xây dựng chơng trình VD_thambien1 Chạy chơng trình với a=5; b=10. ? Em nào hãy cho cô biết giá trị của a, b sau khi thực hiện thủ tục Hoan_doi có thay đổi nh thế nào? - Có thay đổi a nhận giá trị của b và ngợc lại. Sau khi chạy chơng trình ta thấy trớc và sau khi gọi thực hiện thủ tục các tham biến đã thay đổi, giá trị của tham biến sau lời gọi thủ tục là giá trị sau cùng khi kết thúc thực hiện thủ tục. Sửa lại chơng trình VD_thambien1 thành chơng trình VD_thambien2 với thủ tục Procedure Hoan_doi (x: integer; var y: integer); - Chạy chơng trình VD_thambien2 với a=5 và b=10. ?So sánh kết quả khi chạy hai chơng trình VD_thambien1 và VD_thambien2? ? Nêu sự khác nhau giữa tham biến và tham trị? {ve 4 hcn hinh dau tien co kich thuoc 4x2, moi hinh sau co kich thuoc gap doi hinh truoc} a:=4; b:=2 for i:=1 to 4 do begin ve_hcn(a,b); readln a:=a*2; b:=b*2; end; readln end. - Trong lệnh gọi thủ tục các tham số hình thức đợc thay bằng tham số thực sự tơng ứng là các giá trị cụ thể gọi là tham số giá trị (gọi tắt là tham trị) VD: 25 x 10, 10 x 15 là tham số giá trị - Trong lệnh gọi thủ tục các tham số hình thức đợc thay bằng tham số thực sự tơng ứng là các biến chứa dữ liệu ra đợc gọi là tham số biến. Lu ý: Để phân biệt tham số biến và tham số giá trị Pascal sử dụng từ khoá Var để khai báo những tham số biến. xét ví dụ sau: Viết chơng trình trong đó có sử dụng thủ tục Hoan_doi để đổi giá trị của 2 biến. - Trong khai báo tham số hình thức của một thủ tục: Tham số biến đợc dùng để ghi lại dữ liệu kết quả của việc thực hiện thủ tục 4 (có từ khoá var ở trớc), còn tham số giá trị chỉ để đa dữ liệu vào cho thủ tục khi bắt đầu thực hiện thủ tục. - ở lời gọi thực hiện một thủ tục: Một hằng hay một tên biến hay một biểu thức có thể xuất hiện ở vị trí một tham số thực sự t- ơng ứng với tham số giá trị, trong khi đó ở vị trí một tham số thực sự tơng ứng với tham số biến chỉ có thể là một tên biến IV Củng cố - Cấu trúc của thủ tục. - Tham biến, tham trị 5 . dung Hoạt động của giáo viên và học sinh Nội dung ? Ta có thể vẽ hình chữ nhật trên nh thế nào? - Vẽ hình chữ nhật trên với 3 câu lệnh 1. Cách viết và sử dụng thủ tục Xét ví dụ: Vẽ hình chữ nhật có. biến. Lu ý: Để phân biệt tham số biến và tham số giá trị Pascal sử dụng từ khoá Var để khai báo những tham số biến. xét ví dụ sau: Viết chơng trình trong đó có sử dụng thủ tục Hoan_doi để đổi giá. xác định các hằng, kiểu, biến và cũng có thể xác định các chơng trình con khác đợc sử dụng trong thủ tục. + Dãy các câu lệnh: Đợc viết giữa cặp tên dành riêng begin và end; tạo thành thân của thủ