《基本的控制结构.ppt》由会员分享,可在线阅读,更多相关《基本的控制结构.ppt(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章第四章 基本的控制结构基本的控制结构 4.1 4.1 顺序结构顺序结构 4.2 4.2 选择结构选择结构 4.3 4.3 循环结构循环结构 4.4 4.4 其他辅助控制语句其他辅助控制语句 4.5 4.5 综合应用综合应用 4.6 4.6 程序调试程序调试 4.7 4.7 常见错误常见错误4.1 顺序结构顺序结构 顺顺序序结结构构就就是是各各语语句句按按出出现现的的先先后后次次序序执执行行。一一般般的的程程序序设设计计语语言言中中,顺顺序序结结构构的的语语句句主主要要是是赋赋值值语语句句、输输入入/输输出出语语句句等等。在在VB中中也也有有赋赋值值语语句句;而而输输入入/输输出出可可以以
2、通通过过文文本本 框框 控控 件件、标标 签签 控控 件件、InputBox函函 数数、MsgBox函数或过程及函数或过程及Print方法等来实现。方法等来实现。本章目录本章目录4.1.1 赋值语句赋值语句 形式:形式:LETLET变量名表达式变量名表达式 或者或者 对象对象.属性属性=属性值属性值 作用:作用:将表达式的值赋值给变量名或属性名。将表达式的值赋值给变量名或属性名。一般用于给变量赋值或对控件设定属性值。一般用于给变量赋值或对控件设定属性值。例:例:sum!=sum+x Text1.Text 欢迎使用欢迎使用Visual Basic 6.0 注意:注意:当表达式值的精度与变量的精度
3、不一致时,强制转换成左边当表达式值的精度与变量的精度不一致时,强制转换成左边的精度,如的精度,如m%=10/3,则,则m中的结果为中的结果为3当表达式是数字字符串,左边变量是数值类型,自动转换为当表达式是数字字符串,左边变量是数值类型,自动转换为数值类型再赋值,但表达式有非数字字符时,则出错。数值类型再赋值,但表达式有非数字字符时,则出错。例如:例如:n%=“123”n%=“12a3”当逻辑型赋值给数值型时,当逻辑型赋值给数值型时,True转换为转换为-1,False转换为转换为0;反之当数值型赋值给逻辑型时,非;反之当数值型赋值给逻辑型时,非0转换为转换为True,0转转换为换为False。
4、任何非字符类型赋值给字符类型,自动转换为字符类型。任何非字符类型赋值给字符类型,自动转换为字符类型。虽然赋值号与关系运算符等于号都用虽然赋值号与关系运算符等于号都用“=”表示,表示,VB系统系统会根据所处的位置自动判断是何种意义的符号。会根据所处的位置自动判断是何种意义的符号。赋值号左边只能是变量,不能是常量、常数符号或表达式。赋值号左边只能是变量,不能是常量、常数符号或表达式。如:如:x+y=3,sin(x)=x+z理解理解n=n+1与与s=s+x语句的含义。语句的含义。4.1.2 4.1.2 数据的输入与输出数据的输入与输出1.1.标签和文本框控件标签和文本框控件 标签可以输出信息,文本框
5、即可输入也可输出信息。标签可以输出信息,文本框即可输入也可输出信息。2.2.输入对话框输入对话框InputBox函数函数 InputBox$(提示提示,标题标题,默认值默认值,Xpos,Ypos)其中:其中:1)提示提示:字符串,长度不超过字符串,长度不超过1024个字符,用来提示用户输入。文个字符,用来提示用户输入。文本可自动换行。如想强制插入回车换行则用:本可自动换行。如想强制插入回车换行则用:Chr$(13)+Chr$(10)或常数或常数vbCrLf。2)标题标题:字符串,对话框标题,显示在对话框顶部的标题区。:字符串,对话框标题,显示在对话框顶部的标题区。3)默认值默认值:字符串,用来
6、显示输入区的默认初值。字符串,用来显示输入区的默认初值。4)Xpos,Ypos:是两个整数值,确定对话框在屏幕上的位置;如:是两个整数值,确定对话框在屏幕上的位置;如果省略,则对话框显示在屏幕中心线向下约果省略,则对话框显示在屏幕中心线向下约1/3处。处。使用使用InputBox函数时的注意事项:函数时的注意事项:1)默认值表示输入的初始默认值,如果直接按下回车键或单)默认值表示输入的初始默认值,如果直接按下回车键或单击击“确定确定”按钮,函数的返回值(函数值)为该默认值。按钮,函数的返回值(函数值)为该默认值。2)变量名)变量名=InputBox(参数表)参数表)函数值默认为字符类型。输入数
7、值时,函数值可以利用函数值默认为字符类型。输入数值时,函数值可以利用 Val函数转换为数值后,再参加运算。如果变量已被正确地定函数转换为数值后,再参加运算。如果变量已被正确地定义了类型时,则不必进行类型转换。义了类型时,则不必进行类型转换。3)输入数据后,按回车键或单击)输入数据后,按回车键或单击“确定确定”按钮表示确认,并按钮表示确认,并返回在文本框中输入的数据;如果单击返回在文本框中输入的数据;如果单击“取消取消”按钮(或按钮(或按按Esc 键)时,则取消当前的输入,此时该函数返回一个键)时,则取消当前的输入,此时该函数返回一个空字符串。空字符串。4)需要输入多个值,则必须多次执行或调用)
8、需要输入多个值,则必须多次执行或调用InputBox函数。函数。例例4.1利利用用InputBox输输入入基基本本工工资资和和营营业业额额,按按营营业业额额的的5%提成,计算实发工资并显示。提成,计算实发工资并显示。Private Sub Form_Click()Dim sfgz!,jbgz!,y As Single jbgz=Val(InputBox(输入基本工资输入基本工资,计算工资计算工资,300)y=Val(InputBox(输入本月营业额输入本月营业额)sfgz=jbgz+y*0.05 Print 本月营业额为:本月营业额为:&y&基本工资为:基本工资为:&jbgz Print 本月
9、实发工资为:本月实发工资为:&sfgzEnd Sub作作用用:打打开开一一个个信信息息框框,等等待待用用户户选选择择一一个个按按钮钮。MsgBox函函数数返返回回所所选选按按钮钮的的值值,MsgBox过过程程不不返回值。返回值。MsgBox函数形式:函数形式:MsgBox(提示提示,按钮按钮,标题标题)MsgBox过程形式:过程形式:MsgBox 提示提示,按钮按钮,标题标题 其其中中:按按钮钮项项是是一一整整型型表表达达式式,决决定定信信息息框框按按钮钮的的数目、类型及出现在信息框上的图标形式。数目、类型及出现在信息框上的图标形式。3.消息对话框消息对话框MsgBox函数和函数和MsgBox
10、过程过程MsgBox按钮设置按钮设置 第第3个按钮为默认个按钮为默认512vbDefaultButton3第第2个按钮为默认个按钮为默认 56vbDefaultButton2第第1个按钮为默认个按钮为默认 0vbDefaultButton1默认默认按钮按钮 信息图标信息图标 64vbInformation警告信息图标警告信息图标 48vbExclamation询问信息图标询问信息图标 32vbQuestion关键信息图标关键信息图标 16vbCritical图标图标类型类型 重试、取消按钮重试、取消按钮 5vbRetryCancel是、否按钮是、否按钮 4vbYesNo是、否、取消按钮是、否、
11、取消按钮 3vbYesNoCancel终止、重试、忽略按钮终止、重试、忽略按钮 2vbAboutRetryIgnore确定、取消按钮确定、取消按钮 1vbOkCancel确定按钮确定按钮 0vbOkOnly按钮按钮数目数目 描描 述述值值内内 部部 常常 数数分组分组 MsgBox所选按钮返回值所选按钮返回值 内部常数内部常数返回返回值值被被单击单击的按的按钮钮vbOk1确定确定vbCancel2取消取消vbAbort3终终止止vbRetry4重重试试vbIgnore5忽略忽略vbYes6是是vbNo7否否例例4.2编一帐号和密码检验程序。要求:编一帐号和密码检验程序。要求:帐号不超过帐号不超
12、过6位数字,有错,清除原内容再输入。位数字,有错,清除原内容再输入。密码输入时在屏幕上以密码输入时在屏幕上以“*”代替;代替;若密码错,显示有关信息,若密码错,显示有关信息,选择选择“重试重试”按钮,清除原内容再输入,选择按钮,清除原内容再输入,选择“取消取消”按钮,停止运按钮,停止运行。行。分析:分析:帐号帐号6位,位,MaxLength为为6,LostFocus判断数字判断数字IsNumeric函函数数;密码密码PassWordChar为为“*”,MsgBox函数设置密码错对话框。函数设置密码错对话框。4.Print方法方法作用作用:在对象上计算并输出表达式的信息。在对象上计算并输出表达式
13、的信息。格式:格式:对象对象.PrintSpc(Spc(n n)|Tab()|Tab(n n);输出列表输出列表;|,;|,说明:说明:对象:对象:窗体、图形框或打印机,缺省为窗体;窗体、图形框或打印机,缺省为窗体;Spc(n n)函数:函数:从当前位置起空从当前位置起空n n个空格;个空格;Tab(n n)函数:函数:从最左端开始的第从最左端开始的第n n列上输出;列上输出;分号:分号:紧凑格式,定位在上一个紧凑格式,定位在上一个被被显示的字符显示的字符之之后;后;逗号:逗号:标准格式,定位在下一个打印区开始处标准格式,定位在下一个打印区开始处(每区每区1414列列);PrintPrint语
14、句尾无分号或逗号,输出后换行。语句尾无分号或逗号,输出后换行。例例4.34.3 Print Print方法输出图形方法输出图形 125.Format格式输出函数格式输出函数 形式:形式:Format(表达式表达式,格式字符串格式字符串)常用数值格式化符及举例常用数值格式化符及举例 1.23E+030.00E+001234.567用指数表示用指数表示E+$1234.57$#.#1234.567在数字前强加在数字前强加123456.7%#.#%1234.567数值乘以数值乘以100,加百分号,加百分号%1,234.567#,#0.0001234.567千分位千分位,1234.567#.#1234.
15、567位置不足时不填充位置不足时不填充0#01234.567000000.00001234.567用用0填充不足的位置填充不足的位置0显示结果显示结果格式字符串格式字符串表达式表达式作作 用用符号符号例例4.4 利用利用Format函数显示数值。函数显示数值。134.2 选择结构选择结构 计计算算机机要要处处理理的的问问题题往往往往是是复复杂杂多多变变的的,仅仅采采用用顺顺序序结结构构是是不不够够的的。必必须须利利用用选选择择结结构构等等来来解解决决实实际际应应用用中中的的各各种种问问题题。VB中中提提供供了了多多种种形形式式的的条条件件语语句句来来实实现现选选择择结结构构,有有If条条件件语
16、语句句和和Select情情况况语语句句等等。它它们们都都是是对对条条件件进进行行判判断断,根根据据判判断断结结果果,选选择择执执行不同的分支。行不同的分支。本章目录本章目录 1.IfThen1.IfThen语句语句(单分支结构单分支结构)If Then 语句块语句块 End If 或或 If Then 例例4.5 已知两个数已知两个数x和和y,比较它们的大小,比较它们的大小,使得使得x大于大于y.If xy Then t=x x=y y=t End If 或或 If xy Then t=x:x=y:y=t重要的是学会两个数的交换,若上述语句次序变一下,结果如何?重要的是学会两个数的交换,若上述
17、语句次序变一下,结果如何?4.2.1 If条件语句条件语句 注意:注意:If语句中的表达式一般为关系表达式、逻辑表达式,也可语句中的表达式一般为关系表达式、逻辑表达式,也可以是算术表达式。表达式值按非零为以是算术表达式。表达式值按非零为True,零为,零为False判判断。断。语句块中的语句可以是一条或多条语句。若是用行结构的语句块中的语句可以是一条或多条语句。若是用行结构的形式,则多条语句必须写在同一行上,且语句之间用冒号形式,则多条语句必须写在同一行上,且语句之间用冒号隔开。隔开。一般来说,语句块只有一条语句时用行结构,多条语句时一般来说,语句块只有一条语句时用行结构,多条语句时用块结构。
18、用块结构。块结构与行结构的区别:块结构与行结构的区别:看看Then后面的语句是否在同一行后面的语句是否在同一行上,若在同一行就是单行结构,否则为块结构,块结构必上,若在同一行就是单行结构,否则为块结构,块结构必须以须以End if结束。结束。2.IfThenElse2.IfThenElse语句语句(双分支结构双分支结构)If Then Else End If If Then Else 例4.6 计算分段函数:单分支结构实现:单分支结构实现:y=cos(x)x3+3*x If x0 Then y=sin(x)+sqr(x*x+1)双分支结构实现双分支结构实现:If x0 Then y=sin(x
19、)+sqr(x*x+1)Else y=cos(x)x3+3*x End If3.IfThenElseIf3.IfThenElseIf语句语句(多分支结构多分支结构)形式:形式:If Then ElseIf Then Else 语句块语句块 n+1 End If注意注意:1)此处此处Else和和If之间不能有空格,否则程序出错。之间不能有空格,否则程序出错。2)“表达式表达式1-n”都是逻辑表达式。都是逻辑表达式。3)不管有几个分支不管有几个分支,程序执行了满足条件的一个分支后程序执行了满足条件的一个分支后,其余分支不再执行。其余分支不再执行。4)一个多分支结构中只有一个一个多分支结构中只有一个
20、End If语句。语句。5)当多分支中有多个表达式同时满足时,只执行第一个与之匹配的语句块。当多分支中有多个表达式同时满足时,只执行第一个与之匹配的语句块。注意多分支中表达式的书写顺序。注意多分支中表达式的书写顺序。6)块结构的条件语句可以嵌套块结构的条件语句可以嵌套。例例4.7 已知变量已知变量ch中存放了一个字符,判断该字符是字母字符、数字字符中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。还是其他字符。用多分支结构实现用多分支结构实现:ch=InputBox(input)If Ucase(ch)=A And Ucase(ch)=0 And ch=9 Then Print c
21、h+是数字字符是数字字符 Else Print ch+其他字符其他字符 End If 不管有几个分支,依次判断,当某条件满足,执行相应的语句,其余分支不管有几个分支,依次判断,当某条件满足,执行相应的语句,其余分支不再执行;若条件都不满足,且有不再执行;若条件都不满足,且有Else子句,则执行该语句块,否则什么也不子句,则执行该语句块,否则什么也不执行。执行。ElseIf不能写成不能写成 Else If。例例4.8 已知百分制成绩已知百分制成绩mark,显示对应的五级制成绩,显示对应的五级制成绩 哪些正确,哪些错误?哪些正确,哪些错误?4 4IfIf语句的嵌套语句的嵌套 If语句的嵌套是指语句
22、的嵌套是指If或或Else后面的语句块中又包含后面的语句块中又包含If语句。语句。形式如下:形式如下:If Then If Then End If End If 例例 已知已知x,y,z三个数,使得三个数,使得xyz用一个用一个IF语句和一个嵌套的语句和一个嵌套的IF语句实现语句实现 If xy Then t=x:x=y:y=t If yz Then t=y:y=z:z=t If xy Then t=x:x=y:y=t End If End IfIf语句的嵌套注意事项:书写锯齿型;语句的嵌套注意事项:书写锯齿型;If 与与End If配对。配对。:与:与同类型的下面四种形式之一:同类型的下面四
23、种形式之一:(1)表达式表达式 例例:A (2)一组枚举表达式一组枚举表达式(用逗号分隔用逗号分隔)2,4,6,8 (3)表达式表达式1 To 表达式表达式2 60 To 100 (4)Is 关系运算符表达式关系运算符表达式 Is =A And Ucase(ch)=0 And ch 0 And y 0 ThenIf x 0 And y 0 Then Print Print 在第一象限在第一象限 ElseIf x 0 ThenElseIf x 0 Then Print Print 在第二象限在第二象限 ElseIf x 0 And y 0 ThenElseIf x 0 And y 0 And y
24、 0 And y 0 And y 0 Case x 0 And y 0Print Print 在第一象限在第一象限 Case x 0 Case x 0Print Print 在第二象限在第二象限 Case x 0 And y 0 Case x 0 And y 0 And y 0 And y y,x,y)(2)Choose函数形式是:函数形式是:Choose(数值类型变量,选项列表(数值类型变量,选项列表)例如,例如,Nop是是1-4的值,转换成的值,转换成+、-、运算符的语句如下:运算符的语句如下:Op=Op=Choose(Nop,+,-,)当值为当值为1,返回字符串,返回字符串“+”+”,然
25、后放入,然后放入OpOp变量中,变量中,值为值为2,返回字符串,返回字符串“-”-”,依次类推;,依次类推;当当Nop是是1-4的非整数,系统自动取的非整数,系统自动取Nop的整数办法在判的整数办法在判断;若断;若Nop不在不在14之间,函数返回之间,函数返回Null值。值。(3)Switch函数形式是:函数形式是:Switch(条件表达式(条件表达式1,条件表达式,条件表达式1为为True时的值时的值,条件表达式,条件表达式2,条件表达式,条件表达式2为为True时的值时的值)4.3.1 For循环语句循环语句(用于循环次数已知)1.语句形式 For 循环变量初值循环变量初值 to 终值终值
26、 Step 步长步长 语句块语句块Exit For 语句块语句块 Next 循环变量循环变量 循环变量 0 初值初值终值终值 =1 时时,可省略可省略终值终值=0 死循环死循环(3)循环次数循环次数(2)步长步长其中:其中:(1)循环变量必须为数值型。循环变量必须为数值型。2.执行流程4.3 循循 环环 结结 构构3.注意的问题注意的问题 (1)出了循环,循环控制变量值的问题。出了循环,循环控制变量值的问题。例程序段:例程序段:For i=2 To 13 Step 3 Print i,Next i Print :Print“I=“,i例例4.11 计算计算1100的奇数和,程序段如下:的奇数和
27、,程序段如下:Dim i%,s%s=0 For i=1 To 100 step 2 s=s+i Next i Print s循环执行次数循环执行次数输出输出 i的值分别为的值分别为:2 5 8 11出了循环输出为出了循环输出为:I=14例例 改变改变循环控制变量对循环的影响。循环控制变量对循环的影响。Private Sub Command1_Click()j=0 For i=1 To 20 Step 2 i=i+3 j=j+1 Print 第第;j;次循环次循环i=;i Next i Print 退出循环后退出循环后i=;i End Sub正常情况:正常情况:i=1,3,5,7,9,11,13
28、,15,17,19现在:现在:i=4,9,14,19(2)在循环体内对循环控制变量可多次引用;但最好不要对)在循环体内对循环控制变量可多次引用;但最好不要对其赋值,否则影响原来的循环控制规律。其赋值,否则影响原来的循环控制规律。计算下列循环语句的次数:计算下列循环语句的次数:(1)For i=-3 To 20 step 4 (2)For i=-3.5 To 5.5 step 0.5(3)For i=-3.5 To 5.5 step-0.5 (4)For i=-3 To 20 step 0解答解答(1)循环次数为)循环次数为6次次(2)循环次数为)循环次数为19次次(3)不循环)不循环(4)无数
29、次,死循环)无数次,死循环例例4.12 输出可打印的输出可打印的ASCII码字符与它的编码值。码字符与它的编码值。4.3.2 DoLoop循环语句循环语句(用于控制循环次数未知)形式1:Do While|Until 语句块语句块 Exit Do 语句块语句块 Loop形式2:Do 语句块语句块 Exit Do 语句块语句块Loop While|Until 例例4.13 我国有我国有1313亿人口,按人口年增长亿人口,按人口年增长0.8%0.8%计算,多少年计算,多少年后我国人口超过后我国人口超过2626亿。亿。分析:解此问题两种方法,可根据公式:分析:解此问题两种方法,可根据公式:26=13*
30、(1+0.008)n 直接利用标准对数函数求得;也可利用循环求得,程序如下:直接利用标准对数函数求得;也可利用循环求得,程序如下:Private Sub Command1_Click()x=13 n=0 Do While x=264.3.3 循环的嵌套循环的嵌套 一个循环体内又包含了一个完整的循环结构称为循环的嵌套。一个循环体内又包含了一个完整的循环结构称为循环的嵌套。例例4.14打印九九乘法表打印九九乘法表 For i=1 To 9 For j=1 To 9 se=i&j&=&i*j Picture1.Print Tab(j-1)*9+1);se;Next j Picture1.Print
31、Next i思考:思考:打印上三角或下三角程序如何改动?要打印下三角打印上三角或下三角程序如何改动?要打印下三角?For j =1 To x For ii=1 To 10 For jj=1 To 20 Next ii Next jj For ii=1 To 10 For ii=1 To 20 Next ii Next ii For ii=1 To 10 For jj=1 To 20 Next jj Next ii For ii=1 To 10 Next ii For ii=1 To 10 Next ii 对于循环的嵌套,要注意以下事项:对于循环的嵌套,要注意以下事项:内循环变量与外循环变量不能
32、同名;内循环变量与外循环变量不能同名;外循环必须完全包含内循环,不能交叉;外循环必须完全包含内循环,不能交叉;不能从循环体外转向循环体内,反之则可以。不能从循环体外转向循环体内,反之则可以。正确正确错误错误4.4 4.4 其他辅助控制语句其他辅助控制语句 1.Go To 语句语句 形式形式:Go To 标号标号|行号行号 作用:无条件地转移到标号或行号指定的那行语句。作用:无条件地转移到标号或行号指定的那行语句。标号是一个字符序列,行号是一个数字序列。标号是一个字符序列,行号是一个数字序列。2.Exit语句语句 多种形式:多种形式:Exit For、Exit Do、Exit Sub、Exit
33、Function等。等。作用:退出某种控制结构的执行。作用:退出某种控制结构的执行。3.End语句语句 多种形式:多种形式:End、End If、End Select、End With、End Type、End Sub、End Function。作用:作用:End结束一个程序的运行;其余表示某个结构的结束,与结束一个程序的运行;其余表示某个结构的结束,与对应的结构语句配对出现。对应的结构语句配对出现。求求n以内素数的代码:以内素数的代码:For m=2 To n For i=2 To m-1 If(m Mod i)=0 Then GoTo NotNextM Next i Print mNotN
34、extM:Next mm是否为素数求n以内的素数思考:思考:此例用此例用Go To语句对非素数不作判断,若不用语句对非素数不作判断,若不用GoTo语句,语句,如何修改程序?如何修改程序?例例4.15 判断输入的数是否为素数判断输入的数是否为素数素数是一个大于素数是一个大于2,且不能被,且不能被1和本身以外的整数整除的整数。和本身以外的整数整除的整数。判别某数判别某数m是否为素数最简单的方法是是否为素数最简单的方法是:对于对于m 从从 i=2,3,m-1判别判别m能否被能否被i整除,只要有一个整除,只要有一个能整除,能整除,m不是素数,否则不是素数,否则m是素数。是素数。4.5 综合应用综合应用
35、 1.四则运算四则运算例例4.16 由计算机自动产生四则运算题,并能判断答案的正确性。由计算机自动产生四则运算题,并能判断答案的正确性。设计思路:设计思路:(1)通通过过随随机机函函数数Rnd产产生生试试题题的的操操作作数数和和运运算算符符,运运算算符符+、-、可对应编号可对应编号14。产生表达式通过。产生表达式通过Form_Load事件过程。事件过程。(2)需需要要有有一一个个全全局局变变量量保保存存四四则则运运算算题题的的正正确确答答案案,用用户户答答案案可通过文本框输入。可通过文本框输入。(3)本题主要将随机函数、本题主要将随机函数、If语句、语句、Select语句综合在一起使用。语句综
36、合在一起使用。例例4.17用用辗转相除法求辗转相除法求两自然数两自然数m,n的最大公约数和最小公倍数。的最大公约数和最小公倍数。分析:求最大公约数的算法思想:分析:求最大公约数的算法思想:(1)m除以除以n得余数得余数r;(2)若若r=0,则,则n为最大公约数结束;否则执行为最大公约数结束;否则执行(3);(3)mn,nr,再重复执行,再重复执行(1)。例例 求求 m=14,n=6 的最大公约数的最大公约数.r=m mod n Do While(r 0)m=n n=r r=m mod n Loop Print 最大公约数最大公约数=,n m n r 14 6 2 6 2 0辗转相减法辗转相减法
37、 m=m-n mn n=n-m nm m、n为公约数为公约数 m=nDo While m n m n If m n Then 14 6 m=m n 8 6 Else 2 6 n=n m 2 4 End If 2 2Loop2.求求最大公约数和最小公倍数最大公约数和最小公倍数3.计算部分级数和计算部分级数和例例4.184.18求自然对数求自然对数e e的近似值,其误差小于的近似值,其误差小于0.000010.00001。近似公式近似公式 分分析析:本本例例涉涉及及到到程程序序设设计计中中两两个个重重要要运运算算,累累加加和和连连乘乘。累累加加是是在在原原有有和和的的基基础础上上再再加加一一个个数
38、数;连连乘则是在原有积的基础上再乘以一个数。乘则是在原有积的基础上再乘以一个数。该该题题先先求求i!,再再将将1/i!进进行行累累加加,循循环环次次数数未未知知,可可先先设设置置一一个个次次数数很很大大的的值值,然然后后在在循循环环体体内内判判断断是是否到达精度,也可用否到达精度,也可用Do While来实现。来实现。4.试凑法求方程的解试凑法求方程的解例例4.19 百百元元买买百百鸡鸡。假假定定小小鸡鸡每每只只5角角,公公鸡鸡每每只只2元元,母母鸡鸡每只每只3元,编程求解购鸡方案。元,编程求解购鸡方案。分析:分析:(1)设母鸡、公鸡、小鸡各为设母鸡、公鸡、小鸡各为x、y、z,列出方程为:,列
39、出方程为:x+y+z=1003x+2y+0.5z=100三个未知数,两个方程,此题求若干个整数解。三个未知数,两个方程,此题求若干个整数解。(2)计计算算机机求求解解此此类类问问题题,采采用用试试凑凑法法(也也称称穷穷举举法法)来来实实现现,即即将将可可能能出出现现的的各各种种情情况况一一一一罗罗列列测测试试,判判断断是是否否满满足足条条件件,采用循环结构来实现。采用循环结构来实现。5.递推法递推法递递推推(迭迭代代)法法基基本本思思想想是是把把一一个个复复杂杂的的计计算算过过程程转转化化为为简简单单过过程程的的多多次次重重复复。每每次次都都从从旧旧值值的的基基础础上上递递推推出出新新值值,并
40、并由由新新值值代替旧值。代替旧值。例例4.20 4.20 小小猴猴有有桃桃若若干干,第第一一天天吃吃掉掉一一半半多多一一个个;第第二二天天吃吃剩剩下下桃桃子子的的一一半半多多一一个个;以以后后每每天天都都吃吃尚尚存存桃桃子子的的一一半半多多一一个个,到第到第7 7天只剩一个,问小猴原有桃多少?天只剩一个,问小猴原有桃多少?分分析析:用用后后一一天天的的数数推推出出前前一一天天的的桃桃子子数数。设设第第n天天的的桃桃子子为为xn,是前一天的桃子的二分之一减去,是前一天的桃子的二分之一减去1。4.6 程序调试程序调试 随随着着程程序序的的复复杂杂性性提提高高,程程序序中中的的错错误误也也伴伴随随而
41、而来来。对对初初学学者者,看看到到出出现现错错误误不不要要害害怕怕,关关键键是是如如何何改改正正错错误误,失失败败是是成成功功之之母母。上上机机的的目目的的,不不光光是是为为了了验验证证你你编编写写的的程程序序的的正正确确性性,还还要要通通过过上上机机调调试试,学学会会查查找找和和纠纠正正错错误误的的方方法法和和能能力力。VB为为调调试试程程序序提提供供了了一一组组交交互互的的、有有效效的的调调试试工工具具,在在此此逐一介绍。逐一介绍。4.6.1 错误类型错误类型语法错误、运行时错误和逻辑错误三类。语法错误、运行时错误和逻辑错误三类。1.1.语法错误语法错误错误的代码显示为红色,窗错误的代码显
42、示为红色,窗口上显示出错的原因。口上显示出错的原因。2.运行错误运行错误 指令代码执行了一非法操作引起的。例如,指令代码执行了一非法操作引起的。例如,类型不匹配、试图打开一个不存在的文件等。类型不匹配、试图打开一个不存在的文件等。程序会自动中断,并给出有关的错误信息。程序会自动中断,并给出有关的错误信息。3.逻辑错误逻辑错误 程序运行后,得不到所期望的结果,这说程序运行后,得不到所期望的结果,这说明程序存在逻辑错误。例如,运算符使用不正明程序存在逻辑错误。例如,运算符使用不正确、语句的次序不对、循环语句的起始、终值确、语句的次序不对、循环语句的起始、终值不正确等。通常,逻辑错误不会产生错误提示
43、不正确等。通常,逻辑错误不会产生错误提示信息,故错误较难排除,需要程序员仔细地阅信息,故错误较难排除,需要程序员仔细地阅读分析程序,并具有调试程序的经验。读分析程序,并具有调试程序的经验。4.6.2 调试和排错调试和排错 VB的三种模式的三种模式(1)设计模式设计模式(设计设计)可以进行程序的界面设计、属性设置、代码编写等。可以进行程序的界面设计、属性设置、代码编写等。(2)运行模式运行模式(运行运行)执行执行启动启动命令进入运行模式。在此阶段,可以查看程序代码,命令进入运行模式。在此阶段,可以查看程序代码,但不能修改。但不能修改。(3)中断模式中断模式(Break)执行执行中断中断命令,进入
44、中断模式。在中断模式下可以查看代码、命令,进入中断模式。在中断模式下可以查看代码、修改代码、检查数据。修改代码、检查数据。1.调试和排错调试和排错-插入断点插入断点按下F9键 按F8键跟踪执行 鼠标指向所鼠标指向所关心的变量关心的变量2.调试窗口调试窗口立即窗口、本地窗口、监视窗口立即窗口、本地窗口、监视窗口4.7 4.7 常见错误常见错误4.7.1 4.7.1 判断结构中常见错误判断结构中常见错误1.1.在选择结构中缺少配对的结束语句,对多行式的在选择结构中缺少配对的结束语句,对多行式的IfIf块块语句中,应有配对的语句中,应有配对的 End If End If语句结束。语句结束。2.2.多
45、边选择多边选择ElseIfElseIf关键字的书写和条件表达式的表示,关键字的书写和条件表达式的表示,ElseIf ElseIf 不要写成不要写成Else IfElse If;多个条件表达式次序问;多个条件表达式次序问题。题。3.Select Case3.Select Case语句的使用,语句的使用,Select Case Select Case 后不能出现后不能出现多个变量;多个变量;CaseCase子句后不能出现变量。子句后不能出现变量。4.7.2 循环结构中常见错误循环结构中常见错误1.不循环或死循环的问题不循环或死循环的问题 主要是循环条件、循环初值、循环终值、循环步长的设置主要是循环
46、条件、循环初值、循环终值、循环步长的设置有问题。有问题。2.循环结构中缺少配对的结束语句循环结构中缺少配对的结束语句 For 少少 配对的配对的Next 3.循环嵌套时循环嵌套时,内外循环交叉内外循环交叉4.累加、连乘时,存放累加、连乘结果的变量赋初值问题累加、连乘时,存放累加、连乘结果的变量赋初值问题 (1)一重循环一重循环 在一重循环中在一重循环中,存放累加、连乘结果的变量初值设置应在循存放累加、连乘结果的变量初值设置应在循环语句前。环语句前。(2 2)多重循环)多重循环,这要视具体问题分别对待。这要视具体问题分别对待。本章小节本章小节结构化程序设计三种结构结构化程序设计三种结构 顺序结构顺序结构、选择结构选择结构、循环结构循环结构 IfThen语句、语句、Select Case语句、语句、For与与 Do循环语句循环语句 赋值语句与复合赋值语句赋值语句与复合赋值语句数据输出和输入数据输出和输入 InputBox、MsgBox常用算法常用算法 素素数数判判定定、级级数数求求和和、试试凑凑法法、迭迭代代法法解解方方程程