【Ruby】FizzBuzzアプリを作ってみる
今回はプログラミングを学ぶ上で多くの人が経験するであろうFizzBuzzアプリの作り方について学んでいきます。
・FizzBuzzアプリとは
・FizzBuzzアプリのコードを書いてみる
・FizzBuzzアプリとは
FizzBuzzアプリとは一般的に以下の要件を満たすアプリだといわれています。
① 1~任意の数を順番に表示する。
② 3の倍数の時は"Fizz"を表示する。
③ 5の倍数の時は"Buzz"を表示する。
④ 両方で割り切れる数の時は”FizzBuzz”と表示する。
これらすべての条件を満たすために条件分岐をうまく活用しながらロジックを考えていきます。
・FizzBuzzアプリのコードを書いてみる
まず、最初のステップとして要件①の任意の数字を受け取るようにしましょう。
ユーザーから数字を受け取るためにはgetsメソッドを使います。コードで書くと以下のようになります。
number = gets.to_i (1..number).each do |x| end
getsメソッドで受け取った数値をnumber変数に代入しています。
この時、注意が必要なのはgetsメソッドはデータを文字列として受け取るということです。
なので、受け取った文字列データをto_iメソッドを使って数値データへと変更しています。
数値に変更することで(1..number)の部分で任意の数字それぞれにアクションを行うよう指示が出せます。
次はeach分の中身を考えていきましょう。
今回は条件分岐のif文を使用します。
まず、条件④の3と5両方の倍数であるかを確認します。
この時には%を使うと便利です。%は対象の数字に対して割り算を行った結果、余りの値を教えてくれます。
if文と組み合わせると以下のようにコードが書けます。
number = gets.to_i (1..number).each do |x| if x % 15 == 0 puts "FizzBuzz" end end
これで15の倍数の時に"FizzBuzz"を出力するプログラムができました。
同じ要領で"Fizz"と"Buzz"も作っていきます。
number = gets.to_i (1..number).each do |x| if x % 15 == 0 puts "FizzBuzz" elsif x % 5 == 0 puts "Buzz" elsif x % 3 ==0 puts "Fizz" else puts x end end
以上のコードで条件をすべて満たすことができました。
ちなみに、要件④を一番最初に書いたのはプログラミングでは上から順番にコードが読まれるという特徴があるからです。
なので、先に要件③や②を書いてしまうと"FizzBuzz"にたどり着く前に他の文字列が表示されるという問題が発生してしまうのです。
以上でFizzBuzzアプリについての説明を終わります。
プログラミングを勉強する上で大切な要素がたくさん含まれていたと思うのでしっかり身に着けていきたいです。