定量度量程序複雜度的McCabe方法

請畫出下面代碼的程序流程圖及對應的流圖,並計算環形複雜度。web

void func(int x,int y){ //畫圖時,不須要考慮此行
while(x>0){ //1
int sum = x+y; //2
if(sum>1){ //3
x--; //4
y--; //5
}else{
if(sum<-1){ //6
a-=2; //7
}else{
a-=4; //8
} //9
} // end of if(sum>1) //10
} // end of while
x = x+y; //11
} // end of func //畫圖時,不須要考慮此行

程序流程圖畫法總結:編程

  1. 只考慮方法體內代碼。
  2. if..else..後必有被兩條箭頭所指節點,能夠爲空白,但必須有數字。
  3. 保留開始和結尾的空白圓框但不寫數字。

環形複雜度的計算方法:微信

  1. 流圖中線性無關的區域數等於環形複雜度。
  2. 流圖G的環形複雜度 V(G)=E-N+2,其中,E是流圖中邊的條數,N是結點數。
  3. 流圖G的環形複雜度V(G)=P+1,其中,P是流圖中斷定結點的數目。

上述例題的斷定條件是單一的,若是涉及IF a OR b這種包含複合條件的僞碼,例如:app

IF a OR b
then procedure x
else procedure y
ENDIF


做者:薛勤,互聯網從業者,編程愛好者。
編輯器

本文首發自公衆號:代碼藝術(ID: onblog)未經許可,禁止轉載ui


本文分享自微信公衆號 - 代碼藝術(onblog)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。url

相關文章
相關標籤/搜索