【Ruby入門】制御構文を使う!if、case、while、times、for【#7】


こんにちは。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

 

実行結果
70超過!

 

実行結果の通り、数値変数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

 

実行結果
0:繰り返し
1:繰り返し
2:繰り返し
3:繰り返し
4:繰り返し
5:繰り返し
6:繰り返し
7:繰り返し
8:繰り返し
9:繰り返し

timesメソッド

次に「timesメソッド」による繰り返し処理について説明します。

「timesメソッド」は繰り返しの回数が決まっている場合に使用します。

 

例として以下のプログラムを実行してみて下さい。

# 5回繰り返す場合
5.times do
  puts "繰り返し"
end

# 回数を知りたい場合(0から始まる)
5.times do |i|
 puts "#{i}:繰り返し"
end

 

実行結果
繰り返し
繰り返し
繰り返し
繰り返し
繰り返し
0:繰り返し
1:繰り返し
2:繰り返し
3:繰り返し
4:繰り返し

 

尚、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

 

実行結果
1
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

 

実行結果
“赤”
“青”
“黄色”
ringoは100円
mikanは50円

 

eachメソッド

forは内部的にeachメソッドを使用しています。

したがって、for文は次のように書き換えることができます。

# 配列の場合
["赤", "青", "黄色"].each do |color|
 p color
end

# ハッシュの場合
{ringo: 100, mikan: 50}.each do |fruit, price|
 puts "#{fruit}は#{price}円"
end

 

eachメソッドは処理の量によって、1行で書き換えることが多い
{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

 

実行結果
0
1
2
3
4
5

 

実行結果の通り、iが6になった場合に処理が終了しているのがわかります。

for文やeachでも使えますので試してみて下さいね。

 

また、繰り返しの途中で処理をスキップしたい場合は、『next』を使用します。

例として以下のプログラムを実行してみて下さい。

10.times do |i|
  if i == 5  # iが5の場合、処理をスキップ
    next
  end
  p i
end

 

実行結果
0
1
2
3
4
6
7
8
9

 

無限ループをしたい場合、『loop』を使い、終了条件には『break』を使います。

# iが5になったら処理を終了させる
i = 0
loop do
  if i == 5  # loopは終了条件がないと無限に繰り返すので注意
    break
  end
  p i
  i += 1
end

 

まとめ

  •  条件分岐にはifを使用する。場合によってはcaseを使い処理を簡潔にする
  •  条件判定には、比較演算子や論理演算子を使用する
  •  繰り返し処理にはwhileやtimesメソッドを使用する
  •  集合的なオブジェクトの繰り返し処理にはforやeachメソッドを使用する
  •  繰り返しの終了は『break』、スキップは『next』を使用する

 

  •  関連記事

【無料あり】Ruby入門サイトおすすめ3選!初心者向けの学習方法を解説

2017年10月24日

 

The following two tabs change content below.

Tomoyuki

SEを5年経験後、全くの未経験ながら思い切ってブロガーに転身し、月間13万PVを達成。その後コロナの影響も受け、以前から興味があったWeb系エンジニアへのキャリアチェンジを決意。現在はWeb系エンジニアとして働きながら、プロゲーマーとしても活躍できるように活動中。








シェアはこちらから


【2024年】おすすめのゲーミングPC

モンハンワイルズの発売日とPC版(Steam版)の推薦スペックが公開されたので、おすすめのゲーミングPCをご紹介!


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です