本案例适用于普通高中课程标准实验教材(教育科学出版社)《算法与程序设计》中的“在VB中调试代码”内容。在“代码调试”内容之前,已经将“明日之星英语演讲大赛”软件的“录入记录”模块中录入部分的代码编写完成。
“明日之星英语演讲大赛”软件的代码编写出来后,就进入了代码调试内容的学习。代码调试是一项烦杂的工作,学生将代码编写出来后,因为不熟悉调试方法的使用,遇到代码出错,经常变得束手无错,最后多半要请教老师,这对学生学习程序语言的积极性打击很大。因此,有必要让学生掌握VB的调试方法,使他们能自己找出代码中的Bug。
在讲解完代码中容易出现的三种错误类型之后,教师可以采用基于问题的学习法让学生来掌握VB调试工具的使用。
【教学过程】(约1课时)
环节一:引入学习主题、教师演示调试工具的使用方法
师:我们已经知道,程序编写中常见的错误有:编译错误、运行错误、逻辑错误。大家在编写程序的时候,经常会遇到这些错误,当遇到这些错误时,同学们一般是采用什么方法解决呢?
生:从头到尾找、问同学、问老师、根据错误提示找错误......
师:大家遇到程序错误时,除了从头到尾找、根据错误提示找错误、请教别人,还可以利用VB提供的调试工具来找错误。今天,我们就来学习VB调试工具的使用方法。
教师在大屏幕上结合实例演示VB调试工具的使用方法。
(1)设置断点;
(2)中断模式下的逐语句跟踪方式;您现在访问的是中国学科吧旗下教案网http://www.jsfw8.com/jafs/
(3)中断模式下的逐过程跟踪方式;
(4)跳过执行;
(5)立即窗口;
(6)监视窗口。
环节二:呈现错误代码、教师公布问题
师:前面我们已经将明日之星大赛软件中录入记录模块中录入部分的代码编写出来了,根据教材上的图示,“信息录入”窗口中还有一个“浏览”按钮,“浏览”按钮的功能是将输入的学生信息全部显示出来,完成信息浏览的功能。
图5-1 信息录入窗口
教师呈现给学生信息录入与信息浏览部分的程序文件,总文件夹的名字为:明日之星录入与浏览,其中包括一个工程文件:明日之星录入与浏览,两个窗口文件:frmInput与frmOut,一个标准模块:submain。您现在访问的是中国学科吧旗下教案网http://www.jsfw8.com/jafs/
教师将各部分代码的功能进行解释,并且讲解其中涉及的listView控件的使用方法。
“信息录入”部分的代码功能说明(与教材上相同):在“信息录入”窗口中,输入选手信息,点击“确定”按钮。如果“编号”、“姓名”、“班级”、“题目”中有空或“编号”不在1到50之间,弹出消息框,要求重新输入信息;如果四项信息都已输入且符合要求,弹出消息框,显示“选手信息已保存成功!”
“信息浏览”部分的代码功能说明:在“信息录入”窗口中,录入一部分学生的数据后,点击“浏览”按钮,调出“浏览选手信息”窗口,在此窗口中显示所有已输入的学生信息,每行显示一个学生的信息。
教师在大屏幕上演示代码的执行情况,“信息浏览”部分不能按预期的效果执行。您现在访问的是中国学科吧旗下教案网http://www.jsfw8.com/jafs/
教师巡视指导,对学生引导提示。同时,教师注意发现调试方法运用比较好的小组与调试方法运用不当的小组。
环节四:部分小组展示成果、班级讨论、比较优劣、教师总结
因为学生是二人小组,小组数目较多,所以教师选取几个有代表性的小组发言,其中要包括调试方法运用比较好的小组与调试方法运用不当的小组。被选小组展示他们的成果及调试过程,然后,教师组织学生针对他们的发言进行讨论,发现他们所用调试方法的优点与缺点,并对其进行比较,使学生在比较之中认识到怎样调试才能更节省时间、才能更有效地发现错误并加以改正。
最后,教师将学生调试中所用到的一些调试技巧及自己平时的调试经验进行总结。
2、listView控件的属性设置
在默认状态下,listView控件不在工具箱中,添加方法是:点击“工程”菜单――“部件”命令,在弹出的“部件”对话框中选中“控件”标签,再选中“MicrosoftWindowsCommonControls6.0”,点击“确定”按钮。
双击工具箱中的listView控件,将其添加到“浏览选手信息”窗口之中,再右击listView控件,从弹出的快捷菜单中选择“属性”,将会调出下图所示的“属性页”对话框:
图5-4 listView控件属性对话框您现在访问的是中国学科吧旗下教案网http://www.jsfw8.com/jafs/
(1)选择“属性页”对话框中的“通用”标签,在“查看”属性中选择“3-lvwReport”,并选中“网格行”复选框。
(2)选择“列首”标签,点击“插入列”按钮,插入索引为1的列,“文本”属性内填:编号。重复点击“插入列”按钮三次,分别插入索引为2、3、4的三列,“文本”属性依次填写为:姓名、班级、演讲题目。
(3)点击“确定”按钮。
3、代码
标准模块(submain)代码:
OptionBase1
PublicaryInfo(50,5)AsString'定义记录选手信息和分数的数组
“信息录入”窗口(frmInput)中“确定”按钮(cmdSure)代码(与教材上相同):
PrivateSubcmdSure_Click()
DimintNumAsInteger
DimfileNameAsString您现在访问的是中国学科吧旗下教案网http://www.jsfw8.com/jafs/
OnErrorGoToErrorHandle
'**********以下进行数据校检**********************
IfTrim(txtNo.Text)=""Then
MsgBox"选手编号为空,请输入!",vbOKOnly+vbCritical,"信息录入"
txtNo.SetFocus
ExitSub
EndIf
IfVal(Trim(txtNo.Text))<1OrVal(Trim(txtNo.Text))>50Then
MsgBox"输入的号码无效,请重新输入!",vbOKOnly+vbCritical,"信息录入"
txtNo.SetFocus
ExitSub
EndIf
IfTrim(txtName.Text)=""Then
MsgBox"请输入选手姓名",vbOKOnly+vbCritical,"信息录入"您现在访问的是中国学科吧旗下教案网http://www.jsfw8.com/jafs/
ExitSub
EndIf
IfTrim(txtClass.Text)=""Then
MsgBox"请输入选手班级!",vbOKOnly+vbCritical,"信息录入"
txtClass.SetFocus
ExitSub
EndIf
IfTrim(txtTitle.Text)=""Then
MsgBox"请输入演讲的题目!",vbOKOnly+vbCritical,"信息录入"
txtTitle.SetFocus
ExitSub
EndIf
'****************************************************
'将选手信息读入数组
intNum=txtNo.Text
aryInfo(intNum,1)=txtNo.Text