テキストベース言語でif、if-else、switch文がよく使われます。LabVIEWでは、これらに相当するものとして単純なif文には「選択」関数を使用し、if-else文やswitch文のように入力の選択肢をさらに増やすときにはケースストラクチャを使用します。テキストベース言語の場合と同様に、入力する値によって実行されるLabVIEWコードが決定します。このドキュメントでは、if、if-else、およびswitch文と同様の実行手順を実現するために、LabVIEWでコードを構造化する方法について説明します。
簡単な条件および操作では、「選択」関数を使用することでif文と同等の処理が可能です。「選択」関数は、関数パレットでプログラミング→比較→選択の下にあります。「選択」関数には3つの入力があります。これらの入力は以下のとおりです (上から下への順)。
セレクタ入力は、ブールデータです。セレクタデータの値によって、「選択」関数はTRUEまたはFALSEの入力に配線された値を返します。TRUEまたはFALSEの出力は、さまざまなデータタイプにすることができます。以下の図は、文字列データタイプを使用した例です。
「選択」関数は、入力によって出力を変更するだけの場合に使用すると便利です。ただし、入力によってどのコードを実行するかを切り替える必要がある場合は、ケースストラクチャを使用します。
ケースストラクチャは、関数パレットでプログラミング→ストラクチャの下にあります。ケースストラクチャには3つのセクションがあります。
ケースストラクチャには、デフォルトで1つの「True」ケースと1つの「False」ケースがあります。それぞれのケースについて、ケースの条件に合致したときに実行するLabVIEWコードを記述できます。
ケースストラクチャには、ケースセレクタ端子と呼ばれる緑色のクエスチョンマークの入力端子があります。ケースストラクチャをデフォルトのTrue/Falseケースで使用する場合、ブール入力をケースセレクタ端子に配線し、各ケースの実行条件を設定します。
以下の図は、先の「選択」関数と類似した例です。主な相違点は、ケースストラクチャではコードを選択的に実行できることです。(「選択」関数を使用した場合、下図に示すようなコード実行などのデータの可変的な操作はできません。)
この簡単な例では、ユーザ入力が5より大きい場合、ケースセレクタはTrueブール値を読み込んでTrueケースを実行し、ユーザ入力に乱数を乗じます。一方、ユーザ入力が5より小さい場合、ケースセレクタはFalseブール値を読み込んでFalseケースを実行し、ユーザ入力に対してより大きな乱数を乗じます。各ケースは別個のコードを保持し、互いに異なる値を出力します。
デフォルトのTrue/Falseケース形式のケースストラクチャはif文として使用できます。しかし、ケースストラクチャを使用することの利点は、選択端子のデータタイプを変更できることと、ケースを追加してif-else文やswitch文を作成できることです。
ケースストラクチャを作成した後で、入力セレクタのデータタイプを文字列、整数、列挙体、またはエラークラスタに変更できます。希望するデータタイプの入力をケースセレクタに配線することで、セレクタラベルのオプションは自動的にその新しいデータタイプに変更されます。たとえば、以下の図では数値データタイプのユーザ入力がセレクタ端子に配線されているため、セレクタラベルは数値オプションを示しています。
ケースストラクチャにサブダイアグラムを追加して別の比較 (または状態) を作成することもできます。 ケースストラクチャの「デフォルト (default)」ケースは、if-else文のelseとして、あるいはswitch文のdefaultとして機能します。いずれの場合も、実行されるコードは、セレクタ端子に配線された入力に基づきます。
ケースストラクチャでは、アーキテクチャそのものがswitch文として使用されるため、ユーザが入力可能なデータタイプや将来の変更にも柔軟に対応できます。数値入力の代わりに、ケースストラクチャでは変更が簡単な列挙体の入力をケースセレクタの入力として使用することもできます。
ケースストラクチャでケースを追加、並べ替え、複製する方法の詳細については、『LabVIEWヘルプ』の「Case Structure」にあるチュートリアルを参照してください。
ケースストラクチャを使用するサンプルについては、labview\examples\Structures\Case Structureディレクトリにある「ケースストラクチャ - セレクタデータタイプ」VIを参照してください。
(LabVIEWのバージョンによっては、このサンプルがあるフォルダまたはディレクトリの名称が多少異なる場合があります。)
以下に添付されているサンプルは、このページでご紹介した3種類のストラクチャを持つVIです。「選択」関数を使用したif文、ケースストラクチャを使用したif-else文、およびケースストラクチャを使用したif-elseまたはswitch文を含みます。