软件中级-控制流图基本知识
什么是控制流图?
控制流图(Control Flow Graph, CFG)也叫控制流程图,是一个过程或程序的抽象表现,是用在编译器中的一个抽象数据结构,代表了一个程序执行过程中会遍历到的所有路径。
控制流图中包含两种图形符号
- 节点
- 控制流线
常见结构的控制流图
- 顺序语句
a = 1;
b = 2;
c = a+b;
- If语句
if(a)
{
process b;
}
else
{
process c;
}
- switch语句
process d;
switch(c)
{
case 'a':
process a;
case 'b':
process b;
default:
process c;
}
process e;
- for循环语句
for (a; b; c)
{
process d;
}
process e;
- while循环语句
while (a)
{
process b;
}
process c;
画法说明:
- 判断中的条件表达式是一个或者多个逻辑运算符连接的复合条件表达式,需要拆分成多个简单条件
- 单入单出的可以合并成一个节点
通俗来说一个节点只代表一个或多个连续的无分支语句
举例说明:
a = 1;
b = 2;
c = 3;
if (a+b>c or a != 0 )
{
c = a+b;
print(c);
}
else
(
a = b;
}
绘制说明:
节点1: 顺序执行的4条语句合并到一个节点
节点2&节点3: 同一个if语句由两个判读组成的复杂条件需拆开判断
节点4&节点5:根据if条件结果执行不同分支
节点6:出口