首页:一级考试::二级vb::二级vfp::二级c语言::二级vc++::三级偏软::三级偏硬::成绩查询::在线视频教学::网上书店::有问必答
三步逐过程法”解二级VisualBasic上机考试改错题

显然,该程序的组成如下图所示:

 程序结构图      

    那么,我们如何分析出各个过程的功能呢?

        核心技巧是从输出语句着手, 逆向推导, 分析各变量的含义, 进而根据过程的输入参数及其输出或者反馈, 分析出此过程的功能。

1.     标记出输出语句

输出语句有两句:

1)、Text1 = Text1.Text & Str(I) & "  "

2)、If K Mod 5 = 0 Then Text1 = Text1 & Chr(13) & Chr(10)

2.     逆向推导分析各变量的含义

对于输出语句(1),显然是将符合条件的数I显示到文本框。而根据题意,符合条件的数必须满足:2000以内和因子和为素数两个条件,因此,我们从语句(1)逆向推导,我们知道I是由22000的循环变量,并且只有满足Prime(Sum)True的才能显示到文本框,因此,我们知道Sum应该是I的因子和;对于输出语句(2),后半句的功能是为了实现回车和换行,结合K Mod 5=0以及逆向找出的K=K+1,我们知道,K的功能是为了控制输出按照每5个换行进行。

3.     分析过程功能

对于语句Call Fctor(ISum),由于此时的I22000的循环变量,SumI的因子和,因此我们可以判定Fctor的功能是求I的因子和,并将该和赋给Sum变量;根据Prime(Sum),我们可以判定Prime的功能是对Sum值进行是否是素数的判定,如果是,则返回True,否则返回False

步骤二: 从通用过程入手, 逐过程输入并逐过程调试.

核心技巧是将通用过程输入后, 根据步骤一中分析出的各过程的功能,用含有具体参数值的过程调用语句来调试过程, : 给定确定的输入, 看有无准确的输出或者反馈

那么如何构造含有具体参数值的过程调用语句呢?

对于Function过程,由于有输入参数和返回值,因此比较好构造调用调试语句。譬如,对于Prime过程,由步骤一中我们已经知道其作用是用于判断输入参数是否为素数,如果为素数则返回True,否则返回False。因此我们可以构造:

Print Prime(7)Prime(10)

为此,我们只要在窗体上放置一个按钮Command1,在Command1_Click中输入Print Prime(7)Prime(10)即可,若输出为“True  False”,则该过程正确。如此操作,调试结果为:

调试提示

由此,我们将Exit Sub修改为Exit Function,运行正确。

对于Sub过程,其没有返回值,因此该过程的反馈信息将可以通过两种方式得到,一种是直接在Sub中使用输出语句显示运行结果;一种是利用按地址传递的参数将反馈信息由被改变的实参带出。对于FctorNS)过程,根据步骤一,知其功能是,求N的因子和并由S带出。为此,首先,我们根据给定的可以设定N16。

              1.       输入Prime过程, print prime(7),prime(10)来调试;

              2.       输入fctor过程,

      dim s as integer

      call fctor(16,s)

      print s

   来调试.

步骤三: 对于事件过程, 若代码较长, 则逐程序块输入并调试(程序块通常以循环来区分)

        核心技巧: 在事件过程中, 将完成对通用过程的调用组装, 因此特别留意以下三点:

循环:注意循环变量的初值、终值和步长以及累积量的初值。

数组:元素从

本新闻共3页,当前在第2页  1  2  3  

  江苏省计算等级考试命题研究中心版权所有