Ruby 中有三種迴圈,分別是 while 迴圈 (while loop) 、 until 迴圈 (until loop) 、 for 迴圈 (for loop) 。我們先來看看 while 迴圈的寫法
i = 1 # 設定控制變數 while i < 11 # 迴圈工作區 puts i i += 1 # 調整控制變數值 end
這個迴圈所進行的工作很簡單,先在命令列上印出 1 ,然後一路遞增到 10 為止。迴圈有三個地方要注意
- 設定控制變數
- 條件
- 調整控制變數值
while 迴圈的控制變數 (control variable) 必須在 while 之前就先設定好,此例中將控制變數 i 設定為 1 。然後進入 while 的地方,條件 (condition) 就在 while 之後,此例中為當控制變數 i 小於 11 時,迴圈便會重複執行。迴圈工作區,也就是 while 底下用縮排到 end 的程式區塊,這裡,我們只有簡單的印出控制變數 i 的值,迴圈工作區的最後需要有調整控制變數值的地方。
我們先寫成完整的範例,來執行看看結果吧!
puts i = 1 # 設定控制變數 while i < 11 # 迴圈工作區 puts i i += 1 # 調整控制變數值 end puts =begin 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:whiledemo.rb 功能:示範 Ruby 程式 作者:張凱慶 時間:西元 2012 年 12 月 =end
執行結果如下
當我們明確知道重複次數的時候,我們得利用控制變數來記錄 while 迴圈所進行次數,這樣 while 迴圈才會有結束的一天,不然若是三個與控制變數相關的部份,漏了任一部份時,就有可能導致無窮迴圈 (infinite loop) 的發生,例如
i = 1 # 設定控制變數 while i < 11 # 迴圈工作區 puts i end
這樣一來,控制變數 i 永遠小於 11 ,所以迴圈會一直重複執行,此例中會不斷的在命令列印出 1 ,直到強制結束程式的執行為止。
也可用 break 跳出迴圈, next 直接進行下一輪。
until 迴圈與 while 迴圈的差別在條件為假之時,才進行底下程式區塊的工作。
另外一個 for 迴圈用於取得具有多個元素的物件,例如範圍 (range)
for i in 1..10 puts i end
for 與 in 連用, in 後面接多個元素的物件。這個 for 迴圈與上面的 while 迴圈功能完全相同,寫成完整的範例程式,如下
puts for i in 1..10 puts i end puts =begin 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:fordemo.rb 功能:示範 Ruby 程式 作者:張凱慶 時間:西元 2012 年 12 月 =end
執行結果如下
while 迴圈與 for 迴圈各有各自的用途,可是迴圈還可以這樣寫
(1..10).to_a.each do |i| puts i end
用小括弧圍起 1..10 的範圍,然後呼叫 to_a 方法將這個範圍轉換為陣列 (array) ,藉由陣列的 each 方法進行迴圈的工作,也就是用關鍵字 do 後面用 |i| 取得每個元素。
Ruby 允許程式有多種不同的寫法,這方面只要寫程式的人覺得好用、自然即可囉!
接下來我們繼續看到可以將程式模組化的重要的概念,也就是定義自己的方法。
中英文術語對照 | |
---|---|
程式 | program |
迴圈 | loop |
程式區塊 | block |
while 迴圈 | while loop |
until 迴圈 | until loop |
for 迴圈 | for loop |
控制變數 | control variable |
條件 | condition |
無窮迴圈 | infinite loop |
陣列 | array |
您可以繼續參考
基礎篇
相關目錄
回 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_loops.htm
沒有留言:
張貼留言