第4章程序控制结构_第1页
第4章程序控制结构_第2页
第4章程序控制结构_第3页
第4章程序控制结构_第4页
第4章程序控制结构_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序控制结构程序控制结构计算机系信息教研室计算机系信息教研室n面向对象的程序设计思想,事件驱动的面向对象的程序设计思想,事件驱动的编程机制编程机制 一个一个VB应用程序由若干个对象构成应用程序由若干个对象构成 各个对象的功能主要通过其事件过程完成各个对象的功能主要通过其事件过程完成 系统根据当前发生的事件,驱动执行与该事系统根据当前发生的事件,驱动执行与该事件相对应的事件过程代码。件相对应的事件过程代码。n事件过程代码采用结构化程序设计事件过程代码采用结构化程序设计VB程序设计特点程序设计特点n任何算法功能都可以通过由程序模块组任何算法功能都可以通过由程序模块组成的三种基本程序结构的组合成的三

2、种基本程序结构的组合: 顺序结构顺序结构、选择结构选择结构和和循环结构循环结构来实现。来实现。 4.1.1 算法概述算法概述n算法是解决问题的方法步骤。算法是解决问题的方法步骤。n编制程序的过程首先要设计算法编制程序的过程首先要设计算法 方法方法 步骤步骤 n例:例:将两个变量将两个变量x和和y的值进行交换,设的值进行交换,设x = 10,y = 20 分析:分析: 不能直接进行交换不能直接进行交换 必须借助一个中间变量暂存必须借助一个中间变量暂存x的值。的值。 算法算法:(1) 将将x的值暂存在的值暂存在t中;中;(2) 将将y的值存入的值存入x中;中;(3) 将将t的值存入的值存入y中。中

3、。n比较三个变量比较三个变量A、B、C中的值,然后输中的值,然后输出其中最大的数。出其中最大的数。算法为:算法为:(1)设置一个变量)设置一个变量Max。(2)若)若AB,则,则MaxA;否则;否则MaxB。(3)若)若CMax,则,则MaxC。(4)输出)输出Max。 用计算机编程解决问题的算法应具有的特点用计算机编程解决问题的算法应具有的特点n有穷性(操作步骤是有限的)有穷性(操作步骤是有限的)n确定性(每一步具有确定的操作内容)确定性(每一步具有确定的操作内容)n有效性(每一步都有确定的结果)有效性(每一步都有确定的结果)n有数据输入和结果输出有数据输入和结果输出算法的表示方法算法的表示

4、方法n语言描述法语言描述法 用计算机编程就是用计算机语言来表示算法用计算机编程就是用计算机语言来表示算法n图形法图形法 对于较复杂的问题还要借助流程图或对于较复杂的问题还要借助流程图或N-S图图来表示算法来表示算法n流程图流程图也称为框图,它是用一些几何图也称为框图,它是用一些几何图形、流向线和文字说明来表示各种类型形、流向线和文字说明来表示各种类型的操作。在流程图中所用的基本图形及的操作。在流程图中所用的基本图形及其意义都是由国家颁布的标准(其意义都是由国家颁布的标准(GB ISO5807-85)规定的。)规定的。图形法图形法例例1 将两个变量将两个变量x和和y的值的值进行交换,设进行交换,

5、设x = 10,y = 20n例例2开开始始 AB Max=A Max=B CMax Max=C 打打印印 Max 结结束束 YYNN4.1.3 三种基本结构表示三种基本结构表示 n顺序结构顺序结构 程序的流程是按照一个方向进行的,一个入口,一程序的流程是按照一个方向进行的,一个入口,一个出口,中间有若干条依次执行的语句。个出口,中间有若干条依次执行的语句。n选择结构选择结构 程序的流程出现一个或多个分支,按一定的程序的流程出现一个或多个分支,按一定的条件选择其中之一执行,即选择结构也叫分条件选择其中之一执行,即选择结构也叫分支结构。它有一个入口,一个出口。中间可支结构。它有一个入口,一个出口

6、。中间可以有两条或多条分支。以有两条或多条分支。n循环结构循环结构 程序流程是按一定的条件重复多次执行一程序流程是按一定的条件重复多次执行一段程序,被重复执行的程序段叫循环体。段程序,被重复执行的程序段叫循环体。n循环结构的种类循环结构的种类 按退出循环的条件按退出循环的条件 当型(当型(While)循环结构)循环结构 直到型(直到型(Until)循环结构)循环结构 按循环体至少执行的次数按循环体至少执行的次数 0次循环次循环 1次循环次循环n循环结构也只有一个入口和一个出口。循环结构也只有一个入口和一个出口。且只允许且只允许有限次的重复有限次的重复,不能无限循环。,不能无限循环。当型当型0次

