生物生産科学科 担当 國分 尚(5月28日、6月4日、6月11日)
上にも書いたように大事なのはアルゴリズムであって、プログラミング言語はそのときの条件にあった適当なものを選べば良い。本講義ではRubyという言語を選んだ。その理由は、studentsドメインのホストで実行できる、開発者が日本人であるため本家本元のテキストが日本語で書かれている、無料である、スクリプト言語なのでプログラムを実行するまでの道のりが簡単である、オブジェクト指向と言う比較的新しい考え方を実践している、はやりのスクリプト言語であるPerlに似ている、多くのパソコンで動く(Windows, Mac OS, Linux他)などがあるが、最大の理由は國分の趣味である。
Rubyはオブジェクト指向言語であるが、オブジェクト指向プログラミングだけを習うと他の言語への応用が難しいので、ここでは残念ながらRubyを手続き型の言語のように使った例を示す。このように応用が利くのがRubyの特徴とも言える。オブジェクト指向に興味がある人はがんばって自分で勉強して欲しい。
それでは、まず例に示したプログラムを使って解説する。
プログラミングを習う時は必ずこれをやることに決められているので...
プログラム0.画面に"Hello World!"と表示する
keyaki% ruby -e 'print "Hello World!\n" '
これだけである。これはRubyインタープリタに-eのあとの' '(シングルクォーテーション)で囲まれた文字列をプログラムとして実行させている。eはexecuteまたはevaluateの頭文字だろう。このプログラムの部分だけを改めて書いてみると、
print "Hello World!\n"
このプログラムはHello World!と言う文字列を画面に表示し、改行して終了する。
練習1.最後の\nを書かずに実行したり、\n\nとするとどうなるか試してみる。また、Hello Worldの代わりに「こんにちは」とするとどうなるか。なお、\は環境によって¥(円記号)と\(バックスラッシュ)のどちらかが表示され、キーボードの刻印も機種によって¥と\の2通りある。
Rubyプログラムの1例として、台形の面積を求めるプログラムを以下に示した。前のプログラムよりは実用性がある。例えば、将来子供が小学生になったとき、計算ドリルの答え合わせをしてあげられる。
プログラム1.daikei.rb
print "jouhen =" #画面にjouhen =と表示する jouhen = STDIN.gets #変数jouhenにキーボードから数値を入力する print "teihen =" #画面にteihen =と表示する teihen = STDIN.gets #変数teihenに数値を入力する print "takasa =" #画面にtakasa =と表示する takasa = STDIN.gets #変数takasaに数値を入力する a = jouhen.to_f #jouhenに入力された文字を数値に変換して変数aに代入 b = teihen.to_f #teihenに入力された文字を数値に変換する h = takasa.to_f #takasaに入力された文字を数値に変換する area = (a+b)*h/2 #面積を計算し変数areaに代入する print "menseki = ", area, "\n" #結果を画面に表示する
上辺の長さa、底辺b、および高さhの値を入力し、面積areaを計算し、その結果をディスプレイ画面上に出力している。用いた公式はもちろん
面積=(上辺+底辺)×高さ÷2
である。各行の説明を右側の#のあとに記してある(コメント文)。
Rubyはインタープリタ言語であるので、Cのようにコンパイルする手間がいらない。エディタでプログラムを書けばすぐに実行できる。
(1)エディタを用いてRubyプログラム(ソースプログラム)のファイルを作成する。これから複数のRubyプログラムファイルを作成していくので、専用のディレクトリを作成しておくとよいだろう。ディレクトリ名は例えばrubyとしておく。端末エミュレータで次のようにする。
keyaki% mkdir ruby
keyaki% cd ruby
続いて画面下の左から4番目のアイコンをクリックしてエディタを起動し、ファイルを作成する。保存する時は「ファイル」から「新規保存」を選んで保存ダイアログボックスを開き、左側のディレクトリ一覧からrubyディレクトリを選び、ファイル名を****.rbとする(例 daikei.rb)。実際には拡張子(.rb)は何でもいいのだが、こういう決まりは守っておく方がよい。
(2)Rubyインタープリタを用いてRubyプログラムを実行する。
ファイルを保存したら端末エミュレータで
keyaki% ruby daikei.rb
としてプログラムを実行する。プログラムに誤りがなければ画面にjouhen =と表示されてキーボードからの入力を受け付ける状態になるので適当な数値を入力する。入力後にエラーが表示されることもある。うまく行けば底辺、高さの数値を入力すると面積が表示されてプログラムが終了する。
エラーがあった場合はプログラムが停止する原因となったエラーとそれがある行の番号が表示されているので、エディタでプログラムファイルを開いたらまずその行を見てみる。
練習2.プログラムファイルdaikei.rbを作成し実行してみること。ただし、コメント(#から右の文字)は入力する必要はない。
2004年5月14日作成、2004年8月24日更新
國分 尚