信息技术教学
*********************
28
中国信息技术教育
典型替换加密的一般方法,再迁移该方案探究包括汉字在内的一般信息的加密以及生活中不借助计算机的信息加密传递方法。
问题是促发思维的关键,对于如何有效创设针对计算思维培养
的问题,笔者也进行了探索和实践,主要包括在现实生活中创设问题、在游戏编程中创设问题、结合计算机科学的典型算法创设问题等。例如,对于“如何制作家庭用电的阶梯式计费程序?”这个问题,笔者将
复杂问题一层层传递转化为一个易解决的问题,再一层层归结到原问题解决的递归思想和方法迁移到其他问题的解决。
未来的世界必定是高度人工智能化的世界。人的计算思维的提
升,并不是让人像机器一样思考,而是让人更理解人工智能并与人工智能更好地相处和协作,达到人与机器互补的美好状态。在计算思维的培养过程中教师要鼓励学生对方案不断迭代优化,以更开阔的眼界
和高远的站位让设计臻于完美。
图2 基于问题解决的计算思维培养模式
Python编程作图物理仿真项目进阶设计
——从落体小球到漫天烟花
梁见斌  浙江省余姚市第二中学
为让学生通过仿真实践,体验使用计算机编程解决问题的全过程,掌握分支和循环等算法结构,熟练使用Python内置模块和自定义函数,理解模块化编程思想,笔者尝试使用海龟绘图模块编程来设计简单的物理仿真程序。从仿真自由落体运动、平抛运动和斜抛运动,到实现漫天烟花效果,项目难度不断进阶,最后鼓励学有余力的学生自主学习交互式操作和面向对象编程方法,获得更炫目的漫天烟花
视觉效果,逐步形成了从易到难的计算思维的培养。
● 项目一:绘制自由落体运动物体径迹图
仿真技术是利用计算机并通过建立模型进行科学实验的一门多学科综合性技术。人们对现实系统进行简化和模仿,建立相关模型,并对该模型进行试验,从中得到所需的信息,然后帮助人们更好地理解现实世界。
在物理课上,由于实验条件的
限制,没有暗室操作频闪照片的实验,只能简单介绍其工作原理,学生缺乏对频闪照片的感性认识,不能准确理解物理过程。教师可以根据自由落体运动规律,使用编程绘图动态模拟运动过程,并获得相应的仿真实验照片,帮助学生理解物理规律。
为了让学生体验使用计算机编程解决问题的全过程,教师可以将实际实验获得的频闪照片和仿真
实验绘制的粒子径迹图展示给学
信息技术教学*********************
生,先让学生分析如何抽象建模和设计算法,再编写代码和调试程序。因为本项目的重点是解析算法的应用,如果学生对绘图模块不是很熟悉,教师可以提供半成品参考代码,对绘图相关语句进行说明,学生只需填写计算坐标的核心代码。
绘制自由落体运动粒子径迹图的算法比较简单,只需设置好初始位置坐标,然后每隔一段时间获取t时刻物体的位置坐标,并在该位置绘制一个白小球即可。根据自由落体运动规律,小球的x坐标不变,t时间内下落高度为h=0.5*g*t*t。这是典型的解析算法,只要学生熟悉物理公式,就可以直接写出赋值语句。
因为海龟在屏幕中移动的距离是以像素为单位,所以我们需要为下落高度乘以一个放大倍数mu lt,以获得合适的距离;同时考虑海龟的运动方向与y轴正方向相反,故计算y坐标的解析式为y=-0.5*g*t*t*mult。
为了获得理想的仿真实验效果,还可以引导学生对程序进行多次调试,合理设置时间间隔、放大倍数和重力加速度等参数值。核心代码略。
●项目二:绘制平抛运动物体径迹图
在自由落体运动的基础上,可以让学生进一步研究平抛运动。平抛运动分解为水平方向的匀速直线运动和竖直方向的自由落体运动,教师可以引导学生先绘制两
个分运动的频闪照片,再处理合运
动,通过对比分析3个小球的频闪照
片,可以更好地理解物理模型。
有了模拟自由落体运动的程序,
模拟平抛运动的代码不难写出,只
需在原有代码的基础上增加一个表
示水平初速度的变量vx,并在循环
体中增加计算水平位移的赋值语句
x=vx*t*mult即可。核心代码略。
●项目三:绘制斜抛运动物
体径迹图
学生掌握仿真平抛运动的方
法后,可以进一步扩展到斜抛运
动,并使用这个例子来进行自定义
函数的教学。
一些教师在教授自定义函数
时,把重点放在了语法教学上,笔者
认为这是不妥当的。Python的自定
义函数语法相当复杂,其形式参数
就有必需参数、关键字参数、默认
参数、不定长参数等多种类型,更
别说各种实参的变异写法和复杂
的闭包语法了。这些复杂的语法不
是光靠死记硬背就能掌握的,需要
多次实践的积累才能逐步理解。题
目是做不完的,知识也教不完,“师
傅领进门,修行靠个人”,教师主要
起到引导学生入门和指明前进方向
的作用,具体的知识和技能还是要
靠学生自己去领悟和理解。
笔者认为,自定义函数的教学
重点应该是让学生理解模块化编
程的作用,初步掌握模块化编程的
方法,能够根据需要设计自定义函
数(包括明确函数功能、设置参数
和返回值、给出样例演示等)。其中,
设计自定义函数是重中之重,需要
反复练习和比较,力求达到意义明
确、格式规范、表述简明的目标。
模块化的目的是降低程序复
杂度,使程序设计、调试和维护等
操作简单化。利用函数,可以实现程
序的模块化,使得程序设计更加简
单和直观,从而提高程序的易读性和
可维护性。那么本案例需要把哪些功
能模块化?又如何设计函数呢?
分析斜抛运动粒子径迹图,发
现它是由一个个处在特定位置的白
小球排列而成,因此可以把绘制
一组白的斜抛运动粒子作为基
本功能模块。那么,要把斜抛运动
粒子径迹图绘制出来,需要明确它
的哪些属性呢?(其实这里已经暗
含面向对象的思想了,只不过时机
未到,暂时不点破)
教师可以引导学生从函数功
能、函数名、参数表和返回值的角
度逐个分析,最后整理出一份完整
的函数头说明文档。参考示例略。
●项目四:同时绘制多个粒
子(单个烟花)斜抛运动径迹图
自定义函数oblique_throw()
只能绘制单个粒子斜抛运动径迹
图,为了实现漫天烟花的效果,先要
学会同时绘制多个粒子斜抛运动
径迹图的方法。
在绘制单个粒子径迹图时,只
需使用一重循环,计算出粒子在各
时刻的位置坐标,并在该位置绘制
29
APR. 2021 NO.07
信息技术教学
*********************
30
中国信息技术教育
一个代表该粒子的圆点即可。为了同时绘制多个粒子的径迹图,需要使用二重循环,其中外层循环控制时间,内层循环依次绘制各个粒子。
为了对不同的粒子进行区分,需要设置3个列表v 、a、c分别表示各粒子的初速度、角度和颜信息,并通过使用随机数模块来为各个粒子设置不同的颜和初速度等属性。
为了实现烟花效果,需要设置合理的粒子数量、放大倍数和重力加速度值,并为每一朵烟花(粒子)设置一支画笔,刷新每一帧画面。在绘制完该粒子的所有图像后,还要清除画笔,让烟花消失,才能绘制另一朵烟花。
同样,教师可以引导学生分析函数功能、函数名、参数表和返回值,整理出函数头说明文档。参考示例略。
● 项目五:
交互式操作和面向对象(点放漫天烟花效果)编程方法
python编程:从入门到实践第二版自定义函fireworks()虽然通过同时绘制多个粒子斜抛运动径迹图的方法,实现了放烟花的动态效果,但是它每次只能绘制一朵烟花,而且颜不能动态变化,与实际的烟花效果还有一段距离。要想获得更绚丽的漫天烟花效果,需要使用面向对象的编程技术,构造一个烟花类,可以同时生成多个烟花实例,四处绽放,还可以采用交互方式,实现在鼠标点击处生成烟花的功能。
面向对象编程思想更符合人类的自然思维方式,学生理解起来比较自然,可以把源代码和相关资料提供给学生,鼓励学有余力的学生课后自学,通过调整参数、修改代码,实现更为炫目的烟花效果。
综合以上分析,上述项目从最简单的“绘制自由落体运动物体径迹图”开始,逐次增加难度,学生面对的每一次挑战都是建立在之前经验的基础上,并不显得突兀,遵循“最近发展区”教学规律。项目一和项目二,主要学习解析算法和使用绘图模块编写物理仿真程序的基本原理,相对简单,可以在一个课时里完成教学任务;项目三和项目四,主要学习自定义函数的构造和使用方法,其中项目四还运用了列表和二重循环等难度较大的知识点,综合度较高,预计需要两个课时;项目五需要用到交互式操作和面向对象编程方法,已经超出了高中信息技术必修课的教学要求,但是趣味性比较高,而且难度也不大,可以引导学有余力的学生通过自学实现相关功能。

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