2012-10-29 108 views
3

我的任務是製作一個控制流程圖。首先,我設法將我的代碼分成基本塊。例如,該程序此處:繪製控制流程圖

1 begin 

2 int x, y, power; 

3 float z; 

4 input (x, y); 

5 if (y<0) 

6  power=-y; 

7 else 

8  power=y; 

9 z=1; 

10 while (power!=0){ 

11  z=z*x; 

12 power=power-1; 

13 } 

14 if (y<0) 

15  z=1/z; 

16 output(z); 

17 end 

會變成以下基本塊:

BLOCK 1

Line 2 int x, y, power; 
Line 3 float z; 
Line 4 input (x, y); 
Line 5 if (y<0) 

BLOCK 2

Line 6  power=-y; 

BLOCK 3

Line 8  power=y; 

BLOCK 4

Line 9 z=1; 

BLOCK 5

Line 10 while (power!=0){ 

BLOCK 6

Line 11  z=z*x; 
Line 12 power=power-1; 

BLOCK 7

Line 14 if (y<0) 

BLOCK 8

Line 15  z=1/z; 

BLOCK 9

Line 16 output(z); 

我已經掃描過的文件這樣做,並使用Pattern和Matcher分裂如果基於程序了,而等語句。基本塊是一個ArrayList,所有這些塊保存在一個ArrayList>中。

接下來,我保留了一個HashMap的哪些基本塊相互連接。例如,塊1將被連接到塊2和塊3,因爲它是一個if語句(如果這是單向的,否則就是另一個)。這個HashMap對於塊號是>,並且它連接到的塊號列表。

所以,我有基本塊,以及這些基本塊之間的連接列表。我現在的問題是,我不確定如何以圖形形式顯示它。之前,我使用paint()方法並繪製圓和線來表示一個簡單的控制圖,其中每個塊只有一個連接到下一個塊。但是,我不知道如何在有多個連接時執行此操作。有沒有簡單的方法來做到這一點?

謝謝!

+1

找到一些很好的算法來創建有向圖的佈局,例如sugiyama框架 – user902383

回答

0

對於繪製圖形,我通常使用dot,它非常簡單。