BẮT ĐẦU
KIỂU DỮ LIỆU
TOÁN TỬ
NÂNG CAO
INTERVIEW
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Vòng lặp trong Ruby: Vòng lặp for / while / until / loop

Trong bài này chúng ta sẽ tìm hiểu các vòng lặp trong Ruby như vòng lặp for, vòng lặp while, vòng lặp until, vòng lặp loop, và các lệnh điều khiển vòng lặp như lệnh break và lênh next.

Khi học một ngôn ngữ lập trình thì không thể không tìm hiểu tới một thứ đó chính là vòng lặp. Trong bài này mình sẽ giới thiệu với các bạn cách sử dụng vòng lặp trong ngôn ngữ lập trình Ruby.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Vòng lặp là gì?

Vòng lặp đơn giản là nó sẽ lặp lại một đoạn code của bạn theo số lần mà bạn đề ra. Việc này chúng ta sẽ cần rất nhiều trong công việc coding của mình.

Ví dụ bạn cần in ra các số từ 1 đến 1000 thì bạn không thể code 1000 lần được, thay vào đó sử dụng vòng lặp để lặp từ 1 đến 1000 thì sẽ giúp tiết kiệm thời gian cũng như sự linh hoạt trong lập trình.

Hoặc bạn cần viết chương trình yêu cầu nhập vào một dãy số cho tới khi người dùng nhập kí tự X để thoát, thì lúc này nên sử dụng vòng lặp.

Trong Ruby có một số kiểu vòng lặp được sử dụng nhiều nhất như:

  • Vòng lặp for
  • Vòng lặp while
  • Vòng lặp until
  • Vòng lặp loop

Nào, bây giờ chúng ta lần lượt tìm hiểu cách sử dụng những vòng lặp này nhé.

2. Vòng lặp for trong Ruby

Trước tiên chúng ta sẽ đi tìm hiểu vòng lặp for.

Cú pháp

for variable in expression do
  // code
end

trong đó :

  • for: để xác định đây là một vòng lặp for
  • variable: Đây là một biến, được tham chiếu tới các lần lặp
  • in: Từ khóa này được sử dụng được đi kèm với vòng lặp for
  • expression: expression ở đây chúng ta có thể sử dụng Range hoặc là Array để truyền vào
  • do...end: Hai keyword này đánh dấu sự bắt đầu và kết thúc của vòng lặp

Mình có một ví dụ dễ hiểu như này

for i in 1..10  do
  puts "Hello"
end

Kết quả

Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello

Như bạn thấy thì ở ví dụ trên thì chúng ta đã lặp vòng lặp 10 lần và in ra 10 lần từ Hello.

Nó tương ứng với đoạn code này trong C++

(for int i=0; i<10; i++)
{
  print("Hello");
}

Hoặc là chúng ta cũng có thể lặp một Array

for i in ['Phu', 'Quang', 'Son', 'Long']  do
  puts i
end

Kết quả

Phu
Quang
Son
Long

3. Vòng lặp while trong Ruby

Tiếp đến là vòng lặp while. Khi biểu thức được truyền vào trong while trả về giá trị là true thì đoạn code bên trong while sẽ được thực hiện

Cú pháp

while biểu_thức_điều_kiện do
   // code
end

Mình có ví dụ in ra từ Hello giống như vòng lặp for ở trên, nhưng ở đây mình sẽ sử dụng vòng lặp wihle

i = 0
while i < 10 do
   puts "Hello"
   i +=1 # tăng giá trị của i lên 1 đơn vị
end

Kết quả cũng sẽ ra như với vòng lặp for ở trên

Nhưng có lưu ý là nếu chúng ta không tăng giá trị biến đếm lên qua mỗi lần lặp thì vòng lặp này sẽ bị vô tận vì lúc đó i luôn bằng 0, và biểu thức điều kiện ở while sẽ luôn đúng. Vậy nên nếu với những đoạn code cần sử dụng vòng lặp theo số lần kiểu này mình nghĩ các bạn nên dùng vòng lặp for hơn cho đỡ quên việc tăng giá trị biến đếm.

4. Vòng lặp until trong Ruby

Vòng lặp until thiì ngược lại với vòng lặp while. Nếu như với vòng lặp while điều kiện trả về true đoạn code bên trong sẽ được thực hiện thì đói với vòng lặp until, khi giá trị điều kiện trả về false thì đoạn code bên trong sẽ được thực hiện

Cú pháp

until Điều_kiện_dừng do
  #code
end

Mình có một ví dụ in ra Hello nếu giá trị của số đã cho không lớn hơn 10

a = 0

until a > 10
  puts "Hello"
  a +=1
end

Kết quả

Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello

Như mình đã nói thì với đoạn code ví dụ trên đoạn code bên trong sẽ được thực hiện nếu a > 10 là sai thì sẽ thực hiện đoạn code bên trong.

5. Lệnh kiểm soát vòng lặp trong Ruby

Khi làm việc với vòng lặp thì đôi khi chúng ta cần có những thứ để có thể kiểm soát vòng lặp được tốt hơn bằng cách sử dụng breaknext.

break

Đối với break thì nếu khi nào chúng ta cần chấm dứt vòng lặp thì hãy sử dụng nó, trong ta chỉ cần cho vào bên trong đoạn code của vòng lặp là được

Cú pháp

break

Mình có ví dụ

for i in 1..10
  if i == 5
    break
  end
  puts i
end

Kết quả

1
2
3
4

