我的任务是制作一个控制流图。首先,我已经成功地将我的代码分成了基本的块。例如,这里的程序:
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将变成以下基本块:
区块1
Line 2 int x, y, power;
Line 3 float z;
Line 4 input (x, y);
Line 5 if (y<0)区块2
Line 6 power=-y;区块3
Line 8 power=y;区块4
Line 9 z=1;区块5
Line 10 while (power!=0){区块6
Line 11 z=z*x;
Line 12 power=power-1;区块7
Line 14 if (y<0)区块8
Line 15 z=1/z;区块9
Line 16 output(z);为此,我扫描了整个文件,并使用Pattern和Matcher根据if、while等语句将程序拆分。基本块是一个ArrayList,所有这些块都保存在一个ArrayList>中。
接下来,我保存了一个基本块相互连接的HashMap。例如,block 1将连接到block 2和block 3,因为它是一个if语句(如果这样做是一种方式,否则就是另一种方式)。此HashMap的>表示块编号及其连接到的块编号列表。
所以,我有了基本的块,以及这些基本块之间的连接列表。我现在的问题是,我不确定如何以图形形式显示它。在此之前,我使用paint()方法并绘制圆和线来表示一个简单的控制图,其中每个块只有一个到下一个块的连接。但是,当有多个连接时,我不知道该如何做。有什么简单的方法可以做到这一点吗?
谢谢!
发布于 2012-12-31 15:25:57
在绘制图形时,我通常使用dot,它非常简单。
https://stackoverflow.com/questions/13122696
复制相似问题