自動販売機のフローチャート|価格が複数ある場合の条件分岐と繰り返し

最終更新日

価格が複数ある自動販売機のフローチャートでは、残金によって選ぶ商品を分け、購入できなくなったら返却へ進みます。500円、180円、120円を例に、条件分岐と繰り返しを図で確認します。

前回の記事では、120円の飲み物だけを売っている自動販売機を例に、繰り返し処理の基本を整理しました。今回は少し条件を増やして、180円と120円の飲み物がある場合を考えます。

条件が増えると、単に同じ処理を繰り返すだけではなく、「どちらを選ぶか」という判断が必要になります。これは、プログラミングの条件分岐や、業務フローでの判断ルールを考えるときの基本です。

今回のゴール

500円を使って、できるだけ多くの飲み物を買う流れを考えます。

  1. 500円で購入できるだけ飲み物を購入する
  2. 何本購入できるかを求める
  3. 最後にお釣りがいくら残るかを求める

前提条件

今回は、基礎編よりも条件を増やします。

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

今回のポイントは、残金に応じて購入する飲み物を切り替えることです。

必要な処理を洗い出す

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

  • 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つ目は、繰り返しの中でどの処理を選ぶかの条件です。

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

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

フローチャートで確認する

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

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

動かして流れを確認する

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

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

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

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

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

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

    ポイントは、同じ「残金を確認する」処理でも、判断する条件が2つあることです。まず180円以上あるかを確認し、足りなければ120円以上あるかを確認します。どちらも満たさなくなった時点で購入をやめ、お釣りを返します。

    まとめ

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

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

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

    シェアする