您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 信息技术支持下的算法案例及反思
常州市教育学会现代教育技术专业研究会2006年论文与教学反思评比材料第1页共5页信息技术支持下的算法案例及反思【摘要】算法思维具有机械操作的特点,算法学习是一种数学活动,因此算法教学要重视信息技术支持下的算法实现。本文以Excel为技术平台,认识到算法实现有利于学生认识、理解算法,有利于辨析、建构算法,有利于优化、创新算法。在教学实践的基础上,认识到:理论教学与实践操作要作适当的动态平衡;算法教学要加强学科知识内部和学科间的整合;算法教学要讲算法、重算理,进行算法化教学。【关键词】Excel算法算理整合作为一种为解决给定问题而需执行者去一步一步实施有穷操作过程的描述,算法是求解一个问题所需步骤的提纲,是对解题过程的抽象和精确描述,“算法思想已经成为现代人应具备的一种数学素养”,在新课程改革中算法正作为数学的重要组成部分而逐步“深入人心”。笔者以为算法教学一方面要让学生体会算法中的算理,因为算理是算法的灵魂,同时也要让学生学会算法的适度形式化,学会算法的实现。一方面算法思维与通常的数学思维有迥然不同的特点,通过计算机的算法实现有利于学生认识和接受算法思维,体会到算法的力量和操作机械的特点。另一方面,算法学习是一种数学活动,“实践操作应成为学生学习的重要环节”,就像游泳本身也有理论,但更重要的是他必须下水去练习,老是站在陆地上是永远也学不会游泳的,因此,“有条件的学校,应鼓励学生尽可能上机尝试各种算法.”事实上,算法设计的优劣需要上机检验,算法设计的改进需要调试修正,更重要的是要培养学生利用数学理论在计算机上实现问题解决的能力。本文将以Excel为平台谈谈如何在信息技术支持下进行算法教学。一、Excel环境介绍Excel作为一种普及性的软件,内置有丰富的函数,长于数据分析,并嵌有功能强大的宏语言作为后台支撑,从而成为连接算法和计算机技术的一个理想平台。Excel工作表有“趋势填充”和“相对引用”功能,通过双击或拖动即可产生结构相同的公式或大量的数据,能有效减少重复性劳动;与此同时,VBA(VisualBasicforApplication)是Excel自带的一种程序设计语言,它具有一般程序设计所具有的功能,具有语法简单、通用性强的特点;两者均可以十分方便地实现算法。值得指出的是,VBA程序语言的实现在Excel中是以宏的形式出现的,其调用执行步骤为:在Excel工作表中,选择“工具/宏/VisualBasic编辑器”,进入VB编辑器窗口;在VB编辑器窗口中选择“工具/宏”,在弹出的对话框中,在“宏名称”栏内输入宏的名称,点击“创建”,出现宏主体语句Sub和EndSub,输入相应ExcelVBA代码;选择“运行/运行宏”或按F5运行程序实现算法。作为一种特定的程序语言,ExcelVBA有其自身特定的语法规则,与伪代码有一些差异,下表即为两者间的重要不同:分类伪代码VBA程序语句含义赋值语句m←20m=20将20赋给变量m输入输出语句Readaa=InputBox()输入a的值PrintaMsgBox(a)输出a的值ForiFrom1To100…EndForFori=1To100…NextiFor循环语句常州市教育学会现代教育技术专业研究会2006年论文与教学反思评比材料第2页共5页循环语句Whilex≤10000…EndWhileWhilex=10000…WEndWhile循环语句ExcelVBA中算法的输入输出可借助对话框函数InputBox、MsgBox来完成,也可借助于单元格属性cells(row,column)来完成,其中row为单元格的行号、column为单元格的列号,例如语句cells(1,2)=0即表示将B1单元格赋值为0,后者可以非常方便地将后台程序运行的结果显示在前台工作表中。二、基于Excel的算法实现教学案例2.1、认识、理解算法如前所述,算法思维的机械性特点往往有“不可接受性”,借助信息技术实现算法可以让学生体验编程过程,创立程序运行的“情境”,真实接触到计算机的“思维”过程。案例1、已知2,5ab,试设计一个程序交换,ab的值。初学算法语句,学生受数学中变量的影响,往往对算法变量的理解有一定的不可接受性,从而会得到右图所示的伪代码1-1,将其转换成VBA语言运行后会发现,ab变量值均为5,并没有得到我们想象的结果;通过对变量值进行“追踪”可以发现,原来在语句30中变量b的值赋给a后a的值便更新为5了,通过计算机实现创设的情境对学生的震憾力是可想而知的,学生在真实的程序运行的“情境”认识到变量可以看作一个存放数据的盒子,而且是最多只能存放一个数据的盒子,当一个新数据放进去时,原来的数就被“挤”了出来。进一步的探究中,学生会认识到,交换两个变量正确的做法是设置一中间变量t,用来暂时储存原先变量a的值,修改后的伪代码为1-2。案例2、根据图2-1的框图,列式写出最后C的值。本题的变量较多,计算量也较大,学生往往很难“想象”结果,借助于Excel工作表强大的数据统计功能,很容易就能实现算法,从而帮助学生理解其中的算理。具体设置如下:将单元格A列、B列、C列、D列分别作为变量n、A、B、C,在第二列相a=2:b=5a=bb=acells(1,1)=”a=”&acells(1,2)=”b=”&bVBA1-110a←220b←530a←b40b←a50Printa,b伪代码1-110a←220b←525t←a30a←b40b←t50Printa,b伪代码1-2图2-1图2-2图2-3常州市教育学会现代教育技术专业研究会2006年论文与教学反思评比材料第3页共5页应单元格分别输入0、1、1、0作为相应变量的初值,在单元格A3、B3、C3、D3中分别输入公式“=A2+1”、“=B2+2”、“=2*C2”、“=D2+B3*C3”,选中单元格A3、B3、C3、D3按住鼠标左键并向下拖动填充柄,最终算法实现效果如图2-2。在信息技术支持下,可以非常方便地帮助学生分析算法、理解算理,并且通过快捷键“ctrl+~”可以方便地实现数据与对应公式的切换,通过对相应公式(如图2-3)的查看可以帮助学生进一步理解相应的算法。2.2、辨析、建构算法算法教学应提倡算法化,鼓励学生由实例的考察主动地去总结出相应的算法,经历一个由不那么精确、不那么完整到比较精确、比较完善的发展过程,使“算法”不仅仅是宣布某个结果,而且也是学生主动建构的结果.案例3、设计求满足条件2222512310n的最小正整数的算法。本题由于n的值事先不知道,故可使用While循环来实现算法,循环中可设置累加变量S、计数变量n(见伪代码3-1)。我们知道,影响循环语句结果的三要素是初始值、循环条件和循环体。本题的循环条件可设置为“5S10”,但循环体中的语句可以设置为2nn+1,SS+n,也可设置为2SS+n,nn+1,循环体中语句的顺序不同即影响变量初值的赋予(前者为0,0nS,后者则是1,0nS),也导致输出结果的不同(前者为n,后者则是1n)。要想帮助学生透彻理解程序,必须从“变量的变化”入手,分析清楚每次循环中变量值是如何变化的,借助于信息技术,设置相应的VBA程序(前者见VBA3-1,后者见VBA3-2),并在循环体中增加变量的输出,借助于cells(row,column)语句将变量结果输出到工作表中,从而便于查找出错环节并加以修正,在分析算法过程中可起到事半功倍的效果。事实上,数学中有很多相当精妙的算法公式,如22221111...623n等,这样的公式的合理性显然已超出学生的“想象”,通过设置算法由计算机来“算”,一方面可以提高学生算法设计能力,更能感受到算法的力量,这显然是“纸上谈兵”所难以企及的。2.3、优化、创新算法算法的形成和发展,需要进行不断地感知、观察、抽象、识别、归纳,经历发现算法、利用算法、选择算法、推广算法等一系列思维过程,在“做“的过程中感受算法学习是一种充满探索、10①20While②304050EndWhile60Print④伪代码3-1③循环初值循环条件循环体结果输出n=0:S=0WhileS=10^5n=n+1;S=S+n^2cells(n,1)=ncells(n,2)=SWendVBA3-1n=1:S=0WhileS=10^5S=S+n^2;n=n+1cells(n,1)=Scells(n,2)=nWendVBA3-2常州市教育学会现代教育技术专业研究会2006年论文与教学反思评比材料第4页共5页发现、创造的活动。案例4、写出求111111112345699100的一个算法。本题可可以考虑用For循环,用变量S(初始值设定为0)来接受累加结果,问题的关键在于循环体如何构造,因为本例中n为奇数时赋值为1SSn,n为偶数时赋值为1SSn,从而容易想到构造相应算法(伪代码如图4-1),在将伪代码转换为VBA语言实现过程中,有学生将算法作了改进,将1Sn与1Sn分开处理采用If语句构造循环体(其伪代码见图4-2);更有学生考虑到n+11,n=2k-1(k1,n=2k+1为整数),循环体中语句设计为n+11SS+-1n(伪代码见图4-3);从而达到了优化算法的效果。三、几点教学反思3.1、理论教学与实践操作要作适当的动态平衡算法教学要重视算法实现,通过上机调试检验算法设计的优劣、修正改进算法、提高问题解决能力。但应作适当的平衡,不能把算法内容简单处理成程序语言的学习或程序设计,两者间固然有密切的联系(算法是程序语言的“灵魂”,程序可以作为算法的一种描述),但在教学重点上又有所不同,算法的教学重点在于体现算法的思想,而程序语言教学重点是让学生学会编程,在算法教学时可以充分结合程序语言教学,鼓励学生尽可能把自己的算法在计算机上实现,但不可本末倒置。3.2、算法教学要加强学科知识内部和学科间的整合一方面要加强学科间的课程整合,算法的描述要注重适当形式化,我们的思考是伪代码能否尽量与程序语言相吻合,这样可以方便学生的算法实现(如现有的苏教版教材中,将伪代码转换成VBA语言就是算法实现的一大障碍),事实上本着教为不教、学为创造的原则,只有将信息技术交到学生手中,才能最大发挥信息技术的作用.与此同时,数学课程中的算法初步和信息技术课程中的程序设计内容息息相关,但在课程内容和技术实现载体上均大相径庭,这也造成了算法教学一定程度的混乱。另一方面也要加强数学课程内的知识整合,算法教学中可以适当渗透数列知识,因为递归是设计和描述算法的一种非常好的工具,递归的关键在于找出递归方程式和递归终止条件,学n+1S0FornFrom1To1001SS+-1nEndForPrintSS0FornFrom1To100nnIfint()Then221SSnElse1SSnEndIfEndForPrintS12112212S0,S0FornFrom1To99Step21SS+nEndForFornFrom2To100Step21SSnEndForSS+SPrintS伪代码4-2伪代码4-1伪代码4-3常州市教育学会现代教育技术专业研究会2006年论文与教学反思评比材料第5页共5页生在理解和设计算法(特别是循环语句)时,由于缺少数列知识作为支撑,往往很难得出相应的递归方程式,至于递归终止条件更是似是而非.3.3、算法教学要讲算法、重算理,进行算法化教学算法是解决问题的操作程序,算理是算法赖于成立的数学原理,如果说算法是一种工具,那么算理则是一种观念,具有更丰富的数学思想方法、更多的人文精神,具有更大的包容度与迁移性,从而掌握算法和探究算理是算法教学的两大任务。算法教学应提倡算法化,“算法”应是学生主动建构的结果,因而在教学中我们不能直接地把算法告诉学生,让学生生吞活剥地死记各种算法;而应创设一定的问题情境,让学生概括地、近似地表述出一种数学模型,借助笔纸(或计算器、计算机等现代信息技术)探索出解决问题的算法,并使之一般化,从而
本文标题:信息技术支持下的算法案例及反思
链接地址:https://www.777doc.com/doc-45667 .html