第一篇:浙教版高一《算法与程序设计》第二章解析算法的教学案例
浙教版高一《算法与程序设计》第二章解析算法的教学案例
浙江象山中学 黄琴
一、设计思想
本课设计打破教材编写顺序,将本教材中的第二章的算法与第五章的程序实现结合起来组织教学,通过理论结合实践,让学生更容易理解各种算法的基本设计思想,体验编写程序的成功感受,同时又能掌握解析思想。“解析算法”思想是:找出问题前提条件与结果之间正确得数学表达式。那么如何把解析思想体现在算法中,用程序语言实现呢?。我在教学过程中对整堂课的设计上的思路是:通过具体情境认知主题——体验主题——实现主题——拓展主题——这几个阶段层层深入的递进式方法使学生充分掌握解析算法。
算法课一般与枯燥,晦涩,难懂,逻辑等字眼联系在一起,往往难以激发学生兴趣。如何打破这种局面?如何激发学生兴趣,使学生情不自禁的,自主的去学习算法呢?
新课程倡导“人文与生活”,在了解学生的身心发展特点前提下,尊重学生的学习、生活、兴趣,真正以学生为主体,有创造性地设计信息技术教学环节。本课作的设计除了遵循算法自顶而下,逐步求精的思想之外,新意之处在于根据电影情节别出心裁创设了一个情境,由计算男女主角相遇时间导入,在故事中不留痕迹地渗透了教学内容,完成由简单到复杂的教学任务。
二、教材分析
本节课是《算法与程序设计》第二章《算法实例》第二节的内容,主要任务是学会使用解析算法设计简单算法流程图,并掌握用程序设计语言VB来实现有关解析算法的实例。解析算法来源于生活,生活中的很多问题都是用解析算法解决的。解析算法注重学生逻辑思维能力的训练,同时它也充分体现了用计算机解决实际问题的思想,是设计算法的一种重要方法。教材中引用了“计算n个电阻并列后的总电阻值”和“储蓄顾问”两个例子让学生体验解析算法思想及其储蓄实现,我觉得可能对学生的兴趣的激发可能不够,所以试想能否沿用上节课的情境,让学生维趣。
三、学情分析
1、在前面的教学中,学生已经理解了算法的特点,学习了算法的三种表示方式,理解了顺序、选择、循环三种基本结构,并通过参与活动手册中的实践,对程序有了初步的认识。
2、通过枚举算法两课时的学习,重点深化了流程图,基本上会设计流程图,并根据流程图写出相应的代码并通过自己编制程序上机实践来体验。那么在课堂分析过程中,学生将从听课——理解——体验——探究这些过程中全面掌握解析算法的设计思想,并能用此算法来解决日常生活问题及与其他学科有所关联的一些简单问题。
3、这节课授课的对象是象山滨海中学(三级中学)高一普通班级,所以在任务设计时适当地化简了,考虑了学生的整体水平。
四、教学目标
1、知识目标:通过具体实例的求解,让学生了解什么是解析算法;
让学生亲身体验并理解解析算法解决问题的基本思想; 用流程图形式来表示解析算法解决问题的思路;
2、能力目标:通过具体例子分析,让学生理解如何用三步法来解决实际问题;
学会使用解析算法解决简单问题;
3、情感目标:通过情景创设,激发学生学习兴趣;
通过小组合作增进学生间的学习交流,培养合作能力,激发学习能动性;
五、重点与难点
教学重点:通过对“相遇时间”的计算,让学生理解解析算法的思想,进一步培养学生运用三步法来解决实际问题; 教学难点:解析算法思想的理解与实现(流程图转化为代码并上机实践)
六、教学策略与手段
1、教师教法:情景创设法、演示法、讨论法
2、学生学法:自主学习、合作探究学习
七、课前准备
1、教师的教学准备:
准备“向左走 向右走”电影片段 准备解析算法的Visual Basic演示程序
2、教学环境 多媒体机房
八、教学过程
第一步 创设情境,认知主题
【教师】:课前播放电影片段《向左走 向右走》。
提问:刚才看的是那部电影中的画面?
【学生】:《向左走 向右走》并且简述电影的主要情节。
【教师】:电影“向左走 向右走”中,讲述了金城武饰演的一位小提琴家和梁咏琪饰演的一位翻译家之间唯美爱情故事。两人居住在同一幢公寓,中间只隔了一堵墙,却因为两人彼此习惯不同,一个习惯向左走,一个习惯向右走,总是不断擦身而过未曾相遇。电梯一上一下、在月台上分站两旁„„
画面停留在男女主角各自向左走向右走的画面,如图。
教师:导演编排得也太整人了,今天老师来当一回编剧,让他们两个有缘人能相遇。
相遇问题:今天,金城武和粱永琪各自以自己的速度围着游乐公园(矩形,公园周长为25km)一个向左走,一个向右走,经过多少时间,可以相遇呢? 【学生】:思考 【教师】:激励,两条平行线,也会有交汇的时候,什么时候能相遇呢? 【教师】:如果相遇,有一个条件?
【学生】:走过的路程和是整个公园的长度,S1+S2=S 【教师】:S1?S2? 【学生】:S1=V1*t,S2=V2*t 【教师】:金城武在t时间内走过的路程为:S1=V1*t
梁咏琪在t时间内走过的路程为:S2=V2*t 【学生】:一步步分析得出:
【教师】:刚才我们一步步分析问题的条件与结果之间的关系的这个过程就是解析算法的过程。
解析算法基本思想:用解析的方法找出表示问题的前提条件与所求结果之间关系的数学表达式,并通过表达式的计算来实现问题求解。【学生】:理解解析算法思想 【教师】:解析算法的关键是什么呢? 【学生】:找出数学表达式 【教师】:算法关键:找出的正确的数学表达式。【设计意图】:引导学生都进入了电影情景中,融入情节,使每个学生似乎都有了情感目标要,要让对方相遇,所以听得特别认真,这时水到渠成地提出解析算法的基础知识,学生不知不觉就学习着解析算法的相关知识。接下去深入学习解析算法的实现过程。这个导入显得贴切,稳妥。
第二步 学习新课 体验主题
1、自然语言转化成流程图 【教师】:我们将刚才分析的结果转化成流程图。
根据学生的分析,一步步展示流程图
教师与学生一起分析程序实现所需的变量: v1、v2的单位(千米每小时,km/h),千米每小时是常用单位,一般不用米每秒。所以时间t的单位小时,h)【教师】:如果t=1.002(小时)情况怎么办? 【学生】:截掉小数位,【教师】:t=0.75(小时)情况怎么办? 【学生】:将单位化成分或者秒,然后再截掉小数位。【教师】:一般情况下用分,相遇的时间用秒作单位过于精确了。【学生】:t=fix(t*60)【教师】:分析得出变化后的流程图:
变量分析:
v1、v2:分别存储两人行走速度(单位:千米每小时,km/h)t:存储所用时间(单位:小时,h)m:存储所用时间(单位:分钟,m)
【设计意图】分析时层层深入,将问题一个个迎刃而解,并且让学生重新理一遍变量,为程序实现作铺垫。
2、流程图转化成代码
学生根据流程图,转化成代码,教师适当提示:
Private Sub Command1_Click()Dim v1, v2, t As Double Dim m As Integer V1=val(text1.text)V2=val(text2.text)t=25/(v1+v2)m=Fix(t*60)text3.text = Str(m)End Sub 第三步 学以致用 实现主题 【教师】:下面我们就付诸实施,利用计算机帮助我们计算相遇时间。
实践活动一:相遇时间,后附。展示完成后的程序效果,如图。
展示程序设计的界面,让学生先完成基本的程序界面,再编写代码(通过提供不完整代码,有针对性的给予提示),调试成功后,可再对程序界面进行美化,这样可以使学生在完成教学任务的同时拓展知识。教师先调试一遍,注意输入的速度,提示学生一般人的行走速度在10km/h左右。【学生】:操作实践。【教师】:教师巡视,给予个别指导。【设计意图】:刚才分析相遇时间,是老师学生一起实现的,通过这个过程学生已经基本上掌握了解析算法。这里给学生自己实践机会,对解析算法进行独立应用,巩固相关知识。
第四步 逐步深入 拓展主题
【教师】:两个人相遇之后,在一起,开始为以后的生活作打算,梁咏琪开始琢磨起储蓄计划,准备去银行存钱但是她算术不够好,总是要问正在创作小提琴曲谱的金城武。下面是梁咏琪和金城武之间的几次对话: 粱:如果我存1000元,想得到本息额1100元,应该要存多少年? 为简单起见,假定银行公布的储蓄规则为:(PPT展示)
1、存期以年为单位,存款以元为单位;
2、不论存期的长短,年利率均为4.5%;
3、不计复利。【学生】:3年
【教师】粱:如果我存5000元,想得到本息额6000元,应该要存多少年啊? 【学生】:5年
【教师】粱:如果我存20000元,想得到本息额24000元,应该要存多少年啊? 学生思考有点慢了。
【教师】:梁咏琪还要无休止地问下去,金城武能不能安心创作? 【学生】:不能。
【教师】:有没有什么办法呢?如果大家帮金城武设计了一个能完成刚才问题的程序,问题是不是就可以解决了。
1、提出问题:请你帮金城武设计一个计算机程序,帮梁咏琪解答疑问,使金城武可以专心创作。
2、分析问题
提炼问题:M元钱需要存多少年,可以得到K元本息? 按照银行的储蓄规则,一笔数量为M元的存款: 【教师】:1年后到期的本息为? 【学生】:M+M*0.045 【教师】:2年后到期的本息为? 【学生】:M+M*0.045+ M*0.045 【教师】:3年后到期的本息为?
【学生】:M+M*0.045+ M*0.045 + M*0.045 【教师】Y年后到期的本息为? 【学生】:M+Y*(M*0.045)【教师】:一笔M元 M+Y*(M*0.045)= K
Y=(K-M)/(0.045*M)
钱的存款,需要存Y年,才能得到至少K元本息:
【教师】:如果Y年是小数? 【学生】:Y=Fix(Y)+1
3、自然语言转换成流程图
4、流程图转化成程序代码 Private Sub Command1_Click()Dim M, K, Y As Double M=Val(Text1.Text)K=Val(Text2.Text)Y=(K?)/(0.045 * m)
If y > Fix(y)Then y =?+ 1
Text3.Text = “存款应为:” + Str(y)+ “年” End Sub
Private Sub Text1_Click()
Text1.Text = “": Text2.Text = ”“: Text3.Text = ”" End Sub 拓展:改进应用程序“梁咏琪的储蓄顾问”
问题1:如果K 《算法与程序设计》教学中实施研究性学习探步 作者:赵濮民 摘要:研究性学习是教育科研领域中一个崭新的课题。信息技术教学作为以培养创新精神、研究能力和实践能力为目标取向的必修课程,它强调让学生通过研究性学习,提出问题,收集材料,对研究性课题进行探索、分析、研究,最后基于问题解决模式,在实践操作中培养学生科学的态度和价值观以及创新精神、创新思维、创造能力,并学会解决生活中与信息技术学习有关的实际问题。职业学校的学生,不仅应具有独立接受知识的能力,更应具有独立探索知识的能力,由“研究性学习”补充原有的“接受式学习”,使学习方式更趋完善,只有当这两种学习方式结合起来,优势互补,才能使基础教育适应时代对人才培养的要求。 关键词:程序设计;研究性学习;求真;求全;求变;求新;优势互补 《算法与程序设计》是职业学校信息技术教学中的一个重点,也是难点。传统的程序设计教学以老师讲授型为主,由于算法与程序设计的内容逻辑性强,普遍认为在程序设计教学中难以实施研究性学习。 研究性学习是以“培养学生具有永不满足、追求卓越的态度,培养学生发现问题、提出问题、从而解决问题的能力”为基本目标,以学生从学习中获得作品设计与制作方法的困惑为方向,以在提出问题和解决问题的全过程中学习到算法与程序设计为学习方法的课程。经过反复研究,我们认为研究性学习可以应用于程序设计教学中。实施研究性学习的关键是要确定一个目标,要鼓励学生主动地发现问题,并且通过探究或实践活动去试图解决问题。在课题研究的过程中采用分组交流讨论、查阅资料、协作探究、归纳总结等方式,一步步引领学生深刻掌握算法与程序设计的精髓。 一、通过研究性学习,重构算法知识体系,要求真 研究性学习是学生在老师的指导下,结合真实生活,选定主题,然后搜集相关材料,对材料进行归纳、加工处理、分析、总结,得到相应结论的学习活动。在《算法与程序设计》教学中,根据教学内容,经过反复研究,确定了研究主题《搜索算法的应用研究》和《动态规划算法的解题应用研究》,并根据学生的自愿报名成立了两个研究小组。然后各小组根据自己研究的算法,重新整理相应的知识,对知识进行认知、归纳、总结。如《搜索算法的应用研究》小组,对搜索算法从以下几方面进行整理: 1、搜索算法的算法思想、分类; 2、深度优先搜索的算法思想与算法结构; 3、广度优先搜索的算法思想与算法结构; 4、深度优先搜索的优先策略; 5、广度优先搜索的优化策略; 6、深度优先搜索与广度优先搜索的异同。学生通过对搜索算法知识进行整理、分类、小结,加深了对搜索算法的理性理解与感性认知。 二、通过研究性学习,同学之间取长补短,要求全 每个学生都有所长,也有所短,研究性学习一个重要的特点就是:分工合作,共同讨论,共同提高,使参与的学生全面发展。我们的“搜索算法的应用研究”小组共有五个成员,根椐学生的特点、特长,对他们进行分工,每位学生研究上述其中一个问题,然后整个小组一起讨论,每位学生介绍自己的研究情况、研究成果,然后其他同学进行补充,发表自己的见解,这样每个同学都使自己的研究内容得到补充,同时也学习到了其他同学研究方面的知识,可以取长补短,共同提高,得到全面发展。 三、通过研究性学习,总结算法的应用规律,要求变 研究性学习的目的,是要求学生搜集与主题有关的资料,归纳整理相关资料,根据相关材料和知识,对主题进行研究,提出自己的观点或结论。我们在程序设计教学中进行算法专题研究也是这样,除要求学生归纳、整理专题算法知识外,还要总结出算法的应用规律、应用算法解题的步骤和算法的框架,能根据实际情况,随机应变。如在“动态规划的应用研究”中,学生总结出:动规划是解符合“无后效性原则”的最优问题的一种算法思想;用动态规划解题的一般步骤是:(1)判断题目是否为求最优问题,是否符合“无后效性原则”;(2)确定如果划分阶段;(3)确定每个阶段有几种状态;(4)找出状态转移方程和边界条件;(5)用算法语言实现算法过程。又如在“搜索算法的应用研究”中,研究小组的同学总结出:(1)广度优先搜索算法通常应用于解最少步数问题,而深度优先搜索算法则通常用来解所有路径问题;(2)深度优先搜索和广度优先搜索都是搜索算法,前者时间复杂度较大,而后者则占用的内存较大;(3)深度优先搜索在实现时用递归或用堆栈来实现,而广度优先搜索是用队列来实现,实现两种算法所用的数据结构不同;(4)深度优先搜索和广度优先搜索都是搜索算法,但两者的算法结构有较大的不同。学生通过自己对算法应用规律的总结,对算法的应用得到升华,进一步提高算法的应用能力和程序设计能力。 四、通过研究性学习,提高分析、归纳和综合能力,要求新 对算法的专题研究,不仅要对算法理论进行总结,算法应用的研究也是很重要的一方面,通过算法的解题应用,既提高了学生分析问题的能力,也加深了学生对算法的理解,提高了学生的算法应用能力,进而得到对学生创新能力的培养。另外,我们在算法研究过程中,要求学生透切理解算法内容,用算法语言准确描述算法,通过这种途径,进一步加深学生对算法的理解,同时也提高了学生的算法表达能力和归纳、总结的能力。 通过对算法进行专题研究,可以进一步加深学生对算法知识的理解,也可以提高学生的算法应用能力和程序设计能力。实践告诉我们:在整个研究过程中要注意以下几个问题: 1、课题不宜太大。研究课题的确定是研究性学习实施过程中重要的一环,课题选择恰当与否,直接关系到整个课题研究的成败。在程序设计教学中进行研究性学习活动,选题要遵循下面的原则:(1)课题的范围不宜太大;(2)有一定的应用价值;(3)结合学生的实际。一个好的开始是成功的一半,在研究性学习活动中也是如此。 2、要理论研究与算法应用相结合。对算法的专题研究,算法应用是重点。在算法知识归纳总结的基础上,重点应研究算法应用的一般规律、算法结构、应用算法解题的一般步骤等。不应该只是对算法理论的空洞论述,否则效果不好、意义也不大。 3、充分发挥教师的引导作用、学生的主体作用。在算法研究活动中,应充分发挥教师的引导和指导作用,既不能放任自由,也不能包办代替,要充分发挥学生的主体作用。当学生遇到问题和困难时,老师应当引导和启发学生,让学生去探索和研究,而不是直接告诉学生答案,老师始终是学生的引导者,学生是真正的参与者,使学生通过算法研究,加深对算法的理解,提高算法应用能力和程序设计能力。 职业学校的学生,不仅应具有独立接受知识的能力,更应具有独立探索知识的能力,由“研究性学习”补充原有的“接受式学习”,使学习方式更趋完善,只有当这两种学习方式结合起来,优势互补,才能使基础教育适应时代对人才培养的要求。 算法与程序设计教学思想 在高中阶段开设信息技术课程的基本目的是进一步提高学生的信息素养,使他们能适应社会发展的需求,为信息社会培养合格的人才。本课程力图通过信息的获取、加工、管理、表达与交流等各类信息实践活动,掌握信息技术,感受信息文化,增强信息意识,内化信息伦理。要达到这一目的,必须为学生建构起一个利于他们提高信息素养的良好学习和实践环境。 根据教育部制订的普通高中课程标准编写的,由浙江教育出版社出版的高中信息技术教科书(实验),经全国各地多年来的试用,积累起了比较丰富的教学实践经验。在浙江教育出版社积极倡导、支持,教科书编写人员不懈努力和广大任课教师的热情参与下,多次开展了卓有成效的教学交流活动。例如,教师用书的编制与修订,优秀教案选编的出版,开展教学资源竞赛等等,都为教科书的使用和课程教学质量的提高作出了有益的贡献。 总的说来,上述各项活动都比较侧重于解决如何教的问题,受益的对象基本局限于教师范围。但是,我们更主要的任务是如何使广大同学直接受益,如何为广大高中同学创造一个便于进行自主学习信息技术课程的辅助学习的平台,通过这一平台来掌握高中课程范围内的信息技术基础知识和基本技能。使同学们能根据自己的基础、特长和兴趣,学会创造性地利用信息技术解决学习和生活中的实际问题。《高中信息技术辅助教学平台》(计算机光盘版)就是为这一目的开发和编制的。为了使信息技术课程的教学能全面贯彻教育部制订的课程标准精神,使广大任课老师在教学过程中有所参照,也为了减轻老师们的备课负担,更主要的是为了激发同学们学习本课程的积极性,能循序渐进地掌握信息技术的基础知识、基本技能和相关的应用能力。“平台”的设计是以“教案”或“学案”的形式呈现的。 信息技术辅助教学平台共分六个模块,分别是:信息技术基础、算法与程序设计、多媒体技术应用、网络技术应用、数据管理技术、研究与探索(机器人活动和信息学活动)。前5个模块按32课时来安排内容。任课老师可按本校生源、设备、师资条件的实际情况进行适当调整。 根据本“平台”的设计目标及其所肩负的任务,前5个模块的基本结构栏目为:课标理解、教材分析、教法实践、知识货架、素材下载等项。 课标理解:以课程标准为依据,提出对本单元教学内容在课程中的作用和地位的理解,使教师和学生的信息技术教学活动更符合课程目标。 教材分析:指明本课时的学习目的,基本教学内容,需要掌握的学习重点和要解决的难点。对部分重点或技术难点提供简明动画,帮助同学理解。 教法实践:根据教学内容,提出教学流程或教学方法,进行讨论交流、实践体验、综合探究等实践活动;通过实例演示或练习(含拓展练习),对同学反馈的知识、技能进行评价。知识货架:是本模块、本章、本节、本课涉及的知识和概念的汇编,供教师和同学查阅。 素材下载:为教师备课提供相关素材内容;为学生的学习、作业、练习准备必要的素材,以节约学生时间,提高学习效率。其中有些内容是为了拓展教师和学生的视野提供帮助。 《算法与程序设计》是高中信息技术课程的选修模块。由于算法与程序设计在解决问题过程中所起的关键作用,因此,它被各地学校广泛地选修,这也为本模块教学积累起了比较丰富的经验。本模块所担负的主要任务是:让学生体验算法思想,了解算法和程序设计在解决问题过程中的地位和作用,并能对简单问题设计算法,初步学会用一种程序设计语言编制程序,实现算法,解决问题。 本“平台”汇集了丰富的算法与程序设计教学内容和相关素材。它可以用来帮助教师备课,进行课堂教学;也可以帮助学生学习,提高他们的学习兴趣,激发他们对未知领域积极探究的欲望和提高分析问题、解决问题的能力。本“平台”努力为学生提供一个较为优良的学习环境,促进学生主动学习,以充分发挥其主体潜能,为学生个性化学习开辟一个新领地。 《算法与程序设计》既有严谨的理论,需要对被解决的问题进行周密的分析,把问题模型化,又要有解决问题的科学的、严格的方法。具备算法理念,初步掌握算法的设计与分析方法是一件对学生终身有用的好事。本“平台”对“课标理解”、“教材分析”等5个基本栏目都有较详尽的叙述;对部分比较典型和难度较大的内容还配置了相应的Flash动画帮助师生们进行教和学。 问题求解存在于社会生活的各个领域,在“拓展学习”栏目中“平台”提供了许多来源于学习、生活、工作的算法设计实例,供学生课内或课后进行自主学习,以进一步形成算法理念,提高自己的算法设计和算法表达的能力。所有的示例程序、练习素材及辅助动画都可在“素材下载”栏目中找到,供下载,以节省师生的教学与学习的时间,提高效率。 由于“平台”是在实践教学经验基础上的一种再创作,难免有欠妥和不足之处。编者殷切祈望使用本“平台”的广大师生不吝赐教,以期不断总结经验,完善内容,改进形式,能更好地为广大师生服务,为提高教学质量作一点微薄贡献。 高中算法与程序设计教学方法初探 左权中学 张彦萍 算法与程序设计是高中信息技术选修课。本模块强调的是通过算法与程序设计解决实际问题的方法。对于学生来说,程序设计的思维方式、方法和概念都是全新的,学生接受起来比较困难,因此必须认真研究程序设计的教学方法。我在近几年的高中信息技术课教学过程中进行了一些研究与探索,对程序设计教学方法有了一些浅显的认识,与大家共同探讨。 一、培养学生编程的学习兴趣,调动学习积极性 爱因思坦说“兴趣是最好的老师”。兴趣相当程度上决定了教学效果的好坏。如何培养学生学习程序设计的兴趣,我认为可以从以下几个方面入手。 1、让学生认识到学习程序设计在提高自身素质的突出作用。讲一些IT界精英的故事;社会需要提高学生未来的生存能力;自身素质提高:可以培养学生的思维品质,培养学生发现问题、思考问题和解决问题的能力;学习程序计算机教育对其他学科的影响等方面入手。 2、程序设计教学中要从学生的兴趣入手,利用学生对事物的好奇心,选择学生身边的,学生感兴趣的、有实际意义的程序,激发学生的学习兴趣。比如:第一堂课讲VB界面设计,可设计一个QQ登录界面。学完选择语句后,我设计了利用随机函数加法练习小程序,加数和被加数随机产生(1-100),结果自己输入,可判断对错,程序结束可计算得分。例程也可以找班内学生自己编写的程序,学生非常喜欢。 3、一定要分层次教学。文科班和理科班、尖子班教学内容难度上有所变化。一个班级布置作业时也要分层次。 4、轻入浅出,消除学生们对程序设计的畏难心理。在教学时,低起点,从一个个简单实例出发,让学生们从自身的实践中感受到这个的确很简单,从而迎合了学生渴望成功的心理特点。前两节课千万不能罗列过多的概念,让学生不知东西,打击学生的学习兴趣。 二、适当调整教材结构,立足具体实例,渗透基本概念 VB程序设计概念比较多,如何让学生较容易按受、理解是我在最初的教学中较为头痛的问题。刚接触程序设计的学生,对程序设计充满了好奇,如果把一开头还用不上的许多的控件、属性放在前面,一下子引入大量抽象的名词、概念,就会让不少学生望而生畏。因此要想让学生领会这些抽象的概念,教学中我选择的方法是先少讲控件,最多讲窗体、按钮,三个控件。结合数学课本已学的知识,先复习、巩固、提高基本知识。从数据类型,基本运算,讲到三种基本控制结构后,然后再讲基本的控件。这时,控件用于程序设计的例子就可以讲明白了。但是,我仍然不敢把控件的每一个属性都细讲。突出按问题需要设计界面来选用控件,以一个个鲜活的具体实例为切入点,在每个例子中适时、适量渗透一些相关的概念和知识,让学生在做中学,在学中做,使学生在完成任务的过程中,逐渐地、很自然地去体会控件、对象、事件的概念。教学中要安排足够的课时把这些控件的用法渗透到一个个程序实例中,由浅入深逐渐介绍,让学生在编写程序的过程中总结控件的用法。 三、采用启发、引导的教学方法,培养学生的实际应用能力、设计教学的主要环节,因“材”施教与因“需”施教相结合 《VB程序设计》课程的内涵十分丰富, 涉及的知识单元和知识点很多。因此在教学过程中,不仅要培养学生程序设计的技能,还要培养学生系统分析和系统开发的技能。实施VB的教学,首先要选择合适的教材,这样既有利于教师设计教学过程,又有助于学生的学习。这里所讲的“材”是指以教材为纲,按照教材的章节按部就班地讲授,课堂教学中往往以教师讲课为主,要求学生紧跟教师的思路,但是教学方法极易造成教与学的脱节,限制学生创造力的正常发挥。而“需”是紧扣教学大纲所确定的培养目标,以应用为目的,以必需够用为尺度,打破课程界限,将相关课程的知识点加以整合,按照“实际、实用、实践”的原则重新组织教学内容,这是VB教学方法的重要方面,也为教师在讲课过程中提出了更高要求。另外,程序设计是设计与实践并用的工作,只听、看、读是学不会的,只有让学生多动脑、多动手、多实践,通过编写调试大量的程序,才能使学生从中理解程序设计的思想方法、积累程序调试的经验,体会成功的喜悦。因此,在实验环节,除了验证型实验外,增加了设计型实验和综合型实验。为了解学生学习的具体情况,提高教学效果,授课教师要督促学生独立完成上机实验,以提高学生的动手能力,为学生创造性发展提供良好的条件。 2、实例教学 《VB程序设计》是一门实用性很强的课程,它既有理论又有实践,既讲方法又讲动手能力。讲授《VB程序设计》,像任何其他语言的程序设计一样,教材中前几章多数都是先介绍对象、对象的属性、方法和事件及VB语言基础等等一系列的在程序设计中比较抽象难懂的概念,然后才介绍程序的建立和运行。因此在教学中,可适当打破课本原有以知识的逻辑结构体系为顺序组织课堂教学的方式,改用从简单有趣的实例入手,通过让学生观看、模仿,在实际操作中去探究和领悟这些概念,例如,在一开始学习VB对象及对象的方法和事件的有关概念时,我设计了一个求外语、教育学平均成绩的并打印平均成绩的程序实例,让学生和教师一起做,在当前打开的窗体内添加了三个命令按钮、三个文本框和两个标签,设置好各对象的属性;并分别在三个命令按钮的单击事件过程中添加相应代码,按功能键F5运行程序。在操作的过程当中,教师开始只简单提示学生完成程序,等学生完成任务后,教师通过设问,让学生思考:什么是对象的方法和事件?并让学生找出本实例中各对象的名称、不同对象的方法和事件过程名称,教师再适当加以归纳和小结:窗体以及添加到窗体中的控件,统称为对象;而方法却是VB提供的内置于对象的特殊子程序,它可以直接调用,如Print方法;而事件则是对象能够响应和识别的动作,如单击鼠标触发Click事件等,同时提醒学生注意观察在VB中方法与事件的区别。在此基础上,再适当引导学生归纳总结出创建VB应用程序的基本步骤,及如何在界面内添加对象、设置事件等等,一切问题都迎刃而解。在讲解实例时,教师当以精选出的具有代表性的程序实例,把重点放在具体实例的分析和讲解上,把要学习的语法和概念融入到具体实例中来讲解。 3、重视算法,抓住核心 在教学中经常存在这样一种现象:很多学生对语法、结构等知识掌握得很好,但一旦碰到实际问题就束手无策,不知道如何用学到的知识解决实际问题,其实这是算法能力欠缺的一种表现。教师经常注重于分析每条语句的含义,却忽略了算法描述过程的展现,造成学生知其然不知其所以然。其实,在VB中,算法设计是它的核心。如果学生掌握了良好的算法设计能力,也就掌握了钓鱼的本领,无论遇到什么问题都可以很好的解决。那么在教学中可以通过多种方法培养学生的算法设计能力:(1)详细讲授常用的算法。算法有很多种,学生一般只要掌握常用的就可以满足编写模块的需要。而与数据结构、软件工程相关联的算法则不做要求。(2)教师带领学生多阅读程序,分析过程,吸取他人的经验和成熟的算法,使学生少走弯路或不走弯路。(3)开展实践性学习,引导学生积极参与编程实践,促进思维的飞跃,比如让学生练习编辑班级学生档案管理软件等等。在这个过程中,学生亲自动手解决具有一定难度的实际问题,为之设计合适的算法, 经过实践去培养学生的创新意思、应用意识和探究能力。这些意识和能力一旦形成,就会使学生利用VB解决实际问题能力得到很快的提高。 4、培养学生综合运用知识及自己动手的能力 程序设计课程的实践性很强,“精讲多练”是程序设计课程教学的一大特点,实验教学在程序设计教学中起着重要的作用,学生只有通过自己编写程序、上机调试程序,才能从中理解程序设计的思想方法、积累程序调试的经验,体会成功的乐趣,从而激发学生的学习兴趣,学生只听不练根本达不到学习的目的。学生在完成课后习题时积极性不高,兴趣不大,甚至想抄作业应付老师。只有让学生动手编制他们感兴趣的程序,学生才会有成就感,才会对课程产生兴趣,学起来才会从容自如。如在学生学会编写求1+2+„+N!=?的程序后,即引导学生设计求N!的程序,待学生设计出N!的程序后,接着又让学生进一步设计求1!+2!+„+N!=?的程序。这种一环紧扣一环的探究式的动手实践练习, 以发展学生探索能力为主线来组织实践, 以培养探究性思维的方法为目标,以基本的教材为内容,使学生通过再发现的步骤进行主动实践的过程,产生一种探索和发现的心理。因此如何让学生综合应用所学知识解决实际问题,提高综合应用能力和动手操作能力,激发学习兴趣也是我们需要加入课程设计的内容。课程设计时,老师要重点设计选题, 使得选题既贴近实际需要,又能够让学生感兴趣,并且能够运用所学知识解决问题,课程设计题目分为基本题和综合题。基本题按教学顺序设计,尽量避免涉及后续章节的知识,后续的课程设计题目尽量引用前面的课程设计内容,以便加深对前面所学知识的理解;综合性题目是对一学期所学知识的总结和巩固,应与实际生活或工作相关且具有一定规模,可将其分成几个子项目,由更多的学生参与,分工合作,以期进一步锻炼学生的动手能力,从而进一步培养学生分析问题、解决问题、研究和探索问题的能力和团队协作精神。 四、切实落实以学生为中心,学生为主体,教师为主导的新课改思想。信息课教师绝大部分为青年教师,无论教学理论和教学经验上都相当缺乏。特别是在程序设计内容时,自觉不自觉地还是走向了教师为主的教学模式。教师与学生缺乏互动,课堂气氛沉闷。在课堂教学中,要鼓励学生质疑是激发学生的主体性、培养学生思维能力和创造能力的起点。学生的主体性主要体现在学习过程中能掌握学习主动权,能够主动、自觉、积极地学习。因此,在教学过程中特别要注意设置恰当的问题,通过启发引导,体现教师的主导作用。集中学生的注意力,促进学生主动思考、主动探索,可以使学生在学习的过程中成为主体。总之,VB作为一门重要的编程语言,在高校的计算机基础教学中仍然占据重要位置,教学方法在程序设计教学中的举足轻重制约着程序设计教学的效率。科学的教学方法一定会为学生提供良好的帮助。我们在教学过程中应以学生为主体,教师为主导,采用符合学生认知规律的、科学的教学方法,充分调动学生学习的主动性,同时,采用综合评价学生的方式,努力培养学生自主学习的兴趣,提高学生实际应用能力,从而使得VB课程的教学质量得到不断地提高 【摘 要】在高中“算法与程序设计”模块教学中,算法的设计以及运用程序设计解决问题的方法与思路,与学生原有的知识结构和解题经验有较大差异,使得学生的学习存在较大困难。教师应从生活实例出发,激发学生的学习兴趣;降低编程起点,提高学生的学习信心;引导学生通过程序阅读,学习他人编程经验;强化算法的分析与设计,培养学生分析问题与解决问题的能力。 【关键词】算法与程序设计;教学探析 【中图分类号】G40-057 【文献标识码】A 【论文编号】1671-7384(2013)11-0050-03 “算法与程序设计”是普通高中信息技术课程中难度较大的一个选修模块。照本宣科的讲授只能使学生死记硬背程序,这种缺乏理解的学习导致了学生进一步学习的困难,更谈不上对所学知识的灵活运用。因此,如何改变学生的思维方式、如何组织教学以使学生真正理解算法并学会运用程序设计解决实际问题,值得我们探索和研究。 从生活实例出发,激发学生的学习兴趣 从教育心理学的角度来说,兴趣是一个人倾向于认识、研究并获得某种知识的心理特征,是可以推动人们求知的一种内在力量。学生对某一学科有兴趣,就会专心致志地钻研它,从而提高学习效果。以下案例正是从学生兴趣出发,激发了学生参与的热情。 案例1:遥控机器人 窗体上是一张机器人图片以及“ 向上”、“ 向下”、“向左”、“向右”四个按钮。怎样让机器人听从我们的指令动起来呢?以向上为例,我们看到机器人图片的Top属性是1000,在“向上”按钮的单击事件中,可以写这样一句代码:Picrobot.Top = 900。运行程序,单击“向上”按钮,机器人听从指令向上挪了一部分。再按一次,机器人怎么没有反应?怎样修改程序才能让机器人根据指令不断地向上移动呢?学生思考,得出程序代码:Picrobot.Top = Picrobot.Top-50。 对于机器人,学生都有种神秘感,往往觉得不可思议,但是又想探索。在教师的引导下,学生的本能兴趣转化为内在学习动力,在实现对机器人控制的过程中,加深了对控件、赋值语句和变量概念的理解。 降低编程起点,提高学生的学习信心 没有人在学习程序设计的初始阶段就能成为编程高手。然而在程序设计教学中,教师常常一开始就要求学生编写完整的程序。导致很多学生无从下手,学习的自信心受到了严重打击。因此,我们应降低编程起点,将学生引入门。一方面,在问题的选择上,尽可能使用学生能够通过已有知识和经验分析出解决方法的问题;另一方面,可以采用案例教学法,从模仿典型程序开始,在代码模板上补充关键代码后即可调试运行,从而体验成功的喜悦,增强学生学习的信心。下面就是一个使用案例教学法的例子。 案例2:循环结构 [1] 针对s=1+2+3+„„+100问题,引导学生观察累加求和的过程:s=s+数字。引出如果用变量i表示数字,整个计算过程是在重复执行若干个同样的操作:s=s+i。如何让计算机自动重复上述过程呢?教师呈现用循环语句解决问题的程序,接着让学生模仿累加程序,完善计算s=100+101+„„+200、s=12+22+32+„„+102、p=1*2*3*„„*9四个式子程序空白处的代码。4个任务的难度依次递增,第1题要求分析出循环的初值、终值;第2和第3题要求分析出循环体;第4题要求同时分析出循环的初值、终值和循环体。学生完成后,教师展示学生程序,引导学生归纳总结出For循环结构的一般格式。然后提出“计算s=10+20+30+„„+100”的任务,让学生在一般格式的指导下,独立编写程序解决问题。 牛顿说过:我之所以能取得现在的成就,是因为我站在巨人的肩膀上。在案例教学法中,案例和代码模板就是“巨人的肩膀”,学生通过补充程序模板中的关键代码,逐步认识For循环结构,并在多个“个”的尝试中,找出隐藏在“个”背后的规律性内容,归纳出For循环结构的一般格式,进而在一般格式的指导下编写程序,解决重复执行“类”问题。在此过程中,学生的编程思维和分析能力获得了快速的提高,提高了学习程序设计的信心。 通过程序阅读,学习他人编程经验 学习程序设计,一个重要而有效的方法就是阅读。阅读书中的例题、软件开发环境中的范例、网络中的开放源代码以及自己编写的程序。克努特曾说过:通过阅读他人的程序获得技巧,是极其重要,但在许许多多的计算机课程中,这样的训练却可悲地被忽视了,因此导致了计算机被极其糟糕地低效使用。通过阅读大量的“示例”程序,可以加深对各种语句语法和语义的理解,从中发现、总结别人解决问题的方法,积累编程的经验以及实现基本算法的代码段。 怎样阅读程序呢?对于一篇文章,通常首先采用粗读的方式进行整体认知,了解文章主要写的是什么,留下总的印象;然后再进行精读,深入到文章的局部,留心遣词造句,赏析精彩语段,揣摩文章的谋篇布局。阅读程序和阅读文章有相通之处,对于一些较为复杂的程序,应该先进行整体分析,从整体上摸清程序的架构,再对各个部分的代码逐一进行跟踪阅读。 1.整体分析 这一阶段,相当于文章的粗读,需要从整体上把握程序的组成部分、各个部分的大意以及连接方式。我们如何去了解一个语句块的作用呢?主要有三种方法:一是依据经验,也就是我们已经掌握的各种算法和语句的关键点来判别;二是看注释,一个高品质的代码都会有注释,对我们理解语义有方向性的指导作用;三是靠猜测,我们根据过程名以及参数名,能对这个过程的作用略知一二。如果有必要,则可以到过程的定义中,找到某些具有特征的操作,以证实自己的猜测。[2]任何一个复杂的程序都可以分解为三种基本结构: 顺序结构、选择结构和循环结构。每种结构只有一个入口和一个出口,而各个结构之间的连接方式有两种:积木式连接和嵌套式连接。积木式连接是一个结构的出口与另一个结构的入口连接;嵌套式连接是在一个结构的内部嵌套另一个结构。一般来说,我们应先分析出程序中积木式连接结构,再找出这些结构中的嵌套式连接结构。借助于流程图、伪代码等描述算法的工具,可以根据源程序画出反映程序结构的流程图,这对理清思路、分析程序结构有很大的帮助作用。[3] 下面我们先用整体分析法阅读一段代码: 案例3: Private Sub cmdGcd_Click()Dim a As Integer Dim b As Integer Dim r As Integer a = Val(InputBox(“输入a”))b = Val(InputBox(“输入b”))Do While b <> 0 r = a Mod b a = b b = r Loop Print “最大公约数为:”;a End Sub 从命令按钮名和输出提示信息可以知道,这是一个求两个数的最大公约数的程序,程序结构如图2所示。 2.跟踪阅读 如果要详细了解各个部分是如何运行的,就要对语句进行跟踪阅读,相当于文章的精读。跟踪阅读就是用人脑模拟计算机的执行过程。对于顺序结构,阅读不成问题。对于选择结构,关键是要搞清条件和语句的关系,当有两个选择结构连接时,要分清楚是积木式连接还是嵌套式连接。对于循环结构,可以通过对循环体内的语句逐一跟踪阅读,分析循环结构的执行过程。这时,可以借助于纸笔,用列表的方法将循环执行过程中各变量的值一一记录下来。[4] 在案例3中,当输入48,28(即a=48,b=28)时,程序执行的过程如下表所示: 程序阅读的关键是代码的积累。“读书破万卷,下笔如有神”,程序读多了,自然容易借鉴别人的编程经验和方法。 强化算法设计,培养学生解决问题的能力 程序设计的核心是算法,语言只是表达工具。用程序设计解决问题,关键是要找到解决问题的算法。只要算法正确,就可以用任何一种语言编写程序。对于初学程序设计的学生来说,接触的问题并不复杂,相应算法也较简单。很多学生看到问题后,不进行细致的分析和设计,粗粗一想就开始动手,很简单的问题往往写出一大堆代码,自己也说不清解决问题的方法和过程。 案例4 : 编写程序,实现成绩统计功能。通过InputBox函数输入50个学生成绩。当成绩大于等于85时,为“优秀”等级;成绩大于等于60且小于85时,为“及格”等级;当成绩小于60时,为“不及格”等级。要求统计优秀人数、及格人数及不及格人数。 学生解决这个问题的过程,往往只是按照题目的表面意思进行处理,首先执行一次循环输入数据;然后扫描三次数组,分别统计优秀、及格和不及格人数。 俗话说:磨刀不误砍柴工。我们应该怎样进行算法设计呢?在这个案例中,重复扫描使得程序效率不高。其实,最简单的算法是只循环一次,输入数据后立即使用多分支选择结构对输入的数据进行判断,分别对优秀、及格及不及格人数进行统计。算法分析前,学生为自己编写的程序沾沾自喜,然而进行算法分析后,学生意识到自己程序的缺陷,较好地体验了算法对提高程序效率的作用,理解和掌握了隐藏在问题背后的知识,提高了解决问题的能力。 综上所述,算法与程序设计教学需要我们在教学实践中不断地总结经验教训,密切结合学生的自身情况,引导学生多阅读、多思考、多实践。让学生在算法的指导下,在不断完善和调试程序的过程中,潜移默化地掌握相关知识,养成缜密严谨的科学态度,进一步提高逻辑分析能力、发散思维能力以及发现并解决问题的能力。第二篇:算法与程序设计
第三篇:算法与程序设计教学思想
第四篇:高中算法与程序设计教学
第五篇:《算法与程序设计》教学探析 期