算法与程序设计教学(共12篇)
算法与程序设计教学 篇1
一、教学中存在的客观问题
1.学生对该模块的畏难心理
算法和程序设计本身是选修模块,在掌握程度上没有压力,学生学习动力差,再加上程序设计本身比较抽象、枯燥和逻辑思维性强,学生普遍认为程序设计比较高深,对于学生而言,这部分学习内容的理论性和知识性都比较强,并且在编写程序的过程中,需要不断调试、修改程序,而且比起学习一些应用软件而能制作出各种各样有声有色的作品,显得枯燥乏味,所以学生对程序设计的学习存在畏难心理。这也是在在教学中一直存在“难教”和“难学”的原因,这就对教学的顺利进行产生了一定的困难。
2.内容多、课时少,教学目标不能很好地完成
算法与程序设计模块中包括两大块内容,一是算法部分,一是VB程序设计基础部分,基本上涵盖了程序设计中用到的所有知识,有大量的概念、数据、语句以及其他的过程和函数,这些理论知识学生都必须掌握并能在VB中熟练应用,因此教师需要详细地讲解,并让学生做大量的练习。但信息技术课程每周两节课,要学生全面理解算法并学会编程,教学难度可想而知。
3.学生差异问题
首先,高中生的起点水平参差不齐。很多学生在升入高中前,并未接触过算法与程序设计的相关知识。每班大约有超过百分之九十的学生在高中以前未曾接触过程序设计这方面的内容,因此,学生学习程序设计语言的基础较差。其次,编写程序还涉及本身的理科基础,特别是数学思维能力,每个学生的思维能力、理解能力是因人而异的。像实验班与普通班、文科班与理科班,他们的接受能力就不同,而同一个班级的学生,他们中有的思维敏捷能很快接受新的知识,有的却还需要反复讲解才能接受。现在我们教学要面向全体学生,让全体学生都接受一些困难。
二、教学中的实践尝试
面对上述问题与困惑,如何在有限时间内合理运用教材采取恰当的教学方法激发学生的学习兴趣也就是如何提高算法与程序设计课堂教学的有效性,我们不妨从以下几个方面去解决。
1.创设情境激发学生兴趣,提高学生学习信心
程序设计教学要从学生的兴趣入手,利用学生对事物的好奇心,选择学生身边的、有实际意义的程序,激发学生的学习兴趣。比如,第一堂课讲VB界面设计,可设计一个QQ登录界面,让学生将抽象的概念形象化,将自认为高深的知识与身边常用的小工具结合起来,打破学生对本模块知识的畏难心理。
2.深入浅出,消除学生对程序设计的畏难心理
在教学时,低起点,从一个个简单实例出发,让学生从自身的实践中感受到这个知识点的确很简单,从而让学生认为能够自己动手设计小程序,从中体会成功的喜悦。前两节课千万不能罗列过多的概念,让学生摸不着头绪,误认所学内容很难,打击学生的学习兴趣。不要把控件的每一个属性都细讲。需按问题需要设计界面来选用控件,以一个个鲜活的具体实例为切入点,在每个例子中适时、适量地渗透一些相关的概念和知识,使学生在完成任务的过程中,逐渐地、很自然地去体会控件、对象、事件的概念。由浅入深地逐渐介绍,让学生在编写程序的过程中总结控件的用法。
3.与其他学科相结合,加深学生对知识点的理解,提高教学效果
数学中很多问题都可以用程序设计的思维方法来解决。因此信息技术教师可以从学生在数学课上已经熟悉的知识点入手,在教学中多举一些这方面的事例,不仅可以提高学生的学习兴趣,而且还能提高学生研究问题、解决问题的能力。
例如对典型的求和问题:
可以引导学生尝试以下问题:
(1)如求S=100+99+……+1,应修改哪个语句?
(2)如求S=1*2*3*…*10,需要修改哪些地方?
(3)如求S=1+1/2+1/3……+1/n应做哪些变更?
通过以上一系列角度不同的变通,学生对每一个语句的认识加深了,对语句中确定每一个变量更加谨慎了。
4.分层次教学
现在各个学校的班级设置都有文科班和理科班、实验班,教学内容在难度上要有所变化。一个班级布置作业时要根据学生的能力分层次,设置难易不同的教学内容,这就要求教师在研究学生和教学内容上下功夫,备好课,更要“备”好学生,使学生都能够掌握所学知识的要点,在学习中都能找到乐趣。
三、切实落实以学生为中心和主体,以教师为主导的新课改思想
信息课教师绝大部分为青年教师,无论在教学理论还是教学经验上,都相当缺乏。特别是在教授程序设计内容时,不自觉地还是走向了以教师为主的教学模式。在课堂教学中,要鼓励学生质疑是激发学生的主体性、培养学生思维能力和创造能力的起点。因此,在教学过程中特别要注意设置恰当的问题,通过启发引导,体现教师的主导作用。集中学生的注意力,促进学生主动思考、主动探索,可以使学生在学习的过程中成为主体。
算法与程序设计教学 篇2
左权中学 张彦萍
算法与程序设计是高中信息技术选修课。本模块强调的是通过算法与程序设计解决实际问题的方法。对于学生来说,程序设计的思维方式、方法和概念都是全新的,学生接受起来比较困难,因此必须认真研究程序设计的教学方法。我在近几年的高中信息技术课教学过程中进行了一些研究与探索,对程序设计教学方法有了一些浅显的认识,与大家共同探讨。
一、培养学生编程的学习兴趣,调动学习积极性
爱因思坦说“兴趣是最好的老师”。兴趣相当程度上决定了教学效果的好坏。如何培养学生学习程序设计的兴趣,我认为可以从以下几个方面入手。
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!=?的程序。这种一环紧扣一环的探究式的动手实践练习, 以发展学生探索能力为主线来组织实践, 以培养探究性思维的方法为目标,以基本的教材为内容,使学生通过再发现的步骤进行主动实践的过程,产生一种探索和发现的心理。因此如何让学生综合应用所学知识解决实际问题,提高综合应用能力和动手操作能力,激发学习兴趣也是我们需要加入课程设计的内容。课程设计时,老师要重点设计选题, 使得选题既贴近实际需要,又能够让学生感兴趣,并且能够运用所学知识解决问题,课程设计题目分为基本题和综合题。基本题按教学顺序设计,尽量避免涉及后续章节的知识,后续的课程设计题目尽量引用前面的课程设计内容,以便加深对前面所学知识的理解;综合性题目是对一学期所学知识的总结和巩固,应与实际生活或工作相关且具有一定规模,可将其分成几个子项目,由更多的学生参与,分工合作,以期进一步锻炼学生的动手能力,从而进一步培养学生分析问题、解决问题、研究和探索问题的能力和团队协作精神。
算法与程序设计教学心得两则 篇3
一、精选课例,巧设情境,培养学生解决实际问题的能力
由于“算法与程序设计”内容比较抽象而枯燥,发现部分学生在心理上惧怕,缺乏迎难而上的信心,导致影响学习兴趣。所以,我们不但要鼓励学生树立信心,还要认识到“兴趣是最好老师”的重要,教学中多采用实例教学和情景导入,以达到化枯燥为有趣。基于核心素养的教学理念,强调将知识、技能、价值观放在真实情境中学习,由于情境教学能使问题具体化、故事化,有利于激发学生对问题的好奇心和培养解决实际问题能力。
例如,笔者在《枚举算法》教学设计中引入这样一段情景:小李很久没登录QQ了,只记得密码是5位数(能被自己的生日27整除),前3位是母亲的生日726,但后2位记不清数字了,你能帮助小李找出可能的密码吗?学生很快融入到该情景的讨论中,纷纷给出建议。最后得出解决问题的办法是,使用For语句从初值72600到终值72699,通过对mod27运算来逐一判断,将余数为0的所有5位数列举出来。此时,教师再归纳总结枚举算法的定义,可谓水到渠成,学生对该知识的印象也会更深刻。
二、精选练习,分层设计,兼顾学生的个体差异
在新课程改革、新高考改革背景下,学校实行选课走班教学,任课老师接受的教学班,有学考班和选考班两类,未分班时候一个班级的学生中既有学考生又有选考生,面对是不同层次的学生,给课堂教学带来了一定复杂度。因此,我们为兼顾各层次学生的个体差异,避免“一刀切”现象,尽量设计出多层次的弹性练习,以适应分层教学需要,让不同层次的学生都得到关注,各有发展提高。
A级题是为选考生学习循环结构专题的提升范例,学生根据已有的循环累加思想,循环体在累加前,再添加控制正负符号位的变化算式,就可以实现;B级题则要根据题目要求进一步分析累加数据项的变化规律,提炼出数据变化的数据模型,难度比A级题有所提高;C级题是B级题的再次升级,分子也要相应的变化,但这个变化规律难度不大,主要考查学生的数据项解析式的正确书写。
高中《算法与程序设计》教学策略 篇4
一、《算法与程序设计》的教学难点
1. 学生信息素养参差不齐, 难以开展教学。
虽然现在很多中小学都开设了信息技术课程, 但是由于高中学生来自不同的学校, 所接受的信息技术教育参差不齐, 掌握的计算机基础知识很不均衡, 从而导致他们在高中阶段的学习起点也各不相同。如果教学起点太低, 那些基础较好的学生重复学习, 不仅浪费时间, 而且无法提起他们的兴趣, 影响课程教学效果;如果教学起点太高, 那么基础较差的学生又无法跟上教学进度, 导致学生学习积极性下降, 两级分化趋势明显。学生的信息素养不同, 对知识点的接受与运用能力也不同, 一般城区学校的毕业生的信息素养明显优于乡镇学校毕业的学生。在课堂上进行统一教学, 很容易出现“吃不饱”和“吃不了”的现象, 不利于激发学生的积极性和能动性。
2. 该课程知识点多, 课时有限。
《算法与程序设计》采用VB程序设计语言为例, 所以需要学生理解掌握并熟练应用VB的所有基本知识, 包括常量、变量、数据类型、流程图、常用语句等。特别是几种典型算法如枚举算法、解析算法、冒泡排序、选择排序、对分查找等, 学生不仅要掌握其思想, 还需要进行实践操作, 最终达到能自主编写程序。这需要大量的课时来进行理论知识的讲解以及上机演示和练习, 而信息技术课一般每周两节, 远远不能满足学生全面掌握和自主编程的课时需要。
3. 上机操作学习机械化, 教师负担重。
在程序设计教学中, 很多学生都能听懂老师的讲解, 但上机实践操作时, 往往漏洞百出甚至没有头绪。学生的程序编写能力通常只能停留在照样画葫芦的水平, 对教师的例题一知半解, 没有真正掌握解决问题的算法思想, 一旦稍有改变, 就无从下手。上机过程中, 教师要不断给学生答疑, 并对学生提出的各种BUG给予解决。为了更好的学习, 教师会选择典型的错误, 统一讲解。但是小的BUG和操作上的指导, 需要教师一一耐心教导。为了打破单一的课堂练习模式, 在每一节课后还加入自主练习部分。而学生的编程思路不尽相同, 出现的问题五花八门, 所以编程课程的作业批改所需工作量远远大于其他课程, 给任课教师带来了很重的负担。
二、《算法与程序设计》教学策略
1. 采用形象化教学, 激发学生学习的兴趣。
兴趣是最好的老师, 学生在接触新知识的时候, 会从心理上产生一种新奇感, 会迸发出强烈的求知欲望, 产生积极的学习动机, 然而随着知识难度的加深, 学生的学习积极性就可能有所下降, 甚至产生抵触情绪。教师可采用形象化教学, 来激发学生的学习兴趣。由于学生在初学时。没有程序的概念, 如果直接用程序来介绍算法, 思维跨度比较大, 学生难以理解。用形象化教学, 在算法和程序之间选取合适的形象化模型加以联系, 既有利于学生对算法的理解, 又能使学生的思维从算法过度到程序的基本步骤。
算法中的循环语句是学生较难理解的内容之一, 若教师能采用形象化教学, 既能激发学生学习兴趣又能方便学生理解和掌握。例如, 求60个数的总和。我们可以将“60个人排队取款”作为形象化模型。银行工作人员想要提前知道这60个人的取款数额, 以便于准备好资金。那么, 工作人员手持一个计数器 (初值为0) , 询问第一个顾客需要提取的金额, 写到白纸上;再询问第二个顾客需要提取的金额, 与白纸的数值相加, 将获得的新数据写到白纸上;一次询问第三、第四个人, 每询问一个人, 将白纸上的数与客户所需金额相加, 把结果写回到白纸上, 当询问完60个人后, 白纸上所得到数据即为60个人提取金额的综合。当学生理解这个取款模型后, 再形象化的讲解程序:
S=0
For i=1 to 100
S=s+d (i)
Next i
S为白纸, i为询问第i个人, d (i) 为第i个人需要提取的金额。
2. 采用三步教学法, 重视示范引导。
“三步教学法”是一种从实际到理论、从具体到抽象、从个别到一般的教学法, 它降低了学习理论的难度, 符合中学生的学习规律。不同学生对知识的接受能力相差很大, 教师需要有阶梯性、针对性的提出问题, 充分考虑学生的实际情况, 如认知规律、信息素养、兴趣爱好等, 提出不同难度的问题。程序编程对很多同学来说都是第一次接触, 教师首先要帮助学生理顺基础理论知识点, 包括程序的基本结构、常量、变量和表达式等概念, 输入输出、赋值等语句的格式;然后对问题进行算法分析, 创设学习情境, 用趣味性强调例题进行教学, 让学生从单纯的模仿编程开始, 理解算法思想, 养成良好的程序书写习惯, 增强程序的可读性;最后再鼓励学生一题多编甚至自主创新编程, 培养学生的发散思维能力, 深入透彻的理解算法精髓, 提高编程能力。例如, 已知a为3, b为7, 要求交换a和b的值。一般上课讲解或学生自主编程, 均会引入一个新的变量c, 使c=a, a=b, b=c来完成。我们也可以鼓励学生, 不借用新的变量, 用别的方法来完成, 如a=a+b, b=a-b, a=a-b。
3. 采用任务驱动, 提高学生学习积极性。
在算法与程序设计教学过程中, 采用VB程序设计为载体, 巧妙的把教学内容隐含在每个任务中, 通过完成若干个具体任务来学习基本知识和程序编写, 让学生在解决问题的过程中发现新的问题, 通过完成一个个的任务来提高自己的能力, 逐步接受新的知识点, 在理解算法思想的基础上编写程序。教师要按照循序渐进的梯度设计教学任务, 如先让学生模仿书上的流程图和程序完成练习, 随着知识的积累和深化, 让学生独立绘制流程图以及编写一些简单的程序, 最后再引导学生编写较为复杂的程序甚至小型游戏。对于不同层次的学生, 要布置不同的任务, 并及时引导学生在完成任务的过程中进行思考与探索, 对于较难的任务, 可提倡学生相互合作, 用团队的力量去解决问题。将问题分解成若干个任务, 降低了解决问题的难度, 让学生一步一步的剖析和解决问题, 不断的获得新的知识, 不断看到自己的学习成果, 就能提高学习热情, 激起上进心, 爆发出强烈的解决问题的愿望。
4. 研发自动阅卷系统, 减轻教学压力。
近年来, 自动阅卷系统的研发, 极大的减轻了任课老师的教学压力。通过VB语言编译的自动阅卷系统较好地完成了对VB试题、练习题的自动评阅工作, 当然自动阅卷系统还有许多地方有待提高和完善。
自动阅卷功能的实现四步骤: (1) 根据实际需求, 研发测试软件。 (2) 导入学生的操作, 判断操作是否正确。 (3) 分析学生操作的结果以及相应的文件, 判断操作结果是否正确。 (4) 将程序的源代码与标准答案相比较, 得出两者的相似度, 该相似度即为学生分数。
自动阅卷系统的技术常用于VB程序设计的日常教学, 为学生的自我练习提供纠错和记录的功能, 并且记录学生上课、练习、考试的各过程和成绩, 以进行综合考评。
摘要:作为高中信息技术课程选修模块之一的《算法与程序设计》由于程序设计自身的特点, 学生的学习过程比较枯燥和抽象, 为取得更好的教学效果, 教师应合理运用教学策略, 使学生感受到程序设计的乐趣, 达到事半功倍的效果。
算法与程序设计教学 篇5
安徽省宿州市泗县新集中学 周士友
E-mail:ahxjzx@163.com 邮编:234313 电话:*** 摘要:
针对《算法与程序设计》选修模块内容难教难学状况,提出高中《算法与程序设计》教学要注意培养学生的学习兴趣、讲练结合、难度适宜、积极参与电脑制作活动,结合其它学科的问题应用程序设计解决。
关键字:程序设计 教学实践
高中阶段开设《算法与程序设计》课程,不仅为人才的成长打下一个坚定的基础,还有利于培养学生的抽象思维能力和逻辑思维能力,有利于培养“发现问题、分析问题和解决问题”的能力,培养创新精神与实践能力。如何上好这门课,实现信息技术课程的教育目标,我们进行了一些有益的探索。
一、化难为易,提高学习信心和兴趣
程序设计对逻辑思维能力要求较高,为了提高学生的学习信心和学习兴趣,对于一些学生难以理解的教学难点,在教学过程中可采取一些措施降低难度。
在“可视化编程的一般步骤”这个教学内容,其教学目的是让学生通过编写一个简易的打字测试程序来体验可视化编程的一般步骤。上好这节课对引导学生学好《算法与程序设计》十分重要。虽然课本已经给出详细的操作步骤,但学生上机实践时,还是出现了各种各样的错误,其中出现最多的是变量名输入错误。学生对于错误触手无策,不知所措,而这种情况的出现是很正常的,但是学生第一次上机编程就遇到这样或那样的挫折,会使学生对程序设计产生畏惧感,大大降低学生的学习信心以及学习的主动性,打击学生的学习兴趣。教师应采取有效措施,尽量的减少这些情况的发生,让学生能顺利完成任务。
在介绍运算符、函数的功能时,教师讲课讲得天花龙凤,学生还是一知半解,如果提出问题让学生亲自上机尝试探索寻求答案,能让学生更深刻的理解和体会所学的内容。
下面以两个例子说明一下:
例一:讲授函数int(x)、fix(x)的功能。(1)学生上机编程计算:int(56.8)、int(-56.8)、fix(56.8)、fix(-56.8)(2)提问:函数int(x)、fix(x)是否有区别呢?如果有,两者之间有什么区别?
(3)总结:函数int(x)的功能是取小于等于x的最大整数值,函数fix(x)的功能是取x的整数部分,直接去掉小数。
例二:讲授整除、取余运算符。
(1)学生上机计算下列式子的值:5.2/
2、5/(-2)、-5.6/
2、-5/(-2)、5.2 mod 2、5 mod(-2)、-5.6 mod
2、-5 mod(-2)。
(2)总结:整除运算时,若运算量为实数,则先取整,后相除,结果为整型或长整型;运算结果的符号跟除法运算一样。求余运算时,如果运算量不是整数,则先将运算量四舍五入为整型,然后再做求余运算,求余结果的正负号始终与第一个运算量的符号相同。
在教学过程中,随着教学内容的深入,为了让学生学到的知识点形成一个体系,教师可以设置一些综合实践,让学生通过小组探究实践,融会贯穿各个知识点,提高学生分析问题和解决问题的实践能力。
二、创设情境,培养学生创新意识和实践能力
在教学过程中,积极创设问题情境,以问题启发学生思维,激发学生求知欲,使学生在解决问题的过程中较容易的获得知识技能,提高学生的创新意识和实践能力,提升他们的信息素养。
例如分析“兔子问题”(有人养了一对兔子,这对兔子以后每月生一对兔子,新生兔子从第三个月开始,也每月生一对兔子,问12个月后这人共有多少对兔子?),在学生学习递归算法后,提出问题:除了递归算法外,还有没有其它的解题方法呢?在“计算1+2+3+…+100的和”时,要求学生用两种不同的方法编程。教师创设问题场景,鼓励学生从不同角度、不同方法去分析问题,有利于培养学生的创新意识。
二、注意与其他学科的结合 并且对于高中生来说,高中许多课程都与计算机有关联,例如高中数学必修3中的第一章就是《算法初步》,其中有一些问题涉及到程序设计的编程思路,对学生的逻辑思维能力提出了较高的要求。高中数学还要求学生能够把一些具体问题转化为数学模型解决。这些思想方法也是程序设计中最重要的思想方法,本质上并没有太大的区别。不同处主要是“VB程序设计”还要求学生具备一定的计算机操作能力。
计算机最原始的功能就是数字计算,数学中很多问题都可以用程序设计的思维方法来解决。在教学中多举一些这方面的事例,不仅可以提高学生的学习兴趣,而且还能提高学生研究问题、解决问题的能力。
比如,有一个“百钱百鸡”的数学思考题,大多数学生在解题时,只能利用 已知条件,列出两个三元一次方程组,成为“无解”方程。但在讲“穷举”算法时,这个问题就能轻而易举地解决。它的分析过程是:由于100钱最多只能买20只公鸡,因此公鸡数应该在0~20之间;同理可得母鸡数应该在0~
33之间;小鸡数应该在0~100之间。这样,利用循环分别对公鸡、母鸡和小鸡进行枚举,可得出题目的解。
这样的事例还有很多,如数学中解二元一次方程的问题,三角形面积计算问题,物理中平抛运动和球做反弹运动问题等。
四、积极参与电脑制作活动,培养创新能力
几年来,我积极将《算法与程序设计》选修课教学应用于中学生电脑制作活动中,我辅导的程序设计作品获国家级大奖4个,省奖11个,市奖二十个。2008年8月,在哈尔滨举办的 “第九届全国中小学电脑制作活动”总决赛中,我辅导学生的作品《元素周期表》获高中组 “全国二等奖”,获奖学生被免试保送到大连海事大学; 另一学生作品《函数画板》获“全国三等奖”。在“第十届全国中小学电脑制作活动”总决赛中,我辅导学生的作品《智能成语速查》获高中组 “全国三等奖”,在“第十一届全国中小学电脑制作活动”总决赛中,我辅导学生的作品《魔幻电子琴》获高中组 “全国三等奖”。
结束语
我在教学实践中,努力做到转变教育观念,重视人的发展性和主体性,采用正确的方法和策略,从根本上提高学生学习的积极性和主动性,在课堂教学的转变中,学生的学习兴趣和学习责任感日益增强,即使基础不好的学生也对程序设计有独特的兴趣。而且随着计算机技术的不断发展,必将对算法与程序设计课程的教学提出新的要求,因此,教学改革是一个不断发展的过程,必须做到与时俱进。
算法与程序设计教学 篇6
【关键词】算法 VB程序设计 培养良好的学习兴趣 讲练结合 难度适宜 与其学科相结合 教学模式 教学方法
高中信息技术课已经开始向多元化发展,对高中生学习信息技术课不但要掌握基本知识,更要学习如何自己设计制作计算机作品,而其中又以设计程序为难点。现在计算机的多媒体的应用已经很普遍,而且学生对多媒体也容易感兴趣。相对多媒体而言,程序设计就显得枯燥无味。但是程序设计又是计算机的基础,只有程序设计掌握好了,才能更好地开发多媒体。并且对于高中生来说,高中许多课程都与计算机有关联,例如高中数学必修3中的第一章就是《算法初步》,其中有一些问题涉及程序设计的编程思路,对学生的逻辑思维能力提出了较高的要求。高中数学还要求学生能够把一些具体问题转化为数学模型解决。这些思想方法也是程序设计中最重要的思想方法,本质上并没有太大的区别。不同处主要是“VB程序设计”还要求学生具备一定的计算机操作能力。
我们目前使用的教材浙教版,其中《算法与程序设计》是选修1。如何上好这门课,实现信息技术课程的教育目标,在短短的一学期的教学实践中,通过和其他老师的讨论学习,对高中信息技术教育《算法与程序设计》有了一些初步的想法、体会、构想。
一、 培养良好的学习兴趣
爱因斯坦说:“兴趣是最好的老师。”所以培养学生的学习兴趣是关键所在。我在VB教学中,首先考虑了学生爱玩的天性,在上第一节课时,我应用VB制作了“QQ登录界面”,以及模仿李咏的“猜价格”游戏,先让学生观看这个小软件,并体会该程序。这时学生就会对这个程序是怎么编写的产生浓厚兴趣。学生有了兴趣,学习就会变得轻松有趣了。这时我再引入算法,以及程序的概念等基础知识。在激发了学生的浓厚兴趣后,再引入课题,让学生带着兴趣上课,可以达到事半功倍的效果,并且对以后学习程序有了积极主动性。
在以后的教学中同样的要注重兴趣的培养,“万事开头难”,但是要保持住原有的兴趣同样也是比较困难的。所以我将一些数学题引入到课堂上,让学生分组讨论,设计算法,编写程序,然后将不同的算法作比较,测试其可行性,如果有错误,可以共同分析错误并修改,如果分组讨论的结果都可行,可以比较不同算法的复杂性,让学生之间多交流,从而可以相互取长补短、扩展学生的思维。例如求解100以内所有能被3整除的数的和,设计算法编写程序。
算法1设计得简单,抓住了被3整除数的特征,只用到了循环语句,直接将K(循环变量)的初值设置为3,下一个K=K+3,这样保证了每一个i都是能够被3整除的;而算法2相对设计得比较复杂,判断了100以内的每一个数是不是能够被3整除,如果能则S=S+K,否则判断下一个数。通过分析这两个不同的算法,可以看出,算法1不需要判断,并且只循环了33次;而算法2循环和判断语句都执行了100次。这样学生在自己设计程序时就可以尽量地展开思路,并且在设计算法上更加严谨,相互讨论自己的算法,可以取长补短,共同进步。
二、讲练结合,难度适宜
在教学过程中配合适当的练习,让学生自己动手做。同样的给学生一些简单的有趣的问题,例如“鸡兔同笼”,共同讨论分析问题、设计算法、编写程序、上机调试等。学生刚开始接触VB程序的时候,学生对于VB程序设计思路模糊,不够清晰,出现的问题相对也较多。这个阶段老师要适当应用简单的示例,例如求解半径为r的圆的面积等问题的求解,可以提示学生设计算法或给部分程序让学生补充完整,并且学生可以扩展求解圆锥体体积、表面积等一些复杂的运算,但都是运用顺序结构解决的问题。
在基础掌握牢靠的基础上再上升一个台阶。先给出比较简单的问题,让学生自己设计算法和编写程序。例如输入三条边长,判断能否构成一个三角形等,有一个判断语句或一个循环语句就可以解决的问题。在以后的教学中难度逐步加大,适当地加入简单的嵌套结构,让学生能够应用计算机解决相对较复杂的问题,例如求解一元二次方程ax2+bx+c=0的根,要先判断a≠0,且b2-4ac≥,如果两个条件都满足则判断b2-4ac=0,如果是则有两相等的实数根,否则是不相等的两个实根;这道题就用到了双层嵌套判断语句,难点在于第二层判断语句是在第一个条件满足的情况下才判断的,不满足就直接得出无实根。在双层嵌套语句使用熟练的基础上,再加大力度,学习使用多层嵌套,以及判断和循环的嵌套等。每一次难度加大都要建立在学生对前面知识掌握牢固的基础上,即给学生提出问题,学生能较快地设计算法并编写出程序,在这个程度上再提高。学生掌握了基础算法设计和编写程序的基本要点后,可以灵活地设计一些问题,让学生多练习、多讨论,从而使学生真正掌握算法设计的精髓。
三、与其他学科相结合
可以说,每一个任务的完成都是信息技术的一次很好的应用,都体现着信息技术教学目标的实现。对课本提出的任务,我们必须有明确的认识,这些任务比较宽泛,但任务不是死的,必须结合具体的问题进行探索,随着教学的深入,引导学生提出与学习过程或实际生活相关的问题,通过解决问题,完成任务。从这个意义上说,“程序设计”的目的绝不仅仅是学会编程,更重要的是通过“程序设计”的学习,培养起高中生必备的信息技术素养。学生对于信息技术这门课不会花费大量的时间,他们的学习重点还是高考科目,但是信息技术学科与其他各学科都有联系,将其他学科的问题应用“VB程序设计”解决,例如数学中的数列计算第n项、前n项求和、复杂代数式的计算等问题,都可以设计算法,应用VB设计相应的程序,解决学习中的实际问题,这样学生可以将自己在数学课或物理课中的问题带到信息技术课上自己设计程序,真正地体验计算机解决问题的特点和优点,达到它为我用的目的。
这个程序设计的关键点是循环语句中循环体的设计,其中an=a1+a2,并及时将a2的赋值给a1,an的值赋给a2,在计算下一个an时保证a1和a2始终是它的前两项。在解这道数学题的基础上,学生可以推广应用到其他数列的计算,修改程序中的一些关键语句就可以达到目的。使学生真正进入到编程的乐趣中。
在信息技术课程中,要从信息技术课程自身建设的目的出发,围绕信息技术课程知识体系展开,使用学生所熟悉的其他学科的应用实例来说明。相当于数学课中的应用题,可以是生活的,也可以是物理或者化学的。就是说要它为我用,不能因其他学科的内容而冲淡了自己课程的主题。这样做的话,不仅我们学科的教学目的没有得到很好的实现,其他学科的老师也是不欢迎的。
《算法与程序设计》这门选修课是培养中学生如何应用计算机设计程序解决问题的,是一本有着创新设计的新教材,符合学生的认知过程,教师要深挖教材,要更好地利用教材,引导启发学生的学习兴趣,感悟算法设计的奇妙,激励学生奋发向上,在求索和创新上大放异彩。endprint
【摘 要】本文是对《算法与程序设计》选修的教学内容进行分析,提出高中《算法与程序设计》教学要注意培养学生的学习兴趣、讲练结合、难度适宜、并结合其他学科的问题应用程序解决,达到它为我用的目的。注意《算法与程序设计》要分阶段进行,不同阶段应选取不同的教学模式、教学方法,并对教学活动的组织形式做了较为详细的论述。文章根据现行教材“任务教学”的模式,提出了“任务教学”中涉及的一些具体问题。
【关键词】算法 VB程序设计 培养良好的学习兴趣 讲练结合 难度适宜 与其学科相结合 教学模式 教学方法
高中信息技术课已经开始向多元化发展,对高中生学习信息技术课不但要掌握基本知识,更要学习如何自己设计制作计算机作品,而其中又以设计程序为难点。现在计算机的多媒体的应用已经很普遍,而且学生对多媒体也容易感兴趣。相对多媒体而言,程序设计就显得枯燥无味。但是程序设计又是计算机的基础,只有程序设计掌握好了,才能更好地开发多媒体。并且对于高中生来说,高中许多课程都与计算机有关联,例如高中数学必修3中的第一章就是《算法初步》,其中有一些问题涉及程序设计的编程思路,对学生的逻辑思维能力提出了较高的要求。高中数学还要求学生能够把一些具体问题转化为数学模型解决。这些思想方法也是程序设计中最重要的思想方法,本质上并没有太大的区别。不同处主要是“VB程序设计”还要求学生具备一定的计算机操作能力。
我们目前使用的教材浙教版,其中《算法与程序设计》是选修1。如何上好这门课,实现信息技术课程的教育目标,在短短的一学期的教学实践中,通过和其他老师的讨论学习,对高中信息技术教育《算法与程序设计》有了一些初步的想法、体会、构想。
一、 培养良好的学习兴趣
爱因斯坦说:“兴趣是最好的老师。”所以培养学生的学习兴趣是关键所在。我在VB教学中,首先考虑了学生爱玩的天性,在上第一节课时,我应用VB制作了“QQ登录界面”,以及模仿李咏的“猜价格”游戏,先让学生观看这个小软件,并体会该程序。这时学生就会对这个程序是怎么编写的产生浓厚兴趣。学生有了兴趣,学习就会变得轻松有趣了。这时我再引入算法,以及程序的概念等基础知识。在激发了学生的浓厚兴趣后,再引入课题,让学生带着兴趣上课,可以达到事半功倍的效果,并且对以后学习程序有了积极主动性。
在以后的教学中同样的要注重兴趣的培养,“万事开头难”,但是要保持住原有的兴趣同样也是比较困难的。所以我将一些数学题引入到课堂上,让学生分组讨论,设计算法,编写程序,然后将不同的算法作比较,测试其可行性,如果有错误,可以共同分析错误并修改,如果分组讨论的结果都可行,可以比较不同算法的复杂性,让学生之间多交流,从而可以相互取长补短、扩展学生的思维。例如求解100以内所有能被3整除的数的和,设计算法编写程序。
算法1设计得简单,抓住了被3整除数的特征,只用到了循环语句,直接将K(循环变量)的初值设置为3,下一个K=K+3,这样保证了每一个i都是能够被3整除的;而算法2相对设计得比较复杂,判断了100以内的每一个数是不是能够被3整除,如果能则S=S+K,否则判断下一个数。通过分析这两个不同的算法,可以看出,算法1不需要判断,并且只循环了33次;而算法2循环和判断语句都执行了100次。这样学生在自己设计程序时就可以尽量地展开思路,并且在设计算法上更加严谨,相互讨论自己的算法,可以取长补短,共同进步。
二、讲练结合,难度适宜
在教学过程中配合适当的练习,让学生自己动手做。同样的给学生一些简单的有趣的问题,例如“鸡兔同笼”,共同讨论分析问题、设计算法、编写程序、上机调试等。学生刚开始接触VB程序的时候,学生对于VB程序设计思路模糊,不够清晰,出现的问题相对也较多。这个阶段老师要适当应用简单的示例,例如求解半径为r的圆的面积等问题的求解,可以提示学生设计算法或给部分程序让学生补充完整,并且学生可以扩展求解圆锥体体积、表面积等一些复杂的运算,但都是运用顺序结构解决的问题。
在基础掌握牢靠的基础上再上升一个台阶。先给出比较简单的问题,让学生自己设计算法和编写程序。例如输入三条边长,判断能否构成一个三角形等,有一个判断语句或一个循环语句就可以解决的问题。在以后的教学中难度逐步加大,适当地加入简单的嵌套结构,让学生能够应用计算机解决相对较复杂的问题,例如求解一元二次方程ax2+bx+c=0的根,要先判断a≠0,且b2-4ac≥,如果两个条件都满足则判断b2-4ac=0,如果是则有两相等的实数根,否则是不相等的两个实根;这道题就用到了双层嵌套判断语句,难点在于第二层判断语句是在第一个条件满足的情况下才判断的,不满足就直接得出无实根。在双层嵌套语句使用熟练的基础上,再加大力度,学习使用多层嵌套,以及判断和循环的嵌套等。每一次难度加大都要建立在学生对前面知识掌握牢固的基础上,即给学生提出问题,学生能较快地设计算法并编写出程序,在这个程度上再提高。学生掌握了基础算法设计和编写程序的基本要点后,可以灵活地设计一些问题,让学生多练习、多讨论,从而使学生真正掌握算法设计的精髓。
三、与其他学科相结合
可以说,每一个任务的完成都是信息技术的一次很好的应用,都体现着信息技术教学目标的实现。对课本提出的任务,我们必须有明确的认识,这些任务比较宽泛,但任务不是死的,必须结合具体的问题进行探索,随着教学的深入,引导学生提出与学习过程或实际生活相关的问题,通过解决问题,完成任务。从这个意义上说,“程序设计”的目的绝不仅仅是学会编程,更重要的是通过“程序设计”的学习,培养起高中生必备的信息技术素养。学生对于信息技术这门课不会花费大量的时间,他们的学习重点还是高考科目,但是信息技术学科与其他各学科都有联系,将其他学科的问题应用“VB程序设计”解决,例如数学中的数列计算第n项、前n项求和、复杂代数式的计算等问题,都可以设计算法,应用VB设计相应的程序,解决学习中的实际问题,这样学生可以将自己在数学课或物理课中的问题带到信息技术课上自己设计程序,真正地体验计算机解决问题的特点和优点,达到它为我用的目的。
这个程序设计的关键点是循环语句中循环体的设计,其中an=a1+a2,并及时将a2的赋值给a1,an的值赋给a2,在计算下一个an时保证a1和a2始终是它的前两项。在解这道数学题的基础上,学生可以推广应用到其他数列的计算,修改程序中的一些关键语句就可以达到目的。使学生真正进入到编程的乐趣中。
在信息技术课程中,要从信息技术课程自身建设的目的出发,围绕信息技术课程知识体系展开,使用学生所熟悉的其他学科的应用实例来说明。相当于数学课中的应用题,可以是生活的,也可以是物理或者化学的。就是说要它为我用,不能因其他学科的内容而冲淡了自己课程的主题。这样做的话,不仅我们学科的教学目的没有得到很好的实现,其他学科的老师也是不欢迎的。
《算法与程序设计》这门选修课是培养中学生如何应用计算机设计程序解决问题的,是一本有着创新设计的新教材,符合学生的认知过程,教师要深挖教材,要更好地利用教材,引导启发学生的学习兴趣,感悟算法设计的奇妙,激励学生奋发向上,在求索和创新上大放异彩。endprint
【摘 要】本文是对《算法与程序设计》选修的教学内容进行分析,提出高中《算法与程序设计》教学要注意培养学生的学习兴趣、讲练结合、难度适宜、并结合其他学科的问题应用程序解决,达到它为我用的目的。注意《算法与程序设计》要分阶段进行,不同阶段应选取不同的教学模式、教学方法,并对教学活动的组织形式做了较为详细的论述。文章根据现行教材“任务教学”的模式,提出了“任务教学”中涉及的一些具体问题。
【关键词】算法 VB程序设计 培养良好的学习兴趣 讲练结合 难度适宜 与其学科相结合 教学模式 教学方法
高中信息技术课已经开始向多元化发展,对高中生学习信息技术课不但要掌握基本知识,更要学习如何自己设计制作计算机作品,而其中又以设计程序为难点。现在计算机的多媒体的应用已经很普遍,而且学生对多媒体也容易感兴趣。相对多媒体而言,程序设计就显得枯燥无味。但是程序设计又是计算机的基础,只有程序设计掌握好了,才能更好地开发多媒体。并且对于高中生来说,高中许多课程都与计算机有关联,例如高中数学必修3中的第一章就是《算法初步》,其中有一些问题涉及程序设计的编程思路,对学生的逻辑思维能力提出了较高的要求。高中数学还要求学生能够把一些具体问题转化为数学模型解决。这些思想方法也是程序设计中最重要的思想方法,本质上并没有太大的区别。不同处主要是“VB程序设计”还要求学生具备一定的计算机操作能力。
我们目前使用的教材浙教版,其中《算法与程序设计》是选修1。如何上好这门课,实现信息技术课程的教育目标,在短短的一学期的教学实践中,通过和其他老师的讨论学习,对高中信息技术教育《算法与程序设计》有了一些初步的想法、体会、构想。
一、 培养良好的学习兴趣
爱因斯坦说:“兴趣是最好的老师。”所以培养学生的学习兴趣是关键所在。我在VB教学中,首先考虑了学生爱玩的天性,在上第一节课时,我应用VB制作了“QQ登录界面”,以及模仿李咏的“猜价格”游戏,先让学生观看这个小软件,并体会该程序。这时学生就会对这个程序是怎么编写的产生浓厚兴趣。学生有了兴趣,学习就会变得轻松有趣了。这时我再引入算法,以及程序的概念等基础知识。在激发了学生的浓厚兴趣后,再引入课题,让学生带着兴趣上课,可以达到事半功倍的效果,并且对以后学习程序有了积极主动性。
在以后的教学中同样的要注重兴趣的培养,“万事开头难”,但是要保持住原有的兴趣同样也是比较困难的。所以我将一些数学题引入到课堂上,让学生分组讨论,设计算法,编写程序,然后将不同的算法作比较,测试其可行性,如果有错误,可以共同分析错误并修改,如果分组讨论的结果都可行,可以比较不同算法的复杂性,让学生之间多交流,从而可以相互取长补短、扩展学生的思维。例如求解100以内所有能被3整除的数的和,设计算法编写程序。
算法1设计得简单,抓住了被3整除数的特征,只用到了循环语句,直接将K(循环变量)的初值设置为3,下一个K=K+3,这样保证了每一个i都是能够被3整除的;而算法2相对设计得比较复杂,判断了100以内的每一个数是不是能够被3整除,如果能则S=S+K,否则判断下一个数。通过分析这两个不同的算法,可以看出,算法1不需要判断,并且只循环了33次;而算法2循环和判断语句都执行了100次。这样学生在自己设计程序时就可以尽量地展开思路,并且在设计算法上更加严谨,相互讨论自己的算法,可以取长补短,共同进步。
二、讲练结合,难度适宜
在教学过程中配合适当的练习,让学生自己动手做。同样的给学生一些简单的有趣的问题,例如“鸡兔同笼”,共同讨论分析问题、设计算法、编写程序、上机调试等。学生刚开始接触VB程序的时候,学生对于VB程序设计思路模糊,不够清晰,出现的问题相对也较多。这个阶段老师要适当应用简单的示例,例如求解半径为r的圆的面积等问题的求解,可以提示学生设计算法或给部分程序让学生补充完整,并且学生可以扩展求解圆锥体体积、表面积等一些复杂的运算,但都是运用顺序结构解决的问题。
在基础掌握牢靠的基础上再上升一个台阶。先给出比较简单的问题,让学生自己设计算法和编写程序。例如输入三条边长,判断能否构成一个三角形等,有一个判断语句或一个循环语句就可以解决的问题。在以后的教学中难度逐步加大,适当地加入简单的嵌套结构,让学生能够应用计算机解决相对较复杂的问题,例如求解一元二次方程ax2+bx+c=0的根,要先判断a≠0,且b2-4ac≥,如果两个条件都满足则判断b2-4ac=0,如果是则有两相等的实数根,否则是不相等的两个实根;这道题就用到了双层嵌套判断语句,难点在于第二层判断语句是在第一个条件满足的情况下才判断的,不满足就直接得出无实根。在双层嵌套语句使用熟练的基础上,再加大力度,学习使用多层嵌套,以及判断和循环的嵌套等。每一次难度加大都要建立在学生对前面知识掌握牢固的基础上,即给学生提出问题,学生能较快地设计算法并编写出程序,在这个程度上再提高。学生掌握了基础算法设计和编写程序的基本要点后,可以灵活地设计一些问题,让学生多练习、多讨论,从而使学生真正掌握算法设计的精髓。
三、与其他学科相结合
可以说,每一个任务的完成都是信息技术的一次很好的应用,都体现着信息技术教学目标的实现。对课本提出的任务,我们必须有明确的认识,这些任务比较宽泛,但任务不是死的,必须结合具体的问题进行探索,随着教学的深入,引导学生提出与学习过程或实际生活相关的问题,通过解决问题,完成任务。从这个意义上说,“程序设计”的目的绝不仅仅是学会编程,更重要的是通过“程序设计”的学习,培养起高中生必备的信息技术素养。学生对于信息技术这门课不会花费大量的时间,他们的学习重点还是高考科目,但是信息技术学科与其他各学科都有联系,将其他学科的问题应用“VB程序设计”解决,例如数学中的数列计算第n项、前n项求和、复杂代数式的计算等问题,都可以设计算法,应用VB设计相应的程序,解决学习中的实际问题,这样学生可以将自己在数学课或物理课中的问题带到信息技术课上自己设计程序,真正地体验计算机解决问题的特点和优点,达到它为我用的目的。
这个程序设计的关键点是循环语句中循环体的设计,其中an=a1+a2,并及时将a2的赋值给a1,an的值赋给a2,在计算下一个an时保证a1和a2始终是它的前两项。在解这道数学题的基础上,学生可以推广应用到其他数列的计算,修改程序中的一些关键语句就可以达到目的。使学生真正进入到编程的乐趣中。
在信息技术课程中,要从信息技术课程自身建设的目的出发,围绕信息技术课程知识体系展开,使用学生所熟悉的其他学科的应用实例来说明。相当于数学课中的应用题,可以是生活的,也可以是物理或者化学的。就是说要它为我用,不能因其他学科的内容而冲淡了自己课程的主题。这样做的话,不仅我们学科的教学目的没有得到很好的实现,其他学科的老师也是不欢迎的。
算法与程序设计教学之我见 篇7
教学实践中遇到的问题
1.将算法与程序设计混为一谈
学习一种程序设计语言, 就是学习这种语言的规则, 即学习语法、语义、程序及其他一些规定, 这里涉及的是严格的定义、严格的书写方法。而学习算法是学习设计过程, 内容主要是描述功能、书写方案、证明正确性、试算和修正, 设计是一项具有创造性的工作。算法与程序设计两者有着根本性的区别。
2.学生差异问题
就算法与程序设计而言, 学生处在同一起跑线上, 以前都没有学过, 似乎不存在学生基础差异问题。但事实上还有很多因素会造成差异, 比如学生接受知识的能力、努力程度、自信心等, 特别是个人兴趣对学习这门课程起着很关键的作用。
3.课时安排紧张
算法与程序设计中包括两大块内容, 一是算法部分, 一是VB程序设计基础部分 (当然本人并不是要将学习算法与程序设计区分开来) 。这两大块内容每一块都至少要学一学期, 但现在却把这两块内容压缩在32课时内, 教学难度可想而知。
教学过程中应注意的问题
1.要处理好算法与程序设计教学的关系
程序是计算机的血液, 没有程序的计算机就像一个空的珠宝盒。然而, 在教学实践中教师很容易将程序设计和算法混为一谈。因为算法是程序设计的基础, 算法不正确即便程序能运行也得不到正确的解。而程序设计重在设计, 不是重在编写程序。另一方面, 进行算法的教学又不能完全脱离计算机程序设计。这是因为在算法设计出来时要通过编程并且运行程序进行验证, 这就要借助于程序语言来实现算法。当然, 编写程序代码时还要理解一些在程序设计语言中的语法结构。例如要表示两个数a和b相乘, 如果用VB语言的话, 中间的*号则不能省略。又如语句“s=s+I”中的“=”表示的不是相等, 而是赋值过程。
因此, 学生学习程序设计一般应选用一种语言作为工具, 学程序设计就必须学程序语言, 学习时两者是不可能截然分开的。我们应当把程序语言作为一种载体、一种学习程序设计的工具, 把教学重点落在算法的思想方法上, 以培养学生的逻辑思维能力和创新精神作为教学目标。
2.要注重教学策略
(1) 创设鲜明问题情境的策略
可能对部分学生来说, 编写程序很枯燥。单纯的程序编写的确有些枯燥, 特别是编那些纯数学的循环、排序、递归。但如果让枯燥的程序算法转变为贴近生活、有趣味性的实际问题, 则效果就大不一样。因为, 鲜明的问题情境有利于唤起学生已有的知识经验, 激发学生充分调动和整合自己的认知经验, 寻求多样化的解题方法。
比如在讲VB程序基础时, 可以从学生感兴趣的Q Q系统登录框着手, 让学生分小组完成QQ登录界面, 在输入QQ号码、密码时判断是否能登录成功 (输入密码有三次机会, 超过三次则系统自动退出) , 这种情境极易引起学生的求知欲, 让其在想弄明白如何制作这种对话框的驱动下顺利完成VB程序设计基础知识的教学。当然, 设计时也可以组织学生分小组讨论算法的实现过程。
(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) 重视知识的最近发展区策略
最近发展区策略是指一个例题或者一个案例不能涉及过多的新概念, 例题或案例的呈现需要有一个循序渐进的过程。在算法与程序设计教学中, 最近发展区策略应用得好, 可以起到事半功倍的效果。
比如在介绍分支语句时, 先介绍if语句的几种格式;然后, 以根据x的值判断y的值为例, 从最简单的行if语句开始 (如当x>0时y=1) 讲解分支语句结构;接着, 再举相似的例题引入if-else语句 (当x>0时, y=1;x<0时, y=-1) ;最后, 引入if-else嵌套模式 (当x>0时, y=1;x=0时, y=0;x<0时, y=-1) , 层层深入, 学生易于接受。
又如在介绍双重循环结构语句时 (由于双重循环结构语句是后面具体算法程序实现的基础, 要求学生必须掌握) , 设计了一个打印图形的五步曲:第一步, 打印一行5个*号的简单图形, 教师主导, 详细讲解以致学生掌握;第二步, 打印直角三角形, 教师修改前一个程序, 启发学生, 让学生尝试写出程序运行的结果;第三步, 打印倒直角三角形, 继续启发学生, 让学生修改程序;第四步, 打印等腰三角形, 继续启发学生, 让学生修改程序;第五步, 打印菱形, 以学生为主导修改程序。五个图形环环相扣, 程序代码短小精悍, 所有代码都套用同一种双重循环结构语句, 修改起来较为方便。
掌握典型算法的应用
程序设计的算法有很多, 但我觉得算法并非多多益善。我们没必要也没时间讲述所有的算法, 在讲述中应选择具有普遍实用性的算法, 强调通法, 淡化特殊方法。如果在教学中过于追求算法的数量, 花太多的时间去挖掘各种算法, 肯定会影响其他教学目标的实现。实践证明, 在进行算法教学的过程中, 应尽可能选取最简单、最典型的算法模型作为载体。根据新课标要求, 高中信息技术要求掌握五种算法, 即枚举算法、解析算法、排序算法、查找算法和递归算法。我认为, 关键是要理解这些算法的基本思想, 能熟练地将这些算法应用到实际程序设计中, 并能举一反三、触类旁通。
算法与程序设计教学 篇8
●简单实例引入, 培养良好编程习惯
刚接触编程, 学生都有一种畏惧的心理, 觉得编程是很难的事, 需要记很多的代码、语句。为此, 在编程的第一课《VB可视化开发环境》中, 笔者用一个简单实例“小时钟”引入, 让学生先观察和实践, 然后加以归纳总结。
演示《小时钟》程序。
“小时钟”的演示, 唤醒了学生的参与意识, 激发了学生的学习兴趣和创作欲望, 学生都跃跃欲试, 自然而然地进入了编程三步曲的制作方法介绍。
编程三步曲。
1. 设计界面
启动VB, 打开默认的窗体, 为了显示时间, 在窗体中摆放一个标签Label1, 办法是双击工具栏中的“Interval”。为了控制时间的显示, 还需要在窗体中摆放一个叫做“时钟”的控件 (如图1) 。
2. 修改属性
分别修改窗体、标签、时钟的属性如下表。
其中最重要的一项是时钟属性的“Interval”, 它的中文含义是“时间间隔”, 最初默认间隔时间是“0”, 如果填入“100”, 时间间隔就是1/10秒;填入“1000”, 时间间隔就是一秒钟;填写入“10000”时间间隔就是10秒, 以此类推。这里, 我们需要每隔1秒钟显示一次时间, 所以我们要填入“1000”。
3. 编写程序
在窗体上双击时钟图标进入编写代码窗口 (如图2) 。
在Private Sub Timer1_Timer () 与End Sub之间输入下面一句话:
程序就算编写完了, 就一句话, 让标签Label1的标题 (Caption) 等于time, time是一个函数, 它的值是当前计算机中自带时钟的时间。
在教师的指引下, 学生很快就制作出自己的小时钟, 体验到了学习的成功感, 成功的喜悦令他们对学习VB编程不再畏惧。因此, 教师抓紧这一契机, 及时导入“小时钟”程序中的对象、属性、方法、事件的讲解等, 并再次强调VB的编程三步曲。这样, 学生从编写第一个程序开始, 就严格遵循VB编程三步曲, 养成良好的编程习惯。
●形象化教学策略, 提高教学效益
结构化程序设计思想中, 所有的程序都可以由顺序、选择和循环这三种基本结构组成。其中, 尤以循环结构内容最为难以理解和掌握, 而它又恰恰是最重要的一种结构形式。在学习循环结构时, 笔者采用形象化教学策略, 运用“小汽车的前后运动”这一例子, 讲解如何利用VB的循环结构FOR-NEXT语句来实现小汽车的前后运动。
首先, 演示程序《奔跑的小汽车》。
然后, 提问学生“汽车是怎样实现前进与后退的?”
分析:小汽车是一幅图, 它在窗体的定位是由两个属性决定:TOP、LEFT (如图3) 。
小汽车的前进与后退是改变它的LEFT属性, 那么运用以前的知识 (顺序结构和分支结构) 能否实现?
演示:插入小汽车图片, 通过改变位置, 察看LEFT属性的变化。修改控件的属性有两种方法, 第一种直接修改, 其值不会变化 (不行) ;第二种通过程序修改, CAR.LEFT=K。
问题:怎样才能让K的值不断地增加?
要求:添加一命令按钮, 编写事件代码。
困惑:这样, 每按一次这个命令按钮, K的值只增加1, 要使小汽车前进, 要不断地按… …
释疑:对于这种重复相同的操作, 我们可以利用循环结构的程序来实现。
讲解:以汽车前进为例子, 剖析循环执行的流程图 (如图4) ;讲解实现循环结构的FOR-NEXT语句。
实践:打开《小汽车》程序, 分析“前进”按钮的代码, 初值、终值和步长。
探究:小汽车如何加速、减速?
拓展:尝试给《小汽车》添加“后退”按钮, 并编写代码。
提高:如何让小汽车沿45度爬上斜坡?
本来枯燥乏味的循环结构FOR-NEXT语句, 在小汽车的来回“奔跑”中, 变得生动有趣、简单明了。
教学中创设一个好的情境, 使学生融入其中, 有利于激发学生的学习主动性, 加深对知识的理解和记忆。
●巧妙组织, 编制程序解决实际问题
算法与程序设计最终目的是为了解决实际问题。本模块的学习目的是使学生在原有基础上进一步体验算法思想, 了解算法和程序设计在解决问题过程中的地位和作用;能从简单问题出发, 设计解决问题的算法;并能初步使用一种程序设计语言编制程序实现算法解决问题。笔者精选了平时生活和学习中经常用到的电子计时器进行教学。要求学生在一堂课内完成电子计时器的制作。在短短的40分钟内, 不但要让学生理解小时钟程序的制作算法思想, 还要让学生掌握其程序的代码编写, 的确难度不小。一般情况下, 教师的讲解都是按正确的思路去执行的, 而且在学生的习惯性思维中, 通常教师是不会出错的。这次, 在课堂上, 笔者做出大胆尝试, 故意出错, 引起学生的注意, 然后再加以分析, 讲解出错的原因, 寻找解决的办法, 并引入新的知识难点——全局变量。
解题步骤:
1. 任务分析:编写模拟“电子计时器”的程序。
功能描述: (1) 重置时间, 就是把时间变为0, 电子计时器暂时停止计时; (2) 开始计时, 就是电子计时器开始工作计时; (3) 暂停计时, 就是电子计时器暂时停止计时, 但下次计时的时候, 要从先前停的时间继续计时。
2. 算法分析 (如图5) 。
说明:等待时间到达, 计时器控件自动完成“时间的增加”。
3. VB编程三步曲。
(1) 设计界面, 修改对象属性。
(1) 添加一个标签, 修改Caption属性=0, 修改名称:Min, 修改字体、字号属性; (2) 添加两个标签, 修改Caption属性=:, 修改Caption属性=0, 修改名称:Sec; (3) 添加一个计时器控件, 修改Interval=1000 (表示时间间隔是一秒钟) 。
(2) 编写代码。
编写计时器事件。分析:定义变量T代表时间, 单位:秒。每过1秒钟, 电子计时器显示就要加1, 而计时器控件每秒执行一次, 因此, 可以使用累加:T=T+1;由于T是秒数, 当T>60时, 必须转换成分钟数。变量M代表分钟数, S代表秒数。
尝试:双击计时器控件, 并输入代码。
每执行一次累加1
T整除60得出分钟数
T取模60得出秒数
在标签1输出变量M的值
在标签3输出变量S的值
(3) 调试运行。
失败:电子计时器只显示1, 就停下来, 不动了, 这是什么原因?
生: (一片哗然) 是不是有病毒?… …
停顿片刻… …
调试:尝试增加Print t; 发现变量T的值总是1。
对比:这跟我们以前利用循环进行累加求和有所区别 (如图6, 演示《循环变量的变化》) 。
发现:变量的定义, 放在循环语句的外面, 循环的执行不会把变量T初始化。
分析:这是因为变量T是在计时器控件中定义的, 计时器控件每执行一次都把变量T初始化 (即:T=0) 。
(4) 解决办法:讲解全局变量 (Power Point) 。全局变量是指在程序开头的说明部分 (“通用——声明”) 定义和说明的量, 其作用域是整个窗体程序。把变量T定义为全局变量 (“通用——声明”事件:Dim t As Integer) , 这样就不会被初始化。它只是在程序执行开始时初始化一次, 不受其他控件影响。
实践证明, 笔者的精心组织、巧妙安排果然收到了良好的效果, 学生对于全局变量这一知识难点完全掌握, 并能理解、熟练运用。
●在动手中学习, 实施分层教学
在教学中要让学生多分析、多操作、多体验, 在做中学、学中做。教师应选取适当的问题, 放手让学生以合作的方式探究解决, 使他们亲历从需求分析到算法设计, 再到编程实现的完整过程。
分层教学:学生水平参差不齐的状况, 好学生吃不饱, 教师的过多讲解对于他们来说是一种浪费, 不利于他们进一步发展;差生认为进度太快。为此, 有需要的学生通过红蜘蛛教学软件“举手”, 教师对这些学生进行个别辅导。这样, 已经掌握的学生就可以不受影响, 自主探究。
分层任务:让学生根据自己的能力选择是否完成选做题, 有能力的学生就可以在完成必做题的基础上, 继续探究选做题。
任务的设计, 遵循让学生跳一跳就能摸得到目标的原则, 水平差的学生经过自己的努力完成必做题后的满足感不亚于好学生做完必做题后再攻克选做题后的成就感。在教学过程中, 随着一个个任务的完成, 知识点的掌握, 目标的实现, 学生能够逐渐在成功中找到自信, 体会到完成任务的快乐, 极大地激发探索知识的动力。
算法与程序设计教学 篇9
关键词:算法,程序设计,教学,困惑,对策
由于历史原因我校在中考录取中处于劣势、大多来自本镇三间初中未能升入市区及周边优质学校的学生。按照区教研室的要求这两届开设了信息技术 (选修1) 《算法与程序设计》。但从上一届开设的情况来看学生的积极性不高, 教学效果不理想, 觉得很困惑。经过反思, 我认为学生基础固然重要, 但教师的教学方式方法一定也是出了问题。过去我们基本按照教材按部就班地给学生介绍诸如算法、数据类型、常用内部函数、各种运算量等等一系列的, 在程序设计中比较抽象难懂的概念。事实证明, 像我们镇级高中生在没有接触过计算机编程语言的前提下, 要完全理解这些概念是比较困难的。教材本身没问题, 它是为全省的学生编写的, 具有普遍的指导意义。关键是我们自身没有根据学生的基础找到一条行之有效的教学路径。反思后, 我进行了一些积极有效的探索。
1. 打破传统教材顺序, 在知识体系上做到“形散而神不散”, 感性为先
众所周知, 《算法与程序设计》教材是按照“先理论后实践, 先语句再程序”理念编写的。这就容易导致在上课时先讲基础理论部分, 比如算法的概念、流程图的画法, 再讲具体的算法程序。而我们的学生数学基础薄弱, 恰恰算法与数学成正相关的关系, 学生学习算法感到茫然, 不知道学这些理论有什么用。因此, 我尝试着做些改变, 从程序设计教学一开始就应该让学生接触功能简单的程序, 以建立起对程序设计的整体概念, 体会各种语句的功能, 理解计算机解决问题的一般过程。
例如课本的第一节课的内容是一个从生产方案选择问题开始的, 而这个问题恰恰的是我们这里的学生最畏惧的数学问题, 他们一看就烦, 我讲的辛苦, 学生听的一头雾水, 课堂沉闷。这次我教学的第一节课时是从教材的第二章的第二节入手的, 先介绍vb程序设计语言的开发环境, 让学生动手学会运行、暂停和停止运行vb程序。
我有意识的选择了下列数学基础要求不高 (回避课本提供的难度较大的数学问题) 的程序供学生进行调试。
(1) 求半径为R的圆的面积的VB程序
(2) 求解鸡兔同笼问题。一个笼子有鸡和兔, 现在只知道里面一共有35个头, 94只脚, 鸡和兔各有多少只?
学生在了解、熟悉了vb程序设计语言的开发环境以后, 跃跃欲试, 课堂气氛高涨, 然后将准备好的以上两个VB编程代码发给全体学生, 供他们调试使用。让学生根据自己的感知去理解程序, 虽然学生最终形成的认识, 以及得出的结论仍是肤浅的、模糊不清的、认知不全的。但由于有了真实的程序设计环境以及借助了具体的实例, 学生就能以一种轻松的方式, 比较容易地接受了程序设计的启蒙教育, 对学习程序设计也萌生了一种最初的亲切感, 有了一个很好的感性认识, 为以后的程序设计教学工作开展奠定了良好的基础。
2. 课堂设问深入浅出, 实现快乐编程
爱因斯坦说过:“提出一个问题比解决一个问题更为重要。”这一点, 对于教师的课堂教学而言, 更是如此。课堂提问设计的成功与否, 对于教学的成败, 也往往有惊人的联动效应。在教学实践中, 我们常有这样的体会:同一问题, 这样问, 学生满脸疑团, 那样问, 就会豁然开朗;这样问, 可能“一潭死水, 波澜不惊”, 而那样问, 则会“一石激起千层浪”。课堂设问要深入浅出, 课堂教学方能浅入深出。因此, 对一些学生费解的问题, 老师要深入思考, 以比较浅易的方式呈现给学生。
例如:引进第三个变量, 交换变量A、B的值。
学生对C=A:A=B:B=C这三个赋值语句很费解, 我就准备了一台录音机, 3盒录音带, 一盒是流行歌曲 (相当于A) , 一盒是民族歌曲 (相当于B) , 问现在要将这两盒录音带中的歌曲交换过来, 如何做?学生很快就反映过来, 要我提供第三盒录带 (最好是空的, 相当于C) 。这样学生对变量C就有了一个直观的印象, 它是一个中间存储的变量。上面是先将A保存到C, 反之;C=B:B=A:A=C能达到交换的目的吗?学生很自然的想到只不过是先将B保存到C中而已。通过这样的比喻学生很轻松地理解了引进第三个变量, 交换变量A、B的值。
又如:在程序的循坏教学中我是通过下列的故事引入的:
相传古代印度国王要奖赏他的宰相达依尔 (据说是国际象棋的发明者) 时, 问他需要什么?他说:只要在国际象棋的第一格放一粒麦子, 第二格放二粒, 第三格放四粒直至放满全部格子 (国际象棋是8*8=64格) 。我就心满意足了, 国王觉得好办, 叫人扛来了一袋麦子, 用完了, 接着又扛来了一袋, 很快又用完了, ……国王很纳闷, 到底需共多少麦子才够用呢?
我告诉学生这个问题如果用VB编写一个简单的程序就很快可以帮国王解决这个问题, 学生产生了浓厚的兴趣, 急于找到答案, 我将准备好的程序发给学生, 让计算机求得结果。
我告诉学生这个结果为1.84467440737096×1019粒麦子, 不要说是当年整个印度麦子的产量, 就是全世界麦子的产量都不够。学生觉得计算机的威力好大呀, 这么复杂的问题几行VB程序就解决了, 真是了不起。学生气氛高涨, 接着我就顺理成章地进行循环结构应讲的教学内容了。
类似课本陈婷植树, 对折纸张求珠穆朗玛峰高度的问题都是学生很感兴趣的问题, 这些问题既能够引起学生探究的兴趣, 有探究的欲望, 又能够解决这一节课的重点和难点问题。课堂教学浅入深出使学生觉得浅易而不是晦涩艰深, 老师能轻轻松松地完成教学任务, 学生在不知不觉中学到知识, 增长能力, 提高素养, 获得有益的启示。
以生为本, 实施分层练习、分层辅导。
由于生源、基础和学习需求等多种层次都有较大的差异, 因此, 实施分层教学对提高课堂教学效果显得尤为重要。
(1) 对学生进行分组
按照学生的基础“动态”地分为A、B、C三个学习小组, 其中A组为最基础的小组, B组为中等成绩组, C组为成绩优秀组。为保护学生的自尊心, 在分组的过程中我避开使用“差生”、“后进生”这样的词语, 在分组时称A组为基础组, B组为提高组, C组为优秀组, 同时我还借鉴了其他学科的一种说法, 就是A组为铜牌组, B组为银牌组, C组为金牌组。而且我还对学生说, 我们的分组只是暂时的, 是一种“动态”的分组, 所谓“动态”即我会根据学生对上机练习完成的情况对学生进行重新调整分组, 并且学生在学习中途可以按照自己的情况参加高一级小组的学习。尽管目前在A组, 下次进步了, 可以进入B组或C组, 如果不努力, 退步了, C组也可能进入A组, 这样学生即使分在了A组也不会有自卑感, 而且在实际操作中, 也还有被分在B组或C组的同学主动要求去A组, 以加强基础知识的学习和补习。
(2) 分层备课
对学生分组之后, 教师在备课时就应该根据学生的实际情况进行分层备课。在备课的过程中, 对A、B、C组的同学分别提出不同的要求, 以求因材施教。只有这样, 才能在实际的教学中做到有的放矢, 不至于使分层教学流于形式。哪些内容对各个组是必须掌握的, 哪些内容在有些组只是作了解的, 对不同小组在练习上有些什么不同的要求等, 这些问题都必须在备课时充分考虑, 做到心中有数。
例如:编写程序求下列各式的值
(1) 1+2+3+……+100A组必做
(2) 1+ (1+2) + (1+2+3) +……+ (1+2+3+……+100) B组必做A组选做
(3) 1/1+1/ (1+2) +1/ (1+2+3) +……+1/ (1+2+3+……+100) C组必做B组选做
又如:编写程序打印以下图形:
(3) 分类辅导
在教学中对学生的学习进行辅导是使学生巩固和掌握知识的一个重要环节。在课堂上我对学生实行分层授课后, 在课堂辅导方面我采取了由老师直接辅导来自C组的8名左右的优秀学生, 然后由这8名左右的优秀学生组成学习兴趣小组, 重点辅导来自A、B各组的6名左右成绩比较好的学生组成学习小组, 再由这些同学对本组的其他同学进行相互辅导, 即通过对口扶贫的方式进行辅导, 最终收到了较好的效果。当然, 要做好这项工作, 首先要做好学生的工作, 得到学生的支持和配合。我对学生说, 自己能做题还不表示你真正弄懂了一道题, 只有你能够讲解给别的同学, 让人家能听得懂, 做得会, 则说明你自己才真正理解和掌握了本题的内容。
经过一段时间的上机学习各个组进步较大的同学可以上升一个小组, 而退步的同学则下降到下一个小组, 从而在同一个班内形成了一种百舸争流、蓬勃向上、你追我赶的竞争局面, 扭转了“吃不饱”和“吃不了”的现象, 增强了学生的自信心。
3. 结束语
总之, 课堂教学是一种讲究效益的活动, 它要求教师要高质量地传递各种信息, 而非单纯玩技巧的行为, 课堂教学的有效性, 要通过课堂教学使学生获得发展。发展就其内涵而言, 是知识、技能, 过程、方法与情感、态度、价值观三者的协调发展。通俗地说, 通过课堂教学活动, 使学生在学业上有收获, 有提高, 有进步。新课标更加注重了学生自主探究、实践、交流等方面。但随着课程教学的不断深入, 对于基础薄弱的学校教学效率却不高是普遍存在的问题。因而, 课堂教学的有效性逐渐成了我们这类学校关注的焦点, 成为我们基层教师不懈追求的目标。
参考文献
[1]信息技术 (选修1) 算法与程序设计广东教育出版社
[2]李辉王巍计算机程序设计学习的方法探索李辉王巍黑龙江省教育学院
算法与程序设计教学 篇10
一些著名的计算机科学家在有关计算机科学教育的论述中认为, 计算机科学是一种创造性思维活动, 其教育必须面向设计。算法设计与分析正是一门面向设计, 且处于计算机学科核心地位的教育课程。但该门课程的主要特点是抽象和形式化, 既有严格的理论证明, 又具有很强的构造性和应用性, 导致学生对所学内容体系不易把握。有关“数据结构与算法”课程的研究文章[3,4,5,6,7]较多, 但内容主要讨论数据结构的居多。以“算法设计与分析”这门课程为主要研究对象, 结合教学实践经验, 就算法设计与分析在本科教学中主要教学环节进行探讨。
1 课程目标及教学内容
计算机算法设计与分析是整个计算机学科体系的一门核心课程, 也是计算机相关专业的专业基础课。该门课程通过对常用的、有代表性的算法的研究, 理解并掌握算法设计的基本技术, 学会对算法的时间和空间的复杂性进行分析, 掌握提高算法效率的方法和途径。学习该课程要求学生有较好的离散数学和数据结构基础, 还应至少掌握一门程序设计语言 (C、C++、Java等) , 这门课程既包含抽象的理论, 又强调算法的实践, 理论兼顾应用的特点, 使得该课程一直以来被学生认为是最难学的课程之一。为了帮助学生渡过“难”关, 教师选择好教学内容至关重要。总的原则是:内容难度适中, 结合实际问题和相关课程的知识讲解算法、设计方法及算法分析方法, 使学生既能理解, 又能拓展创新。
对于本科生而言, 首先切忌讲授太深奥的理论 (如:计算复杂性理论) , 使学生失去学习的信心与兴趣。学习内容主要集中在经典算法设计的内容, 可以包括递归与分治策略、动态规划、贪心算法、回溯法、分支限界法。这些内容对于本科生而言, 内容量和难度都适中。其次, 需处理好与数据结构课程重复内容的讲授。该门课程是数据结构课程的后续课程, 与其又有密切的关系, 一些经典算法是数据结构教材中的内容, 算法课程处理这些内容时角度要不同, 更多的应该分析强调设计方法, 在这些学生熟悉的算法中剖析算法设计技术, 强调算法设计的创造性过程, 而不是拘泥于具体算法的详细讨论, 正如常言道“予之以鱼, 不如授之以渔”。学习了该课程, 了解了各种算法, 在遇到问题时能灵活地应用所掌握的方法技巧, 当没有现成可用的算法时, 能够指导创造出问题的求解方法。此外, 教师应不局限于教材内容, 在此基础上可以对教学内容作适当扩展, 如增加分布式计算、并行算法、现代启发式算法等的介绍。对于研究生而言, 考虑到生源来自不同的学校, 有些学生在本科阶段没有学习过算法设计与分析的课程, 因此, 安排一定的课时重新讲授本科阶段的内容, 在此基础上增加随机化算法、线性规划和网络流、NP完全性理论和近似算法、量子算法等内容。
2 教学模式
教学手段、课程体系和教学内容等方面的改革无疑可以在一定程度上改善教学质量与效果。但是, 如果希望教学质量与效果有实质性的提高, 则必须转变教学模式。只有切实改革灌输式传统教学模式, 引入新型教学模式, 才能有效地改进和提高教学质量与效果。这尤其体现在该门课程的教学实践中。
2.1 建构主义教学模式与传统教学模式
建构主义[8,9]学习理论主要起源于后现代主义关于科学的观点、前苏联心理学家维果斯基 (Lev Vogotsgy) 的社会心理理论、瑞士学者皮亚杰 (Jean.Piaget) 的认知发展理论、以及美国心理学家凯利 (Kelly) 的个人建构理论。建构主义教学模式提倡把问题还给学生, 让他们经历完整的知识建构过程, 在解决问题的过程中获得知识, 是强调以学生为中心, 让学生自主建构知识的教育思想和教学观念。建构主义认为, 学习是在一定的情境下, 在教师和学习伙伴的帮助下, 利用学习资料, 通过自主建构的方式获得, 而不是通过教师的传授获得。建构主义理论的内容很丰富, 但其核心可以概括为:以学生为中心, 强调学生对知识的主动探索、主动发现和对所学知识意义的主动建构。典型的建构主义教学模式为:教师创建一定的学习情境, 学生在情境中自主探索学习, 并通过与学习伙伴的交流协作, 加上教师的适当引导, 实现知识的获取与建构。情境、协作、会话和自主建构是建构主义教学模式的四大要素。
建构主义教学模式能够激发学生学习的主动性、积极性与创造性, 有利于开发学生智力, 培养学生的创新思维能力。但需指出的是, 独立探索、自主学习需要一定的知识储备为基础, 而部分学生受到已有知识的限制, 其过程势必受到影响, 尤其是对于学习基础差的学生, 可能因为难度过大就失去学习的信心。另外, 由于我国的教学方式长期以来主要以教师为中心, 学生是被动的知识的接受者, 如果生搬硬套建构主义教学模式不一定能收到好的教学效果。与此相对应, 传统教学模式的典型特征为灌输、教诲式, 它强调以教师为中心, 学习者作为接受者的角色, 教学过程侧重于知识的传授与传递。虽然以教师为中心的传统教学模式忽视了学习者对知识的主动建构, 忽视了发展学习者的高阶思维能力, 但传统教学模式有利于基础知识和基本技能的系统传授, 并能最大限度地发挥教师的主控作用, 依然有其存在价值。
2.2 算法设计与分析教学模式
从一定意义上来看, 传统教学模式与建构主义教学模式处于一个系统的两个极端。在算法设计与分析具体的教学活动中, 教师应该将建构主义的教学理念渗透进去, 结合传统教学模式的优点, 灵活地应用建构主义的思想与教学方法。
算法设计与分析这门课程的目标是培养学生设计与分析算法的能力, 教学过程中应该重视教与学两环节, 根据不同阶段的教学内容采用不同的教学模式。“教”的内容重点在于帮助学生理解算法设计的基本策略与分析的基本思路, 通过具体实例解析一些经典算法, 该阶段主要宜采用传统教学模式, 发挥教师引导、启发、监控教学过程的主导作用。当学生了解算法设计及分析的基本方法后, 应把求知的钥匙交给学生, 转化为以学生为中心的“学”的过程, 建构的过程。教师创建一定的学习情境, 学生自主探索学习, 在选择或设计一个算法时, 解决这个算法是否有效?是否还有更好的算法?用什么方法和技巧获得更好的算法, 从而使得所设计的算法时空复杂性最优。充分调动学生学习的主动性、积极性与创造性。将建构主义教学模式与传统教学模式二者结合起来, 使其优势互补, 获得最佳的教学效果。
3 教学实践
对于迅速发展起来的计算机科学技术和相关专业而言, 课程实践是教学过程的重要环节, 是理论教学不可替代的。“算法设计与分析”课程的教学传统教学模式阶段解决理论分析、理解方面的内容, 课程实践阶段则宜采用建构主义教学模式。凭实际教学经验, 笔者认为32学时的课堂教学配设12学时的上机实验或54学时的课堂教学配设18学时的上机实验比较适中。
实践内容的设置可根据学生的接收能力、理解能力、编程能力以及创新能力的不同, 设计不同层次的要求。基本内容可要求学生将教材中的某些经典问题, 采用不同算法实现, 输入大量数据, 测试不同情况下程序运行情况, 总结结论, 从实验结果证明理论分析的正确性。如0~1背包问题:1) 选用递归、动态规划、贪心算法、回溯法等算法实现, 与理论结果进行比较;2) 贪心算法对比解决0~1背包问题、背包问题, 进而理解两类问题的特性及相应算法类型特点;3) 动态规划求解0~1背包问题, 对货物重量整数类型与实数类型不同情况下考虑, 加深学生对动态规划算法特点的理解。
更高层次教师可结合实际问题设计经典问题的变形问题, 启发学生分析求解, 能够应用所学算法或更高一步利用设计技术经过变换解决, 充分发挥学生的主观能动性。提高学生分析解决实际问题的能力。
高等教育的探索是没有止境的。就“算法设计与分析”这门课程关于教学内容、教学目标、教学模式、教学实践等方面提出了一些意见, 这些意见还需要在今后的教学过程中不断完善, 使“算法设计与分析”的教学质量得到进一步的提高。
摘要:算法设计与分析课程是计算机科学、软件工程及相关信息处理专业的核心课程之一。结合本科教学实践经验, 针对该门课程教学特点及目前教学中存在的问题, 对建构主义教学模式与传统教学模式在该门课程的实践进行了讨论。
关键词:算法,算法设计与分析,教学模式,建构主义教学模式
参考文献
[1][美]Thomas·H·Cormen著, 潘金贵, 顾铁成译.算法导论[M].北京:机械工业出版社, 2006.
[2]王晓东.算法设计与分析[M].北京:清华大学出版社, 2003.
[3]胡学钢, 张晶, 周红鹃, 等.数据结构实践教学体系设计[J].吉林大学学报 (信息科学版) , 2010, 23 (8) :138-140.
[4]蒙应杰.“算法与数据结构”课程教学的研究与探讨[J].高等理科教育, 2004, 16 (3) :55–57.
[5]陈国龙, 王晓东, 傅清祥.“算法与数据结构”课程教学改革和实践[J].高等理科教育, 2003, 17 (3) :61-64.
[6]於东军, 李勇智.算法设计与分析教学改革初探[J].中国轻工教育, 2005, 16 (3) :55-56.
[7]孙俊, 吴小俊, 李岳阳.《计算机算法设计与分析》教学方法研究[J].科技信息, 2013, 23 (2) :173, 217.
[8][美]莱斯利·P·斯特弗, 杰里·盖尔著, 高文, 徐斌燕, 程可拉译.教育中的建构主义[M].上海:华东师范大学出版社, 2002.
高中数学算法与程序框图教学探析 篇11
【关键词】高中数学 程序框图 案例
中图分类号:G4 文献标识码:A DOI:10.3969/j.issn.1672-0407.2016.12.178
新课标的制定使得数学学科的教学内容更加多元化和现代化,学生们一方面需要在教师的教学指导下扎实掌握数学基本原理,另一方面还需要通过不断的观察和探究实现对原理的综合应用。算法与程序框图的章节教学,是对传统数学原理教学的更新,学生们需要在计算数字公式的过程中快速准确的辨析程序框图的正确走向,最终找到或得出最佳的结果。一般情况下,高中生对基本算法与程序框图类题型的解答比较轻松,但对算法试题中涉及到多类选择时,往往会因考虑不全面而导致错误的解答。因此,为了提高学生的数学思辨能力和实际程序操作能力,笔者将在下文探析针对高中生的算法与程序框图教学,从多角度算法教学、程序框图辨析教学、课堂实践教学三方面逐层引导学生们学习并掌握此类题型的解答步骤和技巧。
一、算法教学
算法教学是整个算法与程序框图教学的基础与关键,学生们只有掌握好了数学算法公式和条件的解答,才能保证之后程序框图的正确选择。因此,数学教师在教学过程中需要重视对学生多种算法题型的考查,及时了解他们对数学算法题型的真实计算水平,继而在算法教学中实现对教学内容的全面兼顾和重点突出。
首先,根据历年数学算法原题,数学教师需要归纳总结出较为全面的算法题型和常考的考点。学生们只有在明确几种类型的算法试题之后,才能尽量规避遇到不熟悉的算法题型而导致解题的中断。高中数学教材中的算法题型主要是考查学生对教材内多种计算公式和方法的掌握,因此,数学教师要指导学生在算法题型的学习过程中牢固掌握各类数学原理和数学公式。例如,数学教师可以将高中课本中的算法题型分为函数算法、数列算法、不等式算法、几何算法等类型,这些类型下指数函数、对数函数、幂函数、函数方程、三角函数的计算公式,等差数列、等比数列的计算公式,一元一次不等式、二元一次不等式的换算,各类几何的表面积、体积、度数、方程的计算等都需要高中生准确地加以计算,以保证每个程序框图中的正确数额。
其次,高中数学教师在引导学生们全面学习并掌握教材中多类算法题型时还应该突出重点,指导学生们对难度较大的算法题型加以掌握。这种重难点算法的教学指导,一方面是教师对高中生数学概念和原理应用的拔高试探,另一方面也能够进一步调动高中生们对重点算法思路和语句的掌握,从而为接下来的程序实践奠定良好的基础。例如,数学教师在讲解函数类算法题型时,就可以有意识地指导学生们对教材中重点语句和关键函数方程进一步加以细化,根据常见和常考的重要知识点对函数算法的题型分析探究,继而提高学生们对函数算法的计算效率和准确率。
二、程序框图教学
高中生经过算法知识点学习和运用之后,才能在数学教师的指导下开始程序框图的辨析学习,将计算得出的结果通过对程序语句的分析和判断做出合理的数字串接,最终以最快的效率得出最佳的程序算法结果。根据程序框图的教学内容,数学教师需要分步骤地指导学生们学习了解并熟练判断程序结构。
首先,高中生们需要在教师的指导下认识基本的程序框图的组成要素,如起止框、输入输出框、处理框、判断框、流程线、循环框、连结点、注释框,这些程序框图组成要素是学生清晰解读程序流程的关键,因此高中生们需要牢记并熟练每个组成要素的功能,继而在今后程序框图的设计学习中灵活运用。其中学生们需要重点掌握对循环框的解读,这种圆形的框图即是用来表达算法中的重复操作以及运算,学生们只有理解每种框图和线条的作用和功能才能实现对算法程序的正确解读,同时也能为今后程序框图的编写实践做好构成要素的准备。
其次,数学教师需要重点教授学生们对程序框图几种结构的辨析和理解。如顺序结构是当中最简单的算法结构,语句与语句、框与框之间是按照从上到下的顺序进行的,即上一框图的程序动作实施之后才能执行下一框图的命令。条件结构中通常会出现判断框,上一算法结果符合哪种条件就选择相应的A框或B框执行其中的算法命令。循环结构一般是从程序过程中的某处开始按照一定的条件重复执行某个过程,分为当型循环结构和直到型循环结构,前者是对算法结果符合某一条件时重复进行,直到最终算法结果返回时判断条件P不成立时为止的程序过程,后者则是对算法结果不符合某一条件时重复进行,直到最终算法结果返回时判断条件P成立时为止的程序过程。高中生只有熟练辨析每种程序框图的解答技巧,才能保证算法结果与程序执行的高效率。
三、课堂实践教学
为了进一步调动学生对算法程序框图的学习热情,检查他们对程序算法的掌握情况,高中数学教师可以在课堂教学之外,与班级计算机教师进行学科教学结合,指导学生们将理论所学运用到程序编写的实践过程中,继而实现理论与实践的高效结合。在上述算法教学和程序框图教学的基础上,高中生们还需要学习运用程序语言,对基本的程序语句如INPUT、IF、THEN、ELSE、PRINT、WHILE、UNTIL、DO、LOOP UNTIL、END IF能够熟练运用,理解每种程序语句的使用条件和实际意义。数学教师在实践课堂中主要发挥教学引导和辅助的作用,学生们需要以独立的学习个体完成对算法和程序框图的整个计算和编写设计,在实践中不断锻炼和提升对数学知识的理解和运用,并在实践中不断发现自身的学习缺点,借鉴和学习群体中其他学生的高效实践方法,最终实现对算法程序的理论和实践的综合熟练应用。
“递归算法与实现”的教学设计 篇12
在数据结构课程中, “栈与递归”是一个教学难点, 多数教材都将其作为选讲内容。事实上递归算法贯穿了数据结构课程的始终, 如二叉树的递归遍历、二叉排序树的查找、二叉树的线索化、快速排序、归并排序等, 都是递归算法。笔者在多年的教学实践中发现, 如果跳过“递归算法与实现”不讲, 那么学生们对于后面章节中上述算法很难理解透彻。本文探讨了“递归算法与实现”的教学设计, 主要从教学内容的取舍、简单递归算法设计和分析对数据结构中各典型的递归函数之间关联等方面进行了介绍。
1. 关于“栈与递归”的教学内容
在清华大学出版社出版、严蔚敏等编著的《数据结构》教材中, “栈与递归”这一节以三阶汉诺塔问题的递归算法及实现作为实例, 介绍了递归程序如何利用栈的主要特性“后进先出”实现其相互调用和返回[1]:
实际上, 由于汉诺塔问题的特殊性, 每个hanoi函数会分别二次调用hanoi低阶函数, 而且该函数的参数比较多, 给初学者带来了很大的困扰。如果每个递归函数只调用一次低阶函数, 就会容易理解得多。所以, 在介绍这一节的时候, 我们把实例改成了简单的递归形式的阶乘函数:
以此为例介绍递归程序的调用和返回, 路线清晰, 简单明了, 学生们很容易理解和接受。
2. 简单的递归算法设计
为了给进一步的学习打基础, 学习完“栈与递归”, 对于递归函数及其实现有了初步的认识之后, 可以结合数据结构课程, 进行一些简单的递归算法设计。
递归算法的编写需要确定以下内容:
(1) 终止项:描述递归函数的终止条件;
(2) 递归项:将问题分解为与原问题性质相同, 但规模较小的问题。
对于上述阶乘问题, 终止项就是if (n==1) return (1) , 递归项就是:return (n*fact (n-1) ) 。
清华大学曾有一道考研试题:已知la是带头结点的单链表的头指针, 试编写逆序输出表中各元素的递归算法。
我们分析这个问题的终止项, 应该是当指针为空时算法结束, 即La==NULL, 递归项显然可以描述为:Reverse (La->next) 。
综上, 可以编写出该问题的递归算法如下:
3. 几个递归算法的内在联系
递归实质上是一种特殊的函数调用, 与一般调用不同的是, 递归函数调用的是其自身。在数据结构课程中, 递归算法的设计涉及到各个章节, 其中二叉树的递归遍历函数是最重要、也是最典型的递归函数, 很多递归算法都可以和其进行类比。分析几种算法的内在联系, 对于深化“递归”意识, 加深对递归算法的理解, 大有帮助。
(1) n阶汉诺塔问题的执行过程等价于一棵深度为n的满二叉树的中序遍历过程。仔细观察hanoi函数, 我们可以发现其结构与中序遍历二叉树的递归算法非常结构一致, 且n阶汉诺塔问题移动盘片的总数是2n-1。可以构造一棵汉诺塔二叉树[2], 其每个结点对应于一次移动盘片的过程, 中序遍历该二叉树得到的就是n阶汉诺塔的一个解序列。
(2) 快速排序算法的递归算法执行过程等价于一棵二叉树的中序遍历过程。如果把待排序的数据元素的枢轴做为二叉树的根结点, 其左孩子是第一趟快速排序后左半区的枢轴, 其右孩子是第一趟快速排序后右半区的枢轴, 以此类推, 则可以构造一棵二叉树。显然这棵二叉树是一棵二叉排序树, 其形态取决于枢轴元素在子序列中的大小。最理想的情况, 是一棵完全二叉树;最坏情况下, 是一棵单支二叉树。
(3) 归并排序算法的递归算法执行过程等价于一棵二叉树的后序遍历过程。把整个待排序序列当作根结点, 其左半区做为根结点的左孩子;右半区做为根结点的右孩子, 以此类推, 可以构造一棵二叉树。该二叉树的叶子结点显然都是只含有一个元素的子序列, 且整棵二叉树的形态近似于一棵完全二叉树。如果对该二叉树进行后序遍历, 得到的就是归并排序算法的执行过程。
(4) 二叉排序树的查找算法等价于折半查找的判定树的查找过程。虽然查找算法中也出现了两个调用低阶递归函数的语句, 但其由if-else语句控制, 每层调用只选择执行其中的一个。所以虽然表面上看和二叉树的先序遍历相似, 但实际上二者截然不同。事实上二叉排序树上的查找类似于折半查找, 其执行过程是走过了一条从根结点到叶子结点的路径, 而不是遍历整棵二叉树。
4. 结语
递归算法是数据结构课程中的重点和难点。本文通过内容选择、简单递归函数的设计方法和对各递归函数之间关联的分析, 对其教学过程进行了设计, 实践表明有该做法有效地提高了教学质量。
摘要:递归算法贯穿了数据结构课程的始终, 是数据结构课程中的重点和难点。本文探讨了如何对“递归算法与实现”的教学内容进行取舍, 从简单递归函数入手介绍了递归算法的设计方法, 进而分析了数据结构中各典型的不同递归函数之间关联。教学实践证明该教学方案的设计合理有效。
关键词:数据结构,递归,教学设计
参考文献
[1]严蔚敏, 吴伟民.数据结构 (C语言版) [M].北京:清华大学出版社, 1999:52-54.
[2]陈文.汉诺塔非递归算法[J].电脑编程技巧与维护, 2009 (14) :10-11, 51.
【算法与程序设计教学】推荐阅读:
《算法与程序设计》教学探析 期10-22
高中信息技术 算法与程序设计教案 粤教版选修1概要09-29
程序算法分析07-18
MATLAB程序算法10-12
VB程序设计的常用算法教案05-21
算法设计与实现07-29
算法设计与分析论文06-20
算法设计与分析实验四09-15
《算法分析与设计》实验指导书07-07