LoginSignup
6
4

More than 5 years have passed since last update.

Rubyで四則演算ができる簡単な計算機を作る

Last updated at Posted at 2018-11-30

progateでRubyなどを学んで、自分でもアウトプットしたいと思っている方々がいるような気がしたので、自分がrubyを理解するために書いていたコードをベースに、四則演算できる計算機の作り方を公開します。対象はruby学びたての初心者です。

学べること

  • 条件分岐文(if文)の使い方
  • 繰り返し処理の使い方
  • メソッドの使い方

ファイルを作成

rubyはインストールされている前提で。どこでもいいのでrubyを書くことができるファイルを作りましょう。calc.rbとかでいいと思います。

変数の定義

最初に後々に使う変数を定義します。変数とは、名前をつけて一時的に値を保管しておく箱のようなものです。

calc.rb
# loopの中にある変数は外から呼び出すことができないので、loop文の外で定義しないといけない。
# そしてその変数を更新する形で、数字を上書きする。
number = 0
number_second = 0

メソッドの定義

四則演算をするためのメソッドを定義します。メソッドとは、一種の便利ボックスで、そのボックスに値を入れたら、求めている結果が返ってきます。自動販売機をイメージするとわかると思うんですが、僕たち、普段は自販にお金を入れて飲み物を買っていますが、お金を入れたから飲み物が出てくるまでの仕組みを知っているわけではないですよね。それと同じで、値を入れたら求めているものが出てくる箱がメソッドです。

calc.rb
# メソッドの定義
def add(f, s)
    puts f + s
end

def subtract(f, s)
    puts f - s
end

def multiply(f, s)
    puts f * s
end

def division(f, s)
    puts f / s
end

def modulo(f, s)
    puts f % s
end

最初の文字を入力

最初の文字を入力する処理をするためのコードを書きます。例外として、数字以外が入力された場合を省いています。

calc.rb
# 最初の数字を入力
print "Hello, Let's cariculate! Please enter a first number:"

loop do
    # ユーザーは文字(string)か数字(integer)を入力する。
    number = gets.chomp
    # ---
    # [前提知識]
    # 1.文字列にto_iをつけると全て0になる。
    # => numberをintegerに変更したときに、0にならない場合はbreak(次の数字が打てるようになる)。
    # 0になる場合はそれが文字列ということになるのでerror発生。
    # 2.上記条件のみだと、直接0が入力されたときにbreakできない。
    # => 0だけ例外的にbreakする処理をかく。例外的に入力した文字をstring変換した時に、
    # 結果が"0"の場合にはbreakするようにする。
    # ---

    # to_sはデフォルトだからつけなくても良い。||は「または」(&&は「かつ」)。
    if number.to_i != 0 || number.to_s == "0"
        #後の過程で計算に使用するため、integer型(又はfloat型)にする必要がある。
        number = number.to_i
        break
    else
        print "Error:Please enter a number:"
    end
end

二番目の数字を入力

一番目の数字を入力するときと全く同じです。

calc.rb
# 二つ目の数字を入力。
print "Please enter a next number:"

loop do
    number_second = gets.chomp
    # 上記と同じプロセス。
    if number_second.to_i != 0 || number_second.to_s == "0"
        number_second = number_second.to_i
        break
    else
        puts "Error:Please enter a number"
    end
end

オペレーターを入力

どのオペレーターで計算をするのかを入力します。

calc.rb
# オペレーター(+・-・*・/・%のどれか)の入力。
print "Please input operator:"

operator = ""
loop do
    operator = gets.chomp
    break if operator == "+" || operator == "-" || operator == "*" || operator == "/" || operator == "%"
    # break if %w(+ - * / %).include?(operator)という書き方も可能。「+,-,*,/,%のいずれかがoperatorに含まれている場合、breakする」という処理
    puts "Invalid operator"
end

処理の実装

オペレーターによって、処理が変わるように実装しています。ここでメソッドを活用しています。

calc.rb
# オペレーターによって処理を変える。case文を使っても良い。
print "The answer is "
if operator == "+"
    add(number, number_second)
elsif operator == "-"
    subtract(number, number_second)
elsif operator == "*"
    multiply(number, number_second)
elsif operator == "/"
    division(number, number_second)
elsif operator == "%"
    modulo(number, number_second)
end

終わりに

Rubyについて習熟するためには、progateをひたすらやるだけではなく、自分で考えて手を動かすことが大事になってくる気がするので、積極的にアウトプットしていきましょう。

6
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4