3.3.2编程解决问题
教学设计
1教学目标
1、知识与技能
①
知道基于程序设计的信息加工的一般步骤和方法:需求分析、算法设计、选择开发环境、编程实现。
②
知道利用计算机解决问题的步骤和基本思想方法——算法设计,从而了解计算机信息加工的内在机制。
③
了解并尝试编程加工的主要过程。
2学情分析
高中生思维活跃,求知欲旺盛,已经具有较强的概括能力,逻辑思维能力也日趋严密。我所教学生大部分来自农村,基础整体相对较差,据我所作的调查显示,学生基础参差不齐。按照“以强扶弱”的原则,开学不久就把他们分成了6个左右的小组,每组10人,并指定了各组组长,小组成员相对固定,学生已经有较好的小组合作基础和计算机操作基础。
通过本节内容操作和剖析已经编好的程序,引入课题更加自然,也能激发学生兴趣,消除他们对程序设计的“恐惧”心理,调动他们学习和探究的主动性、积极性,显得尤其重要。学生不可能用一节课的时间对编程掌握多少,但让他们在体验中理解编程加工的主要过程,了解其内在机制;并通过简单的改进实现小小的目标,有成功的体验和收获是完全能够达到的。
3重点难点
教学重点:
体验编程加工信息的主要过程
教学难点:
理解用算法描述实际问题,理解人的思维在计算机中发挥的作用,从而了解计算机信息加工的内在机制。
4教学活动
活动1【导入】编程解决问题
(一)创设情境、导入新课(4分钟)
教师执行一个画平抛运动图像的小程序,引出程序设计的基本流程。
通过解剖这段程序让学生了解计算机程序的工作过程
。
在学生练习中,将源程序给学生,让学生运行程序,在此基础上对源程序进行修改,而画出水匀速运动的图像。甚至做出自由落体运动的图像
活动2【讲授】(二)师生互动、学习新知(18分钟)
首先启发学生思考要做出这个平抛运动图像的程序,即编程解决问题需要经历哪些步骤呢?同时告诉学生,老师会根据整节课各个小组的综合表现,选出3个优胜组,利用课外时间给予他们一个小时的自由上网奖励。
需求分析:确定要解决的问题,即要计算机“做什么”。
说明:这一步学生很难回答出来,教师可以通过类比第2章进行信息获取时首先需要做“定位信息需求”来引导学生思考。
明确要解决的问题后,设问:“我们只要把问题原封不动地交给计算机,计算机就能自动得出结论吗?”从而引出结论:“计算机并不能代替人做所有的事情,它只能按照人们事先给定的步骤工作。因此,当我们明确要解决的问题后,先要一步一步设计好怎么做,也就是设计解决问题的算法,然后通过编写程序,将人们解决问题的过程用计算机语言表述为指令,从而赋予计算机解决问题的能力。”
设计意图:启发学生归纳并自然地引出后几个步骤,避免生硬的说教,使知识的讲解过渡自然、衔接紧密。
2.算法设计:对某一特定的问题设计的一组(有限个)求解步骤或方法。
教师讲解算法的概念,并强调:它不仅是指计算的方法,而且还包含从何处着手、解题步骤以及结果处理等全过程。再通过一个极为生活化的事例加以说明和诠释:邮寄一封信可分为写信、写信封、贴邮票、投信等步骤;每步分别通过什么样的方法实现。
然后启发学生思考绘制平抛运动图像的实现应该怎样设计算法?
设计意图:让学生理解怎样用算法描述实际问题、理解人的思维在计算机中发挥的作用,初步突破教学的难点。
3.选择开发环境:
教师通过类比“要表达某种意思,可以通过不同的语言来实现”,让学生明白:可以选用不同的编程语言(环境),来把人们设计的算法转换成计算机能够识别的代码;从而让学生理解计算机语言只是工具,算法才是程序设计的灵魂。由于VB操作简单、上手容易(考虑到学生第一次接触编程,不要提面向对象等专业性很强的特点,学生听了反而糊涂),所以我们选用VB来实现。避免学生建立“编程=VB”的片面观念。
4.编程实现:把人们设计的算法转换成计算机能够识别的代码,并调试实现。
(1)界面设计:界面是应用程序呈现给用户的外观,也是实现人机交互的接口。
(2)编写代码:把人们设计的算法转换成计算机能够识别的代码。
(3)调试运行:刚编写的程序不一定正确,必须在计算机上反复实际运行,排除程序中的错误,测试其是否能达到预期的效果。
首先让学生观察一下平抛运动图像的界面,再让学生思考:该界面需要设计哪些部分呢?
接着教师打开课前准备好的平抛运动图像的半成品,先简要介绍VB的工作界面,对VB独特之处进行有选择地说明:如界面设计窗口、代码窗口、运行,停止命令行,让学生能很快地进行操作。再演示制作平抛运动图像的“平抛运动”按钮;并添加对应的代码(直接复制准备好的代码);制作“平抛运动”按钮(不添加代码);调试运行,保存工程和窗体,生成exe文件,退出VB。
设计意图:教师操作演示,一为学生体验作示范;二为让学生明白计算机只是按程序所规定的内容和步骤来解决实际问题,本身并没有思维,计算机程序是一组操作指令或语句序列。——这其实就是编程加工信息的内在机制,学生理解了这点,再通过后面的亲身体验感悟,进一步加深理解,突破教学的难点。
学生体验:组装该按钮对应的代码,并调试运行整个游戏
教师演示:制作该按钮,并填写对应的代码
活动3【活动】三)亲身实践、体验成功(8分钟)
1.先要求学生访问教师机,把教师刚制作的半成品、完整的源代码和制作过程视频下载到自己的文件夹。
2.组装“水平匀速运动”按钮对应的代码,调试运行整个程序(可作修改),体会里面的算法策略,尝试借助于注释了解每段代码所完成的工作或含义。
3.保存工程和窗体,生成exe文件(要求以“小组编号+姓名”命名),然后提交exe文件到教师机FTP服务器上。
设计意图:通过让学生组装,体验编程加工的主要过程,突出重点;并加深对编程加工内在机制的理解。
必作的体验任务要求每人都提交一份作业,是为了防止个别学生滥竽充数。
活动4【练习】(四)拓展探究、提高创新(5分钟)
学生的层次不一,对于还未完成必作任务的学生,教师及小组给予指导帮助;对于学有余力的小组和学生,教师应创设挑战,并鼓励他们完成拓展任务。(对于选作了拓展任务的小组和学生,每题只要求一组一份提交到教师机上)
拓展任务1:能不能在现有的程序上做些修改,让你的小程序更完善、更有新意?比如在界面上添加一个“退出”按钮,在程序运行过程中,点击它就可以直接退出。(提示:退出的核心代码只有一条,即:end)
拓展任务2:如果在模拟平抛运动程序中添加“自由落体”按钮,并添加相应代码,使该程序具有模拟“自由落体”运动的功能。思考在现有程序的基础上应该做哪些修改?
活动5【测试】(五)交流评价、归纳总结(5分钟)
1.对于每个任务,分别鼓励1-2个完成较好的小组展示其作品,教师适时点评。
2.师生互动,回顾编程加工的主要过程,进一步明确本节课的重点;对学生的实践探究和小组合作做出整体点评;并结合教学目标和各班学生具体情况给出针对性建议。
评价标准:用五星的个数来量化评价。星数越多,期末总评时加分越多。
3.宣布3个优胜小组,给予课外上网奖励。
活动6【作业】教学反思
整堂课通过“情境导入 互动学习 实践体验
拓展提高 评价总结”五大步完成教学活动,预设与生成基本一致。学生参与的热情很高,师生间的互动愉快,课堂气氛活跃。绝大多数学生都能完成必作的体验任务,2/3左右的学生完成了全部或部分拓展任务,各个层次的学生都有所收获,较好地完成了教学任务、实现了教学目标。
1、我认为本节课最大的亮点在于在吃透课程标准、深入分析学情的基础上,大胆对教材进行建设,设计了符合学生认知水平和教学实际的教学案例。
2、对重难点的把握和细节处理到位。整个教学活动紧紧围绕教学的重点(编程解决问题的主要过程)而展开,并逐步突破教学难点;同时注重细节的处理,比如对算法的讲解和诠释、对编程环境的选择(编程≠VB)、对编程加工内在机制的分析等都进行了细致的斟酌。
3、评选优胜小组给予奖励、学习评价表等激励机制,极大地调动了学生参与的积极性。
另外,还有极个别同学未能按要求完成体验任务。对于这部分学生,应多给予正面的鼓励和指导,或者把完整的程序成品给他们,让他们体验即可。
附录:水平匀速运动按钮源程序:
Private
Sub
Command2_Click()
y
=
0
t
=
1
v
=
Val(Text1.Text)
Do
While
t
<=
100
x
=
v
t
Circle
(x,
y),
30
t
=
t
+
1
Loop
End
Sub
自由落体图像按钮源程序:
Private
Sub
Command3_Click()
g
=
9.8
x=0
t
=
1
Do
While
t
<=
100
y
=
g
t
t/2
Circle
(x,
y),
30
t
=
t
+
1
Loop
End
Sub