第十一回 貯金残高とお釣りの計算プログラム

プログラミング編

はじめに

マサト先生
マサト先生

やあ、こんにちは。今日は2種類のプログラム

貯金残高シミュレーションプログラム』、

お釣りの計算プログラム

についてやっていこう。

ヒロト
ヒロト

はい、よろしくお願いします。

残高シミュレーションプログラム

マサト先生
マサト先生

まずは、『貯金残高シミュレーションプログラム』についてだが、例えば10万円を金利1%の銀行に貯金した場合、10年後には貯金額がいくらになっているのかプログラムで予想してみよう。

ヒロト
ヒロト

預けたお金が何年後かにはいくらになっているのかを事前に計算で知ることができるのはうれしいですね!

マサト先生
マサト先生

うむ。プログラムを書く前に基本的なことを説明すると、貯金額に金利をかけることによって、1年後の利息が計算できる。利息というのは預けているだけでもらえるお金のことだ。今回の場合、利息は \(100000 \times 0.01=1000\ (円)\) となる。その結果、1年後の貯金額は利息の分だけ増えて、\(101000\ (円)\) となる。ここまでいいかい?

ヒロト
ヒロト

金利は 1%=0.01 として計算したのですね!

2年目の利息は、\(101000\ (円)\) に0.01をかけて求めるということでいいのですね?

マサト先生
マサト先生

察しが良いな、その通りだ!つまり、2年目の利息は、

\(101000\times 0.01 =1010\ (円)\) となり2年目の貯金額は利息の分だけ増えて、

\(101000+1010=102010\ (円)\) となるわけだ。

このように毎年『貯金額+利息』が新たな利息を計算するための貯金額になる、

という計算法を『複利計算』というのだ。

ヒロト
ヒロト

複利計算ですね、分かりました!どんどん上乗せされていくので嬉しい計算法ですね!

マサト先生
マサト先生

では、以上の情報をもとにしてプログラムを書いてみよう!

ビットアローの準備はいいかな?

ヒロト
ヒロト

はい!今回はfile26を新しく作成します。10年後の貯金額を求めるので複利計算を10回繰り返すことになりそうですね、ということはfor文の出番かな?

ヒロト
ヒロト

できました!

まず、変数 \(a\) に100000を代入して、2行目でfor文の回数を10回にしました。3行目では変数 \(a\) に毎年の貯金額を上書きするようにしました。4行目では毎年の貯金額をprint関数で表示するようにしました。

マサト先生
マサト先生

うむ、よくできているぞ!10年後には110462円になることが分かったわけだ。

一つだけアドバイスしよう。今回は金利1%だったが、金利というのはよく変化するものなのだ。そこで、上のプログラムにおいて新たに変数 \(b\) を用意して、それに0.01を代入し、\(b\) を用いて同じプログラムを書くのだ。 

ヒロト
ヒロト

なるほど、とにかく書き直してみますね!

ヒロト
ヒロト

2行目に新しく金利0.01を代入した変数 \(b\) を用意しました。そして、4行名の式を \(b\) で書き換えました。

マサト先生
マサト先生

完璧だ!

このように新たに変数 \(b\) を用意することで、もしも金利が変化したとき、\(b\) に新しい金利を代入するだけでプログラムを再利用できるようになるだろう?

ヒロト
ヒロト

なるほど、書き直す箇所が1か所だけで済むということですね!これは使えるテクニックですね!

マサト先生
マサト先生

今でなくていいので、元金 \(a\) の値や、金利 \(b\) の値を色々変えて結果を確認してみよう。さらに預ける年数も10年から20年に変えたりして結果をシミュレーションしてみよう!

ヒロト
ヒロト

はい、いろいろいじって遊んでみます。


お釣りの計算プログラム

マサト先生
マサト先生

では次に『お釣りの計算プログラム』についてやっていこう。これはつまりお店にあるレジみたいなもので、購入金額に対して支払った金額から、お釣りとして渡す紙幣や硬貨の枚数を計算するプログラムのことだ。

ヒロト
ヒロト

このプログラムも購入金額と支払った金額を表す二つの変数を用意すると良いですね。

マサト先生
マサト先生

その通りだ。例えば購入金額が300円で、支払った金額が5000円だった場合、お釣りは5000-300=4700(円)になるから、千円札4枚、500円玉1枚、100円玉2枚ということになる。問題は、お釣りの紙幣の枚数と硬貨の枚数をどうやって求めるかだ。それが分かればプログラムを書けるようになるだろう。

ヒロト
ヒロト

はい、4700円の中に千円札が何枚含まれるかを求めるためには4700を1000で割ったときの『』を求めればよいです。そして、500円玉の枚数は、残りの700を500で割ったときの『』を求める。以下同様となります。

マサト先生
マサト先生

その通りだ!

ある数をある数で割ったときの商を計算してくれる便利な演算があったことを覚えているかな?

ヒロト
ヒロト

はい、確か第6回でやったと思います。

4700//1000で4700を1000で割ったときの4を、

4700%1000で4700を1000で割ったときの余り700を計算できます。

マサト先生
マサト先生

うむ、そうだったな。ここまで準備すればもう大丈夫だろう。では、後は自分で考えてプログラムを書いてみよう。

ヒロト
ヒロト

はい、頑張ります!


約10分後


ヒロト
ヒロト

できました!お釣りが正しく計算されました。

マサト先生
マサト先生

うむ、今回の場合はそれでいいが、例えば312円の物を買ったとして1万円札しかなかった場合どうなるだろう。お釣りは、10000-312=9688(円)となって、5千円札、千円札、500円玉、100円玉、50円玉、10円玉、5円玉、1円玉の全ての枚数を計算する必要があるだろう。

ヒロト
ヒロト

確かに!ということは数字だけを変えた同様の計算をコピペで増やせばいいですね!しばしお待ちを。

ヒロト
ヒロト

できました!これでどんな場合にも対応できると思います!

マサト先生
マサト先生

素晴らしい!

\(a\) と \(b\) の値を色々と変化させて結果を確認してみるといいだろう。

ヒロト
ヒロト

はい、いくつか試しましたが大丈夫そうです。自作のレジマシンの完成です!

マサト先生
マサト先生

これで、いつでもお店が始められるな!順調にいったことだし今回はここまでにしよう。次回は『while文』についてやろうと思う。では、お疲れさん。

ヒロト
ヒロト

はい、ありがとうございました!

コメント

タイトルとURLをコピーしました