初学者のメモ
自分が忘れないようにするためのメモ書きです。
今回は、 Rubyの条件分岐に関してです。特に、複数の条件分岐、Fizz Buzzについてです。あくまで、自分の知識の確認ですので、拙い記述です。ご容赦ください。
条件分岐とは
プログラム中で、ある条件が満たされているかどうかを判断し、次に実行するコードを変化させるもの。複数の条件を指定したり、特定の値の時の処理などを記述可能。
if文もしくはswitch文で記述する。
今回はif文での記述。switch文はこちら。
if文の記述方法
以下のような記述方法となる。
if 条件式1
処理 #条件式1を満たしたときの処理
elsif 条件式2
処理 #条件式1を満たさず、条件式2を満たしたときの処理
elsif 条件式3
処理 #条件式1,2を満たさず、条件式3を満たすときの処理
else
処理 #いずれの条件式も満たさないときの処理
end
ここで、いくつかの注意点があります。
・elsif文は複数記述可能。
・elsif、elseは不要な時に省略可。
・上から条件の判断が優先されるため、注意(下記参照)。
Fizz Buzz問題とは
Fizz Buzzとは、1から順に数を数え上げていき、3の倍数なら「Fizz」、5の倍数なら「Buzz」、両方の倍数(15の倍数)なら「Fizz Buzz」、いずれでもなければその数を言うゲームです。
元々は海外の言葉遊びでそのルールをプログラムに実装したものです。
プログラミングの初歩的な問題で扱われることが多いです。以下にコードを記述してみましょう。今回は1~15までの数字で試してみcます。
for num in 1..15
if num % 15 == 0
puts "Fizz Buzz"
elsif num % 3 == 0
puts "Fizz"
elsif num % 5 == 0
puts "Buzz"
else
puts num
end
end
出力は以下のようになります。
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
Fizz Buzz
上記コードを細かく見てみましょう。
for num in 1..15
ここは1~15の繰り返しをfor文で表す。
if num % 15 == 0
puts "Fizz Buzz"
numが15で割り切れるとき、"Fizz Buzz"と出力。
elsif num % 3 == 0
puts "Fizz"
numが3で割り切れるとき、"Fizz"と出力。
elsif num % 5 == 0
puts "Buzz"
numが5で割り切れるとき、"Buzz"と出力。
else
puts num
それ以外は数字を出力。
注意点
注意点は、15の倍数の条件分岐を最初にすること。もし最初にしないと、他の条件分岐に進んでしまう。例えば、以下のコードを見てみましょう。(最初と2番目の条件を逆にする)
for num in 1..15
if num % 3 == 0
puts "Fizz"
elsif num % 15 == 0
puts "Fizz Buzz"
elsif num % 5 == 0
puts "Buzz"
else
puts num
end
end
すると、結果は以下のようになる。
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
Fizz # 15で割り切る条件より先に3で割り切れる条件の分岐に進んでしまう
結果より、15の時、"Fizz Buzz"ではなく、"Fizz"で出力されてしまっている。
これを防ぐために、より厳しい条件を先に置いた方が有効である。
おわりに
今回はif文についてまとめました。Fizz Buzz問題は有名なので、初学者の方は、基礎固めにやってみるのもおすすめです。次回はswitch文です。
それでは、ばいなら~
2025.02.06 執筆