4+掌握VB.NET中的程序流程控制语句.ppt_第1页
4+掌握VB.NET中的程序流程控制语句.ppt_第2页
4+掌握VB.NET中的程序流程控制语句.ppt_第3页
4+掌握VB.NET中的程序流程控制语句.ppt_第4页
4+掌握VB.NET中的程序流程控制语句.ppt_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

第4章掌握VB.NET中的程序流程控制语句,本章我们开始真正学习如何编写程序代码。VB.NET程序的基本组成元素是语句。我们编写程序的目的是要实现一定的功能。如何有效地将各种语句组合起来,以达到我们的目的,是本章的学习重点。,章节内容,4.1什么是语句4.2什么是控制结构4.2.1顺序结构4.2.2选择结构4.2.3循环结构4.3语句嵌套,4.1什么是语句,VB.NET中的语句是可包含关键字、运算符、变量、常数和表达式的完整指令,可以分为声明语句和可执行语句两种。声明语句用于命名变量、常数或过程,并指定数据类型。例如,用于声明变量的Dim语句和声明常量的Const语句就属于声明语句。可执行语句用于启动某种操作。例如,赋值语句就属于可执行语句。本章要讲述的各种分支、循环语句也都属于可执行语句。,语句的书写,VB.NET中的语句书写非常灵活,可以一行放入多条语句,语句之间用冒号(:)分隔。例如DimstrAsString=HelloWorld:MsgBox(str),当语句太长时,也可以一条语句跨多行书写。此时需要使用行继续符在下一行继续该语句。行继续符依次包含一个空格、一个下划线字符(_)和一个回车符。例如1DimnameVarAsString2nameVar=John3MsgBox(Hello&nameVar&_4.Howareyou?),注释语句,注释行以撇号()开头或以REM开头,后跟一个空格。注释可以添加在代码中的任意位置,但不能添加在字符串中。若要将注释追加到某语句,可以在该语句后插入一个撇号或REM,后面添加注释。注释还可以位于单独的行中。,例子,1这是单独一行的注释2REM这是另一行单独的注释3x+=a(i)*b(i)计算两个数的乘积4MsgBox(statusMessage)REM显示当前的状态信息,语句的自动语法检查,在VisualStudio.NETIDE中书写语句时,IDE会对语句的语法进行检查。如果语句书写完毕后,出现绿色的下滑波浪线,则说明该语句存在语法错误。将鼠标悬停在带有下滑波浪线的语句上,即可查看到错误信息。如果不更正,代码将无法正确的编译。,4.2什么是控制结构,在20世纪60年代,就出现了结构化程序设计的概念,指出程序的编写应采用结构化方法。1966年提出了任何计算机程序都可以由3种基本结构组成。这3种基本结构是顺序结构、选择结构和循环结构。,顺序结构,选择结构,循环结构,当型循环直到型循环,从图中可以看出,这3种基本结构的基本特点是每一种结构都只有一个入口和一个出口。任何一个算法都可以用这3种基本结构实现,任何复杂的程序都可以分解为由3种基本结构组成。,4.2.1顺序结构,顺序结构是最简单的控制结构,按照语句书写的顺序一句一句的执行。典型的例子是交换两个变量x和y的值。,交换两个变量的值,1DimxAsInteger=102DimyAsInteger=203DimtempAsInteger4temp=x此时temp中保存x的值105x=yx值变为y的值206y=tempy值变为temp中保存的x的值10,交换完成,4.2.2选择结构,考虑这样一个应用程序“SayHello”当用户打开应用程序后,向用户显示问候信息,根据时间不同,问候信息也应该不同。因此程序需要根据当前时间判断是上午、下午还是晚上,分别给出不同的问候信息。在这个应用中,当前时间应该作为判断条件,根据不同的判断结果,显示不同的信息,这是一个典型的选择结构。,If语句,(1)基本形式If语句的语法格式如下。If表达式Then语句块1Else语句块2EndIf,示例1:使用If语句判断变量,IfabThenMsgBox(a大于b)这句代码用于判断a和b两个变量值的大小,由于执行语句只有一句,因此写在了同一行上,并省略了EndIf。,扩展,1IfabThen2MsgBox(a大于b)3Else4MsgBox(a小于等于)5EndIf增加了第3行的Else子句,当a不大于b时,也显示相应信息。,示例2:使用If语句来实现SayHello应用程序,Step1:创建应用程序工程。单击菜单栏中的【文件】【新建项目】命令,打开【新建项目】窗口。在该窗口的【模板】列表框中,选择【Windows窗体应用程序】,并在【名称】文本框中输入“SayHello”。,Step2:进行窗体界面设计。向窗体中添加两个Label控件,并将其Font属性设置为Arial,四号,Name属性分别设置为lblTime和lblInfo;窗体的Text属性设为“SayHello”,Name属性设置为frmSayHello。,Step3:代码编写。下面是窗体的Load事件过程。1PrivateSubfrmSayHello_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load2DimhAsInteger=Now().Hour3lblTime.Text=Now().ToString()4Ifh12)And(h=18ThenlblInfo.Text=GoodEvening,Cindy!7EndSub,运行结果,代码效率分析,上例中我们使用3个If语句并列实现了时间判断。这3个If语句是要顺序执行的。考虑这样一种情况:当前时间为2008-8-79:12:11,此时变量h的值应为9。第1个If语句的判断条件h=12为真,显示“Goodmorning,Cindy!”的信息;之后第2个和第3个If语句的判断条件均为假,程序执行完毕。,实际上,在这种情况下,第2个和第3个If语句的判断条件已经没有必要再继续进行比较了。使用并列的3个If语句虽然也可以实现我们要求的功能,但是效率上并不好。,使用ElseIf关键字,1DimhAsInteger=Now().Hour2lblTime.Text=Now().ToString()3Ifh12)And(h=18Then8lblInfo.Text=GoodEvening,Cindy!9EndIf,If-Then-Else语句中使用ElseIf语句的基本语法格式,If表达式1Then语句块1ElseIf表达式2Then语句块2ElseIf表达式3Then语句块3Else语句块nEndIf,Select语句,语法格式如下。SelectCase表达式Case情况列表1语句块1Case情况列表2语句块2CaseElse语句块nEndSelect,Select语句首先计算表达式的值,之后与Case语句指定的情况列表进行比较。情况列表中可以包含一个或多个值、某个范围的值或值和比较运算符的组合。如果匹配,则执行其后的语句块,以此类推。如果均不匹配,则执行CaseElse后面的语句块。Case语句可以有一条或者多条,而且CaseElse语句可以省略。,示例1:使用Select语句实现SayHello应用程序,1lblTime.Text=Now().ToString()2SelectCaseNow().Hour3Case0,1,2,3,4,5,6,7,8,9,10,11,124lblInfo.Text=Goodmorning,Cindy!5Case13,14,15,16,17,186lblInfo.Text=Goodafternoon,Cindy!7CaseElse8lblInfo.Text=Goodevening,Cindy!9EndSelect,示例2:使用to关键字表示连续范围,1lblTime.Text=Now().ToString()2SelectCaseNow().Hour3CaseIs=124lblInfo.Text=Goodmorning,Cindy!5Case13to186lblInfo.Text=Goodafternoon,Cindy!7CaseElse8lblInfo.Text=Goodevening,Cindy!9EndSelect,4.2.3循环结构,在某些应用中,可能需要重复执行某一个语句块。例如,一个用户登录程序,用户输入户名和密码后需要进行检查,3次错误后锁定该用户。在这个应用中,有可能需要重复检查用户输入,因此应当将检查用户输入的语句块作为循环体,这是一个典型的循环结构。,4种循环语句,For-Next语句用于计数循环。While语句用于当型循环。Do-Loop语句用于直到型循环。ForEach语句用于集合或数组元素循环。,For语句,For语句的语法格式For循环变量=初值To终值Step步长循环体Next循环变量考虑这样一个应用程序“ComputeSum”:用户输入一个数之后,计算从1开始叠加到该数的总和。这是一个典型的计数循环的结构,可以使用For语句来实现。,示例1:使用For语句实现ComputeSum应用程序,Step1:创建应用程序工程。单击菜单栏中的【文件】【新建项目】命令,打开【新建项目】窗口。在该窗口的【模板】列表框中,选择【Windows窗体应用程序】,并在【名称】文本框中输入“ComputeSum”。,Step2:进行窗体界面的设计,TextBox控件,该控件用于接收用户输入或者将计算结果显示给用户,其Text属性就是文本框中的内容。,Step3:编写代码。在【计算】按钮上双击鼠标,打开代码窗口。由于需要单击按钮后开始计算并显示结果,所以代码应该写在按钮控件的单击事件中。,1DimnAsInteger=CInt(txbInputNum.Text)2DimsumAsLong=03DimiAsInteger4Fori=1Ton5sum+=i6Next7txbSum.Text=sum.ToString(),思考题:如果需要计算1到n之间偶数的累加和,代码应该如何修改呢,1DimnAsInteger=CInt(txbInputNum.Text)2DimsumAsLong=03DimiAsInteger4Fori=2Tonstep25sum+=i6Next7txbSum.Text=sum.ToString(),循环变量初值从2开始,循环步长为2,While语句,考虑这样一个应用程序“CalculatePai”:在某些需要计算精确的情况下,需要使用圆周率的值。可以通过下面的公式来计算得到圆周率的近似值。/4=11/3+1/51/7+1/n在该应用中,实际是求一个数列的前n项累加和,通常要求累加至最后一项的值小于10-6。这种情形下,n的值在开始时无法确定,只能在逐渐累加的过程中进行判断,也就是说,循环次数无法确定,循环是通过1/n是否小于10-6来确定的,因此For语句并不适用。因此,VB.NET提供了While语句来实现通过某个条件进行循环。,基本形式,While循环条件语句块EndWhile其中,循环条件为关系或逻辑表达式,值为Boolean类型。当循环条件为真时,循环执行语句块;当循环条件为假时,退出循环。因此While语句属于当型循环,意思是当循环条件为真时执行循环。,示例1:使用While语句求大于100的第一个3的幂次,1DimintXAsInteger=32WhileintX=0.00000018Pai+=dblTerm累加9dblDenominator+=2第n项的分母是第n-1项的分母加上210intSign=-intSign改变符号11dblTerm=intSign/dblDenominator生成下一项12EndWhile13Pai=Pai*414txbPai.Text=Pai.ToString()在文本框中显示计算结果15EndSub,累加,同时生成下一项,For循环与While循环的比较,在通常情况下,如果循环次数确定,一般选用For循环。如果循环次数未知但有条件来保证循环过程是有限次数的,选用While循环。实际上,在循环次数确定的情况下同样可以选择使用While语句。例如,“ComputeSum”应用程序中,我们使用For循环来计算从1到n的累加,同样使用While语句也可以实现。,1DimnAsInteger=CInt(txbInputNum.Text)2DimsumAsLong=03DimiAsInteger=14While(i=n)5Sum+=i6i+=17EndWhile,Do-Loop语句,基本形式:DoWhile|Until循环条件循环体Loop其中,While和Until是可选的。使用While时,当后面的条件满足则执行循环体。使用Until时,当后面的条件满足就退出循环体。无论使用While还是Until,都是先测试循环条件是否满足,再决定是否执行循环体,示例1:使用Do-While-Loop语句实现1到n的累加,1DimnAsInteger=CInt(txbInputNum.Text)2DimsumAsLong=03DimiAsInteger=14DoWhilein5Sum+=i6i+=17Loop,Do-Loop语句的另一种形式,Do-Loop语句还有另外一种写法Do循环体LoopWhile|Until循环条件Loop后的While和Until与上一种写法含义相同,即使用While时,当后面的条件满足则执行循环体;使用Until时,当后面的条件满足就退出循环体。区别在于,这种写法先执行循环体再测试循环条件是否满足。因此,这种写法中循环体至少会被执行一次。,示例3:使用Do-Loop-While语句实现1到n的累加,1DimnAsInteger=CInt(txbInputNum.Text)2DimsumAsLong=03DimiAsInteger=14Do5Sum+=i6i+=17LoopWhilein这四段代码都是等价的。,跳出循环控制,前面的例子中,都是循环变量值超出终值范围或者循环条件不满足,才终止循环。除此之外,还可以在循环体中使用

温馨提示

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

最新文档

评论

0/150

提交评论