巧设问题情境 提升编程纠错能力

来源 :中小学信息技术教育 | 被引量 : 0次 | 上传用户:zero_alan
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】本文阐述了VB上机编程过程中的常见错误,主要包括编译错误、运行错误和逻辑错误。对于不同的错误类型,提出相应的解决办法,并结合具体程序调试教学,详细介绍添加断点、单步执行、跟踪变量的方法在调试程序时的操作步骤,希望对提高学生的纠错能力和程序设计水平有较大的帮助。
  【关键词】VB程序;程序调试;错误处理
  【中图分类号】G434 【文献标识码】A
  【论文编号】1671-7384(2021)06-060-04
  问题的提出
  在《高中信息科技》(华师大版教材)第二册的教学中,学生不仅要进行基础算法理论的学习,还要进行上机编程实践,验证算法设计的正确性。学生在上机过程中,出现程序错误是难免的,无论怎样精心地设计算法,在编程时都很难做到一次就运行正确。在編程过程中,不怕程序报错,就怕程序结果不对但不报错。为了解决这个问题,在教学过程中,要注重培养学生的程序调试能力,使其掌握程序调试的相关方法。学生通过不断地编程实践,提高程序设计的自信心和解决实际问题的能力。
  编程中常见的错误分类
  1.编译错误
  编译错误又分为两种,一种是VB集成开发环境自动检查出的语法错误。当用户在输入代码时,发现程序存在输入错误,如语句缺少运算符、语句没输入完整、遗漏关键字等,编译器会弹出一个窗口提示,告知出错原因,出错代码会变成红色字体显示。例如,在if语句中遗漏了then,在换行时就会弹出错误提示:缺少Then或GoTo。另一种是单击“启动”按钮后,系统在编译时检查出来的错误。程序编写完成后,编译器会先编译程序,检查程序中是否有错误,如单词拼写错误,函数缺少参数,if语句结束时遗漏了endif。for语句结束时遗漏了next语句等。
  2.运行错误
  运行错误是指在编译通过后,运行时发生的错误。这类错误一般是由代码在执行过程中遇到了不可执行的操作引起的,如溢出错误、类型不匹配、下标越界、试图打开一个不存在的文件等。当遇到运行错误时,系统也会弹出一个提示框,显示错误原因。同时,在弹出框中还会有四个按钮,分别是“继续”“结束”“调试”“帮助”。当用户单击提示框上的“调试”按钮时,系统会将出错代码以黄底黑字突出显示。
  3.逻辑错误
  逻辑错误是指编译和运行都正常,没有提示错误,但是运行没有结果或者结果和预期不一致,这说明程序中存在逻辑错误。逻辑错误不容易被发现,需要用户自己去排查,所以查找错误语句就比较困难,一般可能的原因有运算符使用不正确、语句中前后使用的变量不一致、语句前后的次序不对、循环语句的初值或终值不正确等。逻辑错误是这三类错误中最难排查的,需要借助断点调试来查找错误原因。
  不同错误的应对方法
  1.编译错误和运行错误的应对方法
  当遇到编译错误时,弹出框上有“确定”和“帮助”两个按钮,单击“确定”按钮,出错的语句会自动选中,认真检查选中的语句就能找到错误原因。如输入语句,学生经常写成a=imputbox(“”),在执行时编译器会弹出提示:编译错误,子程序或函数未定义,单击“确定”按钮后,imputbox单词会被选中,仔细检查发现是单词拼写错误,修改后程序执行正确。
  当遇到弹出框上有“调试”按钮时,说明是运行错误,此时要单击“调试”按钮,定位到错误语句所在的行,根据提示的错误原因,修改程序即可。如在累加或累乘的算法中,经常会出现“溢出”错误,主要原因是计算的结果超过了变量所能存放的最大值,只需要修改变量类型即可。对于运行错误,需要学生在平时遇到错误时多积累,遇到看不懂的错误时多提问,再遇到时就能轻松解决了。
  2.逻辑错误的应对方法
  对于逻辑错误,无法轻松地定位到错误语句所在的行,在排查时要借助断点调试,单步执行语句,跟踪变量值的变化,来检查程序中的错误。通过添加断点,可以中断程序的运行,具体使用断点进行调试的方法如下。
  第一步,插入断点。在需要设置断点的语句左侧灰色区域单击鼠标左键或者按下键盘上的F9键,此时语句前面有一个红色圆圈,整条语句呈红底白字的突出显示状态,再次单击红色圆圈,就可以取消断点。一般断点是加在可能出错的语句上,加一个断点即可。
  第二步,添加监视。通过监视窗口,可以显示当前程序执行过程中变量的值。单击菜单栏中的“调试”,添加监视,在弹出的对话框中输入变量名或者表达式,即可以打开监视窗口。如果程序执行过程中,监视窗口隐藏起来了,也可以通过视图菜单,监视窗口会显示隐藏的监视界面。
  第三步,单步执行程序。单击运行菜单下的“启动”按钮,程序就会执行到断点语句停下来,然后选择调试菜单下的单步执行或者按键盘上的F8键,即可单步执行程序,单步执行后,执行点会移动到下一行。每执行一行语句,在监视窗口查看变量当前的值,检查程序中的错误。
  案例分析
  虽然在平时的上机练习中,当学生遇到程序错误时,解释过当前程序出错的原因及解决的办法,但是对于如何解决逻辑错误,却很少涉及。笔者在经典算法实例讲完之后,以平时学生上传的作业为例,挑选了一些典型的错误程序,带领学生一起查错误,调试程序,修改代码,整理和归纳程序调试的方法。
  1.活动1—— 计算快递费
  问题情境:放暑假时,小明利用顺丰快递将自己本学期的书籍寄回家,目前的收费标准是上海本地1kg以内收费12元,超过1kg的部分,每1Kg收费2元,输入书籍的重量,计算应付快递费。程序代码如表1所示,程序共有多处错误,请运行程序,找出错误语句并改正。
  学生1:点击启动按钮之后,系统弹出编译错误,必选参数。同时inputBox单词被选中,检查发现,inputbox()是输入函数,在括号中缺少了双引号,加上双引号就可以了。继续执行程序,系统弹出第2个错误提示,else 没有if。程序中else语句会被选中,初步看else是和if语句匹配的,出错了说明没有匹配成功。仔细阅读程序,发现if语句单独写成了一行,此时的if语句是单分支结构,else不能与if进行匹配,而双分支结构的语句格式是then后面的语句要换行写,所以在then后面敲一下回车,后面的语句换行写就可以了。
  在上面的程序中,其在运行时出现了两个编译错误,分别是“必选参数”“else没有if”。这些错误在执行程序时,都会有错误提示,根据提示定位错误行,修改语句即可。
  2.活动2—— 求三位数中所有的水仙花数
  具体程序如表2所示,程序中有多处错误,先运行程序,再修改错误。

  学生2:尝试运行程序,发现没有输出结果,也没有任何的错误提示,初步检查代码,并没有发现什么错误,这时该如何修改呢?
  这就是我们常说的逻辑错误,可以用断点调试的方法来排查。第一步是添加断点,在a=x/100这一行前面添加断点,然后添加监视,监视变量a,b,c,i的值,再单步执行语句。当i=100时,执行循环体,分别计算变量的值。if语句判断条件不满足,i的值加1,i=101,继续进入循环判断,再次执行循环体,在监视窗口很方便地看到当前a,b,c,i的值,如图1所示。程序运行到这里,阅读代码,思考程序中可能存在的问题。

  学生3:通过观察变量a,b,c,i值的变化,发现了两个问题,一个是第二次执行循环体时,i=102,说明执行一次循环,i的值加了2次,for循环中省略了步长step,默认的步长为1,不需要在循环体中加上i=i 1这条语句,否则就会跳过了所有对奇数数据的判断,在枚举时就会遗漏可能的结果,修改的方法是把循环体中的i=i 1去掉。另一个问题是变量a应该是存放三位数百位上的值,当i=102时,a的值应该是1,而不是1.02,说明a=i/100此处应使用整除运算,应该加上取整函数int()或者改用整除运算符。
  学生4:发现还有另外一个问题,变量a是求三位数百位上的值,用的是整除运算,变量b是求三位数十位上的值,应该也用整除运算,所以应该将b=i/10 mod 10修改为b=i\10 mod 10或者b=int(i/10) mod 10。
  通过断点调试,跟踪变量,可以清楚地看到变量值的变化,这有助于我们排查错误。对于循环结构的程序,有时循环体执行一次,跟踪变量后就能发现问题,有时要多次反复执行循环体,才能检查出错误语句。当找到错误后,修改好程序,再执行时可以去掉断点,看是否能得到预期的结果。

  通过课堂教学实践,总结上机编程过程中的常见问题。当遇到程序出错时,主要分两类:报错和不报错,如图2所示。当程序报错时,根据错误原因不同又分为编译错误和运行错误,此时要认真阅读错误提示,根据错误提示定位到错误语句所在的行,再去修改程序。如果程序没有报错,但是没有结果,说明此时是逻辑错误,需要通过断点调试的方法来排查错误语句,再修改程序。
  结束语
  本文介绍了VB上机编程过程中的常见错误类型,不同类型错误的调试方法,并以具体的教学实践为例,阐述了如何使用添加断点、单步执行、跟踪变量来调试程序,修改错误。掌握这些方法,对提高程序设计能力有较大的帮助。除此之外,在一开始的上机练习中,帮助学生做好语句书写的规范,让学生养成良好的编程习惯也同样重要。例如,在分支结构或循环结构的语句中,采用缩进的语句格式,如if和else中间的语句进行缩进,for语句的循环体也是以缩进的方式来书写,这样在阅读程序时能快速厘清程序的框架結构,更容易地找到程序中的错误。
  程序调试不是一件容易的事,仅仅掌握这些方法还是不够的,还需要在上机实践过程中不断地积累,不断地总结经验,才能快速地提高VB程序设计水平,写出高质量的程序。
