1. Trang chủ
  2. » Luận Văn - Báo Cáo

Sáng kiến kinh nghiệm: Gợi động cơ hoạt động trong việc giảng dạy chương trình con

30 21 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 30
Dung lượng 1,08 MB

Nội dung

Sáng kiến kinh nghiệm: Gợi động cơ hoạt động trong việc giảng dạy chương trình con với mục đích tạo động cơ cho học sinh ý thức về ý nghĩa của các hoạt động khi sử dụng chương trình con trong 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 quyết các bài toán lập trình và các tình huống thực tế.

MỤC LỤC A PHẦN MỞ ĐẦU I Lý chọn đề tài II Định hướng nghiên cứu Mục đích nghiên cứu Nhiệm vụ nghiên cứu B NỘI DUNG I Cơ sở lý luận Nghiên cứu lý luận Quan sát - điều tra Tổng kết kinh nghiệm II Cơ sở thực tiễn: Thuận lợi: 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 mở đầu: a Đáp ứng nhu cầu xóa bỏ hạn chế b Hướng tới tiện lợi hợp lý hóa cơng việc c Chính xác hóa khái niệm d Hướng tới hoàn chỉnh hệ thống 10 e Lật ngược vấn đề 11 f Xét tương tự 12 g Khái quát hóa 14 h Tìm liên hệ phụ thuộc 15 Gợi động trung gian 17 a Hướng đích 17 b Quy lạ quen 19 c Xét tương tự 20 d Khái quát hóa 20 e Xét biến thiên phụ thuộc 22 Gợi động kết thúc 23 C KẾT LUẬN 29 D KIẾN NGHỊ………………………………………………………………………………30 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 cịn bó hẹp viện nghiên cứu, trường đại học, trung tâm máy tính mà cịn 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 q 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 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 Trang 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.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  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 Trang - 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 cịn 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 cịn 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 xun suốt q 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 độ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ế 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 cải tạo giới đòi hỏi phải suy nghĩ giải Trang 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 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 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 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)); Trang 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 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 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; 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,':'); Trang 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 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 tố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) Trang 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 - 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, cịn giá trị tham trị lưu giữ thực chương trình con, khỏi chương trình khơng cịn 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 Trang 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, đư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 rõ ràng hơn, đặc biệt giúp cho học sinh hiểu rõ vấn đề chương trình Chẳng hạn đâu biến tồn cục, đâu biến địa phương, dùng tham biến, 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 Trang 10 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 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; Trang 16 Begin Luachon; Readln End Gợi động trung gian a 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; 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); Trang 17 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 tố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 Trang 18 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 - Xét tốn : Tính C nk Học sinh biết cơng thức : C nk  n! Bài tốn k! (n  k )! ta quy tố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 Trang 19 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 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” 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ừ tố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; Trang 20 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ứ 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 Trang 21 End e Xét biến thiên phụ thuộc - 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 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 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à tam giác có ba góc nhọn hay tam giác vng 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); Trang 22 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ù 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 - 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 tố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); Trang 23 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 tố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 tố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); Trang 24 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 - 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ị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ó ý đế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 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 * Trong : l1  l *  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 tốn này, học sinh cần phải ứng Trang 25 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ế, cịn đ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; 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 26 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: 18/04/2021, 00:35

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w