Ruby  教育利用への模索のページ         Ruby home page


■ Rubyの紹介

 Rubyとは、 簡単に言えば、純粋なオブジェクト指向のスクリプト言語の名前です。つまり、C++みたいにコンパイラではなくて、いわゆるインタープリタなわけです。 Rubyは他の多くの言語と違い、日本人がつくりました。UNIX上で開発されましたが、今では、MS Windows等のプラットフォーム用もあります。詳しくはご本家のRuby のWeb Pageをご覧下さい。
 私は数学の教師ですが、授業でたとえば平方根や円周率の近似値を扱う時に、画面に多くの桁を表示させたいとよく思って ました。そういう場合は、これまではU−Basic等を利用していました。U−Basicはもちろん非常に優れた言語ではありますが、Rubyは言うまで もなく構造化言語であるという点、また、上記のようにオブジェクト指向であるという点、単純で非常に馴染みやすい文法等、今後の事を考えるといろんな面で 利用価値が高いと思います。また、なによりもうれしいのは、U−Basicもそうではありますが、フリーソフトウェアであるという点です。インタープリ ターでもあるし、プログラミング初心者にとっても、最適の入門用言語にもなり得ます。
 また、Window(XWindowやMS-Windows)を使う場合は、幸いTkというツール(Tcl/tkの Tk)がありますので、これを利用できます(Ruby/Tk)。最近はRuby/Tkを扱うページも随分増えましたので、助かります。このページでもいく らかサンプルを紹介したいと思います。(他のページにあるものを少し変えただけですが)
 

■ 円周率の計算

以下は、Rubyのパッケージのsampleに入っていた円周率の計算です。
------------------------------------------------------------
k, a, b, a1, b1 = 2, 4, 1, 12, 4

while TRUE
  # Next approximation
  p, q, k = k*k, 2*k+1, k+1
  a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
  # Print common digits
  d = a / b
  d1 = a1 / b1
  while d == d1
    print d
    $stdout.flush
    a, a1 = 10*(a%b), 10*(a1%b1)
    d, d1 = a/b, a1/b1
  end
end
------------------------------------------------------------
たった、これだけのプログラムで、
3141592653589793238462643383279502884197169399375105820974944
5923078164062862089986280348253421170679821480865132823066470
9384460955058223172535940812848111745028410270193852110555964
4622948954930381964428810975665933446128475648233786783165271
2019091456485669234603486104543266482133936072602491412737245
8700660631558817488152092096282925409171536436789259036001133
0530548820466521384146951941511609433057270365759591953092186
1173819326117931051185480744623799627495673518857527248912279
3818301194912983367336244065664308602139494639522473719070217
・・・・・・・・

このように、永遠に計算を続けてくれます。

(参考)---------------------------------------------------------

単に

print 4*Math..atan2(1,1), "\n"

とすれば、

3.141592654

と表示してくれます。 (※ "\n" は改行の意味)

ちなみに atan2(x,y) というのは Ruby で arctan(x/y) を求める事です。

π/4=arctan(1)=1−1/3+1/5ー1/7・・・

なんてなるんですねえ。これは、ちょっと微積の知識と二項定理の知識があれば
なんとか分かると思います。これを使ってるわけです。

また、Ruby に組み込まれている PI という定数を使って、

include Math
print PI,"\n"

でも同じ結果になります。これが一番簡単ですね。(^^)
ところで、円周率の詳しい研究は東大の金田研 究室とか、九 州工業大学とかπのページを 見て下さい。 (お詫び..勝手にリンクしてます) 
--------------------------------------------------------------------
 

■ Ruby/Tk の サンプル         ※UNIX系 の場合は、最初に #! usr/local/bin/ruby  等(Rubyのある場所の指定)の行を追加して下さい。

いきなり、Ruby/Tk というのも変なのですが、Line、円、サイクロイド等のデモをご覧下さい。
(Tkを用いるので、環境変数を設定する必要があります。詳しくはここ(Rubyの指 環)を見て下さい)