Создание графика потока управления с выводом
В настоящее время я учусь рисовать графики потока управления и не уверен, правильно ли я рисую для следующего сценария:
Для следующего фрагмента кода, где x
а также y
входные переменные и z
является выходной переменной:
if x=0 then x:=10
if x<y-5 then y:=y-1 else x:=y+5
z:=y-x
Вот что я сделал:
Это правильно в любом случае? Заранее спасибо.
1 ответ
Нет, ваша схема управления неверна. Узлы представляют собой основные блоки кода, что означает, что он может содержать только операторы присваивания, без условных операторов или циклов. Края представляют условия, такие как if then else утверждения и case заявления.
Для этой проблемы
1. Start node is the first node with an incoming arrow. So, remove the solid node at the top and leave the arrow as it is.
2. Replace true in first left branch with x == 0
3. Replace false in the first right branch with x != 0 and connect it to the node containing x < y-5. Remove the solid node.
4. Replace true following node containing x < y-5 with x < y-5
5. Replace false following node containing x < y-5 with x >= y-5
6. Remove last two true on the edges
7. Make the node containing z:=y-x as last node and remove the arrow and solid node after this node.