”〇を〇で割った余り” のブロックって、一体どうやって使うのでしょう。
使い方が分からないと役に立ちそうにないブロックですが、プログラミングではよく使われる剰余演算子と呼ばれるもので、とても役に立ちますので是非理解しておきましょう。
時間(〇時〇分〇秒)を表示させる
1000秒と言われるとどれ位の時間かピンとこないですよね。
〇分〇秒という表示にするときに、”〇を〇で割った余り” のブロックが役に立ちます。
1000秒を分と秒の単位で表してみましょう。
1000秒÷60秒=16あまり40
なので16分40秒となります。
上の計算式で解るように、
1000秒を60秒で割った余りが秒の値となり、
商の16は分の値となります。
”〇を〇で割った余り”のブロックを使って、クマに時間を言わせるスクリプトを作ってみました。
1000秒を16分40秒と言い換えてくれましたね。
”今の時間/60”の”切り下げ”って、なんだろう?
割算の答となる16.666…の小数点以下を切り捨てて16だけを分の値とするために切り下げを使っています。
切り下げのブロックが無いと、16.66666分40秒となってしまいます。
奇数か偶数かを判断できる
数字が奇数か偶数(2つに割切れる)かの条件で、動きを変えるプログラムを作る事が良くあります。
あるスプライトが変数が奇数か偶数によってスプライト1に行ったり、
スプライト2に行ったりするスクリプト
変数が奇数の場合は奇数リストに入って、偶数の場合には偶数リストに入るスクリプト。
*応用として、3や5で割った余り=0とすることで、3の倍数や5の倍数を条件として使うこともできますね。
必要なコスチュームだけ選んでアニメーションで使う
上のように歩くクマのアニメーションに8つのコスチュームを準備して、
”次のコスチュームにする”のブロックを使ってうまく動いています
そこに別のシチュエーションで使用する次のようなコスチュームを追加しました。
歩くアニメーションに関係のないコスチュームが入ってくると動きがおかしくなるよね。
そこで”〇を〇で割った余り”のブロックを使うと、その問題を解決できますよ。
コスチューム名に番号を0から必要な数まで割り振って、次の様なブロックを作ります。
こうすることで、余りは0から7までの値となるので、
bear-walk-0 から7までのコスチュームだけを繰り返します。
立ち上がったクマがアニメーションに出てくることはないですね。
変数に0から6までを割り当てて月曜日から日曜日までを表示したり、ある部分を繰り返して使いたい時に便利なブロックです。
マイナスの値を使う時には注意が必要
マイナスを含む割算はプログラミング言語によって結果が異なるので、
複数の言語を使用するプログラム開発環境だと注意が必要になります。
-1を3で割った余りの結果は、大体は次の2通りがあります。
- 商が-1で、余りが2
- 商が0で、余りが-1
スクラッチではどうなってるのかな?
スクラッチの場合は、この例でいうと1のパターンになりますが、
頭だけで考えると難しいので、演算式をクリックして確かめてください。
このように自分で考えた計算値が正しいかを確認して使ってくださいね。
また、他のプログラミング言語を使う機会があるかもしれないので、
言語によって結果が異なる事を認識しておいてください。
念のために、以下の計算式で両方の結果が成り立つのかを確かめてみます。
- -1(割られる数)=3(割る数)x -1(商)+ 2(余り)
- -1(割られる数)=3(割る数)x 0(商)+ -1(余り)
2つのパターンで計算式が成り立つのがわかりますね。