收藏 分享(赏)

4+掌握VB.NET中的程序流程控制语句.ppt

上传人:kpmy5893 文档编号:4230524 上传时间:2018-12-17 格式:PPT 页数:62 大小:539KB
下载 相关 举报
4+掌握VB.NET中的程序流程控制语句.ppt_第1页
第1页 / 共62页
4+掌握VB.NET中的程序流程控制语句.ppt_第2页
第2页 / 共62页
4+掌握VB.NET中的程序流程控制语句.ppt_第3页
第3页 / 共62页
4+掌握VB.NET中的程序流程控制语句.ppt_第4页
第4页 / 共62页
4+掌握VB.NET中的程序流程控制语句.ppt_第5页
第5页 / 共62页
点击查看更多>>
资源描述

1、第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语

2、句就属于声明语句。 可执行语句用于启动某种操作。例如,赋值语句就属于可执行语句。本章要讲述的各种分支、循环语句也都属于可执行语句。,语句的书写,VB.NET中的语句书写非常灵活,可以一行放入多条语句,语句之间用冒号(:)分隔。 例如 Dim str As String = “Hello World“ : MsgBox(str),当语句太长时,也可以一条语句跨多行书写。此时需要使用行继续符在下一行继续该语句。 行继续符依次包含一个空格、一个下划线字符(_)和一个回车符。 例如 1 Dim nameVar As String 2 nameVar=“John“ 3 MsgBox(“Hello“&na

3、meVar& _ 4 “.How are you?“),注释语句,注释行以撇号()开头或以REM开头,后跟一个空格。 注释可以添加在代码中的任意位置,但不能添加在字符串中。 若要将注释追加到某语句,可以在该语句后插入一个撇号或REM,后面添加注释。 注释还可以位于单独的行中。,例子,1 这是单独一行的注释 2 REM 这是另一行单独的注释 3 x += a(i) * b(i) 计算两个数的乘积 4 MsgBox(statusMessage) REM 显示当前的状态信息,语句的自动语法检查,在Visual Studio.NET IDE中书写语句时,IDE会对语句的语法进行检查。 如果语句书写完毕

4、后,出现绿色的下滑波浪线,则说明该语句存在语法错误。 将鼠标悬停在带有下滑波浪线的语句上,即可查看到错误信息。如果不更正,代码将无法正确的编译。,4.2 什么是控制结构,在20世纪60年代,就出现了结构化程序设计的概念,指出程序的编写应采用结构化方法。 1966年提出了任何计算机程序都可以由3种基本结构组成。这3种基本结构是顺序结构、选择结构和循环结构。,顺序结构,选择结构,循环结构,当型循环 直到型循环,从图中可以看出,这3种基本结构的基本特点是每一种结构都只有一个入口和一个出口。 任何一个算法都可以用这3种基本结构实现,任何复杂的程序都可以分解为由3种基本结构组成。,4.2.1 顺序结构,

5、顺序结构是最简单的控制结构,按照语句书写的顺序一句一句的执行。 典型的例子是交换两个变量x和y的值。,交换两个变量的值,1 Dim x As Integer = 10 2 Dim y As Integer = 20 3 Dim temp As Integer 4 temp = x 此时temp中保存x的值10 5 x =y x值变为y的值20 6 y = temp y值变为temp中保存的x的值10,交换完成,4.2.2 选择结构,考虑这样一个应用程序“SayHello” 当用户打开应用程序后,向用户显示问候信息,根据时间不同,问候信息也应该不同。因此程序需要根据当前时间判断是上午、下午还是晚

6、上,分别给出不同的问候信息。 在这个应用中,当前时间应该作为判断条件,根据不同的判断结果,显示不同的信息,这是一个典型的选择结构。,If语句,(1)基本形式 If语句的语法格式如下。 If 表达式 Then 语句块1 Else 语句块2 End If,示例1:使用If语句判断变量,If ab Then MsgBox(“a大于b“)这句代码用于判断a和b两个变量值的大小,由于执行语句只有一句,因此写在了同一行上,并省略了End If。,扩展,1 If ab Then 2 MsgBox(“a大于b“) 3 Else 4 MsgBox(“a小于等于“) 5 End If增加了第3行的Else子句,当

