コンピュータリテラシー演習のページへ
Rubyによるはじめてのプログラミング

キーボードからデータを入力しよう

今まで作ったプログラムは、プログラムをテキストエディタで保存したら、 何度実行しても結果は同じでした。これではおもしろくありません。

多くのプログラミング言語では、実行する時にキーボードなどからデータを入力することができます。 もちろんRubyも可能です。

数値を入力しよう

Rubyでキーボードで打った数値を変数に読み込むには以下のようにします。

input1.rb: 数値をキーボードから入力するプログラム
1: print "数値を入力してください:"
2: a = gets.to_i
3: print a+10, "\n"

このプログラムを実行すると、今までとは違って、すぐにプログラムは終了しません。 1行目の"数値を入力してください:" を表示した後に、2行目で利用者がキーボードから 文字列を打ち込むのを待っているからです(getsがこれに相当します)。 利用者が文字列を打ち終わったら、.to_iで打ち込んだ文字列を数値(整数値)に変換します。 そして変数aに代入するのです。3行目では利用者が入力した数値に10を足して表示しています。

ちなみに入力はEnterを押すと完了です。

文字列を入力しよう

文字列をキーボードから入力するには以下のようにします。

input2.rb: 文字列をキーボードから入力するプログラム
1: print "あなたの名前を入力してください:"
2: yourname = gets.chop
3: print yourname, "さんですね。\n"

数値を入力しよう、の説明で「文字列を数値(整数値)に変換する」とありました。 getsで得られるものは文字列なので、それをそのまま使えば良いのです。ただし、文字列の最後に打ったEnterキー(改行)も入ってしまいますので、文字列の一番最後を取り除く .chop を使って改行を取り除きます。

課題

  1. 以下のプログラムを、aに60を代入する代わりにキーボードから点数を入力するようにせよ。
    a = 60
    if (a < 50) then
      print "赤点です!"
    else
      print "合格点です"
    end
  2. 2つの数値を入力し、その2数の和、差、積、商を求めるプログラムを作成せよ。
  3. 2つの数値をキーボードから変数aとbに入力し、aとbの値を交換して表示するプログラムを作成せよ。
    # ここでaとbの値をキーボードから入力する
    # ここでaとbの値を交換する
    print "a = ", a, " b = ", b, "\n"
  4. 上記のaとbを交換するプログラムで、キーボードから変数aとbに文字列を入力するように変えよ。
  5. 情報町のゴミ収集日は、もえるゴミの日が月曜と木曜、もえないゴミの日が土曜 である。
    整数型の変数 day にある日の曜日をキーボードから入力するとする。 なお、1を日曜、2を月曜、3を火曜、4を水曜、5を木曜、6を金曜、7を土曜とする。
    その日がもえるゴミ日かもえないゴミの日かを表示するプログラムを作成せよ。
  6. 上記5のプログラムで、曜日の値として不適切な値(1から7でない)の場合は、データが異常であることを表示するようにせよ。
  7. 上記5のプログラムで、曜日として以下の文字列を入力するプログラムに変えよ。 sunを日曜、monを月曜、tueを火曜、wedを水曜、thrを木曜、friを金曜、satを土曜とする。
  8. 整数型の変数 month, dateに それぞれ月と日をキーボードから入力する。たとえば、 monthが10、dateが22の時は10月22日である。 この場合に、その日が一年のうち夏至より前の日か後の日か、あるいは 夏至の日そのものかを判定して表示するプログラムを作成せよ。 なお夏至の日を6月21日とする。
  9. キーボードから入力した西暦表記の年が「うるう年」かどうかを判定するプログラムを作成せよ。
    なお、うるう年とは、西暦を「4で割った余りが0で100で割った余りが0でない」または 「400で割った余りが0」が成り立つ年のことである。ちなみに西暦2000年はうるう年だった。

東京情報大学情報システム学科
大見 嘉弘(Yoshihiro OHMI)
<ohmi@rsch.tuis.ac.jp>