A.MỤC ĐÍCH:
1.Kiến thức:
- Củng cố lại một số kiến thức cơ bản về kiểu dữ liệu mảng một chiều.
- Củng cố lại một số câu lệnh như: Nhập và xuất, rẽ nhánh và lặp.
2.Kỹ năng:
- Nâng cao kỷ năng sử dụng một số lệnh kiểu dữ liệu mảng một chiều trong lập trình, cụ thể:
+Khai báo mảng một chiều.
+Nhập/ xuất dữ liệu cho mảng.
+Duyệt qua tất cả các phần tử của mảng để xử lý từng phần tử.
-Biết giải một số bài toán cơ bản:
+Tính tổng các phần tử thoả mãn điều kiện nào đó.
+ Bài toán đếm thoả mãn một điều kiện cho trước.
3.Thái độ:
- Tiếp tục xây dựng lòng yêu thích giải toán bằng lập trình trên máy vi tính.
- Nghiêm túc trong thực hành, giữ gìn máy tính.
B.PHƯƠNG PHÁP: Thực hành + Vấn đáp tái hiện
C.CHUẨN BỊ:
1. Giáo viên: Giáo án, SGK, SBT, máy chiếu.
2. Học sinh: Chuẩn bị bài ở nhà.
D. TIẾN TRÌNH LÊN LỚP:
Tiết 25 Ngày soạn 12 tháng 11 năm 2008 BÀI TẬP VÀ THỰC HÀNH 3(t2) A.MỤC ĐÍCH: 1.Kiến thức: - Củng cố lại một số kiến thức cơ bản về kiểu dữ liệu mảng một chiều. - Củng cố lại một số câu lệnh như: Nhập và xuất, rẽ nhánh và lặp... 2.Kỹ năng: - Nâng cao kỷ năng sử dụng một số lệnh kiểu dữ liệu mảng một chiều trong lập trình, cụ thể: +Khai báo mảng một chiều. +Nhập/ xuất dữ liệu cho mảng. +Duyệt qua tất cả các phần tử của mảng để xử lý từng phần tử. -Biết giải một số bài toán cơ bản: +Tính tổng các phần tử thoả mãn điều kiện nào đó. + Bài toán đếm thoả mãn một điều kiện cho trước. 3.Thái độ: - Tiếp tục xây dựng lòng yêu thích giải toán bằng lập trình trên máy vi tính. - Nghiêm túc trong thực hành, giữ gìn máy tính. B.PHƯƠNG PHÁP: Thực hành + Vấn đáp tái hiện C.CHUẨN BỊ: Giáo viên: Giáo án, SGK, SBT, máy chiếu. Học sinh: Chuẩn bị bài ở nhà. D. TIẾN TRÌNH LÊN LỚP: I.ỔN ĐỊNH LỚP(1’): Lớp 11C 11B1 11B2 11B3 11B4 Vắng II.KIỂM TRA BÀI CŨ(15’): Kiểm tra 15 phút (Gv đưa lên máy chiếu) ĐỀ Câu 1(5đ).Hãy viết cú pháp khai báo mảng một chiều? Câu 2(5đ).Viết đoạn chương trình nhập và in mảng một chiều vừa nhập? ĐÁP ÁN Câu1: *Khai gián trực tiếp Viết đúng 2,5đ Var :array[n1..n2] of ; *Khai báo gián tiếp: Viết đúng 2,5đ Type =array[n1..n2] Of ; Var : ; Câu2:*Đoạn chương trình nhập mảng một chiều Viết đúng 2,5đ Write(‘Nhap so phan tu N=’); Readln(N); For i=1 To N Do Begin Write(‘Nhap a[‘,i,’]=’); Readln(a[i]); End; *Đoạn chương trình in mảng một chiều vừa nhập: Viết đúng 2,5đ For i:=1 To N do Write(‘Gia tri a[‘,i,’]=’, a[i]); III.BÀI MỚI: a.Đặt vấn đề(1’): Bài tập và Thực hành3(T2) b.Triển khai bài mới: HOẠT ĐỘNG CỦA THẦY VÀ TRÒ NỘI DUNG KIẾN THỨC Hoạt động 1(13’) (Tìm hiểu cách sử dụng lệnh và kiểu dữ liệu mảng một chiều qua chương trình có sẳn) Gv:Đưa bài toán lên máy chiếu, yêu cầu Hs thực hiện theo các câu hỏi sau: Hãy tìm hiểu, gõ chương trình vào máy và chạy chương trình dưới đây: Var A:array[1..100] of Integer; S,N,i,K:Byte; Begin Randomize; Write('Nhap gia tri N='); Readln(N); Write('Nhap so nguyen K='); Readln(K); For i:=1 to n do A[i]:=random(300)-random(300); For i:=1 to N do Write(A[i]:5); Writeln; S:=0; For i:=1 To N do If a[i] mod k =0 then S:=S+a[i]; Writeln('Tong can tinh la S=',S); Readln; End. Hs:Thực hành gõ chương trình vào máy và cho chạy chương trình bằng cách nhấn tổ hợp phím Ctrl+F9. Gv:Quan sat học sinh thực hành. Hàm chuẩn Random(n), Randomize làm chức năng gì trong chương trình? Hs: -Random(n):Cho giá trị là một số nguyên ngẫu nhiêu từ 0 đến n-1. -Radomize:Khởi tạo cơ chế sinh số ngẫu nhiên. Gv: 1.Đoạn chương trình nào tạo mảng có giá trị tuyệt đối không vượt quá 300? 2.Giải sử chương trình bỏ hàm chuẩn Radomize có được hay không?Vì sao? Hs:Minh hoạ trên máy rồi giải thích Gv: Đưa chương trình trên máy chiếu và giải thích từng đoạn chương trình để Hs hiểu vấn đề. Hoạt động 2(13’) (Viết chương trình về bài toán tạo mảng) Gv:Đưa bài toán lên màn hình máy chiếu Hs:Đọc đề bài toán 2 Gv:Yêu cầu Hs thực hiện một số việc như sau: Hãy cho biết cách tổ chức dữ liệu của bài toán trên cần khai báo những biến nào? Hs:Dựa vào Input và Output để trả lời khai báo biến như sau: Var A,B:Array[1..20] Of Byte; C: Array[1..40] Of Byte; i,N,k:Byte; Gv: Hãy nêu đoạn chương trình nhập mảng A, B? Hs: Vận dụng đoạn chương trình nhập giá trị cho mảng một chiều để viết chương trình nhập mảng A, B? Gv: Quan sát và đưa ra đoạn chương trình chính xác trên máy chiếu. Viết đoạn chương trình tạo mảng C theo công thứ như sau: ak , Với i=2k -1, k=1,2,..,N ci = bk Với i=2k , k=1,2,..,N Hs:Trả lời For i:=1 To N Do c[2*i-1]:=a[i]; For i:=1 To N Do c[2*i]:=b[i]; Gv: Hãy viết đoạn chương trình in mảng C? Hs:Trả lời For i:=1 to 2*N do Writeln(‘c[‘,i,’[=’,c[i]); Bài toán 1: Tạo mảng A gồm n (n100) số nguyên, mỗi số có trị tuyệt đó không vượt quá 300. Tính tổng các phần tử của mảng là bội số của một số nguyên dương K cho trước. Var A:array[1..100] of Integer; S,N,i,K:Byte; Begin Randomize; Write('Nhap gia tri N='); Readln(N); Write('Nhap so nguyen K='); Readln(K); For i:=1 to n do A[i]:=random(300)-random(300); For i:=1 to N do Write(A[i]:5); Writeln; S:=0; For i:=1 To N do If a[i] mod k =0 then S:=S+a[i]; Writeln('Tong can tinh la S=',S); Readln; End. *Lưu ý: -Random(n):Cho giá trị là một số nguyên ngẫu nhiêu từ 0 đến n-1. -Radomize:Khởi tạo cơ chế sinh số ngẫu nhiên. Bài toán 2:(SBT.4.10/33): Cho hai dãy số nguyên A={a1, a2,..., aN} và B={b1, b2,...,bN}. Dãy C={c1, c2,..., c2n} được xác định như sau: ak , Với i=2k -1, k=1,2,..,N ci = bk Với i=2k , k=1,2,..,N Hãy lập trình: a.Nhập từ bàn phím số nguyên N (2<=N<=20), dãy số nguyên A, B. b.Tạo và đưa ra màn hình mảng C. Var A,B:Array[1..20] Of Byte; C: Array[1..40] Of Byte; i,N,k:Byte; Begin Write(‘Nhap N=’); Readln(N); For i:=1 To N Do Begin Write(‘Nha gia tri a[‘,i,’]=’); Readln(a[i]); End; For i:=1 To N Do Begin Write(‘Nha gia tri b[‘,i,’]=’); Readln(b[i]); End; For i:=1 To N Do c[2*i-1]:=a[i]; For i:=1 To N Do c[2*i]:=b[i]; For i:=1 to 2*N do Writeln(‘c[‘,i,’[=’,c[i]); Readln; End. IV.CỦNG CỐ(1’): Nhận xét buổi thực hành=> Đưa ra một số lổi thường gặp trong thực hành V.DẶN DÒ(1’): Đưa lên màn hình máy chiếu như sau: -Tiết sau học tiết: Bài tập và thực hành 4(T2) -Bài tập về nhà: 1. Làm một số bài tập sau: 4.7,4.8,4.9,4.10 /trang 32,33 (SBT) Tiết 26 Ngày soạn 20 tháng 11 năm 2008 BÀI TẬP A.MỤC ĐÍCH: 1.Kiến thức: - Củng cố các kiến thức cơ bản khi lập trình với kiểu dữ liệu mảng. - Làm quen với thuật toán sắp xếp nổi bọt. - Hs nắm được một số tổ hợp phím khi chạy chương trình Pascal. 2.Kỹ năng: -Rèn luyện kỷ năng sử dụng kiểu dữ liệu có cấu trúc, kỷ năng diễn đạt thuật toán bằng chương trình sử dụng kiểu dữ liệu mảng. -Rèn luyện kỷ năng nhận xét, phân tích và đề xuất cách giải bài toán sao cho chương trình chạy nhanh hơn. 3.Thái độ: - Tự giác, chủ động trong khi thực hành. B.PHƯƠNG PHÁP: Thực hành + Vấn đáp tái hiện C.CHUẨN BỊ: Giáo viên: Giáo án, SGK, SBT, máy chiếu. Học sinh: Chuẩn bị bài ở nhà. D. TIẾN TRÌNH LÊN LỚP: I.ỔN ĐỊNH LỚP(1’): Lớp 11A1 11B1 11B2 11B3 11B4 Vắng II.KIỂM TRA BÀI CŨ(5’): Gv đưa câu hỏi lên máy chiếu 1. Hãy nêu cách khai báo mảng hai chiều? 2.Hãy viết đoạn chương trình nhập và in mảng hai chiều? a.Đặt vấn đề(1’): Bài tập và Thực hành 4(T1) b.Triển khai bài mới: HOẠT ĐỘNG CỦA THẦY VÀ TRÒ NỘI DUNG KIẾN THỨC Hoạt động 1(20’) (Tìm hiểu cách sử dụng lệnh và kiểu dữ liệu mảng một chiều qua chương trình có sẳn) Gv: Đưa bài toán lên máy chiếu, yêu cầu Hs thực hiện theo các câu hỏi sau: Gv: Hãy chạy chương trình với bộ dữ liệu như sau: N=8 a1=7 a2=1 a3=4 a4=3 a5=8 a6=9 a7=10 a8=2 Cho nhận xét về kết quả của chương trình? Hs:Nhấn tổ hợp phím Ctrl + F9 để chạy chương trình và nhập giá trị vào cho các biến =>Nhận xét chương trình. Gv: Khai báo mảng A là khai báo gián tiếp hay trực tiếp? Đoạn chương trình nào cho phép hoán đổi giá trị trong mảng? Hs: Mảng a được khai báo gián tiếp. Đoạn chương trình hoán đổi: For j:=n downto 2 do For i:=1 to j-1 do If A[i]>A[i+1] then Begin Tg:=A[i]; A[i]:=A[i+1]; A[i+1]:=Tg; End; Gv:Yêu cầu Hs thực hành với bộ dữ liệu khác. Hs:Thực hành với bộ dữ liệu bất kỳ để kiểm tra tính đúng đắn của thuật toán. Hoạt động 2(15’) (Bài toán về đếm) Gv: Đưa yêu cầu ở trên máy chiếu về bài toán trên như sau: Khai báo thêm biến nguyên Dem và bổ sung vào chương trình những câu lệnh cần thiết để biến Dem tính số lần thực hiện tráo đổi trong thuật toán. Đưa kết quả tìm được ra màn hình.? Hs:Trả lời câu hỏi Dem:=0; For j:=n downto 2 do For i:=1 to j-1 do If A[i]>A[i+1] then Begin Tg:=A[i]; A[i]:=A[i+1]; A[i+1]:=Tg; Dem:=Dem+1; End; Gv:Quan sát Hs thực hành trên máy về cách sửa chương trình đếm số lần tráo đổi. Hs:Thực hành trên máy tính với một dữ liệu bất kỳ và quan sát kết của bài toán. Bài toán 1: a.Hãy tìm hiểu và chạy thử chương trình thực hiện thuật toán sắp xếp dãy số nguyên bằng thuật toán tráo đổi với các giá trị khác nhau của n dưới đây. Type dayso=array[1..250] of Integer; Var i,j,n,Tg:Integer; A:dayso; BEGIN Write('Nhap vao so phan tu cua day so: '); Readln(n); For i:=1 to n do Begin Write('Nhap gia tri a[ ',i,']= '); Readln(A[i]); End; For j:=n downto 2 do For i:=1 to j -1 do If A[i]>A[i+1] then Begin Tg:=A[i]; A[i]:=A[i+1]; A[i+1]:=Tg; End; Writeln('Day so duoc sap xep '); For i:=1 to n do Write(A[i]:5); Readln; END. b.Khai báo thêm biến nguyên Dem và bổ sung vào chương trình những câu lệnh cần thiết để biến Dem tính số lần thực hiện tráo đổi trong thuật toán. Đưa kết quả tìm được ra màn hình.? Type dayso=array[1..250] of Integer; Var Dem, i, j, n, Tg:Integer; A:dayso; BEGIN Write('Nhap vao so phan tu cua day so: '); Readln(n); For i:=1 to n do Begin Write('Nhap gia tri a[ ',i,']= '); Readln(A[i]); End; Dem:=0; For j:=n downto 2 do For i:=1 to j -1 do If A[i]>A[i+1] then Begin Tg:=A[i]; A[i]:=A[i+1]; A[i+1]:=Tg; Dem:=Dem+1; End; Writeln('Day so duoc sap xep '); For i:=1 to n do Write(A[i]:5); Writeln(‘So lan trao doi la’, Dem); Readln; END. IV.CỦNG CỐ(2’): -Nhận xét buổi thực hành=> Đưa ra một số lổi thường gặp trong thực hành. - Cần nắm thuật toán sắp xếp nổi bọt. V.DẶN DÒ(1’): Đưa lên màn hình máy chiếu như sau: -Tiết sau học tiết: Bài tập và thực hành 4(T2) -Bài tập về nhà: 1. Làm một số bài tập sau: Bài 1->9/79(SGK). 2.Viết chương trình tính bảng cửu chương. Tiết 27 Ngày soạn 27 tháng 11 năm 2008 KIỂU DỮ LIỆU XÂU (tiết 1) A.MỤC ĐÍCH: 1.Kiến thức: - Biết được một kiểu dữ liệu mới(Kiểu dữ liệu xâu) như: khai báo biến kiểu xâu, tham chiếu đến biến xâu,... - Phân biệt sự giống nhau va khác nhau giữa kiểu mảng kí tự với xâu ký tự. - Biết được các phép toán liên quan đến xâu. 2.Kỹ năng: Khai báo được biến xâu trong NNLT Pascal. Sử dụng biến xâu và các phép toán xâu để giải quyết một bài toán đơn giản. 3.Thái độ: Tiếp tục rèn luyện các phẩm chất cần thiết của nguời lập trình như: ý thức chọn và xây dựng kiểu dữ liệu, ý thức rèn luyện kỹ năng,... B.PHƯƠNG PHÁP: Nêu và giải quyết vấn đề + Thuyết trình C.CHUẨN BỊ: Giáo viên: Giáo án, SGK, SBT, máy chiếu. Học sinh: Chuẩn bị bài ở nhà. D. TIẾN TRÌNH LÊN LỚP: I.ỔN ĐỊNH LỚP(1’): Lớp 11A1 11B1 11B2 11B3 11B4 Vắng II.KIỂM TRA BÀI CŨ(3’): Đưa bài toán lên máy chiếu như sau Hãy viết chương trình nhập vào N số nguyên dương, dãy ký tự A={a1,a2,...,aN } được nhập vào từ bàn phím và thông báo dãy vừa nhập ra màn hình. Y/c:Hãy khai báo mảng ký tự ? a.Đặt vấn đề(1’): Trong thực tế có những bài toán không chỉ thuộc kiểu dữ liệu số mà còn cả dạng phi số đó là kiểu dữ liệu xâu. Bài học hôm nay chúng ta tìm hiểu xem kiểu dữ liệu xâu có khai báo biến như thế nào, ... phải có, phần khai báo có thể có hoặc không. B. Phần khai báo có thể có hoặc không có tuỳ thuộc vào từng chương trình cụ thể. C. Phần đầu có thể có hoặc không cũng được. D. Phần đầu nhất thiết phải có để khai báo tên chương trình con. V. Dặn dò (1p) Đọc trước nội dung bài: Ví dụ về cách viết và sử dụng chương trình con, SGK trang 96. Ngày soạn: / /2010 Tiết 40 Ngày giảng: Lớp 11A: . . . /. . . /. . . / (sĩ số:. . ./ . . . ) Lớp 11B: . . . /. . . /. . . / (sĩ số:. . ./ . . . ) Lớp 11C: . . . /. . . /. . . / (sĩ số:. . ./ . . . ) Lớp 11D: . . . /. . . /. . . / (sĩ số:. . ./ . . . ) Lớp 11E: . . . /. . . /. . . / (sĩ số:. . ./ . . . ) Bài 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (T1) A. MỤC TIÊU 1. Kiến thức: - Giúp học sinh nắm được: - Cấu trúc chung của thủ tục trong chương trình. - Phân biệt được tham số và tham trị. - Các khái niệm về biến toàn cục và biến cục bộ. 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 hai 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. - Cách viết lời gọi chương trình con trong thân chương trình chính. - Phân biệt được sự khác nhau cơ bản giữ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ộ. 3. Thái độ: - Tiếp tục rèn luyện các phẩm chất của người lập trình như tinh thần hợp tác, sẵn sàng làm việc theo nhóm, tuân thủ theo yêu cầu vì một việc chung. - Có ý thức lưu trữ dữ liệu một cách khoa học. B. PHƯƠNG PHÁP - Thuyết trình và giảng giải, kết hợp các hình ảnh trực quan. - Sử dụng các câu hỏi gợi mở, nêu vấn đề cho học sinh trả lời, tổ chức hoạt động theo nhóm C. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH 1. Giáo viên: Giáo án, máy chiếu Projector để hướng dẫn 2. Học sinh: SGK, vở. D. TIẾN TRÌNH LÊN LỚP I. Ổn định tổ chức (1p) II. Kiểm tra bài cũ (5p) Câu hỏi: Hãy nêu khái niệm, phân loại và chức năng của từng loại chương trình con. Đáp án: - 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. * Hàm (function): thực hiện một số thao tác nào đó và trả về một giá trị kiểu đơn giản thông qua tên hàm. * Thủ tục (Procedure): thực hiện các thao tác nhất định nhưng không trả về giá trị qua tên của nó. III. Bài mới 1. Đặt vấn đề (1p) - Bài học trước các em đã được tìm hiểu về chương trình con, cấu trúc và phân loại. Vậy chương trình con được viết như thế nào, sử dụng chúng ra sao, có gì giống và khác với chương trình chính không? Bài học hôm nay chúng ta sẽ tìm hiểu nội dung này. 2. Triển khai bài Hoạt động của giáo viên và học sinh Nội dung kiến thức Hoạt động 1: (theo từng nhóm) (12p) GV: Giới thiệu bài toán ví dụ mở đầu. Giới thệu cho học sinh cấu trúc thủ tục, vị trí khai báo của thủ tục, lời gọi thủ tục. HS: Quan sát, theo dõi ví dụ. GV: Vị trí của thủ tục nằm ở phần nào trong chương trình chính? HS: Ở phần khai báo, sau phần khai báo biến. GV: Cấu trúc của thủ tục gồm có mấy phần? HS: Ba phần: tên, khai báo, phần than. GV: Phân biệt sự giống và khác nhau giữa chương trình chính và chương trình con. HS: Giống: cấu trúc chung. Khác: trong phần tên, từ khoá đặt tên Prcedure có các tham số. GV: Yêu cầu học sinh xác định cấu trúc chung của thủ tục. - Lời gọi thủ tục ta viết ở phần nào trong chương trình? HS: Trong phần thân của chương trình. §18 Ví dụ về cách viết và sử dụng chương trình con 1. Cách viết và sử dụng thủ tục a. Cấu trúc của thủ tục Procedure []; [] Begin [] End; * Trong đó: - Phần đầu gồm tên dành riêng và tên thủ tục, danh sách tham số (có thể có hoặc không); - 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â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 thủ tục. Hoạt động 2: (Theo từng nhóm) (10p) GV: Chiếu ví dụ 2, yêu cầu học sinh nhận xét về thủ tục ve_HCN của ví dụ này với ví dụ trước. * Tổ chức hoạt động nhóm; - Phân nhóm từ 4-6 em - Công việc: Xác định bản chất của thủ tục ve_HCN; - Câu hỏi: câu lệnh nào thực hiện vẽ cạnh trên, hai cạnh bên và câu lệnh nào thực hiện vẽ cạnh dưới. - Kết thúc hoạt động: thu kết quả của các nhóm, yêu cầu các nhóm trình bày kết quả của nhóm. - Cho các nhóm nhận xét kết quả bài làm của nhau. - GV: nhận xét kết quả và đưa ra kết luận (có thể cho điểm các nhóm nếu bài làm tốt) GV: Trong chương trình chính ta vẽ tất cả bao nhiêu thủ tục. GV: Giới thiệu và tham số giá trị bvà tham số biến. b. Ví dụ về thủ tục * Ví dụ 1; Program VD_thutuc2; Uses crt; Var a, b, i: integer; Procedure Ve_HCN(chdai, chrong: integer); Var i,j: integer; Begin {Ve canh tren cua hinh chu nhat} For i:=1 to chdai do write(‘*’); Writeln; For j:=1 to chrong-2 do write(‘ ’); Begin Write(‘*’); For i:=1 to chdai-2 do write(‘ ’); Writeln(‘*’); End; For i:=1 to chdai do write(‘*’); Writeln; End; BEGIN {Bat dau chuong trinh chinh} Clrscr; Ve_HCN(25,10); Writeln; Writeln; Ve_HCN(5,10); Readln; Clrscr; a:=4; b:=2; For i:=1 to 4 do Begin Ve_HCN(a,b); Readln; clrscr; a:=a*2; b:=b*2; end; Readln; END. * Tham số giá trị: có hai chức năng - Đưa dữ liệu vào cho chương trình con; - Đưa dữ liệu chương trình con tìm được ra. * Tham số biến: trong lệnh gọi thủ tục, các tham số hình thức được thay bằng các tham số thực sự tương ứng là tên các biến chứa dữ liệu ra được gọi là các tham số biến. Hoạt động 3: (Chung cả lớp) (10p) GV: Chiếu VD_thambien1 len bảng. Hỏi: thủ tục trên thực hiện công việc gì; HS: Hoán đổi giá trị hai biến dữ liệu vào cho nhau. GV: Chạy chương trình và thực hiện đổi phần khai báo thành: Procedure Hoan_doi (x: integer; var y: integer); để HS quan sát và nhận xét sự khác nhau giữa tham biến và tham trị. Program VD_thambien1; Uses crt; Var a, b: integer; Procedure Hoan_doi (var x, y: integer); Var TG: integer; Begin TG:=x; x:=y; y:=TG; End; BEGIN Clrscr; A:= 5; b:=10; Writeln(a:6, b:6); Hoan_doi(a,b); Writeln(a:6,b:6); END. IV. Củng cố (5p) - Khi nào thì cần khai báo tham số trong phần khai báo của chương trình con theo kiểu tham biến, khi nào thì theo kiểu tham trị. - Phân biệt sự giống và khác nhau giữa tham biến và tham trị. V. Dặn dò (1p) - Xem tiếp nội dung còn lại của bài. - Viết thủ tục tìm và thông báo ra màn số lớn nhất giữa ba số a, b, c. Ngày soạn: / /2010 Tiết 41 Ngày giảng: Lớp 11A: . . . /. . . /. . . / (sĩ số:. . ./ . . . ) Lớp 11B: . . . /. . . /. . . / (sĩ số:. . ./ . . . ) Lớp 11C: . . . /. . . /. . . / (sĩ số:. . ./ . . . ) Lớp 11D: . . . /. . . /. . . / (sĩ số:. . ./ . . . ) Lớp 11E: . . . /. . . /. . . / (sĩ số:. . ./ . . . ) Bài 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (T2) A. MỤC TIÊU 1. Kiến thức: - Giúp học sinh nắm được: - Cấu trúc chung của thủ tục trong chương trình. - Phân biệt được tham số và tham trị. - Các khái niệm về biến toàn cục và biến cục bộ. 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 hai 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. - Cách viết lời gọi chương trình con trong thân chương trình chính. - Phân biệt được sự khác nhau cơ bản giữ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ộ. 3. Thái độ: - Tiếp tục rèn luyện các phẩm chất của người lập trình như tinh thần hợp tác, sẵn sàng làm việc theo nhóm, tuân thủ theo yêu cầu vì một việc chung. - Có ý thức lưu trữ dữ liệu một cách khoa học. B. PHƯƠNG PHÁP - Thuyết trình và giảng giải, kết hợp các hình ảnh trực quan. - Sử dụng các câu hỏi gợi mở, nêu vấn đề cho học sinh trả lời, tổ chức hoạt động theo nhóm C. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH 1. Giáo viên: Giáo án, máy chiếu Projector để hướng dẫn 2. Học sinh: SGK, vở. D. TIẾN TRÌNH LÊN LỚP I. Ổn định tổ chức (1p) II. Kiểm tra bài cũ III. Bài mới 1. Đặt vấn đề (1p) - Bài học trước các em đã được tìm hiểu về chương trình con, cấu trúc và phân loại. Vậy chương trình con được viết như thế nào, sử dụng chúng ra sao, có gì giống và khác với chương trình chính không? Bài học hôm nay chúng ta sẽ tìm hiểu nội dung này. 2. Triển khai bài Hoạt động của giáo viên và học sinh Nội dung kiến thức Hoạt động 1: (theo từng nhóm) (12p) GV: Cho biết tên và cách sử dụng một số hàm đã học? HS: Hàm abs(), sqrt(),.. - Viết tên hàm cần gọi và các tham số. - Lời gọi hàm được viết trong các biểu thức như một toán hạng, thậm chí là tham số của một hàm khác. GV: Chuẩn xác. - Điểm khác biệt giữa thủ tục và hàm là gì? HS: Trong than hàm cần có lệnh gán giá trị cho tên hàm. GV: hãy so sánh sự giống và khác nhau giữa hàm và thủ tục? HS: giống: có cấu trúc tương tự, có các tham số,.. - Khác: Tên hàm phải quy định kiểu dữ liệu; Trong than hàm phải có lệnh: tên_hàm:= biểu_thức; Bắt đầu của hàm là từ khoá Function. §18 Ví dụ về cách viết và sử dụng chương trình con 1. Cách viết và sử dụng hàm a. Cấu trúc của thủ tục Function []: ; [] Begin [] := ; End; Hoạt động 2: (Theo từng nhóm) (15p) GV: Chiếu ví dụ rút gọn phân số. - Trong chương trình có sử dụng bao nhiêu hàm. HS: một hàm. GV: hàm UCLN(x,y) dùng để làm gì? - Lời gọi hàm nằm ở đâu? Có gì khác với thủ tục trong lời gọi hàm? HS: Lệnh a:=UCLN(tuso, mauso) ; - Lời gọi hàm phải được đặt trong một lệnh hoặc trong một lời gọi chương trình con khác. GV: Có những biến nào được sử dụng trong chương trình? Các biến đó được khai báo ở chổ nào trong chương trình chính? HS: tuso, mauso, a : khai báo trong chương trình chính. - sodu: được khai báo trong chương trình con. GV: Yêu cầu học sinh phân biệt sự giống và khác nhau của biến toàn cục và biến cục bộ. GV: chạy chương trình để học sinh kiểm nghiệm và tự rút ra kết luận. b. Ví dụ về hàm * Ví dụ 1; Program Rutgon_Phanso; Uses crt; Var a, tuso, mauso: integer; Function UCLN(x,y: integer):integer; Var sodu: integer; Begin While y0 do Begin Sodu:= x mod y; X:= y; Y:= sodu; End; UCLN:=x; End; BEGIN {Bat dau chuong trinh chinh} Clrscr; Write(‘Nhap tu so va mau so: ‘); readln(tuso,mauso); A:=UCLN(tuso, mauso); If a>1 then Begin Tuso:= tuso div a; Mauso:= mauso div a; end; Writeln(tuso:5, ‘/’ ,mauso:5); Readln; END. Hoạt động 3: (Chung cả lớp) (10p) GV: Chiếu ví dụ Minbaso lên bảng minh hoạ cho học sinh cách gọi hàm. HS: Chú ý quan sát và theo dõi. * Ví dụ 2: Program Minbaso; Uses crt; Var a, b, c: real; Function Min(a,b: real):real; Begin If a<b then min:=a Else min:=b; End; BEGIN {Bat dau chuong trinh chinh} Clrscr; Write(‘Nhap vao ba so: ‘); readln(a,b,c); Writeln(‘So nho nhat trong ba so la: ‘,min(a,b,c); Readln END. IV. Củng cố (5p) - Phân biệt sự giống và khác nhau giữa hàm và thủ tục - Phân biệt sự giống và khác nhau giữa biến toàn cục và biến cục bộ V. Dặn dò (1p) - Xem trước nội dung bài thực hành số 6. - Viết hàm tìm số lớn nhất giữa ba số a, b, c. VI. Rút kinh nghiệm:
Tài liệu đính kèm: