周辺知識

短いRubyコードの実行

Rubyのメソッドの働きをちょっと確認したい場合は以下の方法を覚えておく と良いだろう。

-e オプション

rubyコマンドに-eオプションをつけると、 次のコマンドライン引数をRubyの文と解釈して直接解釈実行してくれる。 Rubyの文全体が1個の引数になるように、シングルクォート ('')で括る。

% ruby -e 'printf "Hello!\n"'
Hello
irbコマンド

Rubyプログラムを1行ずつ対話実行する。コマンドラインから irb と実行してみよう。

% irb
irb(main):001:0>

ここに、Rubyの文を入れ、Returnを押すと即座に結果が得られる。

irb(main):001:0> x = 5
5
irb(main):002:0> y = x**3
125

乱数

ゲーム性のあるプログラムを作るためには、プログラムを起動する度に違 う値を返すメソッドが不可欠である。

ただし、プログラムが発生する乱数の種を初期化するためにsrand メソッドを呼ぶ必要がある。以下のプログラム断片は、じゃんけんのグーチョキ パーをランダムに出すものである。

janken = ["グー", "チョキ", "パー"]
srand()				# 乱数の種を初期化
hand = rand(3)			# 3未満の整数(0, 1, 2)を発生
printf "私の手は %s です.\n", janken[hand]

文字列操作

文字列の一部を取り出したり、切り取ったりすることができる。 以下の例ではS を文字列とする。

その他の文字列操作メソッドについては、 Rubyマニュアル - Stringクラスのマニュアルページを参照すること。

時刻

Rubyプログラムが動いているときの現在時刻はTimeを 利用して取得する。

たとえば10秒以内になにかの処理をやらせる場合は以下のようにする。

start = Time.now.to_i
while true
  なにかの処理
  if Time.now.to_i - start > 10
    puts "時間切れです"
    break
  end
end

繰り返し

要素全てに対する繰り返し

配列に複数の値が入っているときの繰り返し処理の書き方にはいくつかある。 以下の処理はどれも同じ働きをする。

sum = 0
x = [10, 20, 15, 44, 8, 3]
for i in x do
 sum += i
end
sum = 0
x = [10, 20, 15, 44, 8, 3]
x.each do |i|
 sum += i
end
sum = 0
i = 0
x = [10, 20, 15, 44, 8, 3]
while i < x.length
 sum += x[i]
 i += 1
end

指定した回数の繰り返し

指定した回数繰り返すには以下のどれかを用いると良い。以下の例は どれも10回繰り返す。

i = 0
while i < 10
  繰り返し
  i += 1
end
for i in 1..10 do
  繰り返し
end
1.upto(10) do |i|
  繰り返し
end
(1..10).each do |i|
  繰り返し
end

ファイルの入出力処理

ファイルの内容を1行ずつ読み込みながら処理を続ける場合の書き方は いくつかある。以下の例は、どれも "datafile" というファイル の中味を1行ずつ読み、それを line という変数に 代入しつつ処理を繰り返すものである。

open("datafile", "r") do |f|
  while line=f.gets
    繰り返し
  end
end
f = open("datafile", "r")
while line=f.gets
    繰り返し
end
f.close
IO.foreach("datafile") do |line|
  繰り返し
end

本日の目次