【Ruby】レッスン1-03:四則演算をしよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:変数と定数

この記事の練習問題を解くために必要な知識:
入力と出力の基本コメントの書き方変数と定数基本データ型と算術演算子文字列操作乱数生成

<<前のページ Ruby記事一覧 次のページ>>

Rubyの文法「基本データ型」と「算術演算子」とは

ここでは「基本データ型」と「算術演算子」の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。



Rubyには数値や文字列といったさまざまな基本データ型が存在します。またこれらのデータを計算するために使用する算術演算子も豊富に揃っています。

これらの要素を理解することで、これから学習する数値の計算や文字列の結合といった操作が可能になります。

本記事ではRubyの基本データ型と算術演算子について、初心者向けにわかりやすく解説します。

基本データ型とは?

Rubyにはいくつかの基本データ型があります。データ型とは、簡単に言うとデータの種類です。

例えば「5」というデータがあったとき、コンピュータはこれが数値なのか文字なのか、指定されなければ判断できません。

数値であれば5+3のように演算に使用できますし、文字であれば他の文字列と連結して「5回目」などと表示できます。

それぞれのデータ型の特徴と使い方を見ていきましょう。

整数(Integer)

整数は小数点を含まない数値のデータ型です。例えば、5-3 は整数です。

整数型は計算に用いることが多く、直接数値を入力するだけで使用できます。

number = 5
puts number  # 出力: 5

浮動小数点数(Float)

浮動小数点数は小数点を含む数値です。例えば、3.14-0.5 などがこれに該当します。

浮動小数点数は主に割り算や精密な計算に利用されます。また整数型と同様に直接数値を入力するだけで使用できます

pi = 3.14
puts pi  # 出力: 3.14

文字列(String)

文字列はテキストデータを表します。

ダブルクオーテーション (" ") もしくはシングルクオーテーション (' ') で囲むことで表現できます。

greeting = "Hello, Ruby!"
puts greeting  # 出力: Hello, Ruby!

真偽値(Boolean)

Rubyではtruefalse という2つの値が真偽値として扱われます。

条件分岐や論理演算において頻繁に利用されます。

is_ruby_fun = true
puts is_ruby_fun  # 出力: true

nil

Rubyにおけるnilは「何もない」ことを意味します。

変数がまだ値を持っていないことを示すために使われます。

empty_value = nil
puts empty_value  # 出力:

算術演算子の種類と使用方法

Rubyには数値を扱うための算術演算子がいくつか用意されています。

主な算術演算子の使用例を見ていきましょう。

