疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

程序的三种基本结构


 

(摘自[疯狂JAVA讲义].李刚)已上传,附上传送门http://115.com/file/e7q5xgnq
程序的三种基本结构
         结构化程序的概念首先是从过去编程过程中无限制地使用GOTO语句而提出的。GOTO语句可以使程序的控制流程强制性地转向程序的任一处,如果允许程序中随意使用GOTO语句,将会导致程序流程无序可寻,程序结构杂乱无章,这样的程序是令人难以理解和接受的,并且容易出错。尤其是在实际软件产品的开发中,更多地追求软件的可读性和可修改性,像这种结构和风格的程序是不允许出现的。
         提示:java语言也拒绝使用GOTO语句,但它将GOTO作为保留字,意思是目前的java版本还未使用GOTO语句,但也许在未来的日子里,如果不得不使用GOTO语句是,java还是可能使用GOTO语句的.
         结构化程序设计非常强调实现某个功能的算法,而算法的实现过程是由一系列操作组成的,这些操作之间的执行次序就是程序的控制结构。1996年,计算机科学家Bohm和Jacopini证明了这样的事实:任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成。所以,这三种结构就被称为程序设计的三种基本结构,也是结构化程序设计必须采用的结构。
        顺序结构
        顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的,其流程如图2.2所示。图中的S1和S2表示两个处理步骤,这些处理步骤可以是一个非转移操作或多个非转移操作序列,甚至可以是空操作,也可以是三种基本结构中的任一结构。整个顺序结构只有一个入口点a和一个出口点b。这种结构的特点是:程序从入口点a开始,按顺序执行所有操作,直到出口点b处,所以称为顺序结构。
        提示:事实上,不论程序中包含了什么样的结构,而程序的总流程都是顺序结构的。对于java程序而言,其方法类似于结构化程序设计的函数,方法里的总流程也是顺序结构的。
        选择结构
        选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。选择结构有单选择、双选择和多选择三种形式。
        双选择是典型的选择结构形式,其流程如图2.3所示,图中的S1和S2与顺序结构中的说明相同。由图中可见,在结构的入口点a处是一个判断框,表示程序流程出现了两个可供选择的分支,如果条件满足执行S1处理,否则执行S2处理。值得注意的是,在这两个分支中只能选择一条且必须选择一条执行,但不论选择了哪一条分支执行,最后流程都一定到达结构的出口点b处。
        当S1和S2中的任意一个处理为空时,说明结构中只有一个可供选择的分支,如果条件满足,执行S1处理,否则顺序向下到流程出口b处。也就是说,当条件不满足时,什么也没执行,所以称为单选择结构,如图2.4所示。
        多选择结构是指程序流程中遇到如图2.5所示的S1, S2, S3,…、Sn等多个分支,程序执行方向将根据条件确定。如果满足条件1则执行S1处理,如果不满足条件1,满足条件2则执行S2,如果不满足条件1、条件2,满足条件3则执行S3……以此类推,从图2.5中可以看出,处理Sn的n值越大,则需要满足的条件越苛刻。
        对于图2.5所示的多选择结构,不论选择了哪一条分支,最后流程要到达同一个出口处。如果所有分支的条件都不满足,则直接到达出口。有些程序语言不支持多选择结构,但所有的结构化程序设计语言都是支持的。
        提示:java语言对前面介绍的三种选择结构都有很好的支持,本书的第4章将会有关于这三种选择结构的介绍
        循环结构
        循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是: 什么情况下执行循环? 哪些操作需要循环执行? 循环结构的基本形式有两种:当型循环和直到型循环,其流程如图2.6所示。图中带S标识的矩形内的操作称为循环体,是指从循环入口点a到循环出口点b之间的处理步骤,这就是需要循环执行的部分。而什么情况下执行循环则要根据条件判断。
        1.当型结构:表示先判断条件,当满足给定的条件时执行循环体,并且在循环终端处流程自动返回到循环入口;如果条件不满足,则退出循环体直接到达流程出口处。因为是“当条件满足时执行循环”,即先判断后执行,所以称为当型循环。其流程如图2.6 (a)所示。
        2.直到型循环:表示从结构入口处直接执行循环体,在循环终端处判断条件,如果条件不满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达流程出口处,是先执行后判断。
        因为是“直到条件为真时为止”,所以称为直到型循环。其流程如图2.6 (b)所示。
        同样,循环型结构也只有一个入口点a和一个出口点b,循环终止是指流程执行到了循环的出口点。图中所表示的S处理可以是一个或多个操作,也可以是一个完整的结构或一个过程。
        提示:Java语言同样提供了对当型循环和直到型循环的支持,本书第4章在介绍循
环时将会深入介绍这些内容。
        通过三种基本控制结构可以看到,结构化程序中的任意基本结构都具有唯一入口和唯一出口,并且程序不会出现死循环。在程序的静态形式与动态执行流程之间具有良好的对应关系。本书之所以详细介绍这些程序结构,主要因为Java语言的方法体内同样是由这三种程序结构组成,换句话来说,Java语言是面向对象的,但Java的方法里则是一种结构化的程序流。(摘自[疯狂JAVA讲义].李刚)