分支与循环程序设计信息工程学院.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分支与循环程序设计信息工程学院.ppt

第4章 顺序、分支与循环程序设计 第4章 顺序、分支与循环程序设计 4.1 顺序程序设计 4.2 分支程序设计 4.3 循环程序设计 知识点 1. 掌握基本程序结构― 顺序结构、循环结构、分支结构及其汇编语言程序设计 2. 熟悉常见程序设计问题 数据范围判断(0-9、A-Z、a-z) 字母大小写转换; 求最大最小值、数据求和、统计字符个数 4.1 顺序程序设计 顺序程序完全按指令书写的前后顺序执行每一条指令,是最基本、最常见的程序结构 一般纯粹的顺序结构的程序设计较少 编写程序W?X+Y+Z mov ax,X add ax,Y add ax,Z mov W,ax 【例4.1】已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生学号放在变量NO中,查出的英语成绩放在变量EN中。 【例4.2】把字单元DAT1中的一个非压缩十进制数转换为一个压缩的十进制数,并将结果保存在字节单元DAT2中。 非压缩十进制数是指一个字节存储一位十进制数,其中高4位存0,低4位存BCD码 压缩十进制数是指一个字节存储2位十进制数 转换方法为采用循环左移的方法将DAT1中的0去除掉 4.2.1 分支结构 4.2.2 用分支指令实现分支结构程序 【例4.3】 【例4.4】 【例4.5】 4.3 循环程序设计 循环控制方式 ⑴ 计数控制:事先已知循环次数,设循环一次加/减1。 ⑵ 条件控制:事先不知循环次数,根据条件真假控制循环。 ⑶ 状态控制:根据事先设置或是实时检测的状态来控制循环。 ⑷ 逻辑尺控制:当循环条件不规则时,可通过位串(逻辑尺)来控制循环。 4.3.2 单循环程序设计 所谓单循环,即其循环体内不再包含循环结构,这种循环结构比较简单。 【例4.6】计算数组SCORE的平均整数并存入内存字变量AVERAGE中,数组以-1为结束标志。 分析: 求和的循环控制条件可用数组元素是否小于0来控制循环结束 【例4.7】试编写一个程序,要求比较两个字符串STR1和STR2所含字符是否相同,若相同则显示“MATCH!”,若不相同则显示“NO MATCH!”。 分析: (1)首先要比较两个字符串的字符个数是否相同,如不相同则直接显示不匹配。 (2)该程序的循环次数是已知的,即字符串长度 【例4.8】设有数组X和Y,试编写程序程序计算 Z1=X1+Y1,Z2=X2+Y2,Z3=X3-Y3, Z4=X4-Y4,Z5=X5-Y5,Z6=X6+Y6, Z7=X7-Y7,Z8=X8-Y8,Z9=X9+Y9, Z10=X10+Y10 分析: (1)虽然该例实现对10个组数进行运算,但运算操作符不同,且无规律可循。 (2)可设想把加用某个值表示(设用0),减用另一个值表示(设用1),十个式子的操作用10位二进制数位表示 (3)对于本例,若按Z1、Z2……Z10的计算顺序把它们的操作符自左向右排列起来,则操作符数值为0011011100,把它放入一个内存变量中,高6位无意义,这种存储单元称为逻辑尺。每次把逻辑尺右移一位,对移出位进行判断,若该位为0则加,为1则减,于是就可以用一个分支加循环程序实现所要求的功能。 【例4.9】在ADDR单元中存放着数Y的地址,试编制一程序把Y中1的个数存入COUNT单元中。 分析: (1)要测出Y中1 的个数就应逐位测试。一个比较简单的办法是可以根据最高有效位是否为1来计数,然后用移位的方法把各位数逐次移到最高位去。 (2)循环的结束可以用计数值为16来控制,但更好的办法是结合上述方法可以用测试数是否为0来作为结束条件,这样可以在很多情况下缩短程序的执行时间。 (3)考虑到Y本身为0的可能性,应该采用DO-WHILE的结构形式。 【例4.10】将正数N插入一个已整序的字数组的正确位置。该数组的首地址和末地址分别为ARRAY_HEAD和ARRAY_END,其中所有数均为正数且按递增的次序排列。 分析: (1)为空出要插入数的位置,已经扫描过的元素应向高地址移动一个字的距离 (2)算法上应该从数组的尾部向头部查找,逐字取出数组中的一个数K与N作比较,如KN,则把K向高地址移动一个字,然后继续查找;如K≤N,则把N插在K之前就可以结束程序了。 (3)这里只要求插入一个数,并不一定要扫描整个数组,所以可以用找到应插入数的位置作为循环的结束条件。(但要考虑边界情况) 注意: 如果N小于数组中所有数,则必须使循环及时结束,也就是说不允许查找的范围超过数组的首地址,本例的办法是:利用所有数均为正数的条件,在ARRAY_HEAD-2单元中存放‘-1’这个数,这样可以保证如果数N小于数组

文档评论(0)

busuanzi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档