表格法辅助阅读递归调用程序

来源 :考试周刊 | 被引量 : 0次 | 上传用户:cxxcxj
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: 阅读递归调用程序进行答题是大学计算机Visual Basic二级考试的重要题型,也是教学中的难点之一。使用表格法辅助阅读递归调用的程序,能够使学生有法可依,克服畏难情绪,有效防止出错。对于阅读复杂的递归调用程序,表格法更能显示其有效作用。
  关键词: Visual Basic二级考试 表格法 递归调用程序
  
  在Visual Basic程序设计中,允许用户自定义的子过程或函数过程在过程体的内部调用自己,这样的子过程或函数过程称为递归子过程或者递归函数。我们在设计程序时碰到的许多问题都具有递归的特性,用递归调用的方式描述它们会非常方便,能使程序设计化繁为简。因此,对递归程序调用的读写训练是Visual Basic程序设计教学中的重要内容,也是Visual Basic二级考试的重要题型。
  在递归调用程序中,比较容易阅读的是求解数学上阶梯函数的递归调用程序。首先在程序中找到递推语句、递归结束条件及递归结束时的值,根据递推语句一步一步递推,直到条件成立获得递归结束时的值,使递推结束;然后一步一步回归,即可求得函数的值。递推的轨迹和回归的轨迹都比较清晰。若递推语句之后还有赋值语句或输入输出语句等,则递推的每一步要将许多参数压栈,回归的每一步又要根据先前压栈的相关参数确定若干变量的值,程序阅读起来就比较复杂。使学生能顺利正确地阅读这类程序是教学难点之一。教学实践表明,在阅读递归调用的程序时引入表格法,可以使学生感觉有方法可依,能够按部就班地阅读程序,克服畏难情绪,也能够有效防止出错。越是阅读复杂的递归调用程序,表格法越是能显示其有效作用。本文以一道Visual Basic二级考试题为例,介绍怎样采用表格法辅助阅读递归调用程序。
  例题如下:运行下面的程序,单击命令按钮Command1,则在窗体上显示的第一行内容是?摇?摇?摇,第二行内容是?摇?摇?摇,最后一行内容是。
  Private Sub Command1_Click()
  Dim N%,M%,Lcm%
  N=16
  M=64
  Lcm=Recursion(N,M)
  Print "Lcm=";Lcm
  End Sub
  
  Private Function Recursion%(A%,B%)
  Static k As Integer
  k=k+1
  If A Mod B=0 Then
   ?摇Recursion=A
  Else
   ?摇Recursion=2*Recursion(A+A/k,B)
  End If
  Print 2*A,k
  k=k-1
  End Function
  1.通读程序找出递推语句和递推结束语句
  在本例中,程序由主过程Command1_Click()和函数过程Recursion%(A%,B%)构成。在主过程中从“Lcm=Recursion(N,M)”语句开始调用函数过程Recursion%(A%,B%)。函数过程Recursion%(A%,B%)以A、B为形式参数,采用传址调用。“Recursion=2*Recursion(A+A/k,B)”语句为递推语句。“A Mod B=0”是递推结束的条件,“Recursion=A”语句是递推结束语句。程序执行过程中,只要“A Mod B=0”条件不为True,就使递推语句“Recursion=2*Recursion(A+A/k,B)”执行一次,直到“A Mod B=0”条件为True,执行“Recursion=A”语句,递推才结束。
  2.用表格演绎递推过程
  表一是为阅读递归调用程序而设计的表格,其横向从左向右表示递推的步骤,每一列表示递推一步,即调用自身一次;纵向依序是程序执行语句中的表达式。表格的含义就是每递推一步,程序中各表达式依照其顺序应该获得什么值。在阅读程序时,程序的阅读者首先应该按照程序语句执行的顺序将各个表达式填入表格,然后开始逐步递推。在递推过程每一步中,要填写递推步骤序号,填写在本步递推中各个表达式获得的值。对于本例而言,因为“A Mod B=0”是递推结束条件,当在某一步中A与B的值相等时,表明该步骤是递推的最后一步了。从已填的表格可见,在递推结束之前,递推结束条件“A Mod B=0”在每一步均为False,因此执行“Recursion=2*Recursion(A+A/k,B)”语句。而“Recursion=2*Recursion(A+A/k,B)”语句并不能立即获得具体的值,要用“A+A/k,B”作为实际参数调用Recursion%(A%,B%)函数一次。当递推结束条件“A Mod B=0”的值为True,Recursion获得值64,即获得参数A的值,递推结束。在递推结束后,程序要向下执行语句“Print 2*A,k”和“k=k-1”,开始回归。因此,在递推的最后一步,程序阅读者还应该填写表达式“2*A,k”和“k”的值。
  3.用表格演绎回归过程
  在表一的下方再增加一行,从右向左表示回归的步骤,如表二所示。在本例中,回归的每一步做三件事:(1)根据得到的Recursion值计算“2*Recursion”的值并赋值给Recursion自身;(2)执行“Print 2*A,k”语句;(3)执行“k=k-1”语句。表格中后三栏分别记录“2*Recursion”、“2*A,k”、“k”三个表达式在回归的每一步中所获得的值。因此,在回归的每一步中,程序阅读者应该做的事情是分别填写表达式“2*Recursion”、“2*A,k”、“k”的值。
  4.根据表格答题
  程序阅读者根据所填的表二,就可以进行答题工作,即填写题目所留的空格。依据程序,在窗体上显示信息是由函数过程中的语句“Print 2*A,k”和主过程中的语句“Print “Lcm=”;Lcm”完成。“Print 2*A,k”语句在回归的每一步中执行一次,显示一行信息,即表达式“2*A,k”的值,共显示四行。主过程中的语句“Print “Lcm=”;Lcm”执行一次,在窗体上显示的信息为第五行。
  因此,在窗体上显示的第一行内容是128?摇4,第二行内容是96?摇3,最后一行内容是Lcm=512。
  5.结语
  本文为参加Visual Basic二级考试的学生阅读递归调用程序提供了一种有效的方法,这种方法能够有效地阅读复杂的递归调用程序,防止出错。使用这种方法达到熟练以后,在阅读递归调用程序时不一定要画出表格,可以在程序的旁边根据递推与回归的步骤,按行按列依序写出各个表达式的值,但要做到心中有表。
  
  参考文献:
  [1]龚沛曾,杨志强,陆慰民.Visual Basic程序设计教程[M].北京:高等教育出版社,2007.
  [2]江苏省高等学校计算机等级考试中心.二级考试试卷汇编Visual Basic语言分册[M].苏州:苏州大学出版社,2005.
