Vòng Lặp

Vòng lặp dùng để sử dụng để thực thi một câu lệnh hoặc một đoạn mã lệnh lặp đi lặp lại một số lần nhất định.

Vòng Lặp while

Vòng lặp while trong Ruby có cú pháp như sau:

while biểu_thức_điều_kiện [do]
    mã_lệnh
end

Khi biểu thức điều kiện trả về giá trị true thì mã lệnh bên trong mệnh đề while sẽ được thực thi.

counter = 0

while counter < 5 do
   puts "Giá trị của biến counter là: #counter"
   $i +=1 # tăng giá trị của counter 1 đơn vị
end

Bạn cũng có thể thay từ khoá do sau biểu thức điều kiện bởi ký tự ; hoặc /.

counter = 0

while counter < 5  \
   puts "Giá trị của biến counter là: #counter"
   counter +=1 # tăng giá trị của i 1 đơn vị
end

Ngoài ra, vòng lặp while còn được viết với cú pháp khác như sau:

mã_lệnh while biểu_thức_điều_kiện

Ví dụ:

counter = 0

puts "Giá trị của biến counter là #{counter += 1}" while counter > 5

Ví dụ trên sử dụng cú pháp #{counter -= 1} để hiển giá trị của biến counter được in ra màn hình sau đó tăng giá trị này đi 1 đơn vị. Việc này sẽ kết thúc cho tới khi nào biến counter > 5.

Câu lệnh while còn có thể được viết theo cú pháp sau:

begin 
    mã_lệnh 
end while biểu_thức_điều_kiện

Ví dụ:

counter = 0

begin
   puts "Giá trị của biến counter là #{counter += 1}"
end while counter > 5

Sử dụng cách này thì mã lệnh đặt trong câu lệnh begin luôn được thực thi ít nhất 1 lần ngay cả khi biểu thức điều kiện không trả về giá trị true ở vòng lặp đầu tiên. Ví dụ sau thay giá trị của counter là 5 thay vì 0 như lúc trước tuy nhiên mặc dù counter > 5 trả về giá trị false nhưng vòng lặp vẫn được chạy 1 lần:

counter = 5

begin
   puts "Giá trị của biến counter là #{counter += 1}"
end while counter > 5

Vòng lặp for

Vòng lặp for trong Ruby có cú pháp hơi khác so với các ngôn ngữ khác:

for i in 0..5
   puts "Giá trị của biến i là: #{i}"
end

Ở ví dụ trên chúng ta sử dụng vòng for để lặp biến i trong phạm vi 0 tới 5 sử dụng kiểu dữ liệu range 0..5 và in ra giá trị của biến này. Bạn sẽ được tìm hiểu về range trong bài học về kiểu dữ liệu.

Vòng lặp each và Blocks

Mặc dù for là vòng lặp được sử dụng phổ biến ở các ngôn ngữ lập trình khác thì trong Ruby each được sử dụng nhiều hơn:

(1..5).each do |counter|
  puts "Giá trị của counter: #{counter}"
end

Ví dụ trên sử dụng phương thức each có trong kiểu dữ liệu phạm vi 1..5. Phương thức này sẽ lặp qua từng đơn vị trong phạm vi và gán giá trị lặp này cho biến counter sau đó in ra màn hình giá trị này.

Vòng lặp each còn có thể được viết sử dụng cú pháp đơn giản như sau:

(1..5).each {|counter| puts "iteration #{counter}"}

Ví dụ trên sửa dụng block (phần bắt đầu từ dấu ngoặc mở { cho tới dấu ngoặc đóng }) để thay thế cho cặp từ khoá do...end.

Vòng lặp until

Cú pháp

until biểu_thức_điều_kiện [do]
    mã_lệnh
end

Trong đó mã lệnh sẽ được thực thi cho tới khi nào biểu thức điều kiện trả về giá trị là true.

Trong ví dụ sau giá trị của biến counter sẽ được hiển thị ra màn hình cho tới khi nào biểu thức counter > 5 trả về giá trị đúng:

counter = 0

until counter > 5  do
   puts("Giá trị của biến counter là #{counter += 1}" )
end

Bạn cũng có thể viết vòng lặp until theo cú pháp sau:

mã_lệnh until biểu_thức_điều_kiện

Ví dụ:

puts("Giá trị của biến counter là #{counter += 1}" ) until counter > 5

Hoặc sử dụng cú pháp:

begin
    mã_lệnh
end until biểu_thức_điều_kiện

Ví dụ:

counter = 0

begin
   puts("Giá trị counter là: #{counter += 1}" )
end until counter > 5

break và next

Sử dụng từ khoá break được sử dụng để chấm dứt vòng lặp. Ở ví dụ dưới đây vòng lặp sẽ được chấm dứt nếu như biến i có giá trị lớn hơn 2:

for i in 0..5
    if i > 2 then
       break
    end
    puts "Giá trị của biến i là #{i}"
end

Sử dụng next để bỏ qua 1 vòng lặp để tiếp tục chạy vòng lặp tiếp theo. Ở ví dụ dưới đây vòng lặp sẽ được bỏ qua khi i có giá trị là 2:

for i in 0..5
    if i == 2 then
        next
    end
    puts "Giá trị của biến i là #{i}"
end

Thêm Phản Hồi

Câu Hỏi Liên Quan

Hướng Dẫn Liên Quan