De tai nghien cuu khoa hoc ung dung

27 5 0
De tai nghien cuu khoa hoc ung dung

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Để làm được bài toán này, học sinh cần phải ứng dụng vấn đề thực tế là cần phải biết cách tính điểm TBm sau đó áp dụng các kiến thức về chương trình con và kiến thức về xử lý xâu ký tự đ[r]

(1)MỤC LỤC MỤC LỤC BẢN CAM KẾT TÓM TẮT ĐỀ TÀI GIỚI THIỆU PHƯƠNG PHÁP PHÂN TÍCH DỮ LIỆU VÀ KẾT QUẢ BÀN LUẬN KẾT LUẬN VÀ KHUYẾN NGHỊ TÀI LIỆU THAM KHẢO .8 PHỤ LỤC (2) CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc BẢN CAM KẾT I Tác giả: Họ và tên: NGUYỄN THANH QUANG Sinh ngày: 01/09/1976 Đơn vị công tác: Trường THCS Quảng Thanh Chức vụ: Giáo viên Điện thoại: Cơ quan: 0313673221 DĐ: 0982753755 Sản phẩm: “Gợi động hoạt động việc giảng dạy chương trình thủ tục và hàm ôn thi đội tuyển học sinh giỏi” Cam kết: Tôi xin cam kết Đề tài khoa học sư phạm ứng dụng này là sản phẩm cá nhân tôi Nếu có xảy tranh chấp quyền sở hữu sản phẩm khác, tôi xin hoàn toàn chịu trách nhiệm trước lãnh đạo đơn vị, lãnh đạo Phòng giáo dục và đào tạo Thủy Nguyên trung thực cam kết này Quảng Thanh, ngày 06 tháng năm 2014 Người viết cam kết Nguyễn Thanh Quang (3) “GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON THỦ TỤC VÀ HÀM TRONG ÔN THI ĐỘI TUYỂN HỌC SINH GIỎI” TÓM TẮT ĐỀ TÀI - Trong bối cảnh Công nghệ thông tin ngày càng phát triển, việc sử dụng rộng rãi máy tính không còn bó hẹp viện nghiên cứu, các trường đại học, các trung tâm máy tính mà còn mở rộng quan, xí nghiệp và nhà máy Song song với quá trình trên, việc giảng dạy Tin học các trường đại học, trung học và phổ thông đẩy mạnh đôi với việc tăng cường trang bị máy vi tính Chính vì vậy, giáo viên giảng dạy môn Tin học các trường phổ thông, việc tìm hiểu, nghiên cứu các vấn đề Tin học, cùng với việc tìm các biện pháp giảng dạy Tin học nhà trường phổ thông là công việc cần phải làm thường xuyên, nhằm đáp ứng với đòi hỏi ngày càng cao xã hội - Trong nghiệp vụ người giáo viên có hai vấn đề quan trọng: thứ là thực tiễn tiềm - kiến thức lý thuyết Thứ hai là thực tiễn nghiệp vụ - 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 là điều định nghiệp vụ giáo viên, nó đánh giá chất lượng giảng dạy giáo viên Hai thực tiễn trên vừa mâu thuẫn với nhau, lại vừa thống với Giáo viên 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, không thể dạy tốt cho học sinh thầy giáo hiểu biết quá ít Chính vì để có thể phát huy khả nghiệp vụ, giáo viên cần 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 giúp học sinh có ý thức mục tiêu đặt và tạo động lực bên thúc đẩy thân họ hoạt động để đạt các mục tiêu đó Điều này chính là gợi động hoạt động dạy học GIỚI THIỆU - Trong các 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 là vấn đề chiếm vai trò quan trọng Bởi vì, sử dụng chương trình để hợp lý, tiết kiệm công sức lập trình Đồng thời, chương trình có thể giúp cho người lập trình dễ sửa chữa, dễ kiểm tra Đặc biệt, học chương trình con, học sinh có thể 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ẽ và là chương trình có thể giúp cho các em hoàn thành chương trình lớn vượt bài toán bình thường mà nội môn học đòi hỏi Chính vì vậy, việc gợi động cho học sinh việc dạy học chương trình là 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 và là giúp cho các em có thể yêu thích (4) nhiều ngôn ngữ lập trình Pascal.Vấn đề đặt là: Gợi động hoạt động cho học sinh giảng dạy chương trình thủ tục và hàm ôn thi đội tuyển học sinh giỏi môn Tin học nào? Đó chính là vấn đề mà thân tôi quan tâm - Với tất lý nêu trên, tôi định chọn đề tài này Giải pháp thay thế: Turbo Pascal là ngôn ngữ lập trình có cấu trúc, nó dùng phổ biến nước ta công tác giảng dạy, lập trình tính toán, đồ họa Turbo Pascal dùng chương trình giảng dạy Tin học hầu hết các trường đại học, cao đẳng, trung học phổ thông - Trong các 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 là 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 có thể 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? Đó chính là vấn đề mà thân em quan tâm - Để thực điều đó, theo em chúng ta cần phải tìm tòi, nghiên cứu tìm bài toán phù hợp, kích thích độc lập, tích cực học sinh học tập Trên sở đó, học sinh có thể tự mình tìm ý tưởng sáng tạo vận dụng thiết thực vào sống thực tế nhu cầu nảy sinh, đó các em có thể tự mình hoàn thành ý tưởng đó - Trên sở gì mà học sinh học tập môn lập trình Pascal, học sinh có thể sử dụng cách thành thạo các 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ở và nó đò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 có thể 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ẽ và là chương trình có thể giúp cho các em hoàn thành chương trình lớn vượt bài toán bình thường mà nội môn học đòi hỏi Chính vì vậy, việc gợi động cho học sinh việc dạy học chương trình là 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 và là giúp cho các em có thể yêu thích nhiều ngôn ngữ lập trình Pascal Vấn đề nghiên cứu: Tạo động cho học sinh ý thức ý nghĩa các hoạt động sử dụng chương trình công việc lập trình Từ đó, học sinh có thể liên hệ, vận dụng sáng tạo vào giải các bài toán lập trình và các tình thực tế Giả thiết nghiên cứu: Qua việc nghiên cứu các vấn đề chương trình ngôn ngữ lập trình Pascal, các tài liệu phương pháp giảng dạy Từ đó, đưa các biện pháp có thể gợi động hoạt động cho học sinh thông qua các ví dụ cụ thể chương trình PHƯƠNG PHÁP a Khách thể nghiên cứu Tôi chọn trường THCS Quảng Thanh cho việc nghiên cứu và ứng dụng * Giáo viên: Thầy Nguyễn Thanh Quang là người giảng dạy trực tiếp lớp 8A1 và 8A3 * Học sinh: - Hai lớp chọn tham gia nghiên cứu có nhiều tương đồng tỉ lệ giới tính, dân tộc Cụ thể sau: (5) Bảng 1: Giới tính và thành phần dân tộc Số HS các nhóm Tổng số Nam Nữ Dân tộc 8A1 Kinh 8A3 Kinh - Về ý thực học tập, tất các em lớp này tích cực chủ động b Thiết kế nghiên cứu Chọn lớp: lớp nghiên cứu 8A1, lớp đối chứng 8A3 Tôi thiết kế bài kiểm tra kiến thức, kĩ môn Tin học làm bài kiểm tra trước tác động Kết cho thấy điểm trung bình nhóm gần tương đương, đó chúng tôi dùng phép kiểm chứng Ttest độc lập để kiểm chứng chênh lệch điểm trung bình nhóm trước tác động Kết quả: Bảng 2: Kiểm chứng để xác định nhóm tương đương Đối chứng Thực nghiệm Điểm trung bình 4.8 6.0 Độ lệch chuẩn 1.30 1.0 T-test độc lập p = 0,071 p = 0,46 > 0,05, từ đó kết luận chênh lệch điểm số trung bình nhóm thực nghiệm và đối chứng là không có ý nghĩa, nhóm coi là tương đương Sử dụng thiết kết 2: Kiểm tra trước và sau tác động các nhóm tương đương (được mô tả bảng 3): Bảng 3: Thiết kế nghiên cứu KT trước Tác động KT sau Nhóm tác động tác động Thực nghiệm O1 Dạy lý thuyết + TH chương trình O3 Đối chứng O2 Dạy lý thuyết chương trình O4 Ở thiết kế này, chúng tôi sử dụng phép kiểm chứng T-test độc lập, phụ thuộc và hệ số tương quan c Quy trình nghiên cứu * Chuẩn bị bài giáo viên - Lớp đối chứng 8A3: Thiết kế bài học không sử dụng kết hợp thực hành quy trình chuẩn bị bài dạy lý thuyết bình thường - Lớp thực nghiệm: Thiết kế các bài học có sử dụng kết hợp cho học sinh thực hành trực tiếp trên máy * Tiến hành dạy thực nghiệm: Thời gian tiến hành thực nghiệm tuân theo kế hoạch dạy học nhà trường và theo TKB để đảm bảo tính khách quan Cụ thể: Bảng 4: Thời gian thực nghiệm Tiết dạy Tuần Môn (Buổi chiều) Tên bài dạy Tin học –> Lý thuyết chương trình thủ tục, hàm Tin học –> Lý thuyết chương trình thủ tục, hàm (6) d Đo lường Bài kiểm tra trước tác động nhằm khảo sát kiến thức chung môn Tin học, thầy Nguyễn Thanh Quang thiết kế và nhờ các giáo viên tổ Tự nhiên phản biện Đề kiểm tra gồm 10 câu hỏi trắc nghiệm dạng có nhiều lựa chọn, câu chọn đúng điểm Bài kiểm tra sau tác động là bài kiểm tra 45’ giáo viên Nguyễn Thanh Quang thiết kế và nhờ các giáo viên tổ Tự nhiên trường phản biện Bài kiểm tra sau tác động gồm có phần: phần trắc nghiệm gồm 10 câu hỏi dạng có nhiều lựa chọn(5 điểm), phần tự luận gồm bài tập vận dụng kiến thức thực hành trực tiếp trên máy(5 điểm) * Tiến hành kiểm tra và chấm bài Sau hết chương trình thủ tục và hàm tôi tiến hành kiểm tra 45’ để đánh giá kết học tập các học sinh, trên sở đó để lựa chọn các em có tố chất vào đội tuyển học sinh giỏi PHÂN TÍCH DỮ LIỆU VÀ KẾT QUẢ Bảng 5: So sánh điểm trung bình bài kiểm tra sau tác động và các hệ số tương quan Thực nghiệm Đối chứng ĐTB 5.6 Độ lệch chuẩn 1.14 0.71 Hệ số tương quan 0.71 T-test phụ thuộc p = 0.001 T-test độc lập p = 0.002 Mức độ ảnh hưởng tác động (SMD) 2.10 Như trên đã chứng minh nhóm là tương đương Sau tác động kiểm chứng chênh lệch điểm trung bình T-test độc lập cho kết p = 0,005, cho thấy chênh lệch ĐTB nhóm thực nghiệm và nhóm đối chứng có ý nghĩa, tức là chênh lệch nhóm này không phải là ngẫu nhiên mà tác động mang lại Hệ số tương quan nhóm thực nghiệm là 0,73 (tương quan lớn), cho thấy tác động có ảnh hưởng chung đến nhóm, kết hầu hết học sinh tăng Còn lớp đối chứng hệ số tương quan nhỏ chứng tỏ mức độ tiếp thu học là khác dẫn đến kết học sinh tăng giảm khác Việc kiểm chứng T-test phụ thuộc càng cho ta thấy điều này p phụ thuộc nhóm thực nghiệm = 2e-5 là nhỏ chứng tỏ tác động là có ý nghĩa, còn nhóm đối chứng p phụ thuộc = 0,14 chứng tỏ kết khác lần kiểm tra là ngẫu nhiên Chênh lệch giá trị trung bình chuẩn SMD = 1,02 Điều này cho thấy mức độ ảnh hưởng dạy học có sử dụng thực hành trực tiếp đến kết học học sinh là lớn Giả thiết đề tài “Gợi động hoạt động việc giảng dạy chương trình ôn thi lựa chọn đội tuyển học sinh giỏi” đã kiểm chứng BÀN LUẬN Kết bài kiểm tra sau tác động nhóm thực nghiệm là 7.4, nhóm đối chứng là 6.1 Độ chênh lệch điểm số nhóm là 1.3 Sự khác biệt này cho thấy lớp tác động có ĐTB cao (7) Chênh lệch trung bình chuẩn bài kiểm tra là SMD = 1.02 Điều này có nghĩa là mức độ ảnh hưởng tác động là lớn Phép kiểm chứng T-test độc lập cho p = 0.005 < 0.05 Kết này khẳng định chênh lệch điểm trung bình nhóm không phải là ngẫu nhiên mà tác động KẾT LUẬN VÀ KHUYẾN NGHỊ * Kết luận: Để học sinh đạt kết tốt thì đòi hỏi học sinh phải nắm vững các kiến thức cách giải các bài toán 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 học sinh nhiên cần chú ý đối tượng áp dụng cho có kết tốt * Khuyến nghị: Đối với các cấp lãnh đạo: Cần quan tâm tới sở vật chất trang thiết bị dạy học, Mở các lớp bồi dưỡng CNTT cho giáo viên… Đối với giáo viên: không ngừng tự học tự nghiên cứu, tự bồi dưỡng nhằm nâng cao kiến thức, kĩ và trình độ môn tin học lập trình để ứng dụng tốt việc ôn thi học sinh giỏi môn Tin học TÀI LIỆU THAM KHẢO Ngôn ngữ lập trình Pascal - Quách Tuấn Ngọc - Nhà xuất giáo dục 1997 Sách giáo khoa Tin học 11 - Hồ Sĩ Đàm – Nhà xuất giáo dục - 2006 Sách giáo viên Tin học 11 - Hồ Sĩ Đàm – Nhà xuất giáo dục - 2006 Sách bài tập Tin học 11 - Hồ Sĩ Đàm - Nhà xuất giáo dục - 2006 (8) PHỤ LỤC CHƯƠNG I: GỢI ĐỘNG CƠ MỞ ĐẦU Để Gợi động mở đầu chúng ta có thể gợi động xuất phát từ thực tế xuất phát từ nội Tin học Việc xuất phát từ thực tế không có tác dụng gợi động mà còn 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 và cải tạo giới đã đòi hỏi phải suy nghĩ và giải vấn đề Tin học nào, tức là nhận rõ Tin học bắt nguồn từ nhu cầu đời sống thực tế Vì vậy, chúng ta 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 chú ý các điều kiện sau: - Vấn đề đặt phải đảm bảo tính chân thực, đương nhiên có thể đơn giản hóa vì lý sư phạm trường hợp cần thiết - Việc nêu vấn đề không đòi hỏi quá nhiều tri thức bổ xung - Con đường từ lúc nêu vấn đề giải vấn đề càng ngắn càng tốt Mặc dù Tin học phản ánh thực tế cách toàn và nhiều tầng Tuy nhiên không phải nội dung nào, hoạt động nào có thể gợi động xuất phát từ thực tế Vì vậy, ta còn 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 là 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ư và hoạt động Tin học Gợi động theo cách này là cần thiết vì: - Việc gợi động xuất phát từ thực tế không phải thực - Việc gợi động từ nội Tin học giúp học sinh hình dung đúng hình thành và phát triển Tin học cùng với đặc điểm nó và có thể 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 bài hay phần bài thì cần tính tới khả gợi động từ nội Tin học Đó là cách sau đây: 1) Đáp ứng nhu cầu xóa bỏ hạn chế Xét bài toán : “Viết chương trình cho máy tính chu vi, diện tích và đườ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 là a1, a2 - Hình thứ hai có hai kích thước là b1, b2 - Hình thứ ba có hai kích thước là a1+b1 và 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; (9) 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 trên để thực yêu cầu đề bài, chúng ta phải viết viết lại ba dòng liên tiếp tính chu vi, diện tích và đường chéo hình chữ nhật Giả sử phải tính đến n hình chữ nhật thì vấn đề thực là phức tạp Trong bài toán trên ta còn 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 còn dài Vấn đề đặt là: làm nào có thể xóa bỏ hạn chế này? Ở đây, chúng ta có thể hướng dẫn cho học sinh sử dụng chương trình để khắc phục hạn chế đó Thay vì phải viết nhiều lần lệnh nhập, tính tính lại cho hình ta có thể 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 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) Or (y <= 0) Then Writeln('Nhap lai!'); Until (x > 0) And (y > 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 2) Hướng tới tiện lợi hợp lý hóa công việc Xét bài toán sau: “Nhập vào dãy n số nguyên lớn Viết màn hình tất các số dãy thỏa mãn điều kiện là số nguyên tố” (10) 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; 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 trên chúng ta có thể giúp cho học sinh thấy việc sử dụng chương trình có thể 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ể là với bài toán trên chúng ta có thể sửa chữa thành bài toán: “Viết màn hình tất các số dãy thỏa mãn điều kiện là 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) 3) Chính xác hóa khái niệm Có khái niệm mà học sinh đã biết bài riêng lẻ chưa thể đưa nhận xét, kết luận chính xác liên quan tới khái niệm đó; tới thời điểm nào đó có đủ điều kiện thì chúng ta có thể gợi lại vấn đề và giúp học sinh chính xác hóa khái niệm đó Chẳng hạn, ta cần chính 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ị, chúng ta có thể yêu cầu học sinh làm bài 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 và 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 <= Then Writeln('Nhap lai!'); Until r > 0; End; Begin (11) 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 Chúng ta có thể yêu cầu học sinh thực thi chương trình trên và chạy thử Học sinh phát là kết chu vi và diện tích ba đường tròn Vấn đề đặt là: Chương trình sai chỗ nào? Lúc này giáo viên có thể khẳng định phân biệt tham biến và tham trị, các giá trị tham biến lưu giữ ngoài chương trình con, còn giá trị tham trị lưu giữ thực chương trình con, khỏi chương trình nó không còn lưu giữ giá trị đó Điều này giúp cho chúng ta chính xác hóa khái niệm tham biến và tham trị cho học sinh Chương trình trên 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 <= Then Writeln('Nhap lai!'); Until 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 4) Hướng tới hoàn chỉnh hệ thống Để có thể giúp học sinh nắm bắt các kiến thức chương trình cách có hệ thống Sau học xong chương trình con, chúng ta có thể đưa sơ đồ sau: Thủ tục Không Có tham chiếu Chương trình Tham trị Hàm Có tham chiếu Tham biến Tiếp theo, để giúp cho học sinh nhìn thấy vấn đề có hệ thống các rõ ràng hơn, đặc biệt là giúp cho học sinh hiểu rõ các vấn đề chương trình Chẳng hạn đâu là biến toàn cục, đâu là biến địa phương, nào dùng tham biến, nào dùng tham trị, các chương trình gọi lẫn nào?, Chúng ta có thể đư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 và tổng diện tích tất các tam giác đó” (12) 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 5) Lật ngược vấn đề Xuất phát, chúng ta cho học sinh thực bài toán sau: “Viết chương trình đổi xâu ký tự thành chữ HOA” Var x:String; Procedure Doi(x: String); Var d, i:Integer; Begin d := 0; Write('Doi sang chu hoa: '); For I := to Length(x) Do Write(Upcase(x[i])); End; Begin Write('Nhap xau: '); Readln(x); Doi(x); Readln End (13) Ngược lại, chúng ta đặt câu hỏi: Nếu ta cần đổi xâu ký tự thành xâu chữ thường thì làm nào? Học sinh đã biết bảng mã ASCII ký tự viết hoa A, B, C, , Z mã hóa các số từ 65 đến 90 Còn các ký tự thường a, b, c, z mã hóa các số từ 97 đến 122 Ta thấy rõ ký tự viết hoa và viết thường chữ cách 32 đơn vị Chính vì vậy, ta có thể sử dụng quy luật này để đổi xâu ký tự viết HOA thành xâu ký tự viết thường cách dùng vòng For chạy từ đầu xâu đến cuối xâu và đổi ký tự thành mã ASCII, gặp ký tự viết hoa, ta cộng mã ASCII nó thêm 32 đơn vị Chương trình sau: Var x: String; Procedure Doi(x: String); Var d, i:Integer; Begin d := 0; Write('Doi sang chu thuong: '); For i := to Length(x) Do Begin d := ord(x[i]); If (d >= 65) And (d <= 90) Then d := d + 32; Write(chr(d)); End; End; Begin Write('Nhap xau: '); Readln(x); Doi(x); Readln End 6) Xét tương tự Xuất phát từ bài toán: “Viết chương trình tìm độ dài đường cao tam giác biết độ dài cạnh tam giác đó” Var a, b, c, S: 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 m, n, p: Real); Begin Repeat Write('Nhap dai canh thu nhat: '); Readln(m); Write('Nhap dai canh thu hai : '); Readln(n); Write('Nhap dai canh thu ba : '); Readln(p); If Not Ktra(m, n, p) Then Writeln('Ba dai vua nhap khong phai la canh tam giac! Nhap lai:'); Until Ktra(a, b, c); End; Function DT :Real; Var d: Real; Begin d := (a + b + c) / 2; DT := sqrt(d * (d - a) * (d - b) * (d - c)); End; Procedure Dcao(m: Real); Begin Writeln('Duong cao qua canh ', m:0:2,' la: ',2 * S / m:0:2); (14) End; Begin Nhap(a, b, c); S:=DT; DCao(a); DCao(b); DCao(c); Readln End Tương tự, chúng ta yêu cầu học sinh giải bài toán sau: “Viết chương trình tìm độ dài đường trung tuyến tam giác biết ba cạnh tam giác” Var a, b, c, S: 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 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; Begin Writeln('Trung tuyen qua canh ',a:0:2,' la: ',0.5 * sqrt(2 * (b * b + c * c) - a * a):0:2); Writeln('Trung tuyen qua canh ',b:0:2,' la: ',0.5 * sqrt(2 * (a * a + c * c) - b * b):0:2); Writeln('Trung tuyen qua canh ',c:0:2,' la: ',0.5 * sqrt(2 * (b * b + a * a) - c * c):0:2); End; Begin Nhap(a, b, c); Trung_Tuyen; Readln End 7) Khái quát hóa Xuất phát từ bài toán: “Tìm ước chung lớn số ” Var a, b: Integer; Begin Repeat Writeln('Nhap vao so:'); Readln(a,b); If (a<=0) Or (b<=0) then Writeln(‚Nhap lai!’); Until (a>0) And (b>0); Write('UCLN(',a,',',b,') = '); While a <> b Begin If a > b Then a := a - b Else b := b - a; End; Write(a); Readln End (15) Tiếp theo, Chúng ta yêu cầu học sinh: “Sử dụng chương trình để tìm ước chung lớn ba số ” Đến đây, để viết hàm tính ước chung lớn hai số, chúng ta nên hướng dẫn học sinh sử dụng thuật toán Ơclit để viết chương trình nhằm tăng tốc độ tính toán Var a, b, c, tam: Integer; Function UCLN(Var x, y: Integer): Integer; Var tam: Integer; Begin While y<>0 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: chúng ta yêu cầu học sinh giải bài toán: “Viết chương trình tìm ước chung lớn n số ” Để thực hiện, ta có thể 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 là u để lưu giữ giá trị đầu tiên 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 chính là 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 y<>0 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]); Write(u); Writeln; Readln End (16) 8) Tìm liên hệ và phụ thuộc Nói riêng cách gợi động xuất phát từ phương thức tư và hoạt động phổ biến Tin học xét tương tự, khái quát hóa, xét liên hệ và phụ thuộc, quen thuộc phương thức này không là kết mà còn là điều kiện việc gợi động theo cách đó 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ệ và 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 là việc theo cách đó Để thực điều này dạy học cho học sinh chương trình Chúng ta có thể yêu cầu học sinh giải bài toán sau: “Có cái túi chứa tối đa D (kg) với n đồ vật, Cần chọn các đồ vật cho giá trị túi là lớn Biết đồ vật i có khối lượng là W[i] và giá trị là 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 <= n) And (d > 0) And (W[i] > 0) Do Begin 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; (17) 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: GỢI ĐỘNG CƠ TRUNG GIAN 1) Hướng đích Xuất phát từ bài toá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; End; Readln End Mục tiêu là chia bài toán ban đầu thành bài toán nhỏ độc lập Chẳng hạn:Ta sử dụng chương trình thành hai bài toá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!') (18) 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 bài toán trê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 bài toán nhỏ sau: T1: Giải phương trình bậc T2:  > 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:'); (19) 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 Xét bài toán : Tính k Cn Học sinh đã biết công thức : Cnk = n! Bài toán k ! (n − k)! này ta quy bài toán quen thuộc là tính n! Ở đây chúng ta cần lưu ý với học sinh rằng: Để tính Cnk ta cần xây dựng chương trình tính n! sau đó, ta tìm Cnk công thức trên 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 các số âm và 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 3) Xét tương tự Xuất phát từ bài toán: “Tính n! thuật toá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ự, chúng ta yêu cầu học sinh thực giải bài toán: “Tính an thuật toán đệ quy” (20) 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 4) Khái quát hóa Xuất phát từ bài 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 Ở đây chúng ta cần lưu ý với học sinh : lệnh gán nhận giá trị thì 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ứ nhất? đó là vì x, y, z, tg là các địa lưu trữ giá trị Những giá trị này bị thay đổi qua lệnh gán Địa biến thì không đổi, nội dung biến thì đã thay đổi thực lệnh gán Tiếp theo, chúng ta có thể 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; (21) 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 5) Xét biến thiên và phụ thuộc Xét bài toá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 là ba cạnh tam giác hay không? có thì tam giác đó là tam giác có ba góc nhọn hay tam giác vuông 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 là ba số đo tam giác Tức là số phải nhỏ tổng hai số còn lại (điều này xảy với ba số) Sau đó, chúng là ba số đo ba cạnh tam giác thì 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 còn lại mà nó là 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 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!') (22) 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: GỢI ĐỘNG CƠ KẾT THÚC Gợi độ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ác cách gợi động khác Mặc dù nó không có tác dụng kích thích nội dung đã qua hoạt động đã thực hiện, nó góp phần gợi động thúc đẩy hoạt động nói chung và nhiều việc gợi động kết thúc trường hợp này lại là chuẩn bị gợi động cho trường hợp tương tự sau này Trong thực tế hoạt động dạy học, nhiều từ đầu giải vấn đề, ta chưa thể làm rõ lại học nội dung này, lại thực hoạt động Những câu hỏi này phải đợi mãi sau giải đáp giải đáp trọn vẹn Như vậy, ta đã gợi động kết thúc, nhấn mạnh hiệu nội dung hoạt động đó với việc giải vấn đề đặt Xét bài toán sau: “Lập chương trình cho máy tính tìm các đường trung tuyến tam giác biết số đo ba cạnh là a, b, c nhận vào từ bàn phím” Trong bài toán này chúng ta yêu cầu học sinh chia thành nhiều bài toán nhỏ độc lập Cụ thể là: Var a, b, c, S: Real; Function Ktra: Boolean; 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; (23) Readln End Sau chương trình đã chạy thông suốt, ta gọi lại chương trình và cho học sinh thấy bài toán này là tính các đường trung tuyến tam giác nên các 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 này đề cập đến với tham chiếu bài toán cần tính các đường trung tuyến nhiều tam giác mà cách xác định ba cạnh tam giác có thể khác Để thực ý định trên, ta yêu cầu học sinh giải bài toán sau: “Lập trình cho máy tính in lên màn hình các đườ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 là a1, b1, c1 - Tam giác thứ hai có độ dài ba cạnh là a2, b2, c2 - Tam giác thứ ba có độ dài ba cạnh là a1 + a2, b1 + b2, c1 + c2” Var a1, b1, c1,a2, b2, c2, S: 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; 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 GỢI ĐỘNG CƠ TẬP TRUNG VÀO NHỮNG TRỌNG ĐIỂM (24) Trên đây chúng ta đã xét đến khả gợi động xuất phát từ nội dung dạy học Ngoài ra, còn 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ó chú ý đế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, có thể gợi động cho nội dung dạy học hoạt động nào đó cách nhấn mạnh tầm quan trọng nội dung hoạt động này nghề nào đó xã hội Tuy nhiên cách gợi động hướng nghiệp này lại có nhược điểm là nó không hấp dẫn học sinh không có dự định làm nghề đó sau này Vì có thể bổ xung cách nhấn mạnh nắm nội dung đó, thực hoạt động đó là 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 và hoạt động là không hợp lý và 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 và thời gian cần thiết Thí dụ : Viết chương trình nhập các đ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 : hs 1+hs ∗2+ hs ∗3 Trong đó : l1+l ∗2+3 hs1 : tổng các điểm hệ số l1: số lần điểm hệ số hs2 : tổng các đ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 là đủ, tức là các điểm nhập vào cần phải xử lý theo xâu ký tự sau đó đổi sang số để tính toán Đây là chương trình tính điểm mà học sinh có thể ứng dụng thực tế học tập mình Để làm bài toán này, học sinh cần phải ứng dụng vấn đề thực tế là cần phải biết cách tính điểm TBm sau đó áp dụng các kiến thức chương trình và kiến thức xử lý xâu ký tự để áp dụng thực chương trình Tuy nhiên chúng ta cần lưu ý nhập điểm, điểm hệ số và hệ số là các số nguyên với số lần điểm nhập vào không hạn chế, còn điểm hệ số có thể là số thực có điểm Chính vì 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 và điểm nên chúng ta có thể sử dụng biến Char để xác định rõ điểm 10 vừa nhập là điểm 10 hay là hai điểm và Trong công việc tính toán, chúng ta cần phải có hai hàm: hàm tính tổng các điểm và hàm đếm số lần điểm loại điểm, là các điểm từ đến vấn đề đơn giản, có điểm 10 việc đếm số lần điểm là việc tính tổng các đ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ự và thì đếm giữ nguyên, đến số thì tính từ đó Như vậy, gặp điểm 10 đếm là + Trường hợp điểm từ đến 9: Đếm bình thường và việc tính tổng vậy, có điều để tính tổng các phần tử chúng ta cần sử dụng vòng For duyệt toàn các phần tử xâu, với ký tự ta lại dùng hàm Val để đổi ký tự đó sang số để tính toán Cuối cùng, ta sử dụng hàm Tinh để tính điểm trung bình môn theo các hàm tính tổng và hàm đếm đã thực trên Chương trình sau: Var hs1, hs2 , h3: String; hs3: Real; k: Integer; Procedure Nhap1(Var st1: String; t1: Byte); (25) Var a1, c1, i, tam: Integer; ch: Char; t: Char; 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) Then Writeln('Nhap lai!'); Until (c1 = 0) And (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<0) Then Writeln('Nhap lai!'); Until (c2 = 0) and (a2 <= 10) And (a2>=0); End; Function Tong(a : String):Integer; Var i, s, d, c : Integer; x:String; Begin s := 0; For i := to Length(a) Do Begin If (a[i] = '1') And (a[i+1] = '0') Then Begin Val(a[i] + a[i+1], d, c); s := s + d; End Else Begin Val(a[i], d, c); s := s + d; End; End; Tong := s; End; Function Dem(a : String): Integer; Var i, l : Integer; x: String; Begin l := 0; For i := to Length(a) Do Begin If (a[i] = '1') And (a[i+1] = '0') Then l := l Else l := l + 1; End; Dem := l; End; Function Tinh(x, y: String; z: Real): Real; Begin Val(h3, hs3, k); (26) Tinh:=(Tong(hs1) + Tong(hs2)*2 + hs3*3)/(Dem(hs1) + Dem(hs2)*2 + 3); End; Begin Writeln('CHUONG TRINH TINH DIEM TRUNG BINH MON'); Nhap1(hs1,1); Nhap1(hs2,2); Nhap2(h3,3); Writeln('Diem he so 1: ',hs1); Writeln('Diem he so 2: ',hs2); Writeln('Diem he so 3: ',h3); Writeln('Ket qua TBm : ',Tinh(hs1,hs2,hs3):0:1); Readln End (27) KẾT QUẢ CÁC BÀI KIỂM TRA VÀ XỬ LÍ KẾT QUẢ LỚP THỰC NGHIỆM Stt Họ và tên A B C D E KT trước tác động 7 KT sau tđ TN 8 LỚP ĐỐI CHỨNG Stt Họ và tên BB CC DD EE FF KT trước tác động 6 KT sau tđ TN 6 (28)

Ngày đăng: 07/09/2021, 05:11

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan