この記事で扱っていること
- ケースストラクチャを使わない工夫
を紹介しています。
注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。
LabVIEWでプログラムを書くときに、見るべきもの、要素を少なくする、という点を意識したほうがいいことがあります。
テキスト言語の場合、例えば条件分岐などは、一目で全条件の内容が見えます(画面に収まっている限り)。
しかし、LabVIEWの場合、条件分岐はケースストラクチャで実装しますが、その構造上、全てのケースを一目で見ることはできず、各ケースの内容をケースを切り替えながら見ることになります。
そのため、ケースの数は少ない方がプログラム全体の把握がしやすい、ということがあります。
知っている人からしたら当たり前、な内容かもしれませんが、今回はケースストラクチャを使わないで条件分岐を行う方法とその注意点を紹介します。
どんな結果になるか
簡単な例として、ある数が偶数ならその数を2で割り、奇数なら3倍して1を足す、という処理を行うことを考えます。
下の図で、一番左の状態がプログラム実行前だとして、各数値の状態で実行したときに処理をケースストラクチャを使用しないで実装します。

また、別の例で、ある数が0以上4未満ならbad、4以上7未満ならnormal、7以上10以下ならgood、これら以外だと空文字を文字列に表示させるようなプログラムもケースストラクチャを使用しないで作ってみます。

プログラムの構造
ケースストラクチャを使用しないで条件分岐を実装する方法、それには選択関数を使います。
なんだそんなことか、と思われるかもしれませんが、選択関数だとすべての条件判断とその処理内容を、ケースストラクチャのような「切り替え」なしで表示できるので、テキスト言語に近い形での実装ができます。
偶奇により処理を変える場合には、条件が一つなので選択関数も一つになります。

数値の範囲によって結果を変える場合、その範囲の判定をどのようにするかですが、単純に「大なり」「小なり」の不等号の関数を使うと煩雑になりがちなので、範囲内であるかの判定を行わせる「範囲内と強制」を使っていきます。

範囲内と強制の関数の注意点として、上限や下限をその判定に含むかどうかの設定があり、デフォルトでは下限は含むものの、上限は含みません。
右クリックで設定を変更できます。

ケースストラクチャを使っても同じ処理を行うことはできるものの、このように選択関数を使うことでそれぞれの条件によって結果がどうなるかを一目で確認することができるという利点があります。
どんなときでも?ではない
上の例を見て、気づいた方がいるかもしれませんが、選択関数を使用したプログラムだと、条件に当てはまらなかった方の処理も、処理自体は行われることになります。
LabVIEWの特性上、選択関数が実行されるためには、条件がTrueだったときとFalseだったときの結果がどちらも選択関数に渡されないといけないため、二つの処理の結果の値のうち片方しか「使われない」ことになり、使われていない方の処理は無駄になります。
ケースストラクチャの場合、ケースのいずれかが実行されてそれ以外は実行されない、というのと比べると、「使われない値の処理もされる」ことの無駄がある、と言えます。
条件次第でとても大きい処理(時間がかかる)を行わせるような場合には、今回紹介した方法は不向きかもしれません。
また、選択関数を使った方法だと、横並びに選択関数を並べていくような書き方となるため、ケースストラクチャと比べると、単純にブロックダイアグラムの場所を多く使いがちです。
そのため、見た目をコンパクトにしたい、という事情がある場合に条件分岐が多い処理を書くときにも注意が必要です。
本記事では、ケースストラクチャを分けない工夫について紹介しました。
原理的にはケースストラクチャで実装できるすべての内容は選択関数と判定を行うための処理を用いることで置き換えられますが、その分プログラムが大きくなってしまうと本末転倒です。
見やすくなるかどうか、無駄な処理を行うことによる実行速度に影響がないかなどに注意しながら、実装を考えてみてください。
ここまで読んでいただきありがとうございました。

コメント