Ruby
簡単入門 第
1
回
コンピュータ系実験
IV
資料
担当:冨永
Ruby はオブジェクト指向スクリプト言語です.こ
の入門ではRubyの簡単な使い方を説明します.Ruby
についての正確な説明は,Rubyのサイト
http://www.ruby-lang.org/
にあるドキュメントや,この文書の最後に紹介する本 などを参照して下さい.
1
使い方
Linuxなどでは,Rubyは2通りのやり方で使うこと
ができます.
1.1
使い方その
1
:ファイルにプログラムを
書いて動かす
Rubyのプログラムをファイルとして作ります.ファ
イル名は「∼.rb」にします.例えばhello.rbとい
う名前にします.
puts "Hello, world!"
そしてコマンド「ruby」を使ってプログラムを動か
します.rubyコマンドはRubyのインタプリタです.
% ruby hello.rb Hello, world! %
rubyの版を知るためには-vをつけて動かします.
% ruby -v
ruby 1.8.6 (2007-03-13 patchlevel 0)
[i686-darwin8.9.1] %
演習1 hello.rbを動かす
hello.rbをエディタで作り,rubyコマンドで
動かしてみよう.
1.2
使い方その
2
:キーボードからプログラ
ムを入力して動かす
キーボードからRubyの実行文を入力して対話的に
実行させることができます.対話型interactiveのイン
タプリタであるirbコマンドを使います.
% irb
irb(main):001:0> i = 3 => 3
irb(main):002:0> j = i * 2 => 6
irb(main):003:0> puts j 6
=> nil
irb(main):004:0> exit %
演習2 irbを使う
irb で 2×2 + 2 / 2 を計算してみよう.また,
"hello" + "world"の値がどうなるか計算して
みよう.
2
数値と数値リテラル
Rubyで扱える基本的な数値の型は整数integerと実
数(浮動小数点数floating-point number)です.数値リ
テラルliteral1は以下のように書きます.
整数 0 5 -2
実数 1.25 0.57 2.0 1.3e-4 2e10
演習3 計算をしてみる(1)
irbで,5/2を整数で計算してみよう.また,実
数でも計算してみよう.
1リテラルとは,プログラム中に書かれた値のことです.
演習4 計算をしてみる(2)
irbで 2×10
20
5×1021 を実数で計算してみよう.
3
演算子
CやJavaと同様の演算子operatorが使えます.主な
演算子としては以下のものがあります.
算術演算 + - * / %
ビット演算 ˜ & | ˆ << >>
比較 > >= < <= == !=
代入 = += -= など
論理演算 ! && || not and or
(注意:++や--はありません)
演算子には優先順位があります.
高い ::(メソッド呼び出し .)
↑ []
+(単項) ! ˜
**
-(単項)
* / %
+
- << >>
&
| ˆ
> >= < <=
<=> == === != =˜ !˜
&&
||
.. ...
?:(条件演算子)
=(+= -= · · ·)
↓ not
低い and or
4
定数と変数
4.1
種類
大域変数global variable $foo $Foo
局所変数local variable foo
インスタンス変数instance variable @foo @Foo
クラス変数class variable @@foo @@Foo
定数constant Foo
(定数は一度しか代入できない変数と考えるとよい) しばらくは局所変数と定数だけを使います.
4.2
識別子
英字で始まる英数字の並び2を識別子identifier(変
数などの名前)にできます.下線underscore「 」は英
小文字として扱われます.
識別子として使えない予約語keywordは以下の通り.
BEGIN END alias and begin break case class def defined? do else elsif end ensure false for if in module next nil not or redo rescue retry return self super then true undef unless until when while yield
ただし$や@を先頭につけたものは識別子(つまり
変数名)として使えます.
5
式と文
式 expression 値をもつ.「評価evaluate」される.
文 statement 実行の単位.改行で区切る(改行の代わ
りにセミコロン「;」で区切ってもよい).
6
真偽値
偽と見なされる値 false nil
真と見なされる値 それら以外(0は真なので注意)
2後で出てくる正規表現を使うと
[A-Za-z ][A-Za-z 0-9]*
と書ける.
7
制御構文
7.1
条件分岐
if X (then) A
elsif Y (then) B
else C end
if X then A elsif Y then B else C end
7.2
繰り返し
i = 0
while i < 10 (do) puts i
i += 1 end
for i in 0..9 (do) print i
end puts
break 繰り返しを抜ける
next 次の回を始める
8
名前の通用範囲
• 最初の代入で定義される
• それ以降で有効
• 局所変数の有効範囲はブロック内(まだ出てこな
い)
使い方のこつ 使う変数は最初に初期値を入れておく.
(変数宣言の代わり)
演習5 xとx2の対応表
繰り返しを使って,以下のようなxとx2 の対応
表を表示するプログラムを作れ.
1 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 10 100
演習6 九九の表
繰り返しを使って,以下のような九九の表を表示 するプログラムを作れ.
1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
9
関数定義
関数は以下のような形式で定義する.
def add(x, y) z = x + y return z end
xとyが仮引数である.zの値が関数の戻り値とし
て返される.引数についても戻り値についても,型が 指定されないことに注意せよ.関数はどのような型の
値でも引数として受け取れる.またどのような型の値 でも返せる.
関数を使うには関数定義の後で以下のようにする.
ans = add(2, 3)
この例ではansの値が5になる.
関数定義のdefからendまではブロックである(局
所変数の有効範囲を限る).
なお,関数は再帰的に呼び出すことができる.
演習7 フィボナッチ数列
以下で定義されるフィボナッチ数列Fibonacci num-bers Fn を第 N項(FN)まで表示するプログラム
fib.rbを作れ.
F1= 1
F2= 1
Fn+2=Fn+Fn+1 (n≥1)
Nはプログラム中で定数とし,適当な値(例えば20)
を与えること.
演習8 素数かどうか確かめる
引数として与えられた整数iが素数かどうか確か
め,素数ならばtrueを,素数でないならばfalse
を返す関数isprime(i)を作れ.
なお素数とは,1と自分自身でしか割り切れない, 2以上の整数(2, 3, 5, 7, 11,. . .)である.
演習9 素数を表示する
上の演習で作ったisprimeを使って,100までの
素数を全て表示するプログラムを作れ.
Rubyでは関数定義の最後の式が戻り値になるので,
return文を使わずに以下のようにも書ける.
def add(x, y) x + y
end
引数がない場合は括弧ごと省略できる.
def sayhello
puts "Hello!" end
引数の数が可変の関数も作れる(説明は省略).
参考図書
• 原 信一郎:「Rubyプログラミング入門」,オーム
社,2000年.
• 高橋 征義,後藤 裕蔵:「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」,ソフト
バンククリエイティブ,2006年.
• Yugui:「初めてのRuby」,オライリー,2008年.