4. if 文を使った制御
1 # if1.rb
2 # 最も簡単な条件判断
3 str = ARGV[0]
4 n = str.to_i
5 if n > 10 then
6 puts “#{n} は 10 より大きい”
7 end
8 puts “おわり”
まずはこのスクリプトを作成してください。
6行めの puts の前は [TAB] キーを入力して
字下げしてください。
5. if1.rb 解説
1 # if1.rb
2 # 最も簡単な条件判断
3 str = ARGV[0]
4 n = str.to_i
5 if n > 10 then
6 puts “#{n} は 10 より大きい”
7 end
8 puts “おわり”
まず最初に引数から値を受け取り(3行目)
それを整数値に変換して n に代入(4行目)
6. if1.rb 解説
1 # if1.rb
2 # 最も簡単な条件判断
3 str = ARGV[0]
4 n = str.to_i Yes
5 if n > 10 then
6 puts “#{n} は 10 より大きい”
7 end
8 puts “おわり”
if文で n の値が10より大きいか評価(5行目)
もしそうであれば6行目が実行され、7行目で
終了、8行目と続く
7. if1.rb 解説
1 # if1.rb
2 # 最も簡単な条件判断
3 str = ARGV[0]
4 n = str.to_i No
5 if n > 10 then
6 puts “#{n} は 10 より大きい”
7 end
8 puts “おわり”
n の値が 10 より小さければ6行目は実行されず
(何も起こらず)8行目へ飛ぶ
8. if1.rb 解説
1 # if1.rb
2 # 最も簡単な条件判断
3 str = ARGV[0]
4 n = str.to_i
5 if n > 10 then
6 puts “#{n} は 10 より大きい”
7 end
8 puts “おわり”
ちなみにif-end文と処理部分(if ブロック)がわかり
やすいように、6行目を [TAB] で字下げしました
これをインデントと言います
9. if 文を使った制御2
1 # if2.rb
2 # else で場合分け
3 n = ARGV[0].to_i
4 if n > 10 then
5 puts “#{n} は 10 より大きい”
6 else
7 puts “#{n} は 10 より大きくありません.”
8 end
9 puts “おわり”
10. if2.rb 解説
1 # if2.rb
2 # else で場合分け
3 n = ARGV[0].to_i
4 if n > 10 then
5 puts “#{n} は 10 より大きい”
6 else
7 puts “#{n} は 10 より大きくありません.”
8 end
9 puts “おわり”
ここでは if 文の条件に合わなかった場合、「それ以
外」として else文以下で処理しています
11. if2.rb 解説
1 # if2.rb
2 # else で場合分け
3 n = ARGV[0].to_i
4 if n > 10 then
5 puts “#{n} は 10 より大きい”
6 else
7 puts “#{n} は 10 より大きくありません.”
8 end
9 puts “おわり”
これは単純に
If A then do XX, else do YY
という英文章を表しているに過ぎません
12. if 文を使った制御2
1 # if2.rb
2 # else で場合分け
3 n = ARGV[0].to_i
4 if n > 10 then
5 puts “#{n} は 10 より大きい”
6 else
7 puts “#{n} は 10 より大きくありません.”
8 end
9 puts “おわり”
ちなみに3行目で引数の読み込みと整数変換を
同時に行っています。Rubyではこのように複数の
処理を1行内に連続して記述することが出来ます
13. if 文を使った制御3
1 # if3.rb
2 # elsif で細かい場合分け
3 str = ARGV[0]
4 n = str.to_i
5 if n < 10 then
6 puts “#{n} は 10 より小さい.”
7 elsif n == 10 then
8 puts “#{n} はちょうど 10 です.”
9 elsif n < 20 then
10 puts “#{n} は10 より大きく 20 未満です.”
11 else
12 puts “#{n} は それ以外です.”
13 end
14. if 文を使った制御3
1 # if3.rb
2 # elsif で細かい場合分け
3 str = ARGV[0]
4 n = str.to_i
5 if n < 10 then if X
6 puts “#{n} は 10 より小さい.” ~
7 elsif n == 10 then elsif Y
8 puts “#{n} はちょうど 10 です.” ~
9 elsif n < 20 then elsif Z
10 puts “#{n} は10 より大きく 20 未満です.” ~
11 else else
12 puts “#{n} は それ以外です.” ~
13 end end
15. if 文を使った制御3
1 # if3.rb
2 # elsif で細かい場合分け 条件評価は上から順に
3 str = ARGV[0] 行われ、条件に合わな
4 n = str.to_i い限り、下に進んでいく
5 if n < 10 then
6 puts “#{n} は 10 より小さい.”
7 elsif n == 10 then
8 puts “#{n} はちょうど 10 です.”
9 elsif n < 20 then
10 puts “#{n} は10 より大きく 20 未満です.”
11 else
12 puts “#{n} は それ以外です.”
13 end
16. if 文を使った制御3
1 # if3.rb
2 # elsif で細かい場合分け n = 15 の場合
3 str = ARGV[0]
4 n = str.to_i false 10より小さくも10ちょうど
5 if n < 10 then でもないので5, 7 行目は
6 puts “#{n} は 10 false
より小さい.” falseを返す
7 elsif n == 10 then
8 puts “#{n} はちょうど 10 です.”
9 elsif n < 20 then
10 puts “#{n} は10 より大きく 20 未満です.”
11 else
12 puts “#{n} は それ以外です.”
13 end
17. if 文を使った制御3
1 # if3.rb
2 # elsif で細かい場合分け n = 15 の場合
3 str = ARGV[0]
4 n = str.to_i false 20よりも小さいという条件
5 if n < 10 then を満たすので9行目が true
6 puts “#{n} は 10 false
より小さい.” と評価され10行目の
7 elsif n == 10 then 処理に入る
8 puts “#{n} はちょうど 10 です.”
true
9 elsif n < 20 then
10 puts “#{n} は10 より大きく 20 未満です.”
11 else
12 puts “#{n} は それ以外です.”
13 end
18. if 文を使った制御3
1 # if3.rb
2 # elsif で細かい場合分け 条件式において「等しい」
3 str = ARGV[0] かどうか評価するには
4 n = str.to_i ただの “=“ ではなく ”==“
5 if n < 10 then (ダブルイコール)を使う
6 puts “#{n} は 10 より小さい.”
7 elsif n == 10 then
8 puts “#{n} はちょうど 10 です.”
9 elsif n < 20 then
10 puts “#{n} は10 より大きく 20 未満です.”
11 else
12 puts “#{n} は それ以外です.”
13 end
24. 比較演算子一覧
Rubyでの論理式 数学的な意味 意味
a == b a=b a と b は等しい
a != b a≠b a と b は異なる
a>b a>b a は b より大きい
a >= b a≥b a は b 以上
a<b a<b a は b より小さい
a <= b a≤b a は b 以下
25. 比較演算子一覧
Rubyでの論理式 数学的な意味 意味
a == b a=b a と b は等しい
a != b a≠b a と b は異なる
a>b a>b a は b より大きい
a >= b a≥b a は b 以上
a<b a<b a は b より小さい
a <= b a≤b a は b 以下
プログラム内でa = b と記述すると代入式になるので注意!
26. 比較演算子一覧
Rubyでの論理式 数学的な意味 意味
a == b a=b a と b は等しい
a != b a≠b a と b は異なる
a>b a>b a は b より大きい
a >= b a≥b a は b 以上
a<b a<b a は b より小さい
a <= b a≤b a は b 以下
!記号(エクスクラメーション)は否定演算子とも呼ばれる
27. 比較演算子一覧
Rubyでの論理式 数学的な意味 意味
a == b a=b a と b は等しい
a != b a≠b a と b は異なる
a>b a>b a は b より大きい
a >= b a≥b a は b 以上
a<b a<b a は b より小さい
a <= b a≤b a は b 以下
以上・以下の比較演算子は不等号(>か<)、等号(=)の順
(逆だとエラーになるので注意)