其他文献
“为未来而教”是时代赋予我们每位教育者的责任与使命。在学习、思考与实践中,沈阳市第一六五中学做出了自己的判断:未来学校,是虚拟与现实融合的数字化学习环境,是着眼创新实践的多元课程空间,是基于数据驱动的个性化课堂学习。未来学校的变革,不再是小修小补的变革,而是需要从“互联网 ”诸多方面整体思考,系统性规划,核心是向着数字化和个性化的方向前行。  近年来,学校开启了“泛在学习”的研究之旅。我们以规划和
大数据时代,面对良莠不齐的各色信息,在成年人尚无法全面清晰判断的情况下,少年儿童如何择其优、避其短,提升媒体素养而丰富自我、发展自我、完善自我,就成为摆在全社会面前的一个重大而紧迫的课题。本文从中国儿童中心开展的“儿童媒介之旅”实践探索,说明体验式教育活动在提升儿童媒介素养方面具有不可替代的重要作用和独特优势。  实践:体验式教育活动是提升少年儿童媒介素养的有效途径  作为国家级的综合性少年儿童校
记 者:昌平区教育信息化工作不搞大而全,而是走适合本区实际的教育信息化发展之路,请从整体上介绍昌平区近年来教育信息化建设的情况。  李金亮:近年来,在区委、区政府的统筹领导下,昌平区教育改革成果显著,学生综合素养全面提升,教育教学质量不断提高,教育信息化水平全市领先。我们始终坚持信息技术与教育教学深度融合的理念,建成了“四个中心、两个平台、一个门户”的教育信息化架构。全区教育城域网带宽达到8G,骨
又到了一年的结尾。2020年是让人难忘的一年,我们共同经历了抗击疫情的不平凡岁月,经历了全国大规模“停课不停學”在线教学实验,也经历了线下复学、中高考等一系列的防疫考验。  2020年全国教育信息化工作视频会议中,教育部要求深入总结大规模成功实现线上教育教学的经验,认真把握线上线下教育融合发展趋势,化危为机,主动实践,趁势而上,加快推进教育信息化建设。  教育信息化对抗击疫情发挥了重要作用,有效落
【摘 要】信息技术推动教育教学方式的改变已是大势所趋。本文结合作者的教学实践,在美术课程学习中通过五种美术学习方式的探索,初步形成“以云技术为载体的美术创生型学习模式”。这种新型学习模式以学习者为中心,构建学生与教师、学生与学生、学生与书籍、学生与网络、学生与生活之间的广泛联系,构成了一张多维的学习网络。它基于网络,通过iPad类智能终端来实现教学,旨在培养学生的自主学习能力、批评性思维、创新精神
研究背景  曾经,我给四年级110名学生出过这样一道填空题:————的计算机。请他们在横线上填上自己所能想到的关于计算机的词汇。结果,有57%的学生写下的词与好玩、有趣、能玩游戏相关。作为教师的我不禁问起了为什么?为什么对于计算机这样一个二十世纪最伟大的发明,我们会脱口而出“各种各样”“迅猛发展”“越来越小”“越来越智能”甚至“冯·诺依曼结构”这样专业的词汇,而我们的孩子只会说好玩?除了因为我们比
密云区位于北京市东北郊,是华北通往东北、内蒙古的重要门户,有“京师锁钥”之称。密云水库、司马台长城、古北水镇位于其境内。曾被评为“全国推进义务教育均衡发展工作先进地区”“全国阳光体育先进县”“全国科技进步先进县(市)”。近年来,密云区教委加强统筹规划与顶层设计,以教育信息化为抓手,不断推动教育资源均衡发展,提升教育质量,取得了显著效果,积累了城郊区推动教育信息化发展的经验。近日,本刊记者采访了密云
1995年,为推进石景山区无纸化办公,石景山区教育局(教委)成立了一支负责收发邮件的“信鸽”队伍,并组建信息中心规划全区教育信息化的未来;2001年,石景山区政府、区教委投入了3000万元启动“校校通”“班班通”工程,在全市率先实现了“班班通”,形成以教委为核心、各中小学、幼儿园与直属单位为支点的石景山区教育城域网。  2005年,为深入推进石景山区教育信息化的进程,成立石景山区教育信息中心。市区
当今世界科技进步日新月异,互联网、云计算、大数据等现代信息技术深刻地改变着人类的思维、生产和生活方式,也深刻地展示了人类的发展前景。各行各业的信息化步伐悄然提速。相对而言,教育领域的信息化相对迟缓,这反映了教育信息化的复杂性。面对信息技术与教育全面深度融合的形势,理论认识相对不够。“信息化不应该自上而下地推进,应该顺其自然”“教学不应该强调信息化,应该返朴归真,回归大自然”“手机简直是洪水猛兽,应
【摘 要】本文以首经贸附中开展的“行悟徽州”研学旅行活动为例,探讨在研学旅行中班主任等老师如何在研学理念、研学过程、结题报告、研学评价等方面,对学生进行引导、指导与管理,提出教师在研学过程中应具有的行为规范,从而在研学中培养学生的自理能力、创新精神和实践能力。  【关键词】研学旅行;徽州;教师;组织与管理  【中图分类号】G434 【文献标识码】B  【论文编号】1671-7384(2020)05