7、循环次循环直到型直到型1次循环次循环4.2数据的输入与输出操作数据的输入与输出操作4.2.1 数据输出数据输出1Print方法object.Print Spc(n) | Tab(n) expression charposobject:窗体:窗体(form)、立即窗口、立即窗口(Debug)、图片框、图片框(PictureBox)、打印机、打印机(Printer)等对象。等对象。如果省略如果省略“对象对象名名”,则在当前窗体上输出。,则在当前窗体上输出。 Expression:要打印的数值表达式或字符串表达式。:要打印的数值表达式或字符串表达式。 Charpos:逗号或分号,指定下个字符的插入点

8、。:逗号或分号,指定下个字符的插入点。 逗号分隔,则按标准格式显示数据项,以逗号分隔,则按标准格式显示数据项,以14个字符位个字符位置为单位把输出行分成若干个区段,每区段输出一个置为单位把输出行分成若干个区段,每区段输出一个表达式的值。表达式的值。1. 分号或空格作分隔符,则按紧凑格式输出。分号或空格作分隔符,则按紧凑格式输出。 注意注意:每执行一次:每执行一次print方法自动换行。如果要在同一行继续显示,方法自动换行。如果要在同一行继续显示,需在末尾加上逗号或分号需在末尾加上逗号或分号2. 与与Print方法有关的函数方法有关的函数(1)Tab函数函数与与 Print # 语句或语句或 P

9、rint 方法一起使用,对输出进行定方法一起使用,对输出进行定位。位。格式:格式: Tab(n)n参数参数n可选。可选。n如果当前行上允许的输出宽度如果当前行上允许的输出宽度(格数格数)大于大于n,则,则Tab将将输出位置移动到第输出位置移动到第n列上列上;如果如果n小于小于1,则,则Tab将输出位置移动到第将输出位置移动到第1列。列。如果如果n大于输出行的宽度大于输出行的宽度width,则,则Tab函数使用以下函数使用以下公式计算下一个输出位置:公式计算下一个输出位置: NextPosition=n Mod width n每个每个Tab函数对应一个输出项,各输出项之间用分号函数对应一个输出项

10、,各输出项之间用分号分隔。分隔。 Tab使用举例使用举例Print Hello;Tab(10);Visual Basic第二个字从第第二个字从第10列开始输出列开始输出Print Hello;Tab; Visual Basic 如果省略参数,光标移至下一个输出区如果省略参数,光标移至下一个输出区n输出结果为:输出结果为: Hello Visual Basic Hello Visual Basic(2)Spc函数函数格式:格式: Spc(n)在显示或打印列表中的下一个表达式之前插入在显示或打印列表中的下一个表达式之前插入n个空白数,个空白数,n为为032767之间的整数。之间的整数。Spc函数与

11、输出项之间用分号隔函数与输出项之间用分号隔开。开。 n如果如果 n 小于输出行的宽度,则下一个打印位置将紧接小于输出行的宽度,则下一个打印位置将紧接在数个已打印的空白之后。在数个已打印的空白之后。如果如果 n 大于输出行的宽度,则大于输出行的宽度,则 Spc 利用下列公式计算利用下列公式计算下一个打印位置:下一个打印位置: 当前位置当前位置+ (n Mod 行宽行宽)nSpc函数函数只表示两个输出项之间的间隔只表示两个输出项之间的间隔。n各输出项之间用分号分隔。各输出项之间用分号分隔。Format函数函数n格式:格式: Format() 用用Format函数可以使数值按函数可以使数值按“格式字

12、格式字符串符串”指定的格式输出。指定的格式输出。 n说明:说明:“#”“#”表示一个数字占位符。表示一个数字占位符。# #的个数决定了显的个数决定了显示串的长度。在格式字符串中示串的长度。在格式字符串中“#”#”的位置上的位置上有数字存在,就显示出来;否则,该位置就什有数字存在,就显示出来;否则,该位置就什么都不显示。么都不显示。“0”“0”表示一个数字占位符,与表示一个数字占位符,与# #的功能相同,的功能相同,只是多余位以只是多余位以0 0补齐。补齐。“.”“.”表示小数点占位符。小数点与表示小数点占位符。小数点与# #或或0 0结合结合使用,根据格式字符串的位置。根据格式串,使用,根据格

