千葉大学普遍教育情報処理科目:自習用テキスト「プログラミング入門」

生物生産科学科 担当 國分 尚


<-- 第2章目次第4章 -->


3.Rubyプログラミング入門

  1. 環境を整える
  2. エディタの使い方
  3. Hello World!
  4. 台形の面積を求める
  5. Rubyプログラムの実行

第2章にも書いたように大事なのはアルゴリズムであって、プログラミング言語はそのときの条件にあった適当なものを選べば良い。本講義ではRubyという言語を選んだ。その理由は、studentsドメインのホストで実行できる、開発者が日本人であるため本家本元のテキストが日本語で書かれている、無料である、スクリプト言語なのでプログラムを実行するまでの道のりが簡単である、オブジェクト指向と言う比較的新しい考え方を実践している、はやりのスクリプト言語であるPerlに似ている、多くのパソコンで動く(Windows, Mac OS, Linux他)などがあるが、最大の理由は國分の趣味である。

Rubyはオブジェクト指向言語であるが、オブジェクト指向プログラミングだけを習うと他の言語への応用が難しいので、ここでは残念ながらRubyを手続き型の言語のように使った例を示す。このように応用が利くのがRubyの特徴とも言える。オブジェクト指向に興味がある人はがんばって自分で勉強して欲しい。

3−1.環境を整える

まずは、Rubyが使える状態にしなければならない。Windowsでも動かせるRubyの環境もあるが、千葉大学の教育用システムでは用意されておらず、自分でインストールすることもできないので、ここではLinuxの環境を使う。まず、Linuxでログインする必要がある。もしWindowsが起動していたら、端末を再起動し、次の起動時にF8を押してLinuxを選択する。

初めてRubyプログラムを作るときはまず作業用のディレクトリ(フォルダ)を作っておくと便利である。デスクトップのホームディレクトリを開き、中で右クリックして新しいフォルダを作り、Rubyと名前をつける。半角の英字で付けること。次からはこの操作は必要ない。

Linuxが起動したら左下の赤い帽子のメニュー(RedHatメニュー)からシステムツール>ターミナルを起動する。cd Rubyとタイプし、最後にEnterを押す。これでRubyディレクトリ(フォルダ)に移動したことになる。lsと打つと以前に作ったRubyプログラムの名前が表示される。

3−2.エディタの使い方

3−3.Hello World!

プログラミングを習う時は必ずこれをやることに決められているので...

プログラム0.画面に"Hello World!"と表示する

z06hxxxx/home $ ruby -e 'print "Hello World!\n" '

これだけである。これはRubyインタープリタに-eのあとの' '(シングルクォーテーション)で囲まれた文字列をプログラムとして実行させている。eはexecuteまたはevaluateの頭文字だろう。このプログラムの部分だけを改めて書いてみると、

print "Hello World!\n"

このプログラムはHello World!と言う文字列を画面に表示し、改行して終了する。

練習1.最後の\nを書かずに実行したり、\n\nとするとどうなるか試してみる。また、Hello Worldの代わりに「こんにちは」とするとどうなるか。なお、\は環境によって¥(円記号)と\(バックスラッシュ)のどちらかが表示され、キーボードの刻印も機種によって¥と\の2通りある。

3−4.もう少し役に立つRubyプログラムの例−台形の面積を求める

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では#から右に書かれた部分はプログラムに関係ないものとして、実行時には無視される。

3−5.Rubyプログラムの実行

Rubyはインタープリタ言語であるので、Cのようにコンパイルする手間がいらない。エディタでプログラムを書けばすぐに実行できる。

(1)エディタを用いてRubyプログラム(ソースプログラム)のファイルを作成する。画面左下のredhatメニューからアクセサリ>テキストエディタを起動し、ファイルを作成する。保存する時は「ファイル」から「新規保存」を選んで保存ダイアログボックスを開き、左側のディレクトリ一覧からRubyディレクトリを選び、ファイル名を****.rbとする(例 daikei.rb)。実際には拡張子(.rb)は何でもいいのだが、こういう決まりは守っておく方がよい。

(2)Rubyインタープリタを用いてRubyプログラムを実行する。

ファイルを保存したらターミナルで

$ ruby daikei.rb

としてプログラムを実行する。プログラムに誤りがなければ画面にjouhen =と表示されてキーボードからの入力を受け付ける状態になるので適当な数値を入力する。入力後にエラーが表示されることもある。うまく行けば底辺、高さの数値を入力すると面積が表示されてプログラムが終了する。

エラーがあった場合はプログラムが停止する原因となったエラーとそれがある行の番号が表示されているので、エディタでプログラムファイルを開いたらまずその行を見てみる。

練習2.プログラムファイルdaikei.rbを作成し実行してみること。ただし、コメント(#から右の文字)は入力する必要はない。

目次

  1. アルゴリズムとプログラム
  2. プログラミング言語
  3. Rubyプログラミング入門
    1. 環境を整える
    2. エディタの使い方
    3. Hello World!
    4. 台形の面積を求める
    5. Rubyプログラムの実行
  4. Rubyプログラムの構造
    1. 文、数値、文字列、変数、代入
    2. データの型、あるいはオブジェクトの種類
    3. 配列とハッシュ
    4. 制御構造
    5. アルゴリズムからプログラムへ
    6. オブジェクトとメソッド
  5. ファイル処理と正規表現
    1. Genbankの出力を加工する
    2. ファイルからデータを読み込む
    3. ファイルにデータを書き込む
    4. 正規表現
  6. その他
  7. 参考文献
  8. 用語集
  9. 練習問題の解答例
  10. 索引

情報処理のトップへ戻る


2004年5月14日作成、2006年4月18日更新

國分 尚
hkokubun@faculty.chiba-u.jp