写出非结构化多分支选择结构语句形式-查字典问答网
分类选择

来自梁煦宏的问题

  写出非结构化多分支选择结构语句形式

  写出非结构化多分支选择结构语句形式

1回答
2020-05-06 22:39
我要回答
请先登录
李民选

  结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的.转移语句可以使程序的控制流程强制性的转向程序的任一处,在传统流程图中,就是用上节我们提到的"很随意"的流程线来描述这种转移功能.如果一个程序中多处出现这种转移情况,将会导致程序流程无序可寻,程序结构杂乱无章,这样的程序是令人难以理解和接受的,并且容易出错.尤其是在实际软件产品的开发中,更多的追求软件的可读性和可修改性,象这种结构和风格的程序是不允许出现的.为此提出了程序的三种基本结构.

  在讨论算法时我们列举了程序的顺序、选择和循环三种控制流程,这就是结构化程序设计方法强调使用的三种基本结构.算法的实现过程是由一系列操作组成的,这些操作之间的执行次序就是程序的控制结构.1996年,计算机科学家Bohm和Jacopini证明了这样的事实:任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成.所以,这三种结构就被称为程序设计的三种基本结构.也是结构化程序设计必须采用的结构.

  1.顺序结构

  顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的,其流程如图1-6所示.图中的s1和s2表示两个处理步骤,这些处理步骤可以是一个非转移操作或多个非转移操作序列,甚至可以是空操作,也可以是三种基本结构中的任一结构.整个顺序结构只有一个入口点a和一个出口点b.这种结构的特点是:程序从入口点a开始,按顺序执行所有操作,直到出口点b处,所以称为顺序结构.上一节图1-2表示的就是一个顺序结构的流程图.事实上,不论程序中包含了什么样的结构,而程序的总流程都是顺序结构的.例如,在图1-3、图1-4和图1-5所表示的流程图中,其总体结构流程都是自上而下顺序执行的.

  2.选择结构

  选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行.选择结构有单选择、双选择和多选择三种形式.

  双选择是典型的选择结构形式,其流程如图1-8所示,图中的s1和s2与顺序结构中的说明相同.由图中可见,在结构的入口点a处是一个判断框,表示程序流程出现了两个可供选择的分支,如果条件满足执行s1处理,否则执行s2处理.值得注意的是,在这两个分支中只能选择一条且必须选择一条执行,但不论选择了哪一条分支执行,最后流程都一定到达结构的出口点b处.前面的图1-3中就采用了双选择结构流程图.

  当s1和s2中的任意一个处理为空时,说明结构中只有一个可供选择的分支,如果条件满足执行s1处理,否则顺序向下到流程出口b处.也就是说,当条件不满足时,什么也没执行,所以称为单选择结构,如图1-7所示.

  多选择结构是指程序流程中遇到如图1-9所示的s1、s2、……、sn等多个分支,程序执行方向将根据条件确定.如果满足条件1则执行s1处理,如果满足条件n则执行Sn处理,总之要根据判断条件选择多个分支的其中之一执行.不论选择了哪一条分支,最后流程要到达同一个出口处.如果所有分支的条件都不满足,则直接到达出口.有些程序语言不支持多选择结构,但所有的结构化程序设计语言都是支持的,C语言是面向过程的结构化程序设计语言,它可以非常简便的实现这一功能.本书在第五章将详细介绍各种形式的选择结构应用问题.

  3.循环结构

  循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环.在循环结构中最主要的是:什么情况下执行循环?哪些操作需要循环执行?循环结构的基本形式有两种:当型循环和直到型循环,其流程如图1-10所示.图中虚线框内的操作称为循环体,是指从循环入口点a到循环出口点b之间的处理步骤,这就是需要循环执行的部分.而什么情况下执行循环则要根据条件判断.

  当型结构:表示先判断条件,当满足给定的条件时执行循环体,并且在循环终端处流程自动返回到循环入口;如果条件不满足,则退出循环体直接到达流程出口处.因为是"当条件满足时执行循环",即先判断后执行,所以称为当型循环.其流程如图1-10(a)所示.

  直到型循环:表示从结构入口处直接执行循环体,在循环终端处判断条件,如果条件不满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达流程出口处,是先执行后判断.因为是"直到条件为真时为止",所以称为直到型循环.其流程如图1-10(b)所示.本章图1-5用迭代法求和的流程图就是一个典型的直到型循环结构.

  同样,循环型结构也只有一个入口点a和一个出口点b,循环终止是指流程执行到了循环的出口点.图中所表示的S处理可以是一个或多个操作,也可以是一个完整的结构或一个过程.

  整个虚线框中是一个循环结构.

  通过三种基本控制结构可以看到,结构化程序中的任意基本结构都具有唯一入口和唯一出口,并且程序不会出现死循环.在程序的静态形式与动态执行流程之间具有良好的对应关系.

  1.3.2N-S流程图

  N-S流程图是结构化程序设计方法中用于表示算法的图形工具之一.对于结构化程序设计来说,传统流程图已很难完全适应了.因为传统流程图出现得较早,它更多地反映了机器指令系统设计和传统程序设计方法的需要,难以保证程序的结构良好.另外,结构化程序设计的一些基本结构在传统流程图中没有相应的表达符号.例如,在传统流程图中,循环结构仍采用判断结构符号来表示,这样不易区分到底是哪种结构.特别是传统流程图由于转向的问题而无法保证自顶而下的程序设计方法,使模块之间的调用关系难以表达.为此,两位美国学者Nassi和Shneiderman于1973年就提出了一种新的流程图形式,这就是N-S流程图,它是以两位创作者姓名的首字母取名,也称为NassiShneiderman图.

  N-S图的基本单元是矩形框,它只有一个入口和一个出口.长方形框内用不同形状的线来分割,可表示顺序结构、选择结构和循环结构.在N-S流程图中,完全去掉了带有方向的流程线,程序的三种基本结构分别用三种矩形框表示,将这种矩形框进行组装就可表示全部算法.这种流程图从表达形式上就排除了随意使用控制转移对程序流程的影响,限制了不良程序结构的产生.

  与顺序、选择和循环这三种基本结构相对应的N-S流程图的基本符号如图1-11所示.图1-11(a)和图1-11(b)分别是顺序结构和选择结构的N-S图表示,图1-11(c)和图1-11(d)是循环结构的N-S图表示.由图可见,在N-S图中,流程总是从矩形框的上面开始,一直执行到矩形框的下面,这就是流程的入口和出口,这样的形式是不可能出现无条件的转移情况.下面用N-S流程图表示前面例1-2中求函数值m的算法,其流程如图1-12所示.

  值得注意的是,N-S流程图是适合结构化程序设计方法的图形工具,对于非结构化的程序,用N-S流程图是无法表示的.

  例如在例1-3中,求任意两个正整数的最大公约数,其算法是非常经典的,图1-5中用传统流程图

2020-05-06 22:40:36

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •