FizzBuzz問題をスクラッチで解く方法

ブロックの応用テクニック
Scratch星人
Scratch星人

FizzBuzz問題ってなに?・・・ですね。
プログラミングに携わっている方は一度は耳にしたことがある言葉だと思います。

また、聞いたことがないというあなたも、この先プログラミングを続けていくと、きっと解くことになる問題なので、この記事を読んでマスターして下さいね。

FizzBuzz問題とは

元々は言葉遊びとして生まれたFizzBuzzですが、プログラミングが出来るかどうかを判断するために、FizzBuzz問題として提唱されました。

内容は1から順に数を表示させ、3で割り切れる時は「Fizz」、5で割り切れる時は「Buzz」、そして3でも5でも割り切れる時(つまり15で割り切れる時)には「FizzBuzz」と表示させる、というものです。

もし、そのどれにも当てはまらない場合は、その「数字」を表示させます。

問題の考え方

まずは問題を分かりやすく整理してみましょう。

  • 「数字」÷3(で割った余り)=0なら「Fizz」
  • 「数字」÷5(で割った余り)=0なら「Buzz」
  • 「数字」÷15(で割った余り)=0なら「FizzBuzz」
  • 3でも5でも15でも割り切れないなら「数字」

このようになります。
気付いた方もいるかもしれませんが、スクラッチには「余り」に関する便利なブロックがあります。

使い方については偶数と奇数を見分ける方法の記事で詳しく説明しているので、ぜひご覧ください。

このブロックと変数ブロックを使って、スクリプトを組み立てることが出来れば、FizzBuzz問題の半分は解けたも同然です(*^-^*)

では、組み立ててみて下さい!

プログラムを完成させる

どうでしょう?出来ましたか?
答えはこのようになります。
(変数名は「数字」など好きな名前にしてもOKです!)

ではこの作成したブロックを使って、FizzBuzz問題を完成させます。

「もし~でなければ」ブロックと「~回繰り返す」ブロックを使ってこのようにスクリプトを組み立ててみて下さい。

組み立てることが出来たら「緑の旗」をクリックして、スタートしてみて下さい。

どうでしょう?
3の時は「Fizz」と表示され、5の時は「Buzz」と表示され、完成したように見えます。

Scratch星人
Scratch星人

でも、ちょっと待って下さい!
15の時はどう表示されていますか?

・・・「Fizz」と表示されます( ;∀;)
15の時は「FizzBuzz」と表示されるはずなのに、、。

なぜこのような結果になったかと言うと、スクラッチに限らず、プログラミングでは基本的にコード(スクラッチではスクリプト)の上から順に処理がされていきます。

そのため今回、15は3で割り切れると判断され「Fizz」と表示されてしまったのです。

修正するにはどうしたらいいでしょう?
簡単です!順番を変えるだけです(^_-)-☆

このように変更してみて下さい。

お疲れ様でした。
これでFizzBuzz問題を解くことが出来ました(^^♪

ちなみに、この問題は「100まで繰り返しなさい」などと出題されることが多いようですので、その場合は「20回繰り返す」を「100回繰り返す」に変更するだけでOKです。

まとめ

FizzBuzz問題を解く方法について書いてみました。

問題を解くカギは3つです。

  1. 割り算を余りで考える
  2. もし~でなければ、を使う
  3. ~回、繰り返す

この3つはプログラミングでは、基本であると同時にとても重要な考え方です。
実際のプログラミングではこのような表記を使います。

  1.  i % 3 == 0(変数を3で割った余りが0という意味)
  2.  if→もし、else→でなければ
  3.  whileやforなど

上記について、興味があればGoogleさんに聞いてみて下さい(^_-)-☆

最後に、今回作ったものに少し手を加えて、入力された数字が何なのか?という作品を作ったので載せておきます。

コメント

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