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.
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.
Bài viết này được đăng tại [free tuts .net]
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 break và next.
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