13、式字符串的位置。根据格式串,小数部分多余的数字按四舍五入显示,但不会小数部分多余的数字按四舍五入显示,但不会改变变量的实际数值。改变变量的实际数值。“,”“,”表示千分位符号占位符。在格式字符串表示千分位符号占位符。在格式字符串中插入逗号,起到中插入逗号,起到“分位分位”作用。逗号可以放作用。逗号可以放在小数点前的任何位置,但不能放在串首部。在小数点前的任何位置,但不能放在串首部。百分号。通常放在格式字符串的尾部,百分号。通常放在格式字符串的尾部,用来输出百分数。用来输出百分数。$ $美元符号。通常作为格式字符串的起美元符号。通常作为格式字符串的起始字符。始字符。+ +正号、正号、- -负号。

14、放在格式字符串的首部,负号。放在格式字符串的首部,为输出数据添加正负号。为输出数据添加正负号。 E+ E-E+ E-表示用指数形式显示数值。表示用指数形式显示数值。 n【例【例4-3】 用窗体事件过程试验数值的格式化用窗体事件过程试验数值的格式化输出。输出。Private Sub Form_Click() Print Format(12345.6, 000,000.00) Print Format(12345.678, #,#.#) Print Format(12345.6, #) Print Format(12345.6, #,#0.00) Print Format(12345.6, $#,

15、#0.00) Print Format(12345.6, -#,#0.00) Print Format(0.123, 0.00%) Print Format(12345.6, 0.00E+00)End Sub4.2.2输入框函数输入框函数InputBox()() 变量名变量名=InputBox(=InputBox(, ,,x,y) 作用:在一对话框中显示提示,等待用户输作用:在一对话框中显示提示,等待用户输入正文或按下按钮,并返回包含文本框中内容,入正文或按下按钮,并返回包含文本框中内容,函数值的类型为函数值的类型为 String类型。类型。 例如,要用例如,要用InputBoxInputBo

16、x函数给变量函数给变量x x赋值,可以用下面的赋赋值,可以用下面的赋值语句:值语句:X=Val(InputBox(请输入(请输入xxx的成绩,数据输的成绩,数据输入,入,80) n1:该项是必须有的。它是:该项是必须有的。它是在在InputBox对话框中作为提示用户操作对话框中作为提示用户操作的信息,如上例中的的信息,如上例中的“请输入请输入xxx的成的成绩绩”。该项可以是字符常量、变量和字。该项可以是字符常量、变量和字符串表达式。它的最大长度为符串表达式。它的最大长度为1024个字个字符,若要显示多行,必须将要显示的信符,若要显示多行,必须将要显示的信息通过字符连接符息通过字符连接符“+”或

17、或“&”组成字符组成字符串表达式,在要换行处加回车串表达式,在要换行处加回车Chr(13)、)、换行换行Chr(10)控制符或使用系统常量)控制符或使用系统常量vbCrLf。 n2 2 :用于对话框标题区显示的:用于对话框标题区显示的信息,如上例中的信息,如上例中的“数据输入框数据输入框”。该。该项是字符串表达式,若省略,则将应用项是字符串表达式,若省略,则将应用程序名,即工程名作为对话框的标题。程序名,即工程名作为对话框的标题。n3 3 :输入文本编辑区默认值,:输入文本编辑区默认值,如上例中的如上例中的8080,如果用户不输入值而直,如果用户不输入值而直接按回车键或单击接按回车键或单击“确

18、定确定”按钮,则该按钮,则该值便作为函数的输入值。该项为数值常值便作为函数的输入值。该项为数值常量、字符串常数量或常量表达式。若省量、字符串常数量或常量表达式。若省略,则相当于空字符串。略,则相当于空字符串。n4、:确定对话框在:确定对话框在屏幕上显示的位置,为整型表达式,用屏幕上显示的位置,为整型表达式,用来确定对话框左上角在屏幕上的位置,来确定对话框左上角在屏幕上的位置,屏幕左上角的坐标为(屏幕左上角的坐标为(0,0),向下为),向下为Y的正方向,向右为的正方向,向右为X的正方向。的正方向。 n注意:注意:(1 1)各项参数次序必须一一对应,除第一)各项参数次序必须一一对应,除第一项参数项

19、参数“提示信息提示信息”不能省略外,其余参不能省略外,其余参数均可忽略,如果处于中间位置的参数省数均可忽略,如果处于中间位置的参数省略,则其对应的符号不能省略。略,则其对应的符号不能省略。例如:省略除提示信息的参数,则上例应例如:省略除提示信息的参数,则上例应改为:改为:X=InputBox(X=InputBox(请输入请输入xxxxxx的成绩,的成绩,80)80)(2 2)由)由InputBoxInputBox函数返回的数据类型是字函数返回的数据类型是字符类型数据,如果要得到数值类型数据,符类型数据,如果要得到数值类型数据,则必须用则必须用Val()Val()函数进行类型转换。函数进行类型转

