R12プログラムは文章である。読み書きができる人間なら誰にでも書ける。1if文XPressoにはいわゆる「if文」を表現するノードがありません。ループの場合もそうですが、ノードをワイアでつなぐタイプのプログラムでは、「くり返し」や「条件分岐」、「ジャンプ」といった複雑な構造を表現するのが難しいのです。それでも条件分岐なしでは何も作れないので、XPressoで条件分岐を表現するための方法をいろいろと説明します。新規シーンを作成し、ヌルオブジェクトを作成し、XPressoタグを作成して下さい。今回は、このヌルオブジェクトのX方向の移動範囲を「-100から100の間に制限する」ことを考えます。テキストベースであれば、これは以下の3行のプログラムで簡単に表現できます。-100;ここで、1行目の「if()」は条件文を表し、()の中の「&&」は「かつ」を表します。この行を日本語で表現すると、「もし、f_inが100と等しいか小さく、かつ、f_inが-100と等しいか大きい場合は、f_inをそのままf_outに出力する」となります。これはつまり、「何も制限しない」ということを意味します。if」は「そうでなく、もし」を表します。この行は、「そうでなく、もし、f_inが100より大きい場合は、f_outに100を出力する」となります。これはつまり、「上限値を100に制限する」ということを意味します。3行目の「else」は「そうでない場合は」を表します。この行は、「そうでない場合は、f_outに-100を出力する」となります。これはつまり、「下限値を-100に制限する」ということを意味します。実際このプログラムをCOFFEEノードに書き込んで、ヌルオブジェクトノードの間に挟めば、簡単に値を「-100から100の間に制限する」ことができます。図804-1サンプル804aを開いて、エディタビューでヌルオブジェクトを動かしてみて下さい。図804-2それでは同じことをXPressoで表現してみましょう。実は値を制限するだけなら簡単です。XPressoには「限定」という専用ノードがあるからです。計算」から限定ノードを作成し、COFFEEノードの代わりにヌルオブジェクトの間にはさみ、最大値を「100」、最小値を「-100」に変更してみて下さい。図804-3サンプル804bを開いて、エディタビューでヌルオブジェクトを動かしてみると、先ほどのCOFFEEと同じように移動範囲が-100から100の間に制限されていることがわかるはずです。このような専用ノードが用意されていること自体、「XPressoで条件分岐を表現するのが難しい」ということの証明なのです。2ノードを組み合わせてif文を表現するしかし、値を制限することだけが条件分岐ではありません。複雑な条件分岐を表現するには、XPressoノードを組み合わせてif文と同じ働きをする構造を作る必要があります。実用的ではないので制作過程は省略します。サンプル804cを開いて各自調べてみて下さい。図804-4このXPressoは、おそらくステップ1でCOFFEEを使って書いたif文と同じ働きをします。それでは対応を見ていきましょう。左のノードは「f_in」に対応します。>100」に対応します。4列目のブール演算ノードは「&&」と「else」に対応します。下のブール演算ノードの働きがちょっと判りにくいのですが、これは上のブール演算ノードの結果と、2列目下の比較ノードの値の両方が「偽(FALSE)」であった場合に「真(TRUE)」になります。5列目は確認用の結果ノードです。6列目は出力する値「f_in」、「100」、「-100」に対応します。7列目は出力先のヌルオブジェクトで、「on」ポートをオンオフすることにより、この入力を実行するかどうか決めています。ちなみに、1行目が「制限なし」、2行目が「上限値」、3行目が「下限値」に対応しています。これでif文を完全に再現できました。COFFEEのif文が不要な行をスキップするのに対して、XPressoでは全てのノードが必ず実行されます。