Crystal tut 2: Cấu trúc điều kiện if

  May 26, 2018      2m
   

Series bài hướng dẫn cơ bản về học ngôn ngữ lập trình Crystal. Cấu trúc điều kiện trong Crystal - if

Crystal tut 2: Cấu trúc điều kiện if

Crystal cấu trúc điều kiện if

Cú pháp if trong Crystal rất đơn giản:

if some_condition
  do_something
elsif some_other_condition
  do_something_else
else
  do_that
end

Sau đây là đoạn chương trình cho phép người dùng nhập vào 1 số nguyên, sau đó kiểm tra và in ra giá trị nhập vào có nằm trong đoạn [-5, 10] hay không.

if_simple.cr

print "Enter an interger: "
num = gets.not_nil!

# convert string to integer
num = num.to_i(strict: false)     # num1 = num1.to_i <-- you should try this :)

if num > 10
  p num.to_s + " > 10"
elsif num < -5
  p num.to_s + " < -5"
else
  p "-5 <= " + num.to_s + " <= 10"
end

Kết quả thực thi:

$ crystal run if_simple.cr
Enter an interger: 2
"-5 <= 2 <= 10"

Crystal điều kiện if trong phép gán

Crystal hỗ trợ phép "? :" giống như trong C/C++ (ternary).

Sau đây là chương trình có chức năng kiểm tra đoạn giá trị của số nguyên do người dùng nhập vào và sau đó tính căn bậc 2 nếu số nguyên đó lớn hơn 0.

if_ternary.cr

print "Enter an interger: "
num = gets.not_nil!

# convert string to integer
num = num.to_i(strict: false)     # num1 = num1.to_i <-- you should try this :)

result = if num > 10
  num.to_s + " > 10"
elsif num < -5
  num.to_s + " < -5"
else
  "-5 <= " + num.to_s + " <= 10"
end

p result

# --

if (sq = Math.sqrt(num) if num > 0)
  p "sqrt(" + num.to_s + ") = " + sq.to_s
end

# ternary
if (sq_ternary = num > 0 ? Math.sqrt(num) : nil)
  p "[Ternary] sqrt(" + num.to_s + ") = " + sq_ternary.to_s
end
  • Biến result được gán giá trị tùy điều kiện biến num do người dùng nhập vào.
  • Câu lệnh sq = Math.sqrt(num) if num > 0 không có else, nghĩa là sq sẽ được gán là giá trị nil nếu điều kiện không thỏa, tức num <= 0.
  • Ternary operator được áp dụng: sq_ternary = num > 0 ? Math.sqrt(num) : nil
  • Câu lệnh if tên_biến nghĩa là biến đó phải khác nilfalse thì mới là thỏa điều kiện.

Crystal điều kiện unless

  • Phủ định trong Crystal ta dùng ký tự ! trước tên biến.
  • Ngoài ra câu lệnh unless tương đương if !tên_biến.
  • 3 điều kiện rẽ nhánh trong ví dụ sau là tương đương nhau.

Ví dụ:

x = true

if x
  p "x is true"
else
  p "x is false"
end

if !x
  p "x is false"
else
  p "x is true"
end

unless x
  p "x is false"
else
  p "x is true"
end

Tất cả script Crystal của các tutorial mình sẽ tổng hợp trên Github tại đường dẫn sau:

  https://github.com/minhng92/crystal-examples

Crystal Tutorials: