编制计算机程序解决问题

2018-08-23 02:07刘志韩
中国信息技术教育 2018年13期
关键词:代码绘制编程

刘志韩

本节课是必修课程内容,主要让学生了解VB的编程运行环境,初步认识程序的作用;体验完整的编程过程,感受计算机解决问题的基本过程。通过实践探究,初步培育学生的计算思维。本节课的学习任务设计具有层次递进特点。

● 课前准备:有效组织才能提高效率

教师将学生分为4个小组,每个小组选一个小组长。课前,教师向小组长交代好本节课需要做的工作、小组成员之间任务分工、小组成员合作及小组长总结发言等事宜。教师要以小组作为评价单位进行评价。

● 情境引入:用代码与效果共同演绎程序的功能

教师通过屏幕运行程序让学生回答是哪种函数图像。然后,教师出示抛物线、双抛物线及多个函数的图像程序代码,指向函数表达式,让学生进行观察。本环节直观地呈现出程序解决问题的优越性,从感官上消除了利用编程绘制函数图像的神秘感,感受到程序的强大功能,激发了学生的学习兴趣。

● 问题分析:问题解决是算法设计的根本出发点之一

教师引领学生回顾数学方法,如抛物线图像取值描点绘制图像的过程。作为程序设计的灵魂,算法本身是一个非常抽象的概念。学生由已有的数学知识描点法绘函数图像切入,容易理解计算机编程解决问题的算法思想,为接下来的流程图分析做准备,引出了算法概念。通过课堂效果反馈来看,这一环节的设计是非常有必要的。

● 算法设计:在画流程图中让算法与思维紧密结合

教师在学生体验了取值描点绘函数图像的基础上,分析并完成流程图的制作。通过流程图,学生能深入理解算法就是解决问题详细的方法和步骤这一概念。算法是程序设计的灵魂,接下来的程序编制也是以算法为依据。可见,学生在零基础的情况下通过具体的分析问题的过程,更容易接受算法的概念。

● 编制程序:动手实现是计算思维的形成过程

教师与学生一起再观察和分析最初演示的函数图像程序,可在运行程序后分析界面组成的两个控件分别有什么样的功能,然后体验控件的创建。

1.理解程序的界面设计是做出程序控制的外壳

由于学生是第一次接受VB语言,所以采用最直接的模仿练习操作的方式。教师演示在窗体中添加按钮控件和图片控件:以按钮控件作为触发对象,用图形控件显示图像的区域。教师演示完操作,学生在模仿的基础上完成相应的练习。

2.编写程序代码是进行程序设计的核心部分

为了深层次地体验利用编程绘制函数图像的过程,教师可以让学生初次体验编辑代码,不要求学生输入某段代码,而以从整体上理解代码含义为主。这样为接下来的任务做准备,在此基础上完成一个完整的小程序,可降低和分解任务的难度。

首先,教师可以提出设问:仅仅完成界面的设计,程序能够为我们工作吗?当然不能,它仅仅是程序的外壳,我们还没有赋予它灵魂。然后,教师将事先准备好的代码复制粘贴到VB程序中来,每粘贴一行解释一行代码在程序中的作用。教师向学生讲解:双击“绘制”按钮,添加代码,以二次函数y=x2为例,进行程序代码的复制。接下来,学生参照教师的讲解完成任务。

任务一:复制代码,快速体验编程。

本任务要求学生创建程序界面,复制“学生代码”,然后修改代码完成函数y=2x2+3x+4曲线的绘制,并运行程序观看效果。任务提示:①只修改函数表达式,其他代码不变;②函数表达式输入:乘号*的输入,平方^的输入。任务一要求每一名学生都要完成,最快完成任务的两名学生可以为小组加分。在学生任务完成过程中提示表达式中乘号和平方符号的输入这个易错点。

任务二:修改代码,深入探究编程核心。

在任务一的基础上,通过多次修改函数y=ax2+bx+c的参数a、b、c(小组长分工,组员分别修改a、b、c的数值),绘制并观察不同的多条曲线,小组讨论汇总后总结曲线的变化规律。教师引导学生先回到上课最开始看的图像,思考如何绘制多条函数曲线。有些精美的图案是多条曲线组成的,而且数学上通过图像的对比更容易理解函数的意义。再回到代码上,教师分段分析代码的作用并提问:绘制多条函数曲线是如何做到的呢?在分析完代码作用之后,教师可以让学生回答问题。任务提示:将画线的部分复制粘贴后再次修改函数表达式。

任务三:自由创作,形成对编程的成就感。

这是一个拓展任务,以小组为单位自选函数表达式绘制图像进行自由设计,讨论思考所选图像是如何制作的。函数知识补充:y=a*sin(b*x+c)+d,y=a*cos(b*x+c)+d。

提供给学生的参考:完成函数y=20*sin(2*x)图像绘制,观察图1中图像变化,思考原因并完成相似图像的制作,如y=30*sin(2*x)。

提供給学生的参考:观察图2中图像变化,思考原因,完成函数图像的绘制。

苍山点题

同课异构,是我最近五年一直在坚持做的课堂教学促进活动,不仅在我们学科,而且在其他学科也组织教师进行同课异构,在此过程中我们发现,同课异构对教师的课堂创新能力、教学驾驭能力的促进是非常大的。本次提供的两节课,也分别在市、县级公开课中进行了展示,提供给大家来讨论。

第一篇文章,在整个教学过程中,用“游戏”程序的设计作为第一节课的教学内容,既简单又能总体感知程序设计的一般过程。分别利用单击、鼠标移动事件,让学生更充分理解事件响应的工作机制,初步体会计算思维。课中和课后充分发挥小组合作,加强了学生的合作能力和团队意识,也增加了任务完成的效率,让学生体会合作的重要性。当然,单凭这节课很难使学生完全理解事件响应的工作机制,对计算机程序设计的本质和计算思维的理解就更难了,还需要长期的学习过程。怎样潜移默化、循序渐进地培养学生的计算思维,利用计算机编程来解决问题,还需要深入探索。

第二篇文章,利用计算机解决问题时,在算法概念的引入上采用了数学知识作为牵引,采用了任务驱动教学,从基础任务一到拓展任务三,层层递进。基础任务一要求所有的学生都要求完成,任务二小组成员协作完成,拓展任务三每个小组合作完成一个即可,这样既完成了本节课的教学任务又实现了分层次教学;拓展任务发挥学生的想象力自由创作,学生分工合作,最后呈现的作品效果很好。但是,学生后续任务安排得紧凑,仅用一节课完成教学任务,留给学生思考的时间较少,值得改进。

这两节课,已经脱离单纯的程序代码任务教学而向计算思维的方向迈进,虽然问题还较多,好在我们已经启程,未来天地广阔。也非常期待您将更多编程教育的案例分享给大家。

猜你喜欢
代码绘制编程
Painting ski maps 绘制滑雪地图
绘制童话
玩游戏学编程,Blockly Games上手玩
纺织机上诞生的编程
绘制世界地图
编程屋完成数百元万天使轮融资
学编程,先画画
神秘的代码
一周机构净增(减)仓股前20名
重要股东二级市场增、减持明细