20、换。4.2.3 消息框消息框MsgBoxMsgBox函数在对话框中显示信息,等待用户单函数在对话框中显示信息,等待用户单击按钮,并返回一个整数以标明用户单击了哪个击按钮,并返回一个整数以标明用户单击了哪个按钮。其语法格式为:按钮。其语法格式为:变量变量=MsgBox(, , ) 设置值及其意义设置值及其意义分组分组系统常数系统常数值值描述描述按钮数目按钮数目vbOKOnly0只显示只显示 OK 按钮。按钮。VbOKCancel1显示显示 OK 及及 Cancel 按钮。按钮。VbAbortRetryIgnore2显示显示 Abort、Retry 及及 Ignore 按钮。按钮。VbYesNoC

21、ancel3显示显示 Yes、No 及及 Cancel 按钮。按钮。VbYesNo4显示显示 Yes 及及 No 按钮。按钮。VbRetryCancel5显示显示 Retry 及及 Cancel 按钮。按钮。图标类型图标类型VbCritical16显示显示 Critical Message 图标。图标。VbQuestion32显示显示 Warning Query 图标。图标。VbExclamation48显示显示 Warning Message 图标。图标。VbInformation64显示显示 Information Message 图标。图标。默认按钮默认按钮vbDefaultButton

22、10第一个按钮是缺省值。第一个按钮是缺省值。vbDefaultButton2256第二个按钮是缺省值。第二个按钮是缺省值。vbDefaultButton3512第三个按钮是缺省值。第三个按钮是缺省值。模式模式vbApplicationModal0应用程序强制返回;应用程序一直被挂起,应用程序强制返回;应用程序一直被挂起,直到用户对消息框作出响应才继续工作。直到用户对消息框作出响应才继续工作。vbSystemModal4096系统强制返回;全部应用程序都被挂起,直系统强制返回;全部应用程序都被挂起,直到用户对消息框作出响应才继续工作。到用户对消息框作出响应才继续工作。n【例【例4 -4】 Msg

23、=Hope Wang。 & vbCrLf & is a good teacher。Style= VbYesNo + VbQuestion + VbDefaultButton2a = MsgBox(Msg, Style, 询问询问)MsgBox函数的返回值函数的返回值系统常数系统常数返回值返回值描述描述VbOK1确定确定vbCancel2取消取消vbAbort3终止终止vbRetry4重试重试vbIgnore5忽略忽略VbYes6是是VbNo7否否n【例【例4-5】使用条件】使用条件(If)语句,利用语句,利用MsgBox函数的返回值作为不同操作的函数的返回值作为不同操作的选择选择:If a=v

24、bYes Then 用户按下用户按下”是是” MyString=你选择的是你选择的是“是是”按钮按钮 Else 用户按下用户按下”否否” MyString=你选择的是你选择的是“否否”按钮按钮 Print mystringEnd if4.3 选择结构选择结构4.3.1 If语句语句单行条件语句格式如下单行条件语句格式如下: If Then Else 代码举例:代码举例:a = inputbox(“请输入字符:请输入字符:”)If a=“0” and a=“9” Then print a;”为数字为数字!”If语句的语句的Else部分是可选的,当该项省略时,简化为:部分是可选的,当该项省略时,简

25、化为: If Then 它的功能是,如果它的功能是,如果“条件条件”为为True,执行,执行“语句语句1”,否则,否则执行下一行语句执行下一行语句 。单行条件语句要作为一条语句书写,其中语句块、语句单行条件语句要作为一条语句书写,其中语句块、语句块可以是一条语句也可是由冒号间隔的多条语句块可以是一条语句也可是由冒号间隔的多条语句True逻辑表达式逻辑表达式语句语句1语句语句2FalseIf语句执行流程语句执行流程编程举例编程举例n输入三个数输入三个数a,b,c,输出三者之中最小者。,输出三者之中最小者。 分析分析 输入三个数值;从中找出最小值;输出结果。输入三个数值;从中找出最小值;输出结果。

