06/04/2021, 14:47

Vòng lặp trong Ruby: Vòng lặp for / while / until / l - Ruby căn bản

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

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.

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

Tạ Quốc Bảo

23 chủ đề

7270 bài viết

0