I. Lý do Trong nghiệp vụ của người thầy giáo có hai vấn đề quan trọng: thứ nhất là thực tiễn về tiềm năng những kiến thức lý thuyết mà họ được học rất cơ bản. Thứ hai là thực tiễn về nghiệp vụ thầy giáo phải biết cách truyền thụ kiến thức phù hợp với trình độ của học sinh. Trong đó, thực tiễn thứ hai là điều quyết định trong nghiệp vụ của thầy giáo, nó đánh giá chất lượng giảng dạy của thầy giáo. Hai thực tiễn trên vừa mâu thuẫn với nhau, lại vừa thống nhất với nhau. Thầy giáo không thể mang hết các kiến thức lý thuyết cao xa và trừu tượng dạy cho học sinh, nhưng cũng không thể dạy tốt cho học sinh nếu thầy giáo hiểu biết quá ít.
SKKN: ĐỔI MỚI PHƯƠNG PHÁP DẠY HỌC MÔN TIN HỌC LỚP 11 NỘI DUNG CHƯƠNG TRÌNH CON NHẰM GÂY HỨNG THÚ VÀ NÂNG CAO KẾT QUẢ HỌC TẬP MÔN TIN HỌC PHẦN I MỞ ĐẦU I Lý Trong nghiệp vụ người thầy giáo có hai vấn đề quan trọng: thứ thực tiễn tiềm - kiến thức lý thuyết mà họ học Thứ hai thực tiễn nghiệp vụ - thầy giáo phải biết cách truyền thụ kiến thức phù hợp với trình độ học sinh Trong đó, thực tiễn thứ hai điều định nghiệp vụ thầy giáo, đánh giá chất lượng giảng dạy thầy giáo Hai thực tiễn vừa mâu thuẫn với nhau, lại vừa thống với Thầy giáo mang hết kiến thức lý thuyết cao xa trừu tượng dạy cho học sinh, dạy tốt cho học sinh thầy giáo hiểu biết Đổi phương pháp dạy học theo hướng tích cực hóa hoạt động học sinh q trình lâu dài; khơng thể hai mà đông đảo giáo viên từ bỏ kiểu dạy học truyền thụ kiến thức, tiếp thu thụ động quen thuộc từ lâu việc phát triển phương pháp tích cực đòi hỏi số điều kiện, quan trọng thân giáo viên cần có nỗ lực để tìm tòi, sáng tạo cơng tác giảng dạy Đổi phương pháp dạy học vấn đề quan trọng, với môn Tin học đưa vào giảng dạy trường phổ thông Là giáo viên giảng dạy mơn này, theo em khơng phải tìm nhiều tốn khó, tốn hay để giảng dạy cho học sinh Mà vấn đề đặt cần phải tích cực tìm tòi, sáng tạo việc đưa tốn để giúp cho học sinh có hứng thú, tìm tòi sáng tạo q trình giài học tập, từ biết vận dụng linh hoạt tình cụ thể thực tế Trong việc giảng dạy cho học sinh, việc giúp học sinh lĩnh hội kiến thức Thầy giáo phải biết kích thích tính tích cực, sáng tạo say mê học hỏi học sinh việc học tập em Bởi vì, việc học tập tự giác, tích cực, chủ động sáng tạo đòi hỏi học sinh phải có ý thức mục tiêu đặt tạo động lực bên thúc đẩy thân họ hoạt động để đạt mục tiêu Turbo Pascal ngơn ngữ lập trình có cấu trúc, dùng phổ biến nước ta công tác giảng dạy, lập trình tính tốn, đồ họa Turbo Pascal dùng chương trình giảng dạy Tin học hầu hết trường đại học, cao đẳng, trung học phổ thông Trong vấn đề Tin học đưa vào giảng dạy chương trình bậc học phổ thơng Khi nói đến vấn đề dạy học lập trình cho học sinh, vấn đề dạy học cho học sinh chương trình vấn đề chiếm vai trò quan trọng Bởi vì, sử dụng chương trình để hợp lý hóa, tiết kiệm cơng sức lập trình Đồng thời, chương trình giúp cho người lập trình dễ sửa chữa, dễ kiểm tra Vấn đề đặt là: gợi động hoạt động cho học sinh giảng dạy chương trình nào? Đó vấn đề mà thân em quan tâm Trên sở mà học sinh học tập mơn lập trình Pascal, học sinh sử dụng cách thành thạo ngôn ngữ khác để hoàn thành tốt ứng dụng thực tế Bởi vì, ngơn ngữ Pascal có tính cấu trúc mạnh, có sở đòi hỏi chương trình phải chặt chẽ, logic Đặc biệt, học chương trình con, học sinh hiểu cách sâu sắc ngơn ngữ lập trình, nhìn nhận vấn đề cách sáng sủa hơn, chặt chẽ chương trình giúp cho em hồn thành chương trình lớn vượt tốn bình thường mà nội mơn học đòi hỏi Chính vậy, việc gợi động cho học sinh việc dạy học chương trình cơng việc quan trọng, đòi hỏi giáo viên cần phải nỗ lực tìm tòi, sáng tạo giúp cho học sinh nhìn nhận vấn đề cách tích cực hơn, sáng tạo giúp cho em u thích nhiều ngơn ngữ lập trình Pascal II Định hướng Mục đích Tạo động cho học sinh ý thức ý nghĩa hoạt động sử dụng chương trình cơng việc lập trình Từ đó, học sinh liên hệ , vận dụng sáng tạo vào giải tốn lập trình tình thực tế Nhiệm vụ Qua việc nghiên cứu vấn đề chương trình ngơn ngữ lập trình Pascal, tài liệu phương pháp giảng dạy Từ đó, đưa biện pháp gợi động hoạt động cho học sinh thông qua ví dụ cụ thể chương trình III Phương pháp Trong nghiên cứu lý luận người ta dựa vào tài liệu sẵn có, lý thuyết khẳng định, thành tựu nhân loại lĩnh vực khác Tâm lý học, Giáo dục học, Tin học, để xem xét vấn đề, tìm giải pháp hợp lý có sức thuyết phục vận dụng vào PPDH Tin học Người ta nghiên cứu kết thân chuyên ngành PPDH Tin học để kế thừa hay, phê phán gạt bỏ dở, bổ xung hồn chỉnh nhận thức đạt Những hình thức thường dùng nghiên cứu lý luận là: - Phân tích tài liệu lý luận : Giúp chọn đề tài, đề mục đích nghiên cứu, hình thành giả thuyết khoa học, xác định tư tưởng chủ đạo đánh giá kiện Khi nghiên cứu lý luận, ta cần phân tích, tổng hợp, so sánh, khái quát để tìm ý Cái lý thuyết hồn tồn mới, đan kết với cũ, tổng hợp nét riêng lẻ chứa cũ, nêu bật chất từ cũ, bổ xung, cụ thể hóa lý thuyết cũ - So sánh quốc tế : Giúp lựa chọn, xây dựng phương án tác động giáo dục sở đánh giá, so sánh tài liệu, cách làm nước khác - Phân tích tiên nhiệm : Thường dựa vào yếu tố lịch sử, cách tiếp cận khác lý thuyết, cách định nghĩa khác khái niệm, để dự kiến quan niệm có học sinh kiến thức Tin học Nó dùng để kiểm nghiệm tượng, q trình có thỏa mãn tiêu chuẩn, yêu cầu, điều kiện đặt hay không Quan sát điều tra sử dụng rộng rãi nghiên cứu giáo dục Đó phương pháp tri giác có mục đích tượng giáo dục để thu lượm số liệu, tài liệu, kiện cụ thể đặc trưng cho trình diễn biến tượng mà ta dự định khảo sát Chúng ta quan tâm đến chất lượng mối quan hệ, hoạt động, tình Điều tra giống quan sát chỗ dựa vào khai thác tượng có sẵn, khơng chủ động gây nên tác động sư phạm, quan sát thiên xuất phát từ dấu hiệu bên ngồi, điều tra khai thác thơng tin sâu kín từ bên trong, chẳng hạn cho làm kiểm tra đánh giá Quan sát - điều tra giúp theo dõi tượng giáo dục theo trình tự thời gian, phát biến đổi số lượng, chất lượng gây tác động giáo dục Nó giúp ta thấy vấn đề thời cấp bách đòi hỏi phải nghiên cứu góp phần giải nhiệm vụ nghiên cứu Mơi trường tự nhiên nguồn cung cấp liệu trực tiếp cho ta Người nghiên cứu đến trực tiếp nơi mà họ quan tâm để quan sát thu thập liệu, hoạt động hiểu tốt mơi trường tự nhiên, ngữ cảnh mà chúng xuất Quan sát - điều tra thực tiễn sư phạm, chẳng hạn thăm lớp dự giúp nhận thức thực trạng dạy học Tin, phát vấn đề thời cấp bách cần nghiên cứu, giúp ta thu tài liệu sinh động bổ ích cho nhiệm vụ nghiên cứu Trong quan sát - điều tra diễn biến thực tượng sư phạm, có người ta tình cờ phát kiện, tượng sư phạm dự kiến ban đầu Tổng kết kinh nghiệm thực chất đánh giá khái quát hóa kinh nghiệm thu thập hoạt động thực tiễn, từ phát vấn đề cần khẳng định để đưa áp dụng rộng rãi cần tiếp tục nghiên cứu hay loại bỏ Nó có nguồn gốc từ kinh nghiệm, mang tính khoa học, lĩnh hội, kiểm chứng từ trình hoạt động thực tiễn sinh động Bài học kinh nghiệm cụ thể hóa cách sáng tạo tư tưởng, luận điểm, lý luận giáo dục vào sống Trong trình nghiên cứu tổng kết kinh nghiệm, có người ta khám phá mối liên hệ có tính quy luật tượng giáo dục Bài học kinh nghiệm cần trình bày theo trình tự sau: - Tên học kinh nghiệm - Nêu bối cảnh xuất vấn đề mà giải dẫn đến học kinh nghiệm - Những kết đạt gắn với nhiệm vụ nghiên cứu - Hệ thống biện pháp vận dụng đạt kết cao - Đánh giá tác dụng, hiệu học kinh nghiệm, đưa nhận định có tính khái qt học mang tính lý luận Tổng kết kinh nghiệm không đơn giản trình bày lại cơng việc làm kết đạt Là phương thức nghiên cứu khoa học, phải tiến hành theo quy trình nghiêm túc, Những bước trình phát là: - Nêu mục đích u cầu phát - Triển khai hình thức phát - Thẩm định, bổ sung thông tin - Tiến hành xử lý thông tin Khi tiến hành xử lý thơng tin phải vào có thực thu qua trình khảo sát, phát thu thập Dùng lý luận để phân tích tư liệu, số liệu rút từ thực tiễn Rút học kinh nghiệm dạng khái quát mang tính lý luận hay khẳng định mặt lý luận thực tiễn Trong trình xử lý, cần áp dụng thao tác tư khoa học, trừu tượng hóa yếu tố ngẫu nhiên, tìm tính đặc thù, tất yếu PHẦN II NỘI DUNG Làm cho học sinh có ý thức ý nghĩa hoạt động đối tượng hoạt động Gợi động nhằm làm cho mục tiêu sư phạm biến thành mục tiêu cá nhân học sinh, vào bài, đặt vấn đề cách hình thức Ở lớp dưới, thầy giáo thường dùng cách cho điểm, khen chê, thơng báo kết học tập cho gia đình, để gợi động Càng lên lớp cao, với trưởng thành học sinh, với trình độ nhận thức giác ngộ trị ngày cao cách gợi động xuất phát từ nội dung hướng nhu cầu nhận thức, nhu cầu đời sống, trách nhiệm xã hội ngày trở nên quan trọng CHƯƠNG I: ĐỘNG CƠ MỞ ĐẦU Việc xuất phát từ thực tế khơng có tác dụng gợi động mà góp phần hình thành giới quan vật biện chứng Nhờ đó, học sinh nhận rõ việc nhận thức cải tạo giới đòi hỏi phải suy nghĩ giải vấn đề Tin học nào, tức nhận rõ Tin học bắt nguồn từ nhu cầu đời sống thực tế Vì vậy, cần khai thác triệt để khả để gợi động xuất phát từ thực tế Tuy nhiên, để gợi động xuất phát từ thực tế cần ý điều kiện sau: - Vấn đề đặt phải đảm bảo tính chân thực, đương nhiên đơn giản hóa lý sư phạm trường hợp cần thiết - Việc nêu vấn đề khơng đòi hỏi q nhiều tri thức bổ xung - Con đường từ lúc nêu vấn đề giải vấn đề ngắn tốt Mặc dù Tin học phản ánh thực tế cách toàn nhiều tầng Tuy nhiên nội dung nào, hoạt động gợi động xuất phát từ thực tế Vì vậy, ta tận dụng khả gợi động xuất phát từ nội Tin học Gợi động từ nội Tin học nêu vấn đề Tin học xuất phát từ nhu cầu Tin học, từ việc xây dựng khoa học Tin hoc, từ phương thức tư hoạt động Tin học Gợi động theo cách cần thiết vì: - Việc gợi động xuất phát từ thực tế thực - Việc gợi động từ nội Tin học giúp học sinh hình dung hình thành phát triển Tin học với đặc điểm tiến tới hoạt động Tin học cách độc lập Thông thường bắt đầu nội dung lớn, chẳng hạn phân môn hay chương ta nên cố gắng xuất phát từ thực tế Còn hay phần cần tính tới khả gợi động từ nội Tin học Đó cách sau đây: Xét tốn : “Viết chương trình cho máy tính chu vi, diện tích đường chéo ba hình chữ nhật theo hai kích thước hình Trong đó: - Hình thứ có hai kích thước a1, a2 - Hình thứ hai có hai kích thước b1, b2 - Hình thứ ba có hai kích thước a1+b1 a2*b2” Var a1, b1, a2, b2, c1, c2, c3, d1, d2, d3, m1, m2, m3 : Real; Begin Writeln('Nhap hai canh cua hinh chu nhat thu nhat:'); Write('a1 = '); Readln(a1); Write('b1 = '); Readln(b1); Writeln('Nhap hai canh cua hinh chu nhat thu hai:'); Write('a2 = '); Readln(a2); Write('b2 = '); Readln(b2); c1 := * (a1 + b1); c2 := * (a2 + b2); c3 := * ((a1 + b1) + (a2 * b2)); d1 := a1 * b1; d2 := a2 * b2; d3 := (a1 + b1) * (a2 * b2); m1 := sqrt(a1 * a1 + b1 * b1); m2 := sqrt(a2 * a2 + b2 * b2); m3 := sqrt(sqr(a1 + b1) + sqr(a2 * b2)); Writeln('Hinh chu nhat thu nhat:'); Writeln('Chu vi bang : ',c1:0:2); Writeln('Dien tich bang : ',d1:0:2); Writeln('Duong cheo bang: ',m1:0:2); Writeln('Hinh chu nhat thu hai:'); Writeln('Chu vi bang : ',c2:0:2); Writeln('Dien tich bang : ',d2:0:2); Writeln('Duong cheo bang: ',m2:0:2); Writeln('Hinh chu nhat thu ba:'); Writeln('Chu vi bang : ',c3:0:2); Writeln('Dien tich bang : ',d3:0:2); Writeln('Duong cheo bang: ',m3:0:2); Readln End Chương trình để thực yêu cầu đề bài, phải viết viết lại ba dòng liên tiếp tính chu vi, diện tích đường chéo hình chữ nhật Giả sử phải tính đến n hình chữ nhật vấn đề thực phức tạp Trong tốn ta chưa có phần kiểm tra điều kiện nhập vào hình Nếu có thêm điều kiện này, chắn chương trình dài Vấn đề đặt là: làm xóa bỏ hạn chế này? Ở đây, hướng dẫn cho học sinh sử dụng chương trình để khắc phục hạn chế Thay phải viết nhiều lần lệnh nhập, tính tính lại cho hình ta viết thủ tục: Thủ tục nhập hai cạnh hình chữ nhật Thủ tục Tính ba giá trị cho hình 10 Var a1, b1, a2, b2: Real; Procedure Nhap(Var x, y: Real; i: Byte); Begin Writeln('Nhap hai kich thuoc cua hinh chu nhat thu ',i,':'); Repeat Write('Canh thu nhat: '); Readln(x); Write('Canh thu hai : '); Readln(y); If (x 0); End; Procedure Tinh(a, b: Real; k: Byte); Begin Writeln('Hinh chu nhat thu ',k,':'); Writeln('Chu vi bang : ',2 * (a + b):0:2); Writeln('Dien tich bang : ',a * b:0:2); Writeln('Duong cheo bang: ',sqrt(a * a + b * b):0:2); End; Begin Nhap(a1, b1, 1); Nhap(a2, b2, 2); Tinh(a1, b1, 1); Tinh(a2, b2, 2); Tinh(a1 + b1, a2 * b2, 3); Readln End Xét toán sau: “Nhập vào dãy n số nguyên lớn Viết hình tất số dãy thỏa mãn điều kiện số nguyên tố” Var A: Array[1 100] Of Integer; k,n: Integer; Function NgTo(a: Integer):Boolean; Var u: Integer; Begin NgTo:=False; For u := To Trunc(sqrt(a)) Do If a mod u = Then Exit; NgTo := a > 1; End; Begin Write('Nhap so phan tu: '); Readln(n); Writeln('Nhap cac phan tu cua day Chu y: A[k] >= 2'); For k := to n Begin Repeat Write('A[',k,'] = ');Readln(A[k]); If A[k] < Then Writeln('Ban can nhap A[k] > Vui long nhap lai!'); Until A[k] >= 2; End; 11 Writeln('Cac so nguyen to cua day so tren la:'); For k := to n If NgTo(A[k]) Then Write(A[k]:6); Readln End Từ chương trình giúp cho học sinh thấy việc sử dụng chương trình hợp lý hóa, tiết kiệm cơng sức lập trình Đồng thời, chương trình giúp cho người lập trình dễ sửa chữa, dễ kiểm tra Cụ thể với toán sửa chữa thành tốn: “Viết hình tất số dãy thỏa mãn điều kiện hợp số” hai câu lệnh: - Dòng lệnh Writeln(‘Cac so nguyen to cua day so tren la:’); Sửa thành: Writeln(‘Cac so la hop so cua day so tren la:’); - Dòng lệnh : If NgTo(A[k]) Then Write(A[k]:6) ta thay dòng lệnh If Not NgTo(A[k]) Then Write(A[k]:6) Có khái niệm mà học sinh biết riêng lẻ chưa thể đưa nhận xét, kết luận xác liên quan tới khái niệm đó; tới thời điểm có đủ điều kiện gợi lại vấn đề giúp học sinh xác hóa khái niệm Chẳng hạn, ta cần xác hóa khái niệm sử dụng tham biến chương trình Sau học cách sử dụng tham trị, yêu cầu học sinh làm tập sau: “Viết thủ tục nhập vào số đo bán kính đường tròn Sau tính chu vi diện tích đường tròn đó” Var r1, r2, r3: Real; Procedure Nhap( r: Real; k:Byte); Begin Repeat Write('Nhap ban kinh cua duong tron thu ',k,': '); Readln(r); If r 0; End; Begin Nhap(r1, 1); Nhap(r2, 2); Nhap(r3, 3); Writeln('Duong tron Chu vi bang:',2 * pi * r1:6:1,' Dien tich bang: ',pi * sqr(r1):6:1); Writeln('Duong tron Chu vi bang:',2 * pi * r2:6:1,' Dien tich bang:',pi * sqr(r2):6:1); Writeln('Duong tron Chu vi bang:',2 * pi * r3:6:1,' Dien tich bang:',pi * sqr(r3):6:1); Readln End 12 Chúng ta yêu cầu học sinh thực thi chương trình chạy thử Học sinh phát kết chu vi diện tích ba đường tròn Vấn đề đặt là: Chương trình sai chỗ nào? Lúc giáo viên khẳng định phân biệt tham biến tham trị, giá trị tham biến lưu giữ ngồi chương trình con, giá trị tham trị lưu giữ thực chương trình con, khỏi chương trình khơng lưu giữ giá trị Điều giúp cho xác hóa khái niệm tham biến tham trị cho học sinh Chương trình cần sửa lại sau: Var r1, r2, r3: Real; Procedure Nhap(Var r: Real; k:Byte); Begin Repeat Write('Nhap ban kinh cua duong tron thu ',k,': '); Readln(r); If r 0; End; Begin Nhap(r1, 1); Nhap(r2, 2); Nhap(r3, 3); Writeln('Duong tron Chu vi bang:',2 * pi * r1:6:1,' Dien tich bang: ',pi * sqr(r1):6:1); Writeln('Duong tron Chu vi bang:',2 * pi * r2:6:1,' Dien tich bang:',pi * sqr(r2):6:1); Writeln('Duong tron Chu vi bang:',2 * pi * r3:6:1,' Dien tich bang:',pi * sqr(r3):6:1); Readln End Để giúp học sinh nắm bắt kiến thức chương trình cách có hệ thống Sau học xong chương trình con, đưa sơ đồ sau: Thủ tục Chương trình Khơng Có tham chiếu Tham trị Cóđề tham chiếu Tiếp theo, để giúp cho học Hàm sinh nhìn thấy vấn có hệ thống rõ ràng hơn, đặc biệt giúp cho học sinh hiểu rõ vấn đề chương trìnhTham Chẳng biến hạn đâu biến toàn cục, đâu biến địa phương, dùng tham biến, 13 dùng tham trị, chương trình gọi lẫn nào?, Chúng ta đưa ví dụ sau: “Viết chương trình nhập vào số cạnh n tam giác, sau tính diện tích tam giác vừa nhập tổng diện tích tất tam giác đó” Var a:array[1 3,1 100] Of Real; {Bien toan cuc} Function Ktra(x, y, z: Real): Boolean; {Ham co tham tri} Begin Ktra := (x < y + z) And (y < x + z) And (z < x + y); End; Procedure Nhap(Var a, b, c: Real; i:Byte); {Thu tuc co tham bien} Begin Writeln('Nhap vao ba canh cua tam giac thu ',i,': '); Repeat Write('Nhap dai canh thu nhat: '); Readln(a); Write('Nhap dai canh thu hai : '); Readln(b); Write('Nhap dai canh thu ba : '); Readln(c); If Not Ktra(a, b, c) Then Writeln('Ba dai vua nhap khong phai la canh tam giac! Nhap lai:'); Until Ktra(a, b, c); End; Function DT(m, n, p:Real): Real; {Ham co tham tri} Var d: Real; {Bien cuc bo} Begin d := (m + n + p) / 2; DT := sqrt(d * (d - m) * (d - n) * (d - p)); End; Procedure Tinh; {Thu tuc khong co tham chieu} Var k, n, j: Integer; tong: Real; {Bien cuc bo} Begin Write('Nhap so tam giac: ');Readln(n); tong:=0; For k:=1 to n Nhap(a[1,k], a[2,k], a[3,k], k); For k:=1 to n Begin Tong := tong + DT(a[1, k], a[2,k], a[3,k]); Writeln('Dien tich cua tam giac thu ',k,': ',DT(a[1, k], a[2, k], a[3, k]):6:1); End; Writeln('Tong dien tich cua ',n,' tam giac la: ',tong:6:1); End; Begin Tinh; Readln End Xuất phát, cho học sinh thực tốn sau: “Viết chương trình đổi xâu ký tự thành chữ HOA” 14 Var tam: Integer; Begin While y0 Begin tam := x mod y; x := y; y := tam; End; UCLN := x; End; Begin Writeln('Nhap ba so: '); Readln(a, b, c); Write('UCLN(',a,',',b,',',c,') = '); tam := UCLN(a, b); Write(UCLN(tam, c)); Readln End Sau thực việc sử dụng chương trình để tìm ước chung lớn ba số thành công Khái quát: yêu cầu học sinh giải tốn: “Viết chương trình tìm ước chung lớn n số ” Để thực hiện, ta hướng dẫn học sinh dùng thủ tục tìm ước chung lớn hai số Sau đó, dùng biến tạm u để lưu giữ giá trị dãy số, ta xác định ước chung lớn u với giá trị dãy từ vị trí thứ hai Cuối cùng, ước chung lớn dãy giá trị u Var A: Array[1 100] Of Integer; a1, u, i, n: Integer; Procedure UCLN(Var x, y: Integer); Var tam, tg: Integer; Begin While y0 Begin tam := x mod y; x := y; y := tam; End; End; Begin Write('Ban can tinh UCLN cua bao nhieu so? Nhap: '); Readln(n); For i := to n Begin Write('So thu ',i,': '); Readln(A[i]); End; Write('UCLN('); For i := to n-1 Write(a[i],','); Write(a[n],') = '); u := a[1]; For i:= to n UCLN(u, a[i]); 18 Write(u); Writeln; Readln End Thật vậy, việc xét tương tự, việc xét khái quát hóa, việc xét liên hệ phụ thuộc có tác dụng gợi động người học sinh quen thuộc với cách xem xét này, trải nghiệm thành công nhiều lần việc theo cách Để thực điều dạy học cho học sinh chương trình Chúng ta u cầu học sinh giải tốn sau: “Có túi chứa tối đa D (kg) với n đồ vật, Cần chọn đồ vật cho giá trị túi lớn Biết đồ vật i có khối lượng W[i] giá trị C[i] đồng (i = 1, 2, , n ” Var C, W:Array[1 100] Of Integer; CW: Array[1 100] Of Real; n, i, j, d, d1, gt, t: Integer; Procedure Nhap; Begin Write('Nhap so luong cac vat: '); Readln(n); Write('Nhap khoi luong cua tui: '); Readln(D); D1:=D; Writeln('Nhap cac gia tri cua C va W: '); For i:=1 to n Begin Write('C[',i,'] = '); Readln(C[i]); Write('W[',i,'] = '); Readln(W[i]); CW[i] := C[i] / W[i]; End; End; Procedure Sapxep; Var t1, t2: Integer; t3: Real; Begin Nhap; For i := to n - For j := n downto i + Begin If CW[j] > CW[j-1] Then Begin t1 := C[j]; C[j] := C[j-1]; C[j-1] := t1; t2 := W[j]; W[j] := W[j-1]; W[j-1] := t2; t3 := CW[j]; CW[j] := CW[j-1]; CW[j-1] := t3; End; End; End; Procedure Luachon; Var temp: Integer; Begin Sapxep; i := 1; gt := 0; t := 0; While (i 0) And (W[i] > 0) Do Begin 19 Temp := d Div W[i]; {So vat duoc chon cua W[i]} If temp > Then Begin Writeln('Do vat C[',i,'] = ',C[i],' va W[',i,'] = ',W[i],' duoc chon co so luong ',temp); d := d - temp * W[i]; t := t + W[i] * temp; gt := gt + temp * C[i]; End; i := i + 1; End; Writeln('Gia tri toi uu co the dat duoc la:'); Writeln('Khoi luong vat dung ',t,'.tui dung duoc ',d1,' Con thua ',d1 - t); End; Begin Luachon; Readln End CHƯƠNG II: ĐỘNG CƠ TRUNG GIAN 1) Hướng đích Xuất phát từ tốn giải phương trình bậc hai: Var a, b, c, d: Real; Begin Writeln('Nhap he so cua phuong trinh:'); Write('a = '); Readln(a); Write('b = '); Readln(b); Write('c = '); Readln(c); If a = Then If b = Then If c = Then Writeln('Phuong trinh co vo so nghiem!') Else Writeln('Phuong trinh vo nghiem!') Else Writeln('Phuong trinh co mot nghiem: x = ',-c/b:0:1) Else Begin d := b * b - * a * c; If d < Then Writeln('Phuong trinh vo nghiem!') Else If d = Then Writeln('Phuong trinh co nghiem kep: x1 = x2 = ',-b / (2 * a):0:1) Else Begin Writeln('Phuong trinh co hai nghiem phan biet:'); Writeln('x1 = ',(-b + sqrt(d)) / (2 * a):0:1); Writeln('x2 = ',(-b - sqrt(d)) / (2 * a):0:1); End; 20 End; Readln End Mục tiêu chia toán ban đầu thành toán nhỏ độc lập Chẳng hạn:Ta sử dụng chương trình thành hai tốn : T1: Giải phương trình bậc T2: Giải phương trình bậc hai Var a, b, c: Real; Procedure ptb1(m,n:Real); Begin If m = Then If n = Then Writeln('Phuong trinh co vo so nghiem!') Else Writeln('Phuong trinh vo nghiem!') Else Writeln('Phuong trinh co mot nghiem: x = ',-n/m:0:1) End; Procedure ptb2(x, y, z: Real); Var d: Real; Begin D := y * y - * x * z; If d < Then Writeln('Phuong trinh vo nghiem!') Else If d = Then Writeln('Phuong trinh co nghiem kep: x1 = x2 = ',-y / (2 * x):0:1) Else Begin Writeln('Phuong trinh co hai nghiem phan biet:'); Writeln('x1 = ',(-y + sqrt(d)) / (2 * x):0:1); Writeln('x2 = ',(-y - sqrt(d)) / (2 * x):0:1); End; End; Begin Writeln('Nhap he so cua phuong trinh:'); Write('a = '); Readln(a); Write('b = '); Readln(b); Write('c = '); Readln(c); If a=0 Then ptb1(b, c) Else ptb2(a, b, c); Readln End Ta lại thấy toán việc giải phương trình bậc hai có ba trường hợp xảy Ta nên chia tiếp thành toán nhỏ sau: T1: Giải phương trình bậc T2: > 21 T3: = T4: < T5: Giải phương trình bậc hai Var a, b, c, d: Real; Procedure ptb1(m, n : Real); Begin If m = Then If n = Then Writeln('Phuong trinh co vo so nghiem!') Else Writeln('Phuong trinh vo nghiem!') Else Writeln('Phuong trinh co mot nghiem: x = ',-n / m:0:1) End; Procedure denta_am; Begin Writeln('Phuong trinh vo nghiem!'); End; Procedure denta_0(p, q: Real); Begin Writeln('Phuong trinh co nghiem kep: x1 = x2 = ',-q / (2 * p):0:1) End; Procedure denta_duong(i, j: Real); Begin Writeln('Phuong trinh co hai nghiem phan biet:'); Writeln('x1 = ',(-j + sqrt(d)) / (2 * i):0:1); Writeln('x2 = ',(-j - sqrt(d)) / (2 * i):0:1); End; Procedure ptb2(x, y, z: Real); Begin d := y * y - * x * z; If d < Then denta_am Else If d = Then denta_0(x, y) Else denta_duong(x, y); End; Begin Writeln('Nhap he so cua phuong trinh:'); Write('a = '); Readln(a); Write('b = '); Readln(b); Write('c = '); Readln(c); If a = Then ptb1(b, c) Else ptb2(a, b, c); Readln End 2) Quy lạ quen 22 n! k Xét tốn : Tính C nk Học sinh biết công thức : C n k!(n k )! Bài toán ta quy toán quen thuộc tính n! Ở cần lưu ý với học sinh rằng: Để tính C nk ta cần xây dựng chương trình tính n! sau đó, ta tìm C nk cơng thức Tuy nhiên, cần phải xây dựng chương trình Nhap để tránh việc người sử dụng nhập số âm nhập k > n Var k, n: Integer; C:Real; Procedure Nhap; Begin Repeat Write('Nhap k = '); Readln(k); Write('Nhap n = '); Readln(n); If (k < 0) Or (n < 0) Or (k > n) Then Writeln('Nhap lai!'); Until (k > 0) And (n > 0) And (k < n); End; Function GT(a:Integer): Integer; Var kq, i:Integer; Begin kq:=1; For i:=1 to a kq:=kq * i; GT:=kq; End; Begin Nhap; C := GT(n) / (GT(k) * GT(n - k)); Writeln('C = ', C:0:0); Readln End Xuất phát từ tốn: “Tính n! thuật tốn đệ quy” Var n: Integer; Function GT(a:Integer): Real; Begin If a = Then GT:=1 Else GT:=GT(a - 1) * a; End; Begin Write('Nhap n = '); Readln(n); Writeln(n,'! = ', GT(n):0:0); Readln End Tương tự, yêu cầu học sinh thực giải tốn: “Tính an thuật tốn đệ quy” 23 Var a, n: Integer; Function Mu(x:Integer; y:Integer):Real; Var T: Real; Begin If y = Then Mu:=1 Else Begin Mu:=Mu(x, y - 1) * x; End; End; Begin Write('Nhap a = '); Readln(a); Write('Nhap n = '); Readln(n); Writeln(a,' mu ',n,' = ',Mu(a , n):0:0); Readln End Xuất phát từ toán: “Sắp xếp ba số a, b, c theo thứ tự tăng dần” Var a,b,c: Real; Procedure Sapxep(Var x, y, z: Real); Var tg: Real; Begin If x > y Then Begin tg := x; x := y; y := tg; End; If y > z Then Begin tg := y; y := z; z := tg; End; If x > y Then Begin tg := x; x := y; y := tg; End; End; Begin Writeln('Nhap vao ba so: '); Write('So thu nhat: '); Readln(a); Write('So thu hai : '); Readln(b); Write('So thu ba : '); Readln(c); Sapxep(a, b, c); Writeln('Ba so sau sap xep la:'); Write(a:6:0, b:6:0, c:6:0); Readln End Ở cần lưu ý với học sinh : lệnh gán nhận giá trị giá trị cũ Vì mà trước thực lệnh gán x := y để máy nhận giá trị b ta phải gửi giá trị cũ x vào biến tg Tại lệnh thứ ba lại giống lệnh thứ 24 nhất? x, y, z, tg địa lưu trữ giá trị Những giá trị bị thay đổi qua lệnh gán Địa biến khơng đổi, nội dung biến thay đổi thực lệnh gán Tiếp theo, nêu câu hỏi: Khái quát, phải xếp n số theo thứ tự tăng dần ta phải làm nào? Ta có chương trình sau: Var a: Array[1 100] Of Real; i,j,n: Integer; Procedure Doicho(Var x,y:Real); Var tg:Real; Begin Tg := x; x := y; y := tg; End; Procedure Sapxep; Begin For i := to n - For j := i + to n If a[i] > a[j] Then Doicho(a[i], a[j]); End; Begin Write('Nhap so phan tu cua day so: '); Readln(n); For i := to n Begin Write('So thu ',i,': '); Readln(a[i]); End; Sapxep; Writeln('Day so sau sap xep la:'); For i := to n Write(a[i]:6:0); Readln End Xét tốn sau : “Viết chương trình cho máy nhập vào cạnh tam giác Xét xem ba số có phải ba cạnh tam giác hay khơng? có tam giác tam giác có ba góc nhọn hay tam giác vng hay tam giác tù? ” Trước hết, học sinh phải kiểm tra ba số thực phải thỏa mãn điều kiện ba số đo tam giác Tức số phải nhỏ tổng hai số lại (điều xảy với ba số) Sau đó, chúng ba số đo ba cạnh tam giác dạng tam giác phụ thuộc vào bình phương cạnh lớn nhỏ hay hay lớn tổng hai bình phương hai cạnh lại mà tam giác có ba góc nhọn hay tam giác vuông hay tam giác tù Var p,q,r: Real; Function Ktra(x, y, z: Real): Boolean; Begin Ktra := (x < y + z) And (y < x + z) And (z < x + y); End; Procedure Nhap(Var a, b, c: Real); Begin 25 Writeln('Nhap vao ba canh cua tam giac: '); Repeat Write('Nhap dai canh thu nhat: '); Readln(a); Write('Nhap dai canh thu hai : '); Readln(b); Write('Nhap dai canh thu ba : '); Readln(c); If Not Ktra(a, b, c) Then Writeln('Ba dai vua nhap khong phai la canh tam giac! Nhap lai:'); Until Ktra(a, b, c); End; Procedure DangTG(m, n, p: Real); Var tg: Real; Begin If m < n Then Begin tg := n; n := m; m := tg; End; If m < p Then Begin tg := p; p := m; m := tg; End; m := sqr(m); n := sqr(n); p := sqr(p); If m < n + p Then Writeln('la tam giac co ba goc nhon!') Else If m = n + p Then Writeln('La tam giac vuong!') Else Writeln('La tam giac co mot goc tu!'); End; Begin Nhap(p, q, r); DangTG(p, q, r); Readln End CHƯƠNG III: ĐỘNG CƠ KẾT THÚC động kết thúc có tác dụng nâng cao tính tự giác hoạt động học tập học sinh cách gợi động khác Mặc dù khơng có tác dụng kích thích nội dung qua hoạt động thực hiện, góp phần gợi động thúc đẩy hoạt động nói chung nhiều việc gợi động kết thúc trường hợp lại chuẩn bị gợi động cho trường hợp tương tự sau Xét toán sau: “Lập chương trình cho máy tính tìm đường trung tuyến tam giác biết số đo ba cạnh a, b, c nhận vào từ bàn phím” Trong tốn u cầu học sinh chia thành nhiều toán nhỏ độc lập Cụ thể là: Var a, b, c, S: Real; Function Ktra: Boolean; 26 Begin Ktra := (a < b + c) And (b < a + c) And (c < a + b); End; Procedure Nhap; Begin Repeat Write('Nhap dai canh thu nhat: '); Readln(a); Write('Nhap dai canh thu hai : '); Readln(b); Write('Nhap dai canh thu ba : '); Readln(c); If Not Ktra Then Writeln('Ba dai vua nhap khong phai la canh tam giac! Nhap lai:'); Until Ktra; End; Procedure Trung_Tuyen(m, n, p: Real); Begin Writeln('Trung tuyen qua canh ',m:0:2,' la: ',0.5 * sqrt(2* (n * n + p * p) - m * m):0:2); End; Procedure BaTT; Begin Trung_tuyen(a, b, c); Trung_tuyen(b, a, c); Trung_tuyen(c, b, a); End; Begin Nhap; BaTT; Readln End Sau chương trình chạy thơng suốt, ta gọi lại chương trình cho học sinh thấy tốn tính đường trung tuyến tam giác nên hàm Ktra, thủ tục Nhap, thủ tục BaTT khơng có tham chiếu Việc sử dụng chương trình đề cập đến với tham chiếu toán cần tính đường trung tuyến nhiều tam giác mà cách xác định ba cạnh tam giác khác Để thực ý định trên, ta yêu cầu học sinh giải toán sau: “Lập trình cho máy tính in lên hình đường trung tuyến tam giác theo độ dài ba cạnh tam giác - Tam giác thứ có độ dài ba cạnh a1, b1, c1 - Tam giác thứ hai có độ dài ba cạnh a2, b2, c2 - Tam giác thứ ba có độ dài ba cạnh a1 + a2, b1 + b2, c1 + c2” Var a1, b1, c1,a2, b2, c2, S: Real; Function Ktra(x, y, z: Real): Boolean; Begin 27 Ktra := (x < y + z) And (y < x + z) And (z < x + y); End; Procedure Nhap(Var a, b, c: Real; k: Byte); Begin Writeln('Tam giac thu ',k,':'); Repeat Write('Nhap dai canh thu nhat: '); Readln(a); Write('Nhap dai canh thu hai : '); Readln(b); Write('Nhap dai canh thu ba : '); Readln(c); If Not Ktra(a, b, c) Then Writeln('Ba dai vua nhap khong phai la canh tam giac! Nhap lai:'); Until Ktra(a, b, c); End; Procedure Trung_Tuyen(m, n, p: Real); Begin Writeln('Trung tuyen qua canh ',m:0:2,' la: ',0.5* sqrt(2* (n * n + p * p) - m * m):0:2); End; Procedure BaTT(a, b, c:Real; i:Byte); Begin Writeln('Do dai ba trung tuyen cua tam giac thu ',i,':'); Trung_tuyen(a, b, c); Trung_tuyen(b, a, c); Trung_tuyen(c, b, a); End; Begin Nhap(a1, b1, c1, 1); Nhap(a2 ,b2, c2, 2); BaTT(a1, b1, c1, 1); BaTT(a2, b2, c2, 2); BaTT(a1 + a2, b1 + b2, c1 + c2, 3); Readln End CHƯƠNG IV :PHỐI HỢP NHIỀU CÁCH TRUNG VÀO NHỮNG TRỌNG ĐIỂM Trên xét đến khả gợi động xuất phát từ nội dung dạy học Ngồi ra, có khả gợi động không gắn với nội dung khen, chê, cho điểm, Để phát huy tác dụng kích thích, thúc đẩy hoạt động học tập, cần phải phối hợp cách gợi động khác có ý đến xu hướng phát triển cá nhân học sinh, tạo hợp đồng tác dụng nhiều cách gợi động cơ, cách bổ xung cách Chẳng hạn, gợi động cho nội dung dạy học hoạt động cách nhấn mạnh tầm quan trọng nội dung hoạt động nghề xã hội Tuy nhiên cách gợi động hướng nghiệp lại có nhược điểm 28 khơng hấp dẫn học sinh khơng có dự định làm nghề sau Vì bổ xung cách nhấn mạnh nắm nội dung đó, thực hoạt động yếu tố văn hóa phổ thông tất người xã hội Cũng cần lưu ý rằng, muốn gợi động cho nội dung hoạt động không hợp lý không khả thi Trong tiết học, việc gợi động cần tập trung vào số nội dung hoạt động định mà việc định cần vào yếu tố sau đây: - Tầm quan trọng nội dung hoạt động cần xem xét - Khả gợi động nội dung hoạt động - Kiến thức có sẵn thời gian cần thiết Thí dụ : Viết chương trình nhập điểm mơn học kỳ Sau tính điểm trung bình mơn mơn học theo cơng thức : hs1 hs * hs3 * l1 l * Trong : hs1 : tổng điểm hệ số l1: số lần điểm hệ số hs2 : tổng điểm hệ số l2 : số lần điểm hệ số hs3 : Điểm thi học kỳ Yêu cầu nhập lần đủ, tức điểm nhập vào cần phải xử lý theo xâu ký tự sau đổi sang số để tính tốn Đây chương trình tính điểm mà học sinh ứng dụng thực tế học tập Để làm toán này, học sinh cần phải ứng dụng vấn đề thực tế cần phải biết cách tính điểm TBm sau áp dụng kiến thức chương trình kiến thức xử lý xâu ký tự để áp dụng thực chương trình Tuy nhiên cần lưu ý nhập điểm, điểm hệ số hệ số số nguyên với số lần điểm nhập vào không hạn chế, điểm hệ số số thực có điểm Chính cần phải có hai thủ tục nhập điểm Hơn nữa, việc nhập điểm cần lưu ý hai trường hợp điểm 10 điểm nên sử dụng biến Char để xác định rõ điểm 10 vừa nhập điểm 10 hai điểm Trong cơng việc tính tốn, cần phải có hai hàm: hàm tính tổng điểm hàm đếm số lần điểm loại điểm, điểm từ đến vấn đề đơn giản, có điểm 10 việc đếm số lần điểm việc tính tổng điểm cần phải chia thành hai trường hợp: + Trường hợp có điểm 10: Ta xử lí hàm đếm cách gặp ký tự đếm giữ ngun, đến số tính từ Như vậy, gặp điểm 10 đếm + Trường hợp điểm từ đến 9: Đếm bình thường việc tính tổng vậy, có điều để tính tổng phần tử cần sử dụng vòng For duyệt tồn phần tử xâu, với ký tự ta lại dùng hàm Val để đổi ký tự sang số để tính tốn Cuối cùng, ta sử dụng hàm Tinh để tính điểm trung bình mơn theo hàm tính tổng hàm đếm thực Chương trình sau: Var hs1, hs2 , h3: String; hs3: Real; k: Integer; Procedure Nhap1(Var st1: String; t1: Byte); Var a1, c1, i, tam: Integer; ch: Char; t: Char; 29 Begin Repeat Write('Nhap diem he so ',t1,': '); Readln(st1); For i:=1 to Length(st1) Begin If (st1[i] = '1') And (st1[i+1] = '0') Then Begin Write('Diem 10 o tren la diem va diem 0(y)hay diem 10(n):'); Readln(ch); If ch='y' then Begin t:=st1[i]; st1[i] := st1[i+1]; st1[i+1]:=t; Writeln('Diem ban nhap se la: ',st1) End; End; End; Val(st1, a1, c1); If (c1 0) Or (a1=0); End; Procedure Nhap2(Var st2:String; t2: Byte); Var c2:Integer; a2: Real; Begin Repeat Write('Nhap diem he so ',t2,': '); Readln(st2); Val(st2, a2, c2); If (c2 0) Or (a2 > 10) Or (a2