版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 VB控制结构第1页,共53页。4.1 什么是流程控制我们一天的生活早上起床刷牙洗脸吃早饭上午上四节课午餐午休下午上四节课 程序也和日常生活一样,是按照顺序执行的,这就是流程。过程1过程2过程3第2页,共53页。 但是实际的流程并非完全是按顺序的,它可能会因为一些原因发生变化,从而改变流程。日常生活的例子早上起床刷牙洗脸(没有牙膏、停水)吃早饭上午上课(老师生病) 同样的程序的执行,也会因情况不同,执行过程产生一些变化。过程2条件判断过程1过程3成立不成立第3页,共53页。 程序执行的顺序因为情况的变化而选择不同的执行过程,称之为流程控制(flow control)。 流程控制是计算机程
2、序的灵魂,它包含:条件判断判断条件的真假,然后程序根据真假选择不同过程执行If语句和Select Case语句。循环控制程序依指定的条件做判断, 若条件成立则进入循环执行循环内的动作。每执行完一次循环内动作,便再回头做一次条件判断, 直到条件不成立后才结束循环。For语句 、Do While-Loop语句和Do-Loop While语句。无条件跳转当程序执行到无条件跳转语句时,会被强制到指定的地方执行。Goto无条件转向语句。注意:VB的程序控制结构分为:顺序结构、选择结构、循环结构。第4页,共53页。4.2 顺序结构 顺序结构就是各语句按出现的先后次序执行。设计顺序结构的程序需掌握赋值语句、
3、输入/输出语句。一、赋值语句 格式: 变量名=表达式 功能:自动计算赋值号“=”右边表达式的值,然后将计算结果赋给左边的变量。 例如: n=0 y%=3*5.452+4*0.456+5 (结果四舍五入为整型值)Str$=2048 (2048自动转换为字符串) text1.text=“” text2.text=“Cheng Du”注意:赋值号两边数据类型不同时,系统会自动转换数据 类型,再赋值。第5页,共53页。二、数据的输入和输出1、标签、文本框和图形框控件(1)标签 利用标签的Caption属性来输出数据。(2)图形框利用Print方法来输出数据。(3)文本框 利用文本框控件的Text属性获
4、得用户从键盘输入的数据,或将结果输出。2、输入对话框InputBox函数 打开一个对话框等待用户输入内容,当用户单击“确定”按钮或按回车键后,返回输入的值,其值为字符串。 格式: InputBox(提示,标题,默认值,坐标) 注意:用InputBox输入数值类数据时用Val()函数转换类型第6页,共53页。例如:InputBox的用法举例。Dim Name$,Age%Name=InputBox(“请输入您的姓名:”)Age=Val(InputBox(“请输入您的年龄:”,“输入”,21)第7页,共53页。3、消息对话框MsgBox函数和过程 MsgBox的作用是打开一个消息框输出信息或计算结果
5、,等待用户选择一个按钮。格式如下:(1)函数形式: (通常与赋值语句联用) 变量%=MsgBox(提示,按钮,标题)(2)过程形式: (通常以独立语句的形式使用) MsgBox 提示,按钮,标题其中:“提示”和“标题”的含义与InputBox函数中对应的参数相同。 “按钮”的设置及含义见P63-64页。第8页,共53页。例如:以下为MsgBox的用法举例。 MsgBox “您的密码有误!” MsgBox “您本月工资为:” & 3400 & “元” i= MsgBox(“您的密码有误!”,5+48,“警告”)第9页,共53页。例1:输入某员工姓名、基本工资和营业额计算并输出该员工的工资。Pri
6、vate Sub Command1_Click() Dim jbgz%, x!, gz!, xm$ xm = InputBox(请输入员工姓名, 员工姓名) jbgz = Val(InputBox(请输入基本工资, , 800) x = Val(InputBox(请输入营业额) gz = jbgz + x * 5 / 1000 MsgBox xm & 本月工资为: & gz, , 员工本月工资End Sub第10页,共53页。 4、Print方法 Print方法的作用是在对象上输出信息。格式: 对象.Print 定位函数输出表达式列表分隔符其中:对象可是窗体、图形或打印机。缺省为窗体。 定位函
7、数常用Spc(n)、Tab(n)等。 无定位函数,由对象的当前位置决定。 表达式列表是要输出的数值(变量)或字符串表达式。若省略,则输出一个空行。 分隔符:“,”将光标定位到下一个打印区(每隔14列)的开始位置;“;”光标定位到上一个显示的字符后;如无分隔符,则表示输出后光标换行。 注意:用Print输出时还可以使用Format格式函数指定输出结果的具体格式。见P68页表4.3。第11页,共53页。例2:使用Print方法在当前窗体打印图形。Private Sub Form_Click() Dim i% Print For i = 1 To 5 Print Tab(i); String(6 -
8、 i, ); Spc(6); String(i, ) Next iEnd Sub第12页,共53页。Private Sub Form_Click() Dim a!, b% a = 12.2345 b = 12345 Print a=; Format(a, 0000.00); b=; Format(b, 0000.00) Print a= & Format(a, #.#) & b= & Format(b, #.#) Print a=; Format(a, #.#%) Print b=; Format(b, $#,#.#) Print a; +; b; =; a + b Print a & + &
9、 b & = & a + bEnd Sub例3:使用Print方法在窗体打印指定格式的数据。第13页,共53页。例4:使用Print方法在图形框打印指定格式的数据。Private Sub Form_Click() Dim a!, b% a = 12.2345 b = 12345 Picture1.Print a=; Format(a, 0000.00); b=; Format(b, 0000.00) Picture1.Print a= & Format(a, #.#) & b= & Format(b, #.#) Picture1.Print a=; Format(a, #.#%) Pictur
10、e1.Print b=; Format(b, $#,#.#) Picture1.Print a; +; b; =; a + b Picture1.Print a & + & b & = & a + bEnd Sub第14页,共53页。4.3 选择结构-if条件语句 选择结构也称为条件判断结构或分支结构。其最常用到的控制语句就是 if 语句, 它就如同日常生活中常使用的如果.就 是一样的意思。比方说如果明天没下雨, 就去爬山以图形来表示就是天是否下雨?爬山在家看电视结束否是第15页,共53页。1. If条件语句 (1)IfThen语句(单分支结构)语法格式: If Then 或: If Then
11、 Endif其中:表达式可为关系、逻辑、算术表达式。 语句块可是一条或多条语句。 该语句的作用是判断表达式的值,若为真(True)执行Then后的语句(块),若为假(False)则不执行任何操作。表达式?语句TrueFalse第16页,共53页。例1. 比较两个数x和y,使x中存较大数、y存较小数。Private Sub Command1_Click()Dim x%, y%, t% x=Val(InputBox(“请输入x:”)y= Val(InputBox(“请输入y:”)If xy Then t=x x=y y=t EndifPrint x , yEnd Sub其中:变量t 是临时变量,用
12、于辅助完成变量x和y值的交换。第17页,共53页。(2)IfThenElse语句(双分支结构) 语句形式: If Then Else Endif 该语句的作用是判断表达式的值,若为真(True)执行Then后的语句块1,若为假(False)则执行Else后的语句块2。表达式?语句块1TrueFalse语句块2第18页,共53页。例2. 求变量x和y中的最大数。Private Sub Command1_Click()Dim x%, y%, mx% x=Val(InputBox(“请输入x:”)y= Val(InputBox(“请输入y:”)If xy Then mx=xElse mx=yEnd
13、ifPrint mxEnd Sub例3. P70-71页计算分段函数值。(程序略)第19页,共53页。(3)IfThenElseIf语句(多分支结构)语句形式: If Then ElseIf Then Else Endif该语句的作用是判断各表达式的值,若 为真就执行其后的,否则执行。控制结构的流程图见教材P72页图4.13。第20页,共53页。例4.根据某学生的考试分数score,打出其分数的等级值Grade。Private Sub Form_Click() Dim Score%, Grade$ Score=Val(InputBox(“请输入分数:”) If score=90 Then Gr
14、ade=“优” ElseIf score=80 Then Grade=“良” ElseIf score=70 Then Grade=“中” ElseIf score=60 Then Grade=“及格” Else Grade=“不及格” EndIf MsgBox “您的等级是:” & GradeEnd Sub第21页,共53页。 例5.大国的提问你有钱吗?Dim intReturen As Integer intReturen = MsgBox(你有钱吗?, vbQuestion + vbYesNo, 提问) If intReturen = vbYes Then lblDisplay = 借我
15、一些吧! Else lblDisplay = 我也没有钱哪! End If第22页,共53页。例6. 超市购物的优惠某超市规定,顾客购买同种商品10件以上(含10件)可享受批发价。请设计一个收款机程序,输入顾客所购商品的零售价、批发价、购买数量,程序能计算出顾客的应付款。 输入(已知):某一种商品的零售价sngRetailPrice、批发价sngWholesalePrice、购买数量intBuycount输出(结果): 应付款getPayablesPrivate Function getPayables(sngRetailPrice as single, sngWholesalePrice a
16、s single , intBuycount as integer) as singleIf .End Function第23页,共53页。Private Function getPayables(sngRetailPrice as single, _ sngWholesalePrice as single , intBuycount as integer) as singleIf intBuycount =10 then getPayables= sngWholesalePrice* intBuycount else getPayables=sngRetailPrice* intBuycou
17、nt end ifEnd Function第24页,共53页。2.选择结构-Select Case语句 多个选择中选择一个, 语法如下:Select Case 变量或表达式 Case 表达式列表1 Case 表达式列表2 Case 表达式列表3 Case Else End Select表达式1语句块1表达式2语句块2表达式3语句块3语句块n+1注意:Case后的表达式可是常数、区域值。第25页,共53页。例1.改写简单计算器程序Private Sub Command1_Click() dim x%, y%, f% , op $ x=val(text1) op=text2 y=val(text3
18、) Select Case op Case “+” f = x + y Case “-” f = x - y Case “*” f = x * y Case “/” f = x / y Case Else MsgBox “运算符错误!” End Select text4 = fEnd Sub第26页,共53页。例2.根据VB考试成绩给予奖励期末VB程序设计考试90分以上去旅游80分买笔记本电脑70分逛街60分睡觉休息不及格吃一个月馒头多分支语句和上面的例子类似使用SELECT CASE 语句第27页,共53页。编程完成上述任务Dim intScore As Integer intScore =
19、 Val(InputBox(请输入期末VB课程考试成绩, 提示输入) Select Case intScore Case 90 To 100 lblResult.Caption = 旅游 Case 80 To 89 lblResult.Caption = 买笔记本电脑 Case 70 To 79 lblResult.Caption = 逛街放松心情“ Case 60 To 69 lblResult.Caption = “睡觉休息“ Case 0 To 59 lblResult.Caption = 吃一个月馒头 Case Else lblResult.Caption = End Select第2
20、8页,共53页。例3.按身份购买参观门票的应用问题。科技馆的门票价格为国内每人10元,老外每人20元,持学生证可以半价购票;军人、老人、儿童免费。请为科技馆设计一个程序实现上述功能。输入(已知):门票类型 intTicketType国内普通票(1)国际普通票(2)学生票(3)军人票(4)老人票(5)儿童票(6)输出(结果): 票价Private Function getTicketPrice(intTicketType as integer ) as integerSelect case End Function第29页,共53页。Private Function getTicketPrice
21、(intTicketType as integer ) Select Case intTicketType Case 1 getTicketPrice=10 Case 2 getTicketPrice=20 Case 3 getTicketPrice=5 Case 4, 5, 6 getTicketPrice=0 Case Else getTicketPrice=0End Select第30页,共53页。4.4 循环结构 计算机按照事先规定的次数或某种规定的条件,重复执行某些操作的结构称为循环结构。循环分为计数循环和条件循环两种类型。 1. For 循环语句 语法: For 循环控制变量=初值
22、 to 终值 循环体语句Next 循环控制变量其中:循环控制变量必须为数值型; Step 步长中的步长可正、负; 循环体语句可是一条或多条语句; 循环次数=(终值-初值)/步长+1;循环变量=初值循环变量 b Then n = b Else n = a End If For i = 1 To n If (a Mod i) = 0 And (b Mod i) = 0 Then mx = i Next i Text3 = mx Text4 = a * b / mxEnd Sub第36页,共53页。2.循环结构-DoLoop循环语句 用于控制未知循环次数的条件循环。(1)当循环控制语句 语法: Do
23、 While |Until 条件 循环体 Loop如为Do While语句则自动判断循环条件,当值为真(True)则执行循环体语句,为假(False)结束循环;如为Do Until语句则刚好相反。 如省略While |Until 条件子句,循环为死循环!条件?循环体FalseTrue第37页,共53页。(2)直到循环语句 语法: Do 循环体 Loop While |Until 条件 该循环是先执行循环体语句,后判断条件;若语句为Loop While,当条件为真时继续执行循环,为假时终止循环;若为Loop Until语句则与While刚好相反。注意:条件循环中可以有Exit Do语句,表示遇到
24、该语句时,退出循环!条件?循环体FalseTrue第38页,共53页。例6. 判断任意自然数x是否为素数。Private Sub Command1_Click() Dim i%, k%, x% x = Val(Text1) k = Fix(Sqr(x) i = 2 Do While (i k then Text2 = “是素数!” Else Text2=“不是素数!” End ifEnd Sub第39页,共53页。例7.已知某企业2010产值为5000万元,假设以后每年按13.4%增长,则该企业产值在哪一年能实现翻番。Private Sub Command1_Click()Dim year%,
25、 p0!, p1%, c!year=Val(Text1)p0=Val(Text2)c=Val(Text3)p1=p0Do While p1=0.0000001) Picture1.Print “=”;sum*4End Sub例8:用/41-1/3+1/5-1/7+公式求的近似值,直到某一项的绝对值小于0.0000001为止。第41页,共53页。 例9.蜗牛爬树问题 树高10尺,蜗牛白天向上爬2两尺,晚上向下爬1尺,多少天蜗牛能爬上树梢?第42页,共53页。蜗牛爬树Dim intNeedDay As IntegerDim intSnailTop As Integer离树梢的距离 intSnail
26、Top = 8 intNeedDay = 1 Do Until intSnailTop = 0 intSnailTop = intSnailTop + 1 intNeedDay = intNeedDay + 1 intSnailTop = intSnailTop - 2 Loop MsgBox intNeedDayDim intNeedDay As IntegerDim intSnailHigh As Integer intNeedDay = 1 intSnailHigh = 2 Do While intSnailHigh 10 intSnailHigh = intSnailHigh - 1
27、intNeedDay = intNeedDay + 1 intSnailHigh = intSnailHigh + 2 Loop Me.Print intSnailHigh MsgBox intNeedDay 第43页,共53页。例10. 某县政府为了开发山区农业,需要研究本区的山地气候。已有的研究成果表明,海拔每升高100米,年平均气温降低0.5。试根据这一规律编写程序,输入山下地表温度及相对海拔高度,输出相应高地的所有气温。 输入(已知):山下地表温度sngTemperature、相对海拔高度SngHeight输出(结果):相应高地的所有气温Privare Sub getSufaceTem
28、perature(sngTemperature as single, _ sngHeight as single)Dim DoLoopEnd Sub第44页,共53页。Privare Sub getSufaceTemperature(sngTemperature as single, _ sngHeight as single)Dim sngTemp as singleDim sngHg as singlesngHg= 100Do while sngHg sngHeightsngTemp=sngTemperature-0.5print sngHg , sngTemp sngHg= sngHg+
29、100LoopEnd Sub第45页,共53页。3.循环的嵌套 在一个循环体内又包含了循环结构称为循环的嵌套。循环的嵌套对For循环语句和Do-Loop语句均适用。 嵌套循环的层数通常称为循环的重数(如二重循环、三重循环等)。 循环的总次数=外循环次数内循环次数。 对于嵌套的循环(多重循环)使用时必须注意:(1)内、外循环控制变量名不能相同;(2)外循环必须完整嵌套内循环,不能交叉嵌套;(3)若循环体内有If语句,也不能交叉;(4)用GoTo语句只能从循环体内转到循环体外。第46页,共53页。 例:For循环语句的两层嵌套 (二重循环)Private Sub Form_Click() Dim
30、i%, j% For i=1 to 3 For j=1 to 5 print i,j, Next j Print Next iEnd Subj=1i=1打印i, j值判i=3?判j 9 Then Print i * j; Spc(3); Else Print i * j; Spc(4); End If Next j Print Next iEnd Sub第48页,共53页。例12:打印100200之间的所有素数。Private Sub Command1_Click() Dim i%, j%, k% For i = 100 To 200 k = Fix(Sqr(i) For j = 2 To k
31、 If (i Mod j) = 0 Then Exit For Next j If (j k) Then m = m + 1 Print i; Spc(4); If m Mod 6 = 0 Then m = 0 Print Print Spc(4); End If End If Next iEnd Sub第49页,共53页。例13:百钱买百鸡问题。公鸡每只5元,母鸡每只3元,小鸡每3只1元,用M元买N只鸡,问公鸡、母鸡、小鸡各几只?Private Sub Command1_Click() Dim m%, n%, a%, b%, c%, i%, j%, k% m = Val(Text1) n =
32、 Val(Text2) Picture1.Print Tab(8); 公鸡; Spc(4); 母鸡; Spc(4); 小鸡 For a = 0 To n For b = 0 To n For c = 0 To n Step 3 If (a + b + c) = n) And (a * 5 + b * 3 + c 3) = m) Then Picture1.Print Tab(8); a; Spc(5); b; Spc(4); c End If Next c Next b Next aEnd Sub第50页,共53页。4.5 无条件跳转语句Goto语句无条件地转移到标号指定的那行语句 Priva
33、te Sub cmdOpen_Click()Dim strData As String On Error GoTo Err Open App.Path & data.dat For Input As #1 Input #1, strData Close #1 MsgBox strData Exit Sub Err: MsgBox 你指定的文件不能打开 End Sub第51页,共53页。实例如图所示,编写一个早餐收银软件,要求如下:在早餐食谱中选择食物,购买早餐栏就可以显示相应的食物及单价,同时显示应收款;在已收栏中输入收款金额,按回车后,找零栏相应显示找零金额;按退出按钮,退出系统。第52页,共53页。Private Sub chkSelect_Click(Index As Integer) 生成所选择的早餐 getSelectFood End SubPrivate Sub cmdExit_Click() Un
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心理辅导责任制度
- 我国行政责任制度
- 打钻工岗位责任制度
- 扫黑摸排线索责任制度
- 技术中心岗位责任制度
- 抢修队队长责任制度
- 报告主体责任制度
- 挂钩扶贫责任制度
- 摩托车追尾责任制度规定
- 收费网络安全责任制度
- GB/T 28749-2012企业能量平衡网络图绘制方法
- GB/T 4308-1984金属陶瓷热挤压模坯
- GB/T 38603-2020燃气燃烧器和燃烧器具用安全和控制装置特殊要求电子控制器
- GB/T 18983-2017淬火-回火弹簧钢丝
- 高效课堂学习小组建设课件
- (新版)中国移动认证L1、L2、L3等级考试总题库-单选题库(共12部分-2)
- 提高网络运维信息化水平值0
- 高校电子课件:产业经济学(第五版)
- 工笔花鸟临摹课件
- 人教版(2019)高中英语选择性必修第三册Unit1词汇和句型课件21张PPT
- (新版)餐厅服务员初级资格考试题库(含答案)
评论
0/150
提交评论