アレアレ

お役立ち情報、お悩み解決情報を発信!

基礎編

飲食店の伝票から食事代を計算する例から理解するアルゴリズムとプログラミング

このサイトの プログラミング教育 のコーナーでは、これからプログラミングを学び始める子供を持つ親御さんに向けて、プログラミングについてわかりやすく解説しています。全くプログラミング経験のない方は、基礎編の記事から、基礎編を読んだ方は実践編の記事をご覧ください。

飲食店の伝票から食事代を計算する例から理解するアルゴリズムとプログラミング

前回の、中華料理店の注文を例にしたわかりやすい「コード化」の目的の記事では、中華料理店のメニューをコード化することで、「料理名を手書きで書いた伝票よりも、簡単に伝票が取れるようになる」というコード化のメリットをご紹介しています。

一方、伝票をコード化することによって、デメリットもあります。それは、そのコードの意味を全く知らない人が、その伝票を見た場合、「何を意味している情報なのか、わからなくなる」ということです。

今回は、そのようにコード化して普通の人には、意味のわからなくなった伝票から、合計の食事代を計算するアルゴリズムを考えることで、プログラミングについての理解を深めます。

コード化した伝票は、普通の人には意味がわからない

では、前回の復習から始めましょう。まず、次のような中華料理店のメニューがあるとします。

中華料理店のメニュー

  1. 担々麺(750円)
  2. タンメン(750円)
  3. チャーハン(650円)
  4. 餃子(600円、1皿6個)
  5. 焼きそば(750円)
    前回の記事のリストに料金を加えています

この店に、あるお客さんが来て、「担々麺一丁、タンメン二丁、餃子2枚」と注文したとしましょう。その場合の伝票を、普通に「料理名 x 数量」という形で取ると、次のようになりますよね。

料理名を書いた伝票

担々麺 x 1
タンメン x 2
餃子 x 2

一方、この伝票は、メニューの通し番号を利用して、次のように取ることもできます。

料理名をコードに置き換えた伝票

1 x 1
2 x 2
4 x 2

メニューの通し番号を使い、料理名を「担々麺→1」、「タンメン→2」、「餃子→4」と置き換えて取ったわけです。

このように伝票を取ることにすると、いちいち料理名を伝票に書く必要がなくなります。なので、素早く簡単に伝票を取れるようになるメリットがありました。

一方で。「料理名をコードに置き換えた伝票」を、この背景を全く知らない普通の人(お店の関係者以外の人)が見た場合は、どうなるでしょうか。「この数字の羅列はなんの意味だ?」と、意味がわからなくなるわけです。

コード化された伝票から合計金額を計算するアルゴリズムを考える

さて。この中華料理店で、普段、キャッシャーを担当しているベテランスタッフが、急病で休むことになったとします。そこで、急遽、この店では一度も働いたことがない人に、そのキャッシャーの仕事を手伝ってもらうことになりました。

そのような人に、「コードに置き換えた伝票から、合計の飲食代を計算するにはどうしたらよいか?」ということを、文章で伝えることを考えてください。例えば次のようなイメージです。

コードに置き換えた伝票から合計金額を計算するアルゴリズム

  1. 伝票を1行読む (例: 1 x 1)
  2. 読み出した行のうち「x」の左の数字をだけを取る (例: 1)
  3. 2で取り出した数字をメニューの通し番号と比較する (例: 1→担々麺)
  4. 通し番号と一致する料理の料金を得る (例: 1→担々麺→750円)
  5. 「x」の右の数字をだけを取り数量とする (例: 1個)
  6. 4と5の値を掛けて料金を計算する (例: 750円 x 1個 = 750円)
  7. 6の値を合計額に足しこむ (例: 1行目時点の合計額 750円)
  8. 伝票を最後の行まで1〜7を繰り返す
  9. 求まった合計額に消費税を掛けた額が、お客さんに請求する食事代の合計額となる

以上がそのアルゴリズムの例です。

このように文章で定義されたアルゴリズムがあると、急遽キャッシャーを担当することになった人でも(つまり、誰でも)、コードに置き換えた伝票から合計金額を計算できるようになるのがわかりますよね。

アルゴリズムをコンピューターに実行できるようにするのがプログラミング

ここまで理解できたら、もはや、プログラミングについても理解したと言えます。というのも、上で文章で書いたアルゴリズムを、コンピューターが実行できるようにする作業こそがプログラミングだからです。

人間には上のように文章でアルゴリズムを伝えられました。一方、コンピューターには、「プログラミング言語」を使って、それを指示することになります。

そのため、プログラミングをするためには、それを指示する人間が、「プログラミング言語」を理解し、それでアルゴリズムを定義できるようになる必要があるわけです。

次に読む記事: アルゴリズム作りに不可欠な「繰り返し」と「条件判定」

Return Top