Vòng lặp trong ruby

Trong một dự án thực tế chắc chắn không thể thiếu đi việc sử dụng vòng lặp (loop). Một vòng lặp là sự thực hiện lặp đi lặp lại của một đoạn mã với một số lần nhất định hoặc cho đến khi một điều kiện nhất đinh được đáp ứng . Ở bài viết này chúng ta sẽ cùng nhau tìm hiểu về các vòng lặp trong ngôn ngữ lập trình Ruby

Vòng lặp đơn giản trong Ruby

Một trong những cách đơn giản nhất để tạo ra một vòng lặp trong Ruby là sử dụng từ khóa loop . loop là một khối lệnh được biểu hiện bằng {...} hoặc do...end. Một loop sẽ thực hiện các mã lệnh trong khối lệnh đó cho đến khi chúng ta sử dụng thao tác ctrl+c hoặc chèn thêm từ khóa break .

Bây giờ chúng ta hãy thử tạo một vòng lặp với từ khóa loop bằng cách tạo tệp tin loop_example.rb:

loop do
    puts "Đây là vòng lặp"
end

Để có thể chạy ví dụ này chúng ta sử dụng terminal trên hệ điều hành ubuntu chạy lệnh ruby loop_example.rb.

Kiểm soát vòng lặp

Nếu bạn chạy với ví dụ ở trên thì vòng lặp của bạn sẽ là vô hạn và khó kiểm soát. Để có thể kiểm soát được vòng lặp trong ruby chúng ta có thể sử dụng từ khóa break. Ngay bây giờ mình sẽ lấy ví dụ về việc sử dụng vòng lặp có kiểm soát:

i = 0
loop do
    i += 1
    puts i
    if i == 5
        break
    end
end

Và đây là kết quả khi chạy ví dụ trên

$ ruby loop_example.rb
1
2
3
4
5

Ở trên bạn có thể thấy là từ khóa break đã không được sử dụng ở 4 lần lặp đầu tiên. Nhưng đến lần lặp thứ 5 khi mà điều kiện if i == 5 trả về true và bên trong if được thực thi câu lệnh break và thực hiện thoát khỏi vòng lặp.

Vòng lặp while

Vòng lặp while đưa ra một tham số đánh giá là một boolean (true hoặc false). Khi biểu thức boolean trả về false thì vòng lặp while sẽ không được thực thi nữa và chương trình sẽ tiếp tục sau vòng lặp. Vòng lặp while có cú pháp như sau:

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

Ví dụ về cách sử dụng vòng lặp while:

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

Vòng lặp for

Trong Ruby, vòng lặp for được sử dụng để lặp đi lặp lại một tập hợp các phần tử. 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. Sau đây là ví dụ về việc sử dụng vòng lặp for:

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 các bài học sau.

Vòng lặp until

Cú pháp của vòng lặp until

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

Trong đó mã lệnh được thực thi sau khi biểu thức điều kiện trả vể 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

Vòng lặp each và Blocks

Mặc dù ở trong các ngôn ngữ khác vòng lặp for được sử dụng rất phổ biến nhưng trong Ruby each lại được sử dụng phổ biến hơn. Sau đây là ví dụ về sử dụng each:

(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.

Trên đây mình đã giới thiệu về các vòng lặp trong Ruby. Rất cảm ơn các bạn đã theo dõi. Chúc các bạn học tập tốt. Bài viết này có tham khảo một số tài liệu tại: https://launchschool.com/books/ruby/read/loops_iterators#controllloop https://www.codehub.vn/