26、Private Sub Command1_Click()Dim a as Integer,b as IntegerDim c as Integer,min as Integera=Val(InputBox(请输入第请输入第1个数个数:)b=Val(InputBox(请输入第请输入第2个数个数:)c=Val(InputBox(请输入第请输入第3个数个数:)min =a 设设a为最小值为最小值If b min Then min =b 比较后保留最小值比较后保留最小值If c min Then min =cPrint a; 、; b;与与; c;之中最小值是:之中最小值是:; minEnd Sub

27、n双分支块结构的双分支块结构的ifThenElseifThenElse语句语句单行结构条件语句中,如果条件分支执行的操作单行结构条件语句中,如果条件分支执行的操作比较复杂,不能在一个逻辑行内书写完毕,可以比较复杂,不能在一个逻辑行内书写完毕,可以使用块结构条件语句。块结构条件语句一般格式使用块结构条件语句。块结构条件语句一般格式如下:如下:If If Then Then 1ElseElse 2End IfEnd Ifn语句的执行过程和单行结构条件语句相同语句的执行过程和单行结构条件语句相同, ,即即当条件的值为当条件的值为True(True(满足条件满足条件) )时执行时执行 ThenThen

28、后后面的面的 ,1,否则执行否则执行Else Else 后面的后面的 2。 n【例【例4-74-7】 求求x x的绝对值。的绝对值。分析:问题可以描述为:分析:问题可以描述为:l l 输入一个数值输入一个数值x x。l l 判断判断x x是正数还是负数,取绝对值。是正数还是负数,取绝对值。l l 输出结果。输出结果。Private Sub Command1_Click()Dim x as Integerx=Val(InputBox(请输入请输入1个数个数:)If x 0 Then Print - xElsePrint xEnd IfEnd SubPrivate Sub Command2_Cli

29、ck() EndEnd Subn多分支块结构的多分支块结构的ifThenElseifThenElse语句语句在双分支块结构的在双分支块结构的if.Then.Elseif.Then.Else语句中,由于语句中,由于中间为语句块,即多条语句。这就难免在某个语句中间为语句块,即多条语句。这就难免在某个语句块 中 仍 然 存 在 有 一 个 双 分 支 块 结 构 的块 中 仍 然 存 在 有 一 个 双 分 支 块 结 构 的if.Then.Elseif.Then.Else语句。其格式如下:语句。其格式如下:If If Then1 Then If If Then2 Then 1 Else Else

30、2 End If End If 其它语句其它语句 ElseElse 3End IfEnd If If If Then1 Then 1ElseElse If If Then2 Then 2 Else Else 3 End If End If 其它语句其它语句 End IfEnd Ifn【例【例4-84-8】从键盘输入一个数,判断其】从键盘输入一个数,判断其为为“大于零大于零”、“等于零等于零”或者或者“小于小于零零”。分析:分析:问题可以描述为:问题可以描述为:l l 输入一个数值输入一个数值x x。l l 判定其结果。判定其结果。Private Sub Command1_Click()Dim

31、x as Integerx=Val(InputBox(请输入请输入1个数个数:)If x 0 Then Print “该数为大于零的数该数为大于零的数”ElsePrint “该数为等于零的数该数为等于零的数” End IfEnd IfEnd SubPrivate Sub Command2_Click() EndEnd Subn多分支块结构的多分支块结构的ifThenElseIfifThenElseIf语句语句在上面的多分支结构中,其实属于嵌套在上面的多分支结构中,其实属于嵌套的的ifif结构(特点是有一个结构(特点是有一个ifif就必然需要就必然需要一个一个End IfEnd If作为结束。)

32、作为结束。)n多分支块结构多分支块结构ifThenElseIfifThenElseIf语句就语句就是对上面的嵌套的一种改进,其格式如是对上面的嵌套的一种改进,其格式如下:下: IfIfThen1Then 1ElselfElselfThen2Then 2 ElselfElselfThennThen nElseElse n+1End IfEnd Ifn【例【例4-94-9】 输入一学生成绩,评定其等输入一学生成绩,评定其等级。方法是:级。方法是:90100分为分为“优秀优秀”,8089分为分为“良好良好”。,。,7079分为分为“中等中等”,6069分为分为“及格及格”,60分分以下为以下为“不合

33、格不合格”。 Private Sub Command1_Click() Dim x as Integerx=Val(InputBox(请输入学生成绩请输入学生成绩:)If x = 90 Then Print “优秀优秀”ElseIf x = 80 Then Print “良好良好”ElseIf x = 70 ThenPrint “中等中等”ElseIf x = 60 Then Print “及格及格”Else Print “不及格不及格”End IfEnd SubPrivate Sub Command2_Click() EndEnd Sub4.3.2Select Case语句语句n有时程序在某

34、种状态下,会有多种可能选择。有时程序在某种状态下,会有多种可能选择。具有多个分支时,使用情况语句更为简洁。具有多个分支时,使用情况语句更为简洁。情况语句的一般格式为情况语句的一般格式为:Select Case Case Case Case Else End Select n以以Select Case开头,以开头,以End Select结束。结束。n功能是根据功能是根据“测试表达式测试表达式”的值,从多个的值,从多个语句块中选择符合条件的一个语句块执行。语句块中选择符合条件的一个语句块执行。n情况语句的执行过程情况语句的执行过程 对对“测试表达式测试表达式”求值求值 顺序测试该值与哪一个顺序测试

35、该值与哪一个Case子句中的子句中的“表达表达式表列式表列”相匹配?相匹配? 如果找到了,则执行该如果找到了,则执行该Case分支有关的语句块,分支有关的语句块,然后把控制转移到然后把控制转移到End Select后面的语句后面的语句 如果没有找到,则执行如果没有找到,则执行Case Else分支有关的语分支有关的语句块,然后把控制转移到句块,然后把控制转移到End Select后面的语句。后面的语句。 说明:说明:1)“测试表达式测试表达式”可以是数值表达式或字可以是数值表达式或字符串表达式,通常为变量。符串表达式,通常为变量。2) 每个语句块由一行或多行每个语句块由一行或多行VB语句组成。

36、语句组成。3)“表达式表列表达式表列”中的表达式必须与中的表达式必须与“测测试表达式试表达式”的类型相同。的类型相同。4)“表达式表列表达式表列”称为域值,可以是下列称为域值,可以是下列形式之一形式之一:(1) ,各各“表达式表达式”值为值为“或或”关系,即当测试关系,即当测试表达式的值与它们中之一相同时,就执表达式的值与它们中之一相同时,就执行该行该Case分支的语句。分支的语句。例如:例如:Case 2,4,6,8表示测试表达式表示测试表达式的值等于的值等于2 or 4 or 6 or 8时执行该分支时执行该分支的语句。的语句。(2) To 关键字关键字To用于指定域值的范围。若测试用于指

37、定域值的范围。若测试表达式的值落在表达式的值落在至至之间之间(包括包括和和的的值值),则执行该,则执行该Case分支的语句。所以,分支的语句。所以,要求要求的值的值的值的值。例如:例如:Case 1 To 10(3) Is 关键字关键字Is表示当测试值满足表示当测试值满足“关系表达式关系表达式”指定条指定条件时,执行该件时,执行该Case分支的语句。分支的语句。例如:例如: Case Is10 表示当表示当“测试表达式测试表达式”的值的值10时时Case Is=5 表示当表示当“测试表达式测试表达式”的值的值=5时时n在一个在一个Select Case语句中三种形式可以混合使用,语句中三种形式

38、可以混合使用,例如:例如: Case Ismin,5,6,13,Is=max Case Is= 90 Label1.Caption = 优秀优秀 Case Is = 80 Label1.Caption = 良好良好 Case Is = 70 Label1.Caption = 中等中等 Case Is = 60 Label1.Caption = 及格及格 Case Else Label1.Caption = 不及格不及格 End SelectEnd Sub4.4 循环结构循环结构 为了解决某一问题,或求取某一计算结果,程序中为了解决某一问题,或求取某一计算结果,程序中往往反复地按某一模式进行操作

39、。往往反复地按某一模式进行操作。n 问题问题1:计算:计算1*2*3*4*n。用一个变量用一个变量S代表值,可以写成代表值,可以写成:S=1S=S*2S=S*3共有共有n行语句行语句S=S*nn问题问题2:在一行上输出:在一行上输出60个个“*”号。号。如果用如果用Print方法,可以用方法,可以用60个个“*”号组成一个字符串:号组成一个字符串:print “*” 60个个“*”或使用或使用60个语句:个语句:Print“*”;Print“*”;共有共有60行行Print”*”n循环结构是一种重复执行的程序结构。它判循环结构是一种重复执行的程序结构。它判断给定的条件,如果条件成立,即为断给定

40、的条件,如果条件成立,即为“真真”(TrueTrue),则重复执行某一些语句,(称为),则重复执行某一些语句,(称为循环体);否则,即为循环体);否则,即为“假假”(FalseFalse),则),则结束循环。通常循环结构有结束循环。通常循环结构有“当型循环当型循环”(先判断条件,后执行循环)和(先判断条件,后执行循环)和“直到型循直到型循环环”(先执行循环,在判断条件)两种。在(先执行循环,在判断条件)两种。在Visual BasicVisual Basic中,实现循环结构的语句主要中,实现循环结构的语句主要有有3 3种:种:l l WhileWendWhileWend语句语句l l DoLo

