Rubyで数値計算を行なうには、数学とほぼ同じ書き方で記述する。
ただし、掛算記号は*
、割算記号は/
で
表す。括弧は丸括弧 ( )
一種類だけを使用し、
式全体が1行で完結するように書く。
代表的な演算子を列挙する。
演算子 | 意味 |
---|---|
+ | 加算 |
* | 乗算 |
- | 減算 |
/ | 除算 |
% | 剰余 |
** | 巾乗(べき乗) |
一つの式に演算子が複数現れるときは、優先順位の高いほうが先に 計算される。上記の演算子を優先順位の高い順に並べると以下のようになる。
高 | ←→ | 低 |
---|---|---|
** | * / % | + - |
この順位は基本的に数学と同じで、たとえば
1+2*3
は、+
よりも*
が高い優先順位なので、
2*3
が先に計算されるので答は7となり、
1+2*3**2
は、*
よりもさらに順位の高い**
が
最初に計算されるので答は1+2*9=1+18=19
となる。括弧 ( )
があれば、先に括弧内が計算される。
内側の括弧の方が高い優先順位を持つ。
((1+2)*3)**2
は、1+2
が最初に、次に *3
が、
最後に**2
が計算される。
数式との対応をいくつか挙げておこう。
数学 | Rubyの式 | |||
---|---|---|---|---|
1+2×3 |
1+2*3 |
|||
(1+2)÷3 |
(1+2)/3 |
|||
|
(x+y+z)/3 |
次のものは変数への代入を伴う。
代入演算子 | 意味 |
---|---|
= | 通常代入 x=5 |
+= | 加算代入 x+=5 でxが5増える |
*= | 乗算代入 x*=5 でxが5倍になる |
-= | 減算代入 x-=5 でxが5減る |
/= | 除算代入 x/=5 でxが1/5になる |
%= | 剰余代入 x%=5 は x = x%5 と同じ |
**= | 巾乗代入 x**=5 は x=x**5と同じ |
変数x
の値が10であると仮定したときに、
代入演算によってx
がどう変わるかを示す。
代入演算 | その後のx の値 |
---|---|
x += 1 | 11 |
x *= 2 | 20 |
x -= 1 | 9 |
x /= 2 | 5 |
x %= 3 | 1 |
x **= 2 | 100 |
制御構造の判定条件式等に利用する演算子のことを 論理演算子という。基本的なプログラムでも頻繁に利用する ものを以下に示す。
比較演算子 | 意味 |
---|---|
== | 左辺と右辺が等しいか |
< | 左辺が右辺より小さいか |
<= | 左辺が右辺以下か |
> | 左辺が右辺より大きいか |
>= | 左辺が右辺以上か |
&& | 「かつ」 |
|| | 「または」 |
! | 否定 |
not | 否定 |
いくつか例を示す。
もしanswer
変数の値(文字列)が "yes"
と等しかったら「ほげほげ」
if answer == "yes" then ほげほげ end
もし x
が12以下で、なおかつ
x
が1以上なら「ほげほげ」
if x <= 12 && x >= 1 then ほげほげ end
もし y
が "はい"
と等しいかまたは、
y
が "yes"
と等しい場合は「yesだってさ」
そうでなければ「yesじゃないってさ」と出力する
if y == "はい" || y == "yes" then printf("yesだってさ\n") else printf("yesじゃないってさ\n") end