耿秋萍 江苏省江阴市山观高级中学
本节是教育科学出版社出版的普通高中教材信息技术必修1《数据与计算》的第四单元的开篇,内容意在让学生学会将解决问题的方法归结为一系列清晰、准确的步骤,并能分析和掌握算法的要素和特征,逐步建立编程解决问题的思维和方法。教材选用了“寻找‘开关对应关系’”的活动作为导入体验活动,让学生通过完善流程图的方式理解算法及其特征,而后通过“寻找‘被污染的药丸’”和“寻找‘误删的ID号’”两个活动,让学生能够全面系统地分析问题。通过对学情的分析,结合《孙子算经》中经典的案例,笔者将教材中的理论重点保留,将问题调整为“物不知数”“河妇荡杯”和“三女归家”,这三个案例有共性的思维破解点,均可利用枚举法破解,均可采用条件循环实现,但又有相异的发散点,可以引导学生更好地理解算法的定义及其意义,增强学习活动的参与度和体验感。原教材中的活动设计具有较好的信息意识和计算思维提升作用,因此基于本节课的框架设计,安排到学生课后的自主探究任务中。
本节课的核心学习目标是学生能够运用枚举法解决一类问题。在教学设计时可将教学目标的重点确定为“能够设计解决问题的算法并用恰当的方式描述,通过实践的反思去理解枚举法的含义及其用法”。而本节课的难点不仅仅是在解决问题过程中,对枚举法的理解和举一反三的提炼,还包括对《孙子算经》中案例的解读,这需要学生有较好的古文阅读和理解能力,所以在定位教学目标时,需要把提高学生的古文阅读能力也作为教学目标中的一部分。
笔者根据对本节课教材的解构与重新架设,以预设的教学目标为实践基准,将学习活动设为六个部分。具体的教学环节设计如下页图1所示。
图1 《算法及其特征》第1课时学习活动规划设计
教师用学生耳熟能详的“鸡兔同笼”问题引出它的出处,即《孙子算经》。《孙子算经》是中国古代重要的数学著作,卷上叙述算筹记数的纵横相间制度和筹算乘除法,卷中举例说明筹算分数算法和筹算开平方法。卷下第31题,可谓是后世“鸡兔同笼”题的始祖。南宋大数学家秦九韶则进一步开创了对一次同余式理论的研究工作,推广“物不知数”的问题……通过这样的介绍,让学生了解《孙子算经》的历史贡献和它的主要内容,让他们在现代化的学习环境中有意识、有兴趣、有方向地融合传统文化和科学知识,引起他们的好奇心,使其急切地想要一睹被欧洲人反复称道的“物不知数”。
首先让学生通过阅读和语言转换,了解“物不知数”原文的含义:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?要求学生静心阅读,尝试用白话文说出自己的理解,并选择不同的方式表达算法,可以是自然语言、流程图或者伪代码。之后展示《数书九章·大衍求一术》中的“术文”:“三三数之剩二,置一百四十;五五数之剩三,置六十三;七七数之剩二,置三十。并之,得二百三十三,以二百十减之,即得_____。”“答曰:二十三。”教师协助学生理解这段“术文”,并沿着传统思维回溯这种解题方法。学生在体验两种算法的内部逻辑与解题效率后,结合自身的能力与需求,作出选择。
教师接着引导学生梳理思路,用所学的数学知识写出近似图2的表达式,方便更清晰地理解题目,并引入枚举法,对比人脑与计算机的优缺点,介绍计算机的解题方式,把所有可能的答案一一列举,合适就保留,不合适就丢弃。最终在表达框架中增加如图3所示的表达式。
图2
图3
把每一句白话文转译成Python语句,运行相应程序,并查看结果。最终代码如图4所示。
图4
通过对“物不知数”的算法剖析和代码实现,要求学生回省自己对算法的理解:算法可能是一个计算公式,也可能是一种解决问题的策略或者方案。
依据学生对“物不知数”的算法体验过程,参考师生讨论得出的算法的定义和特征,继续探究《孙子算经》中以下两个有趣问题:
①河妇荡杯。今有妇人河上荡杯,津吏问曰:“杯何以多?”“家有客。”津吏问曰:“客几何?”妇人曰:“二人共饭,三人共羹,四人共肉,凡用杯六十五,不知客几何?”
②三女归家。今有三女,长女五日一归,中女四日一归,少女三日一归,问三女何日相会?
教师要求学生利用自己的思维方式,对这两个问题进行算法分析(数学建模),然后通过编程实现,并阅读、欣赏原文中的解题方法。学生的思维方式多样,最终形成的数学模型和代码列举如下。
①河妇荡杯。
方法一:利用代数法求解,设来了x位客人,根据题意:1/2x+1/3x+1/4x=65。
方法二:利用枚举法,不知道来了多少位客人,从1开始尝试,利用计数循环“for x in range(1,66):”,当某个数满足1/2x+1/3x+1/4x=65的情况时,这个数即为客人人数。
②三女归家。
三女若要相聚,则所经历的天数需达到一致,可以参考“物不知数”的解题思路,也可以另辟蹊径,此问题的本质是求3、4、5的最小公倍数。且所求最小公倍数的各因子确切可知,倘若需求任意三个数的最小公倍数,则如何?
要求学生根据“三女归家”的拓展提问,丰富《孙子算经》中的题目,由原文的固定条件改为不确定输入,引出如何选择最佳算法和Python实现,为下节课的内容埋下伏笔,让学生带着思考离开这一节课堂,带着思想走进下一节课堂。
话题一:《孙子算经》中的文化感召如何融入《算法及其应用》的教学目标
本节课依据目标规划,把基本教学活动设计为“介绍典籍,激发兴趣——数学建模‘物不知数’——剖析算法,转换代码——解决问题,拓展延伸”,让学生能够多层次多角度尝试将问题作简化迁移,并利用已有的Python基础,较好较快地写出代码,调试运行。
话题二:《孙子算经》中的“术”与“法”如何推动学习活动的融合创新
课堂开始就开门见山地介绍千年前的数学典籍《孙子算经》,让学生了解其历史地位,原文采用的“术”是秦九韶《数书九章》中求解一次同余式组的“大衍求一术”,此法复杂但快捷,普通人工的解法烦琐但思路简单,而编程能很好地中和两种方式的优点,利用枚举法快速地实现释疑。这种能够实现简单思维解决复杂问题的方式,必然会引起学生的兴趣,这时再呈现《孙子算法》中的三个经典案例,让学生一展身手。在他们兴致正浓且志得意满时,延伸问题,将简单的问题变成令人深思的问题,留下“如何求任意三整数的最小公倍数”类似问题,让学生带着疑惑离开课堂,但思想却能长久沉浸其中。
话题三:《孙子算经》中的经典案例如何成就学生建构知识体系的思维创新
根据课堂中学习活动的节奏,笔者尝试把诊断型评价逐渐渗入《孙子算经》的问题分析和解题实施环节,学生在评价中完善自我认知。在本节课之初,由于学生对传统文化与现代数学思维的结合尚需热身,课堂节奏慢而平和,在学生适应《孙子算法》的语言释义以及算法表述的方式之后,课堂节奏快且热切,学生的反应由最初的齐声迎合变为后来的追逐抢答,课堂的温度也随之产生由升温到保温到降温的变化,让学生体会到了在课堂中,入戏出戏时的不同情感状态。