[ペチパーの大冒険] ゲーム制作#03「ブーリアンて何?」

2025/01/16

ゲーム 開発

t f B! P L
eyecatch コンピュータの0と1の事をブーリアンって言います。 日本語で、真と偽。 英語で、true , false。 そして、プログラミングにおけるif文は常にこのブーリアンを判定しているだけの処理という事を理解できると、 思いの他プログラムは簡単に思えてくるかもしれないので、それを学習できる問題をいくつか考えてみました。 ちなみに、今回のプログラムの問題は全てJavascript言語で記述してあります。

Q1. 基本の判定と文字列

次のif文は極めて基本の判定です。 通常、このような書き方はしませんが、わかりやすく書いてみました。 if(true){ console.log("True") } else{ console.log("False") } > True if(false){ console.log("False") } else{ console.log("True") } > False わかりやすいですよね? では次の場合はどうなるでしょう? if("false"){ console.log("False") } else{ console.log("True") }
答えを見る
> True "False"は、ブーリアンではなく、クォーテーションで囲まれているので、文字列になっているので、if文では、true扱いになる。

Q2. 比較判定

ブーリアンの判定は、比較演算子による判定がよく使われます。 if(1 == 1){ console.log("True") } else{ console.log("False") } > True それでは、次の場合はどうでしょう? if(1 == "1"){ console.log("True") } else{ console.log("False") }
答えを見る
> True 数値と文字列なので、同じじゃないからtrueにはならないと思ったけど、結果は"True" これは、Javascriptの比較演算では、==という判定は、変数の型を判定しないという特性があり、1も"1"も同じ1という判定が行われてしまいます。 型のチェックも同時に行いたい場合は、===(3つ)の演算子を使います。

Q3. 論理演算

複雑なif文になると、比較演算を複数同時に行います。 次の場合は、AND演算子(&&)が使われていて、trueとtrueのどちらもtrueの場合に、if文は、trueの判定を行います。 if(1 === 1 && 2 === 2){ console.log("True") } else{ console.log("False") } > True 反対にOR演算子(||)を使うと、どちらか一方がtrueの場合の判定が使えます。 if(1 === 1 || 1 === 2){ console.log("True") } else{ console.log("False") } > True では、次の場合のif文は、どんな結果になるでしょう? if(1 === 1 || 1 === 2 && 1 === 3){ console.log("True") } else{ console.log("False") }
答えを見る
> True ||と&&が混在すると、if文は非常に複雑に見えてきます。 この問題は、最初の1 === 1がtrueの判定で、それ以降の判定はfalseでも意味がなくなるので、Trueが返されますが、通常はこういう複雑な書き方をしてはいけません。 if文内の条件を、一度文章にしてちゃんと説明できる内容にしてみると、比較的安定したif文が書ける様になりますよ。

あとがき

基本的な条件判定でも、引っかかってしまう場合もあります。 これは、仕事現場で発生するバグになって、ソフトウェアの不具合につながります。 誰がみてもわかりやすいブーリアンでif文を書ける様になると、安定したプログラミングができるという事ですね。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