




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1第4章VB控制结构4.1顺序结构4.2选择结构4.3循环结构4.4其它辅助控制语句4.5综合应用4.6程序调试24.1顺序结构VB具有结构化程序设计的三种程序控制结构顺序结构、选择结构、循环结构,是程序设计的基础。(1)顺序结构各语句按出现的先后次序执行A1操作A2操作
A1操作
A2操作(a)顺序结构流程图34.1顺序结构
一般程序设计语言中顺序结构的语句主要
赋值语句和输入/输出语句
在VB中
赋值语句
输入/输出通过:
文本框控件、标签控件
InputBox函数、MsgBox函数和过程
Print方法等来实现44.1.1赋值语句形式:
变量名=表达式
[对象名.]属性名=表达式功能:计算等号右边表达式的值将值赋给变量或对象属性例如:n=n+1 ‘计数累加Text1.Text=“” ‘清除文本框的内容Text1.Text="欢迎使用VB"'文本框显示字符串
本章目录PrivateSubForm_Click()a=5:b=10:c=5x=(-b+Sqr(b^2-4*a*c))/(2*a)PrintxEndSub结果:-16注意:
“=”符号有两个意义:
赋值号、关系运算符等号
形式相同,系统会根据所处的位置判断符号的意义赋值语句:两个数交换a=3:b=4t=aa=bb=t结果:a=4b=3关系表达式:Nota=b结果:True例:设计两个变量交换值的程序。⑴建立程序界面编写事件代码。命令按钮Command1的Click事件代码为:PrivateSubCommand1_Click()DimtempAsSingle,xAsSingle,yAsSinglex=Val(Text1.Text)y=Val(Text2.Text)temp=xx=yy=tempText3.Text=xText4.Text=yEndSub
赋值号左边只能是变量,不能是常量、常数符号、表达式下面均为错误的赋值语句:Now=x+y'左边是表达式(函数)5=sqr(s)+x+y‘左边是常量X+y=z ‘左边是表达式赋值语句的两个常用形式:
1.累加
sum=sum+x与循环结构结合使用
2.计数
n=n+1与循环结构结合使用起到计数器的作用赋值号两边数据类型不同时处理:
1.当表达式为数值型并与变量精度不同时,要强制转换成左边变量的精度(转换时四舍五入)
n%=3.6n为整型,赋值后n为4
2.当表达式为数值字符串,左边变量为数值类型,将表达式自动转换成数值类型再赋值,若表达式有非数字及空格则出错
n%=“123”n的结果为123
n%=“2dfe34”出错n%=Truen的结果为-1当数值型赋值给逻辑型变量时,非0
转化为True
0
转化为False4.非字符型值赋值给字符型变量自动转化为字符型利用转换函数将表达式类型转换成左边变量的类型例:执行语句s=Len(Mid(“VisualBasic”,1,6))后,s的值A)VisualB)BasicC)6D)11例:设a=“MicrosoftVisualBasic”,则以下使变量b的值为“VisualBasic”的语句是
A)b=Left(a,10)B)b=Mid(a,10)C)b=Right(a,10)D)b=Mid(a,11,10)例:执行下面的程序段后,a、b的值为a=300b=20a=a+bb=a-ba=a-b
203004.1.2数据输出和输入1.标签
利用标签的Caption属性来输出数据
2.文本框
利用文本框的Text属性获得数据或将计算结果输出
例如:从文本框Text1输入圆的半径,计算面积后在标签Label1显示。
r=Val(Text1.Text)
Label1.Caption="面积="&3.14*r*r
&-----字符连接符132.输入对话框InputBox函数作用:打开一个对话框,等待用户输入,函数返回字符串类型的输入值形式:
InputBox(提示,标题,默认值,x坐标位置,y坐标位置)
注意:1.提示项不能省略。为字符串表达式。若要多行提示每行行末加回车Chr(13)换行Chr(10)或vbCrLfInputBox("输入姓名"&Chr(13)&"单击确定","输入框","王小明",250,250)2.标题:字符串表达式3.默认值:字符串,在输入对话框中设置的初始值例如:有下列语句如下:
Dimx%x=Val(InputBox(“请输入一个数”,“输入框”,100))
语句执行后打开如下对话框。缺省值标题提示例4.1利用InputBox输入基本工资和营业额,按营业额的5%提成计算实发工资(由基本工资+营业额提成)并显示
解:显示用Lable控件,在窗口建立PrivateSubForm_Click()Dimsfgz,jbgz,xAsSinglejbgz=Val(InputBox("输入基本工资","计算工资",3000))x=Val(InputBox("输入本月营业额"))sfgz=jbgz+x*0.05Label1="本月营业额为:"&x&"基本工资为:“&jbgz&vbCrLf&"本月实发工资为:"&sfgzEndSub例:在窗体上画一个文本框,然后编写如下事件过程PrivateSubForm_Click()
x=InputBox("请输入一个整数")
Text1.Text=x+Text1.TextEndSub程序运行时在文本框中输入456,然后单击窗体,在输入对话框中输入123,单击“确定”按钮后在文本框上显示的内容为A)123B)456C)479D)123456
例:在窗体上画一个命令按钮和一个文本框,其名称分别为Command1和Text1,把文本框的Text属性设置为空白,然后编写如下事件过程:
PrivateSubCommand1_Click()a=InputBox(“Enteraninteger”)b=InputBox(“Enteraninteger”)Text1.Text=b+aEndSub程序运行后,单击命令按钮,如果在输入对话框中分别输入8和10,则文本框中显示的内容是
A)108B)18C)810D)出错
例:设有语句
x=inputbox(“输入数值”,“0”,“示例”)程序运行后,如果从键盘上输入数值10并按回车键,则下列叙述中正确的是()A)变量x的值是数值10B)在inputbox对话框标题栏中显示的是“示例”C)0是默认值D)变量x的值是字符串“10”例:a=InputBox("Today","Tomorrow","Yesterday",,,"Daybeforeyesterday",5)
显示一个输入对话框在对话框的输入区中显示的信息是
A)Today B)Tomorrow C)Yesterday D)Daybeforeyesterday20作用:打开一个信息框,等待用户选择一个按按钮MsgBox函数形式:
变量%=MsgBox(提示,按钮,标题)变量%=MsgBox(提示,按钮+图标,标题)MsgBox过程形式:
MsgBox提示,按钮,标题按钮项是一整型表达式,决定信息框按钮的数目和类型及出现在信息框上的图标形式。
MsgBox函数返回所选按钮的值MsgBox过程不返回值,作为一句独立的语句
2.消息对话框MsgBox函数和过程
MsgBox按钮设置
信息图标
64VBInformation警告信息图标
48VBExclamation询问信息图标
32VBQuestion关键信息图标
16VBCritical图标类型
重试、取消按钮5VBRetryCancel是、否按钮
4VBYesNo是、否、取消按钮3VBYesNoCancel终止、重试、忽略按钮2VBAboutRetryIgnore确定、取消按钮
1VBOkCancel确定按钮
0VBOkOnly按钮数目
描述值内部常数分组MsgBox“提示”,2,”标题”内部常数返回值单击的按钮vbOk1确定vbCancel2取消vbAbort3终止vbRetry4重试vbIgnore5忽略vbYes6是vbNo7否MsgBox函数所选按钮返回值
PrivateSubForm_Click()x=MsgBox("密码错误",5+48,"输入框")PrintxEndSub点击“重试”点击“取消”结果为:4结果为:2x=MsgBox("密码错误",5+48,"输入框")按钮设置:5+4853VbRetryCancel+485+VbExclamationvbRetryCancel+vbExclamation效果相同例4.2编一账号和密码输入的检验程序1.账号不超过6位数字,当输入不正确,为非数字字符,显示如图信息。2.密码是4位字符,输入文本框以“*”显示,若不正确,显示如图信息。密码为“Gong”在窗口建立Text1、Text2、Command1、Lable1、Lable2PrivateSubForm_Load()Text1.Text=""Text1.MaxLength=6Text2.Text=""Text2.MaxLength=4Text2.PasswordChar="*"EndSubPrivateSubText1_LostFocus()IfNotIsNumeric(Text1.Text)ThenMsgBox"账号必须为数字",,"警告"Text1.Text=""Text1.SetFocusEndIfEndSub‘连续两个逗号(“,”)缺省按钮数目为"确定"按钮PrivateSubCommand1_Click()DimIAsIntegerIfText2.Text<>"Gong"ThenI=MsgBox("密码错误",5+vbExclamation,"警告")IfI=2ThenEndElseText2.Text=""Text2.SetFocusEndIfEndIfEndSub例.以下关于MsgBox的叙述中,错误的是A)MsgBox函数返回一个整数B)通过MsgBox函数可以设置信息框中图标和按钮的类型C)MsgBox过程没有返回值D)MsgBox函数的第二个参数是一个整数,该参数只能确定对话框中显示的按钮数量例:假定有如下的窗体事件过程:
PrivateSubForm_Click()a="MicrosoftVisualBasic"b=Right(a,5)c=Mid(a,1,9)MsgBoxa,34,b,c,5EndSub程序运行后单击窗体弹出的信息框标题栏中显示的信息是
A)MicrosoftVisualB)MicrosoftC)BasicD)5
34=2+32VBAboutRetryIgnore+VBQuestion例:在窗体上画一个命令按钮,名称为Command1,然后编写如下事件过程:
PrivateSubCommand1_Click()a="softwareandhardware“b=Right(a,8)c=Mid(a,1,8)MsgBoxa,,b,c,1EndSub
运行程序单击按钮在弹出的信息框标题栏中显示的是A)softwareandhardwareB)softwareC)hardwareD)1
例:假定有如下的命令按钮(名称为Command1)事件过程:
PrivateSubCommand1_Click()
x=InputBox(“输入:”,“输入整数”)
MsgBox“输入的数据是:”,,“输入数据:”+x
EndSub
程序运行后,单击命令按钮,如果从键盘上输入整数10,则以下叙述中错误的是
A.x的值是数值10
B.输入对话框的标题是“输入整数”
C.信息框的标题是“输入数据:10”
D.信息框中显示的是“输入的数据是:”例、窗体上有一个名称为Command1的命令按钮,其事件过程如下:
PrivateSubCommand1_Click()x=“VisualBasicProgramming”a=Right(x,11)b=Mid(x,7,5)C=Msgbox(a,,b)EndSub
运行程序后单击命令按钮,以下叙述中错误的是
A)信息框的标题是BasicB)信息框中的提示信息是Programming
C)C的值是函数的返回值D)MsgBox的使用格式有错3.Print方法作用:在对象(窗体、图形框)上输出信息若对象省略,则默认在窗体上输出格式:对象.PrintSpc(n)|Tab(n)输出列表;|,定位函数:Spc(n)函数:从当前位置起空n个空格Tab(n)函数:从最左端开始计算的第n列无定位函数则由对象当前位置决定输出列表:输出数字或字符串表达式。无则输出一行空行分隔符:用于输出各项之间的分隔分号:定位在上一个被显示的字符之后逗号:定位在下一个打印区开始处(每区14列)Print语句尾无分号或逗号,输出后换行例4.3Print方法输出图形利用String函数显示重复字符利用循环结构、Spc、Tab函数显有规律图形PrivateSubForm_Click()Print‘空一行Fori=1To5‘显示有规律的5行PrintTab(i);String(6-i,"▼");Spc(6);String(i,"▲")NextiEndSub
注意:1.Tab(i)函数从对象的左端开始计数,当i的值大于当前位置(CurrentX)时重新定位在下一行的第i列Spc函数表示两个输出项之间的间隔2.一般Print在Form_Load事件过程中无效果,因为窗体的AutoRedraw(窗体的重建
)属性默认为False将窗体的AutoRedraw属性设置为True就有效果3.Print方法不但有输出功能,还有计算功能表达式先计算后输出4.各输出表达式列表项以“;”“,”分隔或“&”“+”字符连接符将各项连接后输出例:语句Form1.PrintTab(10);"#"的作用是在窗体当前输出行A、第10列输出字符“#” B、第9列输出字符“#”C、第11列输出字符“#” D、输出10个字符“#”例.Print语句的一个输出表达式为
,则输出包括日期、时间信息A、DateB、Month C、TimeD、Now例.语句Print"5*5"的显示结果是A、25B、"5*5"C、5*5D、出现错误提示例.下列程序段的输出结果是a=10:b=10000:x=log(b)/log(a):Print"lg(10000)=";xA、lg(10000)=5 B、lg(10000)=4 C、4 D、5例.下面程序运行的结果为:()DimaaAsintegeraa=3.8PrintaaA、3.8B、aa=4C、4D、3例.在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:PrivateSubCommand1_Click()a=“VisualBasic”PrintString(3,a)EndSub程序运行后,单击命令按钮,在窗体上显示的内容是A)VVVB)VisC)sicD)11例:设x=4,y=6,则以下不能在窗体上显示出“A=10”的语句是
A.PrintA=x+y
B.Print"A=";x+y
C.Print"A="+Str(x+y)
D.Print"A="&x+y
4.Format格式输出函数
形式:
Format(表达式,"格式字符串")作用:使数值、字符串、日期按指定的格式输出1.23E-01"0.00E+00"0.1234用指数表示E+$1234.57"$###.##"1234.567在数字前强加$$123456.7%"####.##%"1234.567数值乘以100,加百分号%1,234.567"##,##0.000"1234.567千分位,1234.567"#####.####"1234.567位置不足时不填充0#01234.5670"00000.0000"1234.567用0填充不足的位置0显示结果格式字符串表达式作用符号注意:“0”或“#”:数值表达式的整数部分位数多于格式字符串的位数,按实际数值显示;若小数部分位数多于格式字符串的位数,按四舍五入显示例4.4利用Format函数显示数值。
PrivateSubForm_Click()s=12.2345:b=12.1Print“s=";Format(s,"0.00");"b=";Format(b,"0.00")Print“s="&Format(s,"#.##")&"b="&Format(b,"#.##")Prints;"+";b;"=";s+bPrints&"+"&b&"="&s+bEndSubs=12.23b=12.10s=12.23b=12.112.2345+12.1=24.334512.2345+12.1=24.3345例:在窗体上画一个命令按钮,其名称为Command1,然后编写如下事件过程:PrivateSubCommand1_Click()a=12345PrintFormat(a,“000.00”)EndSub程序运行后,单击命令按钮,窗体上显示的是123.45B)12345.00C)12345D)00123.45424.2选择结构VB中主要通过If...Then...Else、If...Then...ElseIf、SelectCase语句来实现它们都是对条件进行判断,根据判断结果,选择执行不同的分支。
不成立假A成立真条件PBA成立真条件P不成立假在条件语句中作为判断依据的表达式称为“条件表达式”条件表达式的取值为布尔值:真(True)或假(False)条件表达式分为两类:关系表达式以及布尔表达式1.关系运算符(=,>,<,<=,>=,<>)关系运算,用来对两个表达式的值进行比较,其结果是一个逻辑值2.逻辑运算符(1)Not(非)
(2)And(与)(3)Or(或)(4)Xor(异或)(5)Eqv(等价)若两个表达式同时为True或同为False,结果为True(6)Imp(蕴含)当第一个表达式为True,且第二个表达式为False时,结果为False,其他均为True3.表达式的执行顺序(1)首先进行函数运算;(2)接着进行算术运算;(3)然后进行关系运算(=,>,<,<>,>=,<=)(4)最后进行逻辑运算,顺序为:①Not
②And
③Or④Xor
⑤Eqv
⑥Imp4.2.1If条件语句
1.If…Then语句(单分支结构)
If<表达式>Then
语句块(可以是一句或多句语句)
EndIf或
If<表达式>Then<语句>表达式值按非零为True,零为False进行判断该语句的作用是当表达式的值为True,执行Then后面的语句块,否则不做任何操作不成立假A成立真条件P例:已知两个数x和y,比较它们的大小,互换两者的值Ifx<yThent=xx=yy=tEndIf或Ifx<yThent=x:x=y:y=t简单If形式无EndIf时,只能是一句语句或语句间用冒号分隔,而且必须在一行上书写。
判断1:若If语句中逻辑表达式值为True,则关键字Then后的若干语句都要执行直到EndIf结束判断2.在If语句中,关键字EndIf是必不可少的例、写出运行结果a=100b=50c=30Ifa<bOrb<cThenb=cIfb=cAnda<cThena=a–100Printa,b,c下列程序的执行结果为
A)1005030B)-1003030C)-1005030D)1003050例、下列程序运行的结果是Dimkasintegerk=1Ifk<=1thena=2*kIfk<=2thena=2*k+2Ifk<=4thena=kPrintk;aA)12B)14C)11D)24例:PrivateSubCommand1_Click()Text1.Text="VisualBasic"
EndSubPrivateSubText1_LostFocus()
IfText1.Text<>"BASIC"Then
Text1.Text=""
Text1.SetFocus
EndIfEndSub程序运行时,在Text1文件框中输入“Basic然后单击Command1按钮,则产生的结果是
A)文本框中无内容,焦点在文本框中B)文本框中为“Basic”,焦点在文本框中
C)文本框中为“Basic”,焦点的按钮上
D)文本框中为“VisualBasic”,焦点的按钮上例:在窗体上画一个Text1的文本框,要求文本框只能接收大写字母的输入。能实现操作的事件过程是A)PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii<65OrKeyAscii>90ThenMsgBox“请输入大写字母”KeyAscii=0EndIfEndSubB)PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode<65OrKeyCode>90ThenMsgBox“请输入大写字母”KeyCode=0EndIfEndSubC)PrivateSubText1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfAsc(Text1.Text)<65OrAsc(Text1.Text)>90ThenMsgBox“请输入大写字母”EndIfEndSubD)PrivateSubText1_Change()IfAsc(Text1.Text)>64AndAsc(Text1.Text)<91ThenMsgBox“请输入大写字母”EndIfEndSub53双分支结构2.If…Then…Else语句If表达式Then
语句块1Else
语句块2EndIf或
If表达式Then
语句1
Else
语句2
语句块1语句块2条件?TrueFalse在EndIf语句后面的那一条语句在EndIf语句后面的那一条语句54计算分段函数单分支
Ifx<>0Theny=sin(x)+sqr(x*x+1)y=cos(x)-x^3+3*x或两条语句:Ifx<>0Theny=sin(x)+sqrt(x*x+1)Ifx=0Theny=cos(x)-x^3+3*x
双分支
Ifx<>0Theny=sin(x)+sqr(x*x+1)Elsey=cos(x)-x^3+3*xEndIf例:在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:PrivateSubCommand1_Click()x=-5IfSgn(x)Theny=Sgn(x^2)Elsey=Sgn(x)EndIfPrintyEndSub程序运行后,单击命令按钮,窗体上显示的是A)-5B)25C)1D)-156多分支结构
3.If…Then…ElseIf语句
If表达式1Then
语句块1
ElseIf表达式2Then
语句块2 …
[Else
语句块n+1]
EndIf条件1?语句块1True在EndIf语句后面的那一条语句False条件2?语句块2True语句块3False在EndIf语句后面的那一条语句在EndIf语句后面的那一条语句3.If…Then…ElseIf语句
If表达式1Then
语句块1
ElseIf表达式2Then
语句块2 …
[Else
语句块n+1]
EndIf注意:1.根据不同的表达式值确定执行哪个语句块
2.无论有多少个分支,程序执行了一个分支后,其余分支不再执行3.当多分支中有多个表达式同时满足,则只执行第一个与之匹配的语句块4.ElseIf不能写成ElseIf58例4.7已知变量ch中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。PrivateSubCommand1_Click()DimchAsString*1ch=InputBox("input")IfUCase(ch)>="A"AndUCase(ch)<="Z"ThenMsgBox(ch+"是字母字符")ElseIfch>="0"Andch<="9"ThenMsgBox(ch+"是数字字符")ElseMsgBox(ch+"是其他字符")EndIfEndSub例4.8已知百分制转化为五分制PrivateSubCommand1_Click()DimchAsIntegerch=Val(InputBox("input"))Ifch>=90ThenPrint"优"ElseIfch>=80ThenPrint"良"ElseIfch>=70ThenPrint"中"ElseIfch>=60ThenPrint"及格"ElsePrint"不及格"EndIfEndSub60If语句的嵌套是指If或Else后面的语句块中又包含If语句If表达式1ThenIf表达式2Then…EndIf
…EndIfIf语句的嵌套
注意:嵌套的每个If语句必须与EndIf配对PrivateSubCommand1_Click()DimxAsInteger,yAsInteger,zAsIntegerx=Val(InputBox("input"))y=Val(InputBox("input"))z=Val(InputBox("input"))Ifx<yThent=x:x=y:y=tIfy<zThent=y:y=z:z=tIfx<yThent=x:x=y:y=tEndIfEndIf
EndIfPrintx,y,zEndSub例已知x,y,z三个数,使得x>y>z用一个IF语句和一个嵌套的IF语句实现例:判断某一年是否闰年的条件是符合以下两者之一能被4整除,但不能被100整除;能被400整除。PrivateSubCommand1_Click()x=Val(InputBox("输入年份"))IfxMod400=0Theny="是闰年"ElseIfxMod4=0Then
IfxMod100<>0Theny="是闰年"Elsey="不是闰年"EndIfElse
y="不是闰年"EndIfPrintx;yEndSub4.2.2SelectCase语句
SelectCase变量或表达式(数值或字符串表达式)
Case表达式列表1
语句块1Case表达式列表2
语句块2 …[CaseElse
语句块n+1]EndSelect表达式列表与变量或表达式的类型必须相同,是下面4种形式之一表达式:例:
"A"一组用逗号分隔的枚举值:
2,4,6,8
表达式1To表达式2:60To100Is关系运算符表达式:
Is<60
当使用多个表达式的列表时,表达式与表达式之间要用逗号“,”隔开SelectCase变量或表达式Case
1To10Case
"a","e","i","o","u"Case
2,4,6,8,Is>10EndSelect变量或表达式与多个Case语句中的值匹配则只执行第一个与之匹配的语句块65例:已知变量ch中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。改用SelectCase语句实现
PrivateSubCommand1_Click()ch=InputBox("输入")SelectCasechCase"a"To"z","A"To"Z"MsgBox(ch+"是字母字符")Case"0"To"9"MsgBox(ch+"是数字字符")CaseElseMsgBox(ch+"是其他字符")EndSelectEndSub例4.9判断坐标点(x,y),落在哪个象限Ifx>0Andy>0ThenMsgBox("在第一象限")ElseIfx<0Andy>0ThenMsgBox("在第二象限") ElseIfx<0Andy<0ThenMsgBox("在第三象限") ElseIfx>0Andy<0ThenMsgBox("在第四象限") EndIf
SelectCasex,yCasex>0Andy>0MsgBox(“在第一象限”)Casex<0Andy>0MsgBox(“在第二象限”)Casex<0Andy<0MsgBox(“在第三象限”)Casex>0Andy<0MsgBox(“在第四象限”)EndSelect代码二错误:SelectCase后不能出现多个变量Case后不能出现变量及逻辑运算符注意:若变量和多个Case中的值匹配,只执行第一个例:以下Case语句中错误的是A)Case0To10B)CaseIs>10C)CaseIs>10AndIs<50D)Case3,5,Is>1
例.下列关于SelectCase的叙述中,错误的是A)Case10To100 表示判断值是否介于10与100之间B)Case“abc”,“ABC” 表示判断值是否和“abc”、“ABC”两个字符串中的一个相同C)Case"X"表示判断值是否为大写字母XD)Case-7,0,100表示判断值是否等于字符串"-7,0,100"例.在窗体上画一个Command1命令按钮和两个Text1、Text2的文本框,然后编写如下事件过程PrivateSubCommand1_Click()
n=Val(Text1.Text)
SelectCasen
Case1To20
x=10Case2,4,6
x=20
CaseIs<10
x=30
Case10
x=40
EndSelect
Text2.Text=xEndSub程序运行后,在文本框Text1中输入10,然后单击命令按钮则在Text2中显示的内容是A)10B)20C)30D)40例.在窗体上画一个Command1的命令按钮,PrivateSubCommand1_Click()x=Val(InputBox("Input"))SelectCasexCase1,3Print"分支1"CaseIs>4Print"分支2"CaseElsePrint"Else分支"EndSelectEndSub程序运行,在输入对话框中输入2,则窗体上显示的是A)分支1B)分支2C)Else分支D)程序出错704.2.3条件函数
(1)IIf函数IIf(表达式,表达式为真时的值,表达式为假时的值)IIf函数是If…Then…Else结构的简洁表示例如,将x,y中大的数,放入Tmax变量中:Tmax=IIf(x>y,x,y)该语句与如下语句等价:Ifx>yThenTmax=xElseTmax=y例、设a=6,则执行x=IIf(a>5,-1,0)后,x的值为
A、5B、6C、0D、-1例:设a=“a”,b=“b”,,执行语句
x=IIf((a>b),”A”,”B”)后,x的值为
A)”a”B)”b”C)”B”D)”A”例:命令按钮Command1的单击(Click)输入-5,Text2结果为
PrivateSubCommand1_Click() DimxAsSingle,yAsSingle x=Val(Text1.Text) y=IIf(x>=0,1+x,1-2*x) Text2.Text=y EndSubA)-4B)10C)11D)-5
例:在窗体上画一个命令按钮和一个文本框,分别为Command1和Text1,然后编写如下程序:
PrivateSubCommand1_Click()a=InputBox("请输入日期(1~31)")t=”旅游景点:”_&IIf(a>0Anda<=10,"长城","")_&IIf(a>10Anda<=20,"故宫","")_&IIf(a>20Anda<=31,"颐和园","")Text1.Text=tEndSub程序运行,从键盘上输入16,则在文本框显示的内容A)旅游景点:长城故宫B)旅游景点:长城颐和园C)旅游景点:颐和园D)旅游景点:故宫73(2)Choose函数
Choose(整数表达式,选项列表)根据表达式的值i,返回选项列表中第i个选项如果整数表达式的值越出选项范围时,返回Null。例:根据Nop的值,得到+、-、×、÷中的某运算符:Op=Choose(Nop,"+","-","×","÷")PrivateSubCommand1_Click()DimnopAsIntegerDimopAsStringnop=Val(InputBox("输入数据1-4"))op=Choose(nop,"+","-","×","÷")Print“nop="&nop&"op="&opEndSub例4:根据当前日期,显示今日是星期几。(利用Now和WeekDay函数)t=Choose(Weekday(Now),"星期日","星期一","星二","星期三","星期四","星期五","星期六")MsgBox("今天是:"&Now&t)Month("2009-3-25")显示:星期二754.3循环结构
计算机最擅长的功能之一就是按规定的条件,重复执行某些操作。VB中提供了主要两类循环语句:
For循环语句(一般已知循环次数)
Do条件型循环语句(一般未知循环次数)4.3.1For循环语句
For循环语句用于控制循环次数预知的循环结构格式:For循环变量=初值To终值
Step步长
语句块(循环体)Next循环变量循环变量必须为数值型,循环体可以是一条或多条语句循环次数
>0初值<或=终值步长=1可省略默认值<0初值>或=终值=0死循环步长Fori=1To5
Step3Fori=4To1
Step-2Fori=1To577For循环语句
循环流程:(1)循环变量被赋初值(2)判断循环变量是否超过终值,如果没超过,执行循环体;如果超过,结束循环,执行Next的下一语句。(当步长为负,循环变量小于终值,循环结束)(3)循环变量加步长,转(2),继续循环
当有ExitFor语句,退出循环执行Next的下一条语句例.由“Fori=1To16Step3”决定的循环结构被执行几次A、4 B、5
C、6 D、7例.由“Fori=1To9Step-3”决定的循环结构被执行几次A、4 B、5 C、6 D、0例:在窗体上画Command1命令按钮,Label1标签PrivateSubCommand1_Click()s=0Fori=1To5x=2*i-1IfxMod3=0Thens=s+1NextiLabel1.Caption=sEndSub程序运行后,单击命令按钮,则标签中显示的内容是
A)1 B)2 C)27 D)45例:PrivateSubCommand1_Click()x=0Fori=1To5x=x+1NextiLabel1.Caption=xEndSub程序运行后,单击命令按钮Command1,则Label1显示A)3 B)4 C)5 D)6例.执行下面的程序段后,变量S的值为______
S=5
Fori=2.6To4.9Step0.6
S=S+1
Nexti9例.执行下面的程序段后,i的值为
,s的值为。s=2Fori=3.2To4.9Step0.8s=s+1Nexti5.65例.设有如下程序段:x=2Fori=1to10Step2x=x+iNexti运行以上程序后,x的值是A)26B)27C)38D)57例:在窗体上画名称为Text1的文本框和名称为Command1的命令按钮,然后编写如下事件过程:PrivateSubCommand1_Click()DimiAsInteger,nAsIntegern=0Fori=0To50i=i+3n=n+1Ifi>10ThenExitForNextiText1.Text=Str(n)EndSub程序运行后,单击命令按钮,在文本框中显示的值是A)2 B)3 D)4 D)5例.PrivateSubCommand1_Click()DimsumAsDouble,xAsDoublesum=0n=0Fori=1To5x=n/in=n+1sum=sum+xNextiEndSub通过For循环计算一个表达式的值,这个表达式是A)1+1/2+2/3+3/4+4/5 B)1+1/2+2/3+3/4C)1/2+2/3+3/4+4/5 D)1/2+1/3+1/4+1/5例:在窗体上画一个Command1的命令按钮,PrivateSubCommand1_Click()c=1234c1=Trim(Str(c))Fori=1To4Print_____NextiEndSub程序运行后,单击命令按钮,在窗体上显示如下内容1121231234则在下划线处应填入的内容为Right(c1,i)B)Left(c1,i)C)Mid(c1,i,1)D)Mid(c1,i,i)
例4.11计算1~100的奇数和Dimi%,sum%sum=0Fori=1To100Step2sum=sum+iNextiMsgBox(sum)例如程序段:
Fori=2To13Step3Printi;NextiPrint“I=“&i循环次数:4输出结果:25811退出循环后:I=144-12例:在Picture打印ASCⅡ码表,符号码对应起来,每行显示七项.在ASCⅡ码中,只有空格“”到“~”是可以显示的字符其余为不可显示的控制字符,可显示的字符编码值为32~126PrivateSubPicture1_Click()DimascAsInteger,iAsIntegerPicture1.Print"ASCⅡ码对照表"Forasc=32To126Picture1.PrintTab(8*i+2);Chr(asc);"=";asc;i=i+1Ifi=7Theni=0:Picture1.PrintNextascEndSub4.3.2Do…Loop循环语句
形式1:DoWhile|Until<条件>
语句块
[ExitDo
语句块]Loop形式2:Do
语句块
[ExitDo
语句块]LoopWhile|Until<条件>形式1为先判断后执行,有可能一次也不执行;形式2为先执行后判断,至少执行一次。
Do循环用于控制循环次数未知的循环结构如果使用“While
条件”进行判断,则当“条件”为True时执行循环体,“条件”为False时终止循环如果使用“Until
条件”进行判断,则当“条件”为False时执行循环体,“条件”为True时终止循环形式1:DoWhile|Until<条件>
语句块
[ExitDo
语句块]Loop形式2:Do
语句块
[ExitDo
语句块]LoopWhile|Until<条件>例:在窗体上画两个分别为Text1、Texte2的文本框和一个Command1的命令按钮PrivateSubCommand1_Click()DimxAsInteger,nAsIntegerx=1n=0DoWhilex<20x=x*3n=n+1LoopText1.Text=Str(x)Text2.Text=Str(n)EndSub程序运行后单击命令按钮在两个文本框中显示的值分别是A)15和1 B)27和3 C)195和3 D)600和4例.在窗体上画一个Command1的命令按钮PrivateSubCommand1_Click()DimnumAsIntegernum=1DoUntilnum>6Printnum;num=num+2.4LoopEndSub程序运行后,单击命令按钮,窗体上显示的内容是A)13.45.8 B)135C)147 D)无数据输出91Do…Loop流程
例.若i的初值为8,则下列循环语句的循环次数为几次
DoWhilei<=17i=i+2LoopA、3次 B、4次 C、5次 D、6次例.请写出单击窗体后,窗体上的显示结果PrivateSubForm_Click()DimaAsInteger,sAsIntegera=5:s=0DoWhilea<=0s=s+a:a=a–1LoopPrints;aEndSub05
例.请写出输入8、9、3、0后窗体上的显示结果。PrivateSubForm_Click()DimsumAsInteger,mAsIntegerDom=Val(InputBox("请输入m","累加和等于"&sum))Ifm=0ThenExitDosum=sum+mLoopPrintsumEndSub20例.以下能够正确计算n!的程序是C)PrivateSubCommandl_Click()
n=5:x=1:i=0
Do
i=i十1
x=x*i
Loopwhilei<n
Printx
EndSubD)PrivateSubCommandl_C1ick()
n=5:x=1:i=0
Do
i=i+1
x=x*i
loopWhilei<=n
PrintxEndSubA)PrivateSubCommandl_ClicK()n=5:x=1Dox=x*1i=i+1LoopWhilei<nPrintxEndSubB)PrivateSubCommandl_Click()
n=5:x=1:i=1
Dox=x*i
i=i+1
LoopWhilei<n
PrintxEndSub例.设有以下循环结构
Do
循环体
LoopWhile<条件>则以下叙述中错误的是()A)若"条件"是一个为0的常数,则一次也不执行循环体B)"条件"可以是关系表达式、逻辑表达式或常数C)循环体中可以使用ExitDo语句D)如果"条件"总是为True,则不停地执行循环体例.在窗体上画一个Command1的命令按钮PrivateSubCommand1_Click()DimaAsInteger,sAsIntegera=8s=1Dos=s+aa=a–1LoopWhilea<=0Prints;aEndSub程序运行后单击命令按钮则窗体上显示的内容是A)79 B)340 C)97D)死循环
LoopUntila<=0
37097例4.13我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。解此问题方法,可根据公式:PrivateSubForm_Click()Dimx#,n%x=13n=0DoWhilex<=26x=x*1.008n=n+1LoopPrint"利用循环求得用循环求得的年数为:";n;"人数为:";xEndSub984.3.3循环的嵌套
在一个循环体内又包含了一个完整的循环结构称循环的嵌套。循环嵌套对For循环语句和Do…Loop语句均适用先运行内部的循环,全部循环完再运行外部的循环内外循环的控制变量采用不同的变量名
例4.14打印九九乘法表
PrivateSubForm_Click()DimseAsStringPrintTab(35);"九九乘法表“PrintTab(35);"-----------“Fori=1To9Forj=1To9se=i&"×"&j&"="&i*jPrintTab((j-1)*9+1);se;
NextjPrint
NextiEndSub若为上三角Forj=iTo9若为下三角Forj=1Toi例:请写出单击窗体后,窗体上的显示结果PrivateSubForm_Click()DimiAsInteger,jAsIntegerFori=1To6PrintSpc(6-i);Forj=1To(2*i)–1Print"W";NextjPrintNextiEndSub例:在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:
PrivateSubCommand1_Click()x=0n=val(InputBox(“”))Fori=1TonForj=1Toix=x+1NextjNextiPrintxEndSub程序运行后单击命令按钮若输入3,则在窗体上显示A)3 B)4 C)5 D)6例在窗体上画一个命令按钮,名称为Command1
PrivateSubCommand1_Click()ForI=1To4ForJ=0ToIPrintChr(65+I);NextJPrintNextIEndSub程序运行后若单击命令按钮,则在窗体上显示的内容A)BB B)AB C)BA D)AA
CCC BB CC BBB
DDDD CCC DDD CCCC
EEEEE DDDD EEEE DDDDD1034.4其他辅助控制语句
4.4.1GoTo语句无条件地转移到标号或行号指定的那行语句
GoTo标号|行号注意:标号是字符序列,首字符必须为字母,标号后应有冒号行号是一个数字序列例4.15判断输入的数是否为素数素数就是除1和本身以外,不能被其他任何整数整除的数判别某数m是否为素数最简单的方法就是依次用i=2~m-1去除,只要有一个数能整除m,m就不是素数;否则m是素数。PrivateSubCommand1_Click()Dimi%,m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度海上风电场海域使用权转让专项合同
- 2025年度签订劳动合同多次认定长期合同的具体实施流程
- 二零二五年度农业产业升级授信借款合同
- 二零二五年度暗股投资跨境投资合作协议
- 2025年度环保项目中介服务合同拿走不谢
- 二零二五年度农村土地流转与农村电商合作合同
- 二零二五年度客运车辆城乡客运合伙经营合同
- 二零二五年度员工宿舍安全责任及免责书
- 二零二五年度山地承包合同书:山地生态农业观光园承包合作协议
- 2025年度道路养护劳务班组退场合同
- 炎德·英才大联考长郡中学2025届高三3月月考试卷(七)英语试卷(含答案详解)
- 护理查房实践报告
- 2025年医学类单招试题及答案
- 《有趣的拓印》游戏课件
- 2025年河南郑州航空港经济综合实验区招考高频重点模拟试卷提升(共500题附带答案详解)
- 2025年电力电缆安装运维工(高级)职业技能鉴定备考试题库资料(含答案)
- 治疗脑卒中的药物
- 2025年超长期特别国债“两新”投向领域分析
- 沪教版(五四学制)(2024)六年级下册单词表+默写单
- 母乳喂养护理小讲课
- 2025年八省联考物理试卷答案解析版(陕西、山西、宁夏、青海)
评论
0/150
提交评论