第一篇:《算法与程序设计》教学探析 期
【摘 要】在高中“算法与程序设计”模块教学中,算法的设计以及运用程序设计解决问题的方法与思路,与学生原有的知识结构和解题经验有较大差异,使得学生的学习存在较大困难。教师应从生活实例出发,激发学生的学习兴趣;降低编程起点,提高学生的学习信心;引导学生通过程序阅读,学习他人编程经验;强化算法的分析与设计,培养学生分析问题与解决问题的能力。
【关键词】算法与程序设计;教学探析
【中图分类号】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时,为“不及格”等级。要求统计优秀人数、及格人数及不及格人数。
学生解决这个问题的过程,往往只是按照题目的表面意思进行处理,首先执行一次循环输入数据;然后扫描三次数组,分别统计优秀、及格和不及格人数。
俗话说:磨刀不误砍柴工。我们应该怎样进行算法设计呢?在这个案例中,重复扫描使得程序效率不高。其实,最简单的算法是只循环一次,输入数据后立即使用多分支选择结构对输入的数据进行判断,分别对优秀、及格及不及格人数进行统计。算法分析前,学生为自己编写的程序沾沾自喜,然而进行算法分析后,学生意识到自己程序的缺陷,较好地体验了算法对提高程序效率的作用,理解和掌握了隐藏在问题背后的知识,提高了解决问题的能力。
综上所述,算法与程序设计教学需要我们在教学实践中不断地总结经验教训,密切结合学生的自身情况,引导学生多阅读、多思考、多实践。让学生在算法的指导下,在不断完善和调试程序的过程中,潜移默化地掌握相关知识,养成缜密严谨的科学态度,进一步提高逻辑分析能力、发散思维能力以及发现并解决问题的能力。
第二篇:算法与程序设计
《算法与程序设计》教学中实施研究性学习探步
作者:赵濮民
摘要:研究性学习是教育科研领域中一个崭新的课题。信息技术教学作为以培养创新精神、研究能力和实践能力为目标取向的必修课程,它强调让学生通过研究性学习,提出问题,收集材料,对研究性课题进行探索、分析、研究,最后基于问题解决模式,在实践操作中培养学生科学的态度和价值观以及创新精神、创新思维、创造能力,并学会解决生活中与信息技术学习有关的实际问题。职业学校的学生,不仅应具有独立接受知识的能力,更应具有独立探索知识的能力,由“研究性学习”补充原有的“接受式学习”,使学习方式更趋完善,只有当这两种学习方式结合起来,优势互补,才能使基础教育适应时代对人才培养的要求。
关键词:程序设计;研究性学习;求真;求全;求变;求新;优势互补
《算法与程序设计》是职业学校信息技术教学中的一个重点,也是难点。传统的程序设计教学以老师讲授型为主,由于算法与程序设计的内容逻辑性强,普遍认为在程序设计教学中难以实施研究性学习。
研究性学习是以“培养学生具有永不满足、追求卓越的态度,培养学生发现问题、提出问题、从而解决问题的能力”为基本目标,以学生从学习中获得作品设计与制作方法的困惑为方向,以在提出问题和解决问题的全过程中学习到算法与程序设计为学习方法的课程。经过反复研究,我们认为研究性学习可以应用于程序设计教学中。实施研究性学习的关键是要确定一个目标,要鼓励学生主动地发现问题,并且通过探究或实践活动去试图解决问题。在课题研究的过程中采用分组交流讨论、查阅资料、协作探究、归纳总结等方式,一步步引领学生深刻掌握算法与程序设计的精髓。
一、通过研究性学习,重构算法知识体系,要求真 研究性学习是学生在老师的指导下,结合真实生活,选定主题,然后搜集相关材料,对材料进行归纳、加工处理、分析、总结,得到相应结论的学习活动。在《算法与程序设计》教学中,根据教学内容,经过反复研究,确定了研究主题《搜索算法的应用研究》和《动态规划算法的解题应用研究》,并根据学生的自愿报名成立了两个研究小组。然后各小组根据自己研究的算法,重新整理相应的知识,对知识进行认知、归纳、总结。如《搜索算法的应用研究》小组,对搜索算法从以下几方面进行整理:
1、搜索算法的算法思想、分类;
2、深度优先搜索的算法思想与算法结构;
3、广度优先搜索的算法思想与算法结构;
4、深度优先搜索的优先策略;
5、广度优先搜索的优化策略;
6、深度优先搜索与广度优先搜索的异同。学生通过对搜索算法知识进行整理、分类、小结,加深了对搜索算法的理性理解与感性认知。
二、通过研究性学习,同学之间取长补短,要求全
每个学生都有所长,也有所短,研究性学习一个重要的特点就是:分工合作,共同讨论,共同提高,使参与的学生全面发展。我们的“搜索算法的应用研究”小组共有五个成员,根椐学生的特点、特长,对他们进行分工,每位学生研究上述其中一个问题,然后整个小组一起讨论,每位学生介绍自己的研究情况、研究成果,然后其他同学进行补充,发表自己的见解,这样每个同学都使自己的研究内容得到补充,同时也学习到了其他同学研究方面的知识,可以取长补短,共同提高,得到全面发展。
三、通过研究性学习,总结算法的应用规律,要求变
研究性学习的目的,是要求学生搜集与主题有关的资料,归纳整理相关资料,根据相关材料和知识,对主题进行研究,提出自己的观点或结论。我们在程序设计教学中进行算法专题研究也是这样,除要求学生归纳、整理专题算法知识外,还要总结出算法的应用规律、应用算法解题的步骤和算法的框架,能根据实际情况,随机应变。如在“动态规划的应用研究”中,学生总结出:动规划是解符合“无后效性原则”的最优问题的一种算法思想;用动态规划解题的一般步骤是:(1)判断题目是否为求最优问题,是否符合“无后效性原则”;(2)确定如果划分阶段;(3)确定每个阶段有几种状态;(4)找出状态转移方程和边界条件;(5)用算法语言实现算法过程。又如在“搜索算法的应用研究”中,研究小组的同学总结出:(1)广度优先搜索算法通常应用于解最少步数问题,而深度优先搜索算法则通常用来解所有路径问题;(2)深度优先搜索和广度优先搜索都是搜索算法,前者时间复杂度较大,而后者则占用的内存较大;(3)深度优先搜索在实现时用递归或用堆栈来实现,而广度优先搜索是用队列来实现,实现两种算法所用的数据结构不同;(4)深度优先搜索和广度优先搜索都是搜索算法,但两者的算法结构有较大的不同。学生通过自己对算法应用规律的总结,对算法的应用得到升华,进一步提高算法的应用能力和程序设计能力。
四、通过研究性学习,提高分析、归纳和综合能力,要求新
对算法的专题研究,不仅要对算法理论进行总结,算法应用的研究也是很重要的一方面,通过算法的解题应用,既提高了学生分析问题的能力,也加深了学生对算法的理解,提高了学生的算法应用能力,进而得到对学生创新能力的培养。另外,我们在算法研究过程中,要求学生透切理解算法内容,用算法语言准确描述算法,通过这种途径,进一步加深学生对算法的理解,同时也提高了学生的算法表达能力和归纳、总结的能力。
通过对算法进行专题研究,可以进一步加深学生对算法知识的理解,也可以提高学生的算法应用能力和程序设计能力。实践告诉我们:在整个研究过程中要注意以下几个问题:
1、课题不宜太大。研究课题的确定是研究性学习实施过程中重要的一环,课题选择恰当与否,直接关系到整个课题研究的成败。在程序设计教学中进行研究性学习活动,选题要遵循下面的原则:(1)课题的范围不宜太大;(2)有一定的应用价值;(3)结合学生的实际。一个好的开始是成功的一半,在研究性学习活动中也是如此。
2、要理论研究与算法应用相结合。对算法的专题研究,算法应用是重点。在算法知识归纳总结的基础上,重点应研究算法应用的一般规律、算法结构、应用算法解题的一般步骤等。不应该只是对算法理论的空洞论述,否则效果不好、意义也不大。
3、充分发挥教师的引导作用、学生的主体作用。在算法研究活动中,应充分发挥教师的引导和指导作用,既不能放任自由,也不能包办代替,要充分发挥学生的主体作用。当学生遇到问题和困难时,老师应当引导和启发学生,让学生去探索和研究,而不是直接告诉学生答案,老师始终是学生的引导者,学生是真正的参与者,使学生通过算法研究,加深对算法的理解,提高算法应用能力和程序设计能力。
职业学校的学生,不仅应具有独立接受知识的能力,更应具有独立探索知识的能力,由“研究性学习”补充原有的“接受式学习”,使学习方式更趋完善,只有当这两种学习方式结合起来,优势互补,才能使基础教育适应时代对人才培养的要求。
第三篇:算法与程序设计思想
《算法与程序设计思想》教学案例1
一、教学目标 1.知识与技能:
求一批数据中最大值的算法设计思想,并将算法的设计思想用流程图表示出来。2.过程与方法:
利用现实生活中比较身高的活动,以及对武术比赛中“打擂台”流程的逐步梳理,让学生学会从此类生活实际中提炼出求最大值的思想方法,即算法思想。
培养学生分析问题、解决问题的能力,让学生学会在面对问题时能梳理出解决问题的清晰思路,进而设计出解决某个特定问题的有限步骤,从而理解计算机是如何解决、处理某种问题的。
3.情感、态度与价值观:
让学生全身心地投入到教学活动中,积极与同伴合作交流,进行探索活动。培养学生良好的思维品质,发展他们的创新思维,并养成积极的学习态度和良好的学习习惯。
创设情境,以激发学生的学习兴趣。努力营造一个可以接纳的、支持性的、宽容的课堂学习环境,让学生置身于民主和愉悦的课堂氛围中放飞思维、潜心研究、快乐创造。
二、教学重点、难点 教学重点:建立求一批数据中最大值的算法设计思想,并将此算法设计思想用流程图表示出来。
教学难点:上述重点问题同样是本课教学的难点。另外,如何把人解决问题的思路、步骤用计算机语言描述出来也是本课的难点之一。
三、教学对象分析
高一年级的学生。他们已具备了一定的观察、思考、分析和解决问题能力,也已有了顺序结构、分支结构、循环结构等知识的储备。因此,对于如何将解决问题的思路画成流程图,学生已有一定的基础,但可能还不很熟练,尤其对刚学过的循环结构,教师在课堂上要注意引导。
四、教学策略及教法设计
利用现实生活中比较一组学生身高这一事件,引导学生去发现求最大值的一种方法。如何设计求一批数据中最大值的算法?我认为让学生自己去经历整个探究过程,要比直接把现成的算法告诉学生有意义得多。它能迅速、有效地帮助学生建立程序设计思想。在完成这个任务的过程中,教师的循循善诱起到了非常关键的作用。找出一批数据中的最大者,从表面上来看是一个很简单的问题。在比较数的过程中,人因为动用了眼睛,比较大小的思维过程一闪而过,所以能很快求出一批数据中的最大值。而计算机与人不同,它对这些数据看不见、摸不着,怎么来完成这一任务呢?其实,计算机解决问题的关键,就是要把人解决问题的思维过程用计算机语言描述出来,即为大脑思维的每一步“拍照”。这是计算机程序设计教学的一个重点,也是一个难点,需要教师在教学过程中逐步引导和训练学生,使学生逐渐学会分析问题,寻求解决问题的方法和步骤。本案例运用生活中“打擂台”的实例引导学生分析求最大值的方法,通过对这一现象的分析,逐步引出求最大值的算法设计思想。1 孙朝霞.从生活中探究和建立程序设计思想——《算法与程序设计思想》教学案例.中小学信息技术教育,2005(12)
五、教学过程 1.情境创设 师(提问): 今天在第一排就座的有10 多位同学,谁是我们第一排在座各位中的最高者呢?
师(引导): 大家思考,通常这个任务我们是怎样去完成的? 教师根据学生对问题的回答进行分析。引导学生往古时候比武时常常采用的“打擂台”的方式上想,提示学生可参考电视上经常播放的“挑战主持人”节目。
师生: 打擂的过程可以描述为:
(1)确定一个擂主(讨论第一个擂主是如何确定的);(2)挑战者上台;
(3)擂主和挑战者比较;
(4)挑战者胜的话,挑战者做擂主,否则擂主卫冕;(5)重复执行(2)~(4)步骤,直到最后一个挑战者。
师: 在打擂的过程中,我们看到(2)~(4)步骤是要重复做的,所以我们该怎么办呢?
生: 需要循环结构来实现。
师: 这几个步骤序列重复到什么时候结束呢?由学生讨论结束的办法,很显然,需要在最后加上一个能判断什么时候结束的判断框。
根据讨论的步骤,最后师生共同得出打擂台的算法和流程图(如图1)。
2.求一般情况下的最大值的算法 师(引导): 如果我们面对的是一堆数据,现在希望我们求出这一堆数据中的最大值该怎么办?通过教师和学生的共同分析,把问题进一步细化为:
(1)从第一个数据开始看起;
(2)把第一个数据的值在变量中记下来;(3)再取一个数据;
(4)比较这个数据与变量中记下的数据的值;
(5)如果这个数据的值比记下的数据的值大,则去掉变量中原来那个数据,记下新数据的值;
(6)重复执行(2)~(4),继续比较,直到最后一个数据。也就是说,计算机的变量始终记着当前比较过数据中的最大者(我们不妨用X 表示它),当取完最后一个数据时,X 中留下的也就是最大值了。
求最大值的算法设计思想用图2 表示。
注意:
a.再次让学生讨论变量的意义,弄清赋值语句的意义。
b.一些物理量用变量表达的意义。如X 表示最大值,X 表示输入的一个值,且每次循环时都用同一个变量X。
c.为了控制循环结束,必须加入一个控制循环次数的计数器I,当I 达到一定的次数后,循环工作结束。
3. 回顾小结
师生共同总结算法设计的过程,就是将大脑思维的每一步都记录下来,并且用计算机能达到的功能来实现人解决问题的思路。
第四篇:算法与程序设计教案
第一课 初识算法与程序设计
一、教学目标
1、知识与技能
(1)理解算法的概念,培养学生自我探索信息,高效获取信息的能力;
(2)能初步利用算法解决简单的问题,培养学生的理论联系实际能力和动手操作能力。
2、情感、态度、价值观
学生在学习过程中,通过亲身经历体验获得对此算法的感性认识,培养学生自我获取信息、分析评价信息、、表达呈现信息的能力,进一步提高其信息素养。
二、教学重点难点
重点:算法概念的理解
难点:如何科学合理的选择和设计算法。
三、教学策略与手段
以趣味性问题设置情境,激发学生探索解决问题的兴趣,与学生进行互动探讨,通过Flash演示材料,比较直观地把抽象的问题简单化,使学生的思考逐步深入,从而总结出算法的概念,学会如何设计和选择算法,培养学生自主探究学习的能力。
四、教学过程(1课时)
(一)我们来共同寻找下面一些生活中比较现实的问题的解决方法。【问题一】天下真的有“不要钱的午餐”吗?
某一餐馆门口海报上写着“不要钱的午餐”,规则如下:在三个月内,来宾必须凑够五个人,五人每次来就餐必须按照不同的顺序坐,直到把所有可能的顺序都坐一遍,以后来吃饭就可永远免费”。于是有人想,这太容易了,每人每次坐不同的位置,吃五次不就行了?于是他就叫上自己的朋友参加这项活动,可是,吃了十次之后,还没有吃上免费午餐,这是怎么回事呢?
学生们感觉非常有意思,很快以小组为单位进行热烈的讨论并得出了破解问题的步骤:①第一个座位5个人都有坐的机会②第二个座位只有4个人中的任一个有坐的机会(一个人不能同时坐两个座位)③第三个座位只有3个人中的任一个有坐的机会④第四个座位只有2个人中的任一个有坐的机会⑤第五个座位只有1个人有坐的机会⑥计算:5×4×3×2×1=120⑦得出结论:需要吃120次才有可能吃上免费午餐。
【问题二】有三个和尚和三个妖怪过河,只有一条能装下两个人的船,在河的任何一方或者船上,如果妖怪的人数大于和尚的人数,那么和尚就会有被吃掉的危险。你能不能找出一种安全的渡河方法呢?请写一写你的渡河方案。学生:学生讨论回答。〖展示步骤〗
①两个妖怪先过河,一个妖怪回来; ②再两个妖怪过河,一个妖怪回来; ③两个和尚过河,一个妖怪和一个和尚回来; ④两个和尚过河,一个妖怪回来; ⑤两个妖怪过河,一个妖怪回来; ⑥两个妖怪过河。
【Flash动画展示】通过讨论和动画展示,我们可以知道,计算机解决问题和人解决问题一样需要有清晰的解题步骤。算法就是解决问题的程序或步骤。
(二)【课件展示】算法的概念:
1、广义的算法是指完成某项工作的方法和步骤,在我们日常生活中也经常使用算法,只是没意识到罢了。如:洗衣机的使用说明书是操作洗衣机的算法,菜谱是做菜的算法等等。
2、在数学中,现代意义的算法是指可以用计算机来解决的某一类问题的程序和步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成。
【小试身手】按照这样的理解,我们可以设计出很多由具体数学问题解决一类数学问题的算
法.下面看一个例子:(要求学生自己考虑并写出具体的算法)
鸡兔同笼问题。一个笼子里有鸡和兔,现在只知道里面一共有17个头,48只脚,鸡和兔各有多少只?试设计一个求解的算法。
【设计意图】求解鸡兔的问题简单直观,却包含着深刻的算法思想。应用解二元一次方程组的方法来求解鸡兔同笼问题。
第一步:设有小鸡x只,小兔y只,则有
第二步:将方程组中的第一个方程两边乘-2加到第二个方程中去,得到,得到y=7; 第三步:将y=7代入(1)得x=10。
【变一变】在笼中有鸡、兔若干,已知有头a个,有脚b只,求各有多少只鸡和兔。
【师生合作】老师带领学生共同书写规范的算法的具体步骤,最后引出算法使用的范围:能解决一类问题,并且能重复使用。
(三)【课件展示】算法的基本特征
①有穷性 ②确定性 ③不唯一性 ④有效性(逻辑性)
1、有穷性:一个算法应该包含有限个操作步骤,而不能是无限的。
2、确定性:算法的每个步骤都应该是明确无误的,不能含义模糊,使执行者无所适从。
3、有零个或者多个输入,有一个或者多个输出
4、有效性:算法中的每一步都应该能有效地执行,执行算法最后应该能得到确定的结果。
【教学总结】
1、本节课通过一些生活中看似简单问题的解决方法和步骤,使学生比较轻松的接受了生活算法的概念,进一步理解了计算机算法的概念。
2、课堂教学的效益取决于学生对所学知识理解了多少,能否用所学知识来解决一些实际问题。本节课的设计突出讲与练的结合,培养学生的动手能力,并且引出学生对下一节课的内容的思考,比较顺利的完成了本节课的教学任务。
3、如何优化算法,找到算法的形式和用算法解决问题的效益的最佳结合点,还尚需探讨。
第五篇:浅谈《算法与程序设计》教学策略
浅谈《算法与程序设计》教学策略
安徽宿州泗县一中 许大伟
摘要:高中信息技术课程改革到今年已走过了四年时间,在选修模块教学中有《算法与程序设计》和《多媒体技术应用》可供选择。选修《算法与程序设计》模块教学的学校不多,我们学校就是其中之一。原因是算法的学习比较抽象、枯燥,很难调动学生学习兴趣。本文就结合自己四年的教学实践经验同大家共同探究一下选修模块《算法与程序设计》如何进行有效的教学。
关键词:算法 程序设计 教学方法 教学策略 信息技术 高中
一、算法与程序设计概述
信息技术课中,《算法与程序设计》师信息技术课程的一门选修课,是选修的一个分支。在我们学校,采用了广东教育出版社的教材,学习VISUAL BASIC语言。VISUAL BASIC程序设计语言是WINDOWS环境下快速开发应用程序的可视化工具。它简单易学,功能强大,用它开发图形用户接口(GUI,Graphical User Interfaces)的应用程序方便、快捷,可以自动生成32位的脱离开发环境而直接执行的应用程序,且运行速度更快、更安全,适合在多任务环境下运行。VISUAL BASIC语言功能强大,具有良好的简单性、面向对象性,可视化的集成开发环境,面向对象的程序设计思想,交互式的开发环境的特点。
计算机的发展速度很快,学生上机的条件和平台已经发生了巨大的变化,上机方便,程序编译器的功能强,使得我们可以很好的去学习VISUAL BASIC。在平时注意对现有的程序代码进行分析,多读程序,俗话说:读遍唐诗三百首,不会做诗也能吟。学习程序语言也是这样,多读程序自然你就会写一点程序了。教师在教学中就要从以下几个方面入手。
二、努力培养学生学习兴趣
爱因思坦说“兴趣是最好的老师”。兴趣相当程度上决定了教学效果的好坏。如何培养学生学习程序设计的兴趣,我认为可以从以下几个方面入手。
1.让学生认识到学习程序设计在提高自身素质的突出作用。提高自身素质,可以培养学生的思维品质,培养学生发现问题、思考问题和解决问题的能力;学习程序对其他学科的学习有积极的影响。
2.程序设计教学中要从学生的兴趣入手,利用学生对事物的好奇心,选择学生身边的,学生感兴趣的、有实际意义的程序,激发学生的学习兴趣。比如:第一堂课讲VB界面设计,可设计一个QQ登录界面。
3.一定要分层次教学。现在各个学校的平行班设置恐怕都有文科班和理科班、实验班,教学内容在难度上要有所变化。一个班级布置作业时也要根据学生的能力分层次。
4.深入浅出,消除学生们对程序设计的畏难心理。在教学时,低起点,从一个个简单实例出发,让学生们从自身的实践中感受到这个的确很简单,从而迎合了学生渴望成功的心理特点。前两节课千万不能罗列过多的概念,让学生不知东西,打击学生的学习兴趣。
三、适当调整教材结构,立足具体实例,讲解基本概念
VB程序设计概念比较多,如何让学生较容易按受、理解是我在最初的教学中较为头痛的问题。刚接触程序设计的学生,对程序设计充满了好奇,如果把一开头还用不上的许多的控件、属性放在前面,一下子引入大量抽象的名词、概念,就会让不少学生望而生畏。因此要想让学生领会这些抽象的概念,教学中我选择的方法是先少讲控件。结合数学课本已学的知识,先复习、巩固、提高基本知识。从数据类型,基本运算,讲到三种基本控制结构后,然后再讲基本的控件。这时,控件用于程序设计的例子就可以讲明白了。但是,仍然不要把控件的每一个属性都细讲。突出按问题需要设计界面来选用控件,以一个个鲜活的具体实例为切入点,在每个例子中适时、适量地渗透一些相关的概念和知识,使学生在完成任务的过程中,逐渐地、很自然地去体会控件、对象、事件的概念。教学中要安排足够的课时把这些控件的用法渗透到一个个程序实例中,由浅入深地逐渐介绍,让学生在编写程序的过程中总结控件的用法。
四、加强程序设计教学中的引导变通
1.引导学生对语句变通,加强语句和三种基本结构语句的理解和灵活应用
在程序设计的初始阶段,要注意学生对某些语句的功能还不甚了解的实际,不失时机在从一些典型的例题入手,及时纠正编写程序时所出现的语法错误和逻辑错误,引导对已编程序的某些语句或语句中的某些变量作简单的变通。学完选择结构、循环基本结构后,引导学生对程序设计方法的变通,以加强横向联系,启发学生自己进行总结,达到理想的教学效果。
例如对典型的求和问题:S=1+2+3+„„+100
S=0
For i=1 to 100
S=s+i
Next i
可以做:
(1)如求S=100+99+„„+1应作哪些变更?
(2)如求S=2+4+6+„„+100,需要修改哪些地方?
(3)如求S=1*2*3*„*10,需要修改哪些地方?
(4)如求S=1+1/2+1/3„„+1/n应作哪些变更?
(5)如求S=12+22+32+„„+1002,应修改哪个语句?
通过以上一系列角度不同的变通,学生对每一个语句的认识加深了,对语句中确定每一个变量更加谨慎了。
2.引导学生对结构变通,加强语句和三种基本结构语句的理解和灵活应用
又例如:求出下式中n的最大值:s=1+1/2+1/3+„„+1/n<
5先向学生提问:用什么循环语句来设计程序?
通过讨论,学生自己得出结论:用for语句无法设计;只能使用 do „loop until与do while„„loop两种循环设计;同时再次对do „„loop until和do while„„loop 两种循环中的布尔表达式之间的关系有进一步的认识,具体程序如下:
最后通过教师设问:什么情况下用for语句? 什么情况下用DO循环?学生可以自己得出结论: 对于能确定循环次数,使用for语句最合适了;对于循环次数不能预先确定,宜使用DO语句,用DO 语句时注意死循环问题。通过如此的引导变通,使学生对循环结构的三条语句使用得心应手,在编程过程中能够灵活应用,同时也培养了学生发散性思维。
五、切实落实以学生为中心,学生为主体,教师为主导的新课改思想
信息课教师绝大部分为青年教师,无论教学理论和教学经验上都相当缺乏。特别是在程序设计内容时,自觉不自觉地还是走向了教师为主的教学模式。教师与学生缺乏互动,课堂气氛沉闷。在课堂教学中,要鼓励学生质疑是激发学生的主体性、培养学生思维能力和创造能力的起点。学生的主体性主要体现在学习过程中能掌握学习主动权,能够主动、自觉、积极地学习。因此,在教学过程中特别要注意设置恰当的问题,通过启发引导,体现教师的主导作用。集中学生的注意力,促进学生主动思考、主动探索,可以使学生在学习的过程中成为主体。
六、结束语
程序设计教学的主要目标是为了使同学们了解编程的基本思想、培养分析问题、解决问题的基本能力。围绕着这个目标,在VB程序设计的教学实践中,改革旧的教学模式,结合学生实际情况,不断探索切合实际的教学方法和手段。按照他们的认知规律组织教学,一切有效的教学方法都可以在我们的教学过程中加以运用,进而使综合素质得到整体提高,这是程序设计课程教学的最终目标。
参考文献:
[1]杨俊宇.浅谈VB程序教学方法[J]. 科技资讯,2009,(16): 211-212
[2]孙秀.VB 教学方法改革的探索与实践[J].辽宁师专学报.2010(4)
[3]刘辉.VB程序设计教学方法初探[J].大庆师范学院学报.2010(2)
[4]康丽萍. VB教学的几点体会[J].农业网络信息,2011(09): 45-46