信息技术教学*********************
随着新课标《普通高中信息技术课程标准(2017年版)》的实施,Python编程已成为高中信息技术课的重要内容。虽然编程学习过程中需要掌握一定的基础知识,但不应该只关注编程知识的记忆,而应该注重培养学生用编程来解决问题的能力。因此,围绕问题解决开展编程教学,既可让学生实践其编程技能,又可发挥学生在学习中的主体性,发展其高阶思维能力。所以,以Python编程为工具,设计问题驱动的教学具有较强的实用性和可行性。本文将以“帕斯卡概率游戏”为例,介绍此种教学的主要活动和流程。
● 抛出问题,创设情境
问题驱动的教学离不开一个好的探究问题,探究问题应当具备真实性、复杂性、趣味性等特点。真实性是指探究问题应该源于真实的生活实践,而不是胡编乱造,脱离实际。复杂性是指探究问题的答案不能是一目了然的,而是需要一定的探索和分析,最好是人工解决起来较为困难的类型。趣味性是指探究问题不能过于抽象化和学术化,要能够让学生有探究的兴趣。
本文所选的“帕斯卡概率游
戏”源于法国科学家、数学家帕斯
卡与数学家费马之间的故事。故事
发生在17世纪,在一位热衷于赌博
的朋友影响下,帕斯卡和费马开始
研究掷骰子的游戏。他们通过邮件
讨论相关问题,并因此诞生了理论
概率论。在教学中,笔者选取了其中
一个游戏,让学生进行探究。游戏
规则为:连续掷一个骰子4次,如果
有1次出现6点,那么帕斯卡赢;如果
没有出现6点,那么帕斯卡输。这里
生发的探究问题是:如果玩这个游
戏N次,最后谁胜率更高?这是一
个源于真实情境的问题,而玩N次
游戏很难人工完成,答案也并非一
目了然。最重要的是,该问题本质上
与数学的概率论相关,但是以游戏
的形式呈现,能够激发学生探究的
兴趣。
● 分析问题,引出编程
“帕斯卡概率游戏”虽然规则
简单,但是理解其所隐含的概率问
题并不简单。在教学实践中,笔者购
买了骰子,让学生两两一组玩这个
游戏,并提供数据记录表让学生记
录游戏结果。因为时间有限,只让
学生玩20次游戏,并报告帕斯卡和
费马的胜率。在汇报游戏结果的同
时,每个小组需要对探究问题(N次
游戏后谁胜率更高)给出自己的结
论,并做出猜想或者解释。让学生
动手实践掷骰子游戏的过程,是为
了让其能更加真实地感知问题情
境,并在不断掷骰子的过程中熟悉
游戏规则,为后面分析与解决问题
奠定基础。通过这一环节,学生还
会对探究问题形成一个初步的解
释,这个解释并不是教师的灌输,而
是他们自主探究得出的。
在学生充分理解问题之后,教
师需要从程序设计的角度带领学
生进一步分析问题,首先,对探究
问题进行抽象和分解,形成可编程
的子问题。在本例中,对N次游戏进
行模拟是解决问题的关键。当N很
小时,可以通过真实的游戏实现,
但其结果很难接近真实的概率;当
N很大时(如100万),其结果会接近
理论概率,而计算机模拟正适合这
一情境。在这个环节,探究问题可
以分解为三个子问题:①如何用代
码模拟掷骰子过程?②如何模拟一
问题驱动的Python编程教学
——以“帕斯卡概率游戏”为例
韦胜洪  江苏省天一中学
51
APR. 2021 NO.07
信息技术教学*********************
52
random python
中国信息技术教育
个回合的游戏(掷骰子4次)并判定胜负?③如何模拟N回合的游戏并呈现游戏结果?其次,让学生分析和讨论程序代码的核心模块,也就是对程序代码进行规划。本例中,学生需要用Python编程语言来进行这一“翻译”过程。例如,第一个子问题可以使用Python随机函数包(random)实现。第二、第三个子
问题需要使用循环语句、判断语句等基本语句实现。此时学生不需要完成代码的所有细节,而是要对程序有一个完整的规划。
● 解决问题,测试代码
在学生完成了初步的代码规划之后,编程环节可以正式实施。课堂组织形式仍然可以是两人一组,共同完成代码编写任务,该模式可以减少编程过程中的错误,提升编程效率。设计这一环节时,教师需要回答一个核心问题:是否给学生提供程序模板?如果学生的编程能力较好,可以让学生自己完成完整的程序,教师只提供适当的帮助。如果学生的编程能力较弱,教师可以根据学生的具体情况提供相应的“半成品”模板程序,为学生提供学习支架。上图为“帕斯卡概率游戏”的参考代码。其中7~11行代码是模拟一次游戏过程的函数,是整个程序的难点。教师可以在此增加注释、描述等文字,然后删除其中某一行,让学生填写缺少的代码。
在程序完成之后,需要让学生对代码进行测试,并根据结果来回答探究问题。在本例中,运行程序
之后学生会发现:①随着游戏次数
增加,帕斯卡的胜率越来越稳定;
②当进行100万次后,帕斯卡的胜率
大约为51.8%。这也就到了探究
问题的答案:如果玩这个游戏N次,
最后帕斯卡的胜率更高。然而,这
只是用实验模拟的方法解决了问
题,并没有从数学概率的理论角度
阐释原因。此时,教师可以结合中
学数学的概率知识,从理论上来
解释程序结果。但这似乎超出了
信息技术教师的能力范围。因此,
在进行问题驱动的编程教学设计
时,信息技术教师可以和学科教
师组成备课团队,结合学科知识
和编程内容,共同完成教学设计。
这样,教学设计既能在信息技术课
中实施,也可以在学科教学中应用,
一举多得。
● 拓展问题,迁移学习
与传统的讲授式教学相比,问
题驱动的教学能够实现有意义的
学习,有利于学习的迁移。在学生
利用编程解决探究问题之后,教师
应该进一步抛出拓展性问题,让学
生进行自主探究。这一环节一方面
可以检验教学的效果,另一方面可
以促使学生迁移应用已掌握的知
识和技能。以“帕斯卡概率游戏”为
例,探究问题为:如果玩这个游戏N
次,最后谁胜率更高?这个探究问
题虽然比先前的问题复杂度有所
提升,但是有了先前的经验,学生能
够自主探究完成。
在选择拓展问题时,其跨度和
难度变化不能过大。首先,拓展问
题应当与先前的探究问题是同一
类型的问题。本例中,笔者采用的都
是基于“帕斯卡概率游戏”的概率
问题,而如果拓展问题变为“草原
生态平衡”模拟问题,跨度则过大,
不利于学习的迁移。其次,拓展问
题的难度应该略高于原先的探究
问题。如果问题难度提升过高,学
生可能没有足够的能力去完成自主
探究。良好的拓展问题设计应该符
合学生的最近发展区,也就是学生
“跳一跳能够到”的范围。
● 小结
Python语言的易用性使其非
常适合编程教学,而其强大的可扩
展性又非常适合问题解决的教学
情境。希望未来有更多教师尝试问
题驱动的教学方法,并分享更精彩
的案例。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。