其他文献
摘 要: 课堂教学是学校教育的主渠道,是学生获取知识、培养能力的主要途径,也是教师专业能力、教学水平的集中体现。能否进行扎实而有效的课堂管理决定了教学的成败,在新课程背景下开展多媒体课堂教学,仍然需要采用科学、和谐、有效的课堂管理方式。  关键词: 课堂教学管理 多媒体课堂教学 有效管理    一、课堂教学管理的重要性  在平常的备课中,很多教师往往特别注重对学科教学内容的研究,却忽视了研究在课堂
目前,中专生厌学体育的现象较为突出,体育课上的学习气氛不太活跃。造成这种状况的原因是多方面的,既有教师的因素,又有学生的因素。其中教师对学生在体育教学中的非智力因素的忽视是一个很重要的原因。那么,非智力因素在中专体育教学中究竟有什么作用?教师在体育教学中又应如何发挥这些作用呢?  一、非智力因素及其在中专体育教学中的作用  非智力因素,从广义上讲包括智力以外的心理因素、环境因素、生理因素及道德品质
摘 要: 本文对职业技术学校的计算机基础实践课程的现状进行了分析,认为采用传统教学方法难以适应高速发展的计算机技术,应该扬弃陈旧的内容,选取适宜的教材,增加教学投入并加强师资队伍建设,采用“双师型”教师,坚持以项目教学为主,穿插传统教学,以提高学生的综合素质,培养技能型人才。  关键词: 计算机基础课程教学 实践教学 教学改革 项目教学法    1.引言  近年来,我国职业技术教育蓬勃发展,为现代
会议
1972年北京市结核病防治所成立了农村科,负责开展北京市所属十个县的农村结核病控制工作。农村科的同志们热爱农村防痨工作,经常深入农村和山区,十分努力。十个县都陆续成立