四則演算
プログラムでは、数値の足し算や引き算、掛け算や割り算を行うことがよくあります。
このような4つの演算方法のことを、四則演算といいます。
ここでは、四則演算やそれに関係する計算について説明します。
基本的な演算
最初に足し算、引き算、掛け算、割り算の基本的な計算について説明していきます。
このような計算をする場合、それぞれ+、-、*、/の記号を使うことで計算できます。また、+、-、*、/のような演算を行う記号のことを、演算子と呼びます。今後の説明では、演算子という用語を使っていくため、覚えておきましょう。
# 足し算
puts 3 + 5
a = 3
b = 5
puts a + b
# 引き算
puts 3 - 5
a = 3
b = 5
puts a - b
# 掛け算
puts 3 * 5
a = 3
b = 5
puts a * b
# 割り算
puts 3 * 5
a = 3
b = 5
puts a / b
ここでは、3と5という数字を使って計算をしています。
途中a = 3
とb = 5
という記述がありますが、これは3という数字にaという変数を5という数字にbという変数を対応させています(一般的にこのようなRubyの処理を、値に変数の名前でタグ付けしているといわれます)。また、その後にa + b
やa - b
のようなプログラムを書きました。このように=を使って変数と値を関連付けることを「代入」といいます。つまりa = 3
であれば、aに3を代入するといいます。
これは、変数を使用した計算も可能であることを示しています。
プログラムにおいてあらかじめ決められた数字で計算をするということはあまりありません。次のように入力を変数として処理をするということが多いです。
a = gets.to_i
b = gets.to_i
puts a + b
puts a - b
puts a * b
puts a / b
このプログラムでは、入力として二つの数値を受け取ります。この数値は、整数や小数のどちらでも構いません。
入力を受け取る際のgets
の後ろにto_iというものがついています。gets
は通常入力を文字列として受け取るのですが、今回は数値として計算をしたいため、to_iというものを使って、数値に変換して変数に代入しています。
計算において、2つ以上の数値を計算することができます。例えばa + b * b - a
のような計算です。このような計算の場合、通常の計算と同じように掛け算や割り算から最初に計算されるため、計算順序を変えたい場合は、かっこを使うことが可能です。例えば(a + b) * (b - a)
のようにすることで、計算順序を変えられるということです。
発展的な演算
さらに、発展的な演算として四則演算以外のものを説明します。Rubyでは、四則演算以外にも剰余や累乗(べき乗)と呼ばれる計算も演算子によって計算をすることが可能です。
それぞれ、%、**の記号を使用します。
# 剰余
puts 5 % 3
a = 5
b = 3
puts a % b
# 累乗
puts 5 ** 3
a = 5
b = 3
puts a ** b
剰余とは、あまりを求める計算のことで、5÷3の余りは2のため、結果は2となります。
累乗とは、ある数を指定された回数だけある数で掛ける計算のことで、5 ** 3
は5を3回掛ける計算で5 * 5 * 5
の計算をするということになります。結果は125です。
こちらの計算においても、もちろん変数を使うことは可能ですので、何かしらの入力をもとに演算を行うことができます。
文字列の演算
先ほどの説明で、to_i
は文字列を数値に変換するというものとして説明しましたが、実はRubyでは文字列においても、一部の四則演算を適用することが可能です。
しかし、文字列における四則演算では、数値とは結果が異なります。
これは、数値と文字列でデータの扱いが異なるためにおこることで、他のプログラミング言語を見ても、文字列においてこのような挙動は珍しくありません。
文字列における演算の例を次に示します。
a = 'Hello'
b = 'World'
# 出力は'HelloWorld'
puts a + b
# 出力は'HelloHelloHello'
puts a * 3
+では、文字列の結合、*では、文字列の繰り返しが行われ、比較的直観的に動作します。
いまいち使いどころが難しいのですが、時と場合によっては便利ですので、覚えておいて損はないです。
まとめ
ここでは、基本的な演算である四則演算と少々応用的な演算について説明しました。また、変数についても、説明をしました。
このような数値演算や変数はプラグラムにおいて非常に重要です。まだこの辺りは、今までの算数や数学のようにプログラムを記述できるため覚えやすいですが、今後説明していく部分はよりプログラミングっぽくなっていきます。
初歩からしっかりと覚えて、今後覚えていく部分の足固めをしていきましょう。