1、第四章第四章 流流程控制结构程序设计程控制结构程序设计 4.1 顺序结构 4.2 选择结构 4.3 循环结构 4.4 常用算法及综合实例4.1 4.1 顺顺 序序 结结 构构n顺序结构是程序结构中最简单的一种,同时,其还是最基本的控制结构,任何程序都必须包含顺序结构。顺序结构的特点是整个程序按书写顺序依次执行,即自上而下依次运行。n顺序结构:赋值语句 输入输出语句语句块语句块1语句块语句块24.1 4.1 顺顺 序序 结结 构构一、赋值语句一、赋值语句 形式:对象属性或变量名表达式对象属性或变量名表达式 作用:将右边表达式的值赋值给对象属性或变量名。一般用于给变量赋值或对控件设定属性值。例:T
2、ext1.Text Visual Basic 6.0 a=3 n=n+1说明(1)当表达式的类型与变量的类型不一致时,强制转换成左边的精度。例:a%=10 /3 a%=“123”a%=“a123”a%=true a中的结果为3a中的结果为123出现类型不匹配true转换为-1,false转换为0,a的值为-1说明(2)赋值号与关系运算符都用“=”表示,要分清什么时候是赋值号,什么时候是关系运算符。例:a=b print a=b(3)赋值号左边只能是变量或对象的属性,不能是常量和表达式。例:9=a x+z=12赋值符号关系运算符号说明(4)不要在同一赋值语句中同时对多个变量赋值。例:dim x%
3、,y%,z%x=y=z=5 不代表使变量X、Y和Z都接收并保持数值5。要完成该功能要使用三个赋值语句。VB编译只会将第一个“=”解释为赋值号,将其余的“=”解释为关系运算符x=(y=z=5)二、输入数据n使用“文本框”控件进行输入n使用与用户交互的函数和过程使用“文本框”控件进行输入Private Sub Command1_Click()Text2.Text=3.14159*(Text1.Text)2End Sub使用与用户交互的函数和过程 1.1.InputBoxInputBox函数函数函数形式:变量=InputBox(提示,标题,缺省,x 坐标位置,y坐标位置)其中:提示:提示信息;标题:
4、对话框标题;缺省:输入区缺省值;x 坐标位置,y坐标位置:确定对话框左上角在屏幕上的位置;函数返回字符类型。提示提示标题标题缺省缺省n例4.1:输入李明同学的三门功课的成绩,并求出总分,要求用InputBox函数输入。n事件代码如下:Private Sub Command1_Click()s1=“请输入李明同学的语文成绩 s2=“请输入李明同学的数学成绩 s3=“请输入李明同学的外语成绩 yw=InputBox(s1,输入成绩框)sx=InputBox(s2,输入成绩框)wy=InputBox(s3,100,100)zf=Val(yw)+Val(sx)+Val(wy)Text1.Text=zf
5、End Sub程序2.MsgBoxMsgBox函数和函数和MsgBoxMsgBox过程过程 函数形式:变量%=MsgBox(提示,按钮,标题)过程形式:MsgBox 提示,按钮,标题 其中:提示:提示信息 标题:对话框标题 按钮:整型表达式与InputBox函数中对应的参数相同 MsgBoxMsgBox所选按钮返回值所选按钮返回值 例:例:x=MsgBox(“输入有误输入有误,66)66=2+64+0+0 按钮数目按钮数目+图标类型图标类型+默认按钮默认按钮+模式模式本章目录本章目录内部常数内部常数返回返回值值被被单击单击的按的按钮钮vbOk1确定确定vbCancel2取消取消vbAbort3
6、终终止止vbRetry4重重试试vbIgnore5忽略忽略vbYes6是是vbNo7否否程序三、输出数据n使用“文本框”控件进行输出n使用“标签”控件进行输出n使用与Print方法进行输出三、输出数据三、输出数据nPrint方法语句格式:对象.PrintSpc(n)|Tab(n);表达式列表;|,作 用:在对象上输出信息。其中:对象:窗体、图形框或打印机。缺省为窗体。Spc(n)函数:从当前位置起空n个空格。Tab(n)函数:从最左端开始计算的第n列。表达式列表:要输出的数值或字符串表达式。分号:光标定位在上一个被显示的字符之后 逗号:光标定位在下一个打印区开始处(每区14列)Print语句尾
7、无分号或逗号,输出后换行例4.2Private Sub Form_Load()Print 12345678901234567890 Print Viusal Basic;Print 程序设计 Print Print Tab(1);a;Tab(5);b Print a;b Print a,b Print c;Spc(3);d Print Tab(1);1;2 Print Tab(1);abc;Tab(3);cdeEnd Sub程序 4.2 4.2 选选 择择 结结 构构 1.IfThen1.IfThen语句语句(单分支结构单分支结构)If Then 语句块语句块 End If 或或 If The
8、n 例:已知两个数x和y,比较它们的大小,使得x大于y.If xy Then t=x x=y y=t End If 或或 If xy Then t=x:x=y:y=t重要的是学会两个数的交换,若上述语句次序变一下,结果如何?重要的是学会两个数的交换,若上述语句次序变一下,结果如何?2.IfThenElse2.IfThenElse语句语句(双分支结构双分支结构)If Then Else End If If Then Else 计算分段函数:单分支结构实现:y=cos(x)x3+3*x If x0 Then y=sin(x)+sqr(x*x+1)双分支结构实现:If x0 Then y=sin(x
9、)+sqr(x*x+1)Else y=cos(x)x3+3*x End If3.IfThen3.IfThenElseIfElseIf语句语句(多分支结构多分支结构)形式:If Then ElseIf Then Else 语句块语句块 n+1 End If 例4.3 最近,联合国世界卫生组织提出新的年龄分段:44岁以下为青年人,45岁至59岁为中年人,60岁至74岁为年轻老年人,75岁至89岁为老年人,90岁以上为长寿老人。If nl=45 and nl=60 and nl=75 and nl=89 thenPrint”老年”ElsePrint”长寿”End IF例例4.4 已知百分制成绩mar
10、k,显示对应的五级制成绩 哪些正确,哪些错误?返回724 4IfIf语句的嵌套语句的嵌套 If语句的嵌套是指If或Else后面的语句块中又包含If语句。形式如下:If Then If Then End If End If 例例4.5 已知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配对。例4.5 个体工商户的生产、经营所得和对企事业单位的承包经营、承租经
11、营所得适用级数数含税含税级距距税率税率(%)1不超不超过5,000元的元的52超超过5,000元到元到10,000元的部分元的部分103超超过10,000元至元至30,000元的部分元的部分204超超过30,000元至元至50,000元的部分元的部分305超超过50,000元的部分元的部分35Private Sub Command1_Click()sr=Val(Text1.Text)If sr 5000 And sr 10000 And sr 30000 And sr=50000 Then Text2.Text=sr*(1-0.3)Else Text2.Text=sr*(1-0.4)End I
12、fEnd Sub:与同类型的下面三种形式之一:表达式 数值或字符串表达式 例:A“,2,4,6,8,a*100 表达式 1 To 表达式2 60 To 100 Is 关系运算符表达式 Is 10 Then y=3*x+4ElseIf x=5 And x 10 y=3*x+4 Case 5 To 10 y=x*x-10 Case Else y=x 3+6End Select例4.4 方法二(用select方法)Select Case score Case score=90 MsgBox 优 Case score=80 MsgBox 良 Case score=70 MsgBox 中 Case sc
13、ore=60 MsgBox 及格 Case Else MsgBox 不及格End Select说明:1.Select Case 后面不能出像多个用“,”号隔开的变量。eg:select case x,y(错误)2.Case子句中允许含有多个表达式,表达式间用“,”号分隔。eg:case 1 To 5,21,Is6(正确)case“A”,”C”TO “F”,Name$(正确)3.Case子句中不能出现的表达式。返回 case x0 and y y,x,y)(2)Choose函数形式是:Choose(数字类型变量,值为数字类型变量,值为1的返回值,值为的返回值,值为2的返回值的返回值)例如,Nop
14、是1-4的值,转换成+、-、运算符的语句如下:Op=Choose(Nop,+,-,)当值为1,返回字符串“+”,然后放入Op变量中,值为2,返回字符串“-”,依次类推;当Nop是1-4的非整数,系统自动取Nop的整数办法在判断;若Nop不在14之间,函数返回Null值。常常 见见 错错 误误1在选择结构中缺少配对的结束语句对多行式的If块语句中,应有配对的 End If语句结束。2.多边选择ElseIf关键字的书写和条件表达式的表示 ElseIf 不要写成Else If;多个条件表达式次序问题。3.Select Case语句的使用 Select Case 后不能出现多个变量;Case子句后不能
15、出现变量。4.3 4.3 循循 环环 结结 构构1.For循环语句循环语句(一般用于循环次数已知)形式 For 循环变量初值循环变量初值 to 终值终值 Step 步长步长 语句块语句块Exit For 语句块语句块 Next 循环变量循环变量 循环变量 0 初值终值 =1 时,可省略终值=0 死循环循环次数求循环次数:求循环次数:For i=1 To 10 Step 3i=i+1Next i步长执行步骤:i=1 i=2 i=5 i=6 i=9 i=10 i=13*在循环体内对循环控制变量可多次引用;但最好不要对其赋值,否则影响原来的循环控制规律。要注意:要注意:出了循环,循环控制变量值的问题
16、。例程序段:For i=2 To 13 Step 3 循环执行次数 Print i,输出 i的值分别为:Next i 2 5 8 11 Print :Print“I=“,i 出了循环输出为:I=14例4.7 改变循环控制变量对循环的影响。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,15,17,19现在:i=4,9,14,192.DoLoop循环语句循环语句(用于控制循环
17、次数未知)形式1:Do While|Until 语句块语句块 Exit Do 语句块语句块 Loop形式2:Do 语句块语句块 Exit Do 语句块语句块Loop While|Until 例4.8 我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。分析:解此问题两种方法,可根据公式:26=13*(1+0.008)n 直接利用标准对数函数求得;也可利用循环求得,程序如下:Private Sub Command1_Click()x=13 n=0 Do While x 26 x=x*1.008 n=n+1 Loop Print n,xEnd Sub4.4 4.4 其他辅助控制
18、语句其他辅助控制语句 1.Go To 语句语句 形式形式:Go To 标号标号|行号行号 作用:无条件地转移到标号或行号指定的那行语句.标号是一个字符序列,行号是一个数字序列.2.Exit语句语句 多种形式:Exit For、Exit Do、Exit Sub、Exit Function等。作用:退出某种控制结构的执行。3.End语句语句 多种形式:End、End If、End Select、End With、End Type、End Sub、End Function、作用:End结束一个程序的运行;其余表示某个结构的结束,与对应的结构语句配对出现。4.With 语句语句 形式如下:With 对
19、象 语句块 End With 作用:对某个对象执行一系列的操作,而不用重复指出对象的名称。With Label1 .Height=2000 .Width=2000 .FontSize=22 .Caption=MyLabel End With Label1.Height=2000 Label1.Width=2000 Label1.FontSize=22 Label1.Caption=MyLabel 等价4.6 4.6 常常 见见 错错 误误1.不循环或死循环的问题不循环或死循环的问题 主要是循环条件、循环初值、循环终值、循环步长的设置有问题。2.循环结构中缺少配对的结束语句循环结构中缺少配对的结束语句 For 少 配对的Next 3.循环嵌套时循环嵌套时,内外循环交叉内外循环交叉4.累加、连乘时,存放累加、连乘结果的变量赋初值问题累加、连乘时,存放累加、连乘结果的变量赋初值问题 (1)一重循环 在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句前。(2)多重循环 这要视具体问题分别对待。
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922