第4章--程序设计的3种基本结构课件.ppt
第第4章章程序设计的程序设计的3种基本结构种基本结构本章内容及要求:本章内容及要求:1.了解算法概念及表示,掌握用了解算法概念及表示,掌握用NS流程图表示算法;流程图表示算法;2.熟练掌握赋值语句、输入熟练掌握赋值语句、输入/输出消息框函数的使用;输出消息框函数的使用;3.熟练掌握行熟练掌握行ifif语句、块语句、块ifif结构、结构、Select CaseSelect Case情况选择情况选择结构有使用,掌握选择的嵌套结构;结构有使用,掌握选择的嵌套结构;4.熟练掌握实现循环结构的熟练掌握实现循环结构的For/NextFor/Next循环结构及循环结构及Exit Exit ForFor语句、语句、Do/LoopDo/Loop循环结构的使用,掌握多重循环。循环结构的使用,掌握多重循环。重点:重点:选择结构及循环结构的实现及其应用选择结构及循环结构的实现及其应用难点:难点:选择的嵌套及多重循环结构选择的嵌套及多重循环结构本章主要内容本章主要内容4.1算法及算法的表示算法及算法的表示4.2顺序结构顺序结构4.3选择结构选择结构4.4循环结构循环结构4.5其他控制语句其他控制语句4.6应用程序举例应用程序举例4.1算法及算法的表示算法及算法的表示4.1.1算法概述算法概述什么是算法:什么是算法:广义地讲:广义地讲:算法是为完成一项任务所应当遵循的算法是为完成一项任务所应当遵循的一步一一步一步的规则的、精确的、无歧义的描述,步的规则的、精确的、无歧义的描述,它的总步数是有限的。它的总步数是有限的。狭义地讲:狭义地讲:算法是解决一个问题采取的方法和步骤的描述。算法是解决一个问题采取的方法和步骤的描述。下面通过两个简单的例子加以说明:下面通过两个简单的例子加以说明:1)输入输入A、B、C。2)A与与B中大的一个放入中大的一个放入MAX中。中。3)把把C与与MAX中大的一个放入中大的一个放入MAX中。中。4)输出输出MAX,MAX即为最大数。即为最大数。例例4.1输入三个数,然后输出其中最大的数。输入三个数,然后输出其中最大的数。将三个数依次输入到变量、将三个数依次输入到变量、B、C中,设变量中,设变量MAX存放存放最大数。其算法如下:最大数。其算法如下:4.1算法及算法的表示算法及算法的表示例例4.2输入输入10个数,打印输出其中最大的数。个数,打印输出其中最大的数。算法设计如下:算法设计如下:(1)输输入入1个个数数,存存入入变变量量A中中,将将记记录录数数据据个个数数的的变变量量N赋赋值为值为1,即,即N=1(2)将)将A存入表示最大值的变量存入表示最大值的变量Max中,即中,即Max=A(3)再再输输入入一一个个值值给给A,如如果果AMax则则Max=A,否否则则Max不变不变(4)让记录数据个数的变量增加)让记录数据个数的变量增加1,即,即N=N+1(5)判判断断N是是否否小小于于10,若若成成立立则则转转到到第第(3)步步执执行行,否否则转到第(则转到第(6)步)步(6)打印输出)打印输出max4.1算法及算法的表示算法及算法的表示4.1.2算法的特性算法的特性1有穷性有穷性2确定性确定性3有有0个或多个输入个或多个输入4有一个或多个输出有一个或多个输出5有效性有效性4.1算法及算法的表示算法及算法的表示4.1.3算法的表示算法的表示一、自然语言与伪代码表示算法一、自然语言与伪代码表示算法自然语言:自然语言:就是指人们日常使用的语言,可以是汉语、英就是指人们日常使用的语言,可以是汉语、英语或其它语言。语或其它语言。伪代码:伪代码:是用介于自然语言和计算机语言之间的文字和符是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。号(包括数学符号)来描述算法。4.1算法及算法的表示算法及算法的表示例如:例例如:例4.1可用如下的伪代码表示可用如下的伪代码表示Begin(算法开始)(算法开始)输入输入 A,B,C IF AB 则则 AMax 否则否则 BMax IF CMax 则则 CMaxPrint MaxEnd(算法结束算法结束)4.1算法及算法的表示算法及算法的表示二二用用传统传统流程图表示算法流程图表示算法处理框起止框I/O框判断框流程线连接点1、传统流程图中的基本符号、传统流程图中的基本符号4.1算法及算法的表示算法及算法的表示2、三种基本结构的表示、三种基本结构的表示(1)顺序结构)顺序结构条件语句1语句2YN语句1语句2(2)选择结构)选择结构4.1算法及算法的表示算法及算法的表示(3)循环结构)循环结构a)当型循环当型循环b)直到循环直到循环条件语句组YN(b)条件(a)YN语句组4.1算法及算法的表示算法及算法的表示三种基本结构的特点:三种基本结构的特点:(1)只有一个入口)只有一个入口(2)只有一个出口)只有一个出口(3)不存在死语句)不存在死语句(4)不存在死循环)不存在死循环例:例:例例4.2输入输入10个数,打印输出其中的最大的数的流程图个数,打印输出其中的最大的数的流程图4.1算法及算法的表示算法及算法的表示从从10个数中选出最大的数个数中选出最大的数的算法流程图的算法流程图NMaxMax=A输入A开始再输入给AN=N+1打印Max结束YNNY4.1算法及算法的表示算法及算法的表示4.1.4用用NS流程图表示算法流程图表示算法将全部算法写在一个矩形框内,在矩形内还可包含其将全部算法写在一个矩形框内,在矩形内还可包含其它从属于它的框它从属于它的框三种基本结构的三种基本结构的NS图表示:图表示:语句A语句B语句A语句B条件YN1、顺序结构、顺序结构2、选择结构、选择结构4.1算法及算法的表示算法及算法的表示(3)循环结构)循环结构a)当型循环当型循环b)直到循环直到循环例:例:画出从画出从10个数中选出最大的数的个数中选出最大的数的NS流程图流程图语句组当条件成立(a)语句组直到当条件成立(b)4.1算法及算法的表示算法及算法的表示传统流程图NMaxMax=A输入A开始再输入给AN=N+1打印Max结束YNNY输入A当NMaxYN输入A4.1算法及算法的表示算法及算法的表示A=Val(InputBox(A=?)B=Val(InputBox(B=?)C=Val(InputBox(C=?)IfABthenMax=AElseMax=BEndIfIfCMaxthenMax=CPrintMax=;Max下面是例下面是例4.1的计算机的计算机程序,即为用计算机语言表示算法:程序,即为用计算机语言表示算法:4.1算法及算法的表示算法及算法的表示4.2顺序结构顺序结构4.2.1 4.2.1 赋值语句赋值语句 形式形式:变量名表达式变量名表达式对象对象.属性表达式属性表达式功能:功能:将表达式的值赋值给变量名或指定对象的属性。将表达式的值赋值给变量名或指定对象的属性。一般用于给变量赋值或对控件设定属性值一般用于给变量赋值或对控件设定属性值.例:例:sRate!=0.1Text1.Text欢迎使用欢迎使用VisualBasic6.0”说明:说明:1执行过程:先求表达式的值,然后将值赋值给左边的变量。执行过程:先求表达式的值,然后将值赋值给左边的变量。2右边的表达式可以是变量、常量、函数调用等特殊的表达式。右边的表达式可以是变量、常量、函数调用等特殊的表达式。3不要将不要将“”理解为数学上的等号:理解为数学上的等号:A=A+1是表示将是表示将A单元的值加后以放回到单元的值加后以放回到A单元单元。执行过程如右图执行过程如右图4赋值符号赋值符号“=”左边一定只能是变量名或对象的属性左边一定只能是变量名或对象的属性引用,不能是常量、符号常量、表达式。引用,不能是常量、符号常量、表达式。下面的赋值语句都是错的:下面的赋值语句都是错的:5=X左边是常量。左边是常量。Abs(X)=20左边是函数调用,即是表达式。左边是函数调用,即是表达式。5.赋值符号赋值符号“=”两边的数据类型一般要求应一致。两边的数据类型一般要求应一致。4.2顺序结构顺序结构4.2.2数据的输出数据的输出Print方法方法Print方法的一般格式:方法的一般格式:对象名对象名.Print,|;说明:说明:对象名对象名.可以是窗体名、图片框名,也可是立即窗口可以是窗体名、图片框名,也可是立即窗口“Debug”。若。若省略对象,则表示在当前窗体上输出省略对象,则表示在当前窗体上输出。用用Print方法在图片框和立即窗口对象中输出与在窗体方法在图片框和立即窗口对象中输出与在窗体对象中输出完全相同。对象中输出完全相同。4.2顺序结构顺序结构用用Print方法输出数据方法输出数据例例4.12PrivateSubForm_Activate()Print1223444Printhello;Tab(10);worldPrintTab(-9);helloEndSub例:分别在例:分别在3个文本框中输入小时、分、秒,个文本框中输入小时、分、秒,转换成秒数在一个标签上输出。转换成秒数在一个标签上输出。Private Sub Command1_Click()Dim h As Long,m As Integer,s As Integer Dim x As Long h=Val(Text1.Text)m=Val(Text2.Text)s=Val(Text3.Text)x=h*3600+m*60+s Label1.Caption=“共共“&x&”秒秒“End Sub例例4.2(补充)(补充)在文本框中输入英文字母,单击在文本框中输入英文字母,单击”转大写转大写“按钮,文本按钮,文本变成大写,单击变成大写,单击”转小写转小写“按钮,文本变为小写,单击按钮,文本变为小写,单击”复原复原“按钮,按钮,文本复原为原来输入的内容。文本复原为原来输入的内容。Private Sub Text1_KeyUp(KeyCode As Integer,Shift As Integer)Text1.Tag=Text1.TextEnd SubPrivate sub Command1_Click()Text1.Text=UCase(Text1.Tag)End SubPrivate sub Command2_Click()Text1.Text=LCase(Text1.Tag)End SubPrivate sub Command3_Click()Text1.Text=Text1.TagEnd Sub4.2.3用户交互函数和过程用户交互函数和过程 1.InputBox函数函数变量名变量名=InputBox$(,)其中其中:提示提示提示信息提示信息,标题标题标题区显示标题区显示,缺省缺省输入区缺省值。输入区缺省值。例如,要在屏幕上显示如下的对话框例如,要在屏幕上显示如下的对话框:4.2顺序结构顺序结构例如:有下列语句如下例如:有下列语句如下:Dimx%x=Val(InputBox(“请输入一个数请输入一个数”,“输入框输入框”,100)语句执行后打开如下对话框。语句执行后打开如下对话框。缺省值标题提示4.2顺序结构顺序结构PrivateSubForm_Activate()DimRAsString,AREAAsSingleR=InputBox(“请输入半径请输入半径”,“计算面积计算面积”,“1”)AREA=3.14*Val(R)2PrintVal(R),AREAEndSub例例.利用输入框输入半径求任意园的面积利用输入框输入半径求任意园的面积2.MsgBox函数和函数和MsgBox过程过程(p62)函数形式函数形式:变量变量%=MsgBox(提示提示,按钮按钮图标图标+缺省按钮缺省按钮+模式模式,标题,标题)过程形式过程形式:MsgBox提示提示,按钮按钮图标图标+缺省按钮缺省按钮+模式模式,标题标题图标标题提示信息命令按钮4.2顺序结构顺序结构例例4-11 求两个数相除,若除数为求两个数相除,若除数为0,则用消息对话框提示用户,则用消息对话框提示用户重新输入重新输入Private Sub Command1_Click()If Val(Text2.Text)=0 Then MsgBox 除数不能为除数不能为0!,0+16,输入数据出错输入数据出错 Else Text3.Text=Val(Text1.Text)/Val(Text2.Text)End IfEnd Sub注:注:0+16,其中,其中0为按钮值,为按钮值,16为图标类型为图标类型说明:说明:“标题标题”和和“提示提示”与与InputBox函数中对应的参数相函数中对应的参数相同;同;“按钮图标按钮图标+缺省按钮缺省按钮+模式模式”是整型表达式,决是整型表达式,决定信息框按钮数目、出现在信息框上的图标类型及操作模式定信息框按钮数目、出现在信息框上的图标类型及操作模式(见表见表4.1)若程序中需要返回值,则使用函数,否则可调用过程。若程序中需要返回值,则使用函数,否则可调用过程。4.2顺序结构顺序结构按钮及图标值如下按钮及图标值如下:根据用户所选按钮,函数返根据用户所选按钮,函数返回回1717的整数值,其含义的整数值,其含义如下表如下表:(表(表4.2)4.2)4.2顺序结构顺序结构4.2顺序结构顺序结构用户可根据用户可根据MsgBox函数的不同返回值,实现程序的控制流函数的不同返回值,实现程序的控制流程,就必需通过编写程序代码才能实现。例如下面一段程序中程,就必需通过编写程序代码才能实现。例如下面一段程序中的的MsgBox函数,显示的对话框在函数,显示的对话框在“是是”、“否否”两个按钮,默两个按钮,默认按钮为第一个按钮认按钮为第一个按钮“是是”。i=MsgBox(发生错误,是否继续?发生错误,是否继续?,vbYesNo+vbQuestion,提示信息提示信息)Ifi=7ThenEnd或写成或写成Ifi=vbNoThenEnd当用户单击当用户单击“否否”,程序就结束,单击,程序就结束,单击“是是”或直接按回或直接按回车键,程序则继续向下执行。车键,程序则继续向下执行。4.2.4注释语句注释语句其语法格式为:其语法格式为:Rem或或说明:说明:1.指指要要包包括括的的任任何何注注释释文文本本。在在Rem关关键键字字和和注注释释内内容容之之间间要要加加一一个个空空格格。可可以以用用一一个个英英文文单单引引号号“”来代替来代替Rem关键字。关键字。2.如如果果在在其其他他语语句句行行后后面面使使用用Rem关关键键字字,必必需需用用冒冒号号(:)与与语语句句隔隔开开。若若用用英英文文单单引引号号“”,则则在在其其他他语语句句行行后后面不必加冒号面不必加冒号(:)。例如:例如:Const PI=3.1415925 符号常量符号常量PIS=PI*r*r :Rem计算圆的面积计算圆的面积4.2顺序结构顺序结构4.2.5应用举例应用举例例例4.3输输入入时时间间(小小时时,分分和和秒秒),然然后后使使用用输输出出消消息息框框输出总计多少秒。输出总计多少秒。使使用用文文本本框框输输入入数数据据,使使用用消消息息框框输输出出计计算算结结果果,程程序序运运行界面如图所示。行界面如图所示。4.2顺序结构顺序结构图图4-14程序运行界面程序运行界面vPrivateSubForm_Load()vForm1.Caption=计算时间计算时间vLabel1.Caption=小时小时vLabel2.Caption=分:分:vLabel3.Caption=秒:秒:vText1=:Text2=:Text3=vCommand1.Caption=计算计算vCommand2.Caption=结束结束vEndSubvPrivateSubCommand1_Click()vDimhh%,mm%,ss%,Totals!vDimOutstr$vhh=Val(Text1)vmm=Val(Text2)vss=Val(Text3)vTotals=hh*3600+mm*60+ssvOutstr=hh&小时小时&mm&分分&ss&秒秒vOutstr=Outstr&vbCrLf&总计:总计:&Totals&秒秒vMsgBoxOutstr,输出结果输出结果vEndSub4.2.5应用举例应用举例例例4.4编编一一程程序序,求求一一内内半半径径R1=10cm,外外半半径径R2=20cm的球环的体积。要求按四舍五入保留到小数点后的球环的体积。要求按四舍五入保留到小数点后4位。位。解:球的体积公式解:球的体积公式:4.2顺序结构顺序结构本题所求的球环面的体积公式本题所求的球环面的体积公式:选择结构是根据条件选择执行不同的分支语句,以完成选择结构是根据条件选择执行不同的分支语句,以完成问题的要求。在问题的要求。在VisualBasic程序设计中,使用程序设计中,使用IF语句和语句和SelectCase语句来处理选择结构。其特点是:根据所给定的语句来处理选择结构。其特点是:根据所给定的条件成立(条件成立(True)或不成立()或不成立(False),从各实际可能的不同),从各实际可能的不同分支中执行某一分支的相应操作(程序块),并且任何情况分支中执行某一分支的相应操作(程序块),并且任何情况下总有下总有“无论条件多寡,必择其一;虽然条件众多,仅选其无论条件多寡,必择其一;虽然条件众多,仅选其一一”的特性。的特性。4.3选择结构选择结构4.3.1If条件语句条件语句1.IfThen语句语句(单分支结构单分支结构)IfThen语句块语句块EndIf或或IfThen例例:已知两个数已知两个数x和和y,比较它们的大小,比较它们的大小,使得使得x大于大于y.IfxyThent=x:x=y:y=tEndIf或或IfxyThent=x:x=y:y=t4.3选择结构选择结构2.IfThenElse语句语句(双分支结构双分支结构)IfThenElseEndIfIfThenElse双分支选择结构执行过程双分支选择结构执行过程4.3选择结构选择结构例如:输出例如:输出x,y两个中值较大的一个值。两个中值较大的一个值。IF XY Then Print X Else Print Y End If也可以写成如下的单行形式:也可以写成如下的单行形式:IF XY Then Print X Else Print Y4.3选择结构选择结构3.条件函数条件函数Iif()IIf函函数数可可用用来来执执行行简简单单的的条条件件判判断断操操作作,它它相相当当于于IFThen.Else结构。结构。IIF函数的使用格式:函数的使用格式:IIF(,)说明:说明:(1)与与IF语语句句中中的的表表达达式式相相同同,通通常常是是关关系系表表达达式式、逻逻辑辑表表达达式式,也也可可为为算算术术表表达达式式。如如果果是是算算术术表表达达式式,其值按非其值按非0为为True,0为为False进行判断。进行判断。(2)当当为为真真时时,函函数数返返回回的的值值,当当为假时,函数返回为假时,函数返回的值。的值。(3)、可以是任何表达式。可以是任何表达式。例如:例如:Max=IIF(XY,X,Y)它与下面语句等价:)它与下面语句等价:IFXYThenMax=xElseMax=Y4.3选择结构选择结构4.IfThenElseIf语句语句(多分支结构多分支结构)形式形式:IfThenElseIfThenElse语句块语句块n+1EndIf执行过程4.3选择结构选择结构使用使用IF语句实现的程序段如下:语句实现的程序段如下:If x=90 then Print 优秀优秀ElseIf x=80 Then Print 良好良好 ElseIf x=70 Then Print 中等中等 ElseIf x=60 Then Print 及格及格 Else Print 不及格不及格End If例例4.6:输入一学生成绩,评定其等级。方法是:输入一学生成绩,评定其等级。方法是:90100分分为为“优秀优秀”,8089分为分为“良好良好”,7079分为分为“中等中等”,6069分为分为“及格及格”,60分以为分以为“不合格不合格”4.3选择结构选择结构补充例补充例5-1:在三个文本框中输入数据,求其中的最大值在三个文本框中输入数据,求其中的最大值Private Sub Command1_Click()Dim a%,b%,c%,m%a=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)If a b Then m=a End If If c m Then m=c Label4.Caption=mEnd Sub 补充例补充例5-2:根据不同的时间段发出问候语根据不同的时间段发出问候语Private Sub Form_Click()Dim h%h=Hour(Time)If h 12 Then Print Good Moring ElseIf h 18 Then Print Good Afternoon Else Print Good Night End IfEnd Sub4.3.2SelectCase语句(情况语句)语句(情况语句)形式:形式:SelectCase变量或表达式变量或表达式Case表达式列表表达式列表1语句块语句块1Case表达式列表表达式列表2语句块语句块2CaseElse语句块语句块n+1EndSelect数值型或字符串表达式4.3选择结构选择结构说明:说明:与:与同类型的同类型的下面四种形式之一:下面四种形式之一:表达式表达式A+5一组枚举表达式一组枚举表达式(用逗号分隔用逗号分隔)2,4,6,8表达式表达式1To表达式表达式260to100Is关系运算符表达式关系运算符表达式Is=90 then Print 优秀优秀ElseIf x=80 Then Print 良好良好 ElseIf x=70 Then Print 中等中等 ElseIf x=60 Then Print 及格及格 Else Print 不及格不及格End If例例4.6:输入一学生成绩,评定其等级。方法是:输入一学生成绩,评定其等级。方法是:90100分分为为“优秀优秀”,8089分为分为“良好良好”,7079分为分为“中等中等”,6069分为分为“及格及格”,60分以为分以为“不合格不合格”4.3选择结构选择结构2.Choose函数函数Choose函数使用格式:函数使用格式:Choose(,.)说明:说明:Choose函函数数根根据据的的值值来来决决定定返返回回其其后后中中的的那那个个表表达达式式的的值值。如如果果的的值值为为1,则则返返回回的的值值,如如果果的的值值为为2,则则返返回回的的值值,以以此此类类推推。若若的的值值小小于于1或或大大于于n,则函数返回,则函数返回Null(空空)。例例如如:根根据据Nop的的值值,得得到到+、-、*,/的的运运算算符符,可可由由理理面语句来实现。面语句来实现。Nop=Int(Rnd*4)+1OP=Choose(Nop,+,-,*,/)4.3选择结构选择结构4.3.3选择结构的嵌套选择结构的嵌套下面是两种正确的嵌套形式:(1)IFThen.IFThenElse.EndIf.Else.IFThen.Else.EndIf.EndIF(2)IFThen.SelectCaseCaseIFThenElse.EndIfCase.EndSelect.EndIF4.3选择结构选择结构注意:注意:只只要要在在一一个个分分支支内内嵌嵌套套,不不出出现现交交叉叉,满满足足结结构构规规则则,其其嵌嵌套的形式将有很多种,嵌套层次也可以任意多。套的形式将有很多种,嵌套层次也可以任意多。对对于于多多层层IF嵌嵌套套结结构构中中,要要特特别别注注意意IF与与Else的的配配对对关关系系,一个一个Else必须与必须与IF配对配对。配配对对的的原原则则是是:在在写写含含有有多多层层嵌嵌套套的的程程序序时时,建建议议使使用用缩缩进进对齐方式,这样容易阅读和维护。对齐方式,这样容易阅读和维护。4.3选择结构选择结构例例4.7设计一个用户身份验证程序,运行界面如下图所示。设计一个用户身份验证程序,运行界面如下图所示。4.3选择结构选择结构设密码分别为设密码分别为1234567(普通用户)、(普通用户)、1989643(授权用户)(授权用户)和和1687799(特许用户),按回车键表示密码输入结束。如果(特许用户),按回车键表示密码输入结束。如果输入密码正确,则用输入密码正确,则用MsgBox对话框显示对话框显示“你的口令正确你的口令正确,已通已通过身份验证过身份验证”并显示用户类型;否则显示并显示用户类型;否则显示“密码不符,要重试密码不符,要重试一遍吗!一遍吗!”(有(有“是是”和和“否否”两个按钮),当用户单击两个按钮),当用户单击“是是”则将焦点定位到文本框中、清除文本框中的内容并允许再输则将焦点定位到文本框中、清除文本框中的内容并允许再输入一遍,如果单击入一遍,如果单击“否否”则退出程序。则退出程序。PrivateSubForm_Load()Form1.Caption=用户身份验证用户身份验证Text1.Text=Text1.PasswordChar=*Text1.MaxLength=7EndSubPrivateSubText1_KeyPress(KeyAsciiAsInteger)DimpwAsString,iAsIntegerIfKeyAscii=13Then按回车键后进行密码检验按回车键后进行密码检验pw=Trim(Text1.Text)判断密码是否正确判断密码是否正确Ifpw=1234567Orpw=1989643Orpw=1687799ThenMsgBox你的口令正确你的口令正确,已通过身份验证已通过身份验证,vbInformation+_vbOKOnly,用户身份验证用户身份验证SelectCasepwCase1234567Label2.Caption=你是普通用户你是普通用户Case1989643Label2.Caption=你是授权用户你是授权用户Case1687799Label2.Caption=你是特许用户你是特许用户EndSelectElse密码不正确密码不正确i=MsgBox(口令不正确口令不正确,是否重试是否重试,vbYesNo+vbQuestion,提示信息提示信息)Ifi=vbYesThenText1.Text=:Text1.SetFocusElseEndEndIfEndIfEndSub4.4 4.4 循循环结环结构构1.For循环语句循环语句(一般用于循环次数已知一般用于循环次数已知)形式:形式:For循环变量初值循环变量初值to终值终值Step步长步长语句块语句块ExitFor语句块语句块Next循环变量循环变量循环体0初值初值终值终值=1时时,可省可省略略终值终值=0死循环死循环步长步长4.4循环结构循环结构循环次数循环次数例例:ForI=2To13Step3PrintI,NextIPrint“I=“,I循环执行次数循环执行次数:输出输出I的值分别为的值分别为:25811出了循环输出为出了循环输出为:I=144.4循环结构循环结构Int(13-2)/3+1)=4例例4.8编程计算:编程计算:S=1+2+3+100Dim S%,I%Dim S%,I%S=0 S=0 累加前变量累加前变量S S为为0 0For I=1 to 100 For I=1 to 100 S=S+I S=S+INext INext IPrint S=,S Print S=,S 当N=100N=N+1打印SS=0,N=1S=S+N例例4.8的算法流程图的算法流程图4.4循环结构循环结构例例5-5 求求s=1+1/2+1/3+1/4+1/n的值,单击窗体输出的值,单击窗体输出结果。结果。Private Sub Form_Click()Dim n%,i%,s!s=0 n=Val(InputBox(n=)For i=1 To n s=s+1/i Next i Print s=;sEnd Sub形式形式1:(当型循环):(当型循环)DoWhile|Until语句块语句块ExitDo语句块语句块Loop4.4.2DoLoop循环语句循环语句4.4循环结构循环结构形式形式2:(直到循环)直到循环)Do语句块语句块ExitDo语句块语句块LoopWhile|Until4.4循环结构循环结构条 件语句块语句块TFExit Do条 件语句块语句块TFExit DoDoUntilLoop执行过程执行过程DoLoopUntil执行过程执行过程4.4循环结构循环结构说明:说明:(1 1)当当使使用用WhileWhile 构构成成循循环环时时,当当条条件件为为“真真”,则反复执行循环体则反复执行循环体,当条件为,当条件为“假假”,则退出循环。,则退出循环。(2)当当使使用用Until构构成成循循环环时时,当当条条件件为为“假假”,则则反复执行循环体反复执行循环体,直到条件成立,即为,直到条件成立,即为“真真”时,则退出循环。时,则退出循环。(3 3)在在循循环环体体内内一一般般应应有有一一个个专专门门用用来来改改变变条条件件表表达达式式中中变变量量的的语语句句,以以使使随随着着循循环环的的执执行行,条条件件趋趋于于不不成成立立(或或成成立立),最后达到退出循环。,最后达到退出循环。(4)语句)语句ExitDo的作用是退出它所在的循环结构,它只能的作用是退出它所在的循环结构,它只能用在用在DO/Loop结构中,并且常常是同选择结构一起出现在循环结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。结构中,用来实现当满足某一条件时提前退出循环。4.4循环结构循环结构4.4.3WhileWend语句语句使用格式如下:使用格式如下:WhileWend说说明明:该该语语句句的的功功能能与与DoWhile.Loop实实现现的的循环完全相同。循环完全相同。例:用例:用doLoop语句改写前面的例题语句改写前面的例题4.54.4循环结构循环结构补充例补充例5-6:给定整数给定整数n,判断其是否为素数,判断其是否为素数Private Sub Command1_Click()Dim n As Long,b As Boolean n=Val(Text1.Text)b=True For i=2 To n-1 If n Mod i=0 Then b=False:Exit For Next i If b Then Label2.Caption=n&是素数是素数 Else Label2.Caption=n&不是素数不是素数 End IfEnd Sub例例4.10 求两个整数的最大公约数、最小公倍数求两个整数的最大公约数、最小公倍数Dim n%,m%,nm%,r%m=Val(InputBox(m=)n=Val(InputBox(n=)nm=n*mIf mn Then t=m:m=n:n=tr=m mod nDo While(r 0)m=n n=r r=m mod nLoopPrint 最大公约数最大公约数=,n Print最小公倍数最小公倍数=,nm/n算法流程图算法流程图4.4循环结构循环结构4.4.4循环的嵌套循环的嵌套多重循环结构多重循环结构如果在如果在一个循环内一个循环内完整完整地包含地包含另一个循环结构另一个循环结构,则称,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。嵌套一层称为二重循环,嵌套二层称为三重循环。上上面面介介绍绍的的几几种种循循环环控控制制结结构构可可以以相相互互嵌嵌套套,下下面面是是几种常见的二重嵌套形式:几种常见的二重嵌套形式:4.4循环结构循环结构(1)ForI=.ForJ=.NextJ.NextI(2)ForI=.DoWhile/Until.Loop.NextI(3)DoWhile.ForJ=.NextJ.Loop(4)DoWhile/Until.DoWhile/Until.Loop.Loop4.4循环结构循环结构例如例如:打印九九乘法表打印九九乘法表.Fori=1To9Forj=1To9se=i&j&=&i*jPicture1.PrintTab(j-1)*9+1);se;NextjPicture1.PrintNexti4.4循环结构循环结构Fori=1To10Forj=1To20NextjNextiFori=1To10NextiFori=1To10Nexti对于循环的嵌套,要注意以下事项:对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,也不能从外循环转向内不能从循环体外转向循环体内,也不能从外循环转向内循环循环.下面是正确的嵌套下面是正确的嵌套4.4循环结构循环结构例例4.11:将一张面值为将一张面值为100元的人民币等值换成元的人民币等值换成100张张5元、元、1元元和和0.5元的零钞,要求每种零钞不少于元的零钞,要求每种零钞不少于1张,问有哪几种组合?张,问有哪几种组合?PrivateSubForm_Click()DimX%,Y%,Z%,N%Print5元元1元元0.5元元N=0ForX=1To100ForY=1To100ForZ=1To100IfX+Y+Z=100And5*X+Y+0.5*Z=100ThenPrintX,Y,ZN=N+1EndIfNextZNextYNextXPrint共有共有&N&组合组合DimX%,Y%,Z%,N%Print5元元1元元0.5元元N=0ForX=1To19ForY=1To100-XZ=100-X-YIf5*X+Y+0.5*Z=100ThenPrintX,Y,ZN=N+1EndIfNextYNextXPrint共有共有&N&组合组合例例5-8 求求100-200之间的所有素数之间的所有素数Private Sub Form_Click()Dim n As Integer,k As Integer,i As Integer For n=101 To 199 Step 2 b=True For i=2 To Int(Sqr(n)If n Mod i=0 Then b=False:Exit For Next i If b Then Print nNext n End SubFori=1To10Forj=1To20NextiNextjFori=1To10Fori=1To20NextiNexti下面是不正确的嵌套下面是不正确的嵌套4.4循环结构循环结构对于循环的嵌套,要注意以下事项:对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,也不能从外不能从循环体外转向循环体内,也不能从外循环转向内循环循环转向内循环.4.4循环结构循环结构4.4.5几种循环语句比较几种循环语句比较4.4循环结构循环结构4.4.6循环结构与选择结构的嵌套循环结构与选择结构的嵌套在循环结构中可以在循环结构中可以完整嵌套选择结构完整嵌套选择结构即整个选择结构即整个选择结构都属于循环体。在选择结构中嵌套循环结构时,则要求都属于循环体。在选择结构中嵌套循环结构时,则要求整整个循环结构必须完整地嵌套个循环结构必须完整地嵌套在一个分支内,一个循环结构在一个分支内,一个循环结构不允许出现在两个或两个以上的分支内。不允许出现在两个或两个以上的分支内。4.4循环结构循环结构(1)For I=IF Then End IF Next I(6)IF Then For I=End IF Next I(5)Select Case For I=Case Case Next I End Select(3)For I=IF Then Next I End IF(2)IF The