Đăng ký Đăng nhập
Trang chủ Skkn một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con...

Tài liệu Skkn một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con

.DOC
41
336
100

Mô tả:

Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con A. PHẦN MỞ ĐẦU I. Lý do chọn đề tài: Thế kỷ XXI là thế kỷ của nền kinh tế tri thức. Nói đến tri thức, sáng tạo tri thức, phổ biến, truyền thụ tri thức, học tập và lĩnh hội tri thức không thể không nói đến khoa học công nghệ và giáo dục - đào tạo. Sự nghiệp giáo dục phải đáp ứng những đòi hỏi của cách mạng khoa học và công nghệ. Đó là một yêu cầu có tích chất nguyên tắc. Chính vì vậy, sự hiểu biết nhất định về máy tính điện tử, công nghệ thông tin không phải chỉ là vốn riêng của một số người chuyên nghiệp mà phải trở thành học vấn phổ thông của tất cả mọi người trong xã hội, nhất là thế hệ trẻ. Chính vì vậy, từ năm 1993 Bộ Giáo dục và Đào tạo đã quyết định đưa môn Tin học vào giảng dạy trong các trường phổ thông. Tin học là một môn học công cụ, có tính trừu tượng và tính thực tiễn phổ dụng. Những tri thức và kỹ năng Tin học cùng với phương pháp làm việc trong Tin học đã trở thành công cụ để học tập những môn học khác trong nhà trường, là công cụ của nhiều ngành khoa học khác cũng như hoạt động trong đời sống thực tế. Bởi vậy, dạy Tin học không chỉ đơn thuần là tạo điều kiện cho học sinh chiếm lĩnh những tri thức và kỹ năng Tin học mà còn phải góp phần phát triển năng lực trí tuệ chung cho học sinh, trong đó có vấn đề dạy học tư duy lập trình mà ngôn ngữ lập trình Pascal là một ví dụ. Tuy nhiên, hầu hết học sinh rất khó khăn để tiếp thu kiến thức của môn học này vì nhiều lý do như: Phải có tư duy thuật toán tốt, đòi hỏi tư duy nhiều, bài học khô khan, khó hiểu, các thuật ngữ bằng tiếng Anh… làm cho môn học pascal trở nên không hứng thú đối với các em. Vấn đề này thật sự thể hiện rất rõ nét đối với những học sinh vùng nông thôn như học sinh trường THPT Nông Cống 4. Hiện nay, tôi nhận thấy trong lý luận dạy học sử dụng khá nhiều phương pháp như: Phương pháp thảo luận, phương pháp đặt câu hỏi, phương pháp chia nhóm … Theo các phương pháp trên cũng có nhiều cách thiết kế bài giảng nhằm mục đích bồi dưỡng và tạo cảm hứng cho học sinh năng lực ham muốn học hỏi, tư duy sáng tạo, năng lực tự giải quyết vấn đề, rèn luyện và phát triển năng lực tự học sáng tạo, làm việc một cách tư duy tự chủ. Bên cạnh đó, trong các kỹ thuật dạy học mới, vai trò của người thầy có sự thay đổi là: “hướng dẫn học sinh biết tự mình tìm ra hướng giải quyết những vấn đề nảy sinh trong quá trình học tập, biết cách làm việc độc lập, làm việc tập thể. Thầy là người định hướng, là người cố vấn giúp học sinh tự đánh giá, cũng như giúp học sinh luôn đi đúng con đường tìm hiểu, lĩnh hội kiến thức…”. 1 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con Qua những năm dạy học, áp dụng những phương pháp dạy học trên tôi nhận thấy có hiệu quả nhưng chưa thật sự cao bởi vì sự tư duy gắn kết trong suốt quá trình học năm lớp 11. Các em hầu như chỉ chú ý trong học kỳ 1, còn sang học kỳ 2 về cuối học kỳ thì các em đã giảm dần sự hứng thú. Trong khi tầm quan trọng của phần chương trình con thể hiện ở các đặc trưng như: Sử dụng chương trình con để hợp lý, tiết kiệm công sức lập trình. Đồng thời, chương trình con có thể giúp cho người lập trình dễ sửa chữa, dễ kiểm tra. Đặc biệt, khi học về chương trình con, học sinh có thể hiểu một cách sâu sắc hơn về ngôn ngữ lập trình, nhìn nhận vấn đề một cách sáng sủa hơn, chặt chẽ hơn và nhất là chương trình con có thể giúp cho các em hoàn thành những chương trình lớn hơn vượt ra những bài toán bình thường và chương trình con cũng là chương trình tổng hợp các kiến thức các em đã học trong cả năm học lớp 11. Đó cũng là vấn đề để tôi nêu một số kinh nghiệm trong đề tài: “Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con”, phần chương trình con – SGK lớp 11. Nhằm giúp các em học sinh noi chung và học sinh ở trường THPT Nông Cống 4 nói riêng có khả năng tư duy lập trình và học tốt bộ môn Pascal. II. Mục đích nghiên cứu Nâng cao hiệu quả dạy học của giáo viên và tiếp thu kiến thức trong quá trình học tập của học sinh đối với môn học đòi hỏi tư duy sáng tạo như lập trình pascal, đặc biệt là phần chương trình con. 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ế nhằm góp phần hình thành và phát triển năng lực trí tuệ chung cho học sinh THPT. III. Đối tượng và phạm vi nghiên cứu Đối tượng nghiên cứu: - Nghiên cứu dạy học lập trình trong chương trình Tin học phổ thông, đặc biệt là phần chương trình con – SGK lớp 11. - Nghiên cứu các tài liệu liên quan đến thuật toán và ngôn ngữ lập trình Pascal. - Nghiên cứu một số tài liệu về đổi mới phương pháp giáo dục. - Nghiên cứu hoạt động dạy và học của giáo viên và học sinh ở trường THPT. Phạm vi nghiên cứu: 2 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con Là giáo viên Tin học mới vào ngành, thời gian hạn chế nên trong đề tài này tôi xin nêu lên một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con, SGK lớp 11. IV. Nhiệm vụ nghiên cứu Nhằm đạt được mục đích nghiên cứu đã nêu, cần phải thực hiện các nhiệm vụ sau: - Nghiên cứu tình hình dạy và học Tin học ở trường THPT hiện nay. Trao đổi, tìm hiểu kinh nghiệm của giáo viên phổ thông, tiếp cận học sinh khi học ngôn ngữ lập trình Pascal về năng lực và trí tuệ. - Nghiên cứu những cơ sở về lý luận dạy học. - Áp dụng vào thực tiễn nhằm rèn luyện các thao tác tư duy, hình thành và phát triển tư duy logic, suy đoán trừu tượng nhằm giúp các em giải các bài tập Pascal. - Đưa ra các phương pháp, động cơ trong dạy học, xây dựng hệ thống bài tập có chuyên đề cụ thể để học sinh dễ tiếp cận bài học. V. Phương pháp nghiên cứu 1. Nghiên cứu lý thuyết: - Nghiên cứu các tài liệu, bài giảng về phương pháp dạy học Tin học. - Nghiên cứu các tài liệu về phương pháp dạy học môn Toán, các tài liệu giáo dục học, tâm lý học... - Nghiên cứu vị trí, khối lượng kiến thức về ngôn ngữ lập trình Pascal trong chương trình THPT. - Nghiên cứu các tài liệu về ngôn ngữ lập trình Pascal. - Nghiên cứu các công văn hướng dẫn của Bộ Giáo dục và Đào tạo, Sở Giáo dục và Đào tạo về vấn đề đưa Tin học vào chương trình THPT cũng như các vấn đề về yêu cầu chất lượng giáo dục. 2. Thực nghiệm sư phạm: - Tìm hiểu qua giáo viên để nắm được tình hình giảng dạy và học tập Tin học trong nhà trường THPT Nông Cống 4 hiện nay. - Kiểm chứng bước đầu qua đợt thực tập sư phạm: sẽ tiến hành giảng dạy ở các lớp trong trường THPT nhằm kiểm tra giả thuyết khoa học, minh họa tính khả thi và tính hiệu quả của giải pháp đề xuất. - Tiến hành cụ thể bằng 2 giai đoạn tại trường THPT Nông Cống 4: o Giai đoạn 1: Năm học 2011 – 2012 tại các lớp 11A3 và 11A6. 3 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con o Giai đoạn 2: Năm học 2012 – 2013 tại các lớp 11B3 và 11B1. 4 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con B. PHẦN NỘI DUNG I. Cơ sở lý luận của đề tài. 1. Nghiên cứu lý luận Qua nghiên cứu cho thấy, Lý luận dạy học Tin học được coi như là một bộ phận của khoa học giáo dục. Và theo quan điểm đó thì lý luận dạy học Tin học cũng như lý luận dạy học các môn học khác lấy tri thức về tâm lý học, về lý luận giáo dục và về lý luận dạy học đại cương làm nền tảng. Tuy nhiên, lý luận dạy học Tin học còn phải dựa vào nội dung và phương pháp nghiên cứu của bộ môn Tin học. Từ cơ sở này làm nảy sinh tính đặc thù của lý luận dạy học Tin học so với lý luận dạy học các môn khác Quá trình nghiên cứu lý luận áp dụng vào các tài liệu, lý thuyết đã được khẳng định trong Tâm lý học, Giáo dục học, Công nghệ thông tin,… để từ đó tìm ra các phương pháp hợp lý có tính thuyết phục cao nhằm áp dụng vào phương pháp dạy học cho bộ môn tin học. Trong đó yếu tố quan trọng của phương pháp là “Lấy người học làm trung tâm”. 2. Nghiên cứu thông qua phương pháp quan sát - điều tra: Quan sát điều tra là quá trình tri giác (Mắt thấy, tai nghe) và ghi chép lại mọi yếu tố liên quan đến đối tượng nghiên cứu, phù hợp với mục tiêu nghiên cứu… nhằm mô tả, phân tích, nhận định, đánh giá. - Quan sát trực tiếp: Quan sát và ghi chép lại hành vi của con người ngay tại bối cảnh và thời gian thực tế diễn ra. - Quan sát gián tiếp: Không quan sát trực tiếp hành vi mà đi thu thập các dấu vết của hành vi con sót lại như: Lịch hoạt động của phòng đa năng của các giờ học bằng máy Projecter, phòng thực hành Tin học… Qua các phương pháp này nhằm điều tra, dõi hiện tượng giáo dục theo trình tự thời gian, phát hiện những biến đổi số lượng, chất lượng gây ra do tác động giáo dục. Từ đó thấy được những vấn đề thời sự cấp bách đòi hỏi phải nghiên cứu hoặc góp phần giải quyết nhiệm vụ nghiên cứu. 3. Tổng kết kinh nghiệm: Tổng kết kinh nghiệm là đánh giá và khái quát hóa những kinh nghiệm đã thu thập được trong hoạt động thực tiễn, từ đó phát hiện ra những vấn đề cần khẳng định để đưa ra áp dụng rộng rãi hoặc 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, được lĩnh hội, kiểm chứng từ quá trình hoạt động thực tiễn 5 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con sinh động. Bài học kinh nghiệm là sự cụ thể hóa một cách sáng tạo tư tưởng, luận điểm, lý luận giáo dục đã đi vào cuộc sống. Trong quá trình nghiên cứu tổng kết kinh nghiệm, có khi người ta khám phá ra những mối liên hệ có tính quy luật của những hiện tượng giáo dục. 6 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con II. Thực trạng của vấn đề nghiên cứu: * Một số thuận lợi và khó khăn khi thực hiện nghiên cứu đề tài: 1. Thuận lợi: - Đối với nhà trường: Được sự quan tâm của Ban giám hiệu, tổ chuyên môn của nhà trường, trong những năm học gần đây luôn tạo điều kiện tốt nhất trong khả năng kinh tế của nhà trường để giúp giáo viên và học sinh tham gia dạy - học có hiệu quả. Phát triển công nghệ thông tin, đặc biệt là kết nối Internet để cán bộ giáo viên và học sinh tham khảo tài liệu trên mạng. - Đối với giáo viên: Giáo viên bộ môn Tin học trong nhà trường nói chung và bản thân nói riêng được đào tạo chuẩn chuyên ngành về Tin học để đáp ứng yêu cầu cho dạy và học môn Tin học trong bậc THPT. Đa số các giáo viên trong toàn trường đều quan tâm đến Tin học, ứng dụng công nghệ thông tin vào công tác học tập và giảng dạy. Đó cũng là cơ sở để tạo động lực phát huy tính ham học, tích cực của học sinh đối với bộ môn Tin học. 2. Khó khăn: - Đối với nhà trường: Mặc dù nhà trường đã quan tâm và tạo điều kiện tốt nhất, tuy nhiên cơ sở vật chất còn thiếu thốn rất nhiều. Trong khi đó đối với bộ môn, thực hành trên thiết bị máy tính chiếm đa số thời lượng học tập của các em. - Đối với giáo viên: Giáo viên sẽ trở nên rất khó khăn khi các em tham gia học tập trong điều kiện không đầy đủ máy tính thực hành. Mặc dù kiến thức lớp 11 thiên về tư duy lập trình nhưng khi có thiết bị thực hành thì thao tác kiểm tra – tư duy và trình bày ý tưởng sẽ trở nên phong phú hơn. - Đối với học sinh: 100% học sinh trường THPT Nông Cống 4 là học sinh vùng nông thôn, điều kiện kinh tế gia đình thấp nên các em không có thiết bị máy tính thực hành tại nhà. Vì vậy mà vấn đề áp dụng công nghệ thông tin (đặc biệt là Internet) cho học tập là không có. Hơn nữa, chương trình Pascal là ngôn ngữ lập trình bằng tiếng Anh các em học rất khó khăn, vì kiến 7 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con thức ngoại ngữ của các em rất kém, cộng với tư duy lập trình chưa tốt nên thật sự đây là vấn đề mà bản thân tôi rất băn khoăn khi thực hiện nghiên cứu đề tài này. III. Các giải pháp và quá trình thực hiện: Làm thế nào để các em học sinh có động cơ hứng thú học tập đối với môn tin học lớp 11? Phương pháp gợi động cơ hoạt động cho học sinh rất quan trọng để các em tham gia hoạt động tác động lên đối tượng. Làm cho học sinh có ý thức về ý nghĩa của những hoạt động và của đối tượng hoạt động. Theo đó, gợi động cơ hoạt động cũng là mục tiêu sư phạm biến thành những mục tiêu của cá nhân học sinh, chứ không phải chỉ là sự vào bài, đặt vấn đề một cách hình thức. Thông thường, giáo viên khuyến khích các em học tập tốt thường dùng những cách như cho điểm, khen thưởng, thông báo cho gia đình kết quả học tập của các em,... Tuy nhiên, càng lên lớp cao, cùng với sự trưởng thành của học sinh, với trình độ nhận thức và giác ngộ chính trị ngày càng cao những cách gợi động cơ xuất phát từ nội dung hướng và những nhu cầu nhận thức, nhu cầu đời sống, trách nhiệm đối với xã hội ngày càng trở nên quan trọng. Vì vậy những phương pháp truyền thống trên áp dụng cũng có hiệu quả nhưng chỉ tạo cho các em về quyền lợi trước mắt, chưa định hướng về nhiệm vụ lâu dài. Gợi động cơ là kinh nghiệm mà tôi đã kiểm nghiệm trong thời gian thực tập sư phạm cũng như giảng dạy trên lớp rất hiệu quả. Với mỗi bài học các em đều có hứng thú mà không quan trọng về điểm đánh giá của bản thân, các em hứng thú khi mình đã hiểu bài và áp dụng cho các tiết học, các bài tập tiếp theo. Gợi động cơ gồm 3 bước: Gợi động cơ mở đầu, gợi động cơ trung gian và gợi động cơ kết thúc. 1. Gợi động cơ mở đầu: Gợi động cơ mở đầu được xuất phát từ các vấn đề thực tiễn, có thể nêu lên thực tiễn của Tin học, góp phần hình thành thế giới duy vật biện chứng. Cách đặt vấn đề mở đầu phải đảm bảo tính chân thực, không đòi hỏi quá nhiều các kiến thức bổ sung, con đường từ lúc nêu cho tới lúc giải quyết vấn đề càng ngắn càng tốt. Nhờ đó, học sinh nhận rõ việc nhận thức và cải tạo thế giới đã đòi hỏi phải suy nghĩ và giải quyết những vấn đề Tin học như thế nào, tức là nhận rõ Tin học bắt nguồn từ những nhu cầu của đời sống thực tế. Vì vậy, ta cần khai thác triệt để mọi khả năng để gợi động cơ xuất phát từ thực tế. 8 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con Khi gắn nội dung bài học với sự xuất phát từ thực tiễn, thì trong dạy học Tin học chúng ta cần phải gợi động cơ từ nội bộ Tin học, đó là nêu vấn đề Tin học xuất phát từ nhu cầu Tin học. Gợi động cơ theo cách này là cần thiết vì: - Việc gợi động cơ xuất phát từ thực tế không phải bao giờ cũng thực hiện được. - Việc gợi động cơ từ nội bộ Tin học sẽ giúp học sinh hình dung được đúng sự hình thành và phát triển của Tin học cùng với những đặc điểm của nó và có thể dần dần tiến tới hoạt động Tin học một cách độc lập. Chúng ta có những phương pháp sau đây áp dụng cho những bài học có nhiều nội dung cần liên hệ thực tế: 9 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con a) Xóa bỏ các hạn chế khi lập trình giải toán: Xét bài toán: Viết chương trình nhập kích thước 2 cạnh góc vuông của 3 hình tam giác vuông, tính chu vi và diện tích của mỗi hình. Trong đó: - Kích thước 2 cạnh của hình thứ nhất là a1, a2. - Kích thước 2 cạnh của hình thứ hai là b1, b2. - Kích thước 2 cạnh của hình thứ ba là c1, c2. Chương trình: Var x1, x2, y1, y2, z1, z2, C1, C2, C3, S1, S2, S3: Real; Begin Writeln('Nhap hai canh tam giac thu nhat:'); Readln(x1,x2); Writeln('Nhap hai canh tam giac thu hai:'); Readln(y1,y2); Writeln('Nhap hai canh tam giac thu ba:'); Readln(z1,z2); C1:= x1 + x2 + sqrt(x1*x1 + x2*x2); C2:= y1 + y2 + sqrt(y1*y1 + y2*y2); C3:= z1 + z2 + sqrt(z1*z1 + z2*z2); S1:= (x1 * x2)/2; S2:= (y1 * y2)/2; S3:= (z1 * z2)/2; Writeln('Hinh tam giac thu nhat co:'); Writeln('- Chu vi bang : ',C1:8:2); Writeln('- Dien tich bang : ',S1:8:2); Writeln('Hinh tam giac thu hai co:'); Writeln('- Chu vi bang : ',C2:8:2); Writeln('- Dien tich bang : ',S2:8:2); Writeln('Hinh tam giac thu ba co:'); Writeln('- Chu vi bang : ',C3:8:2); Writeln('- Dien tich bang : ',S3:8:2); Readln End. Theo yêu cầu của đề bài, chương trình trên đã thực hiện đúng, tuy nhiên các thao tác thực hiện phải lặp đi lặp lại 3 lần để tính chu vi và diện tích 3 hình tam giác. Giả sử nếu phải tính chu vi và diện tích cho N hình tam giác thì làm thế nào? Nếu áp dụng phương pháp trên thì quá phức tạp, chương trình dài dòng và sẽ không thật sự phù hợp, đó là chưa 10 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con kể trong mỗi hình khi nhập các giá trị của các cạnh chúng ta cần kiểm tra các giá trị nhập đều phải thỏa mãn giá trị cạnh của tam giác vuông. Đó thật sự là hạn chế của chương trình này. Vậy làm thế nào để khắc phục các hạn chế trên? Trong mở bài để chúng ta có thể áp dụng để vào bài cho phương pháp ứng dụng chương trình con. Thay vì phải viết nhiều lần lệnh nhập, tính đi tính lại cho từng hình ta có thể viết 2 thủ tục: 1. Thủ tục nhập hai cạnh của tam giác vuông. 2. Thủ tục tính chu vi và diện tích cho mỗi hình. Var a, b: Real; i,N: Byte; Procedure Nhap(Var x, y: Real; k: Byte); Begin Writeln('Nhap hai cạnh cua hinh tam giac thu ',k,':'); 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(m, n: Real; j: Byte); Begin Writeln(‘Chu vi hinh tam giac thu ',j,':', (m + n + sqrt(m*m + n*n)):8:2); Writeln(‘Dien tich hinh tam giac thu ',j,':', (m * n)/2):8:2); End; Begin Writeln(‘Nhap so luong tam giac N = ’); Readln(N); For i:= 1 to N do begin Nhap(a, b,i); Tinh(a,b,i); end; Readln End. b) Phân tích các khái niệm: 11 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con Trong một số bài độc lập, các khái niệm đã được ứng dụng cụ thể. Ví dụ khái niệm về tham biến trong các bài toán có giá trị biến thay đổi, ngược lại trong bài toán giá trị biến không thay đổi thì dùng tham trị. Điều này học sinh hầu như chỉ áp dụng trong các bài toán độc lập trên, vì vậy khi gặp các bài toán tổng hợp các em chưa thể phân tích, kết luận chính xác để áp dụng nhuần nhuyễn các khái niệm trên. Vì vậy ta có thể gợi lại vấn đề và giúp học sinh áp dụng chính xác 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 của chương trình con. Sau khi học cách sử dụng tham trị, ta có thể yêu cầu học sinh làm bài tập sau: “Viết một thủ tục nhập vào số đo bán kính của 3 đường tròn. Sau đó tính chu vi và diện tích của mỗi đường tròn đó”. Var r1, r2, r3: Real; Procedure Nhap( r: Real; i:Byte); Begin Repeat Write('Nhap ban kinh cua duong tron thu ',i,': '); Readln(r); If r <= 0 Then Writeln('Nhap lai!'); Until r > 0; End; Begin Nhap(r1, 1); Nhap(r2, 2); Nhap(r3, 3); Writeln('Duong tron 1 Chu vi bang:',2 * pi * r1:8:2,' Dien tich bang: ',pi * sqr(r1):8:2); Writeln('Duong tron 2 Chu vi bang:',2 * pi * r2:8:2,' Dien tich bang:',pi * sqr(r2):8:2); Writeln('Duong tron 3 Chu vi bang:',2 * pi * r3:8:2,' Dien tich bang:',pi * sqr(r3):8:2); Readln End. Sau khi học sinh chạy thử chương trình trên, các em sẽ phát hiện ra kết quả không như mong muốn vì kết quả chu vi và diện tích của cả ba đường tròn đều bằng 0. Vậy chương trình sai ở chỗ nào? Lúc này ta có thể khẳng định sự phân biệt giữa tham biến và tham trị, các giá trị của tham biến được lưu giữ khi ra ngoài chương trình con, còn giá trị của tham trị chỉ lưu giữ khi thực hiện chương trình con, nếu ra khỏi chương trình con nó sẽ 12 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con không còn lưu giữ giá trị đó. Điều này sẽ giúp cho chúng ta đưa ra các ví dụ cụ thể nhằm chứng minh cho khái niệm tham biến và tham trị cho học sinh thấy rõ. Chương trình trên được sửa lại như sau: Var r1, r2, r3: Real; Procedure Nhap(Var r: Real; i:Byte); Begin Repeat Write('Nhap ban kinh cua duong tron thu ',i,': '); Readln(r); If r <= 0 Then Writeln('Nhap lai!'); Until r > 0; End; Begin Nhap(r1, 1); Nhap(r2, 2); Nhap(r3, 3); Writeln('Duong tron 1 Chu vi bang:',2 * pi * r1:8:2,' Dien tich bang: ',pi * sqr(r1):8:2); Writeln('Duong tron 2 Chu vi bang:',2 * pi * r2:8:2,' Dien tich bang:',pi * sqr(r2):8:2); Writeln('Duong tron 3 Chu vi bang:',2 * pi * r3:8:2,' Dien tich bang:',pi * sqr(r3):8:2); Readln End. c) Sự tiện lợi và hợp lý khi sử dụng chương trình con: Xét bài toán sau: “Nhập 1 dãy gồm n số nguyên lớn hơn 1. In ra màn hình tất cả các số nguyên tố ở trong dãy”. Const Nmax = 100; Var A: Array[1..Nmax] Of Integer; k,n: Integer; Function NgTo(a: Integer):Boolean; Var i: Integer; Begin NgTo:=False; For i := 2 To Trunc(sqrt(a)) Do If a mod i = 0 Then Exit; 13 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con NgTo := True; End; Begin Write('Nhap so phan tu: '); Readln(n); Writeln('Nhap cac phan tu cua day’); For k := 1 to n do Begin Repeat Write('A[',k,'] = ');Readln(A[k]); If A[k] < 2 Then Writeln('Ban can nhap A[k] > 2. Vui long nhap lai!'); Until A[k] >= 2; End; Writeln('Cac so nguyen to cua day so tren la:'); For k := 1 to n do If NgTo(A[k]) Then Write(A[k]:6); Readln End. Giả sử chương trình trên nếu viết theo chương trình thông thường thì mỗi phần tử khi kiểm tra sẽ là 1 dãy câu lệnh, như phân tích ở trên rõ ràng việc sử dụng chương trình con 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 con 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 ra màn hình tất cả các số của dãy thỏa mãn điều kiện là hợp số” chỉ bằng hai câu lệnh phủ đị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 bằng dòng lệnh If Not NgTo(A[k]) Then Write(A[k]:6). 14 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con d) Xây dựng hệ thống chi tiết chương trình con: Để có thể giúp học sinh nắm bắt được các kiến thức về chương trình con một cách có hệ thống . Sau khi học xong về chương trình con, chúng ta có thể đưa ra sơ đồ sau: CHƯƠNG TRÌNH CON Thủ tục Hàm Bài tập sau đây sẽ giúp học sinh nhận biết cụ thể hơn về các khái niệm biến toàn cục, biến cục bộ, cách sử dụng các tham biến, tham trị… Cách gọi chương trình con thực hiện như thế nào? VD: “Viết chương trình tính tích của 2 số A và B, sau đó hoán vị giá trị 2 số trên” Var A, B: Integer; {Biến toàn cục A,B} Procedure tich(x1, y1: Integer); {Tham trị x1, y1} var t: integer; Begin t := x1 * y1; writeln(‘Tich cua ‘,x1,’ va ‘,y1,’ la:’, t); End; Procedure hoanvi(var x2, y2: Integer); {Tham biến x2, y2} var tg: integer; Begin tg := x2; 15 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con x2 := y2; y2 := tg; writeln(‘sau khi hoan vi A = ‘,x2,’ va B = ‘,y2); End; BEGIN write(‘ nhap 2 so nguyen A va B: ‘); Readln(A,B); tich(A,B); hoanvi(A,B); readln END. e. Khai thác bài toán: Nắm vững cấu trúc chương trình con là bước đầu rất quan trọng đối với những người đầu tiên tìm hiểu tới chương trình con, đặc biệt là học sinh. Chính vì vậy, sau khi hoàn thành tìm hiểu chương trình con, giáo viên tiếp tục cho học sinh khai thác các bài toán có nhiều hướng để giải quyết vấn đề. Bài tập ví dụ sau sẽ giải quyết 2 vấn đề cơ bản của bài toán: 1. Viết chương trình chuyển đổi xâu ký tự bất kỳ thành xâu ký tự in hoa. 2. Viết chương trình chuyển đổi xâu ký tự in hoa thành ký tự thường. TH1: Chuyển đổi xâu ký tự bất kỳ thành xâu ký tự in hoa. Var st: String; Procedure Doi(st: String); Var i: Integer; Begin Write('Xau ky tu in hoa la: '); For i := 1 to Length(st) Do Write(Upcase(st[i])); End; Begin Write('Nhap xau: '); Readln(st); Doi(st); Readln End. TH2: Chuyển đổi xâu ký tự in hoa thành xâu ký tự thường. 16 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con Học sinh đã biết trong bảng mã ASCII mỗi ký tự viết hoa A, B, C, ... , Z được mã hóa bằng các con số từ 65 đến 90. Còn các ký tự thường a, b, c, ... z được mã hóa bằng các con số từ 97 đến 122. Ta thấy rõ mỗi ký tự viết hoa và viết thường của một chữ cách nhau 32 đơn vị. Chính vì vậy, ta có thể sử dụng quy luật này để đổi một xâu ký tự viết HOA thành xâu ký tự viết thường bằng cách dùng một vòng For chạy từ đầu xâu đến cuối xâu và đổi từng ký tự thành mã ASCII, nếu gặp ký tự viết hoa, ta cộng mã ASCII của nó thêm 32 đơn vị. Chương trình như sau: Var st: String; Procedure Doi(st: String); Var d, i: Integer; Begin d := 0; Write('Doi sang chu thuong: '); For i := 1 to Length(st) Do Begin d := ord(st[i]); If (d >= 65) And (d <= 90) Then d := d + 32; Write(chr(d)); End; End; 17 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con Begin Write('Nhap xau: '); Readln(st); Doi(st); Readln End. f. Xét tính tương tự giữa các bài toán: Hướng dẫn học sinh phát hiện ra các điểm giống nhau giữa các bài toán để áp dụng. Đầu tiên xét bài toán: “Viết CTC dạng hàm để tính n! = 1.2...n.” VAR N: INTEGER; Function GiaiThua(x:Word):longint; Var P:longint; i:Word; Begin If x=0 then P:=1 Else Begin P:=1; For i:=1 To x Do P:=P*i; End; GiaiThua:=P; End; BEGIN write('nhap n= '); readln(n); write(N,'! = ',giaithua(n)); readln END. Tiếp theo, giáo viên cho học sinh xét bài toán sau: “Viết chương trình tính giá trị xn ”. Lưu ý với học sinh công thức tính N giai thừa và tích của n lần giá trị x. Từ đó suy ra tính tương tự của bài toán thứ 2 với bài toán 1. Var x:byte; n:byte; Function XMU(x:byte;n:Byte):longint; Var i:Byte; S:longint; 18 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con Begin S:=1; For i:=1 To n Do S:=S*x; XMU:=S; End; Begin Write('Nhap x='); Readln(x); Write('Nhap n= '); Readln(n); Writeln('x mu n = ', XMU(x,n):2); Readln; End. g. Tổng quát bài toán: Từ bài toán tìm ƯCLN của 2 số nguyên A,B. Hướng dẫn học sinh thực hiện bài toán tìm ƯCLN của N số nguyên. Xuất phát từ bài toán: “Tìm ƯCLN của 2 số nguyên A,B”. Giáo viên hướng dẫn học sinh sử dụng thuật toán Ơclit để thuật toán được thực hiện nhanh hơn. Chương trình được thực hiện như sau: Var a, b, tg: Integer; Function UCLN(Var x, y: Integer): Integer; Var tg: Integer; Begin While y<>0 do Begin tg := x mod y; x := y; y := tg; End; UCLN := x; End; Begin Write('Nhap 2 so nguyen: '); Readln(a, b); Write('UCLN cua ',a,' va ',b,' la: ',UCLN(A,B)); Readln End. 19 Một số kinh nghiệm nâng cao hiệu quả dạy học chương trình con Với chương trình tìm ƯCLN của 2 số nguyên, chúng ta sẽ khái quát hóa bài toán sang tìm ƯCLN của N số nguyên. Nhằm giải quyết bài toán trên, chúng ta hướng dẫn học sinh áp dụng bài toán tìm ƯCLN của 2 số. Trong chương trình này sử dụng một biến trung gian để lưu các giá trị gọi là biến K, biến K có tác dụng lưu trữ giá trị đầu tiên của dãy số, sau đó qua vòng FOR-DO để xác định ƯCLN của K với các số tiếp theo. Cuối cùng ƯCLN chính là số K, vì sau mỗi lần gọi chương trình con thì số K đã thay đổi thành số ƯCLN của K với các số trong dãy. CONST Nmax = 200; Var A: Array[1..Nmax] Of Integer; k, i, n: Integer; Procedure UCLN(Var x, y: Integer); Var tg: Integer; Begin While y<>0 do Begin tg := x mod y; x := y; y := tg; End; End; Begin Write('Nhap so luong day so: '); Readln(n); For i := 1 to n do Begin Write('So thu ',i,': '); Readln(A[i]); End; Write('UCLN('); For i := 1 to n-1 do Write(A[i],','); Write(A[n],') = '); K := A[1]; For i:= 2 to n do UCLN(k, A[i]); Write(K); Readln End. h. Liên hệ và hướng tới cách giải quyết bài toán. 20
- Xem thêm -

Tài liệu liên quan

Tài liệu xem nhiều nhất