Sáng kiến kinh nghiệm chương trình con

  • Số trang: 11 |
  • Loại file: DOC |
  • Lượt xem: 60 |
  • Lượt tải: 0
nguyen-thanhbinh

Đã đăng 8358 tài liệu

Mô tả:

BM 01-Bìa SKKN SỞ GIÁO DỤC VÀ ĐÀO TẠO ĐỒNG NAI TRƯỜNG THPT XUÂN HƯNG Mã số: ................................ SÁNG KIẾN KINH NGHIỆM CHƯƠNG TRÌNH CON Người thực hiện: Nguyễn Văn Bính Lĩnh vực nghiên cứu: Quản lý giáo dục  Phương pháp dạy học bộ môn: Tin học 11 Phương pháp giáo dục   Lĩnh vực khác: .........................................................  Có đính kèm:  Mô hình  Phần mềm  Phim ảnh Năm học: 2011-2012  Hiện vật khác BM02-LLKHSKKN SƠ LƯỢC LÝ LỊCH KHOA HỌC I. THÔNG TIN CHUNG VỀ CÁ NHÂN 1. Họ và tên: NGUYỄN VĂN BÍNH 2. Ngày tháng năm sinh: 15/08/1982 3. Nam, nữ: Nam 4. Địa chỉ: Ấp 2A, Xuân Hưng, Xuân Lộc, Đồng Nai 5. Điện thoại: (CQ)/ (NR); ĐTDĐ: 01667489510 6. Fax: E-mail: vanbinh2007@gmail.com 7. Chức vụ: Giáo Viên 8. Đơn vị công tác: TRƯỜNG THPT XUÂN HƯNG II. TRÌNH ĐỘ ĐÀO TẠO - Học vị (hoặc trình độ chuyên môn, nghiệp vụ) cao nhất: CỬ NHÂN - Năm nhận bằng: 2004 - Chuyên ngành đào tạo: TOÁN – TIN HỌC III.KINH NGHIỆM KHOA HỌC - Lĩnh vực chuyên môn có kinh nghiệm: Giảng dạy môn Tin học Số năm có kinh nghiệm: 6 năm - Các sáng kiến kinh nghiệm đã có trong 5 năm gần đây: BM03-TMSKKN CHƯƠNG TRÌNH CON I. LÝ DO CHỌN ĐỀ TÀI - Lập trình là vấn đề tương đối mới đối với học sinh THPT, đặt biệt là học sinh vùng nông thôn như trường THPT Xuân Hưng. Trong quá trình lập trình nếu học sinh không nắm vững về chương trình con thì thường dẫn đến các sai sót dẫn tới chương trình không đạt được kết quả như mong muốn. - Để học sinh có thể hiểu kĩ hơn và nhận thấy được lợi ích của chương trình con trong quá trình lập trình để giải quyết các bài toán. Tạo hứng thú trong quá trình học tập. II. THỰC TRẠNG TRƯỚC KHI THỰC HIỆN CÁC GIẢI PHÁP CỦA ĐỀ TÀI 1. Thuận lợi - Học sinh đã được tiếp cận một số thuật toán ở lớp dưới. - Đã sử dụng ngôn ngữ lập trình Pascal để viết chương trình giải quyết các bài toán trong quá trình học. - Được sự hỗ trợ của các thành viên trong tổ. 2. Khó khăn - Do bước đầu tiếp cận việc lập trình nên khả năng còn hạn chế. - Khả năng diễn đạt cách giải một bài toán sang thuật toán còn nhiều khó khăn do học sinh vùng nông thôn khả năng tin học còn hạn chế. - Khả năng chuyển đổi từ thuật toán đã biết sang ngôn ngữ lập trình cụ thể còn gặp nhiều khó khăn. III.NỘI DUNG ĐỀ TÀI 1. Cơ sở lý luận - Ngày nay việc lập trình để giải quyết các bài toán trong các lĩnh vực đã trở nên rất phổ biến. Để giải quyết các bài toán lớn thì cách lập trình không sử dụng chương trình con khó có thể thực hiện đặc biệt là đối với các bài toán lớn cần nhiều người tham gia. - Làm cơ sở cho học sinh sau này tiếp cận với phương pháp lập trình khác. 2. Nội dung, biện pháp thực hiện các giải pháp của đề tài - Nêu ra cách lập trình giải quyết một số bài toán thường gặp trong toán học và các bài tập liên quan để học sinh hiểu rõ hơn cách viết chương trình con trong Pascal từ đó có thể tự mình giải quyết một số bài toán tương tự . A. TÓM TẮT LÝ THUYẾT: I/ Khái niệm chương trình con: 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. II/ Phân loại và cấu trúc chương trình con 1. Phân loại - 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 các tháo tác nhất định nhưng không trả về giá trị qua tên của nó. 2. Cấu trúc chương trình con a. Cấu trúc của thủ tục: Procedure [(danh sách tham số)]; [] Begin []; End; b. Cấu trúc của hàm: - Hàm có cấu trúc tương tự như thủ tục, tuy nhiên có khác nhau phần đầu. - Khai báo phần đầu một hàm như sau: Function [(danh sách tham số)]:; - Kiểu dữ liệu là kiểu dữ liệu của giá trị mà hàm trả vể và chỉ có thể là các kiểu: integer, real, char, boolean, string. - Khác với thủ tục, trong thân hàm cần có lệnh gán giá trị cho tên hàm: := ; 3. Một số khái niệm - Tham số hình thức: Các biến được khai báo cho dữ liệu vào/ra được gọi là tham số hình thức. - Tham số thực sự: Để thực hiện (gọi) một chương trình con, ta cần phải có lệnh gọi nó tương tự lệnh gọi hàm hay thủ tục chuẩn, bao gồm tên chương trình con với tham số (nếu có) là các hằng và biến chứa dữ liệu và và ra tương ứng với các tham số hình thức đặt trong cặp dấu ngoặc ( và ). Các hằng và biến này được gọi là các tham số thực sự. - Biến cục bộ là biến được khai báo để dùng riêng trong chương trình con - Biến toàn cục là biến được dùng tại mọi vị trí trong chương trình - Tham số giá trị ( tham trị) 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à các giá trị cụ thể được gọi là các tham số giá trị. - Tham số biến (tham 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à các biến chứa dữ liệu ra được gọi là các tham số biến. - Để phân biệt tham số biến và tham trị, Pascal sử dụng từ khóa Var để khai báo tham số biến. B. BÀI TẬP ÁP DỤNG: I/ BÀI TẬP SỬ DỤNG THỦ TỤC Bài tập 1: Viết chương trình nhập vào số nguyên dương N (N≤ 300) và dãy A gồm N số nguyên. Sắp xếp dãy số vừa nhập thành dãy không giảm và xuất dãy được sắp xếp ra ngoài màn hình. Phân tích: - Thiết kế một chương trình con phục vụ việc nhập dãy số. - Thiết kế một chương trình con phục vụ việc xuất dãy số ra màn hình. - Thiết kế một chương trình con dùng để thực hiện công việc sắp xếp. - Các chương trình con trên không cần trả về một giá trị cụ thể nào nên dùng thủ tục. - Đối với thủ tục nhập mảng cần phải dữ lại các thay đổi bên trong nên sử dụng tham số biến. - Đối với thủ tục sắp xếp cần giữ lại các giá trị sau khi sắp xếp nên khai báo mảng là tham số biến, số lượng phần tử không thay đổi nên dùng tham trị. Chương trình: Program sapxepdayso; Uses CRT; Const Nmax = 300; Type ArrInt = Array[1..300] of integer; Var A: ArrInt; N: integer; Procedure Nhap_Mang(var A: ArrInt; var M: integer); Var i: integer; Begin Write(‘Nhap so phan tu cua day so:’); Readln(M); For i:=1 to M do Begin Write(‘A[‘,i,’]=’); Readln(A[i]); End; End; Procedure Hoan_doi(var a,b:integer); Var tam: integer; Begin tam:= a; a := b; b:= tam; End; Procedure Sap_xep(var A: ArrInt; M: integer); Var i, j: integer; Begin For j:=M downto 2 do For i:=1 to j-1 do If A[i] > A[i+1] then Hoan_doi(A[i],A[i+1]); End; Procedure Xuat_mang(A: ArrInt; M: integer); Var i: integer; Begin For i:=1 to M do Write(A[i]: 5); End; BEGIN Clrscr; Nhap_mang(A,n); Sap_xep(A,n); Xuat_mang(A,n) Readln END. Bài tập tương tự: 1. Viết chương trình nhập vào một dãy số nguyên dương B gồm M phần tử (M≤300). Tìm giá trị nhỏ nhất của dãy. 2. Viết chương trình nhập vào số nguyên dương N (N≤ 300) và dãy A gồm N số nguyên. Sắp xếp dãy số vừa nhập thành tăng và xuất dãy được sắp xếp ra ngoài màn hình. Bài tập 2: Viết chương trình đọc dữ liệu từ tệp A.IN đưa vào mảng A: dòng đầu tiên trong tệp A.IN chứa số phần tử của mảng A, dòng thứ 2 chứa các số nguyên là các giá trị của các phần tử trong mảng mỗi số cách nhau bởi một dấu cách, sau đó tạo ra mảng B trong đó B[i] là tổng i phần tử đầu tiên trong mảng A. Ghi các giá trị của mảng B ra tệp B.OUT. Phân tích: - Thiết kế một thủ tục phục vụ đọc dữ liệu từ tệp. - Thiết kế một thủ tính các giá trị của dãy B - Thiết kế một thủ tục ghi các giá trị của dãy B ra tệp Chương trình: program TEP_DL; const input='A.IN'; output='B.OUT'; max=300; var A, B:array[1..max] of integer; i, n: integer; procedure Doc_DL; var f:text; i: integer; Begin assign(f,input); reset(f); readln(f,n); for i:=1 to n do read(f,A[i]); close(f); End; procedure XuLi_DL; var i:integer; Begin B[1]:=A[1]; for i:=2 to n do B[i]:=B[i-1]+A[i]; End; Procedure Ghi_DL; var i: integer; f:text; Begin assign(f,output); rewrite(f); for i:=1 to n do write(f,B[i]:3); close(f); End; Begin Doc_DL; XuLi_DL; Ghi_DL; End. Bài tập tương tự: 1 Viết chương trình sắp xếp dãy số chứa trong tệp INPUT.IN (dòng 1: Chứa số n, dòng 2:chứa n số nguyên cách nhau bởi dấu cách). Ghi dãy số được sắp tăng dần ra tệp OUTPUT.OUT. 2 Viết chương trình đọc dãy số chứa trong tệp INPUT.IN (dòng 1: Chứa số n, dòng 2:chứa n số nguyên cách nhau bởi dấu cách). Cho biết trong dãy số có bao nhiêu số chẵn, bao nhiêu số lẻ và tính tổng số chẵn, tổng số lẻ rồi ra tệp OUTPUT.OUT( dòng đầu tiên ghi 2 số: số đầu tiên là số lượng số chẵn trong dãy, số kế tiếp là tổng các số chẵn; dòng thứ 2 ghi 2 số: số đầu tiên là số lượng số lẻ trong dãy, số kế tiếp là tổng các số lẻ) II. BÀI TẬP SỬ DỤNG HÀM Bài toán 1: Viết chương trình tính n giai thừa. Trong đó n là số nguyên dương được nhập vào từ bàn phím khi chạy chương trình. Phân tích: Cần thiết kế một chương trình con(hàm) để tính giai thừa Chương trình: Program Giai_thua; Uses CRT; Var n: word Fucntion GT(k: word): longint; Var T, i: word; Begin T:= 1; For i:=1 to k do T:= T* i; GT:=T; End; BEGIN Clrscr; Write(‘nhap n:’); readln(n); Write(n,’!=’, GT(n)); Readln END. Bài tập tương tự: 1. Viết chương trình tính tổng S= a! + b! + c!. Trong đó a, b, c là các số nguyên dương được nhập vào từ bàn phím khi chạy chương trình. 2. Viết chương trình tính chỉnh hợp Ank . Trong đó n, k là các số nguyên dương được nhập vào từ bàn phím khi chạy chương trình. k 3. Viết chương trình tính tổ hợp Cn . Trong đó n, k là các số nguyên dương được nhập vào từ bàn phím khi chạy chương trình. Bài toán 2: Tính tổng lũy thừa S=ax+by+cz. Trong đó a, b, c là các số thực; x, y, z là các số nguyên dương. Giá trị của các số này được nhập vào từ bàn phím khi chạy chương trình. Program Tong_luy_thua; Uses CRT; Var a,b,c: real; x, y, z: word; Fucntion Luythua(x:real; k: word): real; Var i: integer; T:real; Begin T:= 1; For i:=1 to k do T:= T* x; Luythua:=T; End; BEGIN Clrscr; Write(‘nhap a,b,c,x,y,z:’); readln(a,b,c,x,y,z); S:=Luythua(a,x)+ Luythua(b,y)+Luythua(c,z); Write(‘Tong luy thua:’,s:8:2); Readln END. Bài tập tương tự: xk  y q 1. Viết chương trình tính giá trị T= 20 20 . Trong đó x, y là số thực; q, k là các số x y nguyên, các so này được nhập vào từ bàn phím khi chạy chương trình. 2. Viết chương trình tính tổng S= x100+ y200+z50. Trong đó x, y, z là các số thực được nhập vào từ bàn phím khi chạy chương trình. Bài tập 3: Cho chiều dài của ba cạnh tam giác. Viết chương trình tính chu vi, diện tích, chiều dài các đường cao, chiều dài các đường trung truyến của tam giác. Program Tam_giac; Uses CRT; Fucntion Chuvi(a,b,c: real): real; Begin Chuvi:=a+b+c; End; Fucntion Dientich(a,b,c: real): real; Var p: real; Begin p:=(a+b+c)/2; Dientich := sqrt(p*(p-a)*(p-b)*(p-c)); End; Fucntion Trungtuyen(a,b,c: real): real; Begin Trungtuyen:=sqrt(((b*b+c*c )- a*a)/(4*a)) End; Fucntion Chieucao( a,b,c, x: real): real;(*x là chiều cao của cạnh tương ứng cần tính*) Begin Chieucao := 2*Dientich(a,b,c)/x; End; BEGIN Clrscr; Write(‘nhap a, b, c:’); readln(a,b,c); If (a+b>c) and (b+c>a) and (a+c>b) then Begin Write(‘Chu vi tam giac’, Chuvi(a,b,c):5:2); Write(‘Dien tich tam giac’, Dientich(a,b,c):5:2); Write(‘Trung tuyen m_a’, Trungtuyen(a,b,c):5:2); Write(‘Trung tuyen m_b’, Trungtuyen(b,a,c):5:2); Write(‘Trung tuyen m_c’, Trungtuyen(c,b,a):5:2); Write(‘Chieu cao h_a’, Chieucao(a,b,c,a):5:2); Write(‘Chieu cao h_b’, Chieucao(a,b,c,b):5:2); Write(‘Chieu cao h_c’, Chieucao(a,b,c,c):5:2); End Else Write(‘Ba so vua nhap khong tao thanh ba canh cua tam giac’); Readln END. Bài tập tương tự: 1. Viết chương trình tính chu vi, diện tích hình chữ nhật có chiều dài và chiều rộng các cạnh là a, b. 2. Viết chương trình tính chu vi, diện tích hình tròn có bán kính R. 3. Viết chương trình tính chu vi, diện tích hình vuông có cạnh a. Bài toán 4: Viết chương trình nhập vào hai số nguyên dương. Tìm bội số chung nhỏ nhất của 2 số này. Program BT_UCLN; Var x, y: word; Function UCLN(a,b:word):word; Begin a:= abs(a); b:=abs(b); while a<> b do begin if a > b then a:=a-b; if b > a then b:= b- a; end; UCLN:= a; End; BEGIN Write(‘x,y:’);Readln(x,y); Write(‘BCNN cua’, x, ‘va’, ‘y:’, (x*y) div UCLN(x,y)); Readln END. Bài tập tương tự: 1. Viêt chương trình tìm ước chung lớn nhất của 2 số nguyên dương. IV. KẾT QUẢ Thông qua một số bài tập mẫu giúp cho học sinh nắm được phương pháp giải chung, từ đó áp dụng để giải một số bài toán cơ bản có sử dụng chương trình con. V. BÀI HỌC KINH NGHIỆM - Trong quá trình giảng dạy cần khuyến khích học sinh tích cực tham gia thảo luận, phát biểu ý kiến, tránh áp đặt cho học sinh. - Có thể dùng các bài tập trên trong giờ thực hành thay cho các tiết thực hành trong sách giáo khoa đã được giảm tải. - Đối với các lớp có học lực thấp, có thể giảm bớt các chương trình về các thủ tục thao tác trên mảng một chiều và tập trung nhiều hơn vào các chương trình trong phần sử dụng hàm. VI. KẾT LUẬN Để học sinh đạt được kết quả tốt hơn nữa thì đòi hỏi học sinh phải nắm vững các kiến thức về cách giải các bài toán trong toán học để phân tích các bài toán thành thuật toán để viết chương trình. Với đề tài này có thể mở rộng cho toàn bộ học sinh tuy nhiên cần chú ý đối tượng áp dụng sao cho có kết quả tốt nhất. VII. TÀI LIỆU THAM KHẢO Ghi tên tài liệu tham khảo và tên tác giả đã được sử dụng trích dẫn trong sáng kiến kinh nghiệm. 1. Sách giáo khoa Tin học 11 - Hồ Sĩ Đàm – Nhà xuất bản giáo dục - 2006. 2. Sách giáo viên Tin học 11 - Hồ Sĩ Đàm – Nhà xuất bản giáo dục - 2006. 3. Sách bài tập Tin học 11 - Hồ Sĩ Đàm - Nhà xuất bản giáo dục - 2006. 4. Sách giáo khoa Tin học 10 - Hồ Sĩ Đàm - Nhà xuất bản giáo dục - 2006. NGƯỜI THỰC HIỆN (Ký tên và ghi rõ họ tên) NGUYỄN VĂN BÍNH SỞ GD&ĐT ĐỒNG NAI TRƯỜNG THPT XUÂN HUNG CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc Xuân Hưng, ngày 15 tháng 05 năm 2012 PHIẾU NHẬN XÉT, ĐÁNH GIÁ SÁNG KIẾN KINH NGHIỆM Năm học: 2011-2012 ––––––––––––––––– Tên sáng kiến kinh nghiệm: CHƯƠNG TRÌNH CON Họ và tên tác giả: NGUYỄN VĂN BÍNH Đơn vị (Tổ): Toán – Tin , trường THPT Xuân Hưng Lĩnh vực: Quản lý giáo dục  Phương pháp dạy học bộ môn: TIN HỌC 11 Phương pháp giáo dục   Lĩnh vực khác: ....................................................  1. Tính mới - Có giải pháp hoàn toàn mới  - Có giải pháp cải tiến, đổi mới từ giải pháp đã có  2. Hiệu quả - Hoàn toàn mới và đã triển khai áp dụng trong toàn ngành có hiệu quả cao  - Có tính cải tiến hoặc đổi mới từ những giải pháp đã có và đã triển khai áp dụng trong toàn ngành có hiệu quả cao  - Hoàn toàn mới và đã triển khai áp dụng tại đơn vị có hiệu quả cao  - Có tính cải tiến hoặc đổi mới từ những giải pháp đã có và đã triển khai áp dụng tại đơn vị có hiệu quả  3. Khả năng áp dụng - Cung cấp được các luận cứ khoa học cho việc hoạch định đường lối, chính sách: Tốt  Khá  Đạt  - Đưa ra các giải pháp khuyến nghị có khả năng ứng dụng thực tiễn, dễ thực hiện và dễ đi vào cuộc sống: Tốt  Khá  Đạt  - Đã được áp dụng trong thực tế đạt hiệu quả hoặc có khả năng áp dụng đạt hiệu quả trong phạm vi rộng: Tốt  Khá  Đạt  XÁC NHẬN CỦA TỔ CHUYÊN MÔN (Ký tên và ghi rõ họ tên) THỦ TRƯỞNG ĐƠN VỊ (Ký tên, ghi rõ họ tên và đóng dấu)
- Xem thêm -