分数の引き算をスクラッチで解いてみる

ブロックの応用テクニック

【お詫び】ここで作成するツールは結果(答え)が「マイナス」になる問題には対応していませんので、その点をご理解いただきお試しください。

完全版は分数の計算機をスクラッチで作る方法をご覧ください。

Scratch星人
Scratch星人

分数を引く!?
小学校で初めて習ったときは「はい?」となったのを覚えています。

仕組みさえわかってしまえば、分数の引き算は簡単です!
それでは解いていってみましょう。

分数の足し算を振り返る

以前の記事では分数の足し算を解くための便利な計算ツールを作成していきました。

今回の引き算でも、足し算で作った仕組みを利用しますので、まだ読んでいない方は、分数の足し算をスクラッチで解いてみる、の記事をまずはご覧ください。

そのあと、またこの記事に戻ってきてくださいね(^_-)-☆

分数の引き算とは

「2と3/5」-「1と1/5」のような計算です。
答えは「1と2/5」になります。

ちなみに分数の左に整数があるものを「帯分数」と呼ぶようです(*^-^*)

それでは、スクラッチで解いていってみましょう。

数字を入力するスプライトとスクリプトの作成

スプライトの作成

冒頭で紹介した足し算の記事では、数字を入力するためのスプライトを作りましたので、演算子に「-」を追加して使っていきましょう。

このようになります。
(見やすくするために「+」「×」「÷」は非表示にしています)

スクリプトの作成

6色のブロックのスクリプト

足し算の時と変わりはありません。
それぞれの変数名が被らないようにするのが注意点です。

「-」ブロックのスクリプト

「-」がクリックされたときに演算子は「引き算」と分かる必要があるので、このように設定します。

「計算結果」ブロックのスクリプト

足し算のスクリプトの下に、「引き算」のスクリプトを設定してください。

「変数 答え(~~)を表示する」ブロックは、何度も計算結果を表示する時に、必要になる場合があるので設定しておいてください。

引き算のスクリプトを考える

せっかく作った足し算のスクリプトがあるので、まずはそのままコピーしてみます。

コピー出来たら、いちばん上を「引き算を受け取ったとき」に変えて、分数のスプライトに数字を入れて「計算結果」を実行してみましょう。

「2と3/5」-「1と1/5」=「3と4/5」・・・?

はい、表示されたのは足し算の答えですね。
引き算の結果になるように修正していきましょう。

長いスクリプトを考える時には、一度に正解を出そうとすると頭が混乱してしまうので、分解して考えると分かりやすくなります。

まずは、「もし~でなければ」で区切って考えます。
丸印の部分を「-」に変えることで正しい結果が表示されるようになります。

「1と2/5」と表示されましたね!
しかし、これで終わりではありません。

答えの分子が分母より大きい場合

ここでは足し算の時に作ったものをそのまま利用可能です(^^♪
上記で作成したスクリプトの下にスクリプトをくっつけて下さい。

足し算の時のスクリプトを、そのまま、もしくは少しだけ手を加えて使うことが出来るのはここまでです。

ここからは、引き算オリジナルのスクリプトを作成していきますので、足し算からコピーしてきたスクリプトの残りは削除してください。

答えの分子が「0」になってしまう場合

例えば「2と3/5」-「1と3/5」を計算してみて下さい。

どうでしょうか?
計算結果は「1と0/5」と表示されませんか?

これは確実に間違っています。
正解は「1」ですので、そのように表示させるように修正します。

先ほどのスクリプトに以下のように追加してください。

無事「1」とだけ表示されるようになりました。

答えの分子が「-(マイナス)」になってしまう場合

「2と3/5」-「1と4/5」を計算してみて下さい。
計算結果は「1と-1/5」と表示されてしまいます。

正しくは「4/5」が正解です。

ここでは様々なことを考える必要があります。

  • 繰り下げについて
  • 繰り下げの回数について
  • 繰り下げた後、整数部分が「0」になった場合

それらを解決するのが以下のスクリプトです。

「答え(分子)>0まで繰り返す」を使うことで、繰り返し、繰り下げを行うことが出来ます。

繰り下げを行うためには、整数部分を「-1」すると同時に、分子に分母の数字を足してあげます。

最後に、整数部分が「0」になった場合は隠してあげることにします。

答えの分子と分母が同じ数字になる場合

問題としては少しおかしいですが「2と3/5」-「1と8/5」を試してみて下さい。
「-1と5/5」と表示されてしまうと思います。

正解は「0」です。
そこでこのようなスクリプトを追加して整数部分に繰り上げするように設定をします。

答えを約分する

今のままでは「2と3/5」-「1と3/10」=「1と15/50」と表示されています。
足し算の時と同様、約分を行う必要があります。

約分をするには以下のスクリプトを使います。

「約分」のスクリプトは、どのスプライトに設定してもいいのですが、Scratch星人は分かりやすいように「計算結果」のスプライトに設定しています。

お疲れさまでした。
無事「1と3/10」と表示されれば完成です(*^▽^*)

まとめ

分数の引き算をスクラッチで解く方法について書いてみました。

答えの様々なパターンを考え、問題が発生しないようにチェックしたり、修正することを「デバッグ」と言いますので、ぜひ覚えて下さい。

ここまで、足し算・引き算のツールを作りましたが、掛け算・割り算に進む前に、答えがマイナスになる場合に表示がおかしくなる問題を解消した完全版のツールを作ってみます。

今のままでは「2と3/5」-「4と4/5」=「-3と4/5」などと、まったく違った結果が表示されてしまいます。

これは、明らかに「バグ」であり、「デバッグ」すべきです。
公開をお楽しみに(^_-)-☆

↓ ↓ ↓
分数の計算機をスクラッチで作る方法の記事で完全版を公開しています。

コメント

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