inicio mail me! sindicaci;ón

Nhập dữ liệu

Cho đến giờ chúng ta đã gặp một phương thức xuất ra màn hình, đó là puts. Vậy làm thế nào để nhận dữ liệu nhập vào? Để làm việc này thì hai phương thức gets và chomps trở nên hữu ích. Ví dụ p005methods.rb minh họa cho điều này:

#gets and chomp
puts "In which city do you stay?"
STDOUT.flush
city = gets.chomp
puts "The city is " + city

Chạy ví dụ trên, rồi click vào khung cửa sổ output trong SciTE để nhập dữ liệu vào.

STDOUT là một hằng toàn cục (global constant), viết tắt của Standard Output. STDOUT chứa các giá trị xuất ra màn hình. Lệnh flush nhằm giải phóng tất cả các giá trị xuất được lưu trữ trong STDOUT ra màn hình.

Chú thích của người dịch:
Sở dĩ ta phải STDOUT.flush là vì tất cả những giá trị xuất (thông qua những phương thức như puts, print) sẽ đều được lưu vào STDOUT mà không được xuất ra màn hình ngay. Chỉ đến khi chạy xong chương trình thì STDOUT mới được xuất (có thể coi STDOUT là một bộ đệm). Trong ví dụ trên, nếu bạn bỏ dòng STDOUT, thì sẽ không có gì hiện ra màn hình cả cho đến khi bạn nhập xong và ấn Enter. Hãy thử xem :)

gets là phương thức nhận dữ liệu nhập vào từ bàn phím. Do sau khi nhập chuỗi vào, bạn phải ấn Enter để kết thúc việc nhập, kết quả của gets sẽ là chuỗi đó cộng với kí tự đặc biệt \n (kí tự xuống dòng). Phương thức chomp được dùng để loại bỏ kí tự đặc biệt này.

Chú thích của người dịch: Trong Ruby còn có một tính năng nữa, đó là tính năng kết chuỗi phương thức. Ví dụ ta có chuỗi str1. Như thế này gọi là kết chuỗi phương thức:

str1 = ‘abc\n’
str2 = str1.chomp.upcase # ---> ‘ABC’

Phương thức chomp sẽ trả lại giá trị của str1 sau khi đã bỏ kí tự đặc biệt ở cuối. Phương thức upcase sẽ lấy giá trị trả lại này của chomp, để chuyển giá trị đó thành một chuỗi chứa toàn kí tự viết hoa, và trả lại giá trị đó cho str1.

Dữ liệu không chỉ được nhập vào từ bàn phím qua môi trường dòng lệnh. Trong một ứng dụng Rails điển hình, dữ liệu có thể được lấy từ cơ sở dữ liệu, hoặc được nhập vào từ form. Do đó khi phát triển ứng dụng Rails, bạn không cần sử dụng phương thức gets hay hằng STDOUT nhiều, vì Rails sẽ làm nhiệm vụ lấy dữ liệu cho bạn.

Bài tập:
Viết một chương trình Ruby (p006ftoc.rb), yêu cầu nhập vào một giá trị số biểu thị nhiệt độ theo thang nhiệt Fahrenheit. Chương trình sẽ đưa ra nhiệt độ tương ứng theo thang nhiệt Centigrade.

Chú thích: Để định dạng số thực nhằm xuất ra màn hình, bạn có thể dùng phương thức format. Ví dụ: nếu x = 45.5678, thì format(“%.2f”,x) sẽ cho kết quả 45.57. Một cách khác là dùng hàm round: puts (x*100).round/100.0

Leave a Comment