第一篇:高中算法与程序设计教学
高中算法与程序设计教学方法初探
左权中学 张彦萍
算法与程序设计是高中信息技术选修课。本模块强调的是通过算法与程序设计解决实际问题的方法。对于学生来说,程序设计的思维方式、方法和概念都是全新的,学生接受起来比较困难,因此必须认真研究程序设计的教学方法。我在近几年的高中信息技术课教学过程中进行了一些研究与探索,对程序设计教学方法有了一些浅显的认识,与大家共同探讨。
一、培养学生编程的学习兴趣,调动学习积极性
爱因思坦说“兴趣是最好的老师”。兴趣相当程度上决定了教学效果的好坏。如何培养学生学习程序设计的兴趣,我认为可以从以下几个方面入手。
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课程的教学质量得到不断地提高
第二篇:面对高考高中算法与程序设计教学
高中算法与程序设计教学
【摘要】《算法与程序设计》是高中信息科技的选修模块,也是高中信息科技教学的重点和难点,其教学内容枯燥,因此教学难度较大。本文结合笔者几年来的教学实践对高中《算法与程序设计》的教学进行探究。
【关键字】算法 程序设计 兴趣 教学方法
《算法与程序设计》是高中信息技术选修课程,学习算法与程序设计就是要使学生在原有基础上进一步体验算法思想,了解算法和程序设计在解决问题过程中的地位和作用;能从简单问题出发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序实现算法解决问题。在本模块的教学,应注意与学生已有相关知识的衔接,要强调理论与实践的结合,要循循引导学生,激发他们的学习兴趣,引导学生注意寻找、发现身边的实际问题,进而设计出算法和计算机程序去解决这些问题。那么怎样才能上好这门课?下面谈谈我在教学中采取的一些方法。
一、借助游戏教学法,激发学生学习兴趣
兴趣是培养学生程序设计能力的前提,研究表明,让学生在娱乐中学习将更有利于新知识的获得。在学生刚刚介入新知识的学习时,一般会从心理上产生一种新奇感,这是学生在接触新事物时的一般反应。然而随着知识难度的加深,学生的学习积极性很可能会下降,甚至对那些较为枯燥的程序设计产生抵触和畏难情绪。因此,教师应该运用策略使学生保持初学阶段的兴趣和积极情绪。如教材第一章算法概念抽象难懂,过多的课堂讲解会起反作用,因为学生一旦听不懂或觉得太枯燥,就可能抑制他们对这门课的学习兴趣。如在第一课教学中以玩“猜数游戏”作为主线,通过生生之间、人机之间相互玩猜数游戏的活动,将计算机拟人化,激发学生学习程序设计的兴趣。首先让2名同学一组玩“猜数游戏”。学生甲心里想一个0—100之间的整数,让学生乙猜。根据学生乙猜的数进行判断并反馈信息“大了”还是“小了”,直到最终猜中,相互交换角色,看谁能用最少的次数猜中数。其次教师用VB设计的电脑游戏和学生一起玩,玩时注意引导学生思考总结猜数所用的方法,并设法减少猜的次数。引导学生交流讨论,引出算法的概念。通过这样的一节导入课使学生充分认识到学习算法的目的就是通过掌握的程序设计语言来“教”电脑做事情解决具体问题。将游戏与教的方式融入算法与程序设计教学,创设轻松愉快的环境,使学生降低对算法学习的恐惧心理,激发学习兴趣。在第一课的教学中,学生对猜数游戏有了浓厚的兴趣,也有了一试身手的欲望。
教师还可以再演示一些由学生自己编写的、有趣的程序,从而吸引学生,并告诉他们学习了《算法与程序设计》的内容后,大家都能够编出这些有趣的小程序。
二、从学生的已有知识水平出发, 设计教学实例
算法是解决问题的方法和步骤,计算机解决问题,必须严格的按步骤进行,这和学生平时解决问题是有区别的。因此在算法设计中,应将平时解题中没有想清楚的每一步都想清楚,这对学生的逻辑思维能力要求较高,许多学生刚开始可能不太适应。因而在教学中注意引导学生利用已有知识结构,从他们熟悉的或感兴趣的问题出发,进行算法与程序设计的教学。如在讲解顺序结构中交换两个变量值的问题。老师提出问题:设整型变量A的值为5,B的值为6,如何交换它们的值?学生:我不知道该怎么办,无从下手。老师提示:如果有两盘磁带,里面分别录有外语听力和流行音乐,请你把里面的内容对调,你会怎么办?学生:找个空白的磁带呀!原来这么简单。老师:要求用变量A、B、C来代表三个磁带,把操作的过程表示出来。经过这一类比,同学们毫不费力地就可以画出如下的知识点:
在该案例教学过程中,没有直接提出两数如何交换问题,而是通过磁带互换,培养了学生的思维能力。而后再将知识迁移,通过这样的过程,学生对两数交换的理解和记忆都达到了很高的层次。
如在讲解枚举法时,我引用了我国古代著名的《孙子算经》中的鸡兔同笼问题:今有鸡兔同笼,共有35个头、94只脚,问鸡和兔各有几只?这样一来,学生即有了学习兴趣,又可以根据现实生活中的实际情况来解决问题:由于共有35个头,所以鸡和兔共有35只。每只鸡有2只脚,每只兔有4只脚,脚的总数是94。所以有变量x来表示鸡的数量,x从1到34列举所有可能的情况,然后对列举出的鸡的数量x和兔子数量35-x进行检验,判断是否满足共有94只脚的条件,即x*2+(35-x)*4是否等于94,若满足条件则输出x和35-x。这样一来,学生即解决了问题,又学会了循环结构的程序设计。所以在教学过程中,联系实际,从学生的已有知识水平出发, 设计教学实例作为程序设计的活教材可以收到事半功倍的效果。
三、进行有效的练习与作业评价
算法与程序设计是一门实践性很强的课程。学生通过练习不仅可以及时巩固所学知识,加深对知识的理解,更重要的是把学过的知识加以运用,以形成技能技巧,从面发展自己的智力,培养自己的能力。如何做好这个环节的教学也是十分关键的。在教学中我做过以下几点尝试。第一,让学生从模仿中学习,先设计一个与老师讲解过的例子相类似的题目让学生去完成。例如,在顺序结构教学中,教师举例分析“已知圆的半径,求周长和面积”后,请学生完成“已知长方形的长和宽,求周长和面积”。这样多数同学很快就可以完成,感到有成就感。第二,对于一些较难的题目,教师可以事先完成一部分流程图,引导学生如何进行分析解题,最后主要部分让学生去完成。第三,可以设计多种形式的练习,帮助学生理解程序,学习算法与程序设计。如阅读程序,写出程序运行结果,说明程序的功能;分析问题,设计算法,画出流程图;给出问题算法分析与部分流程图,补充完善流程图与程序。
作业是学生对所学知识的掌握情况及时、真实的反馈,教师通过批改检查作业,可以直接获取学生信息,把握学生知识掌握和能力发展的程度,及时调整教学方案,修改教学行为,确保后续教学的时效性、有效性和针对性。在教学过程中,我对学生的书面作业都是及时批改并反馈,批改的方式有全部批改、重点批改、轮流批改、当面批改、师生共批、学生互批等。因全部逐本批改占据教师大量的时间而影响备课的质量,所以应采取各种类型相结合的方式。不论用何种方式批改,都应注意并记录学生作业错误的数量和性质。通过作业反馈,一方面让学生及时订正,另一方面教师要加强对错误原因的分析,以便在以后教学中有针对性地加以纠正。教师对作业应按质量打成绩,也可写评语,评语以鼓励的话语激励学生把作业做好。应尽量少用负面的标语对优秀或进步较大的作业,教师应给予全班表扬,可以全班传阅,以资互相学习,对差的作业应视具体情况给予指点和帮助。
四、重视生生交流和师生交流活动
交流是人际间的交往、对话、沟通的活动,是人际间增进彼此了解、沟通的重要方式。交流活动在信息技术教学中有着重要地位。一方面,生生之间的交流可以给学生提供表达自己成果的机会,同他人分享学习成果,体验成功快乐。通过与他人的讨论、互助等形式的合作学习,学生可以超越自己的认识,更加全面深刻的理解事物。另一方面,师生之间的交流,可以促进师生之间的感情交流,营造和谐的师生关系。它同时也是围绕学生学习的需要来组织安排的,能使学生主动地学习算法与程序设计知识,而不是被动地接受灌输。
例如在学生已经掌握了s=1+2+3+4+„„+99+100的循环结构程序基础上,来做1-2+3-4+„„+99-100这个程序设计示例的时候,本来教学设计的时候是希望学生在绘制流程图时出现代码:s=s+i*(-1)^(i+1)。但是,在给予学生充分的空间和时间,让他们交流想法,自主编写之后,我惊喜的发现学生编写出了多种方法。(1)学生直接指出了我预先设计的代码过于复杂,可以用初始值n=-1,然后在每次的循环体内取n=-n;s=s+n*i,这样就可以将代码写的更为简洁,我及时的将这部分同学的思想给予肯定;(2)部分同学通过对原始代数式的分析,写出s=s+(i-(i+1)),循环步长step=2。将这个例子拿出来给全班同学看的时候,我特意指出了程序的循环次数少了一半,算法上更为优化,希望能够引导学生今后尽量想出优化的程序;(3)部分学生交流之后采用了循环+分支的结构,通过条件的判断来决定正负号:if I mod 2=0 then s=s-I else s=s+I,这是一个非常好的方法,根据这个思路,我调整了一下教学安排,让全班的同学参与分析、讨论,也许是因为这种想法源至他们自身,所以非常顺利接受了如何结合循环和分支结构,来完善和增强自己程序的功能。达到了教学相长的效果。
教师通过自己的教学行为来积极引导学生交流,同时也参与到学生的交流之中,从而引起学生学好算法与程序设计的积极态度,激发并满足学生的情感需要,特别是对知识的渴望与兴趣,从而更好地完成教学。
五、合理安排上机实践
在算法与程序设计教学中,不能忽略学生的上机实践,一个好的例题,学生通过上机操作,可以更好的理解知识,教师也可从中挖掘学生的潜能,开拓学生的思维。
在教学中,教师应采用灵活多样的教学方法,充分调动学生学习的积极性,引导学生独立思考,敢于提出不同见解,质难问疑,积极创造条件鼓励学生勇于探索,使他们主动地学、积极地学。我校信息科技课一周两节,第一节课我在教室集中讲授相关算法与程序基础知识,针对讲授的内容布置练习。第二节课学生上机操作,我在布置练习任务时采取由浅至深、逐步递进的方式,刚开始的时候只是让学生模仿书上的流程图和程序完成练习,随着知识的逐步深化,慢慢让学生练习独立绘制流程图和编写简单的程序,再到较为复杂的内容。
在辅导过程中我发现一个可喜的情形就是学生刚开始一遇到问题就急于找老师,让老师帮助解决。但随着课程内容的深入,多次的上机实践后我发现课上这种寻求帮助的声音越来
越少,学生们非常乐于自己修改排除错误。在完成做业后学生脸上洋溢着自信的表情,在这样的过程中学生体验了成功的喜悦,同时也帮助了他们理解程序,尤其是到循环结构以后,这种作用就更明显了,而且这种能力完全可以迁移到今后的学习和生活中去。
六、结束语
通过几年的摸索,笔者对于高中算法和程序设计的教学有了较大的提高,但仍存在若干不足之处。本文提出以上见解,以期起到抛砖引玉的作用。笔者将在今后的教学中,更加注重教学、教法的探究,在实践中不断提高算法和教学设计这么课程的教学能力。
新课程改革对教师的自身发展也提出了更高的要求。信息科技本身最大的特点就是不断发展,所以作为信息科技老师也应该不断地学习,必须不断更新观念,不断地积累教学经验,注重学习新知识,提高终身学习的意识和能力,以适应不断变化的时代对现代教育所提出的更高要求,以便找到合适教学方法来更好地教学。我们要不断培养和发展自己的反思能力,包括反思自己的教育理念与行为,思考各种教育行为的后果,不断自我修正、调整和更新,成为反思型教师。
【参考文献】
1.《上海市中小学信息科技课程指导纲要(征求意见稿)》,上海市中小学课程教材改革委员会办公室编,上海教育出版社,2002年11月
2.上海市高级中学信息科技学科教学基本要求(实验本),中国地图出版社,中华地图学社,2009年1月
3.王爱艳:《算法与程序设计教学之我见》,信息技术教育,2008.2 4.《〈算法与程序设计〉模块的教学策略》 李 娟
In the modern time, mainly in small and medium-sized enterprises, Foshan steel industry is the speed development by leaps and bounds, and have made remarkable achievements in upstream, but also face factors of production such as energy, raw material cost, continuously high indirectly lead to cost pressures in iron and steel
第三篇:算法与程序设计
《算法与程序设计》教学中实施研究性学习探步
作者:赵濮民
摘要:研究性学习是教育科研领域中一个崭新的课题。信息技术教学作为以培养创新精神、研究能力和实践能力为目标取向的必修课程,它强调让学生通过研究性学习,提出问题,收集材料,对研究性课题进行探索、分析、研究,最后基于问题解决模式,在实践操作中培养学生科学的态度和价值观以及创新精神、创新思维、创造能力,并学会解决生活中与信息技术学习有关的实际问题。职业学校的学生,不仅应具有独立接受知识的能力,更应具有独立探索知识的能力,由“研究性学习”补充原有的“接受式学习”,使学习方式更趋完善,只有当这两种学习方式结合起来,优势互补,才能使基础教育适应时代对人才培养的要求。
关键词:程序设计;研究性学习;求真;求全;求变;求新;优势互补
《算法与程序设计》是职业学校信息技术教学中的一个重点,也是难点。传统的程序设计教学以老师讲授型为主,由于算法与程序设计的内容逻辑性强,普遍认为在程序设计教学中难以实施研究性学习。
研究性学习是以“培养学生具有永不满足、追求卓越的态度,培养学生发现问题、提出问题、从而解决问题的能力”为基本目标,以学生从学习中获得作品设计与制作方法的困惑为方向,以在提出问题和解决问题的全过程中学习到算法与程序设计为学习方法的课程。经过反复研究,我们认为研究性学习可以应用于程序设计教学中。实施研究性学习的关键是要确定一个目标,要鼓励学生主动地发现问题,并且通过探究或实践活动去试图解决问题。在课题研究的过程中采用分组交流讨论、查阅资料、协作探究、归纳总结等方式,一步步引领学生深刻掌握算法与程序设计的精髓。
一、通过研究性学习,重构算法知识体系,要求真 研究性学习是学生在老师的指导下,结合真实生活,选定主题,然后搜集相关材料,对材料进行归纳、加工处理、分析、总结,得到相应结论的学习活动。在《算法与程序设计》教学中,根据教学内容,经过反复研究,确定了研究主题《搜索算法的应用研究》和《动态规划算法的解题应用研究》,并根据学生的自愿报名成立了两个研究小组。然后各小组根据自己研究的算法,重新整理相应的知识,对知识进行认知、归纳、总结。如《搜索算法的应用研究》小组,对搜索算法从以下几方面进行整理:
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动画帮助师生们进行教和学。
问题求解存在于社会生活的各个领域,在“拓展学习”栏目中“平台”提供了许多来源于学习、生活、工作的算法设计实例,供学生课内或课后进行自主学习,以进一步形成算法理念,提高自己的算法设计和算法表达的能力。所有的示例程序、练习素材及辅助动画都可在“素材下载”栏目中找到,供下载,以节省师生的教学与学习的时间,提高效率。
由于“平台”是在实践教学经验基础上的一种再创作,难免有欠妥和不足之处。编者殷切祈望使用本“平台”的广大师生不吝赐教,以期不断总结经验,完善内容,改进形式,能更好地为广大师生服务,为提高教学质量作一点微薄贡献。
第五篇:《算法与程序设计》教学探析 期
【摘 要】在高中“算法与程序设计”模块教学中,算法的设计以及运用程序设计解决问题的方法与思路,与学生原有的知识结构和解题经验有较大差异,使得学生的学习存在较大困难。教师应从生活实例出发,激发学生的学习兴趣;降低编程起点,提高学生的学习信心;引导学生通过程序阅读,学习他人编程经验;强化算法的分析与设计,培养学生分析问题与解决问题的能力。
【关键词】算法与程序设计;教学探析
【中图分类号】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时,为“不及格”等级。要求统计优秀人数、及格人数及不及格人数。
学生解决这个问题的过程,往往只是按照题目的表面意思进行处理,首先执行一次循环输入数据;然后扫描三次数组,分别统计优秀、及格和不及格人数。
俗话说:磨刀不误砍柴工。我们应该怎样进行算法设计呢?在这个案例中,重复扫描使得程序效率不高。其实,最简单的算法是只循环一次,输入数据后立即使用多分支选择结构对输入的数据进行判断,分别对优秀、及格及不及格人数进行统计。算法分析前,学生为自己编写的程序沾沾自喜,然而进行算法分析后,学生意识到自己程序的缺陷,较好地体验了算法对提高程序效率的作用,理解和掌握了隐藏在问题背后的知识,提高了解决问题的能力。
综上所述,算法与程序设计教学需要我们在教学实践中不断地总结经验教训,密切结合学生的自身情况,引导学生多阅读、多思考、多实践。让学生在算法的指导下,在不断完善和调试程序的过程中,潜移默化地掌握相关知识,养成缜密严谨的科学态度,进一步提高逻辑分析能力、发散思维能力以及发现并解决问题的能力。