自動販売機フローチャートの応用例|条件分岐と繰り返しを500円で解説

最終更新日

価格が複数ある自動販売機のフローチャートでは、残金によって選ぶ商品を分け、購入できなくなったら返却へ進みます。この記事では、最初に500円を入れ、180円の飲み物を優先し、買えなくなったら120円の飲み物を選ぶ例で、条件分岐と繰り返しを組み合わせた流れを確認します。

120円の商品だけを扱う基礎編では、残金が120円以上かどうかを見れば十分でした。応用編では、180円の商品を買えるか、買えない場合に120円の商品へ切り替えるか、という判断が追加されます。

完成したフローチャートを見る / 動く教材で残金と処理を追う

価格が1種類の場合から確認したい方は、基礎編:500円で120円の飲み物を買い続けるフローチャートをご覧ください。この記事では、その繰り返しに「どちらの商品を買うか」という分岐を加えます。

自動販売機のフローチャート完成例

今回の流れをフローチャートにすると、購入を続けるかどうかの判断と、180円の飲み物を選ぶか120円の飲み物を選ぶかの判断が入ります。

500円を入れて180円と120円の飲み物を残金に応じて購入し、お釣りを返すフローチャート

この図では、最初に「残金は180円以上?」を判断します。「はい」なら180円の商品を購入し、「いいえ」なら「残金は120円以上?」へ進みます。120円以上なら120円の商品を購入し、それも買えなければ返却して終了します。どちらの商品を購入しても、残金を更新して最初の判断へ戻ります。

結果は180円を2本、120円を1本の計3本で、お釣りは20円です。残金は500円 → 320円 → 140円 → 20円と変わります。各判断を順に追いたい場合は、動く教材でも確認できます。

今回のゴール

500円の範囲で180円の飲み物を優先して買い、残金が180円未満になったら120円の飲み物を買う流れを考えます。

  1. 180円の商品を優先するルールで、購入できなくなるまで繰り返す
  2. 何本購入できるかを求める
  3. 最後にお釣りがいくら残るかを求める

前提条件

ここでは、商品は売り切れず、1回の購入で1本が出て、その価格だけ残金が減るものとします。追加のお金は入れません。学習用の単純化した自販機であり、実際の機種すべての動作を表すものではありません。

  1. 自動販売機では180円と120円の飲み物を販売している
  2. 180円の飲み物を優先して購入する
  3. 180円の飲み物が買えなくなったら、120円の飲み物を購入する
  4. 残金は次の購入に使え、返却操作をするまでお釣りは出てこない

「180円の商品を優先する」と「本数を最大にする」は別の目標です。本数だけを最大にするなら120円の商品を4本買えますが、この記事では180円を優先するため3本になります。どちらも支払額は480円、お釣りは20円です。

必要な処理を洗い出す

必要な処理は、基礎編と大きくは変わりません。ただし、飲み物を選ぶ前に、残金を見て判断する処理が入ります。

  • 500円を入れる
  • 残金を確認する
  • 180円以上あれば、180円の飲み物を選ぶ
  • 180円未満で120円以上なら、120円の飲み物を選ぶ
  • 120円未満なら、購入を終了する
  • 購入ボタンを押す
  • 出てきた飲み物を取る
  • 返却ボタンを押して、お釣りを取る

このように、繰り返しの中に条件分岐が入ると、処理の流れは少し複雑になります。

実際の流れ

500円を入れたあと、180円の飲み物を優先して購入すると、次のような流れになります。

購入1回目

  • 残金を確認する:500円
  • 180円以上あるため、180円の飲み物を選ぶ
  • 購入ボタンを押す
  • 飲み物を取り出す
  • 残金は320円になる

購入2回目

  • 残金を確認する:320円
  • 180円以上あるため、180円の飲み物を選ぶ
  • 購入ボタンを押す
  • 飲み物を取り出す
  • 残金は140円になる

購入3回目

  • 残金を確認する:140円
  • 180円の飲み物は買えない
  • 120円以上あるため、120円の飲み物を選ぶ
  • 購入ボタンを押す
  • 飲み物を取り出す
  • 残金は20円になる

終了

  • 残金を確認する:20円
  • 120円未満のため、もう飲み物は購入できない
  • 返却ボタンを押す
  • お釣りを取る

結果は、180円の飲み物を2本、120円の飲み物を1本購入し、お釣りは20円です。

条件分岐と繰り返しを分けて考える

この例では、2つの判断が出てきます。

  • 購入を続けられるか:残金が120円以上か
  • どちらを買うか:残金が180円以上か

1つ目は、繰り返しを続けるか終わるかの条件です。2つ目は、繰り返しの中でどの処理を選ぶかの条件です。

処理が複雑に見えるときは、「繰り返しの条件」と「処理を選ぶ条件」を分けて考えると整理しやすくなります。

業務フローでも同じです。たとえば、未処理の申請が残っている間は確認を続ける、金額や内容によって承認者を変える、といった流れは、繰り返しと条件分岐の組み合わせで表せます。

動かして流れを確認する

文章と静止画だけでは、残金によって処理がどこへ進むのかが分かりにくい場合があります。下の教材では、自動販売機の動きとフローチャートの現在位置を連動させています。

500円を入れて、180円の飲み物を優先して購入します。180円が買えなくなったら120円の飲み物を選び、最後に返却ボタンを押してお釣りを受け取る流れを確認してください。

自動販売機の流れを動かして確認する

500円を入れて、180円の飲み物を優先して買います。180円が買えなくなったら120円を選び、最後に返却ボタンでお釣りを出します。

DRINKS 0円
500
購入0本
お釣り-
開始 500円を入れる 残金は180円以上? 高い飲み物を選べる? はい 180円を購入 残金を更新 残金確認に戻る いいえ 残金は120円以上? 安い飲み物を選べる? はい 120円を購入 残金を更新 いいえ お釣りを返して終了
開始

リセット直後です。1ステップ進めると、500円を投入します。

    残金が140円になったときの分岐に注目してください。「180円以上?」は「いいえ」ですが、「120円以上?」は「はい」なので、120円の商品を購入します。残金が20円になると両方とも「いいえ」になり、返却して終了します。完成図と同じ順序を、更新される残金と照らし合わせて追えます。

    まとめ

    価格が1種類だけの場合は、残金が購入金額以上かどうかを見れば十分でした。しかし価格が複数ある場合は、購入を続ける条件に加えて、どの選択肢を選ぶかという条件分岐が必要になります。

    アルゴリズムを考えるときは、処理を一度に理解しようとせず、条件を分けて整理することが大切です。これはプログラミングだけでなく、業務手順や判断ルールを設計するときにも役立ちます。

    基礎から確認したい場合は、自動販売機で学ぶ繰り返し処理の基礎編を先に読むと理解しやすくなります。あわせて、フローチャートで繰り返しを書く方法、アルゴリズムの基本も参考になります。

    シェアする

    IP Geolocation by DB-IP