public int Function1(int num, int cycle, boolean flag){int ret = 0;while( cycle > 0 ){if( flag == true ){ret = num - 10;break;}else{if( num%2 ==0 ){ret = ret * 10; }else{ret = ret + 1;}}cycle--;}return ret;}画出程序控制流图,计算控制流图的环路复杂度
时间: 2024-03-15 07:47:29 浏览: 70
控制流图如下:
```
+---------------------+
| |
V |
Start --> cycle > 0? --> flag == true? --> ret = num - 10 --> End
| |
| V
| num % 2 == 0?
| |
| |
| V
| ret = ret * 10
| |
| |
| V
| ret = ret + 1
| |
V |
End <--------------+
```
控制流图的环路复杂度为 $3$。
相关问题
public int Function1(int num, int cycle, boolean flag){int ret = 0;while( cycle > 0 ){if( flag == true ){ret = num - 10;break;}else{if( num%2 ==0 ){ret = ret * 10; }else{ret = ret + 1;}}cycle--;}return ret;}导出基本路径
根据基本路径的定义,基本路径是控制流图中从一个节点到另一个节点的所有路径中,不重复经过某个节点的路径。在这个程序的控制流图中,有以下基本路径:
1. 1-2-3-4-5-6-7
2. 1-2-3-4-5-3-4-5-6-7
3. 1-2-3-4-5-3-4-5-3-4-5-6-7
4. 1-2-3-4-5-3-4-5-3-4-5-3-4-5-6-7
5. 1-2-3-4-5-3-4-5-3-4-5-3-4-5-3-4-5-6-7
6. 1-2-3-4-5-3-4-5-3-4-5-3-4-5-3-4-5-3-4-5-6-7
7. 1-2-3-4-5-3-4-5-3-4-5-3-4-5-3-4-5-3-4-5-3-4-5-6-7
注意:这里的数字代表程序控制流图中的节点编号。
public int Function1(int num, int cycle, boolean flag) { int ret = 0; while( cycle > 0 ) { if( flag == true ) { ret = num - 10; break; } else { if( num%2 ==0 ) { ret = ret * 10; } else { ret = ret + 1; } } cycle--; } return ret; }设计基本路径覆盖测试用例
基本路径覆盖测试用例的设计需要覆盖程序中所有的基本路径,基本路径是指程序中不包含循环和条件语句的简单路径。在这个程序中,有两个基本路径:
1. 从函数开头到 flag == true 的 if 语句的 true 分支的赋值语句
2. 从函数开头到 while 循环的最后一条语句
因此,我们需要设计两组测试用例来覆盖这两个基本路径。
1. 对于第一个基本路径,我们需要设计一个测试用例,使得 flag 取 true。此时,程序会执行 if 语句的 true 分支,ret 的值为 num - 10,函数结束。因此,一个测试用例可以是:
```
num = 20
cycle = 3
flag = true
```
2. 对于第二个基本路径,我们需要设计一个测试用例,使得 while 循环的次数为 0。此时,程序会直接跳出循环,返回 ret 的初始值 0。因此,一个测试用例可以是:
```
num = 5
cycle = 0
flag = false
```
这两组测试用例可以覆盖程序中所有的基本路径。