7、a不大于b时,也显示相应信息。,示例2:使用If语句来实现SayHello应用程序,Step1:创建应用程序工程。单击菜单栏中的【文件】【新建项目】命令,打开【新建项目】窗口。在该窗口的【模板】列表框中,选择【Windows窗体应用程序】,并在【名称】文本框中输入“SayHello”。,Step2:进行窗体界面设计。向窗体中添加两个Label控件,并将其Font属性设置为Arial,四号,Name属性分别设置为lblTime和lblInfo;窗体的Text属性设为“SayHello”,Name属性设置为frmSayHello。,Step3:代码编写。 下面是窗体的Load事件过程。 1 Pri

8、vate Sub frmSayHello_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load 2 Dim h As Integer = Now( ).Hour 3 lblTime.Text = Now( ).ToString( ) 4 If h 12) And (h = 18 Then lblInfo.Text = “Good Evening,Cindy!“ 7 End Sub,运行结果,代码效率分析,上例中我们使用3个If语句并列实现了时间判断。这3个If语句是要顺序执行的。

9、考虑这样一种情况:当前时间为2008-8-7 9:12:11,此时变量h的值应为9。第1个If语句的判断条件h=12为真,显示“Good morning,Cindy!”的信息;之后第2个和第3个If语句的判断条件均为假,程序执行完毕。,实际上,在这种情况下,第2个和第3个If语句的判断条件已经没有必要再继续进行比较了。使用并列的3个If语句虽然也可以实现我们要求的功能,但是效率上并不好。,使用ElseIf关键字,1 Dim h As Integer = Now( ).Hour 2 lblTime.Text = Now( ).ToString( ) 3 If h 12) And (h = 18

10、Then 8 lblInfo.Text = “Good Evening,Cindy!“ 9 End If,If-Then-Else语句中使用ElseIf语句的基本语法格式,If 表达式1 Then语句块1 ElseIf 表达式2 Then语句块2 ElseIf 表达式3 Then语句块3 Else 语句块n End If,Select语句,语法格式如下。 Select Case 表达式Case 情况列表1语句块1Case 情况列表2语句块2 Case Else 语句块n End Select,Select语句首先计算表达式的值,之后与Case语句指定的情况列表进行比较。 情况列表中可以包含一个

11、或多个值、某个范围的值或值和比较运算符的组合。 如果匹配,则执行其后的语句块,以此类推。 如果均不匹配,则执行Case Else后面的语句块。 Case语句可以有一条或者多条,而且Case Else语句可以省略。,示例1:使用Select语句实现SayHello应用程序,1 lblTime.Text = Now( ).ToString( ) 2 Select Case Now( ).Hour 3 Case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12 4 lblInfo.Text = “Good morning,Cindy!“ 5 Case 13, 14, 1

12、5, 16, 17,18 6 lblInfo.Text = “Good afternoon,Cindy!“ 7 Case Else 8 lblInfo.Text = “Good evening,Cindy!“ 9 End Select,示例2:使用to关键字表示连续范围,1 lblTime.Text = Now( ).ToString( ) 2 Select Case Now( ).Hour 3 Case Is = 12 4 lblInfo.Text = “Good morning,Cindy!“ 5 Case 13 to 18 6 lblInfo.Text = “Good afternoon

13、,Cindy!“ 7 Case Else 8 lblInfo.Text = “Good evening,Cindy!“ 9 End Select,4.2.3 循环结构,在某些应用中,可能需要重复执行某一个语句块。例如,一个用户登录程序,用户输入户名和密码后需要进行检查,3次错误后锁定该用户。在这个应用中,有可能需要重复检查用户输入,因此应当将检查用户输入的语句块作为循环体,这是一个典型的循环结构。,4种循环语句,For-Next语句用于计数循环。 While语句用于当型循环。 Do-Loop语句用于直到型循环。 For Each语句用于集合或数组元素循环。,For语句,For语句的语法格式Fo

14、r 循环变量 = 初值 To 终值 Step 步长循环体Next 循环变量考虑这样一个应用程序“ComputeSum”:用户输入一个数之后,计算从1开始叠加到该数的总和。这是一个典型的计数循环的结构,可以使用For语句来实现。,示例1:使用For语句实现ComputeSum应用程序,Step1:创建应用程序工程。单击菜单栏中的【文件】【新建项目】命令,打开【新建项目】窗口。在该窗口的【模板】列表框中,选择【Windows窗体应用程序】,并在【名称】文本框中输入“ComputeSum”。,Step2:进行窗体界面的设计,TextBox控件,该控件用于接收用户输入或者将计算结果显示给用户,其Tex

15、t属性就是文本框中的内容。,Step3:编写代码。在【计算】按钮上双击鼠标,打开代码窗口。由于需要单击按钮后开始计算并显示结果,所以代码应该写在按钮控件的单击事件中。,1 Dim n As Integer = CInt(txbInputNum.Text) 2 Dim sum As Long = 0 3 Dim i As Integer 4 For i = 1 To n 5 sum += i 6 Next 7 txbSum.Text = sum.ToString( ),思考题:如果需要计算1到n之间偶数的累加和,代码应该如何修改呢,1 Dim n As Integer = CInt(txbInp

16、utNum.Text) 2 Dim sum As Long = 0 3 Dim i As Integer 4 For i = 2 To n step 2 5 sum += i 6 Next 7 txbSum.Text = sum.ToString( ),循环变量初值从2开始,循环步长为2,While语句,考虑这样一个应用程序“Calculate Pai”:在某些需要计算精确的情况下,需要使用圆周率的值。可以通过下面的公式来计算得到圆周率的近似值。/4 = 1 1/3 + 1/5 1/7 + +1/n 在该应用中,实际是求一个数列的前n项累加和,通常要求累加至最后一项的值小于10-6。这种情形下

17、,n的值在开始时无法确定,只能在逐渐累加的过程中进行判断,也就是说,循环次数无法确定,循环是通过1/n是否小于10-6来确定的,因此For语句并不适用。因此,VB.NET提供了While语句来实现通过某个条件进行循环。,基本形式,While 循环条件语句块 End While 其中,循环条件为关系或逻辑表达式,值为Boolean类型。当循环条件为真时,循环执行语句块;当循环条件为假时,退出循环。因此While语句属于当型循环,意思是当循环条件为真时执行循环。,示例1:使用While语句求大于100的第一个3的幂次,1 Dim intX As Integer = 3 2 While intX=1

18、00 3 intX*=3 4 End While,示例2:While循环条件如果为假则直接结束循环而不执行循环体,1 Dim intX As Integer = 1 2 Dim intY As Integer = 1 3 While intXintY 4 intX+=intY 5 End While,“死循环”,如果在循环体执行过程中,没有使得循环条件变为假的操作,循环体一直循环执行,我们称之为无限循环,也称为死循环。下面是一个最简单的死循环。1 While True2 循环体3 End While,示例3:使用While语句来完成Calculate Pai应用程序,Step1:创建应用程序工

19、程。单击菜单栏中的【文件】【新建项目】命令,打开【新建项目】窗口。在该窗口的【模板】列表框中,选择【Windows窗体应用程序】,并在【名称】文本框中输入“Calculate Pai”。,Step2:进行窗体界面设计,Step3:编写代码。在窗体上双击鼠标,打开代码窗口,编写窗体的Load事件过程。,1 Private Sub frmCalPai_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 2 Dim dblDenominator As Double = 1 用于存放项

20、的分母 3 Dim dblTerm As Double = 1 用于存放当前项的值 4 Dim intSign As Integer = 1 用于表示当前项的符号 5 Dim Pai As Double = 0 用于存放累加和结果 6 7 While Math.Abs(dblTerm) = 0.0000001 8 Pai += dblTerm 累加 9 dblDenominator += 2 第n项的分母是第n-1项的分母加上2 10 intSign = -intSign 改变符号 11 dblTerm = intSign / dblDenominator 生成下一项 12 End While

21、 13 Pai = Pai * 4 14 txbPai.Text = Pai.ToString() 在文本框中显示计算结果 15 End Sub,累加,同时生成下一项,For循环与While循环的比较,在通常情况下,如果循环次数确定,一般选用For循环。 如果循环次数未知但有条件来保证循环过程是有限次数的,选用While循环。 实际上,在循环次数确定的情况下同样可以选择使用While语句。例如,“ComputeSum”应用程序中,我们使用For循环来计算从1到n的累加,同样使用While语句也可以实现。,1 Dim n As Integer = CInt(txbInputNum.Text) 2

22、 Dim sum As Long = 0 3 Dim i As Integer =1 4 While (i=n) 5 Sum+=i 6 i+=1 7 End While,Do-Loop语句,基本形式:Do While | Until 循环条件循环体Loop 其中,While和Until是可选的。 使用While时,当后面的条件满足则执行循环体。 使用Until时,当后面的条件满足就退出循环体。 无论使用While还是Until,都是先测试循环条件是否满足,再决定是否执行循环体,示例1:使用Do-While-Loop语句实现1到n的累加,1 Dim n As Integer = CInt(txb

23、InputNum.Text) 2 Dim sum As Long = 0 3 Dim i As Integer = 1 4 Do While i=n 5 Sum+=i 6 i+=1 7 Loop,示例2:使用Do-Until-Loop语句实现1到n的累加,1 Dim n As Integer = CInt(txbInputNum.Text) 2 Dim sum As Long = 0 3 Dim i As Integer = 1 4 Do Until in 5 Sum+=i 6 i+=1 7 Loop,Do-Loop语句的另一种形式,Do-Loop语句还有另外一种写法 Do 循环体 Loop

24、While | Until 循环条件 Loop后的While和Until与上一种写法含义相同,即使用While时,当后面的条件满足则执行循环体;使用Until时,当后面的条件满足就退出循环体。区别在于,这种写法先执行循环体再测试循环条件是否满足。因此,这种写法中循环体至少会被执行一次。,示例3:使用Do-Loop-While语句实现1到n的累加,1 Dim n As Integer = CInt(txbInputNum.Text) 2 Dim sum As Long = 0 3 Dim i As Integer = 1 4 Do 5 Sum+=i 6 i+=1 7 Loop While i=n

25、,示例4:使用Do-Loop-Until语句实现1到n的累加,1 Dim n As Integer = CInt(txbInputNum.Text) 2 Dim sum As Long = 0 3 Dim i As Integer = 1 4 Do 5 Sum+=i 6 i+=1 7 Loop Until in 这四段代码都是等价的。,跳出循环控制,前面的例子中,都是循环变量值超出终值范围或者循环条件不满足,才终止循环。除此之外,还可以在循环体中使用Exit语句直接跳出循环控制结构。 根据使用的循环语句的不同,Exit语句可以有以下几种形式。 Exit For。 Exit While。 Exi

26、t Do。,示例1:求2+4+6+8+n100成立的最大的n值,1 TestExit 2 Module Module1 3 4 Sub Main() 5 Dim i As Integer = 2 6 Dim Sum As Integer = 0 7 While True 8 Sum += i 9 If Sum = 100 ThenExit While Else 12 i += 2 13 End If 14 End While 15 MsgBox(i) 16 End Sub 17 18 End Module,死循环,跳出当前循环的条件判断,示例2:判断某个数是不是素数,4 Sub Main( )

27、 5 Dim N As Integer 6 Dim i As Integer = 2 7 Dim IsPrime As Boolean = True 8 N = CInt(InputBox(“请输入一个整数“)For i = 2 To N - 1If N i = 0 Then 11 IsPrime = False 12 Exit For 13 End If 14 Next 15 16 If IsPrime Then 17 MsgBox(“是素数!“) 18 Else 19 MsgBox(“不是素数!“) 20 End If 21 End Sub,跳出当前循环的条件判断,4.3 语句嵌套,将一个语句放在另一个语句内部称为嵌套。选择结构语句和循环结构语句均可嵌套使用,可以相同语句嵌套使用,也可以不同语句嵌套使用。,双重For循环,For 循环变量1 = 初值1 To 终值1 Step 步长1 For 循环变量2 = 初值2 To 终值2 Step 步长2循环体Next 循环变量2 Next 循环变量1,注意,使用语句嵌套的时候,必须是完全嵌套,像下面这样的交叉嵌套是不允许的。 While 条件2If 条件2 then End WhileEnd If,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 说明文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报