




已阅读5页,还剩77页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章 VB算法基础及基本语句 主要内容 三种程序结构 顺序 分支 循环 赋值语句条件分支语句 共五种 笔记 作业 实验 求两个自然数的最大公约数的算法 欧几里德算法 S1 输入两个自然数M NS2 求M除以N的余数RS3 使M N 即用N代换MS4 使N R 即用R代换NS5 若R 0 则重复执行S2 S3 S4 循环 否则转S6S6 输出M M即为M和N的最大公约数 基本算法结构图 顺序 分支 循环 4 2 1赋值语句 1 形式Var 如 s Thisisaflower Number 72Text font size 12Y a b 2作用 将表达式的值赋值给变量名 一般用于给变量赋值或对控件设定属性值 2 不同数据类型数据的赋值当表达式的类型与变量的类型不一致时 强制转换成左边的精度 如iA 10 3iA中的结果为3注意 虽然赋值号与关系运算符 等号 都用 表示 VB系统会根据所处的位置自动判断是何种意义的符号 注意点 P59 60 4 2 2InputBox函数 InputBox函数作用 用来接受用户通过键盘输入的数据 形式 V InputBox Prompt Title Default x y helpfile context 其中 提示 提示信息 标题 对话框标题 缺省 输入区缺省值函数返回字符类型 举例 下页 PrivateSubForm Click PassWord InputBox 输入你的口令 程序示例 IfPassWord 123456 ThenPrint OK ElsePrint Error EndIfEndSub 函数返回值 4 2 3MsgBox函数 作用 MsgBox函数用于向用户发布提示信息 并要求用户作出必要的响应 形式是 MsgBox Prompt button title helpfile context P72 button 这是一个由4个数值常量组成的式子 形式为c1 c2 c3 c4 PrintMsgBox 非法数据 vbOKOnly 48 0 提示信息 PrintMsgBox 请输入X值 16 vbOKOnly ex4 6 MsgBox函数根据用户选择单击的按钮而返回不同的值 参见P63表4 3 顺序结构 4 3分支结构和分支结构语句 结构示意图 1 IF条件THEN一条语句2 if条件THEN语句组 多条语句 endif3 if条件then语句组1else语句组2endif 4 if条件1then语句组1elseif条件2then语句组2elseif条件3then语句组3 else语句组n endif 1 If Then语句 单分支结构 IfThen语句块EndIf或IfThen 例 已知两个数x和y 比较它们的大小 使得x大于y Ifx yThent xx yy tEndIf或Ifx yThent x x y y t 重要的是学会两个数的交换 若上述语句次序变一下 结果如何 2 If Then Else语句 双分支结构 IfThenElseEndIfIfThenElse计算分段函数 单分支结构实现 y cos x x 3 3 xIfx0Theny sin x sqr x x 1 双分支结构实现 Ifx0Theny sin x sqr x x 1 Elsey cos x x 3 3 xEndIf 3 If Then ElseIf语句 多分支结构 形式 IfThenElseIfThen Else语句块n 1 EndIf PrivateSubCommand1 Click DimxAsIntegerx Val Text1 Text Ifx 1ThenText2 Text 小于1的数 ElseIfx 10ThenText2 Text 1到10之间 ElseText2 Text 大于10的数 EndIfEndSub 例已知变量strC中存放了一个字符 判断该字符是字母字符 数字字符还是其他字符 用多分支结构实现 不管有几个分支 依次判断 当某条件满足 执行相应的语句 其余分支不再执行 若条件都不满足 且有Else子句 则执行该语句块 否则什么也不执行 ElseIf不能写成ElseIf IfUcase strC A AndUcase strC 0 AndstrC 9 ThenPrintstrC 是数字字符 ElsePrintstrC 其他字符 EndIf 4 If语句的嵌套If语句的嵌套是指If或Else后面的语句块中又包含If语句 形式如下 IfThenIfThen EndIf EndIf 例 已知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配对 5 Select Case EndSelect结构语句SelectCaseeCasec1A组语句Casec2B组语句 CaseElsen组语句EndSelect e称为测试表达式 c1 c2 是测试项它们可取三种形式 1 具体取值 如 3 5 7 2等 2 连续的数据范围 如 8To20 B To H 等 3 满足某个判决条件 如 Is 20 Is30 表达式列表1 语句块1 语句块n 1 表达式列表2 表达式列表n 语句块2 语句块n T T T F F F PrivateSubCommand1 Click DimxAsIntegerx Val text1 Text SelectCasexCaseIs 1Text2 text 这是小于1的数 Case1To10Text2 Text 这是1到10之间的数 CaseElseText2 Text 这是大于10的数 EndSelectEndSub 例变量strC中存放了一个字符 判断该字符类型 在前面例中用多分支结构实现 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 DimxAsSingle yAsSinglex Val Text1 Text Ifx 0Theny 1 xElsey 1 2 xEndIfText2 Text y 输入x 计算y的值 其中1 x x 0 Y 1 2x x 0 思考题 1 学校对学习成绩优良的学生进行奖励 获奖的条件如下 1 所考5门课的成绩都在88分以上 2 前3门 主课 的成绩都在95分以上 其他两门 非主课 的成绩都在80分以上 输入某学生5门课的成绩s1 s2 s3 s4 s5 判断他是否能够获奖 2 利用输入框函数输入3个不同的数 选出其中最大的数 3 铁路托运行李 从甲地到乙地 规定每张客票托运费计算方法是行李重量不超过50kg时 0 25元 kg 超过50kg而不超过100kg时 其超过部分按0 35元 kg收费 超过100kg时 其超过部分按0 45元 kg收费 编写程序 输入行李重量 计算并输出托运的费用 设行李重量为wkg 应付运费为x元 则运费公式为 0 25 w w100 4 某百货公司为了促销 采用购物打折扣的优惠办法 每位顾客一次购物 1 在1000元以上者 按九五折优惠 2 在2000元以上者 按九折优惠 3 在3000元以上者 按八五折优惠 4 在5000元以上者 按八折优惠 编写程序 输入购物款数 计算并输出优惠价 5 已知两个变量x和y 比较它们的大小 使得x中的值大于y 下面那个方法能实现 Ifx ythenA x y y xB x t t y y tC t y y x x tD x y t y x t 常见错误1 在选择结构中缺少配对的结束语句对多行式的If块语句中 应有配对的EndIf语句结束 2 多边选择ElseIf关键字的书写和条件表达式的表示ElseIf不要写成ElseIf 多个条件表达式次序问题 3 SelectCase语句的使用SelectCase后不能出现多个变量 Case子句后不能出现变量 例 已知百分制成绩mark 显示对应的五级制成绩哪些正确 哪些错误 例 已知坐标点 x y 判断其落在哪个象限 方法一Ifx 0Andy 0ThenPrint 在第一象限 ElseIfx0ThenPrint 在第二象限 ElseIfx0Andy 0ThenPrint 在第四象限 EndIf 方法二SelectCasex yCasex 0Andy 0Print 在第一象限 Casex0Print 在第二象限 Casex0Andy 0Print 在第四象限 EndSelect 哪个能实现 哪个不能实现 方法二代码错误 1 SelectCase后不能出现多个变量 2 Case后不能出现变量及有关运算符 习题 1 下面程序运行后输出的结果是 X Int Rnd 3Ifx 2 8theny x 2 1Ifx 2 9theny x 2 2Ifx 2 8theny x 3Printy 2 下面的程序段是检查输入的算术表达式中圆括号是否配对 并显示相应的结果 本程序在文本框输入表达式 边输入 边统计 以输入回车符作为表达式输入结束 然后显示结果 Dimcount1 PrivateSubText1 KeyPress KeyAsciiAsInteger If 1 Thencount1 count1 1ElseIf 2 Then 3 EndIfIfKeyAscii 13ThenIf 4 ThenPrint 左右括号配对 ElseIf 5 ThenPrint 左括号多于右括号 count1 个 ElsePrint 右括号多于左括号 count1 个 EndIfEndIfEndSub 四 循环结构及循环语句 1 DO LOOP语句及其对应的四种循环结构注意 先判后做先做后判保证 不多做一次 不少做一次 P68 P69 DoWhile条件Do ExitDo ExitDo LoopLoopWhile条件 条件为TRUE 循环 条件为FALSE 退出循环 DoDoUntil条件 ExitDo ExitDo LoopUntil条件Loop 条件为FALSE 循环 条件为TRUE 退出循环 在Do语句和Loop语句之间的语句即为循环体语句 ExitDo语句时 就会直接退出本层循环 转而执行Loop语句的下一条语句 此语句最常用的形式是与If Then语句相结合 即 IfeThenExitDo 求两个自然数的最大公约数的算法 欧几里德算法 S1 输入两个自然数M NS2 求M除以N的余数RS3 使M N 即用N代换MS4 使N R 即用R代换NS5 若R 0 则重复执行S2 S3 S4 循环 否则转S6S6 输出M M即为M和N的最大公约数 PrivateSubCommand1 Click Dimmaslong naslong rAsLongm Val Text1 Text 取数据Mn Val Text2 Text 取数据NIfmInt m ormInt n orn 1ThenText3 Text 数据错误 ElseIfm nThent m m n n tDo 求最大公约数r mModnm nn rLoopUntilr 0Text3 Text CStr m 输出最大公约数EndIfEndSub 判断数据是否合法 r 1Dountilr 0r mModnm nn rLoop 求最大公约数 Dor mModnm nn rLoopUntilr 0 r 1Dowhiler0r mModnm nn rLoop Dor mModnm nn rLoopwhiler0 1 2 3 4 whiler0 whiler0 例 我国有13亿人口 按人口年增长0 8 计算 多少年后我国人口超过26亿 PrivateSubCommand1 Click x 13n 0DoWhilex 26x x 1 008n n 1LoopPrintn xEndSub 2 计数型循环语句 一般形式是 Forv e1Toe2 Stepe3 ExitFor Nextvv是循环控制变量 应为整型或单精度型 循环体 e1 e2和e3是控制循环的参数 e1为初值 e2为终值 e3为步长 当e3 1时 stepe3部分可以省略 For Next循环结构语句的执行方式 计算e1 e2和e3的值 如果e1 e2 e3为算术表达式 给v赋初值 进行判别 判别v是否超过e2 超过则退出循环 执行Next下一语句 执行Next语句 系统执行下述操作 v增加一个步长 即执行v v e3 转而执行判别操作 For Next循环的正常循环次数用下式计算 Int e2 e1 e3 1 For Next示例 1 用For语句写程序 在一行上输出60个 号 Fori 1To60Print NextI PrivateSubForm Click Fori 1To10Step2Printi NextiPrint i iEndSub 注意 PrintI与PrintI 的区别 例计算1 100的奇数和 程序段如下 Dimi s S 0Fori 1To100step2s s iNexti For Next示例 1 求N N为自然数 由阶乘定义可知 N 1 2 3 N 2 N 1 N N 1 N k 1Fori 1Tonk k iNexti k 1Fori nTo1step 1k k iNexti For Next示例 控制变量的 初值 终值 和 步长 在进入For循环时 就被系统 记住 了 并不会因为循环体内对它的修改而影响循环执行的次数 例如 x 2 y 8 z 3Fora xToyStepzx 1 y 11 z 2Printa Nexta 输出结果是 258 循环体内虽然对x y z重新赋值 但程序仍按原来设定的初值 终值和步长去运行 ForI 1to10step2printI nexti I 1doprintI I I 2loopuntilI 10 分析 两段程序的功能一样 两种语句的特点 那种较为合适 例 改变循环控制变量对循环的影响 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 在循环体内对循环控制变量可多次引用 但最好不要对其赋值 否则影响原来的循环控制规律 A 1 b 0Dowhilea 5b b a aa a 1LoopPrinta b Dimchasstring IasintegerCh DEF ForI 1tolen ch ch mid ch 2 I 1 1 left ch len ch printchNexti 关于循环嵌套 一个循环体内又包含了一个完整的循环结构称为循环的嵌套 例 九九乘法表的实现 PrivateSubCommand1 Click Fori 1To9Forj 1To9se iNextjPicture1 PrintNextiEndSub执行本程序 图片框上将显示九九乘法表 换行 作用 Forii 1To10Forjj 1To20 NextiiNextjj Forii 1To10Forii 1To20 NextiiNextii Forii 1To10Forjj 1To20 NextjjNextii Forii 1To10 NextiiForii 1To10 Nextii 对于循环的嵌套 要注意以下事项 内循环变量与外循环变量不能同名 外循环必须完全包含内循环 不能交叉 不能从循环体外转向循环体内 反之则可以 正确错误 3 设计循环程序的关键 需要解决的问题有规律 哪个变 怎么变 确定控制变量 了解两种循环语句的功能与特点 选择合适的循环语句 保证不多做一次 不少做一次尝试编写循环体语句静态走一遍 结果 调试 最后正确 其他辅助控制语句1 GoTo语句形式 GoTo 标号 行号 作用 无条件地转移到标号或行号指定的那行语句 标号是一个字符序列 行号是一个数字序列 2 Exit语句多种形式 ExitFor ExitDo ExitSub ExitFunction等 作用 退出某种控制结构的执行 3 End语句多种形式 End EndIf EndSelect EndWith EndType EndSub EndFunction 作用 End结束一个程序的运行 其余表示某个结构的结束 与对应的结构语句配对出现 PrivateSubCommand1 Click Dimintranum i j aAsIntegerRandomize 随机化语句Fori 1To1000intranum Int 100 Rnd 1 产生1 100间随机数a 0Forj 1To10000 延时a a 1NextjText1 Text CStr intranum Text1 Refresh 文本框刷新NextiText1 Text CStr intranum EndSub 4 举例 4 5常用算法 算法是对某个问题求解过程的描述1 累加 连乘 1 100的5或7的倍数的和Sum 0Fori 1To100IfiMod5 0OriMod7 0ThenSum Sum iEndIfNextiPrintSum 3 10的乘积t 1Fori 3To10t t iNextiPrintt 思考 若把循环体前面置各变量初值的语句放在循环体内 程序运行时会产生什么情况 例 求自然对数e的近似值 要求其误差小于0 00001 近似公式为 该例题涉及两个问题 1 用循环结构求级数和的问题 本例根据某项值的精度来控制循环的结束与否 2 累加 s s t循环体外对累加和的变量清零s 0连乘 n n i循环体外对连乘积变量置1n 1PrivateSubForm Click Dimi neEndSub 用以下公式计算sin x 的值 当最后一项的绝对值小于10 7时 停止计算 X的值由键盘输入 分析 设变量t用于存放中间项的计算结果 并且当第n项值 10 7时结束计算 即循环结束条件为t的绝对值 1E 7 可以把算法描述为 再看和式中第n项tn的值与第n 1项的递推关系 t 第1项值 s t n 1DoUntilAbs t 1E 7n n 1t 第n项值s s tLoop 2 求素数素数是一个大于2 且不能被1和本身以外的整数整除的整数 判别某数m是否为素数最简单的方法是 对于m从i 2 3 m 1判别m能否被i整除 只要有一个能整除 m不是素数 否则m是素数 求100以内素数的代码 PrivateSubCommand1 Click DimIasinteger masinteger flagasbooleanForm 2To100flag trueFori 2Tom 1If mModi 0Thenflag falseNextiIfflagthenPrintmNextmEndSub 3 穷举法 穷举法 也称为 枚举法 或 试凑法 即将可能出现的各种情况一一测试 判断是否满足条件 一般采用循环来实现 百元买百鸡问题 假定小鸡每只5角 公鸡每只2元 母鸡每只3元 现在有100元钱要求买100只鸡 编程列出所有可能的购鸡方案 设母鸡 公鸡 小鸡各为x y z只 根据题目要求 列出方程为 x y z 1003x 2y 0 5z 100三个未知数 两个方程 此题有若干个解 解决此类问题采用 试凑法 把每一种情况都考虑到 方法一 最简单三个未知数利用三重循环来实现 方法二 从三个未知数的关系 利用两重循环来实现 PrivateSubForm Click dimxasinteger yasinteger zasintegerEndSub 改进 Forx 0to33fory 0to50if3 x 2 y 0 5 100 x y 100thenprintx y 100 x yendifnextyNextx forx 0to100fory 0to100forz 0to100ifx y z 100and3 x 2 y 0 5 z 100thenprintx y zendifnextznextynextx 4 递推法 递推法 又称为 迭代法 其基本思想是把一个复杂的计算过程转化为简单过程的多次重复 每次重复都从旧值的基础上递推出新值 并由新值代替旧值 猴子吃桃子 小猴在某天摘桃若干个 当天吃掉一半多一个 第二天吃了剩下的桃子的一半多一个 以后每天都吃尚存桃子的一半多一个 到第7天要吃时只剩下一个 问小猴共摘下了多少个桃子 分析 这是一个 递推 问题 先从最后一天推出倒数第二天的桃子 再从倒数第二天的桃子推出倒数第三天的桃子 设第n天的桃子为xn 那么它是前一天的桃子数的xn 1的一半减1 即xn xn 1 1 2 PrivateSubForm Click dimnasinteger Iasintegerx 1print 第7天的桃子数为 1只 forI 6to1step 1x x 1 2print 第 I 天的桃子数为 x 只 nextiEndSub 5 最小 最大值在若干个数中求最大值 一般先假设一个较小的数为最大值的初值 若无法估计较小的值 则取第一个数为最大值的初值 然后将每一个数与最大值比较 若该数大于最大值 将该数替换为最大值 依次逐一比较 例随机产生10个100 200之间的数 求最大值 PrivateSubCommand1 Click Max 100Fori 1To10 x Int Rnd 101 100 Printx Ifx MaxThenMax xNextiPrintPrint 最大值 MaxEndSub 实际应用 求最短残料 有一根长度为321米的钢材料 要将它截取成两种规格a b的长度分别为17米和27米的短料 每种至少1段 问分隔成a b各多少段后 剩余的残料r最少 分析 该题利用 试凑法 通过二重循环求残料r的最小值正数 残料不可能是负数 程序如下 PrivateSubCommand1 Click Dima b min ia ib min 321 最小值初值取钢材料的长度Forb 1To321 27 b最多的段数Fora 1To321 17 a最多的段数t 321 b 27 a 17 当前的残料Ift 0Andt minThenmin t 求最短的残料ia a 最短残料时a的段数ib b 最短残料时b的段数EndIfNextaNextbPrintia ib rEndSub 二级真题练习 阅读下面程序 单击窗体
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能制造面试预测题
- 2025年文化旅游策划师高级笔试预测题
- 2025年心理健康师初级面试常见问题及参考答案
- 2025年河道保洁员面试问题及标准答案集锦
- 2025年物业空调工笔试模拟题库
- 2025年香席师高级考试模拟题库
- 2025年城市运行客服面试模拟题库大全
- 养老院服务协议
- 2025年礼宾接待笔试模拟题集
- 2025年暑期消防安全题集及答案
- 施工对内协调管理制度
- 黔南布依族苗族自治州矿产资源总体规划(2021-2025年)
- 2025年四川宜宾江安县国有资产管理中心县属国有企业招聘笔试参考题库含答案解析
- al+医疗创业计划书
- CJ/T 391-2012生活垃圾收集站压缩机
- 医药公司廉政管理制度
- 2025届黄冈教育共同体高三4月联合考试语文试卷含答案
- 离婚车辆转让协议书
- 电影投资意向协议书
- 《慢性肾病治疗策略》课件
- 统编版(2025年春季)七年级下册《道德与法治》期末复习知识点提纲填空练习版(含答案)
评论
0/150
提交评论