人気ブログランキング | 話題のタグを見る

edb.rb で簡単プログラム開発 その2

irb は便利だが、複数行のプログラムを開発するようには作られていない。edb を使うと、edb から出ずに複数行にわたる Ruby プログラムを開発することができる。

edb ではプログラムを開発する前にデータを取り込むことができる。まず、サンプルの seiseki.txt を読み込んでみる。

Ruby$ ruby edb.rb
easydb> table = Edb.new('seiseki.txt')
easydb> table.dump
name sugaku kokugo eigo
A 90.0 65.0 55.0
B 46.0 50.0 50.0
C 63.0 63.0 58.0
D 50.0 40.0 48.0
E 55.0 32.0 40.0

このデータの成績の部分を処理したいので、成績の部分だけを取り出して二次元配列を作る。

easydb> array = table.to_array('sugaku kokugo eigo')
easydb> p array[0]
[90.0, 65.0, 55.0]

各列の総和を計算するプログラム sum を作りたいので、変数 sum にプログラムを入れるメソッド edit を呼び出す。

easydb> sum = edit

すると、vi を呼び出すので、vi で次のプログラムを作成する。

array.each do |x|
  p x
end

vi を終了すると、edb のコンソールに戻ってくるので、sum にプログラムが入っているか確認する。

easydb> puts sum
array.each do |x|
  p x
end

sum を実行してみる。

easydb> eval sum
[90.0, 65.0, 55.0]
[46.0, 50.0, 50.0]
[63.0, 63.0, 58.0]
[50.0, 40.0, 48.0]
[55.0, 32.0, 40.0]

これで、上のループが動くのが確認できたので、sum を再度編集して合計を出すように変更する.

easydb> sum = edit(sum)
easydb> puts sum
total = [0,0,0]
array.each do |x|
  for i in 0..2
  total[i] += x[i]
  end
end
p total

実行してみる。

easydb> eval sum
[304.0, 250.0, 251.0]

sum をテキストファイルに保存する。

easydb> File.open('sum.rb','w'){|f| f.write(sum)}

ファイルが作成できているかどうか確認する。

easydb> system 'cat sum.rb'
total = [0,0,0]
array.each do |x|
  for i in 0..2
    total[i] += x[i]
  end
end
p total

外部プログラムを変数に読み込むには IO.read メソッドを使う

easydb> sum2 = IO.read('sum.rb')
easydb> puts sum2
total = [0,0,0]
array.each do |x|
  for i in 0..2
    total[i] += x[i]
  end
end
p total

edb を終了するには exit と入力する。

easydb> exit

この様に、データをまず取り込んでおいて、それを処理するプログラムを動作を確認しながら開発していけるので、プログラム開発の負担感がずいぶん減る。
by tnomura9 | 2008-09-20 07:05 | Ruby | Comments(0)
<< edit.rb で snipp... edb.rb で簡単プログラム... >>