フローチャートで考える自動販売機の仕組み
本記事はプログラミング学習の基礎トレーニングとして身近にあるものを参考に、その仕組みをフローチャートで理解してみようというのが目的となります。
まずは自動販売機について下記の簡単な例題Aを見てみましょう。
【例題A:前提条件】
・販売商品は110円の商品のみである
・販売商品の在庫は有限である
・購入者が商品ボタンを押下すると商品が排出される
①購入者がお金を投入すると自動販売機では投入されたお金の総額が表示されます。
②購入者は選択した商品のボタンを押します。ここではボタンを押さずに再度①に戻り、お金を投入する事も可能です。
③ボタンが押された場合は、自動販売機は下記の処理をします。
商品在庫数を1個減らす
→【投入したお金 - 110】円分の金額表示をする
→ 商品を排出する
自動販売機の簡単な仕組みをざっくりイメージできたでしょうか?
しかしながら、例題Aでは投入したお金の総額に関わらず選択した商品のボタンを押すだけで商品が排出されてしまう問題点があります。
次の例題Bは金額表示が110円以上であれば商品を排出するように修正を加えたものになります。
【例題B:前提条件】
・販売商品は110円の商品のみである
・販売商品の在庫は有限である
・購入者が商品ボタンを押下すると商品が排出される
※金額表示が110円未満の場合は無効
これで金額表示が110円未満の場合は、再度お金を投入して110円以上でなければ商品が排出されないようになりました。
ただし例題Bにもまだ問題点があります。
商品在庫が0個の場合が考慮されていないからです。
次の例題Cは商品在庫数が1個以上の場合のみ商品が排出されるように修正を加えたものになります。
【例題C:前提条件】
・販売商品は110円の商品のみである
・販売商品の在庫は有限である
・購入者が商品ボタンを押下すると商品が排出される
※金額表示が110円未満の場合は無効
商品の在庫数が0個の場合は無効
今回は例題A/B/Cのように問題点を洗い出しては修正を加えていく過程をプログラミング学習の基礎トレーニングの一例として紹介してみました。
例題C でも投入したお金を戻す機能が含まれていなかったりと、自動販売機の仕組みとして問題点はまだまだあります。こちらの続きについては、授業や勉強会などでの題材としても使っていただけたらと思っています。