基本的控制结构教学课件PPT控制结构及算法一.ppt_第1页
基本的控制结构教学课件PPT控制结构及算法一.ppt_第2页
基本的控制结构教学课件PPT控制结构及算法一.ppt_第3页
基本的控制结构教学课件PPT控制结构及算法一.ppt_第4页
基本的控制结构教学课件PPT控制结构及算法一.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

四 基本的控制结构 4 1顺序结构4 2选择结构4 3循环结构4 4其他辅助控制语句4 5常用算法 一 4 6常见错误 顺序 条件 循环 4 1顺序结构 顺序结构 代码按照书写顺序执行 主要语句包括赋值语句 输入语句 输出语句等 流程图如 4 1顺序结构 一 赋值语句形式 变量名 表达式或对象名 属性名 表达式说明 1 首先计算 后面表达式的值 然后再赋值给变量 2 赋值号左侧必须是变量或对象的属性 不能是常量 函数和表达式3 赋值号两边数据类型必须一致 否则强制转化成左侧的精度 4 不能在一条一句中同时给多个变量赋值 例 正确的 sr 0 1text1 text 欢迎使用visualbasic6 0 ia 10 3 ia的结果为3错误的 x y 10rnd 0 5x y 5 二 与用户交互函数和过程1 inputbox函数 输入函数inputbox 提示信息 对话框标题 缺省值 x坐标 y坐标 例 在屏幕上显示图示的对话框 相应的语句如下 dimstrnameasstring 40strname inputbox 请输入你的姓名 vbcrlf 然后单击确定 输入框 也可以使用如下语句 dimstrnameasstring 40 strs1asstring 40strs1 请输入你的姓名 chr 13 chr 10 然后单击确定 strname inputbox strs1 输入框 100 100 当键盘输入 王晓明 后 变量strname获得键盘输入的值 inputbox函数举例 例如 自由落体位移计算公式s 1 2 gt2 vt 输入初始速度v和下落时间t 求t时间内经过的距离s privatesubform click dimvassingledimt dimgassingle sassingleg 9 18v inputbox 请输入初始速度 t inputbox 请输入时间的值 s g t 2 2 v tprint 总共下落了 s 米 endsub 2 msgbox函数和msgbox语句 输出函数函数形式 变量 msgbox 提示 按钮 标题 语句形式 msgbox提示 按钮 标题按钮值如下 函数返回所选按钮整数值 例如 编一帐号和密码检验程序 要求 帐号不超过6位数字 有错 清除原内容再输入 密码输入时在屏幕上以 代替 若密码错 显示有关信息 选择 重试 按钮 清除原内容再输入 选择 取消 按钮 停止运行 分析 帐号6位 maxlength为6 lostfocus时判断isnumeric函数密码passwordchar为 msgbox函数设置密码错对话框 privatesubcommand1 click iftext2 text 12345 thenmsgbox 恭喜您 elseifvbretry msgbox 密码输入错误 vbretrycancel 48 错误提示 thentext2 setfocustext2 text elseendendifendifendsubprivatesubtext1 lostfocus ifisnumeric text1 text falseorlen text1 text 6thenifvbretry msgbox 用户名不是数字或者长度超过6位 重试 vbretrycancel 48 错误提示 thentext1 setfocustext1 text elseendendifendifendsub 4 2选择结构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 例 输入直角坐标系上某一点的坐标x和y 判断该点在哪个象限内 privatesubform click dimxassingle yassinglex inputbox 请输入x轴的坐标 输入框 y inputbox 请输入y轴的坐标 输入框 ifx 0andy 0thenmsgbox 坐标在第一象限内 elseifx0thenmsgbox 坐标在第二象限内 elseifx0andy 0thenmsgbox 坐标在第四象限内 elsemsgbox 坐标不在任何象限内 endifendsub 不管有几个分支 依次判断 当某条件满足 执行相应的语句 其余分支不再执行 若条件都不满足 且有else子句 则执行该语句块 否则什么也不执行 elseif不能写成elseif 例如 已知百分制成绩mark 显示对应的五级制成绩哪些正确 哪些错误 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配对 可以有以下形式 1 常数 case a 2 一组枚举值 case2 4 6 83 常数范围 case1to104 比较判断 caseis10 5 selectcase语句 情况语句 形式 selectcase测试表达式case表达式列表1语句块1case表达式列表2语句块2 caseelse语句块n 1 endselect 数值或字符串表达式 注意 1 case后不支持多条件表达式 如caseis 5andis 10这种写法是错误的 2 如果 测试表达式 的值与多个case子句的值匹配 执行第一个出现的case子句后的 语句块 例 变量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 例4 6已知坐标点 x y 判断其落在哪个象限 哪个能实现 哪个不能实现 方法一ifx 0andy 0thenprint 在第一象限 elseifx0thenprint 在第二象限 elseifx0andy 0thenprint 在第四象限 endif 方法二selectcasex ycasex 0andy 0print 在第一象限 casex0print 在第二象限 casex0andy 0print 在第四象限 endselect 方法二代码错误 1 selectcase后不能出现多个变量 2 case后不能出现变量及有关运算符 4 3循环结构1 for循环语句 一般用于循环次数已知 for循环变量 初值to终值 step步长 语句块 exitfor 语句块next循环变量 例计算1 100的奇数和 程序段如下 dimi s s 0fori 1to100step2s s inexti 0初值终值 0死循环 循环次数 要注意 循环结束后 循环变量值的问题 例程序段 fori 2to13step3循环执行次数printi 输出i的值分别为 25811nextiprint i i循环结束后 输出为 i 14在循环体内对循环变量可多次引用 但最好不要对其赋值 否则影响原来的循环规律 步长 例改变循环变量对循环的影响 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 题目 事件 单击窗体 响应 求100以内偶数的和 并将结果输出在窗体上 将结果存入变量sum中注意 请在指定的事件内编写代码 dimsumasinteger program end yzj sum endsubprivatesubyzj iasinteger dimoutasintegerout freefileopenapp path 26 out foroutputas outprint out iclose outendsuboptionexplicit 题目 事件 双击窗体 响应 求出100 200之间 能被5整除 但不能被3整除的数 并求所有数之和 存入变量中sum中注意 请在指定的事件内编写代码 dimsumasintegersum 0 program end printsumyzj sum endsubprivatesubyzj iasinteger dimoutasintegerout freefileopenapp path 17 out foroutputas outprint out iclose outendsuboptionexplicit 题目 事件 单击窗体 响应 求1 2 3 10 的值 并在窗体上输出 结果存入变量l中 注意 请在指定的事件内编写代码 dimlaslong program end yzj l endsubprivatesubyzj iaslong dimoutasintegerout freefileopenapp path 21 out foroutputas outprint out iclose outendsub 程序改错 题目 求s 72 102 132 832的值 注意 不可增加或删除程序行 也不可以更改程序结构privatesubform click clsdimsaslongdimiasinteger found s 1 found fori 7to832s s i found next30printsendsub 2 do loop循环语句 用于控制循环次数未知 形式1 do while until 语句块 exitdo语句块 loop 形式2 do语句块 exitdo语句块 loop while until privatesubform click dimiasintegeri 1dowhilei 20printii i 1loopendsub privatesubform click dimiasintegeri 1dountili 20printii i 1loopendsub privatesubform click dimiasintegeri 1doprintii i 1loopwhilei 20endsub privatesubform click dimiasintegeri 1doprintii i 1loopuntili 20endsub 例如 使用do loop循环打印1到20的整数 例 我国有13亿人口 按人口年增长0 8 计算 多少年后我国人口超过26亿 分析 解此问题两种方法 可根据公式 26 13 1 0 008 n直接利用标准对数函数求得 也可利用循环求得 程序如下 privatesubcommand1 click x 13n 0dowhilex 26x x 1 008n n 1loopprintn xendsub 例 已知自然数e的公式e 1 1 1 1 2 1 n 计算e的值 精确到10 6 程序如下 privatesubform click dimeassingledimtassingledimnasintegerdimmasintegere 1m 0n 1t 1dom m 1n n mt t ne e tloopwhilet 0 000001print e eprint m mendsub 例 用辗转相除法求两自然数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 循环的嵌套一个循环体内又包含了一个完整的循环结构称为循环的嵌套 例 打印九九乘法表 privatesubcommand1 click dimiasintegerdimjasintegerpicture1 printtab 51 九九乘法表 fori 1to9forj 1to9picture1 printinextjpicture1 printnextiendsub 思考 打印上三角或下三角程序如何改动 要打印下三角 forii 1to10forjj 1to20 nextiinextjj forii 1to10forii 1to20 nextiinextii forii 1to10forjj 1to20 nextjjnextii forii 1to10 nextiiforii 1to10 nextii 对于循环的嵌套 要注意以下事项 内循环变量与外循环变量不能同名 外循环必须完全包含内循环 不能交叉 不能从循环体外转向循环体内 反之则可以 正确错误 4 5常用算法 一 算法是对某个问题求解过程的描述1 累加 连乘 1 100的5或7的倍数的和sum 0fori 1to100ifimod5 0orimod7 0thensum sum iendifnextiprintsum 3 10的乘积t 1fori 3to10t t inextiprintt 思考 若把循环体前面置各变量初值的语句放在循环体内 程序运行时会产生什么情况 2 求素数素数是一个大于2 且不能被1和本身以外的整数整除的整数 判别某数m是否为素数最简单的方法是 对于m从i 2 3 m 1判别m能否被i整除 只要有一个能整除 m不是素数 否则m是素数 例求100以内素数的代码 privatesubform click dimiasinteger jasinteger ppasintegerfori 2to100pp 1forj 2toint sqr i ifimodj 0thenpp 0nextjifpp 1thenprinti nextiendsub m是否为素数 求100以内的素数 3 穷举法 穷举法 也称为 枚举法 或 试凑法 即将可能出现的各种情况一一测试 判断是否满足条件 一般采用循环来实现 例 百元买百鸡问题 假定小鸡每只5角 公鸡每只2元 母鸡每只3元 有100元钱要求买100只鸡 编程列出所有可能的购鸡方案 设母鸡 公鸡 小鸡各为x y z只 根据题目要求 列出方程为 x y z 1003x 2y 0 5z 100三个未知数 两个方程 此题有若干个解 解决此类问题采用 试凑法 把每一种情况都考虑到 方法一 最简单三个未知数利用三重循环来实现 方法二 从三个未知数的关系 利用两重循环来实现 4 递推法 递推法 又称为 迭代法 其基本思想是把一个复杂的计算过程转化为简单过程的多次重复 每次重复都从旧值的基础上递推出新值 并由新值代替旧值 例 猴子吃桃子 小猴在某天摘桃若干个 当天吃掉一半多一个 第二天吃了剩下的桃子的一半多一个 以后每天都吃尚存桃子的一半多一个 到第7天要吃时只剩下一个 问小猴共摘下了多少个桃子 分析 设猴子第i天要吃时还有x个桃子 则第i 1天应该有 x 1 2个桃子 利用递推法算出第一天摘了多少个桃子 privatesubf

温馨提示

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

评论

0/150

提交评论