【プログラミング】プログミングとは想像と論理
皆さん、こんにちは。
スキル・バンク SEのW です。
最近、プログラミング学習のネット広告を良く見かけます。
職業柄そういったサイトを良く見るから、というのが一番大きな理由でしょうが、それ以外に雑誌やチラシでも良く見ますね。
さて、そこで問題です。
プログラミング学習とは何なんでしょうか。
それは、プログラミング言語を学ぶことでしょうか?
はたまた、ロボットを動かすことでしょうか?
プログラミングというか、アルゴリズムというか、そういう関連の練習問題として「自動販売機のプログラム」という問題があります。
自動販売機は、お金を入れて、ボタンを押すと、商品が出ます。
この自販機の働きを、フローチャートで表してみようというものです。
まず、自販機は待機の状態とします。
ジュースとか中身はセットされているという前提ですね。
この場合お客さんのアクションとしては、何があるでしょうか?
「お金を入れる」「商品のボタンを押す」、それと「お金の返却レバーを回す」というのもあります。
では「返却レバーが回された」場合は、どのような処理が必要でしょうか。
いきなり「お金を戻す」はダメですよ。
それでは、まだお金を投入していなくてもお金が出てしまいます。
「投入されているお金があるか調べる」->「お金を戻す」
と、チェック処理を入れなくてはいけません。
「商品ボタンが押された」場合も同様です。
いきなり「ジュースを出す」はダメです。
まずはお金がいくら投入されているのかチェックします。
そして指定された商品の金額より投入額が上か下かチェックします。
と、自販機でボタンが押されたという動作へのリアクションのために、こんなに長々と文章を書いてしまいました。
しかし、まだ商品は出ていません。
お金が投入されたときの処理は、さらに複雑になります。
このように、プログラミングとは、対象の動作や機能をいったんバラバラにほぐして、それを順番通りに並べ替えるという作業になります。
ただ、実際に自販機をバラスわけにはいきませんので、想像力を駆使して様々なパターンを考えるわけです。
そしてそれを論理的に、一番スムーズな形になるように並べ替える。
想像力と論理思考力、相反するような力が求められるのがプログラミング能力と言えるでしょう。
それにしても自販機の練習問題、なかなか奥が深いと改めて感じました。