skkn gợi ĐỘNG cơ HOẠT ĐỘNG TRONG VIỆC GIẢNG dạy CHƯƠNG TRÌNH CON

31 562 2
skkn gợi ĐỘNG cơ HOẠT ĐỘNG TRONG VIỆC GIẢNG dạy CHƯƠNG TRÌNH CON

Đ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

MỤC LỤC A PHẦN MỞ ĐẦU .Error: Reference source not found I Lý chọn đề tài Error: Reference source not found II Định hướng nghiên cứu .Error: Reference source not found Mục đích nghiên cứu .Error: Reference source not found Nhiệm vụ nghiên cứu Error: Reference source not found B NỘI DUNG .Error: Reference source not found I Cơ sở lý luận Error: Reference source not found Nghiên cứu lý luận Error: Reference source not found Quan sát - điều tra Error: Reference source not found Tổng kết kinh nghiệm Error: Reference source not found II Cơ sở thực tiễn: Error: Reference source not found Thuận lợi: Error: Reference source not found Khó khăn: Error: Reference source not found III Nội dung đề tài gợi động hoạt động việc giảng dạy chương trình .Error: Reference source not found Gợi động mở đầu: Error: Reference source not found a Đáp ứng nhu cầu xóa bỏ hạn chế Error: Reference source not found b Hướng tới tiện lợi hợp lý hóa công việc Error: Reference source not found c Chính xác hóa khái niệm Error: Reference source not found d Hướng tới hoàn chỉnh hệ thống Error: Reference source not found e Lật ngược vấn đề Error: Reference source not found f Xét tương tự Error: Reference source not found g Khái quát hóa Error: Reference source not found h Tìm liên hệ phụ thuộc Error: Reference source not found Gợi động trung gian Error: Reference source not found a Hướng đích Error: Reference source not found b Quy lạ quen Error: Reference source not found c Xét tương tự Error: Reference source not found d Khái quát hóa Error: Reference source not found e Xét biến thiên phụ thuộc Error: Reference source not found Gợi động kết thúc Error: Reference source not found C KẾT LUẬN .Error: Reference source not found D KIẾN NGHỊ……………………………………………………………………………… Error: Reference source not found Trang ĐỀ TÀI: GỢI ĐỘNG CƠ HOẠT ĐỘNG TRONG VIỆC GIẢNG DẠY CHƯƠNG TRÌNH CON A PHẦN MỞ ĐẦU I Lý chọn đề tài - Trong bối cảnh Công nghệ thông tin ngày phát triển, việc sử dụng rộng rãi máy tính không bó hẹp viện nghiên cứu, trường đại học, trung tâm máy tính mà mở rộng quan, xí nghiệp nhà máy Song song với trình trên, việc giảng dạy Tin học trường đại học, trung học 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ậy, giáo viên giảng dạy môn Tin học trường phổ thông, việc tìm hiểu, nghiên cứu vấn đề Tin học, với việc tìm biện pháp giảng dạy Tin học nhà trường phổ thông 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 cao xã hội Trong nghiệp vụ người giáo viên có hai vấn đề quan trọng: thứ thực tiễn tiềm - kiến thức lý thuyết Thứ hai 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 điều định nghiệp vụ giáo viên, đánh giá chất lượng giảng dạy giáo viên Hai thực tiễn vừa mâu thuẫn với nhau, lại vừa thống với Giáo viên 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 Chính để 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 tạo động lực bên thúc đẩy thân họ hoạt động để đạt mục tiêu Điều gợi động dạy học 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ý, 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 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 hoàn thành chương trình lớn vượt toán bình thường mà nội môn học đòi hỏi Trang 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 yêu thích 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 nào? Đó vấn đề mà thân quan tâm Với tất lý nêu trên, định chọn đề tài II Định hướng nghiên cứu Mục đích nghiên cứu - 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 toán lập trình tình thực tế Nhiệm vụ nghiên cứu 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 Trang B NỘI DUNG I Cơ sở lý luận Nghiên cứu lý luận - Trong nghiên cứu lý luận 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 Bên cạnh 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 hoàn chỉnh nhận thức đạt Quan sát - điều tra 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 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 Người nghiên cứu đến trực tiếp nơi mà họ quan tâm 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 Tổng kết kinh nghiệm Tổng kết kinh nghiệm đá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 II Cơ sở thực tiễn: * Một số thuận lợi khó khăn thực chuyên đề: Thuận lợi:  Nhà trường: Tuy môn Tin học môn học đưa vào học năm gần nhà trường tạo điều kiện để học sinh học từ khối lớp 10, tạo điều kiện sắm sửa máy móc, trang thiết bị phục vụ cho việc dạy học môn Tin học Trang  Giáo viên: - Giáo viên đào tạo chuẩn chuyên ngành Tin học để đáp ứng yêu cầu cho dạy học môn Tin học bậc THPT Phần lớn giáo viên quan tâm đến Tin học, quan tâm đến lập trình tạo động hứng thú cho học sinh qua đoạn chương trình, cho học sinh thấy tầm quan trọng lập trình em học sinh khối 11 học môn học lý thú lập trình pascal Khó khăn: Do chương trình tin học năm gần đưa vào trường THPT nên nhiều bỡ ngỡ mẽ, giáo viên chưa sẵn sàng trang bị cho kiến thức thật tốt để truyền đạt kiến thức tốt môn tin học đến cho học sinh đặc biệt lập trình pascal nên việc truyền đạt kiến thức đến cho học sinh nhiều bỡ ngỡ Nhà trường nhiều khó khăn nên chưa đáp ứng phòng dạy thực hành tốt nên việc thực hành học sinh học lập trình pascal khó khăn III Nội dung đề tài gợi động hoạt động việc giảng dạy chương trình Gợi động 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, giáo viên 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 Gợi động việc làm ngắn ngủi lúc bắt đầu dạy tri thức đó, mà phải xuyên suốt trình dạy học Vì vậy, phân biệt gợi động mở đầu, gợi động trung gian gợi động kết thúc Trong đề tài xin đưa số giải pháp gợi Trang động hoạt động việc giảng dạy chương trình ngôn ngữ lập trình Pascal theo giai đoạn Gợi động mở đầu: Để Gợi động mở đầu 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ế 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, 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 ý đ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 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: a Đáp ứng nhu cầu xóa bỏ hạn chế Xét toá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” Trang 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, ta 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 toá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, ta 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 Var a1, b1, a2, b2: Real; Trang 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 b Hướng tới tiện lợi hợp lý hóa công việc 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; Writeln('Cac so nguyen to cua day so tren la:'); For k := to n Trang If NgTo(A[k]) Then Write(A[k]:6); Readln End - Từ chương trình ta 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 toá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 Chính xác hóa khái niệm 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 ta 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ị, ta 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 Trang - 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ữ 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 d Hướng tới hoàn chỉnh hệ thống Để 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, chúng tatục đưa Không sơ đồ sau: Thủ 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 rõ ràng hơn, đặc biệt giúp cho học sinh hiểu Trang 10 Var temp: Integer; Begin Sapxep; i := 1; gt := 0; t := 0; While (i 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; 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 Gợi động trung gian a Hướng đích Xuất phát từ 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; Trang 17 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 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!') 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: ∆ > T3: ∆ = Trang 18 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 b Quy lạ quen Trang 19 k Xét toán : Tính C n Học sinh - biết công thức : C nk = n! k! (n − k )! Bài toán ta quy toán quen thuộc k tính n! Ở cần lưu ý với học sinh rằng: Để tính C n ta cần xây dựng k chương trình tính n! sau đó, ta tìm C n 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 c Xét tương tự Xuất phát từ 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); Trang 20 Readln End - Tương tự, yêu cầu học sinh thực giải toán: “Tính an thuật toán đệ quy” 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 d Khái quát hóa 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 Trang 21 - Ở 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ứ 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 e Xét biến thiên phụ thuộc - Xét 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 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 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 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 Trang 22 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 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 Gợi động 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ách gợi động khác Mặc dù 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 Trang 23 độ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 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 phải đợ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 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 toán yê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; 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 Trang 24 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 toán tính đường trung tuyến tam giác nên hàm Ktra, thủ tục Nhap, thủ tục BaTT 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 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); Trang 25 BaTT(a1, b1, c1, 1); BaTT(a2, b2, c2, 2); BaTT(a1 + a2, b1 + b2, c1 + c2, 3); Readln End - Trên xét đến khả gợi động xuất phát từ nội dung dạy học Ngoà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 không hấp dẫn học sinh 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 toá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 Trang 26 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 toá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ữ nguyên, đế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 toà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 toá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; 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; Trang 27 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

Ngày đăng: 14/08/2016, 14:26

Từ khóa liên quan

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

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

Tài liệu liên quan