4章課題

最後の問題だけ得点を2倍にするには?


課題内容(書籍P.126)

最後の問題だけ得点を2倍にしてみよう!

「もし〜なら 〜でなければ」 のブロックを使って、最後の問題のときだけ得点を2倍にするコードを作ればできるはずだよ。最後の問題かどうかを確認するにはリストの長さを調べる 「〜の長さ」 と何かを比べるとわかるよ。


ヒント→ 「もし〜なら 〜でなければ」を使って、最後の問題・それ以外の問題のコードを分けて作ってみよう。問題リストの長さと何かを比べると最後の問題か判断できるよ。


最後の問題だけ得点を倍にするには何が必要だと思うかい? 必要なのは「最後の問題か判断すること」と「2倍の得点をあげること」の2つだね。まずは「最後の問題か判断すること」から始めてみよう。



タカシが最後に作った「出題キャラクター」のコード

最後の問題か判断しよう

条件によってプログラムを変える時は、 「もし〜なら」 を使えばよかったね。もちろんこれでもできるんだけど、今回は 「もし〜なら、でなければ」 を使おう。これを使って「最後の問題の場合」「最後の問題でない場合」の2つのプログラムを用意すればいいね。では、早速やってみよう。

今の問題番号は 「問題番号」 という変数の中にあったよね。これを使おう。今回は3つ問題を用意しているので最後の問題番号は「3」だね。ではプログラムはどう書けばいいかな?


もちろんこれでもOK! でも、これだと問題を増やした時にプログラムも変える必要がありそうだね。実はもっといいやり方がある。最後の問題番号は、問題リストに用意した問題の数と同じになるんだ。ということは、



こう書くと問題番号が「3」、つまり最後の問題の場合とそれ以外の場合でプログラムを分けることができるんだ。こう書くと、問題を増やして最後の問題番号が「5」や「10」になってもプログラムを書き換える必要がないね。

あとはこのプログラムをどこかに入れてあげればいいけど、どこだと思う? そう。得点をあげているところ、つまり正解したときのプログラム部分に入れてあげればいいね。実際に入れてみるとこんな感じになるよ。



2倍の得点をあげよう

最後の問題の場合とそれ以外の場合でプログラムを分けることができるようになったね。あとは、この中にそれぞれ得点をあげるプログラムを用意すればOKだ。「最後の問題ではない場合」のプログラムはすでに用意してある、 「得点を10ずつ変える」 だね。これを 「でなければ」 の中に入れてみよう。



こんな感じだね。完成までもうちょっとだ。あとは 「もし問題番号が問題の長さなら」 の中に2倍の得点をあげるプログラムを用意するだけだね。2倍の得点になるよう、 「得点を20ずつ変える」 を中に入れてあげよう。これで完成だ!



更新日: 2019年05月22日