見出し画像

True or False だけじゃない!

小難しそうなタイトルから書きだしますが…

「判断」では Yes/No

プログラミングをしていると、多くのプログラミング言語では if といった命令で「判断」を行います。「判断」によって処理を分岐させ、条件に応じた処理を行うのです。

フローチャート(流れ図)で表記する場合には、ひし形の記号を用いることが、「JISX0121 情報処理用流れ図・プログラム網図・システム資源図記号」で規定されています。
ひし形の中に条件式を記述し、その条件を満たす場合には Yes、満たさない場合には No に分岐します。

プログラムでは True/False

フローチャートでは、Yes/No で表記することが多いのですが、実際のプログラムでは Yes/No ではなく True(真)/False(偽)で表記するように感じられます。

プログラムのキャラクター

最近のプログラミング言語には、この True/False という真偽だけを表現するための変数型として真偽型(Boolean型/bool型)が用意されていることが多いくらいです。
C 言語には真偽型が用意されていませんが、C 言語から派生したプログラミング言語である C++ や Java には真偽型が用意されています。

True っていくつ?

真偽型であれば、 True(真)/False(偽)のいずれかしか値を取らないはずですが、この True と False を比較するとどうなるかをまとめた Web ページを見つけました。 以下のページです…

上記ページの中でも言及されていますが…
C 言語では TRUE が 1、FALSE が 0 と定義するのが一般的だったので、この流れを踏襲しているプログラミング言語が多いんじゃないかと思います。

具体的には、C 言語のプログラムでくり返しを行う while 文では、( ) 内の条件式が真(True)である間、くり返しを行うこととなっています。

while(条件式)
{
  条件が成立している間は実行が繰り返される部分
}

この条件式に 1 を記述しておくと無限ループ(いつまでもくり返す)となるあたりが、True(TRUE)が 1 と定義されている意味なのだと思います。

while(1)
{
  無限に繰り返し続ける部分
}

とは言え…
C 言語では、上記の場合に 0 ではない値が指定されていれば、1 が指定されているのと同様に無限ループになります。すなわち、True は 0 以外、False は 0 なのです。
そのため、以下のように 7 を指定した場合も無限ループとなります。

while(7)
{
  無限に繰り返し続ける部分
}

0 と 1 は違うけど…

真偽型が存在しない C 言語において、変数に格納された値は、変数の方によって範囲は異なるものの 0 と 1 以外の値となることがあり得ます。

True/False の判断として考えるのであれば、0 と 1(厳密には 0 以外)のいずれかであるかを意識していればいいのでしょうが、変数の値をそのまま真偽の判断に使用することは、基本的にはありません。

while 文で無限ループを作る場合には、真偽が得られる条件式ではなく、1 のように数値を指定することもあるかもしれませんが、次のプログラムのように判断を行う if 文に数値を指定することはまずありません。

if (i) 
{
  変数 i が 0 でなければ処理する
}

本当にこのような処理をしたい場合であっても、可読性を確保する観点から、次のプログラムのように条件式として記述するべきだと思います。

if (i != 0) 
{
  変数 i が 0 でなければ処理する
}

デジタルは「0 と 1 の二つしか無い」と表現されることもありますが、これはアナログとの対比表現として用いられているだけで、デジタルでも整数として大きな数値を扱うこともできれば、3.14 や 1.41421356 といった小数点以下の数字を含んだ実数を扱うこともできます。

「判断」は条件によって True/False のどちらかの結果を出します。変数をそのまま利用するのであれば、0/0 以外のどちらかで結果を出しますが、前述のようにそんな判断を行うことはまれで、何かしらの条件式によって判断するでしょう。

なぜこんな論調?

こんな論調になったのは、文部科学省が GIGA スクール構想を推進して 3年目になろうとしていますが、未だに「ICT 機器を利用しているか?」という真偽でしか判断していないケースが見受けられる現状に悲しくなったからです。😣

「ICT 機器を利用しているか?」という、ただ使っているかどうか?という True/False ではなく、その利用頻度や内容にも言及しなければいけないのではないでしょうか?
利活用の推進に及び腰になっていたり、この状況でも ICT 機器の利用を否定しようとしていたり、というのはいつまで続くんでしょうね…

この記事が気に入ったらサポートをしてみませんか?