我が家にはGoogleHomeがあり「ちょっと昼寝をしたい時のアラーム(30分後にアラーム)」や「朝の目覚まし(明日8時にアラーム)」をお願いしています。
これらはそれぞれ声のかけ方が違います。
どのようなプログラムの仕組みになっているかを考えながら、二種類のアラームタイマーをスクラッチで作成してみましょう。
二種類のタイマーの仕様
今回作成するタイマーは「秒」まで設定すると、細かく大変になってしまうので「分」までで設定していきます。
何分後にアラーム
「5分後」や「30分後」など、わずかな設定時間のタイマーを作成してみます。
もし「2時間後」に設定したい場合は「120(分)」と入力するような仕様にします。
「ちょいアラーム」と呼ぶことにします。
難易度は☆2くらいです。
何時何分にアラーム
「7:30」や「21:40」など、午前と午後を区別しながら、「何時」と「何分」を入力するタイマーを作成してみます。
何日後までは想定せずに、最大値は23時間59分後とします。
「しっかりアラーム」と呼ぶことにします。
考えなければいけないことが多いので難易度は☆4.5くらいです。
ここまでの内容で「作れそう!」と思ったあなたは、ぜひ作成してみてください。
以下の内容は解説になりますので、なるべく自力で考えてから見るようにしてください。
「ちょいアラーム」の作り方
ちょいアラームはこれだけで出来てしまいます。
タイマーのブロックは、常に動き続けているので、時間を聞いた後にリセットすることがポイントです。
また、「答え*60」とすることによって、入力された「分」の数字を「秒」に変換しています。
この部分は最初、「答え*60=タイマー」としてみたのですが、正しく動作しなかったので、このようにしています。
もしかしたら、もっといい方法があるかもしれませんので、色々試してみて下さい。
「しっかりアラーム」の作り方
多くの変数を用意して、作成してみました。
ちょっと、力わざっぽいので、もっといい作り方があるかもしれません。
ここでのポイントは、時間も含めてすべてを「分」に変換していることです。
13時30分の場合、「13 x 60 + 30 = 810」となります。
こうする理由は、単位を「分」に揃えることで、計算をシンプルにするためです。
次のポイントは「_alarm」の変数です。
後ほど、「now」変数と「alarm」変数の差を比較して、タイマーを設定していくのですが、その前に一時的な仮変数として「_alarm」を用意しています。
なぜ仮変数なのかは、以下で解説します。
「_alarm – now > 0」と「でなければ」で条件を分かれさせています。
例えば、現在時刻が13:30だとします。
アラームの設定は以下の2通りが考えられます。
- 14:30(1時間後):14:30(870)- 13:30(810)= 60
- 1:30(12時間後):1:30(90)- 13:30(810) = -720
引き算の結果がマイナスになってしまう場合、少し加工が必要になります。
1:30を90ではなく、1470に変換して計算を進めます。
これらを「_alarm(仮変数)」を元に条件分岐し、正式な変数「alarm」に値を格納し、処理を実行していきます。
ここまでの解説ですが、言葉だと難しく感じるかもしれませんが、やっていることは単純なので、何度か読み返しつつ、他の時間なども変換してみることで理解が深まると思います。
まとめ
二種類のタイマーの作り方を紹介しました。
ここで解説した作り方が、答えではありません。
自分の力で考えて、作ることが出来たらそれが正解です。
この記事で皆さんにお伝えしたいことは「考えて作ることの大切さ」です。
ぜひ、一日一日「Keep Thinking」でプログラミングを楽しんでいきましょう(*^▽^*)
コメント