Ruby 入門指南 - 選擇

程式中的選擇 (selection) 就是依條件 (condition) 使程式有不同的執行方向,若條件為真,也就是 true ,程式就會跳過 false 的部份執行 true 的部份,反之亦然




選擇結構有單一選擇跟多重選擇,兩者都可使用 if 陳述 (if statement) , if 為關鍵字 (keyword) 之一,若是多重選擇 if 須與 elsifelse 連用。單一選擇,也就是單獨使用 if 陳述如下
if 3 > 5 
    puts "喔,3大於5發生了!"
end


以上條件為 3 大於 5 ,如果 3 大於 5 為真,程式就會執行條件後縮排的程式區塊 (block) ,其範圍到 end 為止, end 亦為關鍵字之一,表示程式區塊的結束。如果 3 大於 5 為假,程式自然跳過條件後的程式區塊,去找區塊後的第一個陳述 (statement) 執行。


ifelse 連用,條件為真,執行 if 後的程式區塊,條件為假,就執行 else 後的程式區塊
if 3 > 5 
    puts "喔,3大於5發生了!"
else 
    puts "還好,3沒有大於5!"
end


elsif 表示其他的條件,形成 if-elsif-else 的多重選擇,最後的 else 表示以上皆非
if 3 > 5 
    puts "喔,3大於5發生了!"
elsif 4 > 5
    puts "喔,4大於5發生了!"
elsif 5 > 5
    puts "喔,5大於5發生了!"
elsif 6 > 5
    puts "6當然大於5哩!"
else
    puts "以上沒有符合的條件 :("
end


我們將以上寫成完整的範例程式,如下
# -*- encoding : utf-8 -*-

puts
if 3 > 5 
    puts "喔,3大於5發生了!"
elsif 4 > 5
    puts "喔,4大於5發生了!"
elsif 5 > 5
    puts "喔,5大於5發生了!"
elsif 6 > 5
    puts "6當然大於5哩!"
else
    puts "以上沒有符合的條件 :("
end
puts

=begin
《程式語言教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:selection.rb
功能:示範 Ruby 程式 
作者:張凱慶
時間:西元 2012 年 12 月
=end


執行結果如下



還有個 unless-else 陳述,條件為假執行 unless 的部份,若為真則執行 else 的部份。


if-elsf-else 多重選擇的缺點是需要很多個條件,程式需要做很多個條件判斷,因此另外有個 case 陳述 (case statement) ,條件為一個常數 (constant) 值,然後程式自動尋找符合的 when 。同樣的 casewhen 也都是關鍵字
case 6
    when 3
         puts "選擇是3..."
        
    when 4
         puts "選擇是4..."
    
    when 5
         puts "選擇是3..."
         
    when 6
         puts "選擇是6..."
    
    else
         puts "以上沒有符合的條件 :("
end


這裡, case 後面的小括弧必須是常數值,此例中直接使用字面常數 (literal) ,也可以使用有常數值的變數 (variable) 。 when 後空一格,然後也是接常數值,通常就是直接填入符合情況的字面常數。


case-when 最下面有個 elseelse 就是預設情況,如果以上皆非就會執行 else 的工作,這跟 if-elsif-else 最後的 else 的用法相同。


我們將此例寫成完整的範例程式,如下
# -*- encoding : utf-8 -*-

puts
case 6
    when 3
         puts "選擇是3..."
        
    when 4
         puts "選擇是4..."
    
    when 5
         puts "選擇是3..."
         
    when 6
         puts "選擇是6..."
    
    else
         puts "以上沒有符合的條件 :("
end
puts

=begin
《程式語言教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:casewhen.rb
功能:示範 Ruby 程式 
作者:張凱慶
時間:西元 2012 年 12 月
=end


執行結果如下



複合陳述 (compound statement) 除了選擇結構 (selection structure) 還有重複結構 (repetition structure) ,重複結構也被稱為迴圈 (loop) ,接下來我們就來看看如何使用迴圈吧!


中英文術語對照
選擇selection
條件condition
if 陳述if statement
關鍵字keyword
程式區塊block
陳述statement
case 陳述case statement
常數constant
字面常數literal
變數variable
複合陳述compound statement
選擇結構selection structure
重複結構repetition structure
迴圈loop


您可以繼續參考
基礎篇


相關目錄
回 Ruby 入門指南
回 Ruby 教材
回首頁


參考資料
http://www.rubyist.net/~slagell/ruby/control.html
http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html
http://www.tutorialspoint.com/ruby/ruby_if_else.htm

沒有留言: