2011-12-08 5 views
-5

if/elseステートメントのみを持つプログラムを指定すると、どの変数が発生したのは決して読み取れることはありませんか?if/elseステートメントのみを含むプログラムの未読変数

+0

プログラムにif/elseステートメントのみが含まれている場合、その中には何がありますか? –

+0

「発生しますが読むことはありません」とは、「変更/初期化されていますがアクセスされていません」という意味ですか? –

答えて

2

はい。 if/else文のみを持つプログラムが与えられていると仮定すると、プログラムには有限数のパスが存在します。

各パスに到達するために条件を満たしていることを確認し、矛盾[アクセス不可能なパス]を見つけて、使用されない変数を見つけることができます。

Hoare logicの簡単なバージョンとして実装することができます。これは、ループなしで自動化するのが非常に簡単です。ブロック場合

+0

ありがとうございます!ちょうど私が聞く必要があったもの。 – user11775

0

[それを自動化することはもちろん不可能であるループに]あなたは、コードをこのようにトレースすることができる場合

if (assertion) 
{ 
    // print or echo or var_dump etc.. 
} 
else if(assertion) 
{ 
    // print or echo or var_dump etc.. 
} 
else if(assertion) 
{ 
    // print or echo or var_dump etc.. 
} 

のように、あなたが主張することができ、具体的にトレース、またはデバッグ文を置くことができブロック内の任意の変数またはコードが実行/読み込まれます。

+0

私は、OPにはプログラムへの入力があることを意味すると思います...そして、アクセス可能なすべてのパスをカバーするために、どの入力をプログラムをアクティブにするかを決める方法は? – amit

関連する問題