ArkRoyal Apr/27/2025 19:57

ChasterでのProgrammable Lock作成 -8-

8回目です。今回は「Logicブロック」に関しての解説となります
この「Logicブロック」は「もし〇〇ならば」とか「〇〇の確率で」とか「〇〇の比率で」みたいな条件式と呼ばれるものになります。このブロックが理解できると「〇〇の時にもし〇〇ならば〇〇を実行させる」が作れるようになって少し面白くなってきます

if 〇 do 〇

「 if 〇 do 〇」の説明です。最も基本的な条件式になるかと思います。「もし〇〇ならば〇〇を実行させる」と言う条件式です。「if 」のところに条件のブロックを付けて、その条件だった時に「do 」の中にあるブロックを実行します。「if 〇」の条件に当てはまらない場合は何もしません

if 〇 do 〇 else 〇

「 if 〇 do 〇 else 〇」の説明です。これは前述の内容と似ていて「もし〇〇ならば〇〇を実行させる。違うのなら〇〇を実行させる」と言う条件式です「if」のところに条件のブロックを付けて、その条件だった時に「do」の中にあるブロックを実行します。「if 〇」の条件に当てはまらない場合は 「else」の中にあるブロックを実行します

if 〇 do 〇 else if 〇

「 if 〇 do 〇 else if 〇」の説明です。 「if 〇 do 〇」ブロックと「if 〇 do 〇 else 〇」ブロックには歯車アイコンが付いていて押すと「if」の下に「else if」を付け足せます
これも前述の内容と似ていて「もし〇〇ならば〇〇を実行させる。違う時に〇〇ならば〇〇を実行させる」と言う条件式です「if」のところに条件のブロックを付けて、その条件だった時に「do」の中にあるブロックを実行して終わります。「if 〇」の条件に当てはまらない場合は 「else if 〇」の条件ならば「else if」の中にあるブロックを実行して終わります。どれも当てはまらないなら何もしません
「どちらも当てはまらないなら」では無くて「どれも当てはまらないなら」と書いたのは「else if」は複数指定できるからです。日本語にすると「もし〇〇ならば〇〇を実行させる。違う時に〇〇ならば〇〇を実行させる。それでも無くて〇〇ならば〇〇を実行させる
この「else if」で気を付けないと駄目なのは上から順番に条件判定をする事。20代以上なら5%引き、30代以上なら10%引き、40代以上は15%引きのサービスをそのまま上からif構文で判定させると40歳でも20代以上なら5%引きの処理をして終わります。逆の順番にしないと駄目です。

if 〇 do 〇 elseif 〇 else 〇

「 if 〇 do 〇 elseif 〇 else 〇」の説明です。これは前述の構文に「else」が付いただけです。どの条件にも当てはまらない時に実行されます

〇 = 〇

「 〇 = 〇」の説明です。これは「Logicブロック」の条件式として使われます。左のブロックと右のブロックをどの条件で比較するかの選択が出来ます。=は同じ、≠は同じじゃない、<は左より大きい、≦は左以上、>は左より小さい、≧は左以下、の条件となります

〇 and 〇

「 〇 and 〇」の説明です。これは「Logicブロック」の条件式として使われます。左のブロックと右のブロックをどの条件にするかの選択が出来ます。andは両方の条件を満たす時、orはどちらかの条件を満たす時となります

Chance of 〇 %

「 Chance of 〇 %」の説明です。これは「Logicブロック」の条件式として使われます。本来ならば乱数と言うランダムな数値を生成してその数値に対して何らかの計算や条件で確率みたいなのを作り出すのですが、これはそれを自動で実行して〇%と言う条件を作ってくれます。簡略化してくれる便利なブロックです

Random outcome

「Random outcome」の説明です。これは比率設定をしてやる事でその比率に応じてランダムで特定の処理を実行させてやる事ができます。これも本来ならば乱数と言うランダムな数値を生成してその数値に対して何らかの計算や条件をしたりして比率に応じた処理を実行みたいにするのですが、これは比率の数字だけ入れればそれに応じた振り分けをして実行してくれます。簡略化してくれる便利なブロックです。比率の数字は合わせて10とか100になる必要は有りません
歯車アイコンが付いていて押すと初期の振り分け数3を2にしたり5にしたりと自由に変えられます

Text 〇 contains 〇

「Text 〇 contains 〇」の説明です。指定されたテキストに特定の部分文字列が含まれているかどうかを確認して含まれていれば実行します。テキストは文字列みたいなものでget 〇みたいにどこかから取得する事になるかと思います。それに対して特定の部分文字列が有るかどうかの判定で完全一致より部分一致と言う少し緩やかな判定をさせます

not

「not」の説明です。〇〇ならば実行と言う条件式に対して逆の条件式を加えます。〇〇じゃなければ実行と言う形になります

true

「true」の説明です。getで取得してくるものの中にはtrue/falseで返してくるものが有ります。それに対しての条件式はこの「true」もしくは「false」で比較させる必要が有ります

三項演算子

三項演算子は説明難しいです。一言で表すなら簡易if elseの条件式です。一番上に条件式ブロックを付けて、そうならば2番目のブロックを実行、違うならば3番目のブロックを実行。プログラミングで記述する時にはif elseの記述より簡略な記述で済むのですが慣れていないと ん?んん? そう言う事かと頭の中で一度変換作業が発生します。感覚的には日本語の文章の中に突如英文が1行混ざって日本語化して読み直すような感じですかね。記述としては短くできるメリットに対して不慣れなら変換作業が発生して手間になる可能性が生じるデメリットと言う感じでしょうか
三項演算子ってプログラミングする上で議論の的となる事も有るので職業プログラマーでも無い私としては深く書く資格は無かったりします。議論の土俵にすら上がれないと言うか…まぁ、無理して使うものでは無いから自分の中で意見がまとめられるまではif elseの条件式使うと良いと思います。上手く説明できません。ごめんなさい

■型

プログラムには型と呼ばれるモノが有り考え方が有ります。String型(文字)、Int型(数字)、Boolean型(true/false)、Time型(時間)みたいな感じで123と言うものが有っても文字としての123と数字としての123の2種類が有って前者と後者は違うものとして認識されます。前者はあああって書かれている様なもので数値としてみなさないので大小とか判定の対象外です。true/falseも同様に文字としてなのかYes・Noとしての意味合いの回答なのかは別になります。型に対しては同じ型として対応しないと駄目です。慣れない頃は躓くかと思いますがProgrammable Lockのブロックはある程度は違う型のモノは付かないようになっていますので少しは楽です

■Logicブロックまとめ

「Logicブロック」の種類と概要がある程度掴めたのなら「〇〇の時にもし〇〇ならば〇〇を実行させる」が作れるので簡単なものなら作れるようになります。漸くそれらしい何かを作れるようになるわけで少し面白くなってきます
上から順番に説明しているので次回は「Loopsブロック」の説明になります。繰り返し実行させる為のブロックになります
また週末には上げたいと思いますが難しいかもしれません。マイペースで続けて行きます

Search by Article Tags

Monthly Archive

Search by Exclusive Perks

Search Articles