免费智能真题库 > 历年试卷 > 系统架构设计师 > 2021年下半年 系统架构设计师 上午试卷 综合知识
  第27题      
  知识点:   程序流程图   环形复杂度
  章/节:   程序语言基础       

 
使用McCabe方法可以计算程序流程图环形复杂度,下图的环形复杂度为( )。
 
 
  A.  3
 
  B.  4
 
  C.  5
 
  D.  6
 
 
 

   知识点讲解    
   · 程序流程图    · 环形复杂度
 
       程序流程图
        1)基本符号
        流程图的基本符号如下图所示。
        
        流程图的基本符号
        2)流程图的结构
        任何复杂的算法,都可以由顺序结构、选择(分支)结构和循环结构这三种基本结构组成。流程图中,也仅以这三种基本结构作为"建筑单元",遵守三种基本结构的规范,基本结构之间可以并列、相互包含,但不允许交叉,即不允许从一个结构直接转到另一个结构的内部去。正因为整个算法都是由三种基本结构组成的,就像用模块构建的一样,所以结构清晰,易于正确性验证及纠错。
        (1)顺序结构。顺序结构是简单的线性结构,各框按顺序执行。其流程图的基本形态如下图所示,语句的执行顺序为:A→B→C。
        
        顺序结构流程图
        (2)选择(分支)结构。这种结构是对某个给定条件进行判断,条件为真或假时分别执行不同的框的内容。其基本形状有两种,如下图(a)和下图(b)所示。下图(a)的执行序列为:当条件为真时执行A,当条件为假时执行B;下图(b)的执行序列为:当条件为真时执行A,当条件为假时什么也不做。
        
        选择(分支)结构流程图
        (3)循环结构。循环结构有while型循环和do…while型循环两种基本形态。
        .while型循环:如下图所示。其执行序列为:当条件为真时,反复执行A,一旦条件为假,跳出循环,执行循环紧后的语句。
        
        while循环流程图
        .do…while型循环:如下图所示。执行序列为:首先执行A,再判断条件,条件为真时,一直循环执行A,一旦条件为假,结束循环,执行循环紧后的下一条语句。
        
        do…while循环流程图
        在上2图和上1图中,A被称为循环体,条件被称为循环控制条件。
 
       环形复杂度
        环形复杂度也称为圈复杂度,它是一种为程序逻辑复杂度提供定量尺度的软件度量。
        可以将环形复杂度用于程序基本路径测试。环形复杂度可以提供:程序基本集的独立路径数量和确保所有语句至少执行一次的测试数量的上界。
        其中独立路径是指程序中至少引入了一个新的处理语句集合或一个新条件的程序通路,即独立路径必须至少包含一条在本次定义路径之前不曾用过的边。
        测试可以被设计为基本路径集的执行过程,但基本路径集通常并不唯一。
        环形复杂度以图论为基础,为我们提供了非常有用的软件度量。可用如下三种方法之一来计算环形复杂度:
        (1)控制流图中区域的数量对应于环形复杂度。
        (2)给定控制流图G的环形复杂度V(G),定义为
        V(G)=E-N+2
        其中,E是控制流图中边的数量,N是控制流图中的节点数量。
        (3)给定控制流图G的环形复杂度V(G),也可定义为
        V(G)=P+1
        其中,P是控制流图G中判定节点的数量。
   题号导航      2021年下半年 系统架构设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第27题    在手机中做本题