第一篇:高中《算法与程序设计》教学中的探索与思考大全
高中《算法与程序设计》教学中的探索与思考
株洲市第二中学 刘辉琴 杜新宇
【摘要】
《算法与程序设计》是高中信息技术课程中的选修一模块。本模块是高中信息技术教学的重点和难点。《算法与程序设计》本身枯燥、难懂,理论性、实践性强,教学难度大。笔者在教学实践中不断思考如何找到一些比较新颖的教学方式,在教学中因材施教,激发学生兴趣,指导学生学习程序设计,培养学生的逻辑思维能力、抽象思维能力和创新能力。【关键字】
算法与程序设计 Visual Basic 处理教材 整合 创新思维 实例教学法 小组互助 【正 文】
“万事开头难”,程序设计尤其如此。首先,对于几乎没有相关知识背景的高一学生而言,编制一个完整的程序必须先了解程序的基本结构,掌握常量、变量和表达式等概念,学会输入、输出、赋值等语句的格式,这些内容枯燥而难以记忆。其次,由于计算机在计算方面的独特优势,使计算机解决问题的技术思维方式和学生一向习惯的数理逻辑思维方式有所不同,这也给学生的学习带来了困扰。
针对上述问题,笔者做了如下尝试:
1、大胆处理教材,整合课本知识,激发学生的学习兴趣
笔者所在地区信息技术学科使用粤教版教材,高中《算法与程序设计》选修模块中选用Visual Basic语言描述算法。VB中的对象主要用于构建界面,而具体程序功能的实现则要编写代码行,因此任何一个完整的应用程序都不可能只用对象或只用语法。教材中第二章《程序设计基础》讲述VB语言基础知识和程序的基本结构及相关语句的格式。第三章《可视化编程》讲述VB中对象的使用。笔者认为在讲授时不宜将两者分开,要把VB面向对象的程序设计方法,事件驱动的编程机制贯穿于整个教学过程中。将这两块内容有机结合起来展开教学。在教学过程中,笔者始终坚持以学生已有的知识为基础,打破以课本知识的逻辑结构为顺序组织课堂教学的模式,先不讲基本概念,改用从简单的实例人手,通过让学生观看、模仿,在实际操作中去探究和领悟这些概念,并适时地加以归纳总结,让学生在轻松愉快的气氛中接受新知识。比如,在讲到循环结构中DO——LOOP语句和FOR——NEXT语句的用法时,我用DO——LOOP语句的4种形式和FOR——NEXT语句实现求解N!的过程,让学生去观察、领悟它们的异同。
2、重视实践活动环节,通过实例教学法训练学生的创新思维,培养学生的创新能力。
创新思维是指人们在提出问题和解决问题的过程中,能够产生新成果的思维活动。发散思维、类推思维、求异思维等都是行之有效的创新思维形式。
VB 是一门实践性很强的课程,实例教学法是笔者在本模块教学中的常用方法。以教学的内容为依据,选择一些接近学生的生活,有趣的、有实际意义的小程序为实例。通过对实例进行理论分析,指导学生模仿,通过知识再现达到在实践中领悟知识,开拓设计程序的思路。在V B编程中,循环结构是程序设计中学起来很费劲但不可或缺,对于多重循环更不容易弄清其流程。这时可以在课堂上以现实中的问题为例子向学生提问,例如:时针每走过一格,分针将会走过多少格?秒针又会走过多少格?根据日常生活中的情况,可以形象地把分针、秒针和时针的运动打比方,这就是三重循环嵌套。
教师鼓励学生针对实例独立思考解决问题的算法,逐步引导他们改变以往单一的、逻辑的、线性的思维方式,多角度、多侧面、多方位地考察问题,并在实践活动中,借助程序的编译反馈信息检验思维成果。通过设计程序解决问题是培养学生的创新思维的途径之一。例如:在排序算法一节的教学过程中,就可以让学生思考对一组数据进行排序的多种方法(冒泡排序,选择排序,快速排序等等)从而训练学生的创新思维,培养学生的创新能力。程序设计算法中的枚举法、分治法、递推法、递归、动态规划法等等,都是对学生创新思维的有效的训练方法。
3、采用小组互助的学习方式,培养团队精神,提高协作能力。
将学生分为若干组,安排一些小组的任务,让多人在一起协商、协作来完成任务,学会团队协作、集体决策,不仅适用于《算法与程序设计》的学习,还适用于日常后生活与其他学科的学习。组织学生进行研讨,在思想的碰撞中往往会产生智慧的火花。
如:学习过程的定义与调用
教师在上机课时采用小组互助的学习方式,让组内同学互相帮助,共同提高。
教师给出上课时的教学任务:编写一个判断素数的公有过程,调用素数过程,实现(1)产生一个三位随机素数数组x(10);(2)验证一个大于2的偶数可以表示为两个素数之和;(3)找到四位正整数中的超级素数。
这些任务数量较多而互相有关联,小组成员内部分工,每两位同学至少独立完成其中一个小任务,然后小组成员将小任务汇总,积极讨论难点,共同攻克,使得大家不断提高能力与学习效率。
基本流程:
1.教师下达任务后,学生完成组内分工。
2.学生6-8人一组,每位学生首先完成所自己所分配到的任务,如组内成员遇到难点,要求组内其他同学相互协作,提供必要的帮助,如果互相讨论之后还是无法解决,则应由组长请教老师,再由组长教给其他组员。3.各小组成员经过任务汇总,完成整个教学任务。4.各小组推选代表展示成果。
5.课后小组成员可以继续深入讨论学习。
采用小组互助式教学,营造出自由宽松的氛围,学生拥有高度的参与性、自主性,激发了学生的学习兴趣,调动了学习积极性。小组成员互相学习、互相沟通、互相帮助、互相督促。让学生在学习中学会了怎样与人交往;学会正确认识自我,尊重关心他人;学会取人之长,补己之短;学会宽容、忍让、分享。能做到倾听别人的正确见解,并予以采纳;能了解别人的困难所在,并给予帮助;能发现别人的优点,并不吝赞赏。学生在学习过程中提高了人际交往能力。
高中程序设计教学的主要目标是为了使同学们了解现代程序设计理论中的面向对象编程和结构化程序设计等基本思想,培养现代程序设计过程中所需要的一些基本能力。教学有法,教无定法,只要教学得法。在保护同学学习积极性的前提下,按照同学们的认知规律组织教学,合理运用多种教学方法,灵活地、创造性地掌握教学过程,激发学生的兴趣,培养学生的逻辑推理思维能力和创造性思维能力。
【参考文献】
[1]《算法与程序设计》,广东教育出版社 [2] 《普通高中信息技术课程标准》
[3] 《信息技术教育学》,周克江,中国电力出版社
第二篇:高中算法与程序设计教学
高中算法与程序设计教学方法初探
左权中学 张彦萍
算法与程序设计是高中信息技术选修课。本模块强调的是通过算法与程序设计解决实际问题的方法。对于学生来说,程序设计的思维方式、方法和概念都是全新的,学生接受起来比较困难,因此必须认真研究程序设计的教学方法。我在近几年的高中信息技术课教学过程中进行了一些研究与探索,对程序设计教学方法有了一些浅显的认识,与大家共同探讨。
一、培养学生编程的学习兴趣,调动学习积极性
爱因思坦说“兴趣是最好的老师”。兴趣相当程度上决定了教学效果的好坏。如何培养学生学习程序设计的兴趣,我认为可以从以下几个方面入手。
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、充分发挥教师的引导作用、学生的主体作用。在算法研究活动中,应充分发挥教师的引导和指导作用,既不能放任自由,也不能包办代替,要充分发挥学生的主体作用。当学生遇到问题和困难时,老师应当引导和启发学生,让学生去探索和研究,而不是直接告诉学生答案,老师始终是学生的引导者,学生是真正的参与者,使学生通过算法研究,加深对算法的理解,提高算法应用能力和程序设计能力。
职业学校的学生,不仅应具有独立接受知识的能力,更应具有独立探索知识的能力,由“研究性学习”补充原有的“接受式学习”,使学习方式更趋完善,只有当这两种学习方式结合起来,优势互补,才能使基础教育适应时代对人才培养的要求。
第五篇:算法与程序设计教学反思
1.1计算机解决问题的过程 课堂教学反思
2011年01月07日 10:58:52 来源:隆德县第二中学【字体:大 中 小】 “1.1计算机解决问题的过程”课堂教学反思
本节是对用计算机程序解决问题的基本过程的入门介绍,是体验计算机程序,体验并理解用计算机程序解决问题的基本过程。这个过程包含以下环节:分析问题,设计算法,编写程序,调试运行,检测结果。
学情分析:
1、高中学生已具备了较丰富的计算机使用经验,但接触的多是文字处理、媒体表达等常用工具软件及网络应用等,对于计算机程序只有极少的学生接触过,许多学生只是听说,对于计算机程序的工作过程、设计过程知之甚少。
2、高中学生具有很强的逻辑思维能力,也掌握了较高的数学知识水平,对于初步了解计算机程序困难不很大。
我设计了这样一个问题“农夫带着狼、羊、白菜从河的左岸到河的右岸,农夫每次只能带一样东西多河,而且,没有农夫看管,狼会吃羊,羊会吃白菜。”让同学们设计一解决这个问题的方案,大家立刻讨论起来,不一会儿提出了两种不同的方案,问题解决了,通过这个问题的引入,调动了学生的积极性很自然的引入这节课的内容,起到了比较好的作用。紧接着“韩信点兵问题的设计”学生很自然的想到应用计算机解决,成功地引领学生走进了程序设计的殿堂,让他们有兴趣、有意识地进行更多的实践与探索。这种引导,正是本课的重点,也是本课最成功之处。
本节课的目的是通过激发学生的兴趣,吸引学生自主地体验程序,感受程序解决问题的过程,理解程序的概念,从教学效果来看,学生从一开始就被深深吸引,很主动地投入到教学活动过程中探究体验程序的运行过程。
本节课比较困难的是如何向没有任何程序概念、从未接触过程序语句的学生讲述程序及其作用,如何突破这个难点是本节课的关键。为此设计了先让学生体验“100!”的程序,学生体验到计算机的计算能力和运算速度,并且懂得了程序是由一系列语句组成,运行程序计算机会自动按语句执行。
巧妙设计教学任务,采用任务驱动式的教学过程,学生能够体验到应用计算机解决问题的过程,实现本节课的教学目标。
2008年2月20日上午第4节在高一(4)班上了第一节课《1.1 计算机解决问题的过程》。本节主要结合教材上的“华南太阳能设备厂生产方案选择”的实例讲解和体验计算机解决问题的过程。师姐前去听了课。总体来讲效果不是很好。最大的问题在于没有调动学生的学习积极性。从而导致学生没有跟着我一起思考问题,没有理解透彻例题。练习时虽然布置的任务很简单但做出的人不多。课后师姐对本节课进行了点评。现将得到的启示列举如下:
启示一:要重视学生的课堂反应。关注教学中的学生这个要素。教学最终是为了让学生学到知识,提高能力,而不是为了完成教学进度和任务。当学生对提问反应不热烈,只有个别学生回答时,要考虑放慢节奏,让学生把一个环节搞清楚再进入下一个环节。否则也影响学生的学习积极性。
启示二:批评学生要讲究技巧。本节课学生的纪律没有前几个班好,于是我直接作对比说道:我们四班的纪律没有另外几个班好,这样非常容易引起学生反感,既容易对学生的学习积极性产生消极影响又可能影响课堂满意率。所以尽量不要作班之间的对比批评。对比表扬学生倒是很受用。本节课的批评可以改为这样说:“我们班在新的学期表现出了较好的风貌,没有同学迟到,在课堂上玩其他的也没有,这很好。如果在课堂纪律上再加强一点老师就满意了。这一点以后一定要注意。”这样先褒奖再提要求,同时措辞比较委婉可能学生更容易接受。
启示三:提高学生学习积极性的一点。设置简单的、能出成果的课堂练习。让学生觉得学有所得,这样积极性才能提高,才不会厌学。
程序模块的教学很有难度,要认真备好课,想办法激发学生的学习兴趣,让课堂活跃化。才能获得较好的教学效果及课堂满意率。
2008年2月22日在高一(2)班上了本学期第二节课《1.2 算法和算法的描述》。本节课主要讲授算法的概念、三种描述算法的方法、算法的特征,后面要求学生通过猴子吃桃的课后练习巩固流程图描述算法的方法。总体感觉比较好。学生能跟着一起思考问题,同时保持了较好的课堂纪律。王国汉老师前去听了课,并给予了较高评价。以下是评价要点:
本堂课的优点:多次运用对比,联系前后的知识点及例子,瞻前顾后,显得课堂紧促条理;分总结合,注意对所讲知识点进行小结,再进行下面的环节,可以帮助学生梳理知识点;善于运用课堂激励,不断夸奖和鼓励学生,激起他们的学习动力。
缺点:练习题难度较大,具体问题的算法层面没有讲清楚,部分学生不理解解题步骤,自然无法顺利画出流程图。导致这样的原因是部分学生(优生)讲出了解题思路,于是作为教师我没有细致分析解题思路,学生在这里花费了过多时间。
启示如下:其一,教学要面向绝大多数学生,有时甚至是全体学生,不能被部分优生左右了教学进度。要兼顾大家,考虑大多数学生的情况。其二,继续发扬“捧”、“扬”、“夸”的课堂激励机制,学生在轻松夸奖的气氛下思维会更活跃,同时积极性更高,更愿意配合教学。
要“捧”出好的教学效果,“捧”出高课堂满意率。
保持好的心情去上课。记得——微笑。
2008年2月25日在高一(3)班上了本学期第三节课《1.3程序与程序设计》。本节课主要讲授程序的概念及特征、程序的三种基本结构、程序设计语言的发展及高级语言的分类。彭敏老师前去听了课。本节课讲的比较一般,其中课堂练习的设置也不合理:完成课后的第一章扼要回顾及一道已知三角形三边求其面积的题目。
本节内容以理论为主,基本没有涉及实际操作。学生听课兴趣不大。彭敏的意思是略过不讲,因为学生一节课下来学不到东西,文绉绉的理论学生不可能去记,三种基本结构这个本节课的重点内容在教材后面的章节还要继续学习。有一定的道理。后面上课的班级课堂练习只布置了已知三角形三边求其面积,画算法流程图这样一道题目,且略去了对能否构成三角形的判断,大多数学生能够当堂完成。
启示:要合理安排教学内容,不能按教材按部就班;要分析学情,力争让他们每节课都有长进,从他们的角度分析课堂的价值。
后上课的班级,要在前面上过的基础上反思,以改进。
第三节 程序和程序设计语言
教学过程:通过浏览“求三角形面积”源文件,认识程序并理解算法和程序之间的对应关系。通过单步运行“点到直线的距离”、“求绝对值问题”、“0到20之间奇数之和”三个程序,理解程序的三种基本结构。
教学反思:本节课在备课时,基本上是按照教材上的活动顺序来设计导学案,只是把活动一中的“个人理财”程序改为水平考试题“求三角形面积”,和活动二中的程序改为“0到20之间奇数之和”。我觉得这此课设计思路较好,通过引导学生分析程序和单步运行程序,并完成导学案上相应的任务,通过将笔记本电脑连到班通上讲课,使学生比较直观的理解了顺序结构、选择结构和循环结构程序,为以后学习程序设计打下了很好的基础,避免了在机房上课学生思想不集中,用班班通操作VB不方便,直接讲课又不直观的缺点。从已经上过的两个来看效果比较好。
这一节上下来,最大的感触就是对讲课的重点突出有了更深的理解。本节内容很多,涉及VB语言的特点、程序的基本构成、数据类型、常量变量、运算符函数表达式及可视化编程环境。什么是重点?数据类型中的整型和单精度实数以及可视化编程环境。其他的都只能是附带讲一下。因为你想,如果你是学生,一节课下来你能学到多少,全部都细讲等于什么都没讲,学生无法接收消化。后面的练习也要围绕重点,求实用。
有时候上课,换位思考学生的感受,很重要。
2008年3月3日在高一(1)班上了本学期第五节课《2.2程序的顺序结构》。本节课主要讲授顺序结构的执行方式、赋值语句、输入数据的函数InputBox、输出Print和msgbox。讲到赋值,同学们觉得难以理解,特别是实现两个变量值的交换。我灵机一动借助讲台上三个喝水的瓶子,说明了交换过程的三个步骤的含义,学生就理解了。
讲到输入时文本框内的默认值,还渗透语文,讲了“默认”和“缺省”两个词的含义。
后来为了为循环结构埋伏笔,还讲了以“s=s+p,p=p*2”为循环体的循环语句执行方式和结果(s=s+p+ 2p+4p+„)。这两个小环节都没有体现在事先的教学设计中。
启示:
1、讲的东西一定要保证绝大部分学生完全理解,不理解就要反复讲。不关注效果的讲课是失败的。
2、要善于运用其他的教学媒体和教学方式,换思维方式讲解。
3、课堂是活的,要把握好,同时根据需要生成一些事先没有准备的环节或其他东西,有时能起到好的效果。
2008年3月7日在高一(1)班、高一(2)班上了本学期第六节课《2.3程序的选择结构——条件格式》。本节由标准体型的判断引入,内容比较多,涉及条件格式的单行完整模式、单行省略模式、多行模式、关系运算和逻辑运算及其运算顺序等。使用了彭老师的课件。该课件制作精美,原课件流程环节较多,自制资源丰富,是他参加青年教师教学基本功大赛的课件。两个班的课堂都比较沉闷。2班怎么都没办法调动起来,1班稍好一点。连一班都这样让我觉得很不正常。深究其原因,竟然是天气使人困乏,同时适逢三八降至,下午第八节学校组织女儿节活动,大家有一部分心思早跑了。
课堂沉闷,没办法我想尽办法调节。说到标准体型不忘一顿自夸“像我这样就是很标准的啦”,部分学生不认真听讲我说道“有些同学的课堂行为很不利于师生关系和谐”,逻辑运算我还说到了与或非跟数学的交集并集、乘和加,物理中的并联与串联电路的相似之处,可谓旁征博引。但都效果一般。学生有的直接说没有学习的动力。怎么办?程序设计的确是不容易让学生产生学习动力的一个模块。
从一下几个方面努力吧,我想:
1、激励。让学生做出东西。多练。增加成就感。
2、调节。一定要想办法调节到满意的课堂气氛再讲,学生精神好了讲一遍比精神不好讲多少遍都管用。所谓磨刀不误砍柴功,刀磨利了再砍不迟。
3、鼓励班干部做好表率。
路漫漫其修远兮,我将上下而求索。
2008年3月12日下午第八节在高一(1)班上了本学期第八节课《2.4程序的循环结构——FOR循环语句》。本节课是我为参加学校青年教师教学基本功大赛上课比赛精心准备的一堂课。从“国际象棋棋盘上的麦粒”案例引入教学,让学生分析实际问题,经历补充程序、程序挑错、阅读程序最终做到独立编写For语句循环结构的程序。环节设计循序渐进,环环相扣。吴和发副校长(历史)、卢昭琼老师(历史科长)、谢黎川老师(语文科长)、明长杰老师(历史)、杨玉蓉老师(综合科长)、欧阳少英老师(物理科长、特级)、王国汉老师(以上为评委)、赵旭华老师、师姐等参加听课。教学效果:吴校长课后对我笑着说了句“可以”,珊姐评价较好,课堂上的编程练习第一题大部分学生编出来了,第二题也有部分学生编出来。学生在课后围上来说听懂了,“上得这么好”。而且还有学生围上来问没弄明白的地方,这在以前没有发生过,好几个男生还不愿意离开电脑室,不过这次的原因可不是想上网玩,而是继续调试VB程序,令我很开心。
成功的总结:
一、多问,这堂课上课前我问了老爸,一位有近三十年教龄的中学教师,问了师姐,他们都对课的设计及实施提出了很多好的建议,也鼓励我放开讲,要相信自己,极大地鼓舞了我的自信心。妹妹(慧)也电话鼓励我放开讲就好。这样我上课时不再紧张,发挥比较正常。
二、学生比较配合,前面的课中渗透了一些本节课的思想和方法,学生聪明,接受这一部分知识较快,学习效果较好。
三、过程经过了精心设计,课前的一天脑子里冒出几个好的与教学相关的幽默素材,用上效果较好。怎么讲也在其他班试过多次,虽然过程和教学方法不尽相同。
四、本身教学具备一定的经验,课堂调控还行。
启示:
1、要充分自信。要充分相信我的学生,好学生。
2、增加一些幽默素材调节气氛。
3、要完全放开。轻松上阵。不背包袱,不要有负担。
4、有激情点。掌控好时间。
不足:
1、有学生课堂嚼口香糖。要注意并加强课堂管理。
2、课堂纪律感觉没有上学期的公开课好。
3、备课还没有充分备学生。教学设计还有可改进的地方。
记住:自信。我很棒!
微笑。用微笑征服世界。
幽默。大家都笑了。
激情。年轻人的本色。
2008年3月21日下午第6节在高一(2)班上了本学期第九节课《2.4程序的循环结构——DO循环语句》。本节课设计为先复习FOR语句,进行一个程序填空的练习:编程求1000以内的正奇数和。然后结合教材“种树”的案例,分析DO循环的特点及语句格式。最后进行练习巩固,完成教材上的实践1:求使累加和S小于30000的最大正整数N。内容少且相对简单,教学效果却并不是很好。
这里要总结的并不是教学设计和实施方面。我发现我在教师素质上还有待进一步提高,我做不到诲人不倦。讲了多次的“循环终止条件要从两个方面分析,一是不能一开始就满足了,如果一开始就满足那么将不进行任何一次循环,二是要在循环体内让循环终止条件逐渐趋向于满足,否则可能一直循环造成死循环。直到后来,我明确提出循环终止条件不是S<30000,还有学生写S<30000,我就很恼火了。语气也不再平淡,心里也暗骂他们笨还不愿意听讲。这与我之前想要努力做到的完全不符。之前我说的最多的一句是:听明白没有?还不清楚的话我再讲一遍。讲完再问同样的话:听明白没有,没有的话我再讲。再讲完还不明白?那我再讲一遍。直到他们很“无奈地”认真听一遍,弄明白,省得我“这么烦”。
突然想起一句话:没有学不会,只有教不会。没有学不好,只有教不好。反思一下,我还是做得不够。信息技术作为一个不参加高考的科目,学生不可能像语文数学一样去学。这是客观事实。那么我要做的应该是想方设法调动他们的学习积极性,吸引他们参与到教学活动中来。而不是严要求,看到与预期差距大的结果就心里不舒服。
作为信息技术教师,大家都一样。心要宽。要提高素质,提高修养,练好脾气。这样才能做一个合格的教师。
第7节课在高一(1)又不一样了,只要题目给出来,何浩彬就立马能给出答案。甚至比我还快。重点班的学生思维还是活一点。我想另一方面也得益于师生关系的和谐。
最后说一说具体教学内容的两点注意:一是教材上关于种树的累加和分析Tree=Tree+Tree+1这个是有问题的。这样事实上曲解题意为每一年种的树都比前面种的所有树数目多一。程序中Tree=Tree+Age-14则是正确的。二,本节课的练习,教材P54实践1求使累加和S小于30000的最大正整数N,直接将循环终止条件写为S>=30000是不符合题目要求的,此处本来就将N多算了一,如果循环体中N=N+1再放在S=S+N的下面,最后输出应该写为print n-2。程序为:
Private Sub Command1_Click()s = 0 n = 1 Do s = s + n n = n + 1 Loop Until s >= 30000 Print n1 End Sub
《算法与程序设计》的教学反思 标签: 楼梯 案例 算法 结构 教材 分类: 教育随笔 2010-11-05 10:44
在新课程实施过程中,教学反思被视为促进教师专业发展和自我成长的核心要素,学校也倡导教师写教学反思。本人就本学期的教学实践过程中的一些反思小结如下。
1、关于教材
个人认为,新课程标准是进行教学设计的出发点,而教材是进行教学设计的主要依据,也是学生课堂学习的主要依据。本学期信息技术的选修模块我们学校选择的是教育科学出版社的《算法与程序设计》,当时选择这个模块是考虑到算法与程序设计和老教材衔接的比较紧,一是教师容易上手,二是学校无须添加其它机房设备,第三是为了学生的可持续发展,为今后大学的计算机学习打下基础,为通过计算机二级考试而打下铺垫。
从整体章节结构上来看,本套教材还是符合新课程标准的,但是教材上有一些案例和教材的知识结构在课堂教学活动中还是存在一些问题。
(1)难度大
例如第一堂课讲解的有关“韩信点兵”的案例。按理,这个案例可以极大的调动学生的求知欲,是一个好的例题,但是证明这个定理的难度太大了。尽管在集体备课时大家充分讨论了这个问题的证明方法,甚至还请教了数学教师,但是在课堂教学中还是被学生发现了定理证明过程中的一个漏洞。
漏洞如下:被5、7整除,而被3除余1的最小整数是70,由此推导出被5、7整除,而被3除余2的最小整数是70×2;事实上被5、7整除,而被3除余2的最小整数应该是35。所以需要将前提中的“最小”去掉,变为被5、7整除,而被3除余1的整数是70。但是前提改了之后定理的证明就不是那么严谨了。
再回过头来看这个案例在课堂中所起的作用,其实是为了说明人脑解决问题的过程,因此个人认为这个案例完全可以不讲,让学生上网去查找有关证明的资料。课堂上讲解一个学生同样感兴趣,也同样能够说明问题的案例,比如说“韩信分油”的问题。
(2)跨度大
例如第二章一开始就要求学生上机编写一个打字测试程序。在此之前,学生仅仅了解了VB的设计界面,刚刚完成了一个简单程序的编写。而打字测试程序中所涉及到的窗体、控件以及对象的属性、方法、事件,包括VB的事件驱动原理,学生在头脑里是空白的。再加上那么多的程序代码,教师看了也会头疼的。学生一下子要感受这么多的新鲜事物,似乎步子太快了,不符合知识迁移的客观规律。
继续回过头来看这个案例在课堂教学中所起的作用,其实是为了让学生初步了解VB程序建立与运行的一般步骤。老教材在说明这个问题的时候就比较容易让学生上手。案例可以改成学生所熟悉的“求圆的周长和面积”或者是“求物体的位移”,明确给出程序建立与运行的五个步骤,一步一步让学生实践、探索,从而完成这方面的知识建构。
(3)知识结构有不合理的地方
最明显的就是教材第三章和第四章的顺序问题。第三章介绍具体的算法,这是教材的重点,包括五种常用算法,解决了“怎么样”的问题。第四章讲程序设计的思想,介绍VB面向对象的程序设计思想,主要是让学生掌握对象的三要素以及VB的事件驱动原理,解决了“为什么”的问题。知识结构不合理在哪?首先,从第二章的内容来看,第二章介绍的是VB的语言规则(语法)和程序的三种基本结构,解决了“是什么”的问题。从人的认知规律来说,了解了“是什么”之后需要了解“为什么”,最后才是“怎么样”。其次,从第三章具体的内容来看,每一种算法的程序实现都需要涉及到对象的三要素以及VB的事件驱动原理,每一个程序都要修改对象的属性,程序代码的编写也都涉及到VB的事件驱动原理。所以,个人认为第三章和第四章在教学过程中需要灵活的调整两者的顺序。
2、关于学生
个人认为,学生能够学好这门课是教师进行教学活动的最终目的。相对于其它选修模块,算法与程序设计稍显枯燥。如何培养学生的兴趣,进而使学生认真学好这门“副课”,这是个人一直考虑的问题。
(1)就算法与程序设计而言,学生处在同一起跑线上,以前都没有学过。尤其是对一些在其它课程学习中有困难的学生来说,这是一次让他们找回自信的机会。个人一直感到很遗憾,没有在第一节课的时候向学生介绍比尔·盖茨,包括国内的许多IT人物的的传奇经历,让他们一开始就拉近与这门课的距离。
(2)要让学生重视这门“副课”,教师先要重视你的学生。如何让学生感受到呢?个人做了一些尝试,但感觉远远不够。比如在学生进入机房之前,帮他们开好电脑,一方面确保学生的电脑使用正常,另一方面可以让学生心里知道,教师在这里等着他们;需要经常抽查学生的笔记,看看是否写的认真;每一份学案都作详细的批阅,等等。个人也存在这样的想法,是否每个礼拜都可以安排半个小时的作业量?
(3)活跃课堂气氛,拉近教师与学生的距离。是否在课堂上拉着学生的思路跟着教师走,个人认为课堂气氛是否活跃是一个标志。在讲VB语法的两节课上,学生倒是安安静静的在记笔记,个人却觉得站在讲台上毫无激情,当然这跟教学的内容有一定的关系,但个人觉得这堂课很失败。也有灵光一闪的时候,在讲“走楼梯”的算法时,个人随口说道班里的某某同学在走楼梯时如何如何,问某某同学走完n阶楼梯共有多少种走法时,突然课堂里一下子热闹了起来,个人知道,学生在思考了。
(4)有时惩罚是必要的。一次,下午第一节课,全班集体迟到超过了5分钟,问原因,午觉睡过头了,还有学生甚至说教学任务完不成,索性让他们上网。个人当即回答:做梦!最后教学任务完成了,拖课10分钟。
3、关于教学过程
(1)重视知识的最近发展区理论。一个例题或者一个案例不能涉及过多的新概念。例题或案例的呈现需要有一个循序渐进的过程。
比如在介绍循环结构语句时,因为循环结构语句相对来说比较复杂,是学生在算法与程序设计中遇到的第一个难点,因此学生理解起来也比较困难,如何克服这个学习障碍呢?首先教师要讲明白循环结构语句的格式,然后通过一个最简单的例题,比如说求s=1+2+3+„„+99+100,详细讲解循环的各个步骤,接着再举相似的例题进行反复,比如说求s=1+1/2+1/3+„„+1/99+1/100,最后解决求s=1-1/2+1/3-1/4+„„+1/99-1/100的问题。这三个例题都可以套用同一种循环结构,但是前两个例题重点在于循环结构的讲解,而第三个例题是在学生初步掌握循环结构的基础上加以一定的提高:循环体用到了前一节课所学的if语句。
又如在介绍双重循环结构语句时,由于双重循环结构语句是后面具体算法(解析、穷举、查找、排序、递归)的程序结构基础,因此必须要求学生掌握。个人也有体会,掌握起来难度颇大。在教学过程中如何实现由易到难,由简单到复杂呢?个人设计了一个打印图形的五步区:第一步,打印矩形,教师主导,力求讲的清晰明了,学生易于理解;第二步,打印直角三角形,教师修改前一个程序,启发学生,让学生尝试写出程序运行的结果;第三步,打印倒直角三角形,继续启发学生,此时学生为主体,让学生修改程序;第四步,打印奇数行直角三角形,继续启发学生,让学生修改程序;第五步,打印等腰三角形,教师给出提示,让学生参与程序的修改。五个图形环环相扣,程序代码短小精悍,所有代码都套用同一种双重循环结构语句,修改起来较为方便。
(2)尊重学生的思维方式。课堂上需要允许或者鼓励学生发表自己的见解,有时需要对学生意想不到的发现而喝彩。
比如上文所提到的求s=1-1/2+1/3-1/4+„„+1/99-1/100的问题,在教学设计时没有考虑到可以用分支结构语句来实现它,而是这样一段代码:s = s +(1 / i)*(-1)^(i + 1);幸运的是一开始没有给出以上代码,而是让学生来填写这条循环体代码。结果就有学生给出了分支结构的循环体代码:if int(i/2)=i/2 then s=s-1/i else s=s+1/i;个人思考了五秒钟,立即对这种解法给予了充分的肯定,课堂上讲解的内容进行了及时的调整。课后想了想,确实是学生的解法更符合他们的思维习惯,通过条件判断解决正负号的问题,所用的代码正是上一个课时所教授的if语句。个人思考,教学相长,是有道理的。
(3)让枯燥的程序算法转变为贴近生活、有趣味性的实际中来。例如在讲解分支结构的select case语句时,由于是刚过年不久,个人想到了一个有关年货打折的案例,要求学生参考教材上的程序代码进行改写。在最近的复习课上,学生仍然对这个案例记得很清晰。再如上文所提到的“走楼梯”的算法、“韩信分油” 的算
算法与程序设计作为信息技术课程中的选修模块,其内容在广度和深度上都具有较高的要求。课标中对本模块的教学目标表述为“体验算法思想,了解算法和程序设计在解决问题过程中的地位和作用;能从简单问题出发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序实现算法解决问题。”这一表述包含了两方面的要求,即知识目标与能力目标,同时也是两种不同层次的要求。显然,“体验算法思想,了解算法和程序设计在解决问题过程中的地位和作用”是知识目标也就是第一层次的目标,强调的是“体验”和“了解”。“能从简单问题出发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序实现算法解决问题”是能力目标也就是第二层次的目标,强调的是“应用”和解决问题的能力。从课标的行文表述中可以看出,第二层次的目标即能力目标才是本模块教学的落脚点和最终目标。但以个人的教学经验来看,我们的教学大多还徘徊在第一层次上,极少能达到第二层次的高度。作为选修模块的教学,这样的情况是值得我们深思的。