最も単純なプログラム(スイッチ)

仮にもSEなので、プログラムの話でもしようかと。

プログラムの基本 蛍光灯のON/OFF

画像1

プログラムといえばアプリやゲームを思い浮かべると思う。
しかし、最も単純なプログラムはスイッチ/ボタンのON/OFF。

家の蛍光灯を思い浮かべてほしい。
OFFだと消える
ONにすると光る

これが最も単純なプログラム。
0と1の世界みたいな話も、結局は0をOFF、1をONにしましょうの決め事。

複雑なプログラム 蛍光灯の明かりレベル

画像2

これを複雑化したものが、「紐をひっぱると明るさが変わる」。
OFFだと消える(変更なし)
ONだとレベルによって明るさが変わる
①最初は消える
②一度引っ張ると2つの蛍光灯が光る
③もう一度引っ張ると1つの蛍光灯が光る
④さらにもう一度引っ張ると豆電球が光る

プログラムによっては、③の時には別の回答がある
③’もう一度引っ張ると、1つの蛍光灯が消える

「人によってプログラムのつくり方は変わる」というのはこの部分。
そして、「お客さんが何言ってるかわからない・・・」もこの部分。

明かりレベルも0と1

プログラムで表現するとき、それぞれの状態を数値で表現する場合は以下。
0:消灯
1:点灯 蛍光灯1、蛍光灯2
2:点灯 蛍光灯1
3:点灯 豆電球

0と1じゃないじゃん・・・・!!でもプログラムの中では0と1。
内部的には2進数で管理されている。
00:消灯
01:点灯 蛍光灯1、蛍光灯2
10:点灯 蛍光灯1
11:点灯 豆電球

詳しく知りたいなら基本情報処理技術者試験でも受けて下さい。

数値で管理なんてしねーよ!という人はその通りなのでお帰りください。
わかりやすいように数値にしてるだけで、結局内部的には数値でしょ。

[tips]曖昧な表現が生むプログラムのバグ

電気のON/OFFや、ONの時の紐を引っ張った回数で光ることがわかったら、
じゃあなぜ、こんな単純なことでバグが起こるんだ?と考えてみる。

明かりレベルの①~④は、実は曖昧な表現である。
蛍光灯のことを知らない人は、以下のような勘違いをするかもしれない。
① 蛍光灯は消えている
② 蛍光灯が2つ光る
③ 蛍光灯が3つ光る
④ 蛍光灯が3つ、豆電球が1つ光る
X もう一度引っ張ったらどうなるんだ・・??

画像3

蛍光灯のことを知っている人は、
消えている⇒2つ光る⇒1つだけ光る⇒豆電球だけ光る⇒消える
というのが分かるが、知らない人にはわからない。

もしかしたら、「うちの蛍光灯は8段階明るさを変えられるんだけど!!」とか言いかねない。
開発者の中でも言うやつはいる。お客さんの言うことを優先しろバカが。

まとめ

最も単純なプログラムはON/OFFであること。
状態も0、1の組み合わせでしかないこと。
おまけとして、バグが発生する要因の一つ「曖昧な表現」。

僕は常々、プログラムなんてIF文と処理だけで十分作れると思っている。
最終的には0と1なんだから、当然よな。(暴論)

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