基本は流れ図
プログラムと言っても、まず基本になるのは流れ図、格好良く言うとフローチャートだ。プログラム言語はこの世に何種類もあるけど、基本的にプログラムというのは流れ図を元に作られる。言ってみれば、プログラムの世界の共通語みたいなもんだ。
まずは、というか今回は主にこのフローチャートについて考えていきたい。
フローチャートは、役割が決まった図形を描いて、その中に何をするかを書き、それらを矢印でつなげることでプログラムの流れを表現する。
日常でも、「起きる→歯を磨く→朝ご飯を食べる→便意があったらトイレに行く→無ければ着替えて家を出る」なんて具合に行動の流れを決めるだろう。
それをちゃんと書いたのがフローチャートで、だいたい左とか下の画像みたいな図形で構成される。
![sample01-topaz-low resolution-640w.jpg](https://dailyportalz.jp/application/files/2417/0998/4032/sample01-topaz-low_resolution-640w.jpg)
![sample02-topaz-low resolution-640w.jpg](https://dailyportalz.jp/application/files/8517/0998/4034/sample02-topaz-low_resolution-640w.jpg)
![sample03-topaz-low resolution-640w.jpg](https://dailyportalz.jp/application/files/9517/0998/4035/sample03-topaz-low_resolution-640w.jpg)
![sample04-topaz-low resolution-640w.jpg](https://dailyportalz.jp/application/files/1617/0998/4037/sample04-topaz-low_resolution-640w.jpg)
![sample05-topaz-low resolution-640w.jpg](https://dailyportalz.jp/application/files/2617/0998/4041/sample05-topaz-low_resolution-640w.jpg)
カップ麺を作る流れをフローチャートにしてみました
では、これら5つの図形を組み合わせてカップ麺を作るまでをフローチャートにしてみましょう。
それが下の図。僕が高校生くらいの頃はテンプレートを使って手書きしてたんですが、今はパソコンで綺麗に作れるからいいですな。
![cupmen.jpg](https://dailyportalz.jp/application/files/8217/1013/8382/cupmen.jpg)
熱湯があるか、なければ沸かすところから
まずは熱湯があるかどうかを判断して、無ければヤカンで沸かす。沸騰を待つ部分で定義済み処理の図形を使ってみた。
普通はお湯が沸くまで待つ間にカップ麺の包装を取ったり蓋を半開きにしたり準備をする。が、コンピュータは特別な事をしなければひとつずつしか仕事を片付けられないので、お湯が沸くまでなにも出来ない(Windowsやマックが同時に色々出来るのは特別な事を裏でやってるからですが説明が難しいので割愛)。
また、沸騰を待つ部分で1秒待ってからお湯の様子を見ているのは、ひっきりなしにお湯の確認をすると疲れちゃうからで、コンピュータで言えば無駄に確認をすると処理が遅くなったりバッテリーを無駄に使ったりする。適当に休みながら待った方が効率がいいのです。
お湯が沸いたらいよいよカップ麺を作る段階に入る。
![IMG_0202-topaz-standard v2-640w.jpeg](https://dailyportalz.jp/application/files/8117/0998/3972/IMG_0202-topaz-standard_v2-640w.jpeg)
![IMG_0206.jpg](https://dailyportalz.jp/application/files/2417/1013/8566/IMG_0206.jpg)
![IMG_0207-topaz-low resolution-640w.jpeg](https://dailyportalz.jp/application/files/7717/0998/3977/IMG_0207-topaz-low_resolution-640w.jpeg)
お湯を入れてカップ麺を作る
次にカップ麺にお湯を入れる。包装を取り、蓋を半分剥がす。ここで「半分剥がす」ではなく「蓋を剥がす」と書いてしまうと、プログラムはその通りに蓋を全部取ってしまう。予定と違った結果になる、つまりバグである。
![IMG_0204-topaz-standard v2-640w.jpeg](https://dailyportalz.jp/application/files/5217/0998/3974/IMG_0204-topaz-standard_v2-640w.jpeg)
次の、「内側の線までお湯を入れる」も単に「お湯を入れる」と書いてしまうと、ヤカンのお湯を全部カップに注いでしまって大変な事になる。「カップオーバーフロー」という大変に危険なバグだ。だいたい世のセキュリティホールと呼ばれる問題は、このカップオーバーフローに似た原因で起こっている。
![IMG_0210-topaz-standard v2-640w.jpeg](https://dailyportalz.jp/application/files/7017/0998/3979/IMG_0210-topaz-standard_v2-640w.jpeg)
お湯を入れたら、1秒待つ処理を180回行う。つまり、180秒待つ、いうなれば3分待つという事だ。
![IMG_0213.jpg](https://dailyportalz.jp/application/files/9017/1013/8564/IMG_0213.jpg)
3分待ち終わったら完成、これで処理は終了となるので人間である僕がカップ麺を食べる。
普段何気なくやってることでも、人間はきちんと判断と処理をしているから上手い具合にカップ麺が出来るわけだ。それをフローチャートにしてみるとなかなか面倒な事をしている事に気付く。
![IMG_0217-topaz-standard v2-640w.jpeg](https://dailyportalz.jp/application/files/9617/0998/3986/IMG_0217-topaz-standard_v2-640w.jpeg)
プログラム、フローチャートを作るというのはそういう当たり前の事を改めて記述する楽しさや意外な発見が面白い。
フローチャートについてなんとなく判っていただけただろうか。次のページでは、猫の行動をフローチャートにしてみたいと思います。
![IMG_5122-topaz-standard v2-640w.jpeg](https://dailyportalz.jp/application/files/1917/0998/4010/IMG_5122-topaz-standard_v2-640w.jpeg)