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à những lệnh rẻ nhánh như: lệnh if else, case, unless.
Qua bài học này sẽ giúp bạn có cái nền tổng quát về cách sử dụng những lệnh rẻ nhánh điều khiển chương trình thông qua các điều kiện.
1. Lệnh điều kiện là gì?
Trong cuộc sống nhiều lúc chúng ta cũng hay nói mấy câu mệnh đề nếu..thì rất nhiều. Giả hạn như nếu trời mưa thì đường trơn thì trong lập trình chúng ta cũng có thể thể hiện mệnh đề đó bằng code.
Chúng ta có thể hiểu đơn giản là câu lệnh điều kiện sẽ có chức năng điều khiển luồng chạy của ứng dụng chúng ta. Chả hạn như nếu chúng ta muốn thực hiện một công việc nào đó với một điều kiện cụ thể thì hãy cứ nghĩ đến việc sẽ sử dụng câu lệnh điều kiện.
Bài viết này được đăng tại [free tuts .net]
Trong Ruby chúng ta sẽ tiếp xúc với những cậu lệnh điều kiện sau
- Câu lệnh if
- Câu lệnh if...else
- Câu lệnh if...elseif...else
- Câu lệnh unless
- Câu lệnh case
Mình sẽ giới thiệu lần lượt trong bài viết này.
2. Câu lệnh if trong Ruby
Câu lệnh điều kiện if dùng để điểm tra xem một điều kiện có đúng hay không, nếu đúng thì câu lệnh bên trong if sẽ được thực hiện.
Cú pháp như thế này
if condition // code end
Như cú pháp ở trên chúng ta để ý, bắt đầu câu lệnh if sẽ bắt đầu bằng từ khóa if sau đó là điều kiện, và kết thúc câu lệnh điều kiện bằng từ khóa end.
Chúng ta có thể đặt các condition ở trong () hoặc không cần () đều được. Trong Ruby thì việc yêu cầu các dấu ngoặc đơn này là không cần thiết.
Ví dụ chúng ta muốn kiểm tra xem một số có phải là số chẵn không thì sẽ làm như sau:
a = 8 if a.even? puts "Đây là số chẵn" end
Kết quả
Đây là số chẵn
3. Câu lệnh if...else trong Ruby
Cũng giống như câu lệnh if ở phía trên, nhưng ở phần này chúng ta sẽ tiếp xúc thêm với 1 cái khác là thêm else.
Nếu như câu điều kiện trong if trả về true thì code trong đoạn if sẽ được thực hiện, ngược lại nếu câu điều kiện if trả về false thì đoạn code trong else sẽ được thực hiện.
Cú pháp như thế này
if condition // code if else // code else end
Khác một chỗ là chúng ta không thể viết một điều kiện nào đó trong else. VÍ dụ như thế này
else a > 5
thì chương trình sẽ lỗi ngay.
Tiếp tục với ví dụ ở phần trên
a = 7 if a.even? puts "Đây là số chẵn" else puts "Đây là số lẻ" end
Kết quả
Đây là số lẻ
Trong ví dụ trên do 7 là số lẻ nên câu lệnh điều kiện a.even? trả về false, nên câu lệnh trong if không được gọi tới, ngay lập tức nó sẽ chuyển ngay xuống else để thực hiện code bên trong
4. Câu lệnh if..elsif..else trong Ruby
Kiểu câu lệnh điều kiện này giúp chúng ta có thể kiểm tra nhiều hơn một điều kiện.
Cú pháp
if condition // code if elsif // code elsif 1 elseif // code elsif 2 ... else // code else end
Nếu như câu lệnh if là true thì cậu lệnh bên trong if sẽ được thực hiện và thoát khỏi câu điều kiên. Còn nếu câu lệnh trong if mà false thì nó sẽ tiếp tục kiểm tra các câu điều kiện khác ở trong các elsif khác, nếu câu điều kiện trong elsif nào trả về true thì code trong elsif đó sẽ được thực hiện, và nếu tất cả các câu điều kiện trong if hay trong elsif đều trả về false thì câu lệnh trong else sẽ được thực thi.
Các bạn hãy xem qua 1 ví dụ như thế này
a = gets.chomp.to_i if a <50 puts "a nhỏ hơn 50" elsif a >= 50 && a <= 60 puts "a nằm trong khoảng 50 đến 60" elsif a >= 70 && a <= 80 puts "a nằm trong khoảng 70 đến 80" elsif a >= 80 && a <= 90 puts "a nằm trong khoảng 80 đến 90" elsif a >= 90 && a <= 100 puts "a nằm trong khoảng 90 đến 100" end
5. Câu lệnh unless trong Ruby
Câu điều kiện này khá phổ biến trong Ruby, được dùng rất nhiều vì sự tiện dụng của nó
Cú pháp
unless conditional // code else /// code end
Để dễ hiểu hơn mình có ví dụ như thế này
x = 1 unless x == 0 puts "x khác 0" end
Kết quả
x khác 0
Chúng ta có thể hiểu câu lệnh này đơn giản nhất bằng cách dịch code ra bằng lời như sau
Trừ khi x = 0 thì câu lệnh bên trong sẽ luôn được thực hiện.
6. Câu lệnh case trong Ruby
Câu lệnh case sinh ra có mục đích tương tự như câu lệnh elsif vậy. Thế nhưng nếu xét về mặt code thì câu lệnh when nhìn rõ ràng về clean hơn so với elsif.
Cú pháp như sau
case biến when giá trị // code when giá trị // code ... else // code end
Mình sẽ giải thích một chút.
Trước tiên thì chúng ta có một biến, được khai báo cùng với từ khóa case.
Sau đó lần lượt là đến các từ khóa như when, else, end. Sau từ khóa when là các giá trị mà chúng ta sẽ so sánh với biến được khai báo cùng với từ khóa case. Ruby sẽ lần lượt lấy biến đó so sánh với các giá trị ở trong when, nếu kết quả ở when nào trả về true thì câu lệnh trong when đó sẽ được thực hiện. Nếu không có bất cứ when nào thỏa mãn thì câu lệnh bên trong else sẽ được thực hiện. Chúng ta kết thúc câu lệnh case bằng từ khóa end.
Ví dụ
a = 5 case a when 5 puts "a bằng 5" when 6 puts "a bằng 6" else puts "a khác giá trị 5 và 6" end
Kết quả
a bằng 5
7. Toán tử ba ngôi trong Ruby
Trong Ruby có một kiểu viết câu điều kiện rút gọn lại thay cho câu điều kiện if...else
Cú pháp như sau
condition ? a : b
Nhìn cú pháp như trên mình sẽ giải thích ngắn gọn như sau. Nếu như condition trả về true thì sẽ trả về giá trị là a, còn ngược lại sẽ trả về b.
Giả sử chúng ta có 1 đoạn code như thế này viết bằng if else
a = 5 if a == 5 puts "a bằng 5" else puts "a không bằng 5" end
thì đối với câu lệnh rút gọn chúng ta có
a = 5 puts a == 5 ? "a bằng 5" : "a không bằng 5"
Cả 2 kiểu viết trên đều cho ra cùng 1 kết quả là
a bằng 5
Có thể thấy là câu lệnh điều kiện rút gọn làm ngắn gọn code của chúng ta rất nhiều. Hãy ghi nhớ để áp dụng vì nó sẽ xuất hiện rất nhiều trong quá trình làm việc của bạn.
Ngoài ra đối với những câu lệnh chỉ có if ngắn gọn như thế này
a = 5 if a == 5 puts "a bằng 5" end
thì chúng ta có thể viết tối giản lại thành
puts "a bằng 5" if a == 5
Cứ dịch theo ngữ nghĩa code thì trái qua phải sẽ là, in ra a bằng 5 nếu a bằng 5. Quá ngắn gọn, đây là cách viết rất phổ biến trong Ruby mà các bạn sẽ phải sử dụng nó rất nhiều.
Ngoài ra chúng ta có thể làm điều tương tự với unless.
8. Kết luận
Trong bài viết này thì mình đã giới thiệu với các bạn về các câu lệnh điều kiện trong Ruby, đây là phần rất quan trong của một ngôn ngữ lập trình, vì vậy hãy đảm bảo rằng bạn nắm được chắc những kiến thức trong bài viết này.