足し算(+

2つの数値を加算します。

result = 5 + 3
puts result  # 出力: 8

引き算(-

2つの数値を減算します。

result = 5 - 2
puts result  # 出力: 3

掛け算(*

2つの数値を乗算します。

result = 4 * 3
puts result  # 出力: 12

割り算(/

2つの数値を除算します。

整数同士の除算では結果も整数になるため、小数が欲しい場合は片方を浮動小数点数にする必要があります。

result = 10 / 2
puts result  # 出力: 5

result = 10 / 3
puts result # 出力: 3
result = 10.0 / 3
puts result  # 出力: 3.3333333333333335

剰余(%

割り算の余りを返します。

偶数・奇数の判定に使われることが多いです。

result = 10 % 3
puts result  # 出力: 1

累乗(**

左辺の数値を右辺の数値で累乗します。

result = 2 ** 3
puts result  # 出力: 8

基本データ型と算術演算子の組み合わせ

基本データ型と算術演算子を組み合わせることで、より複雑な計算や操作が可能です。

たとえば商品価格と個数を掛けて合計を計算したり、文字列を結合したりする場合に活用できます。

price = 500       # 商品価格
quantity = 3      # 購入個数
total = price * quantity #合計を計算して変数totalに代入
puts total # 出力: 1500
sei = "山田"    # 苗字
mei = "花子"    # 名前
full_name = sei + " " + mei #苗字と名前を合わせて変数full_nameに代入
puts full_name # 出力: 山田 花子

ただし、異なるデータ型を組み合わせる際には注意が必要です。文字列と数値を直接加算しようとするとエラーが発生します。

この場合は、to_sメソッドを使って数値を文字列に変換する必要があります。

age = 20 //これは整数型
puts "私は" + age.to_s + "歳です"  # 出力: 私は20歳です

このようにデータ型を変更するには専用のメソッドを使用します。

代表的なメソッドを以下にまとめます。このサイトをLesson1-1から順番に学習している方は、現時点では上から3つだけ暗記し、残りは後で振り返るようにしましょう。

1.to_s – 文字列への変換

オブジェクトを文字列(String)に変換します。

123.to_s       # => "123"(整数を文字列に変換)
nil.to_s       # => ""   (nilは空文字列に変換)
true.to_s      # => "true"(trueを文字列に変換)

2.to_i – 整数への変換

オブジェクトを整数(Integer)に変換します。変換できない文字列は0になります。

"123.45".to_i  # => 123  (小数部分は切り捨て)
"abc".to_i     # => 0    (変換不可の場合は0)
true.to_i      # => 1    (trueは1、falseは0)

3.to_f – 浮動小数点数への変換

オブジェクトを浮動小数点数(Float)に変換します。

"45.67".to_f   # => 45.67(文字列を小数に変換)
"abc".to_f     # => 0.0  (変換不可の場合は0.0)
123.to_f       # => 123.0(整数を浮動小数点に変換)

4.to_a – 配列への変換

オブジェクトを配列(Array)に変換します。特定のオブジェクトや構造体にのみ有効です。

(1..5).to_a    # => [1, 2, 3, 4, 5](範囲オブジェクトを配列に変換)
nil.to_a       # => [](nilは空の配列に変換)

5. to_h – ハッシュへの変換

オブジェクトをハッシュ(Hash)に変換します。配列や構造体、キーバリューのペアが含まれているデータ構造でよく使われます。

[[:a, 1], [:b, 2]].to_h   # => {:a => 1, :b => 2}
{}.to_h                   # => {}(空のハッシュ)

6. to_sym – シンボルへの変換

オブジェクトをシンボル(Symbol)に変換します。主に文字列からシンボルに変換するために使われます。

"hello".to_sym   # => :hello
"123".to_sym     # => :"123"(数値の文字列もシンボル化可能)

7. to_r – 有理数への変換

オブジェクトを有理数(Rational)に変換します。数値や文字列を分数で扱うときに便利です。

2.to_r           # => (2/1)
"2.5".to_r       # => (5/2)
"abc".to_r       # エラー(変換できない場合)

8. to_c – 複素数への変換

オブジェクトを複素数(Complex)に変換します。複素数の計算が必要な場合に使われます。

2.to_c           # => (2+0i)
"2.5".to_c       # => (2.5+0i)

まとめ

Rubyの基本データ型と算術演算子は、プログラム内での計算やデータの扱いに欠かせません。

ここで学んだ基礎を基に、さらに複雑な操作ができるようになるための基盤を作っていきましょう。

基本データ型と算術演算子の練習問題:四則演算をしよう

ユーザーが入力した2つの数値を使って、四則演算(加算、減算、乗算、除算)を行うプログラムを作成しましょう。

プログラムは最初にユーザーに2つの数値を入力させます。

入力された数値をもとに、加算、減算、乗算、除算の計算結果をそれぞれ表示するようにしてください。

この問題の要件

以下の要件に従ってコードを完成させてください。

  1. putsgets.chomp.to_f を使用して、ユーザーから数値を2つ入力として受け取ること。
  2. 最初の数値を num1、2つ目の数値を num2 という変数に格納すること。
  3. 以下の演算を行い、それぞれ結果を表示すること。
    • num1num2 の加算結果
    • num1num2 の減算結果
    • num1num2 の乗算結果
    • num1num2 の除算結果
  4. 各演算結果を puts を使用して表示し、表示する際には「加算結果:」「減算結果:」などのメッセージを含めること。

ただし、以下のような実行結果となること。

----- ↓出力される結果の例↓ -----

最初の数値を入力してください:
5
二番目の数値を入力してください:
3
加算結果:8.0
減算結果:2.0
乗算結果:15.0
除算結果:1.6666666666666667

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:「最初の数値を入力してください:」と出力
2:変数num1に、ユーザーの入力を浮動小数点数に変換して代入
3:「二番目の数値を入力してください:」と出力
4:変数num2に、ユーザーの入力を浮動小数点数に変換して代入
5:変数additionにnum1とnum2の加算結果を代入
6:変数subtractionにnum1とnum2の減算結果を代入
7:変数multiplicationにnum1とnum2の乗算結果を代入
8:変数divisionにnum1とnum2の除算結果を代入
9:「加算結果:」とadditionの値を出力
10:「減算結果:」とsubtractionの値を出力
11:「乗算結果:」とmultiplicationの値を出力
12:「除算結果:」とdivisionの値を出力

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

# ユーザーに最初の数値を入力させる
puts "最初の数値を入力してください:"
=begin
【穴埋め問題1】
ここにユーザーからの入力を受け取り、浮動小数点数に変換してnum1に代入するコードを書いてください。
=end

# ユーザーに二番目の数値を入力させる
puts "二番目の数値を入力してください:"
=begin
【穴埋め問題2】
ここにユーザーからの入力を受け取り、浮動小数点数に変換してnum2に代入するコードを書いてください。
=end

# 各種演算を行う
=begin
【穴埋め問題3】
ここでnum1とnum2の加算を行い、結果をadditionに代入するコードを書いてください。
=end
=begin
【穴埋め問題4】
ここでnum1とnum2の減算を行い、結果をsubtractionに代入するコードを書いてください。
=end
=begin
【穴埋め問題5】
ここでnum1とnum2の乗算を行い、結果をmultiplicationに代入するコードを書いてください。
=end
=begin
【穴埋め問題6】
ここでnum1とnum2の除算を行い、結果をdivisionに代入するコードを書いてください。
=end

# 計算結果を表示する
puts "加算結果:" + addition.to_s
puts "減算結果:" + subtraction.to_s
puts "乗算結果:" + multiplication.to_s
puts "除算結果:" + division.to_s

この問題の穴埋めコードは以上です。

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。




練習問題の解答と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

# 四則演算プログラム

# ユーザーに最初の数値を入力させる
puts "最初の数値を入力してください:"
num1 = gets.chomp.to_f
# gets.chomp.to_f はユーザーからの入力を受け取り、改行を除去し、浮動小数点数に変換します。

# ユーザーに二番目の数値を入力させる
puts "二番目の数値を入力してください:"
num2 = gets.chomp.to_f
# gets.chomp.to_f を使って二番目の数値も同様に処理します。

# 各種演算を行う
addition = num1 + num2         # 加算
subtraction = num1 - num2      # 減算
multiplication = num1 * num2   # 乗算
division = num1 / num2         # 除算

# 計算結果を表示する
puts "加算結果:" + addition.to_s
puts "減算結果:" + subtraction.to_s
puts "乗算結果:" + multiplication.to_s
puts "除算結果:" + division.to_s

正解コードの解説

今回作成したコードは、2つの数値に対して四則演算(加算、減算、乗算、除算)を行うものです。

それではコードをブロックごとに解説していきましょう。

ユーザー入力と基本データ型の使用

puts "最初の数値を入力してください:"
num1 = gets.chomp.to_f
  • puts はメッセージを表示するメソッドです。ここでは「最初の数値を入力してください:」と出力し、ユーザーに数値の入力を促しています。
  • gets はコンソールからユーザーの入力を受け取るためのメソッドです。
  • chomp は入力されたデータから改行文字を除去し、to_f は入力を小数点数(浮動小数点数)に変換します。
    これにより、num1 に小数を含む数値を代入することができます。

同様にして、次のコードも動作します。

puts "二番目の数値を入力してください:"
num2 = gets.chomp.to_f

num2 に二番目の数値を小数として入力することができます。

四則演算の実行

addition = num1 + num2         # 加算
subtraction = num1 - num2      # 減算
multiplication = num1 * num2   # 乗算
division = num1 / num2         # 除算
  • num1 + num2 は加算を行い、その結果を addition に代入します。同様に、- は減算、* は乗算、/ は除算を意味します。
  • ここで使用されている四則演算子 +, -, *, / は、基本的な算術演算子と呼ばれ、Rubyでは数値の計算を行う際に頻繁に使われます。
  • これらの変数には、それぞれの演算結果が代入されるため、後の処理で計算結果を参照することが可能です。

計算結果の表示

puts "加算結果:" + addition.to_s
puts "減算結果:" + subtraction.to_s
puts "乗算結果:" + multiplication.to_s
puts "除算結果:" + division.to_s
  • ここでは四則演算の結果をそれぞれ puts を使って表示しています。
  • addition.to_s のように、to_s メソッドで計算結果を文字列に変換しています。これは、文字列と数値を一緒に表示するために必要です。
  • puts により「加算結果:」「減算結果:」とそれぞれの計算結果が表示されます。

まとめ

このプログラムを通してRubyでの基本的なデータ型の取り扱いや、算術演算子の使い方を学ぶことができました。

数値入力や四則演算はプログラミングの基本的な部分ですので、他のプログラムでも積極的に活用してみてください。

少しずつ複雑なプログラムを作るためのステップとなりますので、今回の学びを基にチャレンジを続けていきましょう!

<<前のページ Ruby記事一覧 次のページ>>

この記事への質問・コメント

この問題を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Rubyのテキスト&問題集トップへ戻る
    トップページへ戻る