情報を入力して、整形して出力するように変更したい。 情報を入力して出力するには、3 つの実行文を組み合わせた。 文字列の入力を促す部分と、入力された文字列を切り取る部分、 それに文字列を使って表示や計算をする部分から成り立っていた。
STDERR.print("入力を促す文章") | 文字列の入力を促す |
変数 = gets.chomp! | 入力された文字列を切り取る |
入力された文字列は、数字が並んでいても、文字であった。 計算できるように、数値にするためには、to_i (TO Integer, 整数変換) あるいは to_f (TO Fraction, 小数変換) しなければならない。
変数 = gets.to_i |
入力された文字列を切り取って整数に変換 |
変数 = gets..to_f |
入力された文字列を切り取って小数に変換 |
入力した文字列を計算できるように変換しよう。
#!/usr/koeki/bin/ruby
high_name = "流美易高校"高校名を変数 high_name に代入する
high_grad = 2005 高校卒業年を変数 high_grad に代入する
STDERR.print("どこの大学に入学しましたか?")
univ_name = gets.chomp
STDERR.print("西暦何年に入学しましたか?")
univ_year = gets.to_i
print("西暦を年号に変換します\n")
printf("%s卒業\t%d年 (平成%d年)\n", high_name, high_grad, high_grad - 1988)
printf("%s入学\t%d年 (平成%d年)\n", univ_name, univ_year, univ_year - 1988)
大学卒業予定年度も訊ね、表示させるように変更しよう。
切り取った文字数をどのように処理するかによって、値の型変換が変わる。 変数の中身に合わせて printf (PRINT Formatted) の表示も変わる。
to_i |
%d |
整数値 |
to_f |
%f |
小数値 |
to_s |
%s
| 文字列 |
小数は、%f の間の数値を工夫しないと「単なる数値の羅列」になるので、 表示の美しさを考えるようにしよう。
本学の文字数と、出身高校の年号を揃えたい。 文字列と文字列の間隔を計算して空けるにはどうすればよいか、思いだそう。
%整数s | 整数分だけ箱を空けて、右詰めに文字列を表示 |
%整数d | 整数分だけ箱を空けて、右詰めに文字列を表示 |
%整数.整数f | 全体で空ける箱の数.そのうちの小数点以下の箱の数 |
%負の整数s | 整数分だけ箱を空けて、左詰めに文字列を表示 |
%負の整数d | 整数分だけ箱を空けて、左詰めに文字列を表示 |
全角文字は半角 2 文字分であった 。 学校名の文字列は全角で 20 文字分取ることにし、 左詰めに表示させてみよう。
:
printf("%-20s卒業\t%10d年 (平成%2d年)\n", high_name, high_grad, high_grad - 1988)
printf("%-20s入学\t%10d年 (平成%2d年)\n", univ_name, univ_year, univ_year - 1988)
実行結果が変化することを確認しよう。
%./review.rb [˜/Ruby]
とすると
流美易高校 | 卒業 | 2005年 | (平成17年) |
東北公益文科大学 | 入学 | 2008年 | (平成20年) |
を得る。