4

我的任务是制作控制流图。首先,我设法将我的代码分成基本块。例如,这里的这个程序:

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。例如,块 1 将连接到块 2 和块 3,因为它是一个 if 语句(如果这是一条路,则走另一条路)。这个 HashMap 是 > 的块号,以及它所连接的块号列表。

所以,我有基本块,以及这些基本块之间的连接列表。我现在的问题是我不确定如何以图形形式显示它。之前,我使用paint() 方法并绘制圆和线来表示一个简单的控制图,其中每个块只有一个与下一个块的连接。但是,当有多个连接时,我不知道该怎么做。有什么简单的方法可以做到这一点吗?

谢谢!

4

1 回答 1

1

对于绘制图表,我通常使用dot,它非常简单。

于 2012-12-31T07:25:57.260 回答