こんにちは。Tomoyuki(@tomoyuki65)です。
制御構文は他のプログラム言語で学んだことがある人も多いのではないでしょうか?
一度他の言語で学んだことがある方は、結構簡単に理解することができると思います。
そうでない方も、難しくはないので安心して下さい。
プログラムをコントロールして、問題解決ができた時はとても面白んですよ!
この記事では、そんな制御構文について解説します。
if
まずはifの使い方について説明します。
ifは条件分岐に使用します。
基本的な書き方は以下の通りです。
if 条件 then 処理を記述 end # thenは省略可能 if 条件 処理を記述 end
条件が当てはまらなかった場合の処理を記述したい場合、以下のように「else」を使います。
if 条件 then
処理1
else # 条件に当てはまらなかった場合
処理2
end
二つ以上の条件を記載したい場合、以下のように「elsif」を使います。
if 条件1 then
処理1
elsif 条件2 then # 2つ目の条件
処理2
else # 上記以外の場合
処理3
end
ifの条件には、以下のような比較演算子や論理演算子を使用します。
# 比較演算子 > # 例:x > 10 (xが10より大きい場合) < # 例:x < 11 (xが11より小さい場合) >= # 例:x >= 10 (xが10以上の場合) <= # 例:x <= 10 (xが10以下の場合) == # 例:x == 10 (xが10と等しい場合) != # 例:x != 10 (xが10と等しくない場合) # 論理演算子 && # 例:x > 0 && x < 10 (xが0より大きいかつ10より小さい場合) || # 例:x == 3 || x == 5 (xが3と等しいまたは5と等しい) ! # 例:!(x == 1) (xが1でない)
ではifの使用例として、以下のプログラムを実行してみて下さい。
# 数値が80の場合
num = 80
# 数値が70を超えた場合
if num > 70
puts "70超過!"
# 数値が50以上の場合
elsif num >= 50
puts "50以上"
# 上記以外の場合
else
puts "50未満"
end
実行結果の通り、数値変数numが80なので最初の条件と一致し、「70超過!」が出力されました。
数値変数を変えて色々試してみて下さいね。
puts “80以上” if num >= 80
case
次はcaseの使い方について説明します。
caseも条件分岐に使用しますが、ifよりも簡潔に書ける場合があります。
caseの書き方は以下の通りです。
case 変数 when 変数の値1 then # thenは省略可能 処理1 when 変数の値2 # whenは複数記載可能 処理2 else # 上記以外の場合 処理3 end
では例として、以下のプログラムを実行してみて下さい。
gohan = "ラーメン"
case gohan
when "親子丼"
puts "丼もの"
# 条件を複数記載する場合はカンマ「,」を使う
when "ラーメン", "そば", "うどん"
puts "麺類"
else
puts "それ以外"
end
while
次は繰り返し処理で使用するwhileの使い方について説明します。
whileは条件によって繰り返し処理をしたい場合に使用します。
whileの書き方は以下の通りです。
while 条件 do # doは省略可能 処理 end
では例として以下のプログラムを実行してみて下さい。
i = 0 # 繰り返し条件に使う変数
# i が10より小さい場合繰り返し
while i < 10
puts "#{i}:繰り返し"
i += 1 # 「i = i + 1」
end
timesメソッド
次に「timesメソッド」による繰り返し処理について説明します。
「timesメソッド」は繰り返しの回数が決まっている場合に使用します。
例として以下のプログラムを実行してみて下さい。
# 5回繰り返す場合
5.times do
puts "繰り返し"
end
# 回数を知りたい場合(0から始まる)
5.times do |i|
puts "#{i}:繰り返し"
end
尚、timesメソッドの場合、do〜endを{}に置き換えることができ、1行で書くことが多いです。
# 5回繰り返す場合
5.times {
puts "繰り返し"
}
# 1行で書くとスッキリします。
5.times { puts "繰り返し" }
for
次はforによる繰り返し処理について説明します。
forは何らかの集合的なオブジェクト(配列、ハッシュ、範囲)の要素数分だけ処理を繰り返すことが出来ます。
※ただし、Rubyでforはほぼ使われないということを覚えておきましょう
例として以下のプログラムを実行してみて下さい。
# 1〜10の要素を一つずつ取り出してiに格納し、
# 要素がなくなるまで繰り返す
# 1..10は範囲を表すオブジェクト
for i in 1..10 do # doは省略可能
p i
end
2
3
4
5
6
7
8
9
10
また、配列やハッシュの場合につても確認しましょう。
以下のプログラムを実行してみて下さい。
# 配列の場合
for color in ["赤", "青", "黄色"]
p color
end
# ハッシュの場合
for fruit, price in {ringo: 100, mikan: 50}
puts "#{fruit}は#{price}円"
end
eachメソッド
forは内部的にeachメソッドを使用しています。
したがって、for文は次のように書き換えることができます。
# 配列の場合
["赤", "青", "黄色"].each do |color|
p color
end
# ハッシュの場合
{ringo: 100, mikan: 50}.each do |fruit, price|
puts "#{fruit}は#{price}円"
end
{ringo: 100, mikan: 50}.each { |fruit, price| puts “#{fruit}は#{price}円” }
break、next
これまで繰り返し処理について学んできましたが、繰り返しの途中で処理を終了させたい場合は『break』を使用します。
例として以下のプログラムを実行してみて下さい。
10.times do |i|
if i == 6 # iが6の場合、繰り返し処理を終了
break
end
p i
end
1
2
3
4
5
実行結果の通り、iが6になった場合に処理が終了しているのがわかります。
for文やeachでも使えますので試してみて下さいね。
また、繰り返しの途中で処理をスキップしたい場合は、『next』を使用します。
例として以下のプログラムを実行してみて下さい。
10.times do |i|
if i == 5 # iが5の場合、処理をスキップ
next
end
p i
end
1
2
3
4
6
7
8
9
まとめ
- 条件分岐にはifを使用する。場合によってはcaseを使い処理を簡潔にする
- 条件判定には、比較演算子や論理演算子を使用する
- 繰り返し処理にはwhileやtimesメソッドを使用する
- 集合的なオブジェクトの繰り返し処理にはforやeachメソッドを使用する
- 繰り返しの終了は『break』、スキップは『next』を使用する
- 関連記事
Tomoyuki
最新記事 by Tomoyuki (全て見る)
- 【スト6】モダンキャミィの初心者向けコンボまとめ【STREET FIGHTER 6(ストリートファイター6)】 - 2024年11月10日
- モンハンワイルズでおすすめのオプション設定まとめ【Monster Hunter Wilds】 - 2024年11月4日
- モンハンワイルズでおすすめのグラフィック設定まとめ【Monster Hunter Wilds】 - 2024年11月2日
コメントを残す