为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > vb程序调试

vb程序调试

2017-11-15 11页 doc 257KB 34阅读

用户头像

is_650122

暂无简介

举报
vb程序调试vb程序调试 程序调试 假设我们要开发这样的一个排序程序:首先要求用户在Text1中输入一整数,点击“添加”按钮后将该整数添加到“初始序列”List1中,如此多次后,再点击“排序”按钮,在List2中显示排序结果,我们期望的运行结果如图6,3所示。 图6,3 期望的程序运行结果 要求: (1)按图6,4进行界面设计 图6,4 排序程序的界面设计 (2)根据如下所给程序代码进行程序调试 Private Sub Command1_Click() List1.AddItem Text.Text End Sub...
vb程序调试
vb程序调试 程序调试 假设我们要开发这样的一个排序程序:首先要求用户在Text1中输入一整数,点击“添加”按钮后将该整数添加到“初始序列”List1中,如此多次后,再点击“排序”按钮,在List2中显示排序结果,我们期望的运行结果如图6,3所示。 图6,3 期望的程序运行结果 要求: (1)按图6,4进行界面设计 图6,4 排序程序的界面设计 (2)根据如下所给程序代码进行程序调试 Private Sub Command1_Click() List1.AddItem Text.Text End Sub 排序按钮的Click事件 Private Sub Command2_Click() Dim i, j As Integer '定义数组,以List1的项目个数为数组维数 Dim strList(List1.ListCount) As Integer '定义中间临时变量,用于数据交换 Dim strTmp As Integer '将List1中的项目导入到strList数组中 For i = 0 To List1.ListCount strList(i) = List1.List(i) Next i '按“冒泡”算法完成排序工作 For i = 0 To UBound(strList) For j = i + 1 To UBound(strList) If strList(i) > strList(j) Then strTmp = strList(i) strList(i) = strList(j) strList(j) = strTmp End If Next j Next i '将排序结果输出到List2中 For i = 0 To UBound(strList) List2.AddItem strList(i) Next i End Sub (3)运行程序,在Text1文本框中输入一个整数,比如1,然后点击“添加”按钮, 此时会出现如图6,5所示的错误提示。 图6,5 实时错误 (4)点击“调试”按钮,进入中断模式,VB编译器将自动标识出引发错误的语句行, 如图6,6所示窗体。 图6,6 自动定位引发错误的语句行 (5)分析错误原因,很容易发现该行语句的正确写法应该是: List1.AddItem Text1.Text (6)修改错误后,按F5键继续执行程序,将出现如图6,7所示界面。 图6,7排序程序运行界面 (5)在上述界面上依次输入以下整数序列“21,9,8,6”后,将出现如图6,8所示界面。 图6,8 输入初始序列后的界面 (6)点击“排序”按钮后,又出现如图6,9所示的运行错误。 图6,9 编译错误 (7)点击“确定”按钮后,再次进入中断模式,编译器以加重的形式指出了引发错误 的位置,如图6,10所示。 引发错误的位置 图6,10 以加重显示的方式定位错误 (8)分析图6,9所示的错误提示“要求常数表达式”后,发现引用错误的原因是不能 用变量作为数组的下标,即下列数组声明语句不符合VB语法约定: Dim strList(List1.ListCount) As Integer 为此我们做如下选择,即采用动态数组声明的 Dim strList() As Integer ReDim strList(List1.ListCount) As Integer (9)选择完成后,按F5键继续执行,又会出现如图6,11所示的错误提示。 图6,11类型不匹配错误提示 (10)点击“调试”按钮后,错误定位如图6,12所示。 图6,12 类型不匹配错误定位 (11)分析错误原因发现,我们将数组strList()声明为Integer数据类型,而List1.List()表示的是字符型数据,VB无法进行自动类型转换,因此我们只能通过Val函数进行转换: strList(i) = Val(List1.List(i)) (12)按F5键继续,程序成功运行,出现如图6,11所示界面。这说明语法错误已基本排除了。但是观查运行结果,发现“排序结果”序列中多出了一个数值0。这种结果并不是我们期望的。 图6,11 有问题的运行结果 (13)关闭程序,重新运行,仍然出现图6,11的问题,这说明程序中存在逻辑问题,需要进一步调试。 (14)设置断点,分析逻辑错误。用鼠标点击如图6,12所示位置设置断点 图6,12 设置断点 (15)按F5键运行程序并输入一组整数,比如“5,4,3,2”。点击“排序”按钮后,程序将进入中断模式,出现如图6,13所示界面。 程序在此处中断 图6,13 程序遇到断点 (16)在VB集成环境的“立即”窗口中,使用“,”打印strList数组的上界和相关的值,如图6,14所示。当然也可以使用Print、Debug.Print命令,它们等效于,。 图6,14 在“立即”窗中观查变量的值 (17)仔细分析不难发现,List1.ListCount的最大值是4,说明数字序列中共有4个 数,即“5,4,3,2”。但是List1.List()的下标是从0开始的,下标最大值应该为3,即: List1.ListCount – 1 为些,我们需要选择strList()数组的上界和循环次数。 '个性数组声明 ReDim strList(List1.ListCount - 1) As Integer '修改循环次数 For i = 0 To List1.ListCount - 1 strList(i) = Val(List1.List(i)) Next i (18)修改后的完整代码及运行结果如图6,15、图6,16所示。 图6,15 修改后的代码 图6,16 最终的运行结果 注意:提交“vbxk6,程序调试”文件夹。
/
本文档为【vb程序调试】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索