




免费预览已结束,剩余77页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章基本的控制结构 VB虽然采用事件驱动调用相对划分得比较小的子过程 但是对于具体的过程本身 仍然要用到结构化程序的方法 用控制结构控制程序执行的流程 结构化程序设计有3种基本结构 顺序结构 选择结构 循环结构 第一节语句 一 程序语句 VB程序中的一行代码称为一条程序语句 是执行具体操作的指令 一个语句行的长度不能超过255个字符 二 程序的书写规则 1 将单行语句分成多行 用续行符 一个空格后面跟一个下划线 将长语句分成多行 2 将多个语句合并到同一行上通常 一行之中有一个VisualBasic语句 而且不用语句终结符 但是也可以将两个或多个语句放在同一行 只是要用冒号 将它们分开 Text1 Text Hello Text1 BackColor 255但是 为了便于阅读代码 最好还是一行放一个语句 3 在代码中添加注释 Rem和 阅读例子时常会遇到注释符 这个符号告诉VisualBasic 忽略该符号后面的内容 这些内容是代码段中的注释 既是为了方便开发者 也是为了方便以后可能检查源代码的其他程序员 例如 Text1 Text Hi 在文本框中放欢迎词 注释可以和语句在同一行并写在语句的后面 也可占据一整行 注意可以通过选中两行或多行代码并在 编辑 工具栏上通过选择 注释块 或 删除注释块 按钮来对该代码块添加或删除注释符号 第二节赋值语句 Let 将表达式的值赋给变量或属性 Let可选的 变量名必需的 表达式必需的 赋给变量或属性的值 说明 赋值语句左右两端类型相同 赋值号和等号 如果变量未被赋值而直接引用 则数值型变量的值为0 字符型变量的值为 空串 布尔型为False 第三节输出数据 一 用Label控件输出文本二 用Print方法输出文本 对象 Print 表达式 对象可以是窗体 Form 立即窗口 Debug 图片框 PictureBox 打印机 Printer 等对象 表达式是写在同一行上的若干个表达式 表达式之间用逗号或分号间隔 每执行一次Print方法要自动换行 但是可以在Print方法末尾加上分号或逗号 缩写为 与Print方法有关的函数 P36 Print 语句 将格式化显示的数据写入顺序文件中 第四节输入数据 用InputBox函数显示一个能接受用户输入的对话框 等待用户输入数据 并返回用户在对话框中输入的信息 变量名 inputbox 提示内容 对话框标题 默认内容 X坐标位置 Y坐标位置 用文本框 第五节选择结构 简单程序可以只用顺序结构来编写 即程序从左至右 自顶向下执行语句 在程序设计中经常遇到这类问题 它需要根据不同的情况采用不同的处理方法 例如 一元二次方程的求根问题 要根据判别式小于零或大于等于零的情况 采用不同的数学表达式进行计算 对于这类问题 如果用顺序结构编程 显然力不从心 必须借助选择结构 VisualBasic支持的选择结构有 If ThenIf Then ElseIf Then ElseIfSelectCase EndSelectIf条件then语句1 Else语句2 一 块If 格式 If条件then语句块1 Else语句块2 EndIf 说明 1 条件 一般为关系表达式或逻辑表式 通常把关系表达式或逻辑表达式的值为真时 称为条件满足 值为假时 称为条件不满足 反之亦然 2 语句块1 语句块2分别是 条件 满足或不满足时 处理方法的描述 可以是若干个语句 3 If Then Else EndIf是VB的保留字 功能 块If首先判断 条件 其值为真时 执行语句块1 为假时执行语句块2 当缺省 Else 中的内容时 该选择结构只对条件满足的情况进行处理 执行过程如图所示 例4 1 火车站行李费的收费标准是50kg以内 包括50kg 0 20 kg 超过部分0 50 kg 编写程序 要求根据输入的任意重量 计算出应付的行李费 根据题意计算公式如下 程序代码如下 计算 按钮代码PrivateSubCommand1 Click DimsinWeightassingleDimsinPayassinglesinWeight Text1 TextIfsinWeight 50ThensinPay sinWeight 50 0 5 50 0 2ElsesinPay sinWeight 0 2EndIfText2 Text payEndSub PrivateSubCommand2 Click Text1 Text Text2 Text EndSubPrivateSubCommand3 Click EndEndSub 例4 2 任意输入3个数 按照从大到小的顺序输出 算法分析 排序的基本方法 就是比较大小 然后根据比较的结果分别加以处理 本例把3个数分别放在A B C中 处理过程为 若A B为真 交换A B的值 否则不做处理 这样就保证了A B 然后再用C去比较 ifa bthent aa bb tendififa cthent aa cc tendififb cthent bb cc tendif 二 ElseIf语句 格式 If条件1then语句块1ElseIf条件2then语句块2 Else语句块n 1 EndIf 功能 1 依次判断条件 如果找到一个满足的条件 则执行其下面的语句块 然后跳过EndIf 执行后面的程序 2 如果所列出的条件都不满足 则执行Else语句后面的语句块 如果所列出的条件都不满足 又没有Else子句 则直接跳过EndIf 不执行任何语句块 例4 3 输入一个学生的一门课分数x 百分制 当x 90时 输出 优秀 当80 x 90时 输出 良好 当70 x 80时 输出 中 当60 x 70时 输出 及格 当x 60时 输出 不及格 算法分析 本例适合用多路分支结构来解决 程序代码如下 鉴定 按钮代码PrivateSubCommand1 Click Dimscore score val Text1 Text Ifscore 90ThenText2 Text 优秀 ElseIfscore 80ThenText2 Text 良好 ElseIfscore 70ThenText2 Text 中 ElseIfscore 60ThenText2 Text 及格 ElseText2 Text 不及格 EndIfEndSub ElseIf语句 实际完成的是块If的嵌套 它和块If嵌套的格式上有很大区别 ElseIf结构只有一对If和EndIf语句 另外应注意 ElseIf 和 ElseIf 的区别 四 行If语句 格式 If条件then语句1 Else语句2 功能 当条件满足时 执行语句1 条件不满足时 执行语句2 从行If的格式和功能不难看出 行If语句是一种简单的分支结构 只是把一个简单的块If结构写在一行中 减少了语句行 省略了 EndIf 的书写 行If完全可以用块If代替 例4 4 任意输入3个数 找出其中的最大值 程序代码如下 PrivateSubCommand1 Click DimaAsSingle bAsSingle cAsSingle maxAsSinglea val Text1 Text b val Text2 Text c val Text3 Text max aIfb maxThenmax bIfc maxThenmax cText4 Text maxEndSub 五 SelectCase语句 当对一个表达式的不同取值情况作不同处理时 用ElseIf语句程序结构显得较为杂乱 而用SelectCase语句将使程序的结构更清晰 SelectCase语句又称为情况语句 格式 SelectCase测试表达式Case表达式列表1语句块1Case表达式列表2语句块2 Case表达式列表n语句块n CaseElse语句块n 1 EndSelect 功能 根据 测试表达式 的值 选择第一个符合条件的语句块执行 执行过程是 先求 测试表达式 的值 然后顺序测试该值符合哪一个Case子句中情况 如果找到了 则执行该Case子句下面的语句块 然后执行EndSelect下面的语句 如果没找到 则执行CaseElse下面的语句块 然后执行EndSelect下面的语句 说明 测试表达式 可以是数值型或字符串型表达式 表达式列表 形式有以下3种 1 一个表达式或用逗号隔开的若干表达式 2 表达式1To表达式2 3 Is关系运算符表达式p84 例4 5 把例4 3中 鉴定 按钮的代码用SelectCase语句改写 PrivateSubCommand1 Click Dimscore score Text1 TextSelectCasescoreCaseIs 90Text2 Text 优秀 CaseIs 80Text2 Text 良好 CaseIs 70Text2 Text 中 CaseIs 60Text2 Text 及格 CaseElseText2 Text 不及格 EndSelectEndSub 第六节循环结构 在前面 我们学习了顺序结构和分支结构 本章我们将要介绍结构化程序3种基本结构的最后一种 循环结构 一 循环概述 在实际工作中 常遇到一些操作过程不太复杂 但又需要反复进行相同处理的问题 比如 统计本单位所有人员的工资 求全班同学各科的平均成绩等等 这些问题的解决逻辑上并不复杂 但如果单纯用顺序结构来处理 那将得到一个非常乏味且冗长的程序 例如 计算1 100所有奇数的平方和 如果用顺序结构来解决这个问题 我们就会给出下面的程序 PrivateSubForm Click Dims x s 0 x 1s s x 2x x 2s s x 2x x 2s s x 2 x x 2 x的值累加到99s s x 2Print 1 100之间所有奇数的平方和 sEndSub 由上面的例子不难看出 程序的绝大部分是在反复执行两条语句x x 2和s s x 2 不同的是x的值在变化 程序当然非常简单易懂 但缺乏最基本的编程技巧 要想方便地解决这类问题 最好的办法就是用循环语句 所谓循环就是重复地执行一组语句 我们用循环语句解决上面的问题 程序非常简短 PrivateSubForm Click Dims x s 0Forx 1To99Step2s s x 2NextxPrint 1 100所有奇数的平方和 sEndSub 循环结构非常适合于解决处理的过程相同 处理的数据相关 但处理的具体值不同的问题 我们把能够处理这类问题的语句称为循环语句 VB提供了三种不同风格的循环语句 它们分别是 1 For Next语句 2 While Wend语句 3 Do Loop语句 二 For循环 For循环的一般格式如下 For循环变量 初值To终值 Step步长 循环体 Next 循环变量 说明 1 格式中各项的说明 循环变量 亦称为循环控制变量 必须为数值型 初值 终值 都是数值型 可以是数值表达式 步长 循环变量的增量 是一个数值表达式 一般来说 其值为正 初值应小于终值 若为负 初值应大于终值 但步长不能是0 如果步长是1 Step1可略去不写 循环体 在For语句和Next语句之间的语句序列 Next后面的循环变量与For语句中的循环变量必须相同 2 执行过程 1 系统将初值赋给循环变量 并自动记下终值和步长 2 检查循环变量的值是否超过终值 如果超过就结束循环 执行Next后面的语句 否则 执行一次循环体 3 执行Next语句 将循环变量增加一个步长值再赋给循环变量 转到 2 继续执行 以上执行过程用流程图描述 如图所示 这里所说的 超过 有两种含义 即大于或小于 当步长为正值时 循环变量大于终值为 超过 当步长为负值时 循环变量小于终值为 超过 Forn 1To10Step3Printn Nextn 3 注意事项For语句和Next语句必须成对出现 缺一不可 且For语句必须在Next语句之前 循环次数由初值 终值和步长确定 计算公式为 循环次数 Int 终值 初值 步长 1 例5 1 求N N为自然数 分析 由阶乘的定义 我们可以得出N 1 2 N 2 N 1 N N 1 N 也就是说 一个自然数的阶乘 等于该自然数与前一个自然数阶乘的乘积 程序如下 PrivateSubForm Click DimI f n n InputBox 输入一个自然数 输入提示 10 f 1ForI 1Tonf f INextIPrintn fEndSub 程序如下 PrivateSubForm Click DimI n p n InputBox 请输入n的值 1 32767 p 1ForI 1Tonp p 4 I I 2 I 1 2 I 1 NextIp 2 pPrint n n 时 pEndSub 三 While循环 For Next循环 它适合于解决循环次数事先能够确定的问题 对于只知道控制条件 但不能预先确定需要执行多少次循环体的情况 我们可以使用While循环 While语句格式如下 While条件 循环体 Wend 1 While语句说明 条件 可以是关系表达式或逻辑表达式 While循环就是当给定的 条件 为True时 执行循环体 为False时不执行循环体 因此While循环也叫当型循环 2 执行过程 1 执行While语句 判断条件是否成立 2 如果条件成立 就执行循环体 否则 转到 4 执行 3 执行Wend语句 转到 1 执行 4 执行Wend语句下面的语句 结合下面的程序段 我们做进一步的说明 x 1Whilex 5Printx x x 1Wend该程序段的执行结果是 1234 3 While循环的几点说明 1 While循环语句本身不能修改循环条件 所以必须在While Wend语句的循环体内设置相应语句 使得整个循环趋于结束 以避免死循环 2 While循环语句先对条件进行判断 然后才决定是否执行循环体 如果开始条件就不成立 则循环体一次也不执行 3 凡是用For Next循环编写的程序 我们都可以用While Wend语句实现 反之 则不然 例5 5 假设我国现有人口12亿 若年增长率为1 5 试计算多少年后我国人口增加到或超过20亿 人口计算公式为 p y 1 r ny为人口初值 r为年增长率 n为年数 PrivateSubForm Click Dimp r I p 12r 0 015I 0Whilep 20p p 1 r I I 1WendPrintI 年后 我国人口将达到 p 亿 EndSub 四 Do循环 与前面介绍的While循环相比 Do循环具有更强的灵活性 它可以根据需要决定是条件满足时执行循环体 还是一直执行循环体直到条件满足 Do循环有两种语句格式 格式1 Do while until Loop while until 格式2 Do Loop while until while until 例5 7 求两自然数m n的最大公约数 设计思想 1 m除以n得到余数r 2 若r 0 则n为要求的最大公约数 算法结束 否则执行 3 3 n m r n 再转到 1 执行 PrivateSubcommand1 Click Dimm n r m Val Text1 Text n Val Text2 Text r mModnDoUntilr 0m nn rr mModnLoopPrint 它们的最大公约数是 nEndSub 五 循环的嵌套 在一个循环体内又包含了一个完整的循环 这样的结构称为多重循环或循环的嵌套 在程序设计时 许多问题要用二重或多重循环才能解决 For循环 While循环 Do循环都可以互相嵌套 如在For Next的循环体中可以使用While循环 而在While Wend的循环体中也可以出现For循环等 二重循环的执行过程是外循环执行一次 内循环执行一遍 在内循环结束后 再进行下一次外循环 如此反复 直到外循环结束 例5 8 打印九九乘法表 分析 打印九九乘法表 只要利用循环变量作为乘数和被乘数就可以方便的解决 程序如下 PrivateSubForm Click Dimi j str PrintTab 35 九九乘法表 Fori 1To9Forj 1To9str i j i jPrintTab j 1 9 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 承德市人民医院传染病患者健康教育考核
- 张家口市中医院覆膜支架植入考核
- 衡水市中医院腹腔镜胆囊切除术独立操作资格认证
- 邢台市中医院细胞学快速评估考核
- 上海市中医院皮肤创伤修复技术考核
- 大学职场达人课件
- 2025第二人民医院新生儿先心病筛查技能考核
- 北京市中医院肾上腺B超诊断考核
- 2025江苏南通市属部分事业单位招聘卫生专业技术人员20人模拟试卷及答案详解1套
- 2025年度上饶市广信区公安局招聘编制外聘用人员25人模拟试卷及答案详解(名校卷)
- 高校财会监督与预算绩效管理协同效能优化研究
- 输液室理论知识培训课件
- 协会转让接手协议书模板
- 生物技术与医药前沿发展
- 家长学校综合测试题库与评分标准
- 加油站计量业务知识培训课件
- 公安矛盾纠纷化解课件
- 看板管理管理办法
- 2025至2030镍氢电池隔膜行业市场发展现状及竞争格局与投资价值报告
- 造林质量管理办法
- 冠心病人饮食健康管理
评论
0/150
提交评论