From Saturday, Nov 23rd 7:00 PM CST - Sunday, Nov 24th 7:45 AM CST, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Saturday, Nov 23rd 7:00 PM CST - Sunday, Nov 24th 7:45 AM CST, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
LabVIEW 8.5では、条件端子を追加することで、ブール条件やエラー発生によりForループを停止するように構成できます。条件端子付きのForループは、条件が発生するまで、あるいは全ての反復が完了するまで実行されます。Forループを条件付き終了で構成した場合、カウント端子(N)の横に赤いグリフが付き、右下隅に条件端子が表示されます。Forループを条件付き終了(つまり、Break文)で構成すると、ループは次の図1のようになります。
図1.条件付き終了で構成したForループ
Forループ枠に条件端子を追加するには、ループ枠を右クリックし、ショートカットメニューから条件端子を選択します。ループを実行し、VIを実行するには、条件端子を配線して、カウント端子を配線する、または入力配列を自動指標付けする必要があります。
図2.Forループに条件端子を追加
プログラマは、特定の条件が発生した場合にループを停止する必要があります。テキストベースの言語には、特定の条件でForループとWhileループの両方を停止できるようにするステートメントがあります。例えば、以下のサンプルCコードでは、ループを50回(0から49まで)繰り返すようにプログラミングされています。しかし、ループは11回の反復の後(i = 10のとき)に、Break関数で実行が停止されます。
int i;
i = 0;
for (i = 0; i < 50; i++)
{
if (i == 10)
break;
}
配列内の全ての要素を反復する必要があるLabVIEWのプログラマは、配列の自動指標付けを可能にするため、Forループをよく使用します。典型的なLabVIEWコードを図3に示します。
図3.ForループのLabVIEWコード
機能的には正しいのですが、Forループではループの初期の反復で終了条件が発生した場合でも、配列内の全ての要素にアクセスします。Whileループを使用することで、効率性を高められます(図4を参照)。このソリューションはより複雑で多くのコードを必要としますが、終了条件が発生するか配列の最後に達するまで、配列を反復します。図1で示すように、Break条件用に構成されたForループは、はるかに単純で分かりやすいソリューションです。
図4.配列に指標付けするように構成されたWhileループ
Whileループを使って配列を検索することもできます。目的の項目が見つかると、ループは実行を停止します。項目が配列内にない場合は、無限ループになります。
図5.無限ループになる可能性があるWhileループ
Break用に構成されたForループを使用することで、より良いソリューションになります。目的の項目が配列内で見つからなかった場合、ループはN回の反復後に停止します。
図6.Forループが無限ループの可能性を軽減
条件付き終了用に構成されたForループは、N回(または自動指標配列全体を)実行しない場合があります。条件付きで終了するように構成すると、Nは可能なループ反復の最大数を表しますが、これは必ずしもループを実行する正確な回数とは限りません。
条件端子は、Whileループの場合と同様に動作します。条件端子を Trueの場合継続に切り替えるか、またはエラークラスタを条件端子に配線できます(図7を参照)。条件端子は削除できません。条件端子を削除するには、ループの右クリックで条件端子オプションを選択解除する必要があります。
図7.エラークラスタを条件端子に配線
Forループを条件付き終了に構成した場合、上限は分かりますが、自動指標付けされた(累積)出力配列のサイズは予想できません。自動指標付けされた配列出力の要素数は、ループが反復する回数と等しくなります。