web-dev-qa-db-ja.com

特定の関数の制御フローグラフの作成

与えられた短いJava関数であり、そのための制御フローグラフを作成するのが好きですが、それでいいのかわかりませんか?すでに持っている変数など、いくつかのものを残しているので関数と一緒に作成されました(int[] A, boolean[] boo)。

boolean func(int[] A, boolean[] boo){
    boolean res;
    int n, leng;
    leng = A.length;
    n = 0;
    res = true;
    while(n < leng){
        if(A[n] <= 0 && !boo[n]){
            res = false;
        }
        n++;
    }
    return res;
}

enter image description here

チャートへのリンク

そのように大丈夫ですか?テストではすぐに書くので、そのようにします:/

1
eyesima

制御フローグラフは通常、ノードごとに1つのステートメントで記述されませんが、コードを複数のステートメントを組み合わせる基本ブロックに分割します。基本ブロックはジャンプターゲットで始まり、別のブロックへのジャンプで終わります。最後のジャンプは条件付きの場合があります。

あなたの制御フローグラフは、以下を除いて、一般的に正しいです

  • 基本的なブロックを使用することで簡素化できること
  • _n++_ノードには複数の出力ジャンプがありますが、条件付きステートメントではありません。 _n++_から_return res_への直接ジャンプがあってはなりません。代わりに、while (...)へのジャンプのみが必要です。
4
amon