ruby if 単純な条件分岐

バイオインフォ道場、くまぞうです。

プログラミングのフロー制御で最も単純なのが「if文」です。条件に「一致したかどうか」という判断に基づいて、実行する処理を変更するときに使います。

if文による条件判断

if文の書き方

if文では複数の条件を判断することができます。上から順に判定されます。追加の条件である「elsif」「else」は必要なときに記述します。また、条件の中に条件を書く「入れ子構造」を書くことができます。尚、「if修飾子」という使い方で、「条件が真の場合に左辺の式を実行」という書き方ができます。この使い方は、ちょっとした条件を簡潔に表現できて便利です。一方で、条件「偽」に着目した「unless」という書き方もあります。

if – elsif – else – end

if 条件
...
elsif 条件2
...
else
...
end

if修飾子

式(条件が真の場合に実行) if 条件

if修飾子と否定

式(条件が否定されたので、偽の場合に実行することになる) if !条件

if文の真偽

Rubyの真偽における「偽」は、「false」または「nil」です。複数の条件をまとめるには、論理演算子「&&」「||」を使います。否定は「!」です。

プログラム

test_if.rb
#! /usr/bin/ruby

aaa = ARGV[0].to_i

abort "exit" if aaa == 0

if aaa==1
  puts "aaa==1 aaa=#{aaa}"
end

if aaa>1
  if aaa>2 && aaa<3
    puts "aaa>2 aaa=#{aaa}"
  elsif aaa>3 && aaa<=5
    puts "aaa>3 aaa=#{aaa}"
  else
    puts "aaa>5 aaa=#{aaa}"
  end
end

スクリプト実行

$ ruby test_if.rb 0
exit
$ ruby test_if.rb 1
aaa==1 aaa=1
$ ruby test_if.rb 4
aaa>3 aaa=4

プログラムについて

「test_if.rb」では、ifの条件を数種類ためしてみました。「変数aaa」が、0のときif修飾子を使ってabortで即座に終了しました。1のときシンプルなifの書き方を使い、1より大きいとき条件を入れ子構造にして更に条件を細かく分岐させました。入れ子内部では、if – elsif – else を使いました。

今回はわざと複数の条件を入れ子にしました。プログラムが複雑になりすぎる場合は、他の制御構造を利用したり・例えば1以下の場合には先にプログラムを完結させるような仕組みで、プログラムがシンプルになるように工夫した方が良いと思います。


スポンサーリンク


コメントを残す

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