文字列を入力するには

情報を入力して、整形して出力するように変更したい。 情報を入力して出力するには、3 つの実行文を組み合わせた。 文字列の入力を促す部分と、入力された文字列を切り取る部分、 それに文字列を使って表示や計算をする部分から成り立っていた。

# STDERR.print("入力を促す文章")   # 文字列の入力を促す
# 変数 = gets.chomp!               # 入力された文字列を切り取る

入力された文字列は、数字が並んでいても、文字であった。 計算できるように、数値にするためには、to_i (TO Integer, 整数変換) あるいは to_f (TO Fraction, 小数変換) しなければならない。

# 変数 = gets.chomp!.to_i  # 入力された文字列を切り取って整数に変換
# 変数 = gets.chomp!.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.chomp.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)

実行結果が変化することを確認しよう。

irsv{ta05001}% ./review.rb                                          [~/Ruby]
流美易高校          卒業              2005年 (平成17年)
東北公益文科大学    入学              2008年 (平成20年)

となる。

本日の講義 / 基礎プログラミング II / 2007 年度

Madoka Nishimura <madoka@e.koeki-u.ac.jp>