41、opDoLoopl l ForNextForNext 4.4.1 WhileWend语句语句 WhileWend语句语句(当循环语句当循环语句)根据某一条件进行判断,决定是根据某一条件进行判断,决定是否执行循环。其语句格式如下:否执行循环。其语句格式如下: While Wend 上述格式中,上述格式中,“条件条件”为一布尔表达式,用以指定循环条件。为一布尔表达式,用以指定循环条件。 执行过程是:执行过程是: 如果如果“条件条件”的值为的值为True(非非0),执行由,执行由“语句块语句块”组成的循环组成的循环体,当遇到体,当遇到Wend语句时,控制返回到语句时,控制返回到While语句,并对语

42、句,并对“条件条件”进行测试,如果仍为进行测试,如果仍为True,则重复上述过程。如果,则重复上述过程。如果“条件条件”为为False,则不再执行,则不再执行“语句块语句块”,而执行,而执行Wend后面的语句后面的语句 n【例【例4-124-12】使用循环在窗体上输出】使用循环在窗体上输出1010个个“* *”分析:分析:在窗体上输出在窗体上输出“* *”,其语句要用到,其语句要用到Print Print “* *”语句。但语句。但Print Print “* *”只能输出只能输出1 1个星号,个星号,如果要输出如果要输出1010个则让该语句重复执行个则让该语句重复执行1010次即可。所以,程

