基礎プログラミング II 第 1 回 (前期の復習) 「文字列を入力するには」 講義ノート目次

情報を入力して、整形して出力するように変更したい。 情報を入力して出力するには、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_print.rb
[˜/Ruby]

とすると

流美易高校卒業2005年(平成17年)
東北公益文科大学入学2008年(平成20年)

を得る。