VB第四章顺序分支与循环结构.ppt_第1页
VB第四章顺序分支与循环结构.ppt_第2页
VB第四章顺序分支与循环结构.ppt_第3页
VB第四章顺序分支与循环结构.ppt_第4页
VB第四章顺序分支与循环结构.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章基本的控制结构 4 1顺序结构4 2选择结构4 3循环结构4 4其它辅助控制语句4 5常用算法 一 4 6常见错误 顺序 条件 循环 4 1顺序结构 一 赋值语句P96形式 LET 变量名 表达式作用 将表达式的值赋值给变量名 一般用于给变量赋值或对控件设定属性值 例 sRate 0 1Text1 Text 欢迎使用VisualBasic6 0 当表达式的类型与变量的类型不一致时 强制转换成左边的精度iA 10 3iA中的结果为3注意 错误的赋值语句 二 与用户交互函数和过程1 InputBox函数P80InputBox 提示 标题 缺省 x坐标位置 y坐标位置 其中 提示提示信息 标题对话框标题 缺省输入区缺省值函数返回字符类型 注意多行提示信息的显示方法 DimstrNameAsString 40strName InputBox 请输入你的姓名 vbCrLf 然后单击确定 输入框 也可以使用如下语句 DimstrNameAsString 40 strS1AsString 40strS1 请输入你的姓名 Chr 13 Chr 10 然后单击确定 strName InputBox strS1 输入框 100 100 当键盘输入 王晓明 后 变量strName获得键盘输入的值 2 MsgBox函数和MsgBox过程P81函数形式 变量 MsgBox 提示 按钮 标题 过程形式 MsgBox提示 按钮 标题 按钮值如下 函数返回所选按钮整数值 例4 1编一帐号和密码检验程序 要求 帐号不超过6位数字 有错 清除原内容再输入 密码输入时在屏幕上以 代替 若密码错 显示有关信息 选择 重试 按钮 清除原内容再输入 选择 取消 按钮 停止运行 分析 帐号6位 MaxLength为6 LostFocus判断数字IsNumeric函数密码PassWordChar为 MsgBox函数设置密码错对话框 常见错误 数据合法性检查中引起程序的死循环 PrivateSubText1 LostFocus IfNotIsNumeric Text1 Thenmsgbox 请输入正整数 Text1 Text1 SetFocusEndIfEndSub PrivateSubText2 LostFocus IfNotIsNumeric Text2 Thenmsgbox 请输入正整数 Text2 Text2 SetFocusEndIfEndSub IfText2 AndNotIsNumeric Text2 当年龄框中输入非字符串 并按下Tab键时 就会出现循环的错误提示 例4 1 1 2009 3 22 4 2选择结构1 If Then语句 单分支结构 P100IfThen语句块EndIf或IfThen 例 已知两个数x和y 比较它们的大小 使得x大于y Ifx yThent xx yy tEndIf或Ifx yThent x x y y t 重要的是学会两个数的交换 若上述语句次序变一下 结果如何 单分支结构实现 y cos x x 3 3 xIfx0Theny sin x sqr x x 1 例如 计算分段函数 思考 如果上面的两个语句换一下顺序即 Ifx0Theny sin x sqr x x 1 y cos x x 3 3 x会是什么结果 2 If Then Else语句 双分支结构 P101IfThenElseEndIf也可以写为一行 格式为 IfThenElse 双分支结构实现 Ifx0Theny sin x sqr x x 1 Elsey cos x x 3 3 xEndIf 3 If语句的嵌套P102If语句的嵌套是指If或Else后面的语句块中又包含If语句 形式如下 IfThenIfThen EndIf EndIf 例4 4已知x y z三个数 使得x y z用一个IF语句和一个嵌套的IF语句实现 Ifx yThent x x y y tIfy zThent y y z z tIfx yThent x x y y tEndIfEndIf If语句的嵌套注意事项 书写锯齿型 If与EndIf配对 4 If Then ElseIf语句 多分支结构 P106形式 IfThenElseIfThen Else语句块n 1 EndIf 例如 成绩小于60吗 否的话小于70吗 例4 2已知变量strC中存放了一个字符 判断该字符是字母字符 数字字符还是其他字符 注 Ucase 小写变大写 Lcase 相反用多分支结构实现 IfUcase strC A AndUcase strC 0 AndstrC 9 ThenPrintstrC 是数字字符 ElsePrintstrC 其他字符 EndIf 不管有几个分支 依次判断 当某条件满足 执行相应的语句 其余分支不再执行 若条件都不满足 且有Else子句 则执行该语句块 否则什么也不执行 ElseIf不能写成ElseIf 例4 2a根据边长判断三角形类型 例4 3已知百分制成绩mark 显示对应的五级制成绩哪些正确 哪些错误 跳到常见错误 利用If语句的嵌套改写前面评分的错误程序如下 Ifmark 60thenI 及格 ifmark 70thenI 中 ifmark 80thenI 良 ifmark 90thenI 优 endifEndifendifprintIElseprint 不及格 Endif 与同类型的下面四种形式之一 表达式例 A 一组枚举表达式 用逗号分隔 2 4 6 8表达式1To表达式260To100Is关系运算符表达式Is 60 5 SelectCase语句 情况语句 P107形式 SelectCase变量或表达式Case表达式列表1语句块1Case表达式列表2语句块2 CaseElse语句块n 1 EndSelect 数值型或字符串表达式 务必注意不能写变量名 例4 5变量strC中存放了一个字符 判断该字符类型 在例4 2中用多分支结构实现 IfUcase strC A AndUcase strC 0 AndstrC 9 ThenPrintstrC 是数字字符 ElsePrintstrC 其他字符 EndIf用SelectCase语句实现 SelectCasestrCCase a To z A To Z PrintstrC 是字母字符 Case 0 To 9 PrintstrC 是数字字符 CaseElsePrintstrC 其他字符 EndSelect 例4 6已知坐标点 x y 判断其落在哪个象限 哪个能实现 哪个不能实现 方法一Ifx 0Andy 0ThenPrint 在第一象限 ElseIfx0ThenPrint 在第二象限 ElseIfx0Andy 0ThenPrint 在第四象限 EndIf 方法二SelectCasex yCasex 0Andy 0Print 在第一象限 Casex0Print 在第二象限 Casex0Andy 0Print 在第四象限 EndSelect 方法二代码错误 1 SelectCase后不能出现多个变量 应写为selectcasex2 Case后不能出现变量及有关运算符 应写为is 0 而非x 0 跳到常见错误 6 条件函数 补充 1 IIf函数形式是 IIf 表达式 当表达式为True时的值 当表达式为False时的值 例如 求x y中大的数 放入max变量中 语句如下 max IIf x y x y 2 Choose函数形式是 Choose 数字类型变量 值为1的返回值 值为2的返回值 例如 No是1 4的值 转换成 运算符的语句如下 No int rnd 4 1 Ysf Choose No 当值为1 返回字符串 然后放入Ysf变量中 值为2 返回字符串 依次类推 当No是1 4的非整数 系统自动取No的整数办法在判断 若No不在1 4之间 函数返回Null值 注意Rnd的用法 避免出现 固定的随机数 使用Randomize语句 常见错误1 在选择结构中缺少配对的结束语句对多行式的If块语句中 应有配对的EndIf语句结束 2 ElseIf关键字不要写成ElseIf 多个条件表达式次序问题 见例4 33 SelectCase语句的使用SelectCase后不能出现多个变量 Case子句后不能出现变量见例4 6 4 3循环结构P1101 Do Loop循环语句 用于控制循环次数未知 形式1 Do While Until 语句块 ExitDo 语句块 Loop 形式2 Do语句块 ExitDo 语句块 Loop While Until 先判断后执行 语句块可能一次也不执行 先执行后判断 语句块至少执行一次 DoWhile Loop示例i 5DoWhilei 10Printi i i 2Loop结果 579 DoUntil Loop示例i 5Dountili 10Printi i i 2Loop结果 579 Do LoopWhile示例i 5DoPrinti i i 2LoopWhilei 10结果 579 Do LoopUntil示例i 5DoPrinti i i 2Loopuntili 10结果 579 例4 11我国有13亿人口 按人口年增长0 8 计算 多少年后我国人口超过26亿 分析 解此问题两种方法 可根据公式 26 13 1 0 008 n直接利用标准对数函数求得 也可利用循环求得 程序如下 PrivateSubCommand1 Click x 13n 0DoWhilex 26x x 1 008n n 1LoopPrintn xEndSub 例4 12用辗转相除法求两自然数m n的最大公约数 分析 求最大公约数的算法思想 1 对于已知两数m n 使得m n 2 m除以n得余数r 3 若r 0 则n为最大公约数结束 否则执行 4 4 m n n r 再重复执行 2 例求m 14 n 6的最大公约数 Ifm0 m nn rr mmodnLoopPrint 最大公约数 n mnr1462620 辗转相减法m m nm nn n mn mm n为公约数m nDoWhilemnmnIfm nThen146m m n86Else26n n m24EndIf22Loop 例4 8计算1 100的奇数和 程序段如下 Dimi s s 0Fori 1To100step2s s INexti 0初值终值 0死循环 循环次数 要注意 出了循环 循环控制变量值的问题 例程序段 Fori 2To13Step3输出i的值分别为 Printi25811NextI最后输出结果为 I 14Print循环次数为Print I IFor语句执行次数为5次在循环体内对循环控制变量可多次引用 但最好不要对其赋值 否则影响原来的循环控制规律 参下面的例题 步长 例4 9改变循环控制变量对循环的影响 PrivateSubCommand1 Click j 0Fori 1To20Step2i i 3j j 1Print 第 j 次循环i iNextiPrint 退出循环后i iEndSub正常情况 i 1 3 5 7 9 11 13 15 17 19现在 i 4 9 14 19 例4 10输出可打印的ASCII码字符与它的编码值 3 循环的嵌套一个循环体内又包含了一个完整的循环结构称为循环的嵌套 例4 13打印各种九九乘法表 Fori 1To9Forj 1To9se iNextjPicture1 PrintNexti 思考 打印上三角或下三角程序如何改动 要打印下三角 Forii 1To10Forjj 1To20 NextiiNextjj Forii 1To10Forii 1To20 NextiiNextii Forii 1To10Forjj 1To20 NextjjNextii Forii 1To10 NextiiForii 1To10 Nextii 对于循环的嵌套 要注意以下事项 内循环变量与外循环变量不能同名 外循环必须完全包含内循环 不能交叉 不能从循环体外转向循环体内 反之则可以 正确错误 4 4其他辅助控制语句1 GoTo语句形式 GoTo 标号 行号 作用 无条件地转移到标号或行号指定的那行语句 标号是一个字符序列 行号是一个数字序列 2 Exit语句多种形式 ExitFor ExitDo ExitSub ExitFunction等 作用 退出某种控制结构的执行 3 End语句多种形式 End EndIf EndSelect EndWith EndType EndSub EndFunction 作用 End结束一个程序的运行 其余表示某个结构的结束 与对应的结构语句配对出现 4 With语句形式如下 With对象语句块EndWith作用 对某个对象执行一系列的操作 而不用重复指出对象的名称 WithLabel1 Height 2000 Width 2000 FontSize 22 Caption MyLabel EndWith Label1 Height 2000Label1 Width 2000Label1 FontSize 22Label1 Caption MyLabel 等价 实际应用举例 1 累加 连乘 1 100的5或7的倍数的和Sum 0Fori 1To100IfiMod5 0OriMod7 0ThenSum Sum iEndIfNextiPrintSum 3 10的乘积t 1Fori 3To10t t iNextiPrintt 思考 若把循环体前面置各变量初值的语句放在循环体内 程序运行时会产生什么情况 求下面表达式的近似值 要求其误差小于0 00001PrivateSubCommand1 Click Dimx 表达式的最终值Dimt 表达式中通项的值Dimn 项 EndSub 2 求素数素数是一个大于2 且不能被1和本身以外的整数整除的整数 判别某数m是否为素数最简单的方法是 对于m从i 2 3 m 1判别m能否被i整除 只要有一个能整除 m不是素数 否则m是素数 例4 15求100以内素数的代码 Form 2To100Fori 2Tom 1If mModi 0ThenGoToNotNextMNextiPrintmNotNextM Nextm m是否为素数 求100以内的素数 思考 此例用GoTo语句对非素数不作判断 若不用GoTo语句 如何修改程序 参见例题4 15 3 穷举法 穷举法 也称为 枚举法 或 试凑法 即将可能出现的各种情况一一测试 判断是否满足条件 一般采用循环来实现 例4 16百元买百鸡问题 假定小鸡每只5角 公鸡每只2元 母鸡每只3元 现在有100元钱要求买100只鸡 编程列出所有可能的购鸡方案 设母鸡 公鸡 小鸡各为x y z只 根据题目要求 列出方程为 x y y 1003x 2y 0 5z 100三个未知数 两个方程 此题有若干个解 解决此类问题采用 试凑法 把每一种情况都考虑到 方法一 最简单三个未知数利用三重循环来实现 方法二 从三个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论