43、序中要设置一个记录次即可。所以,程序中要设置一个记录Print Print “* *”语句执行次数的变量语句执行次数的变量c c。 【例【例4-134-13】从键盘上输入一个数从键盘上输入一个数x,判定该数,判定该数是否为质数。是否为质数。 Private Sub Command1_Click() Dim x As Integer, flag As Boolean, n As Integer x = val(InputBox(请输入一个数请输入一个数:) flag = True n = 2 While n x And flag If x Mod n = 0 Then flag = False

44、n = n + 1 Wend If flag Then Print x; 是一个素数是一个素数 Else Print x; 不是一个素数不是一个素数 End IfEnd Sub 使用使用WhileWend循环语句时,应注意:循环语句时,应注意: (1)先对先对“条件条件”进行测试,然后才决定是否执行进行测试,然后才决定是否执行循环体。因此,进入循环体之前应循环体。因此,进入循环体之前应正确设置循环条正确设置循环条件件。 (2)循环体内应该循环体内应该有修改循环条件的语句有修改循环条件的语句,使得循,使得循环体能正常执行和正常终止。否则会出现死循环,环体能正常执行和正常终止。否则会出现死循环,这

45、是程序设计中容易出现的错误,应当尽力避免。这是程序设计中容易出现的错误,应当尽力避免。 WhileWend语句是语句是Basic语言中形式最简单循语言中形式最简单循环语句,我们用它引入了循环语句的概念和应用。环语句,我们用它引入了循环语句的概念和应用。更典型和更灵活的形式是更典型和更灵活的形式是Do循环语句,它完全可循环语句,它完全可以代替以代替WhileWend语句。语句。 4.4.2 DoLoop语句语句nDoLoop循环语句也是根据条件决定循环语句也是根据条件决定循环的语句。循环的语句。nDoLoop语句具有很灵活的构造形式:语句具有很灵活的构造形式:既能够指定循环条件,也能够指定循环既

46、能够指定循环条件,也能够指定循环结束条件;既可以构成先判断条件形式,结束条件;既可以构成先判断条件形式,也可以构成后判断条件形式。也可以构成后判断条件形式。 先判断条件形式的先判断条件形式的DoLoop语句语句语句格式如下:语句格式如下: Do While | Until Loopn保留字保留字While用于指定循环条件用于指定循环条件n保留字保留字Until用于指定循环结束条件用于指定循环结束条件n先判断条件形式的先判断条件形式的DoLoop语句功能是,当指定的循环语句功能是,当指定的循环条件为条件为True或直到指定的循环结束条件变为或直到指定的循环结束条件变为True之前重之前重复执行语

47、句块组成的循环体。进入循环体时,如果循环条复执行语句块组成的循环体。进入循环体时,如果循环条件不成立或者循环结束条件成立,就不会执行循环体的语件不成立或者循环结束条件成立,就不会执行循环体的语句块。这点和句块。这点和WhileWend语句一样。语句一样。Do WhileFalseTrue条件的值条件的值循环体循环体 Do WhileLoop循环结构流程图循环结构流程图Do UntilTrueFalse条 件 的条 件 的值值循环体循环体Do Until Loop循环结构流程图循环结构流程图DoLoop语句的先判断条件格式的控制流程语句的先判断条件格式的控制流程 x初值为初值为0,则下列循环语句

48、执行后,则下列循环语句执行后,x的值的值等于(等于( ),执行循环体的次数为(),执行循环体的次数为( )。)。 i=1 do while x20 x=x+i i=i+2 loop【例【例4-144-14】 用用Do WhileLoopDo WhileLoop语句计算语句计算2 2n n。Private Sub Command1_Click() n = Val(InputBox(请输入请输入n的值的值) s = 1 c = 1 Do While c 100 s = s + c c = c + 1 Loop Print s = ; sEnd Sub后判断条件形式的后判断条件形式的DoLoop语句

49、语句语句格式如下:语句格式如下: Do Loop While|Until 后判断条件形式的后判断条件形式的DoLoop语句与先判断语句与先判断条件形式的区别是首先执行循环体,然后测试条件形式的区别是首先执行循环体,然后测试循环条件或循环终止条件,决定是否继续循环。循环条件或循环终止条件,决定是否继续循环。所以,这种结构的语句至少执行一次循环体。所以,这种结构的语句至少执行一次循环体。DoWhileFalseTrue条 件 的条 件 的值值循环体循环体Do Loop While循环结构流程图循环结构流程图DoUntilFalseTrue条 件 的条 件 的值值循环体循环体Do Loop Unti

50、l循环结构流程图循环结构流程图【例【例4-164-16】用迭代法求用迭代法求x= 求立方根的迭代公式求立方根的迭代公式为,为, 当当|xn+1-xn| eps Print The cuberoot of ; A; is; QEnd Sub 3a)2(3121nnnxaxx3a4.4.4 ForNext语句语句 ForNext语句,通常语句,通常用于循环次数已知用于循环次数已知的程序结构中。其一的程序结构中。其一般格式如下:般格式如下: For = To Step Next 说明:说明: (1) “控制变量控制变量”又称为又称为“循环控制变量循环控制变量”。它是一个。它是一个数值变数值变量量,但

51、不能是下标变量或记录元素。,但不能是下标变量或记录元素。 (2) “初值初值”、“终值终值”和和“步长步长”均为均为数值表达式数值表达式,它们的,它们的值可以是整数或实数。当控制变量为整型而它们为实数时,值可以是整数或实数。当控制变量为整型而它们为实数时,VB将对其舍入取整将对其舍入取整。当步长。当步长O时,作递增循环,即应有终时,作递增循环,即应有终值值初值;步长初值;步长终终值值循环体循环体控制变量控制变量控制变量控制变量+步长步长 步长大于步长大于0的的For循环结构循环结构TrueFalse控制变量赋初值控制变量赋初值控制变量控制变量终值终值循环体循环体控制变量控制变量控制变量控制变量

52、+步长步长 步长小于步长小于0的的For循环结构循环结构1 下列循环语句执行后,循环体被执行的次数为下列循环语句执行后,循环体被执行的次数为( )。 For I=1.3 To 5.6 Step 0.5 Print I; Next I A) 8 B) 9 C) 7 D) 10B2 x初值为初值为0,则下列循环语句执行后,则下列循环语句执行后,x的值等于的值等于( )。 For i=1 To 10 Step 2 x=x+i Next i A) 25 B) 36 C) 24 D) 27A3 下列循环语句执行后,循环体执行的次数为下列循环语句执行后,循环体执行的次数为( )。 For i=1 To 1

