目次に戻る | 前のページへ | 次のページへ |
数学が得意で無い人にはちょっと恐縮ですが,次のような計算をしてみましょう.
1から100までの連続する整数の和を求めなさい.ただし,1から n までの
数の和を求める次の公式を用いる.
n n (n + 1)
|
手で計算するのは面倒なので,Rubyを使って計算させます.四則演算の記号は後 で詳しく紹介しますが,+が足し算,*がかけ算,/が割算です.
puts 100 * (100 + 1) / 2 |
これを実行すると,答えの「5050」が得られます.では,次に1000までの和を求 めることにするとどうでしょうか.もちろん,先ほどのスクリプトの数値を変更 すれば簡単に計算できるのですが,100が2回出ているので2ヵ所修正する必要が あります.ちょっと面倒ですね.数学公式のように文字 (変数) を使った方が便 利では無いでしょうか?
ごらんのように puts の後には数式のような形のものも使用すること が出来ます.
スクリプトを次のように修正します.
n = 100 sum = n * (n + 1) / 2 puts sum |
このように文字を使って計算を行うと,一ヶ所の修正で済みます.
実際のプログ ラムにおいても,いろいろな場所で同じ数値や文字を何度も扱うことが多いので, 変数を使ってスクリプトを作成することが必須です.では,このスクリプトを見 ながら,重要な点について,いくつか確認していきましょう.
スクリプトの1行目は「代入」と呼ばれる操作です.数学では等号 (=) は両辺 が等しいと言う意味ですが,計算機言語においてはほぼ全ての場合において右辺 の値を左辺に代入する操作になります.ここでは, n という名前の変 数に100という値を代入しています.
2行目は数式になっていますが,これも代入です.今度の変数の名前は sum となっています.このように変数は複数の文字を使って名前づけをするこ とが出来ます.ただし,数字で始まるものはダメですし,大文字で始まるもの は別の「定数」と呼ばれるものになります.さらに,途中にスペースを含むこ ともダメです.英語の小文字で始め,アルファベットと数字,ハイフン (-) と アンダースコア (_) を使うのが良いでしょう.また,変数名には使ってはいけ ない「予約語」というものがあります.これは,これらの単語にはあらかじめ 意味のある動作が割り振られているので,変数名に使ってはいけないと言うも のです.Rubyの場合は リンク先のようなものがあります.
コンピュータで値を扱うためには,その値がどのような「型」を持っている かに注意する必要があります.C言語などでは,最初にユーザがその型を指定し てやらないといけないのですが,Rubyにおいてはあまり意識する必要はありませ ん.Rubyの方で,「よきに計らって」くれます.しかし,一応は意識しておかな いと重要な間違いに発展することがありますので,やはり注意は必要です.
さて,型には次のようなものがあります.
a = 1 puts a a = 2.0 puts a a = "abc" puts a |
次の四則演算のところで,これらの型がどのように 影響してくるのか,見てみることにします.
また,特殊な値として,nil や false,true とい うものがありますが,これも後で紹介します.
変数は名前のごとく変化する数ですので,スクリプトが動作する途中で値が変わ ることもよくあります.しかし,最初に決めたらそれは変更しない,という値も 必要になることがあります.そのような場合に「定数」を用います.これは,名 前をアルファベットの大文字で始めることで定数として「定義」出来ます.定数 の値を変更しようとすると,スクリプトの実行時にメッセージが表示されます.
CONSTANT = 1 CONSTANT = 2 puts CONSTANT |
を試してみると,
tmp.rb:2: warning: already initialized constant CONSTANT |
が出てきます.残念ながらメッセージは英語なのですが,難しくは無いのでお分 かりになるでしょう.2行目に問題があることが最初に示され,値を変更しよう とするときに定数であることを指摘されています.
ただし,結果の方は一応変更後の値である「2」が出力されています.
変数には実は「グローバル変数」や「インスタンス変数」など,いろいろな種類 があります.しかし,今日はそのような特殊な変数は扱いません.「ローカル変 数」という変数を上では紹介して利用していますが,それをここでは変数と呼ん で,それだけを扱うことにします.
目次に戻る | 前のページへ | 次のページへ |