[目次] [第1回] [第3回]

Ruby勉強会(第2回)

様々な値とそのクラス

Rubyでは全てのデータはオブジェクト(インスタンス)である。 そのため、個々のデータはそれぞれの性質を記述したクラスが 決まっている。あるデータのクラスを知りたい場合には、メソッド 「class」を用いるとクラスが返り値となる。例えば、整数 「1」のクラスを確かめるには、
1.class
と記述する。(この場合、「Fixnum」という整数を表すクラスの一種 が返り値となる。)

練習2-1

様々な定数のクラスを調べてみよ。もし、何らかの計算結果の値のクラスを 確かめたい場合は
(1 + 2).class
と括弧をつけると良い。例えば、次のような巾乗演算「**」の 結果を見てみよ。
(2 ** 8).class
(2 ** 128).class

求めたクラスがどのようなものかは書籍やRubyのリファレンスマニュアルを 参照せよ。

複数行のプログラムと基本制御構造

これまでは1行だけで単純な演算をするプログラムであったが、より複雑な処理を するためには複数行からなるプログラムを記述する。 その場合、irbでキーボードから逐一入力するよりはテキストエディタ を用いてプログラムを入力・編集し、ファイルに格納する。そのファイルの拡張子 は「.rb」とすること。

複数行からなるプログラムは基本的には第1行目から順に実行される(順次)。 その他に命令を書くことで、繰返し(反復)や条件に基づいた分岐を記述できる。 命令には様々なものがあるが典型的なものは、while ... endif...endである。例えば、

    if a == 0
        p("a is zero")
    else
        p("a is not zero")
    end
    ...
    while a != 0
        繰り返したい処理内容
    end
のように記述する。

練習2-2

次のプログラムを入力し、実行してみよ。

    a = 0.0
    while a < 1.0
        p(a)
        a = a + 0.1
    end
次にこのプログラムの2行目を次のように書換えるとどうなるか試して見よ。
while a != 1.0
なお、プログラムの実行を途中で強制的に止めるにはコントロールキーを 押しながら「c」のキーを押す(「Ctrl-C」とか「^C」と書かれることが多い)。

練習2-3

次のプログラムはキーボードから1行ずつ入力し、その内容を そのまま画面に出力するものである。

    while true
        line = STDIN.readline
        p(line)
        if line =~ /end/
            break
        end
    end
このプログラムは入力した文字列に「end」を含むと実行を 終了する。

  1. このプログラムを入力、実行してみよ。
  2. 単に入力されたものをそのまま表示するのではなく、入力された 文字列を連結していくものに変更してみよ。
  3. 整数を入力することにして、その値を積算していくものにしてみよ。 なお、文字列を整数値に変換するメソッドは「to_i」 である。
  4. Ruby の1行プログラムを入力したらそれを実行し、その結果の値を 表示するirbもどきにしてみよ。文字列をプログラムとみなして 実行し、その結果を得るにはメソッド「eval」を用いる。 「eval(文字列)」と書けばその文字列をプログラムとして 実行する。

[目次] [第1回] [第3回]

by Tetsuo Sakaguchi
2006年 12月22日 金曜日 15時09分26秒 JST