zoukankan      html  css  js  c++  java
  • 流程图符号及流程图的例子

    介绍常见的流程图符号及流程图的例子。
        本章例1 - 1的算法的流程图如图1 - 2所示。本章例1 - 2的算法的流程图如图1 - 3所示。
    在流程图中,判断框左边的流程线表示判断条件为真时的流程,右边的流程线表示条件为假时的流程,有时就在其左、右流程线的上方分别标注“真”、“假”或“T”、“F”或“Y”、“N”


    另外还规定,流程线是从下往上或从右向左时,必须带箭头,除此以外,都不画箭头,流程线的走向总是从上向下或从左向右。

    2. 算法的结构化描述
        早期的非结构化语言中都有go to语句,它允许程序从一个地方直接跳转到另一个地方去。
    执行这样做的好处是程序设计十分方便灵活,减少了人工复杂度,但其缺点也是十分突出的,一大堆跳转语句使得程序的流程十分复杂紊乱,难以看懂也难以验证程序的正确性,如果有错,排起错来更是十分困难。这种转来转去的流程图所表达的混乱与复杂,正是软件危机中程序人员处境的一个生动写照。而结构化程序设计,就是要把这团乱麻理清。
    经过研究,人们发现,任何复杂的算法,都可以由顺序结构、选择(分支)结构和循环结构这三种基本结构组成,因此,我们构造一个算法的时候,也仅以这三种基本结构作为“建筑单元”,遵守三种基本结构的规范,基本结构之间可以并列、可以相互包含,但不允许交叉,不允许从一个结构直接转到另一个结构的内部去。正因为整个算法都是由三种基本结构组成的,就像用模块构建的一样,所以结构清晰,易于正确性验证,易于纠错,这种方法,就是结构化方法。遵循这种方法的程序设计,就是结构化程序设计。
        相应地,只要规定好三种基本结构的流程图的画法,就可以画出任何算法的流程图。
    (1) 顺序结构
    顺序结构是简单的线性结构,各框按顺序执行。其流程图的基本形态如图1 - 4所示,语句
    的执行顺序为:A→B→C。
    (2) 选择(分支)结构
    这种结构是对某个给定条件进行判断,条件为真或假时分别执行不同的框的内容。其基本形状有两种,如图1-5 a)、b)所示。图1-5 a)的执行序列为:当条件为真时执行A,否则执行B;图1 - 5 b)的执行序列为:当条件为真时执行A,否则什么也不做。

    (3) 循环结构
    循环结构有两种基本形态: while型循环和do - while型循环。
    a. while 型循环
    如图1 - 6所示。
    其执行序列为:当条件为真时,反复执行A,一旦条件为假,跳出循环,执行循环紧后的语句。
    b. do-while型循环
    如图1 - 7所示。

    执行序列为:首先执行A,再判断条件,条件为真时,一直循环执行A,一旦条件为假,结束循环,执行循环紧后的下一条语句。
        在图1 - 6、图1 - 7中,A被称为循环体,条件被称为循环控制条件。要注意的是:
    1) 在循环体中,必然对条件要判断的值进行修改,使得经过有限次循环后,循环一定能
    结束,如图1 - 3中的i = i - 1。
    2) 当型循环中循环体可能一次都不执行,而直到型循环则至少执行一次循环体。
    3) 直到型循环可以很方便地转化为当型循环,而当型循环不一定能转化为直到型循环。
    例如,图1 - 7可以转化为图1 - 8。

    七,用N-S图描述算法
    N - S图是另一种算法表示法,是由美国人I . Nassi和B.Shneiderman共同提出的,其根据是:
    既然任何算法都是由前面介绍的三种结构组成,所以各基本结构之间的流程线就是多余的,因此,N - S图也是算法的一种结构化描述方法。
    N - S图中,一个算法就是一个大矩形框,框内又包含若干基本的框,三种基本结构的N - S图描述如下所示:
    1. 顺序结构
    如图1 - 9所示,执行顺序先A后B。
    2. 选择结构
    对应于图1 - 5的N - S图为图1 - 1 0。图1-10 a)条件为真时执行A,条件为假时执行B。图1 - 1 0
    条件为真时执行A,为假时什么都不做。

    3. 循环结构
    1) while型循环的N - S图如图1 - 11所示,条件为真时一直循环执行循环体A,直到条件为假时才跳出循环。
    2) do-while型循环的N - S图如图1 - 1 2,一直循环执行循环体A,直到条件为假时才跳出循环。
    本章例1 - 1的N - S图如图1 - 1 3,例1 - 2的N - S图如图1 - 1 4。应该说,N - S图比流程图更直观易懂,而且相对简练一些。

    八,用PAD图描述算法    
        PAD (Problem Analysis Diagram),是近年来在软件开发中被广泛使用的一种算法的图形表示法,与前述的流程图、N - S图相比,流程图、N - S图都是自上而下的顺序描述,而PAD图除了自上而下以外,还有自左向右的展开,所以,如果说流程图、N - S图是一维的算法描述的话,则PAD图就是二维的,它能展现算法的层次结构,更直观易懂。
    下面是PAD图的几种基本形态:
    1. 顺序结构:
    如图1 - 1 5所示。
    2. 选择结构
    (1) 单分支选择,条件为真执行A,如图1-16 a)。
    (2) 两分支选择,如图1-16 b),条件为真执行A,为假执行B。
    (3) 多分支选择,如图1-16 c),当I = I1时执行A,I= I2时执行B,I = I3时执行C,I = I4时执行D。

    3. 循环结构
    如图1 - 1 7所示。图1-17 a)为while型循环,图1-17 b)为do - while型循环。

    本章例1 . 1的PA D图如图1 - 1 8,例1 - 2的PA D图如图1 - 1 9

  • 相关阅读:
    LOJ 6089 小Y的背包计数问题 —— 前缀和优化DP
    洛谷 P1969 积木大赛 —— 水题
    洛谷 P1965 转圈游戏 —— 快速幂
    洛谷 P1970 花匠 —— DP
    洛谷 P1966 火柴排队 —— 思路
    51Nod 1450 闯关游戏 —— 期望DP
    洛谷 P2312 & bzoj 3751 解方程 —— 取模
    洛谷 P1351 联合权值 —— 树形DP
    NOIP2007 树网的核
    平面最近点对(加强版)
  • 原文地址:https://www.cnblogs.com/chris-oil/p/4783160.html
Copyright © 2011-2022 走看看