版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022/10/31VisualBasic程序设计教程1
第4章控制结构与过程2022/10/22VisualBasic程序设计教程1VisualBasic程序设计教程22022/10/31
4.1顺序结构
4.2选择结构
4.3循环结构第4章控制结构与过程VisualBasic程序设计教程22022/10/22VisualBasic程序设计教程32022/10/314.1顺序结构VB应用程序主要是由过程组成的,编写程序时通常使用结构化程序设计的方法。结构化程序设计包括:
顺序结构选择结构循环结构顺序结构是按程序中语句出现的先后顺序执行的结构。VisualBasic程序设计教程32022/10/224VisualBasic程序设计教程42022/10/314.1.1赋值语句
赋值语句是VB中使用最频繁的语句之一,其格式为:
<变量名>=<表达式><对象属性>=<表达式>功能:将表达式的结果赋给变量或某个对象的属性。例如:V1=V1+50VisualBasic程序设计教程42022/10/224VisualBasic程序设计教程52022/10/314.1.1赋值语句说明:①<变量名>为内存变量名或对象的属性名。②赋值语句中“=”是赋值号,与数学中的等号意义不同。③先计算表达式的值,然后将结果赋给等号“=”左边的变量。④如果等号“=”左边为Variant变量,则表达式可以是任意类型。⑤<表达式>可以是任何数据类型,但等号“=”两边的数据类型必须一致或相容。VisualBasic程序设计教程52022/10/224VisualBasic程序设计教程62022/10/314.1.2使用Print方法输出数据
1.Print方法
Print方法的格式为:
[<对象名称>.]Print<表达式表>[,|;]功能:在窗体、图片框、立即窗口或打印机等对象中输出信息。VisualBasic程序设计教程62022/10/224VisualBasic程序设计教程72022/10/314.1.2使用Print方法输出数据
说明:①如果“对象名称”省略,则在当前窗体上输出。②“表达式表”可以是算术表达式、字符串表达式、关系表达式或布尔表达式。若“表达式表”默认,则输出一个空行。③当需要在同一行输出多个表达式的值时,如用逗号(,)将表达式隔开,则按标准输出格式(以14个字符位置为单位,把一行分成多个区段)在各区段分别显示表达式的值;若用分号(;)作分隔符,则按紧凑格式输出数据。VisualBasic程序设计教程72022/10/224VisualBasic程序设计教程82022/10/314.1.2使用Print方法输出数据
2.Tab函数
Tab函数可以与Print方法配合使用。其格式为:
Tab[(n)]功能:把光标移到由参数n指定的位置,从这个位置开始输出数据。VisualBasic程序设计教程82022/10/224VisualBasic程序设计教程92022/10/314.1.2使用Print方法输出数据
3.Spc函数其格式为:
Spc(n)功能:在Print输出中,光标由当前位置跳过n个空格。VisualBasic程序设计教程92022/10/224VisualBasic程序设计教程102022/10/31【例4-1】使用Print方法直接在窗体上输出数据实例。运行界面VisualBasic程序设计教程102022/10/22VisualBasic程序设计教程112022/10/31例4-1(语句)程序代码如下:PrivateSubForm_Click()Dimv1AsString,v2AsStringDimv3AsString,v4AsStringDimv5AsStringv1="2008":v2="北京奥运"v3="北京欢迎你"v4="同一个世界"v5="同一个梦想"VisualBasic程序设计教程112022/10/22VisualBasic程序设计教程122022/10/31程序代码如下:
PrintPrintTab(15);v1;v2PrintPrintTab(16);v3PrintPrintTab;v4,v5PrintPrintTab(4);v4,v5EndSubVisualBasic程序设计教程122022/10/22VisualBasic程序设计教程132022/10/314.1.3输入函数InputBox
格式为:
InputBox(Prompt[.Title][,Default][,Xpos,Ypos])功能:弹出一个对话框(如图所示),等待用户输入数据,当用户敲回车键或单击“确定”按钮时,函数将输入的内容以字符串返回。VisualBasic程序设计教程132022/10/22VisualBasic程序设计教程142022/10/314.1.3输入函数InputBox
例如:
n=InputBox("请输入学生人数:","输入框",0)提示标题默认值VisualBasic程序设计教程142022/10/22VisualBasic程序设计教程152022/10/314.1.3输入函数InputBox
函数中参数含义如下。
①Prompt:这是一个必选项,可以是字符串或字符串变量,用于表示出现在对话框中的提示信息,最长1024个字符,如上例中的“请输入学生人数:”。在对话框中显示Prompt时系统会自动换行,如果想按自己的要求换行,可在适当的位置插入回车换行操作:
Chr$(13)+Chr$(10)
VisualBasic程序设计教程152022/10/22VisualBasic程序设计教程162022/10/314.1.3输入函数InputBox
函数中参数含义如下。②Title:可选项,字符串或字符串变量,用于表示对话框内的标题信息,如上例中的“输入框”,若省略此项,则用工程名作为对话框的标题。VisualBasic程序设计教程162022/10/22VisualBasic程序设计教程172022/10/314.1.3输入函数InputBox
函数中参数含义如下。
③Default:可选项,字符串或字符串变量,用于设置输入框的文本中的默认文本。如果此项省略,则对话框的输入区是空白的,否则,在对话框的输入区会显示该参数的内容,并作为输入的默认值。如果用户不想用这个默认字符串作为输入值,可在输入区直接输入新的数据。
VisualBasic程序设计教程172022/10/22VisualBasic程序设计教程182022/10/314.1.3输入函数InputBox
函数中参数含义如下。④Xpos,Ypos:可选项,是两个整数值,用于设置输入框与屏幕左边和上边的距离(单位为twip)。若默认,则对话框显示在屏幕中心线向下约三分之一处。VisualBasic程序设计教程182022/10/22VisualBasic程序设计教程192022/10/314.1.3输入函数InputBox
【例4-2】设计一个窗体,其中有一个命令按钮,如下图所示。VisualBasic程序设计教程192022/10/22VisualBasic程序设计教程202022/10/314.1.3输入函数InputBox
编写单击命令按钮响应事件如下:PrivateSubCommand1_Click()Dims1AsString*8,s2AsStringDims3AsInteger,s4AsStringClss1=InputBox("请输入学号:","输入学号","20080001")s2=InputBox("请输入姓名:","输入姓名")s3=Val(InputBox("请输入年龄:","输入年龄",18))VisualBasic程序设计教程202022/10/22VisualBasic程序设计教程212022/10/314.1.3输入函数InputBox
编写单击命令按钮响应事件如下:
s4=InputBox("请输入班级:","输入班级")PrintPrintTab(4);"学号";Spc(5);"姓名";Spc(5);"年龄";Spc(6);"班级"PrintTab(2);s1;Tab(12);s2;Tab(22);s3;Tab(30);s4EndVisualBasic程序设计教程212022/10/22VisualBasic程序设计教程222022/10/31【例4.1】输入一个圆的半径,试求其面积。新建一个工程,在其窗体上建立一个命令按钮。对命令按钮的单击事件编程。VisualBasic程序设计教程222022/10/22VisualBasic程序设计教程232022/10/31PrivateSubCommand1_Click()DimsAsSingle,rAsSingler=InputBox("请输入圆半径")s=3.14159*r*rPrint"圆面积为:"&sEndSubVisualBasic程序设计教程232022/10/22VisualBasic程序设计教程242022/10/31用文本框输入PrivateSubCommand1_Click()DimsAsSingle,rAsSingler=val(Text1.Text)s=3.14159*r*rPrint"圆面积为:"&sEndSubVisualBasic程序设计教程242022/10/22VisualBasic程序设计教程252022/10/31用标签输出PrivateSubCommand1_Click()DimsAsSingle,rAsSingler=val(Text1.Text)s=3.14159*r*rLabel1.Caption="圆面积为:"&sEndSubVisualBasic程序设计教程252022/10/22VisualBasic程序设计教程262022/10/31其它方式用文本框输出用MsgBox输出VisualBasic程序设计教程262022/10/22VisualBasic程序设计教程272022/10/314.1.4输出函数MsgBox与
MsgBox语句
1.MsgBox函数格式为:
MsgBox(Prompt[,Buttons][,Title][,HelpFile,Context])功能:根据参数建立一个对话框,显示提示信息,同时将用户在对话框中的选择结果传输给程序。VisualBasic程序设计教程272022/10/22VisualBasic程序设计教程282022/10/31
提示标题命令按钮图标MsgBox函数弹出信息框VisualBasic程序设计教程282022/10/22VisualBasic程序设计教程292022/10/314.1.4输出函数MsgBox与
MsgBox语句
函数中参数Title的含义与InputBox函数中同名参数类似。①Prompt:必选项,可以是字符串或字符串变量,最长1024个字符。它用于显示在对话框中的提示信息,通知用户应该做什么选择。在对话框中显示Prompt时系统会自动换行,如果想按自己的要求换行,可在适当的位置插入回车换行操作:Chr$(13)+Chr$(10)。VisualBasic程序设计教程292022/10/22VisualBasic程序设计教程302022/10/314.1.4输出函数MsgBox与
MsgBox语句
②Buttons:可选项,可以是整数值或表4-1中系统定义的符号常量。它用于指定对话框中按钮的数目及形式、图标的样式,以及默认按钮和强制返回。该参数的值由表4-1中四类数值各选一个相加产生。若此项缺省,则对话框内只显示一个“确定”按钮(默认值为0)。VisualBasic程序设计教程302022/10/22VisualBasic程序设计教程312022/10/31类型数值功能按钮0只显示“确定”按钮1显示“确定”及“取消”按钮2显示“终止”、“重试”及“忽略”按钮3显示“是”、“否”及“取消”按钮4显示“是”及“否”按钮5显示“重试”及“取消”按钮表4-1参数Buttons的取值
VisualBasic程序设计教程312022/10/22VisualBasic程序设计教程322022/10/31表4-1参数Buttons的取值类型数值功能图标16显示CriticalMessage图标32显示QueryMessage图标48显示WarningMessage图标64显示InformationMessage图标按钮0第一个按钮是默认值256第二个按钮是默认值512第三个按钮是默认值768第四个按钮是默认值VisualBasic程序设计教程322022/10/22VisualBasic程序设计教程332022/10/31
表4-2MsgBox函数返回值
返回值操作符号常量1选“确定”按钮vbOK2选“取消”按钮vbCancel3选“终止”按钮vbAbort4选“重试”按钮vbRetry5选“忽略”按钮vbIgnore6选“是”按钮vbYes7选“否”按钮vbNoVisualBasic程序设计教程332022/10/22VisualBasic程序设计教程342022/10/31输出函数MsgBox【例4-3】编写程序,使用MsgBox函数显示对话框。
PrivateSubForm_Click()m1="需要数据备份吗?"m2="MsgBox函数示例1"h=MsgBox(m1,36,m2)PrinthEndSubVisualBasic程序设计教程342022/10/22VisualBasic程序设计教程352022/10/312.MsgBox语句
MSgBox语句与MSgBox函数的作用相似,各参数的含义亦与MsgBox函数相同。其格式为:
MsgBox<Prompt>[,Buttons][,Title][,HelpFile,Context]功能:建立一个对话框,显示提示信息,同时接收用户在对话框中的选择。VisualBasic程序设计教程352022/10/22VisualBasic程序设计教程362022/10/31【例4-4】编写程序,使用MsgBox语句显示对话框。
PrivateSubForm_Click()m1="欢迎使用本系统!"m2="MsgBox语句示例"MsgBoxm1,0,m2EndSubVisualBasic程序设计教程362022/10/22VisualBasic程序设计教程372022/10/314.1.5编程规则
1.注释语句注释语句是非执行语句,格式为:
Rem<注释内容>'<注释内容>2.续行符
VB允许使用续行符“_”(一个空格加一个下划线)将一条长语句写成多行。VisualBasic程序设计教程372022/10/22VisualBasic程序设计教程382022/10/314.1.5编程规则
3.一行写多条语句语句间用冒号“:”分隔。例如:a=25:b=50:c=84.暂停语句暂停语句用来暂停程序的执行。格式为:Stop5.结束语句
EndVisualBasic程序设计教程382022/10/22VisualBasic程序设计教程392022/10/314.2选择结构
VB中选择结构语句包含
If语句
SelectCase语句VisualBasic程序设计教程392022/10/22VisualBasic程序设计教程402022/10/314.2.1If语句
If语句又称条件语句,包括:单分支结构双分支结构多分支结构VisualBasic程序设计教程402022/10/22VisualBasic程序设计教程412022/10/311单分支If语句
块结构If语句格式为:
If<表达式>Then<语句序列>EndIf单行:If<表达式>Then<语句序列>功能:如果表达式的值为True(真),执行语句序列,否则执行EndIf后面的语句。VisualBasic程序设计教程412022/10/22VisualBasic程序设计教程422022/10/311单分支If语句
图4-7单分支语句工作流程图VisualBasic程序设计教程422022/10/22VisualBasic程序设计教程432022/10/312双分支If语句块结构If语句格式为:If<表达式>Then<语句序列1>Else<语句序列2>EndIf单行:If<表达式>Then<语句序列1>Else<语句序列2>功能:如果表达式的值为True(真),执行语句序列1,否则执行语句序列2。VisualBasic程序设计教程432022/10/22VisualBasic程序设计教程442022/10/312双分支If语句
图4-8双分支语句工作流程图表达式FTIf前面的语句语句序列1语句序列2EndIf后面的语句VisualBasic程序设计教程442022/10/22VisualBasic程序设计教程452022/10/31
2双分支If语句【例4-5】设有函数如下,计算y的值:
1x>0y=0x=0
-1x<0
VisualBasic程序设计教程452022/10/22VisualBasic程序设计教程462022/10/31程序代码如下:PrivateSubForm_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx>0Theny=1ElseIfx<0Theny=-1Else
VisualBasic程序设计教程462022/10/22VisualBasic程序设计教程472022/10/31程序代码:
Elsey=0EndIfEndIfLabel2.Caption=Str(y)EndSub
VisualBasic程序设计教程472022/10/22VisualBasic程序设计教程482022/10/31用sgn(x)函数实现PrivateSubCommand1_Click() dimxAssingle,yassingle x=val(Text1.Text) Label2.Caption=sgn(x)EndsubVisualBasic程序设计教程482022/10/22VisualBasic程序设计教程492022/10/313多行If语句
If<表达式1>Then<语句序列1>[ElseIf<表达式2>Then<语句序列2>][ElseIf<表达式n>Then<语句序列n>……[Else<语句序列n+1>]
EndIfVisualBasic程序设计教程492022/10/22VisualBasic程序设计教程502022/10/31
多行If语句工作流程图VisualBasic程序设计教程502022/10/22VisualBasic程序设计教程512022/10/31用多行If语句改写例题4-5Ifx>0then y=1ElseIfx<0then y=-1Else y=0EndIfVisualBasic程序设计教程512022/10/22VisualBasic程序设计教程522022/10/31【例4-6】在窗体上有一个标签Label1和一个命令按钮Command1,程序运行后,单击命令按钮弹出一个输入对话框,用户输入任意一个正整数,在标签上输出该数字的位数。VisualBasic程序设计教程522022/10/22VisualBasic程序设计教程532022/10/31PrivateSubCommand1_Click()DimNumAsLongNum=Val(InputBox("请输入任意正整数","多行If语句实例",0))IfNum<10ThenLabel1.Caption="输入的是一位数字:"&NumElseIfNum<100ThenLabel1.Caption="输入的是两位数字:"&NumElseIfNum<1000ThenLabel1.Caption="输入的是三位数字:"&NumElseLabel1.Caption="输入的是四位以上数字:"&NumEndIfEndSubVisualBasic程序设计教程532022/10/22VisualBasic程序设计教程542022/10/314IIf函数
IIf函数可用来执行简单的条件判断操作,它和“If…Then…Else”语句有类似的功能。格式为:
IIf(<条件>,<True部分>,<False部分>)其中,“条件”是一个逻辑表达式。当“条件”为真时,IIf函数返回“True部分”,若“条件”为假,则返回“False部分”。VisualBasic程序设计教程542022/10/22VisualBasic程序设计教程552022/10/314IIf函数【例4-7】利用IIf函数改写例题4-5。PrivateSubCommand1_Click()DimxAsSingle,yAsIntegerx=Val(Text1.Text)y=IIf(x>0,1,IIf(x=0,0,-1))Text2.Text=Str(y)EndSubVisualBasic程序设计教程552022/10/22VisualBasic程序设计教程562022/10/31【例4.7】输入一个学生的平均成绩x,若x≥90则输出“优秀”;若x<90且x≥80则输出“良好”;若x<80且x≥70则输出“中等”;若x<70且x≥60则输出“及格”;若x<60则输出“不及格”。对窗体的单击事件编程如下。(tu4-7.vbp)VisualBasic程序设计教程562022/10/22VisualBasic程序设计教程572022/10/31PrivateSubForm_Click()DimxAsSingle,yAsStringx=InputBox("请输入平均成绩")Ifx>=90Theny="为优秀"ElseIfx>=80Theny="为良好"ElseIfx>=70Theny="为中等"ElseIfx>=60Theny="为及格"Elsey="为不及格"EndIfMsgBoxx&yEndSubVisualBasic程序设计教程572022/10/22VisualBasic程序设计教程582022/10/31用Label和TextBox控件实现
(tu4-7-1.vbp)。VisualBasic程序设计教程582022/10/22VisualBasic程序设计教程592022/10/31PrivateSubCommand1_Click()DimxAsSingle,yAsStringx=val(Text1.Text) ‘文本框输入
Ifx>=90Theny="为优秀"ElseIfx>=80Theny="为良好"ElseIfx>=70Theny="为中等"ElseIfx>=60Theny="为及格"Elsey="为不及格"EndIfLabel3.Caption=y ‘标签输出EndSubVisualBasic程序设计教程592022/10/22VisualBasic程序设计教程602022/10/314.2.2SelectCase语句(情况语句)语句的一般格式为:SelectCase<测试表达式> Case<表达式结果表1> <语句序列1> Case<表达式结果表2> <语句序列2> …… Case<表达式结果表n> <语句序列n>
[CaseElse<语句序列n+l>]
EndSelectVisualBasic程序设计教程602022/10/22VisualBasic程序设计教程612022/10/31功能:根据<测试表达式>的值,从若干语句块中挑选一个语句块执行。<测试表达式>可以是数字表达式或字符串表达式。VisualBasic程序设计教程612022/10/22VisualBasic程序设计教程622022/10/31SelectCase语句中的“表达式结果表”可以有下列四种形式:①只有一个数值常量或单个字符常量例如:SelectCasex Case5 Case"are" VisualBasic程序设计教程622022/10/22VisualBasic程序设计教程632022/10/31②有多个用逗号隔开的数值常量或字符串常量。如果表达式的值与其中一个数值或字符串相等,即可执行此表达式结果后相应的语句序列;否则,若表达式的值与这些取值均不相等,可以再与随后的其他表达式结果表进行比较。例如:SelectCasexCase3,6,9,12Case"a","u","o" VisualBasic程序设计教程632022/10/22VisualBasic程序设计教程642022/10/31③<表达式结果1>To<表达式结果2>:它提供了一个数值或字符串的取值范围,字符串常量的范围必须按字母顺序写出。如果表达式的值与范围内的某个值相等,则执行此表达式结果后相应的语句序列;否则,若表达式的值与这个取值范围内的值均不相等,可以再与随后的其他表达式结果表进行比较。例如:SelectCasexCase10To99Case"A"To"Z"VisualBasic程序设计教程642022/10/22VisualBasic程序设计教程652022/10/31④Is关系运算符数值或字符串:Is是关键字,其后只能使用“=”、“>”、“<”、“>=”、“<=”和“<>”等关系运算符。将测试表达式的值与关系运算符后面的数值或字符串进行比较,若结果为真,则执行此表达式结果后相应的语句序列;否则,与随后的其他表达式结果表进行比较。例如:SelectCasex
CaseIs>"ABC"
CaseIs<=999VisualBasic程序设计教程652022/10/22VisualBasic程序设计教程662022/10/31用Selectcase语句改写成绩等级例题(tu4-7-3)SelectCasexCaseIs>=90y="为优秀"CaseIs>=80y="为良好"CaseIs>=70y="为中等"CaseIs>=60y="为及格"
CaseElsey="为不及格"EndSelect……VisualBasic程序设计教程662022/10/22VisualBasic程序设计教程672022/10/314.3循环结构VB提供了三种不同风格的循环结构计数循环(For…Next)当循环(While…Wend)Do循环。VisualBasic程序设计教程672022/10/22VisualBasic程序设计教程682022/10/314.3.1For循环For循环也称For…Next循环,属于计数型循环,在程序中实现固定次数的循环。其格式为:
For循环变量=初值To终值[Step步长]
<语句序列>
[ExitFor]
…Next[循环变量]功能:按指定的次数执行循环体。VisualBasic程序设计教程682022/10/22VisualBasic程序设计教程692022/10/314.3.1For循环其中:循环变量:是用做循环计数器的数值变量,也称为循环控制变量。初值:循环控制变量的初值,是一个常数或数值表达式。终值:循环控制变量的终值,是一个常数或数值表达式。步长:循环控制变量的增量,是一个常数或数值表达式。其值可以是正数(递增循环)或负数(递减循环)。VisualBasic程序设计教程692022/10/22VisualBasic程序设计教程702022/10/31例如:
Fori=1To100Step1sum=sum+iNext其中:i是循环变量,1是初值,100是终值,1是步长,sum是累加器,sum=sum+i是循环体。也可以写成:
Fori=100To1Step-1sum=sum+iNextVisualBasic程序设计教程702022/10/22VisualBasic程序设计教程712022/10/31循环次数由初值、终值和步长三个因素决定,计算公式为:循环次数=Int(终值-初值)/步长+1【例4-9】窗体上有1个标签Label1和2个命令按钮Command1、Command2,编写程序计算的值。VisualBasic程序设计教程712022/10/22VisualBasic程序设计教程722022/10/31VisualBasic程序设计教程722022/10/22VisualBasic程序设计教程732022/10/31PrivateSubCommand1_Click()DimnAsInteger,iAsInteger,sumAsDoublen=Val(InputBox("请输入整数N","For循环"))Fori=1TonStep1sum=sum+1/iNextiLabel1.Caption="1+1/2+…+1/"+Trim(Str(n))+"="+Trim(Str(sum))EndSubVisualBasic程序设计教程732022/10/22VisualBasic程序设计教程742022/10/31拓展如何用MsgBox输出?如果用TextBox输出,该怎么做?VisualBasic程序设计教程742022/10/22VisualBasic程序设计教程752022/10/314.3.2While循环其格式为:
While<条件表达式><语句序列>Wend功能:如果“条件表达式”的值为True时,则执行循环中的“语句序列”,即循环体。VisualBasic程序设计教程752022/10/22VisualBasic程序设计教程762022/10/31……n=Val(InputBox("请输入整数N","For循环"))i=1 ’注意变化
Whilei<=nsum=sum+1/ii=i+1 ’注意变化
Wend……用While循环实现例题4-9VisualBasic程序设计教程762022/10/22VisualBasic程序设计教程772022/10/314.3.3Do循环Do循环的格式有两种:格式1:Do<语句序列>[ExitDo]Loop[While|Until<条件表达式>]格式2:Do[While|Until<条件表达式>]<语句序列>[ExitDo]LoopVisualBasic程序设计教程772022/10/22VisualBasic程序设计教程782022/10/31功能:当“条件表达式”的值为True或直到“表达式”的值为True之前,重复执行指定的“语句序列”(即循环体)。说明:①条件表达式是一个逻辑表达式或关系表达式,是决定循环是否执行的条件。②语句序列是任何合法的VB语句或操作命令,由一条或多条要重复执行的语句组成。③使用ExitDo语句只能跳出一层循环,如果存在多层Do循环嵌套,而ExitDo语句设在内层,则只能跳出内层,继续执行外层循环。VisualBasic程序设计教程782022/10/22VisualBasic程序设计教程792022/10/31Do前面的语句Loop后面的语句执行循环体计算“条件”值Do前面的语句执行循环体计算“条件”值Loop后面的语句NY条件为真吗YNDo…LoopWhile工作流程图Do…LoopUntil工作流程图条件为真吗YNVisualBasic程序设计教程792022/10/22VisualBasic程序设计教程802022/10/31用DoWhile---Loop实现例题4-9n=Val(InputBox("请输入整数N","For循环"))i=1DoWhilei<=n’注意变化
sum=sum+1/ii=i+1Loop’注意变化……课后思考:若用DoUntil---Loop,如何做?VisualBasic程序设计教程802022/10/22VisualBasic程序设计教程812022/10/31用Do---LoopUntil实现例题4-9…n=Val(InputBox("请输入整数N","For循环"))i=1Dosum=sum+1/ii=i+1LoopUntili>n…课后思考:若用Do---LoopWhile,如何做?VisualBasic程序设计教程812022/10/22VisualBasic程序设计教程822022/10/31【例题】求阶乘。在窗体上有一个文本框Text1、一个标签Label1和一个命令按钮Command1。程序运行后,在Text1中输入一个正整数n,单击Command1,则在Label1中显示该数n的阶乘。VisualBasic程序设计教程822022/10/22VisualBasic程序设计教程832022/10/31求阶乘的运行界面VisualBasic程序设计教程832022/10/22VisualBasic程序设计教程842022/10/31PrivateSubCommand1_Click()DimnAsInteger,iAsInteger,pAsDoublen=Val(Text1.Text)p=1Fori=1Tonp=p*iNextLabel1.Caption=pEndSub思考:若用InputBox输入,如何做?VisualBasic程序设计教程842022/10/22VisualBasic程序设计教程852022/10/31用While循环实现……
n=Val(Text1.Text)p=1i=1 ‘此处开始有变化
Whilei<=np=p*ii=i+1 ‘修改循环变量
WendLabel1.Caption=p……VisualBasic程序设计教程852022/10/22VisualBasic程序设计教程862022/10/31用Do—LoopWhile实现……n=Val(Text1.Text)p=1i=1Dop=p*ii=i+1LoopWhilei<=nLabel1.Caption=p……VisualBasic程序设计教程862022/10/22VisualBasic程序设计教程872022/10/31用DoUntil—Loop实现 n=Val(Text1.Text)p=1i=1DoUntili>n ‘此处开始有变化
p=p*ii=i+1LoopLabel1.Caption=p……VisualBasic程序设计教程872022/10/22VisualBasic程序设计教程882022/10/31应用实例【例4-8】编写一个对输入字符进行转换的程序:将其中的大写字母转换成小写字母,而小写字母则转换为大写字母,空格不转换,退格键和回车键不接受,其余字符转换成井号“#”号。要求每输入一个字符马上就进行判断和转换。(P77)VisualBasic程序设计教程882022/10/22VisualBasic程序设计教程892022/10/31KeyPress事件(P160)用户按下与ASCII字符对应的键时,将触发KeyPress事件。KeyPress事件能够识别数字、字母和符号等所有可见字符,以及Enter、Backspace、Tab和Esc这4个控制键,但是KeyPress事件不能识别其他控制键、编辑键、定位键和F1~F12功能键。VisualBasic程序设计教程892022/10/22VisualBasic程序设计教程902022/10/316.1.1KeyPress事件KeyPress事件过程的语法格式如下:Sub对象名_KeyPress(KeyAsciiAsInteger)参数说明:KeyAscii参数返回对应ASCII字符代码的整型数值。例如,按下“a”,KeyAscii参数值为97;按下“A”,KeyAscii参数值为65。VisualBasic程序设计教程902022/10/22VisualBasic程序设计教程912022/10/31’13是回车键的ASCII码,8是退格键PrivateSubText1_KeyPress(KeyAsciiAsInteger)DimaaAsString*1IfKeyAscii=13OrKeyAscii=8Then KeyAscii=0Else aa=Chr$(KeyAscii)
VisualBasic程序设计教程912022/10/22VisualBasic程序设计教程922022/10/31SelectCaseaa Case"A"To"Z"
aa=LCase(aa)
'aa=Chr$(KeyAscii+32) Case"a"To"z"
aa=UCase(aa)'aa=Chr$(KeyAscii-32)Case""aa=""CaseElseaa="#"EndSelectText2.Text=Text2.Text&aaEndIfEndSubVisualBasic程序设计教程922022/10/22VisualBasic程序设计教程932022/10/31例4-11:单击窗体,将0~30中能被3整除的数显示在窗体上。(P83)VisualBasic程序设计教程932022/10/22VisualBasic程序设计教程942022/10/31PrivateSubForm_Click()DimyAsIntegerWhiley<=30y=y+1IfyMod3=0ThenPrinty;EndIfWendEndSubVisualBasic程序设计教程942022/10/22VisualBasic程序设计教程952022/10/31改进例题4-11输入一个正整数N,单击窗体,则输出0~N之间能被3整除的数,每输出10个数,换行一次。VisualBasic程序设计教程952022/10/22VisualBasic程序设计教程962022/10/31PrivateSubForm_Click()DimnAsInteger,yAsInteger,kAsIntegern=Val(InputBox("输入正整数N"))Whiley<=ny=y+1IfyMod3=0ThenPrinty;k=k+1EndIfIfkMod10=0ThenPrint '换行
WendEndSubVisualBasic程序设计教程962022/10/22VisualBasic程序设计教程972022/10/31【例4-12】在窗体上有两个标签框;两个文本框Text1和Text2;两个命令按钮Command1和Command2。编写程序,将用户在文本框Text1中输入的字符串的偶位数字符取出,组成一个新字符串,并在文本框Text2中输出。
VisualBasic程序设计教程972022/10/22VisualBasic程序设计教程982022/10/31PrivateSubCommand1_Click()DimpAsInteger,nAsIntegerDims1AsString,s2AsStrings1=Trim(Text1.Text)n=Len(Trim(Text1.Text))p=1DoWhilep<=nIfpMod2=0Thens2=s2&Mid(s1,p,1)p=p+1LoopText2.Text=s2EndSubVisualBasic程序设计教程982022/10/22VisualBasic程序设计教程992022/10/31【例4.12】使用Do…LoopUntil循环计算199~253之间的偶数和。用MsgBox语句显示结果。PrivateSubForm_Click()DimxAsInteger,sAsIntegerx=200Dos=s+xx=x+2LoopUntilx>253MsgBox"200+202+...+252="+Str(s),,"偶数和"EndSubVisualBasic程序设计教程992022/10/22VisualBasic程序设计教程1002022/10/314.3.4多重循环如果循环体中包含有循环语句,就是多重循环。内层循环体还可以包含循环语句,就是三重循环,依此类推。多重循环又称循环的嵌套。VisualBasic有3种格式的循环语句,嵌套可以是同类型的循环,也可以是不同类型的循环。如果某层循环内包含退出语句,当执行退出语句时,只能退出本层循环,使控制转移到本层循环终端语句的下一个语句。VisualBasic程序设计教程1002022/10/2VisualBasic程序设计教程1012022/10/31【例4-13】For循环嵌套实例。PrivateSubForm_Click()DimiAsInteger,jAsIntegerFori=1To5PrintTab(3);Forj=1To5Print""+"a";Trim(i)+Trim(j);NextjPrintNextiEndSubVisualBasic程序设计教程1012022/10/2VisualBasic程序设计教程1022022/10/31常用算法举例【例4.16】计算1/1!+1/2!+1/3!+…1/n!之值。程序运行界面如图所示。VisualBasic程序设计教程1022022/10/2VisualBasic程序设计教程1032022/10/31OptionExplicitDimmAsInteger ‘窗体变量PrivateSubCommand1_Click()m=InputBox("请输入一个整数")EndSubPrivateSubCommand2_Click()DimiAsInteger,pAsLong,sAsDoublep=1Fori=1Tomp=p*is=s+1/pNextiLabel1.Caption="1/1!+1/2!+...+"&"1/"&m&"!="&sEndSubVisualBasic程序设计教程1032022/10/2VisualBasic程序设计教程1042022/10/31【例4.17】求1/1!+1/3!+1/5!+…1/(2n-1)!之值。程序运行界面如图所示。本题在前一题的基础上修改。所有控件的属性不用更改,程序中只考虑奇数的阶乘项。VisualBasic程序设计教程1042022/10/2VisualBasic程序设计教程1052022/10/31DimmAsIntegerPrivateSubCommand1_Click()m=InputBox("请输入一个整数")EndSubPrivateSubCommand2_Click()DimpAsLong,iAsInteger,sAsSinglep=1Fori=1To2*m-1p=p*iIfiMod2=1Thens=s+1/pEndIfNextiLabel1.Caption="1/1!+1/3!+...+"&"1/(2*"&m&"-1)!="&sEndSubVisualBasic程序设计教程1052022/10/2VisualBasic程序设计教程1062022/10/31【例4.18】在左边文本框中输入一个数n,单击命令按钮后,便在右边文本框中输出1+(1+2)+(1+2+3)+…+(1+2+3+…n)之值。当n=5时,程序运行界面如图所示。VisualBasic程序设计教程1062022/10/2VisualBasic程序设计教程1072022/10/31PrivateSubCommand1_Click()DimnAsInteger,iAsInteger,sAsLong,tAsLongn=Val(Text1.Text)i=1DoWhilei<=ns=s+it=t+si=i+1LoopText2.Text="1+(1+2)+...+(1+2+...+"&n&")="&tEndSubVisualBasic程序设计教程1072022/10/2VisualBasic程序设计教程1082022/10/31【例4.19】求1+1/2+1/3+…+1/n的和,用MsgBox语句显示结果。当n=7时,MsgBox对话框如图所示。VisualBasic程序设计教程1082022/10/2VisualBasic程序设计教程1092022/10/31PrivateSubForm_Click()DimnAsInteger,iAsIntegerDimsAsSingle,pasStringn=InputBox("请输入一个整数")i=1DoUntili>ns=s+1/ii=i+1Loopp="1+1/2+...+1/"&n&"="MsgBoxp&s,,"计算1+1/2+...1/n之和"EndSubVisualBasic程序设计教程1092022/10/2VisualBasic程序设计教程1102022/10/31【例4.20】求1+1/3+1/5+1/7+…1/(2n+1)的值,用MsgBox显示结果。当n=5时,MsgBox对话框如图所示。VisualBasic程序设计教程1102022/10/2VisualBasic程序设计教程1112022/10/31PrivateSubForm_Click()DimnAsInteger,iAsInteger,sAsSingle,pasStringn=InputBox("请输入一个整数")i=1:s=1DoUntili>ns=s+1/(2*i+1)i=i+1Loopp="计算1+1/3+...1/(2n+1)之和"MsgBox"1+1/3+...+1/(2*"&n&"+1)="&s,,pEndSubVisualBasic程序设计教程1112022/10/2VisualBasic程序设计教程1122022/10/31【例4.21】求两个数的最大公约数。用MsgBox语句输出。当输入的两个数分别为504与180时,MsgBox对话框如图所示。VisualBasic程序设计教程1122022/10/2VisualBasic程序设计教程1132022/10/31算法描述被除数(m)除以除数(n)得余数(res)若余数为0,则退出循环,本次的除数(n)即为最大公约数;若余数不为0,则将除数(n)赋给被除数(m),将余数(res)赋给除数(n),然后再除得余数res。再判断余数res是否为0。依此类推。VisualBasic程序设计教程1132022/10/2VisualBasic程序设计教程1142022/10/31PrivateSubForm_Click() DimmAsInteger,nAsIntegerresAsInteger Dimm1AsInteger,n1AsInteger,pasString Do m=InputBox("输入第1个数") n=InputBox("输入第2个数") LoopWhilem=0Orn=0 m1=m:n1=n Do res=mModn Ifres=0ThenExitDo m=n:n=res Loop p=m1&"和"&n1&"的最大公约数是:" MsgBoxp&n,,"求最大公约数“EndSubVisualBasic程序设计教程1142022/10/2VisualBasic程序设计教程1152022/10/31【例4.23】产生40个随机数,模拟学生成绩。求最高分、最低分及平均分。程序运行界面如图所示。
VisualBasic程序设计教程1152022/10/2VisualBasic程序设计教程1162022/10/31随机函数Rnd函数在调用Rnd函数之前,先使用无参数的Randomize语句初始化随机数生成器。无参数时,根据系统时钟得到种子。生成某个范围的随机数,用以下公式:Int((Upperbound-Lowerbound+1)*Rnd+Lowerbound)VisualBasic程序设计教程1162022/10/2VisualBasic程序设计教程1172022/10/31PrivateSubForm_Click()DimmaxAsInteger,minAsInteger,eAsSingleDimiAsInteger,xAsIntegerRandomize:max=-1:min=101Fori=1To40x=50+Int(51*Rnd)Ifx>maxThenmax=xIfx<minThenmin=xe=e+xNextiLabel1.Caption="最高分:"&maxLabel2.Caption="最低分:"&minLabel3.Caption="平均分:"&Round(e/40,2)EndSubVisualBasic程序设计教程1172022/10/2VisualBasic程序设计教程1182022/10/31【例4.24】任意给出一个整数,判断它是否是素数,程序运行界面如图4.23所示。
VisualBasic程序设计教程1182022/10/2VisualBasic程序设计教程1192022/10/31算法用2~sqr(X)范围内的整数依次来除X若其中有一个能够整除X,则X不是素数。若所有的整数都不能整除X,则X是素数。VisualBasic程序设计教程1192022/10/2VisualBasic程序设计教程1202022/10/31PrivateSubForm_Click()DimxAsInteger,iAsIntegerx=InputBox("请输入一个整数")Fori=2ToSqr(x)IfxModi=0ThenExitForNextiIfi>Sqr(x)ThenLabel1.Caption=x&"是一个素数"ElseLabel1.Caption=x&"不是一个素数"EndIfEndSubVisualBasic程序设计教程1202022/10/2VisualBasic程序设计教程1212022/10/31平时测验通知拟定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北农业大学现代科技学院《食品工艺学》2022-2023学年第一学期期末试卷
- 股东无息借款合同
- 化肥销售合同范本3篇
- 水电施工合同
- 的股权协议书模板
- 接电合同书样本
- 2024年度钢筋销售代理协议3篇
- 公司转让免责协议书范本
- 自建房装修合同范本
- 二零二四年度甲乙双方关于合作开展体育赛事的合同
- 格力渠道模式(课堂PPT)
- 提高地下车库防水层铺设一次验收合格率(QC成果)
- 《英语期中家长会》PPT课件.ppt
- 月亮的味道精品(课堂PPT)
- 广东医械所国家中心检验报告(模板)
- 超声腹部检查手法图解(课堂PPT)
- 三星的高效会议原则
- 小学语文学习习惯(课堂PPT)
- 厂区动土作业安全规程HG
- 原平民歌《送哥哥送到滹沱河》音乐分析
- 《2021国标电气弱电图集资料》01D203-2 6~10千伏配电所二次接线(直流操作部分)
评论
0/150
提交评论