【Ruby超入門コース】14.実践|すべて理解できればRubyの超入門者から卒業です!今日からプログラマーを名乗りましょう!

Ruby超入門コース

この記事の執筆・監修

キノコード
キノコード

テクノロジーアンドデザインカンパニー合同会社のCEO。
日本最大級のプログラミング教育のYouTubeチャンネル「キノコード」や、プログラミング学習サービス「キノクエスト」を運営。
著書「あなたの仕事が一瞬で片付くPythonによる自動化仕事術」や、雑誌「日経ソフトウエア」や「シェルスクリプトマガジン」への寄稿など実績多数。

はじめに

こんにちは。キノコードです。
「Ruby超入門コース#14 実践」について説明します。

実践

どのようなプログラムを書くか説明します。
まず、Studentというクラスを作ります。
Studentクラスには、生徒の名前を代入する「name」のインスタンス変数を定義します。
そして、Studentクラスには2つメソッドを定義します。
1つのメソッドは、5教科の平均点を計算するcal_avgメソッド。
ちなみに、calは計算するという意味のcalculate、Avgは、平均のaverageを省略する時にプログラミングでよく使う文字です。
もう1つメソッドは、平均点以上だったら合格という意味の"passed"を表示、平均点以下なら不合格という意味の"failed"を表示させるjudgeメソッドを定義します。
早速、ソースコードをみていきましょう。

class Student
  def initialize(name)
    @name = name 
  end 

  def cal_avg(data)
    sum = 0
    for score in data do
      sum += score
    end
    avg = sum / data.length
    return avg
  end

  def judge(avg)
    result = ''
    if 60 <= avg
      result = "passed"
    else
      result = "failed"
    end
    return result
  end

  attr_accessor :name

end

a001 = Student.new("sato")
data = [70, 65, 50, 90, 30]
avg = a001.cal_avg(data)
result = a001.judge(avg)
p a001.name
p avg
p result

クラスを定義していきましょう。
まずClassと書いて、次にクラス名を書きます。
今回はStudentというクラス名なので、Student。
次に、インスタンス変数の定義していきましょう。
インスタンス変数は、イニシャライズメソッドのところに記述します。
インスタンス変数はnameとしましょう。
次に、5教科の平均点を計算するcal_avgメソッドを定義します。
cal_avgメソッドには、5教科の点数が格納されている配列を渡します。
引数名はdataとしましょう。
cal_avgメソッド内に、sumという変数を定義をして、0を代入。
レッスン11で説明しましたが、for文のinの後に配列を書くことで、配列の中身が変数に一つずつ格納されます。
それをレッスン09の演算子で説明した、配列の値を複合代入演算子を使って足し上げます。
そして、合計を、配列の要素数で割って平均を算出し、avgという変数に代入します。
配列の要素数を求めるにはlengthメソッドをを使います。
算出した値をreturnで返します。
最後に、テスト結果を判定する judge メソッドを作ってみましょう。
judge メソッドに平均点を渡しましょう。引数名はavgとします。
if文で、その平均点が60点以上ならpassed、それ以外ならfailedが、resultという変数に格納されるようにします。
これもreturnで返します。
これで、 judge メソッドの完成です。
nameのインスタンス変数は、オブジェクトの外からも参照できるように、アクセサの記述をしましょう。
これでクラスの定義は終わりです。
それでは、オブジェクト生成をしましょう。
aという学級の出席番号001番の人は、satoさんだとします。
したがって、オブジェクト名をa001とします。
「sato」を渡してオブジェクト生成をします。
そして、dataという変数に、配列を代入。配列には、70, 65, 50, 90, 30という5科目の点数を記述します。
cal_avgメソッドに配列を渡して平均点を算出します。
returnで平均点が返ってくるので、これをavgという変数に格納します。
そのavgを judge メソッドに渡すと、passedかfailedが返ってくるはずです。
pメソッドで、name、平均点のavg、判定結果が代入されているresultを表示させてみましょう。
実行してみます
名前のsato、61という平均点、passedが返ってきました。

class Student
  def initialize(name)
    @name = name 
  end 

  def cal_avg(data)
    sum = 0
    for score in data do
      sum += score
    end
    avg = sum / data.length
    return avg
  end

  def judge (avg)
    result = ''
    if 60 <= avg
      result = "passed"
    else
      result = "failed"
    end
    return result
  end

  attr_accessor :name

end

a001 = Student.new("sato")
data = [70, 65, 50, 10, 30]
avg = a001.cal_avg(data)
result = a001.judge(avg)
p a001.name
p avg
p result

次に配列の中の90を10に変更してみましょう。
平均が45になるので、failedが表示されるはずです。
実行してみます。
45点と名前とfailedが返ってきました。
これでRubyの超入門コースはおわりです。お疲れ様です。

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト