《第三章 程序流程控制.ppt》由会员分享,可在线阅读,更多相关《第三章 程序流程控制.ppt(111页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章第三章 程序流程控制程序流程控制第三章程序流程控制3.1 顺序结构顺序结构3.1.2 数据输出数据输出3.1.3 数据输入数据输入3.1.1 赋值语句赋值语句3.1.4 卸载对象卸载对象2第三章程序流程控制3.1.1 赋值语句赋值语句1.1.赋值语句的一般的格式赋值语句的一般的格式变量赋值变量赋值:Let =属性赋值属性赋值:Let.=Dim a as integer Let a=100 a=100 两个语句的功能相同两个语句的功能相同3第三章程序流程控制2.2.赋值语句的含义赋值语句的含义 首先计算赋值号右边表达式的值,然首先计算赋值号右边表达式的值,然后将此值赋给赋值号左边的变量名或
2、后将此值赋给赋值号左边的变量名或属性名。属性名。例:例:dim a as integer a=100 a=a+1 a=3*44第三章程序流程控制关关键键字字Let为为可可选选项项,通通常常都都省省略略该该关关键键字字;“=”称称为为赋赋值值号。号。“表表达达式式”可可以以是是算算术术表表达达式式、字字符符串串表表达达式式、关关系系表表达达式式或或逻辑表达式。逻辑表达式。5第三章程序流程控制赋值号不是数学上的等号。赋值号不是数学上的等号。例如:例如:“a=3”应读作应读作“将数值将数值3赋给变量赋给变量a”。赋赋值值语语句句具具有有计计算算和和赋赋值值的的双双重重功功能能,它它首首先先计计算算“
3、=”右右边边的的表表达达式式,然然后后把把结结果果赋赋给给“=”左边的变量。左边的变量。6第三章程序流程控制 赋值语句要求右端表达式的赋值语句要求右端表达式的类型与左端变量的类型类型与左端变量的类型相容相容。如。如果用果用字符串字符串的形式的形式表示数值表示数值,则,则可以可以将字符串赋给数值变量将字符串赋给数值变量,也,也可可将数值赋给字符串变量将数值赋给字符串变量。dim x as integer dim y as stringdim x as integer dim y as string x x=“123 =“123 y y=123=123 7第三章程序流程控制 但如果把非数值形式的字
4、但如果把非数值形式的字符串赋给数值变量,将会符串赋给数值变量,将会在编译时出现错误。只有在编译时出现错误。只有数据类型相容时可以赋值,数据类型相容时可以赋值,比如可以把单精度表达式比如可以把单精度表达式赋给整型变量。赋给整型变量。8第三章程序流程控制 例例3-1-1 3-1-1 赋值相容问题赋值相容问题:9第三章程序流程控制设设计计如如图图所所示示用用户户界界面面,在在窗窗体体 中中 增增 加加 一一 个个 命命 令令 按按 钮钮Command1,两两个个标标签签Label1、Label2,两两 个个 文文 本本 框框 Text1、Text2。输输 入入 命命 令令 按按 钮钮 Command
5、1的的Click事件过程:事件过程:10第三章程序流程控制Private Sub Command1_Click()Dim x As Integer (single)Dim y As String y=100.23 x=y y=y+20 Text1.Text=x Text2.Text=yEnd Sub 11第三章程序流程控制例例 3-1-2 交交换换两两个个变变量量中中的的数数据据(此此例例为为交交换换两两个个标标签签中的数据)。中的数据)。用语句实现如下:用语句实现如下:C=A:A=B:B=C12第三章程序流程控制编写代码:编写代码:Private Sub Command1_Click()Di
6、m C As String C=Label2.Caption Label2.Caption=Label4.Caption Label4.Caption=CEnd Sub13第三章程序流程控制程序代码可改为:程序代码可改为:Private Sub Command1_Click()Dim a,b,c As String a=Label2.Caption b=Label4.Caption c=a a=b b=c Label2.Caption=a Label4.Caption=bEnd Sub14第三章程序流程控制3.1.2 数据输出数据输出用用Print方法输出数据方法输出数据 用用MsgBox输出
7、数据输出数据 用标签控件输出数据用标签控件输出数据 15第三章程序流程控制1.1.用标签控件输出数据用标签控件输出数据 标标签签(Label)是是VB中中最最常常用用的的输输出出文本信息的工具。文本信息的工具。Label控控件件显显示示的的文文本本用用户户不不能能直直接接修改。修改。在在Label中中显显示示的的文文本本是是由由Caption属属性性控控制制的的,该该属属性性可可以以在在设设计计时时通通过过“属性属性”窗口设置或在运行时赋值。窗口设置或在运行时赋值。16第三章程序流程控制如:如:label1.caption=“计算机基础部计算机基础部”例例 3-1-3、例、例3-1-4 自己上
8、机调试自己上机调试 P60错误错误17第三章程序流程控制2.2.用用Print方法输出数据方法输出数据 PrintPrint方法方法:Print方方法法用用于于在在窗窗体体(Form)、立立即即窗窗口口(Debug)、图图片片框框(Picture)或或打打印印机机(Printer)等等对对象象中中显显示示文文字字字字符符串或表达式的值,其语法格式如下:串或表达式的值,其语法格式如下:.Print ,|;18第三章程序流程控制用用Print方法输出数据方法输出数据 说明:说明:对对象象名名称称可可以以是是窗窗体体、立立即即窗窗口口、图图片片框框或或打打印印机机。如如果果省省略略了了对对象象名名称
9、称,则在当前窗体上输出。例如:则在当前窗体上输出。例如:form2.Print“Visual Basic”Picture.Print“Visual Basic”Debug.Print“Visual Basic”Print“Visual Basic”19第三章程序流程控制用用Print方法输出数据方法输出数据 表表达达式式表表是是一一个个或或多多个个表表达达式式,它它们们可可以以是是数数值值表表达达式式、字字符符串串表表达达式式、关系表达式或布尔表达式。关系表达式或布尔表达式。对对于于数数值值表表达达式式,将将输输出出表表达达式式的的值值;对于字符串,则原样输出;对于字符串,则原样输出;对对于于
10、关关系系和和布布尔尔表表达达式式,则则输输出出逻逻辑辑值值True或或False。20第三章程序流程控制用用Print方法输出数据方法输出数据 当输出多个表达式时,各表达式之间用逗号当输出多个表达式时,各表达式之间用逗号“,”或分号或分号“;”隔开。隔开。当表达式用当表达式用逗号逗号分隔时,则各输出项按标准输分隔时,则各输出项按标准输出(分区输出)格式显示,即:出(分区输出)格式显示,即:每隔每隔14列为列为一个输出区,逗号后面的表达式的值将在下一个输出区,逗号后面的表达式的值将在下一个输出区显示。一个输出区显示。当使用当使用分号分号分隔,则按紧凑格式输出,即各输分隔,则按紧凑格式输出,即各输
11、出项之间无间隔地连续输出。出项之间无间隔地连续输出。在一个在一个Print语句中,可以将逗号和分号混合语句中,可以将逗号和分号混合使用。使用。21第三章程序流程控制用用Print方法输出数据方法输出数据v通通常常,每每执执行行一一个个Print方方法法后后将将自自动动换换行行,即即后后面面的的Print将将在在新新的的一一行行上上显示信息。显示信息。v为为了了使使上上下下两两个个Print语语句句输输出出内内容容显显示示在在同同一一行行上上,需需在在上上一一个个Print语语句句的最后加上逗号或分号。的最后加上逗号或分号。22第三章程序流程控制用用Print方法输出数据方法输出数据Print方
12、方法法具具有有计计算算和和输输出出的的双双重重功功能能,对对于于表表达达式式,总总是是先先计计算算后后输输出。出。Print 3*4=;3*4Print 3*4=,3*4Print 2 323第三章程序流程控制用用PrintPrint方法输出数据方法输出数据与与Print方法有关的函数方法有关的函数v Tab函数函数在在Print方方法法中中,可可以以使使用用Tab函数对输出结果进行定位。函数对输出结果进行定位。24第三章程序流程控制Tab函数的格式:函数的格式:Tab(n)Print Tab(5);”计计算算机机”;Tab(15);”世世界界”当在一个当在一个Print方法中有多个方法中有多
13、个Tab函数是,每个函数是,每个Tab函数对应函数对应一个输出项,各输出项之间用一个输出项,各输出项之间用分号隔开。分号隔开。25第三章程序流程控制Spc函数:函数:在在Print方方法法中中,用用Spc函函数数跳跳过过n列。其格式为列。其格式为:Spc(n)其其中中,n是是在在显显示示或或打打印印下下一一个个表表达达式式之之前前插插入入的的空空格格数数。Spc函函数数与与输输出出项项之之间间用用分分号号隔开。隔开。26第三章程序流程控制例如:例如:Print“计算机计算机”;Spc(5););“世界世界”Spc函函数数与与Tab函函数数的的作作用用类类似似,可可以以互互相相代代替替。但但需需
14、要要注注意意,Tab函函数数从从对对象象的的左左端端开开始始计计数数,而而Spc只只表表示示两两个个输输出出项项之之间间的的间隔。间隔。27第三章程序流程控制3.3.用信息对话框输出数据用信息对话框输出数据 在在VB中中,对对于于一一些些简简单单的的信信息息的的输输出出,可以使用信息框函数可以使用信息框函数MsgBox。该该函函数数在在信信息息对对话话框框中中显显示示信信息息,等等待待用用户户单单击击按按钮钮,并并返返回回一一个个整整数数值值,以表明用户单击了哪个按钮。以表明用户单击了哪个按钮。若若不不需需要要返返回回值值,则则可可以以使使用用MsgBox的命令形式。的命令形式。28第三章程序
15、流程控制用信息对话框输出数据用信息对话框输出数据MsgBox函数的语法格式:函数的语法格式:变变量量=MsgBox(,)MsgBox命令的语法格式:命令的语法格式:MsgBox ,29第三章程序流程控制用信息对话框输出数据用信息对话框输出数据说明:说明:为对话框中显示的为对话框中显示的提示文本,最大长度为提示文本,最大长度为1024个字个字符,对话框的高度和宽度随符,对话框的高度和宽度随的增加而增加。在的增加而增加。在 中可以使用硬回车符中可以使用硬回车符Chr(13)使文本换行。)使文本换行。30第三章程序流程控制 用用于于控控制制对对话话框框中中按按钮钮的的数数目目和和图图标标样样式式,一
16、般有一般有4个参数。个参数。可以省略,若可以省略,若省略时默认值为省略时默认值为0,即只显示一,即只显示一个个“确定确定”按钮,而且此按钮按钮,而且此按钮为默认按钮,此时逗号分割符为默认按钮,此时逗号分割符不能省略。不能省略。31第三章程序流程控制 表表示示对对话话框框的的标标题,该选项可以省略。题,该选项可以省略。Msgbox()的函数形式的返回()的函数形式的返回值指明了在对话框中可能出现的值指明了在对话框中可能出现的7种种按钮:按钮:确认、取消、终止、重试、确认、取消、终止、重试、忽略、是和否。忽略、是和否。例例3-1-6 3-1-6 自己上机调试自己上机调试 32第三章程序流程控制用信
17、息对话框输出数据用信息对话框输出数据33第三章程序流程控制用信息对话框输出数据用信息对话框输出数据34第三章程序流程控制用信息对话框输出数据用信息对话框输出数据35第三章程序流程控制用信息对话框输出数据用信息对话框输出数据36第三章程序流程控制3.1.3 3.1.3 数据输入数据输入 用用输入框输入框输入数据输入数据 焦点和焦点和TabTab间顺序间顺序 用文本框控件输入数据用文本框控件输入数据 37第三章程序流程控制1.1.用文本框控件输入数据用文本框控件输入数据 文本框文本框是最常用的数据输入是最常用的数据输入控件,它可以方便地在运行控件,它可以方便地在运行程序时让用户输入和编辑文程序时让
18、用户输入和编辑文本,文本框也可以显示文本。本,文本框也可以显示文本。38第三章程序流程控制文本框的文本框的 TextText属性属性Text1.TextText1.Text例例3-1-7 3-1-7 自己上机调试自己上机调试例例3-1-8 3-1-8 自己上机调试自己上机调试(Tag)Tag)属性属性39第三章程序流程控制2.2.用输入框输入数据用输入框输入数据InputBox函函数数用用于于将将用用户户从从键键盘盘输输入入的的数数据据作作为为函函数数的的返返回回值值返返回回到到当当前前程程序序中中,此此函函数数采采用用对对话话框框界界面面,可可以以提提供供一一个个良良好好的的交交互互环环境境
19、。其语法为:其语法为:变量名变量名=InputBox=InputBox(,)40第三章程序流程控制 指指定定在在对对话话框框中中出出现现的的文文本本。在在中中使使用用硬硬回回车车(CHR(13)可可以以使使文文本本换换行行。对对话话框框的的高高度度和和宽宽度度随随着着而而增增加加,最最多多可可有有1024个字符。个字符。指定对话框的标题。指定对话框的标题。41第三章程序流程控制 用于显示在输入区内用于显示在输入区内的初始文本。的初始文本。在输入框内输入信息后,若用在输入框内输入信息后,若用户单击户单击“确定确定”按钮,将把输入信按钮,将把输入信息返回到变量中;若单击息返回到变量中;若单击“取消
20、取消”按钮,返回的将是一个空字符串。按钮,返回的将是一个空字符串。42第三章程序流程控制a=InputBox(请请输输入入系系统统口口令:令:,口令输入口令输入,*)43第三章程序流程控制 焦点和焦点和TabTab键顺序键顺序 焦点(焦点(FocusFocus)焦点(焦点(Focus)就是光标,当)就是光标,当对象获得焦点时就可以接受用户的对象获得焦点时就可以接受用户的输入。输入。在在Windows环境中,可以同时环境中,可以同时运行多个程序,但只有具有焦点的运行多个程序,但只有具有焦点的应用程序才有活动标题栏,才可以应用程序才有活动标题栏,才可以接受用户的输入。接受用户的输入。44第三章程序
21、流程控制 一一个个窗窗体体上上如如果果有有多多个个文文本本框框,只只有有具具有有焦焦点点的的文文本本框框才才能能接接受受键键盘盘输输入入的文本内容。的文本内容。当对象获得焦点时发生当对象获得焦点时发生GetFocus事件事件当对象失去焦点时发生当对象失去焦点时发生LostFocus事件事件仅当控件的仅当控件的Visible和和Enabled属性被属性被设置为真(设置为真(True)时,控件才能接受时,控件才能接受焦点。焦点。45第三章程序流程控制 某某些些控控件件不不具具有有焦焦点点,如如标标签签、框框架架、计时器计时器等。等。可以用以下方法将焦点赋给对象:可以用以下方法将焦点赋给对象:在在程
22、程序序运运行行时时,用用鼠鼠标标选选择择对对象象、使用使用Tab键移动、或用快捷键键移动、或用快捷键在程序代码中用在程序代码中用SetFocus方法。方法。Text2.setfocus 46第三章程序流程控制TabTab键顺序键顺序Tab键顺序就是用户按键顺序就是用户按Tab键时,键时,焦点在窗体上的控件之间移动的焦点在窗体上的控件之间移动的顺序。顺序。一般情况下,一般情况下,Tab顺序由控件建立顺序由控件建立的先后顺序确定。的先后顺序确定。47第三章程序流程控制不不能能获获得得焦焦点点的的控控件件,以以及及无无效效的的和和不不可可见见的的控控件件,不不具具有有TabIndex属属性性,因因而
23、而不不包包含含在在Tab键键顺顺序序中中。按按Tab键键时时,这这些些控控件件将将被跳过。被跳过。48第三章程序流程控制通常,运行时按通常,运行时按Tab键可以选键可以选择择Tab顺序中的每一个控件。顺序中的每一个控件。若将控件的若将控件的TabStop属性设置属性设置为为False,按按Tab键时就会跳过键时就会跳过该控件,但该控件的该控件,但该控件的TabIndex顺序值仍然保留。顺序值仍然保留。49第三章程序流程控制3.1.4 3.1.4 卸载对象(卸载对象(UnloadUnload语句)语句)当当程程序序结结束束而而从从内内存存中中卸卸载载窗窗体体或或要要从从内内存存中中卸卸载载某某些
24、些控控件件时时,可以使用可以使用Unload语句。语句。Unload语句的语法格式为:语句的语法格式为:Unload 对象名对象名 如:如:Unload me(form1)50第三章程序流程控制说明:说明:对对象象名名是是要要卸卸载载的的窗窗体体对对象象或或控控件的名称。件的名称。在卸载窗体前,会发生在卸载窗体前,会发生QueryUnload事件,然后是事件,然后是Unload事件。在其中任一事件过程代码中事件。在其中任一事件过程代码中设置设置Cancel参数的参数的True可以防止窗可以防止窗体被卸载。体被卸载。例例 3-1-6 3-1-6 自己调试自己调试 51第三章程序流程控制3.2 选
25、择结构选择结构选选择择结结构构就就是是根根据据不不同同的的情情况况做做出出不不同同的的选选择择,执执行行不不同同的的操操作作,它它是是程程序序设设计计中中基基本本结结构之一。构之一。选选择择结结构构语语句句需需要要对对某某个个条条件件做做出出判判断断,根根据据这这个个条条件件的的取取值情况,决定执行何种操作。值情况,决定执行何种操作。52第三章程序流程控制VB种的选择结构语句分为种的选择结构语句分为:单条件选择语句单条件选择语句 (If 语句语句)多条件选择语句多条件选择语句 (Select Case 语句语句)53第三章程序流程控制3.2 选择结构选择结构3.2.2 Select Case
26、语句语句3.2.1 If 语句语句54第三章程序流程控制单行格式单行格式 IfThenElse IfThenElse 单行条件语句比较简单,其语法格式单行条件语句比较简单,其语法格式:If If Then Then Else Else 2 通通常常是是关关系系表表达达式式或或逻逻辑辑表表达达式式。该该语语句句的的功功能能是是:如如果果“条条件件”的的值值为为True,则则执执行行,否否则执行则执行。55第三章程序流程控制说明:说明:单单行行结结构构条条件件语语句句要要求求在在一一行行内内书书写写完完毕毕,即即不不能能超超过一行过一行255个字符的限度。个字符的限度。If ab Then c=a
27、 Else c=b56第三章程序流程控制 语语句句组组1 和和 语语句句组组2 可可以以是是简简单单语语句句,也也可可以以是是用用冒号冒号分隔的多个语句。分隔的多个语句。57第三章程序流程控制 Else 是是可可选选项项,当当该项省略时,该项省略时,IF语句简化为:语句简化为:If Then 它的功能为:如果条件为它的功能为:如果条件为True,则执行则执行语句组语句组1,否则执行,否则执行IF语句语句的的下一个语句下一个语句。例例3-2-1 P7158第三章程序流程控制 多行格式多行格式IfIf语句语句 在在单单行行结结构构条条件件语语句句中中,如如果果条条件件分分支支执执行行的的操操作作比
28、比较较复复杂杂,不不能能在在一一个个逻逻辑辑行行内内书书写写完完毕毕,可可以以使使用用多多行行结结构构条条件语句。件语句。59第三章程序流程控制多行多行If语句又称为块语句又称为块If语句。语句。语法格式:语法格式:If Then Else End If60第三章程序流程控制说明说明:在在块块If语语句句中中,If语语句句必必须须是是第第1行行语语句句,End If语语句句是是If块块的的最最后后一一个个语语句。句。61第三章程序流程控制 在程序运行到在程序运行到If块时,首先块时,首先判断判断。如果条件为。如果条件为True,则执行,则执行Then后的后的语句组语句组1,否则执行否则执行El
29、se后的后的语句组语句组2。当执行完当执行完Then或或Else之后的语之后的语句组后,则继续执行句组后,则继续执行End If后后的语句。的语句。62第三章程序流程控制 语语句句组组可可以以是是单单个个语语句句,也也可可以以是是多多个个语语句句。当当有有多多个个语语句句时时,可可以以分分别别写写在在多多行行里里;如如果果写写在在一一行行中中,则则各各语语句句之之间用冒号隔开。间用冒号隔开。Else子句是可选项。若有该子句是可选项。若有该项,项,Else必须单独占一行。必须单独占一行。63第三章程序流程控制例例3-2-2:托托运运行行李李,当当行行李李重重量量不不超超过过50公公斤斤时时,每每
30、公公斤斤运运费费0.25元元,超超过过50公公斤斤后后,超超过过部部分分按按每每公公斤斤0.40元元收收费费。输输入入行行李李重重量量,计计算算出应付运费。出应付运费。64第三章程序流程控制例例3-2-3 设计一个接受口令的窗体,设计一个接受口令的窗体,单击确定按钮后,当口令输入单击确定按钮后,当口令输入正确则进入一个新窗口,若口正确则进入一个新窗口,若口令输入错误,则给出错误提示。令输入错误,则给出错误提示。无论用户输入什么字符,文本无论用户输入什么字符,文本框中只显示相同数量的框中只显示相同数量的“*”65第三章程序流程控制3.2.1 If 语句语句 If语句的嵌套 如果在如果在If语句中
31、,语句语句中,语句组组1或语句组或语句组2本身又是一本身又是一个个If语句,则称为语句,则称为If语句的语句的嵌套。嵌套。66第三章程序流程控制If语句的嵌套格式:If Then ElseIf Then ElseIf Then Else End if67第三章程序流程控制此语句的功能是:此语句的功能是:如果如果为为True,执行,执行,否则,否则,如果如果为为True,执,执行行,否则,否则执行语句组执行语句组n。例例3-2-43-2-4、3-2-53-2-5 68第三章程序流程控制使用使用IIF函数函数 在在程程序序设设计计中中可可以以使使用用IIf函函数数来来实实现现一一些些比比较较简简单
32、单的的选选择择结结构构。IIf函数的语法结构为:函数的语法结构为:IIf(,)69第三章程序流程控制说明:说明:“条件表达式条件表达式”可以是关系表达式、可以是关系表达式、布尔表达式或数值表达式。如果用布尔表达式或数值表达式。如果用数值表达式作条件,则非数值表达式作条件,则非0为真,为真,0为假。为假。“真部分真部分”是当条件表达式为真时是当条件表达式为真时函数返回的值,函数返回的值,“假部分假部分”是当条是当条件表达式为假时函数返回的值,它件表达式为假时函数返回的值,它们可以是任何表达式。们可以是任何表达式。70第三章程序流程控制 语语句句 y=IIf(,)相当于:相当于:If then y
33、=Else y=P78 71第三章程序流程控制3.2.2 Select Case语句语句 在程序设计中,经常会有多种在程序设计中,经常会有多种情况的选择。虽然可以使用情况的选择。虽然可以使用If语句语句的嵌套形式实现多分支选择,但使的嵌套形式实现多分支选择,但使用多分支选择用多分支选择Select Case语句,更语句,更为简单,它根据表达式的值,来决为简单,它根据表达式的值,来决定执行几组语句中的哪一组。定执行几组语句中的哪一组。72第三章程序流程控制Select Case语句的语法格式为:语句的语法格式为:Select Case Select Case Case Case 1 1 Case
34、 Case n n Case Else Case Else n+1 End Select End Select73第三章程序流程控制Select Case选择结选择结构构执执行的行的过过程程为为:(1)计计算算的的值值(2)将)将的的值值与与Case语语句中的句中的中的每一个中的每一个值值逐一逐一进进行比行比较较。如果与其中的一个如果与其中的一个值值相匹配,相匹配,则执则执行行该语该语句中句中的的。如果不止一个如果不止一个 Case与与相匹相匹配,配,则则只只对对第一个匹配的第一个匹配的 Case 执执行与之相关行与之相关联联的的。如如果果在在表表达达式式列列表表中中没没有有一一个个值值与与测
35、测试试表表达达式式相相匹匹配配,则则 执执行行 Case Else 子子句句最最后后执执行行 End Select语语句。句。74第三章程序流程控制说明:说明:可以是数值表达可以是数值表达式或字符表达式,通常是一个式或字符表达式,通常是一个变量。变量。Case子句中的子句中的的值必须与的值必须与的的类型类型相同。相同。75第三章程序流程控制 的表达形式由以下三种:的表达形式由以下三种:表达式表达式:该种表达方式通常表达一些具体:该种表达方式通常表达一些具体的取值,例如的取值,例如 Case 1,3,5,7表达式表达式 To 表达式表达式:该种表达方式常用来:该种表达方式常用来表示一个数值范围,
36、较小的数应该放在关表示一个数值范围,较小的数应该放在关键字键字To的前面,例如的前面,例如 Case 3 To 9Is 比较运算表达式:比较运算表达式:Is关键字与比较运算关键字与比较运算符结合,也常用来表达一个数值范围,例符结合,也常用来表达一个数值范围,例如:如:Case Is,=,=,=,。76第三章程序流程控制 在每个在每个Case子句中还允许使子句中还允许使用表达式的混合形式。例如:用表达式的混合形式。例如:Case 2,4,6,8 to 10,Is15 若在多个若在多个Case子句有同一种子句有同一种取值重复出现,则只执行第一个取值重复出现,则只执行第一个出现此取值的出现此取值的C
37、ase语句后的相语句后的相应语句组。应语句组。77第三章程序流程控制例例 3-2-6 3-2-6编编写写程程序序计计算算货货物物运运费费。设设货货物物运运费费单单价价Y元元/每每吨吨/每每公公里里,运运输输距距离离为为S公公里里。单单价价Y与距离与距离S的关系为:的关系为:输入要托运的货物重量输入要托运的货物重量W吨、托运的距离吨、托运的距离为为S公里,计算总运费公里,计算总运费F:F=Y*W*S F=Y*W*S 78第三章程序流程控制例例3-2-7给给定定年年份份和和月月份份,判判断断该该年年是是否否为为闰闰年年,并并根根据据给给定定的的月月份份判判断断该该月月有有多多少少天天?(闰闰年年的
38、的条条件件是是年年份份能能被被4整整除除但但不不能能被被100整除,或者能被整除,或者能被400整除。)整除。)79第三章程序流程控制3.3 循环结构循环结构 循循环环结结构构是是指指在在执执行行程程序序语语句句时时,需需要要对对其其中中的的某某些些语语句句重重复复执执行行多多次次。需需重重复复执执行行的的程程序序段称为段称为“循环体循环体”。使使用用循循环环结结构构可可以以简简化化程程序序,节约内存,提高程序执行效率。节约内存,提高程序执行效率。80第三章程序流程控制3.3 循环结构循环结构VB提供的循环结构语句有:提供的循环结构语句有:ForNext、DoLoop、For Each Nex
39、t、WhileWend 等。等。其其中中最最常常用用的的是是ForNext和和DoLoop语语句句,本本节节主主要要讲讲解解这这两两个循环语句的用法。个循环语句的用法。81第三章程序流程控制3.3.1 For.Next语句语句3.3.2 Do.Loop语句语句3.3.3 循环嵌套循环嵌套3.3.4 退出控制结构退出控制结构3.3 循环结构循环结构82第三章程序流程控制 ForNext循循环环结结构构是是一一种种最最简简单单的的循循环环结结构构,它它属属于于计计数数型型循循环环,通通常常用用于于循循环环次次数数已已知知的的程程序序结结构构中中。其其一一般般格格式式如下:如下:3.3.1 ForN
40、ext 语句语句For =TO Step Next 83第三章程序流程控制3.3.1 For.Next语句语句是是一一个个数数值值变变量量,用用作作循环计数器,不能是数组或记录元素。循环计数器,不能是数组或记录元素。为为循循环环变变量量的的初初始始取取值值,为为循循环环变变量量的的最最后后取取值值,它们均可以是数值型的常量、变量或它们均可以是数值型的常量、变量或表达式,它们的值可以是整数和实数。表达式,它们的值可以是整数和实数。84第三章程序流程控制3.3.1 For.Next语句语句 用于决定循环变量每次增加的数用于决定循环变量每次增加的数值,即变量在变化时的增值,也为数值值,即变量在变化时
41、的增值,也为数值型常量、变量或表达式。步长的取值可型常量、变量或表达式。步长的取值可以根据初值和终值的关系分为以根据初值和终值的关系分为正数正数或或负负数数两种,若初值大于终值,则必须将步两种,若初值大于终值,则必须将步长设为负数;若初值小于终值,则必须长设为负数;若初值小于终值,则必须将步长设为正数,才有可能执行内部循将步长设为正数,才有可能执行内部循环体。当步长为环体。当步长为1时,可以省略时,可以省略Step 1。85第三章程序流程控制3.3.1 For.Next语句语句 可以在循环体中的任何位置放置可以在循环体中的任何位置放置Exit For语句,以便随时退出循环。语句,以便随时退出循
42、环。(5)(5)循环的次数有初值、终值和步长循环的次数有初值、终值和步长三个因素决定,计算公式为:三个因素决定,计算公式为:循环次数循环次数=Int=Int(终值(终值-初值)初值)/步长步长+1 +1)如:如:For I=1 To 10 Step 2For I=1 To 10 Step 2 86第三章程序流程控制3.3.1 For.Next语句语句For语句的执行过程是:语句的执行过程是:首先把首先把“初值初值”赋给循环变量,赋给循环变量,接着检查循环变量是否超过终值,如果接着检查循环变量是否超过终值,如果超过就停止执行循环体,跳出循环,执超过就停止执行循环体,跳出循环,执行行Next后面的
43、语句;后面的语句;否则执行一次循环体,然后把否则执行一次循环体,然后把“循环变循环变量量+步长步长”的值再赋给循环变量;的值再赋给循环变量;重复上述过程。重复上述过程。87第三章程序流程控制循环变量赋初值循环变量赋初值循环变量循环变量终值终值循环体循环体循环变量循环变量循环变量循环变量+步长步长Next的下一个语句的下一个语句NOyes例题例题88第三章程序流程控制例例 3-3-6:求求自自然然数数1100之之间奇数之和。间奇数之和。(自自己己上上机机调调试试1100自自然数及偶数的和)然数及偶数的和)89第三章程序流程控制例例3-3-5 3-3-5 求求n!(!(n为自然数)为自然数)n!=
44、123(n-2)(n-1)n =(n-1)!n一个自然数的阶乘,等于该自然数与一个自然数的阶乘,等于该自然数与前一个数的阶乘的乘积前一个数的阶乘的乘积,即从,即从1开始连开始连续地乘下一个自然数,直到续地乘下一个自然数,直到n为止。为止。90第三章程序流程控制例例3-3-7求求:直到第直到第50项项91第三章程序流程控制例例3-3-8 用随机函数产生用随机函数产生10个个在指定范围内的随机在指定范围内的随机数,随机数的范围在数,随机数的范围在文本框内输入。文本框内输入。92第三章程序流程控制3.3.1 DoLoop语句语句 DoLoop 语句是根据条件决定循环。语句是根据条件决定循环。DoLo
45、op 语句具有很强的灵活性:语句具有很强的灵活性:既能够指定循环条件,也能指定循环结既能够指定循环条件,也能指定循环结束条件;束条件;既可以构成先判断条件形式,也可以构既可以构成先判断条件形式,也可以构成后判断条件形式。成后判断条件形式。93第三章程序流程控制 1.1.先判断条件形式的先判断条件形式的DoLoopDoLoop语句语句 语句格式为:语句格式为:Do While|Until 循环体循环体Loop94第三章程序流程控制先判断条件形式的先判断条件形式的DoLoopDoLoop语句语句格式一:格式一:当型循环当型循环 Do While Loop 格式二:格式二:直到型循环直到型循环 Do
46、 Until Loop 95第三章程序流程控制先判断条件形式的先判断条件形式的DoLoopDoLoop语句语句 Do While Loop 是是当型循环当型循环语句,即如果语句,即如果为真(为真(True)时执)时执行循环体,条件为假行循环体,条件为假(False)时,终止循环。)时,终止循环。96第三章程序流程控制Do Until Loop 是是直直到到型型循循环环语语句句,为为假假时时执执行行循循环环,直直到到条条件件为为真真时时,终终止止循循环。环。97第三章程序流程控制是是条条件件表表达达式式,为为循循环环条件,其值为条件,其值为True 或或 False。在在DoLoop中中可可以以
47、在在任任何何位位置置放放置置Exit Do语语句句,以以便便随随时时退退出出循循环环。Exit Do 通通常常放放在在条条件件语语句句中中,当当满满足足一一定定条条件件时时,退出循环。退出循环。98第三章程序流程控制例例 3-3-1 1+2+3 100 累加和累加和例例3-3-2 不做不做 P84 99第三章程序流程控制1.1.用当型循环:用当型循环:Private Sub Form_Load()Dim s As Integer,n As IntegerShows=0:n=1Do While n 100 s=s+n n=n+1 LoopPrint 1+2+3+100=;s End Sub101
48、第三章程序流程控制 DoLoop循循 环环 语语 句句 也也 可可 以以 省省 略略While/Until,将将循循环环结结束束条条件件写写在在循循环环体体内,用内,用Exit Do语句退出循环。语句退出循环。Do s=s+n n=n+1 If n 100 Then Exit DoLoop102第三章程序流程控制2.2.后判断条件形式的后判断条件形式的DoLoopDoLoop语句语句语句格式为:语句格式为:Do 循环体循环体 Loop While|Until 103第三章程序流程控制后判断条件形式的后判断条件形式的DoLoop语句语句后判断条件形式的后判断条件形式的DoLoop语句与先语句与先
49、判断条件形式的区别:判断条件形式的区别:首先执行循环体,首先执行循环体,然后测试循环执行条件或循环终止条件,然后测试循环执行条件或循环终止条件,决定是否继续循环。决定是否继续循环。这种结构的语句至少执行一次循环体。这种结构的语句至少执行一次循环体。104第三章程序流程控制 例例3-3-4 3-3-4 输入两个正整数,求它输入两个正整数,求它们的最大公约数们的最大公约数 105第三章程序流程控制求求两两个个数数的的最最大大公公约约数数,可可以以用用“辗辗转相除法转相除法”:以以大大数数x作作被被除除数数,小小数数y作作除除数数,相除后取余数为相除后取余数为r。若若r0,则则将将xy,yr,继继续
50、续x与与y相相除除得得到到新新的的r。若若仍仍有有r0,则则重重复复此过程,直到此过程,直到r=0为止。为止。最后的除数最后的除数y就是最大公约数。就是最大公约数。106第三章程序流程控制3.3.3 多重循环多重循环 在循环体内可以包含在循环体内可以包含VB的的任何语句,当在循环体内任何语句,当在循环体内包含另一个循环语句时,包含另一个循环语句时,就形成了循环嵌套,又叫就形成了循环嵌套,又叫多重循环。多重循环。例例3-3-9 107第三章程序流程控制 例例3-3-10 3-3-10 打印乘法九九表打印乘法九九表 108第三章程序流程控制例例3-3-11109第三章程序流程控制作作 业业P955