




已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VB程序设计采用结构化程序设计的思想,结构化程序设计的特点是程序结构清晰,易读性强,并易于查错纠错。在VB中有三种基本的程序控制结构:顺序结构、选择结构和循环结构。VB所有的程序都可以由这若干个这三种基本结构的组合,通过各种算法,以解决不同的实际问题。,第四章 VB的基本控制结构,4.1 顺序结构 4.2 选择结构 4.3 循环结构 4.4 循环嵌套 4.5 常用算法,第四章 VB的基本控制结构,顺序结构是一种线性结构,也是程序设计中最简单、最常用的基本结构。它在程序运行过程中,按照语句出现的顺序从上到下依此执行。顺序结构流程图如下图所示,先执行语句A,再执行语句B。,4.1顺序结构,顺序结构中主要的语句是赋值语句,通过赋值语句,可以在程序中改变变量的值,或改变对象属性值。其语法格式为: Let变量表达式 Let对象.属性表达式 其中表达式中可以包含变量、常量、属性。此时等号称为赋值等号。例如: Dim A As String A=Text1.Text Label1.Caption=A,赋值语句,说明: (1)赋值语句兼有计算和赋值双重功能。 (2)“”是赋值等号,与数学上的等号意义不同。 (3)赋值等号两边的数据类型通常要求一致,但VB提供的对某些数据类型的自动转换机制,可强制变量转换为适当的数据类型。例如,当逻辑型赋值给数值型时,True转换为 -1,False转换为0;反之,非0转换为True,0转换为False; (4)赋值等号左边的只能是变量或对象的属性,不能是常量、常数符号、表达式,否则出错。,赋值语句,计算机智能化的标志之一就是具有逻辑判断的能力;即针对不同的情况作出不同的选择。在程序设计中,这一功能的实现是借助相应的选择结构语句来完成的。选择结构也称为分支结构,其特点是根据给定的条件来选择执行相应的程序语句。VB中提供的选择结构语句主要有:If语句、IIf函数以及Select Case语句。,4.2选择结构,先对条件测试,根据测试的结果选择执行不同的分支,1.If条件语句,3.Select Case 结构,Visual Basic 程序设计,选择结构,2.IIf函数,例: If score = 60 Then Print “祝贺你考试通过! “ End If Print “继续努力!” 等价于: If Score=60 Then Print “祝贺你考试通过!” Print “继续努力!”,1. IfThen 结构,格式:(1) If 条件 Then (A组语句) EndIf ,(2) If 条件 Then 语句,执行规则:若条件成立,执行A组语句; 条件不成立,跳过A组语句.,If条件语句,使用前提:条件成立时,A组语句中只一条执行语句,例: If score = 60 Then Print score Print “祝贺你考试通过! “ End If Print “继续努力!”,.,1. IfThen结构,例1:输入两个数,分别放在x和y变量中,比较它们大小, 然后将大数放在x中,小数放在y中。, x%=Text1.text Y%=Text2.text If x y Then y = x x = y End If Print x, y ,t = x x = y y = t,思考:3个数的排序如何实现?,If条件语句,例: If score = 60 Then Print “祝贺你考试通过!” Else Print “考试未通过.” End If Print “继续努力!“,2. IfThenElse 结构,格式:If 条件 Then A组语句 Else B组语句 END If,执行规则:条件成立,执行A组语句, 条件不成立,执行B组语句,例2:计算分段函数: (可用单分支、双分支和两个单分支分别实现),If条件语句,2. IfThenElse 结构,例3: 已知三边的长,设计 求面积的程序。,开始,If条件语句,例4:(思考)输入二级考试成绩,要求显示对应三级制的 评定。评定条件为:,If条件语句,格式:If 条件1 Then (A组语句) ElseIf 条件2 Then (B组语句) ElseIf 条件3 Then (C组语句) Else (n组语句) End If,.,3. IfThenElseIf 结构,Mark=Text1.Text If Mark = 90 Then Print “优“ ElseIf Mark = 60 Then Print “通过“ Else Print “未通过“ End If,若条件1与条件2换位,结果会怎样?,If条件语句,格式:If 条件1 Then A组语句 ElseIf 条件2 Then B组语句 ElseIf 条件3 Then C组语句 Else n组语句 End If,.,3. IfThenElseIf 结构,注意: 多分支语句中,有多个分 支同时满足,只执行第一 个与之匹配的语句块。 注意 ElseIf 的写法,If条件语句,例5 编写一个按月收入额计算个人收入调节税的程序 计算方法如下 0 Pay1000 (Pay-1000)*0.05 1000Pay2000 Z (Pay-2000)*0.15+50 2000Pay3000 (Pay-3000)*0.25+200 3000Pay4000 (Pay-4000)*0.35+450 Pay4000 分析:选择语句结构 每个条件的表示及先后顺序,.,3. IfThenElseIf 结构,If条件语句,.,4. If语句的嵌套,If条件语句,If语句的嵌套是指if 或else后面的语句块中又包含If语句。语句形式: If Then If Then End If End If,注意: (1) 对于嵌套结构,为了增强程序的可读性,应该采用缩进 形式书写; (2) If语句形式若不在一行上书写,必须与End If配对 多个If嵌套,End If与它最接近的If 配对。,格式: result = IIf(条件, True部分, False部分) 当“条件”为真时,IIf函数返回“True部分”,而当“条件”为假时返回“False部分” 例如,当成绩x=60时为合格,否则不及格,用If语句表示如下: If x=60 Then r=”合格” Else r=”不合格” End If 而用IIf函数来代替则为:r=IIf(x60,”合格”,”不合格”) 再看下面的例子:用IIf函数判断数的奇偶性 x是被判断的整数,result为接收结果的字符串变量 Result=IIf(x mod 2=0,”x是偶数”,” x是奇数”) 由上可见,对于一些简单的选择结构,用IIF函数可以使程序大大简化。,IIf函数,Select Case 测试表达式 Case 测试项1 A组语句 Case 测试项2 B组语句 Case Else n组语句 End Select,Select Case语句,说明: 测试表达式的值应是数字或字符型 测试项的取值必须与测试表达式 的值类型相同,常用形式为: 具体取值,用逗号隔开 如:1,5,9 连续的范围:界1 TO 界2 如:12 To 20 满足某个条件:Is运算符 如:Is10 三种形式可以组合使用,Select Case 结构,例6:输入二级考试成绩,要求显 示对应三级制的评定。 Mark=Val(Text1.Text) Select case Mark case is=90 Print “优“ case 60 to 90 Print “通过“ Case Else Print “未通过“ End select,Mark=Val(Text1.Text) K=mark10 Select case K case 10,9 Print “优“ case 8 to 6 Print “通过“ Case Else Print “未通过“ End select,在“种类”中选择油品种类,界面上的说明文字将随之改变,并将“数量”文本框设为焦点;在数量文本框中输入需购的油品数量后,单击“计算”按钮,在“总价”文本框显示所购油品种类应付的金额。已知汽油单价: 90号 2.30元/升 95号 2.45元/升 100号 2.60元/升,选择结构,例7 编写一个加油站计费程序,要求:单击“计算”按钮,则根据输入操作数以及所选的运算符,求得运算结果,并显示在相应的文本框中。 提示:当除数为0时,用消息框给出提示,选择结构,例8 编写一个简单运算器的程序,总 结,条件语句,1. IfThen 结构 2. IfThenElse 结构 3. IfThenElseIf 结构 4. IIf函数 5. Select Case 结构,循环结构是程序设计中的一种基本结构。当程序中出现需要反复执行相同的代码解决同一问题时,就可以用循环结构来实现。循环结构既可以简化程序,又可以提高程序的效率。 VB继承了所有Basic语言中的各种循环语句,而且在VB中实现循环结构的语句最多。循环结构可分为计数型和条件型两种基本的结构,实现计数型循环结构的语句是ForNext,而实现条件型循环结构的语句有DoLoop及WhileWend。,4.3 循环结构,循环结构,循环:是在指定的条件下多次重复执行一组语句,1. For Next,2. DoLoop,3. WhileWend,For 循环变量=初值 TO 终值 Step 步长 语句块 Exit For 语句块 Next 循环变量,For循环格式:,执行过程: (1) 将初值赋循环变量; (2) 判断循环变量值是否小于等于 终止值; (3) 若是,执行循环体(语句块); (4) 然后将变量增加一个步长; (5)重复24步骤。 (6)否则,结束循环,For循环,步长省略, 默认为1,程序代码: Dim I%, s % For I = 1 To 10 step 1 Next I Print I, s,例1:求1+2+3+4+10之和.,分析: 重复过程(循环体): ss+I 初值、终值和增量:1、10、1,初值与终值换位 可以吗?,循环体的执行次数是多少 ? 输出的I、S的值是多少 ? For I = 1 To 10执行多少次?,s = s + I,For I=10 To 1 Step -1,For循环,For 循环变量=初值 TO 终值 Step 步长 语句块 Exit For 语句块 Next 循环变量,Dim I, s As Integer For I = 1 To 10 s = s + I Next I Print I, s,例2: 求10!,分析: 重复过程:* 初值、终值与增量不变,例1:求1+2+3+4+ +10之和.,分析: 重复过程(循环体): + 初值、终值和增量:1、10、1,Dim I, s As Integer For I = 1 To 10 s = s * I Next I Print I, s,s=1 For I = 1 To 10,For I = 1 To 10 s=1,For循环,【范例3-5】设计程序,输入一个班(设全班人数不超过100人)学生的VB学习成绩,统计其中及格的学生人数,并计算出全班的平均分。由于学生人数不定,输入负数时截止。 (1)用户界面及数据测试如图3-13,3-14,3-15所示。,(2)设置界面对象属性,如表3-4所示。,(3)程序代码设计如下: Private Sub Command1_Click() Dim Grade As Single, PassCount As Integer, total As Integer Dim i As Integer, Sum As Single Sum = 0 PassCount = 0 Average = 0 total = 0 For i = 1 To 100 当输入学生成绩个数大于100时停止循环 Grade = Val(InputBox(“请输入学生的VB成绩:“) If Grade = 60 Then PassCount = PassCount + 1 计算及格学生人数 total = total + 1 计算总人数 Sum = Sum + Grade 计算总分 End If Next i If total 0 Then Average = Sum/total 防止用户未输入值时溢出 Text1.Text = Str(total) Text2.Text = Str(PassCount) Text3.Text = Str(Average) End Sub,S1 =0 S2 =0 For I = 1 To 1000 S1 = S1 + I Next I,练习1:计算11000的奇数和与偶数和 方法一: 方法二:,Step 2,For I = 1 To 1000 Step 2 S2 = S2 + I Next I Print S1,S2,0,S1 =0 S2 =0 For I = 1 To 1000 If I mod 20 then S1 = S1 + I Else S2 = S2 + I End If Next I Print S1,S2,For循环,练习2:输入一个正整数,求各位数字之和,输入正整数k 求它的位数 用For循环 1,位数和步长 取k的末位数,求和 使k去掉末位数 重复以上两步,直到结束 在text2中显示结果 或者用字符串操作来处理,更为简单,For循环,例:分析下列程序段的输出结果: Dim I As Integer, J As Integer J = 0 For I = 0 To 10 Step 2 I = I + 3 J = J + 1 Next I,注意: 初值、终值、步长必须是数值型, 步长为正,初值终值;缺省为默认为1 在已知循环次数时使用For循环,循环次数=int(终值-初值)/步长)+1 组成循环体的语句块可以是一条或多条语句 Exit For表示当遇到该语句时,退出循环体,执行Next的下一句; 在循环体内对循环变量可多次引用,但在循环过程中一般不改变其值, 否则影响结果。 注意在循环体内对循环变量、步长、初值、终值修改对循环次数的影响。 退出循环后,循环变量保持退出时的值,思考:我国现有人口13亿,按人口年增长率0.8%计算,多少年后我国人口超过26亿?,For循环,1. Do While 循环体 Loop,2. D0 循环体 Loop While ,3. Do Until 循环体 Loop,4. Do 循环体 Loop Until ,DoLoop循环,1. While循环, Do While 循环体 Loop,执行过程:(先判断,后执行) 先判断循环条件, 若为真:执行循环体,再判断循环条件 否则,跳过循环体,执行Loop之后语句,DoLoop循环, Do While 循环体 Loop,Dim I, s As Integer For I = 1 To 10 s = s + I Next I Print I, s,例1:求1+2+3+4+10的和.,Dim I,s As Integer I=1 Do While Loop Print I,s,s=s+I,I=10,I=I+1,I=11,(1)循环体执行了几次? (2)没有I=1会怎样? (3)将Print语句移到Loop的 前面结果怎样? (4)I先赋值为11,结果如何?,1. While循环,DoLoop循环, D0 循环体 Loop While ,执行过程:(先执行,后判断) 先执行循环体,再判断循环条件, 若为真, 继续执行循环体; 否则,结束循环,执行Loop之后语句,1. While循环,DoLoop循环, D0 循环体 Loop While ,例4:修改例3,Dim I,s As Integer I=1 Do While I=10 s=s+I I=I+1 Loop Print I,s,Dim I,s As Integer I=1 Do s=s+I I=I+1 Loop While I=10 Print I,s,(1)循环体执行几次? (2)将I先赋值为11, 执行结果如何?,1. While循环,DoLoop循环, Do While 循环体 Loop, D0 循环体 Loop While ,区别:(1)执行顺序不同 形式一:先判断,后执行循环体; 形式二:先执行循环体,后判断 (2)执行次数不同(特殊情况下) 形式一:条件不满足,循环体可能一次也不执行 形式二:不论条件如何,至少执行一次,1.While循环,DoLoop循环,练习3:用辗转相除法求两自然数m、n的最大公约数和 最小公倍数,分析: 最大公约数 已知两数m、n m Mod n的值为r mn,nr, 若r0 ,则重复 否则,循环结束,m为所求的最大公约数 最小公倍数 原两个数相乘,再除以最大公约数,DoLoop循环,练习4:我国现有人口13亿,按人口年增长率0.8%计算,多少年后我国人口超过26亿。,分析 计算公式: 26=13(1+0.008)n 已知:当前人口数量为P=13,年增长率为R=0.008 循环条件:当前人口数是否超过26亿 若没,计算下一年人口数PP*(1+R),年数+1,再判断,DoLoop循环,执行过程:(先判断,后执行) 先判断循环条件: 条件为假: 执行循环体, 然后再判断条件. 条件为真: 跳过循环体, 执行Loop之后语句, Do Until 循环体 Loop,2.Until循环,DoLoop循环, Do Until 循环体 Loop,例5:修改上例,Dim I,s As Integer I=1 Do While I=10 s=s+I I=I+1 Loop Print I,s,Dim I,s As Integer I=1 Do Until s=s+I I=I+1 Loop Print I,s,条件应该如何写出? 显示的I、S值与 上例一样吗?, Do 循环体 Loop Until ,I10,DoLoop循环,2.Until循环,几种形式比较:,Do While 循环体 Loop( While ),Do Until 循环体 Loop( Until ),区别: While 条件为真时执行循环体,否则退出循环 Until 条件为假时执行循环体,否则退出循环,关系: while和Until可以相互转换,但循环条件取反,DoLoop循环,形式:,While 循环体 Wend,While 条件为真时执行循环体,否则退出循环,Whilewend循环,循环语句比较,练习5:输入一个正整数n,求最大的k, 使得1*1+2*2+k*kn成立,循环结构.练习,分析: 输入n值 判断累加和sn? 若是,s加下一个数的平方值 重复2、3 若否,结束循环 由text2输出最后一个累加数k,对吗?,循环的嵌套:在一个循环体内又包含了一个完整的循环结构,循环嵌套,For I = 1 To 9 For J = 1 To I s = I Next J Picture1.Print Next I,注意: 内、外循环变量不能同名 外循环必须完全包含内循环,不能出现交叉,分析:用三种循环 个位x的可能取值为09 十位y的可能取值为09 百位z的可能取值为19, 看三个位置上的数是否满足如下条件,若满足,即是其中一个解 x3+y3+z3=z100y10x,循环嵌套,?,练习6:求水仙花数 水仙花数是指一个N位数,其各个数字的n次方之 和等于数字本身。,Exit语句,满足循环条件的情况下,提前跳出循环体,结束循环。,两种形式:Exit For、Exit Do,其他辅助控制语句,Dim I As Integer,If I mod 17 =0 then print I end If,For I=100 to 200 Next I,Exit for,分析: 重复工作:判断每个数除17的余数是否为0 初值、终值和增量:,练习7: 求出100200之间的第一个能被17整除的整数。,其他辅助控制语句,1.累加、连乘,例1:编写一个大奖赛统计选手得分的程序。 要求单击“得分显示”按钮,则可以利用随机函数产生10个80100分之间的随机整数,输出在窗体上,并将计算选手的最后得分也在窗体上显示。,思考题: 如果在评委的给分中,去掉一个最高分和一个最低分,然后计算最后得分,分析:由随机函数生成80100之间的10个数据 连续求和 求平均值,2.求阶乘,例2:求任一给定整数的阶乘,n!,分析:对于任意整数n,有三种可能: 若 :n0:用循环实现乘运算 输出结果,思考题: 1.已知n,求1! n!之和 2.给定条件1! n!之和=5000,求最大n值,3.求素数,素数(质数):一个大于等于2的整数,并且只能被1和自身 整除,而不能被其他整数整除的数,分析:用穷举法 用2n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年农业经营权流转合同模板
- 颌骨骨折损伤的护理
- 新员工培训考试题及答案
- 舞蹈演员舞蹈编排实操测试试卷及答案
- 体育教研课题题库及答案
- Module 3 unit 2 This year we are training more carefully 英文版说课稿 2024-2025学年外研版八年级上册英语
- 塔吊安装安全员培训资料课件
- 2025【合同范本】技术外包合同
- 塑料首饰修复师培训课件
- 2025年家政服务员雇佣的合同范本
- 附合导线坐标计算表(EXCEL)
- 方案评审表-技术方案评估
- 《人工智能通识基础》全套教学课件
- 劳动教育读本中职版专题一崇尚劳动学习资料
- 河道生态修复工程施工图设计总说明-水生态部分
- 慢病患者的自我管理培训课件
- 学校食堂员工培训方案
- 教学查房流程
- 《建筑材料与构造》课件-3.建筑材料的基本要求与选用
- 《员工行为准则培训》课件
- 2025年广汽集团股份有限公司招聘笔试参考题库含答案解析
评论
0/150
提交评论