53、0 Step -2 x=x+i Next I A) 5 次次 B) 4 次次 C) 0 次次 D) 6 次次C【例4-17】用用For语句写程序,在一行上语句写程序,在一行上输出输出60个个“*”号。号。For i =1 To 60 Print *;Next i 【例4-18】求求N!(N为自然数为自然数)Private Sub Command1_Click() Dim n As Integer, x As Integer, k As Long n = InputBox(Enter n:) k = 1 For x = 1 To n k = k * x Next x Print n; !=; k

54、End Sub 4.4.4 嵌套循环与退出嵌套循环与退出嵌套循环嵌套循环 循环体的语句块中可以包含任何循环体的语句块中可以包含任何VB语句,当然也包括循环语句。也就是说,语句,当然也包括循环语句。也就是说,在一个循环结构的循环体内含有另一个在一个循环结构的循环体内含有另一个循环结构,这就形成了嵌套循环,又叫循环结构,这就形成了嵌套循环,又叫做多重循环。做多重循环。 例双重循环。双重循环。Private Sub Command1_Click() Dim i%, j% For i = 1 To 3 For j = 5 To 6 Print i, j Next j Next iEnd Sub 例例

55、打印九九乘法表。打印九九乘法表。Private Sub Command1_Click() Dim I As Integer, j As Integer Print 九九乘法表九九乘法表 Print - For i = 1 To 9 For j = 1 To i Print j; x; i; =; j * i; Next j Print Next iEnd Sub 例例 打印三角形打印三角形对于此类图形,需要注意以下两点:对于此类图形,需要注意以下两点:1)第一行第一个字符的定位(即确定它的)第一行第一个字符的定位(即确定它的输出位置);输出位置);2)每行之间所输出内容的列数与循环控制)每行之间所输出内容的列数与循环控制变量的对应关系。变量的对应关系。Private Sub Command1_Click() FontSize = 20 Dim i As Integer, j As Integer For i = 1 To

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论