Theo như ví dụ trên thì khi giá trị của i bằng 5 thì chúng ta sẽ chấm dứt vòng lặp.

đoạn code trên vẫn hơi dài, chúng ta có thể viết ngắn gọn hơn như này

for i in 1..10
  break if i == 5
  puts i
end

next

Cú pháp

next

Chúng ta sử dụng next khi cần bỏ qua một vòng lặp để chạy các vòng lặp tiếp theo. Giờ mình sẽ viết code 1 đoạn nếu như 1 giá trị bằng 5 sẽ bỏ qua vòng lặp đó rồi chạy tiếp các vòng lặp khác.

Tương tự với break chúng ta cũng có thể viết ngắn gọn code kiểu

next if bieu_thuc_dieu_kien

Thì ta có đoạn code như sau

for i in 1..10
  next if i == 5
  puts i
end

Kết quả

1
2
3
4
6
7
8
9
10

Từ khóa next này giống với continue trong ngôn ngữ C/C++ nếu như ai đã tiếp xúc qua :D.

6. Vòng lặp loop trong Ruby

Ngoài các vòng lặp trên thì mình sẽ giới thiệu thêm cho các bạn một kiểu vòng lặp khá đơn giản mà không cầu kì trong Ruby

Cú pháp

loop do
  # code 
end

Nếu như các bạn thử viết một chương trình sử dụng keyword này sẽ thấy chương trình chạy liên tục, để dừng được vòng lặp này chúng ta cần sử dụng đến từ khóa break mình vừa giới thiệu ở trên.

Kết hợp lại chúng ta có

loop do

 # code 

break if dieu_kien

end

Ví dụ :

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

Kết quả

1
2
3
4
5

7. Kết luận

Trong bài viết này mình đã giới thiệu cho các bạn về vòng lặp trong Ruby, đây là những kiến thức hết sức cần đối với một ngôn ngữ lập trình nên các bạn hãy nắm thật chắc để thực hành trơn tru hơn nhé. Peace

Cùng chuyên mục:

Block trong Ruby

Block trong Ruby

Block là một khối lệnh được đặt trong ...

Iterator trong Ruby

Iterator trong Ruby

Ở bài trước mình có nói với các bạn về việc sử dụng các vòng…

Câu lệnh điều kiện trong Ruby

Câu lệnh điều kiện trong Ruby

Trong bài này chúng ta sẽ học các lệnh điều kiện trong Ruby, đây là…

Các toán tử trong Ruby

Các toán tử trong Ruby

Nói đến toán tử thì dù bạn học ngôn ngữ nào đi nữa thì việc…

Cách sử dụng Ranges trong Ruby

Cách sử dụng Ranges trong Ruby

Ví dụ bạn cần tạo ra một dãy từ 1 đến 100 thì có thể…

Cách sử dụng Array trong Ruby

Cách sử dụng Array trong Ruby

Đây cũng là một trong những kiểu dữ liệu phổ biến nhất, vì vậy bạn…

Kiểu dữ liệu Symbol trong Ruby

Kiểu dữ liệu Symbol trong Ruby

Symbol giống như một String thế nhưng Symbol là một chuỗi bất biến nghĩa là…

Kiểu dữ liệu Text trong Ruby (còn gọi là chuỗi / string)

Kiểu dữ liệu Text trong Ruby (còn gọi là chuỗi / string)

Kiểu dữ liệu Boolean trong Ruby: True, False và Nil

Kiểu dữ liệu Boolean trong Ruby: True, False và Nil

Boolean là kiểu dữ liệu rất quan trọng, nó được dùng rất nhiều trong những…

Kiểu dữ liệu Hashes trong Ruby: Hiểu từ đơn giản đến phức tạp

Kiểu dữ liệu Hashes trong Ruby: Hiểu từ đơn giản đến phức tạp

Nếu bạn đã từng làm việc với một vài ngôn ngữ khác trước khi mà…

Hiểu về Method Missing trong Ruby

Hiểu về Method Missing trong Ruby

Chắc hẳn với các lập trình viên chúng ta ai cũng có thể đôi lần…

Kiểu dữ liệu Number trong Ruby (Kiểu số Integer, Float, ...)

Kiểu dữ liệu Number trong Ruby (Kiểu số Integer, Float, ...)

Trước tiên, chúng ta cùng nhìn qua một bức ảnh tổng quát phân cấp các…

Ruby là gì? Ai đã sáng tạo ra ngôn ngữ viêm kim cương này?

Ruby là gì? Ai đã sáng tạo ra ngôn ngữ viêm kim cương này?

Từ những năm 2008, thời mà mình còn học đại học thì Ruby là ngôn…

Các loại biến và cách sử dụng Module trong Ruby

Các loại biến và cách sử dụng Module trong Ruby

Bất kì một ngôn ngữ lập trình nào đều có khái niệm biến và ruby…

Cách tạo Method - Class và Object trong Ruby

Cách tạo Method - Class và Object trong Ruby

Trong bài này mình sẽ hướng dẫn các bạn cách tạo hàm, gọi hàm. Cách…

Cú pháp trong Ruby - Chạy Hello World

Cú pháp trong Ruby - Chạy Hello World

Tổng quan về cú pháp trong ruby. Hướng dẫn tạo file và chạy hello world…

Hướng dẫn cài đặt Ruby trên Window, Linux và MacOS

Hướng dẫn cài đặt Ruby trên Window, Linux và MacOS

Hướng dẫn chi tiết cách thiết lập môi trường lập trình Ruby trên hệ điều…

Top