学んだことを実践する:FizzBuzz

10日目です。

何か学んだものを活かしたいなあ、、と初心者でも作れそうな題材をネットで探していたところ、

学習中に出てきた「FizzBuzzプログラム」が最低限の能力を測るのに使われることもあると言う記事を見たので、

何も見ずに作ってみようと思いました。

 

FizzBuzzプログラム」とは

・3で割り切れる数値を引数に渡すと、"Fizz"を返す。

・5で割り切れる数値を引数に渡すと、"Buzz"を返す。

・15で割り切れる数値を引数に渡すと、"Fizz Buzz"を返す。

・それ以外の数値はその数値を文字列に変えて返す

 

以下が何も見ずに、思い出しながらなんとか動くようにしたコードです。(約30分)

 number = [1, 2, 3, 4, 5, 6, 15]

 number.each do |n|
  if n % 15 == 0
   puts 'Fizz Buzz'
  elsif n % 3 == 0
   puts 'Fizz'
  elsif n % 5 == 0
   puts 'Buzz'
  else
   puts n
  end
 end

何故そんなに時間がかかったかと言うと、最初メソッドを作成して下記のように書いてました。

n = 0

def fizz_buzz
if n % 15 == 0
puts 'Fizz Buzz'
elsif n % 3 == 0
puts 'Fizz'
elsif n % 5 == 0
puts 'Buzz'
else
puts n
end
end

ただ、これを実行してもターミナル上で何も起こらず、あれどうしたらいいんだっけ?と格闘してました。

(引数を渡すことも受け取ることもできていないのだから当然ですよね笑)

仕方なくメソッドは諦めて上記のとりあえず動くものを作りました。

引数の受け渡しと受け取りは下記のようにするべきでしたね。

 def fizz_buzz(n)
  if n % 15 == 0
   puts 'Fizz Buzz'
  elsif n % 3 == 0
   puts 'Fizz'
  elsif n % 5 == 0
   puts 'Buzz'
  else
   puts n.to_s
  end
 end

 fizz_buzz(1)
 

写経しているだけでは理解とは程遠いんだなあ、、と言うのが実感できたので、

興味のあることをプログラムでどんどん作っていくようにします。

 

ーーーーーーーーーーーー

本日はチェリー本第7章(クラスの作成を理解する)が終わりました。

明日は8章(モジュールを理解する)を終わらせます