梁见斌
摘 要:项目式学习和案例教学是高中信息技术常用教学方法,为提高教学效率,我们可以利用一些难度适中的案例,使其在不同的知识情境中重复出现,每次重点研究其中的一面,使学生在相同的知识载体中,体验不同的知识情境,掌握不同的知识技能,从而实现新旧知识的有机融合,建立健全的知识体系。
关键词:项目式学习;案例教学;高中信息技术
“一鱼多吃”是指使用不同的烹饪手法处理鱼的不同部位,给食客提供多种味觉享受,从而全面体验鱼肉的鲜美和烹饪文化的多样性。项目式学习和案例教学是高中信息技术常用教学方法,可是要寻找一个合适的案例并不容易,通常每个知识点都有自己对应的案例和应用情境,案例之间的关联度低,知识碎片化严重,不利于学生建立完整的知识结构。
我们可以找一些难度适中的案例,在不同的知识情境中重复使用,每次重点研究其中的一面,犹如“一鱼多吃”,使学生在相同的知识载体中,体验不同的知识情境,掌握不同的知识技能,从而实现新旧知识的有机融合,建立健全的知识体系。
“猜数字游戏”就是一个极佳的案例。
第一弹:游戏引入,激发兴趣
初次接触《高中信息技术》课程的学生对VB的感情是很复杂的,既有获取新知识的好奇和渴望,又对编程的复杂和深奥望而却步。对于教师来说,保护学生的求知欲望、消除学生的恐惧心理,成为开学第一课的重中之重。
引领学生入门的方法很多,游戏是其中较好的一种。我预先编写了一款简单的“猜数字游戏”,成功地调动了学生的积极性,他们兴致勃勃地玩了一局又一局,想要和计算机比个高下。
第二弹:趁热打铁,巩固新知
看学生玩游戏的兴致很高,我趁热打铁,适时地抛出了算法的概念,让他们去思考游戏背后的逻辑和程序运行的流程。
算法是程序的灵魂,描述算法的方式很多,自然语言和流程图是最常用的方式。我讓学生思考回顾“猜数字游戏”的过程,分别从“计算机出题人回答”和“人出题计算机回答”两个角度设计算法。
我先要求他们用自然语言描述算法,再使用流程图描述,通过比较,理解二者的优缺点。一开始学生毫无头绪,我就一步步引导,并把一些关键的框图画出来,让学生填写方框中的内容。通过教师的引导和同学之间的讨论,学生们最终顺利地画出了两个算法的流程图。
第三弹:反复训练,突出重点
学习了流程图,接下来学生需要面对的就是VB代码了。与规范直观的流程图比较起来,代码就显得抽象多了,很多学生都止步于此,无法进入下一步的学习。如何让抽象枯燥的代码变得生动有趣,是一个值得思考的问题。除了提供逻辑清晰、简明易懂的代码,问题本身的趣味性也很重要,此时“猜数字游戏”又是不二人选。
为了确保学生顺利地写出代码,我首先让学生回顾了游戏的过程和流程图的画法,然后引导学生将流程图转换成实际的VB代码。为节省学生的时间和突出重点,我提供了一个半成品程序,事先写好一些非关键语句,学生只需完成核心代码块即可。
此外,我对不同层次的学生也提出了不同要求。对于基础较差的学生,我模仿学考试题的形式,留下几处空缺,要求他们把缺失的代码填写完整。对于学习能力较强的学生,我鼓励他们不要拘泥于现成的代码结构,直接根据问题背景,独立完成程序功能,写出具有个人特色的代码。
Private Sub Command1_Click()
Randomize: ans = Int(Rnd * 100) + 1
List1.AddItem "计算机:" & "请输入一个1-100的整数"
List1.AddItem "人:" & g
Do While True
If g = ans Then
MsgBox "正确", 0, "提示": List1.AddItem "计算机:" & "正确"
Exit Do
ElseIf g > ans Then
MsgBox "太大了", 0, "提示": List1.AddItem "计算机:" & "太大了"
Else
MsgBox "太小了", 0, "提示": List1.AddItem "计算机:" & "太小了"
End If
List1.AddItem "人:" & g
Loop
End Sub
第四弹:温故知新,突破难点
对分查找算法是分治策略的一个典型应用,是高中技术选考的必考内容。由于对分查找算法应用范围广,出题形式多样,学生在考试过程中往往不能抓住关键,容易失分。题目是做不完的,但万变不离其宗,不管题目的类型和背景如何变化,对分查找算法的本质不变。
如何让学生抓住对分查找的本质,避免在茫茫题海中迷失方向,是广大教师需要思考的问题。我的答案是为学生提供一个典型案例,让学生熟练掌握典型案例的原理、特征和解题方法,以此为抓手,迁移到所有同类问题上。
我让学生再一次体验了“人出题计算机回答”游戏,找出计算机答题的策略,并为其设计算法。有了真切的游戏体验以后,学生很快理解了对分查找算法的基本原理。在学生动手编写代码之前,我又就如何设置变量的初值和循环条件进行了引导。在老师的指导下,学生通过小组讨论和上机实践,终于啃下了“对分查找”这块硬骨头,为今后的深化学习打下了坚实的基础。
Private Sub Command2_Click()
MsgBox "请在你的脑海里生成一个1-100的整数", 0, "提示"
List1.AddItem "请在你的脑海里生成一个1-100的整数"
i = 1: j = 100: g = (i + j) \ 2
List1.AddItem "计算机:" & g
Do While True
If rflag = 1 Then
List1.AddItem "人:" & "正确": Exit Do
ElseIf rflag = 2 Then
List1.AddItem "人:" & "太大了": j = g - 1
Else
List1.AddItem "人:" & "太小了": i = g + 1
End If
g = (i + j) \ 2
List1.AddItem "计算机:" & g
Loop
End Sub
反思与讨论:
笔者在VB新课教学、流程图、选择和循环结构、对分查找算法等不同教学内容中,多次使用“猜数字游戏”这一案例,使学生在相同的教学情境中掌握不同的知识。利用载体的单一性,降低学习成本,符合“最近发展区”原理,提高了教学效率。案例教学是一种生动有效的教学方法,但在平时的教学中,我们过于拘泥于书本,未能进一步挖掘生活中有趣又有料的精彩案例。此外,如何结合不同的知识点利用案例组织教学,也是教师需要思考的问题。
参考文献:
[1]中华人民共和国教育部.普通高中信息技术课程标准[M].北京:人民教育出版社,2018.
[2]王晓东.计算机算法设计与分析[M].北京:电子工业出版社,2012.