- 基本
スクリプトを次のように修正します.
n = 100
sum = n * (n + 1) / 2
puts sum
|
このように文字を使って計算を行うと,一ヶ所の修正で済みます.ここでは,1
行目の n というのと,2行目の sum が「変数」です.
実際のプログ
ラムにおいても,いろいろな場所で同じ数値や文字を何度も扱うことが多いので,
変数を使ってスクリプトを作成することが必須です.では,このスクリプトを見
ながら,重要な点について,いくつか確認していきましょう.
- 名前の約束
変数は複数の文字を使って名前づけをするこ
とが出来ます.ただし,数字で始まるものはダメですし,大文字で始まるもの
は別の「定数」と呼ばれるものになります.さらに,途中にスペースを含むこ
ともダメです.英語の小文字で始め,アルファベットと数字,
アンダースコア (_) を使うのが良いでしょう.長いスクリプトや人に見せるた
めのスクリプトでは,変数の名前によりその中身の意味がすぐにわかるものが
望ましいと言えます.上の例では,数学においても整数をnで表すこと
が多いので, n と言えば,暗黙の了解で整数を指すこと,また,
「和」の英語「sum」であれば,それが意味するものが和であることも容易に想
像できます.ですので,それなりに意味を踏まえた名前づけが大事です.
しかし,変数名には使ってはいけ
ない「予約語」というものがあります.これは,これらの単語にはあらかじめ
意味のある動作が割り振られているので,変数名に使ってはいけないと言うも
のです.Rubyの場合は
リンク先のようなものがあります.
- 代入
スクリプトに戻りましょう.1行目は「代入」と呼ばれる操作です.数学では等号 (=) は両辺
が等しいと言う意味ですが,計算機言語においてはほぼ全ての場合において右辺
の値を左辺に代入する操作になります.ここでは, n という名前の変
数に100という値を代入しています.
2行目は数式になっていますが,これも代入です.等号と代入で何が異なるのか,
については,後ほど「自己代入」のときに改めて紹介します.
- 型
変「数」と言っていますが,変数が扱えるのは「数値」だけではありません.前
回の授業で行った出力における「文字列」もある「値」として考えます.そのた
め,自分が扱っている「値」は何なのか,把握しておかないと間違いの元になり
ます.文字や数値を区別するために,変数には「型」(type)があります.
C言語などでは,最初にユーザがその型を指定し
てやらないといけないのですが,Rubyにおいてはあまり意識する必要はありませ
ん.Rubyの方で,「よきに計らって」くれます.しかし,一応は意識しておかな
いと重要な間違いに発展することがありますので,やはり注意は必要です.
さて,型には次のようなものがあります.
- 文字列 (String)
- 整数 (Integer)
- 浮動小数点数 (Floating point number)
文字列は最初に見たように,文字のつながりです.これも「値」として意味があ
ります.整数はたぶん分かるでしょうが,「浮動小数点数」は分かりに
くい名前ですね.要は,「実数」(小数点以下の部分を含む数) です.「分数」
のような概念はありません.整数は普通に 1 とか 21 のよ
うに表します.浮動小数点数は小数部分をつけて,1.0 や
12.3456 のようにして表現します.次のようにしてみると,整数と文字列
の型の違いの意味がわかるでしょうか?
上側の例は,二重引用符が無いので整数の演算が puts の引数になっ
ていますが,下側は二重引用符があるので,その内側は数値ではなくただの文字
です.
繰りかえしになりますが,最初のスクリプトの例や上の例のように,Rubyで数式を記述するときには演算子
の両側に一文字分空白を置くようにしましょう.二項演算子と単項演算子の処理
の違いから来る間違いを防ぐことができるので,うっかりミスを防ぐ助けになり
ます.
C言語と異なって変数の型がRubyにおいては自在に変更可能であることが次ぎの
例で分かるでしょう.
a = 1
puts a
a = 2.0
puts a
a = "abc"
puts a
|
整数型の演算において注意しなければならないことは割算(除算)における考え方
です.次回に詳しく紹介しますが,次ぎの例を試してみて,自分で動作を確認し
てください.
puts 1 / 3
puts 1.0 / 3
puts 1 / 3.0
|
- 定数他
変数は名前のごとく変化する数ですので,スクリプトが動作する途中で値が変わ
ることもよくあります.しかし,最初に決めたらそれは変更しない,という値も
必要になることがあります.そのような場合に「定数」を用います.これは,名
前をアルファベットの大文字で始めることで定数として「定義」出来ます.定数
の値を変更しようとすると,スクリプトの実行時にメッセージが表示されます.
CONSTANT = 1
CONSTANT = 2
puts CONSTANT
|
を試してみると,
tmp.rb:2: warning: already initialized constant CONSTANT
|
が出てきます.残念ながらメッセージは英語なのですが,難しくは無いのでお分
かりになるでしょう.2行目に問題があることが最初に示され,値を変更しよう
とするときに定数であることを指摘されています.
ただし,結果の方は一応変更後の値である「2」が出力されています.
また,変数には実は「グローバル変数」や「インスタンス変数」など,いろいろな種類
があります.しかし,この授業はそのような特殊な変数は扱いません.「ローカル変
数」という変数を上では紹介して利用していますが,それをここでは変数と呼ん
で,それだけを扱うことにします.