




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 程序的基本结构程序开发的两步程序基本控制结构(三种)3.1 顺序结构 顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行。顺序结构就是各语句按出现的先后次序执行 顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三部曲的程序就是顺序结构,例如计算圆的面积。6 以下语句形式很常用: dim sum% , x% sum=100 : x=5 sum = sum + x 执行后,sum的值为多少? dim n% n=7 n = n + 1 执行后,n的值为多少?73.1.2 用户交互函数 为了便于应用程序与用户之间进行信息交互,完成信息的输入和输出,用户可采
2、用文本框、标签等控件来实现,也可用VB.NET提供的InputBox、MsgBox来实现。 InputBox的功能是等待并提示用户为程序运行输入指定的数据,简称“输入对话框”。 MsgBox的功能是进行提示,用以确认某种程序的操作,简称“消息框”。 9例 创建一个输入对话框。如下图所示:Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) _Handles Me.Click Dim myvalue As Object myvalue = InputBox(请输入数值,数值在13之间!, 输入提示
3、, 1) End Sub102. MsgBox(消息框) MsgBox函数用于在屏幕上的消息框中显示简短消息,并等待用户单击按钮,然后返回一个整数型的数值,让应用程序了解用户单击的是哪一个按钮。语法格式: MsgBox(Prompt,Buttons ,Title)功能:在屏幕上显示一个消息框,根据选择确定其后的操作。11 当用户单击消息框上的某按钮时,MsgBox函数将返回一个常量来确认该按钮被按动了,下表是按钮和常量之间的对应关系。通过对返回值的判断,就可以确定消息框中到底是哪个按钮被按动,从而确定程序下一步的运行方式。符号常量值用户单击的按钮vbOK1“确定”vbCancel2“取消”vb
4、Abort3“中止”vbRetry4“重试”vbIgnore5“忽略”vbYes6“是”vbNo7“否”表 Msgbox函数的可能返回值12例 在Form1_Click()事件过程中定义一个消息框,代码如下:Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Click Dim s As Integer s = MsgBox(用户名必须包含数字和字母, 5 + 48, 警告) If s = vbCancel Then End 若用户单击取消,则程序退出End Sub单
5、击窗体,将弹出消息框,如图3-5所示。3.2 选择结构对于要先做判断再选择的问题就要使用分支结构,如下面例子, 分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。单分支结构多行形式 If 表达式 Then 语句块 End If单行形式 If 表达式 Then 语句块表达式语句块TF 当表达式的值为True,执行Then后面的语句块,否则不做任何操作。例:将保存在变量a和 b中的整数按升序排列。(即a的值一定不大于b的值)分析:ab时,两者的值交换 If b a Then t = a a = b b = t End If 单分支结构举例也可改写成行IF语句,如下所示,
6、If b a Then t = a : a = b: b = t123双分支结构多行形式 If 表达式 Then 语句块1 Else 语句块2 End If 单行形式If 表达式 Then 语句块1 Else 语句块2当表达式的值为True时,执行Then后面的语句块1,否则执行Else后面的语句块2表达式语句块1语句块2TFIfThenElse例: 计算当 0 x10时,y=x,否则 y=100 ,正确的语句是_。If 0 x10 then y=x else y=100If 0 x and x10 then y=x else y=100 If 0 x and x10 then y=x els
7、e y=100If 0 x or x= A And UCase(ch) = 0 And ch a Then c = a: a = b: b = cEnd IfIf b c Then x = b ElseIf a c Then x = c Else x = aEnd IfMsgbox( x=“ & x)End SubPrivate Sub Form1_Click()Dim a, b, c, d As SingleDim x As Singlea = 100b = 20c = 1000 x=100If语句的嵌套是指If或Else后面的语句块中又包含If语句. If 表达式1 Then If 表达式
8、2 Then End If End IfIf语句的嵌套 本章目录将前面的例子改用 Select Case 语句实现: Select Case ch Case a To z, A To Z MsgBox (ch + 是字母字符) Case 0 To 9 MsgBox (ch & 是数字字符) Case Else MsgBox (ch + 是其他字符) End SelectSelect语句举例 Dim Number% Number = Val(InputBox(输入整数) Select Case Number Case 1 To 5 范围为1,5 Msgbox( Between 1 and 5“)
9、 Case 6, 7, 8 Msgbox (Between 6 and 8“) Case 9, 10 Msgbox (Greater than 8“) Case Else Msgbox (Not between 1 and 10“) End SelectSelect语句举例格式: IIf(表达式,TruePart,FalsePart)IIf函数是If Then Else 结构的简洁表示例如,将x,y中大的数,放入Tmax变量中:Tmax = IIf(x y,x,y) 该语句与如下语句等价 :If x y Then Tmax = x Else Tmax = y IIF函数3.3 循环结构问题1:
10、 求 1100之间的奇数之和 即计算 1 + 3 + 5 + 7 + 9 + 。 + 97 + 99 变量 i : 从1 到 100 之间的奇数 和: 变量sum 最初设置sum=0 第一次:i的初值为1 sum=sum+i sum=0+1=1 第二次 :i=i+2 执行后 i=3 sum=sum+i 执行后 sum=4 第三次 :i=i+2 执行后 i=5 sum=sum+i 执行后 sum=9 。 直至i=终值当步长为1时,可省略Step 步长 。 0 初值终值 不执行循环体=终值, 则循环 若 初值 终值通过Exit For循环变量= 初值循环变量= 终值循环体循环变量 =循环变量 +步
11、长TFExit ForFOR循环的执行流程循环终止条件:循环变量 = 终值循环体循环变量 =循环变量 +步长TFExit ForFOR语句的循环次数如何计算? For i=1 to 3 step 1 循环次数: ( (3-1)/1 )+1For i=1 to 5 step 2 循环次数: ( (5-1)/2)+1For i=1 to 6 step 2 循环次数: int( (6-1)/2)+1For i=6 to 1 step -2 (注意:步长为负数) 循环次数: int( (1-6)/(-2) )+1计算下列循环语句的次数(1)For i= 5.5 to 3.5 step -0.5Int
12、( ( 3.5-5.5)/(-0.5)+1 =5(2) For i= 3.5 to 5.5 step -0.5 不执行循环体(3) For i= -3 to 20 step 0步长为0,死循环循环体内需要有 exit for 语句才可跳出该循环39例4.8 下列程序结果是( )? Private Sub Form1_Click(ByVal sender As _ Object, ByVal e As System.EventArgs) _ Handles Me.Click Dim i As Integer, sum As Long Dim t1#, n t1 = 1 : sum = 0 : n
13、 = 0 For i = 1 To 3 n = n + 1 t1 = t1 * i sum = sum + t1 Next i MsgBox(sum= & sum & n= & n) End Sub注意:跳出循环后,循环控制变量值的问题。例:程序段: Dim i As Integer For i = 2 To 13 Step 3 Msgbox( i) Next i Msgbox( i=“ & i)结果:sum= 9 n= 3结果: i 14 Dim s%, i% s = 1 For i = 1 To 10 s = s * i If i = 2 Then Exit For End If Next
14、 i Msgbox(“s=“ & s & “ i=“ & i)通过Exit For 语句终止循环后,循环控制变量 的值?s=2 i=2FOR循环举例例: 求100以内能被3和7整除的所有正整数之和. 要求打印出符合条件的正整数以及他们的和。 Dim sum%, i% sum = 0 For i = 1 To 100 If (i Mod 3) = 0 And (i Mod 7) = 0 Then sum = sum + i msgbox (i=“ & i) End If Next i msgbox( sum=“ & sum)结果:i= 21i= 42i= 63i= 84sum= 210例:判断x
15、是否是素数?注:素数又称质数。指仅能被1和此整数自身整除的大于或等于2的整数。判别方法是: 对于数x 从 i=2,3,x-1判别x能否被i整除,只要有一个能整除,x就不是素数,否则x是素数。 Dim x , i as integer, flag as boolean x = Val(InputBox(“输入一个大于1,且小于32767的正整数) flag=true For i = 2 To x - 1 If (x Mod i) = 0 Then Msgbox( x & 不是素数 “& x & mod & i & =0“) flag=false Exit For End If Next i If
16、 ? Then Msgbox( x & 是素数“)flag=true另一种判断方法:对执行完循环体后循环变量i的值进行判断3.3.2 DoLoop语句问题: 需统计某班成绩(mark) 大于80 的学生人数(num) num初始值设为0循环条件:mark80 时,num=num+1 但循环次数知道么?循环次数需要根据条件来判断循环次数未知使用 DoLoop语句3.3.2 DOLoop语句DoLoop语句用于循环次数未知的循环结构。格式1: Do While|Until 条件 语句块 Exit Do 语句块Loop格式2: Do 语句块 Exit Do 语句块Loop While|Until 条
17、件 特点:1.先执行后判断,循环体至少执行一次2.循环次数 1特点:1.先判断后执行,循环体可能一次都不执行2.循环次数 0。While条件: 条件结果为True(或 非0)时执行循环体;为False(或0)时结束循环Until条件: 条件结果为True(或 非0)时结束循环体;为False(或0)时执行循环45Dim i ,x as integeri=4x=5DO while i 0 i=i+1 x=x+2Loop Msgbox( “i=“ & I &“ x=“ & x)循环体执行的次数?程序段的执行结果?执行次数:0次结果为: i= 4 x= 5Dim i ,x as integeri=4
18、X=5DO i=i+1 x=x+2Loop while i 0Msgbox( “i=“ & I &“ x=“ & x)执行次数:1次结果为: i= 5 x= 7思考:while位于关键字Do后面和位于关键字loop后面对循环控制的区别 ?46Dim i%,x%i=6x=9DO while i = 7 i=i+1 x=x+2Loop Msgbox( “i=“& i &“ x=“ & x)循环体执行的次数?程序段的执行结果?执行次数:2次 结果为: i= 8 x= 13Dim i%,x%i=6x=9DO i=i+1 x=x+2Loop while i =1次时,while关键字可以写在Do关键字或
19、者Loop关键字 的后面47Dim i% , x%i=6x=9DO while i = 6 i=i+1 x=x+2Loop Msgbox( “i=“ & i &“ x=“ & x)循环体执行的次数?程序段的执行结果?执行次数:1次 结果为: i= 7 x= 11Dim i% , x%i=6x=9DO i=i+1 x=x+2Loop while i =0 n = n + 1 j = j + n * (n + 1)LoopMsgbox(“n=“ & n & “ j=“ & j)循环体执行的次数?程序段的执行结果?执行次数:0次结果为: n=0 j=1Dim j% ,n%j = 1: n = 0Do
20、 n = n + 1 j = j + n * (n + 1)Loop Until n =0Msgbox(“n=“ & n & “ j=“ & j)执行次数:1次结果为: n=1 j=3思考:Until位于关键字Do后面和位于关键字Loop后面对循环控制的区别 ?49Dim i%, x%i=4x=5DO until i 4 i=i+1 x=x+2Loop Msgbox(“i=“ & i & “ x=“ & x)执行次数:1次结果为: i= 5 x= 7Dim i%, x%i=4x=5DO i=i+1 x=x+2Loop until i 4Msgbox( “i=“ & i & “ x=“ & x)
21、执行次数:1次结果为: i= 5 x= 7使用Until 关键字时,循环次数=1次时,Until关键字可以写在Do关键字或者Loop关键字 的后面Do循环举例珠穆朗玛峰高度:8848米例:将厚度为0.5毫米的纸张对折多少次后,其总厚度可超过珠穆朗玛峰的高度?Dim num%, n!n=0.5*10(-3)num=0Do until n 8848 n=2*n num=num+1 LoopMsgbox(“折叠次数为“ & num)能否以毫米做单位?Dim num% , n!n=0.5Do until n8848*103可以,因为n为单精度类型,不会溢出Do循环举例例:用辗转相除法(欧几里德算法),
22、求正整数m和n的最大公约数和最小公倍数最大公约数 算法:1. 对于已知两数,令mn2.令r为m / n 所得余数 (0 r n) 若 r= 0,算法结束;n 即为最大公约数。3. 互换:置 mn,nr,并返回第2步Private Sub Form1_Click(ByVal _ sender As Object, ByVal e As _ System.EventArgs) Handles Me.Click Dim r%, m%, n% m = InputBox(请输入正整数m!) n = InputBox(请输入正整数n!) r = m Mod n Do While (r 0) m = n n
23、 = r r = m Mod n Loop MsgBox(最大公约数= & n) End Sub3.3.3 多重循环 在一个循环体内又包含了另一个完整的循环称为循环的嵌套。 左边的嵌套循环也称为双重循环注意:要避免循环交叉Dim i%, j% Dim n%, m%, k%m = 0: k = 0For i = 1 To 5 k = k + 1 n = 0 For j = 1 To 3 n = n + 1 m = m + 1 Next jNext i123456789101153 For i=1 To 10 For i=1 To 20 Next i Next i For i =1 To 10 F
24、or j=1 To 20 Next j Next i For i =1 To 10 For j=1 To 20 Next i Next j For i =1 To 10 Next i For i =1 To 10 Next i对于循环的嵌套,要注意以下事项:内循环变量与外循环变量不能同名;外循环必须完全包含内循环,不能交叉;不能从循环体外转向循环体内,反之则可以。正确错误错错小技巧:Next后不写循环变量名,可避免循环交叉。3.3.3 多重循环Dim i%, j% Dim n%, m%, k%m = 0: k = 0For i = 1 To 5 k = k + 1 n = 0 For j =
25、1 To 3 n = n + 1 m = m + 1 Next jNext iMsgbox(i= & i)Msgbox(j= & j)Msgbox(k= & k)Msgbox(n= & n)Msgbox(m= & m)123456789101112131415161.外循环(i循环)的循环体中的语句5共执行了多少次?答案:52.内循环(j循环)的循环体中的语句9共执行了多少次?答案:5*33.双重循环结束后,变量 i, j, n, m, k的值分别是多少?答案: i= 6 j=4 k= 5 n=3 m= 154.语句7执行了多少次? 答案: 5次3.3.3 多重循环 问题:当时钟转了1圈时(即
26、12个小时),秒针在这段时间向前走了多少下?每走一下为1秒思考:秒针走满1圈,分针+1;秒针又从头开始走分针走满1圈,时针+1;分针、秒针从头开始走时针走满1圈,即12小时,循环结束Dim i%, j%,k% i为时针,j为分针,k为秒针Dim num%num=0For i = 1 To 12 for j=1 to 60 for k=1 to 60 num=num+1 Next k Next jNext iMsgbox(“num=“ & num)问题:循环结束后,num为多少?多重循环的循环次数等于每一重循环次数的乘积num=43200FOR循环的嵌套举例例:输出矩形的九九乘法表分析:For
27、i = 1 To 9 For j = 1 To 9 ? Next 输出显示Nextij解决此类问题的一般规律是利用双重循环:外循环控制行内循环控制列如此,可写出基本框架:九九表可看作是由字符组成的平面图形。 Private Sub Form1_Click(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Me.Click Dim j As Integer, i As Integer Dim s As String For i = 1 To 9 For j = 1 To 9 s = s & i & x & j & = &
28、 String.Format(0,-6, Str(i * j) Next j s = s & vbCrLf vbCrLf用来控制换行 Next i Label1.Text = s End Sub591. Exit语句 在VB.Net中,有多种形式的Exit语句,用于退出某种控制结构的执行。 Exit的形式如下:Exit For、Exit Do、Exit Sub、Exit Function等。2. End语句 独立的End语句用于结束一个程序的运行,它可以放在任何事件过程中。 在VB.Net中,还有多种形式的End语句,用于结束一个过程或块,在控制语句或过程中经常使用。End语句的多种形式如下:
29、End If、End Select、End With、End Type 、End Sub 、End Function 等,它与对应的语句配对使用。3.3.4 退出和结束语句 603.4综合应用结果是每项累加之和。假设累加之和放在变量ee中 ,其变量类型? 初值? 变量类型:! 初值=0每项写为1/t 分析分母t: 第一项:0!=1 令 t=1 i的初值? 第二项:1 !1 *0! t=1*t t=i*t i=1 第三项:2! 2* 1 ! t=2*t t=i*t i=2 第四项 :3! 3* 2! t=3*t t=i*t i=3 第K项 : (K-1)! (k-1)* t 例:求自然对数e的近似值,要求其误差小于0.00001 。公式: t的数据类型? 变量t 初值:1 结束的判断? 要求其误差小于0.00001, 即 1/t 0.00001时结束循环 do until 1/t = 0.00001 循环体: ee=ee+1/t i=i+1 循环体外
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 那一种温暧为题的中考语文作文
- 矿物加工厂环境保护法规与标准考核试卷
- 消费金融公司激励机制与绩效管理考核试卷
- 批发市场线上线下融合趋势考核试卷
- 书香校园初二语文作文
- 碱性催化剂在化学反应中的应用考核试卷
- 一年级语文试题-(下册)识字3
- 文化机械行业的循环经济与资源利用考核试卷
- 矿物加工技术进展-石墨滑石分离考核试卷
- 厦门高三质检语文作文2021
- 中国轻客行业市场调研分析及投资战略规划报告
- GB/T 20717-2024道路车辆牵引车和挂车之间的电连接器(15芯)24 V15芯型
- 与食品安全相关的组织机构设置,部门及岗位职责
- 《油井参数远程监控》课件
- 中国百日咳诊疗与预防指南(2024版)
- 卫星通信网络仿真-洞察分析
- 钢结构防火施工方案
- JJF 2160-2024 激光共聚焦显微镜校准规范
- 中华人民共和国安全生产法知识培训
- 肿瘤中医治疗及调养
- 量子图像处理
评论
0/150
提交评论