Kotlin超入門コース#14 実践

はじめに

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

実践

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

class Student constructor(name: String) {

  var name = name

  fun calAvg(data: IntArray): Int {
    var sum = 0
    for(score in data) {
        sum += score
    }
    var avg = sum / data.count();
    return avg
  }

  fun judge(avg: Int): String {
    var result:String
    if(avg >= 60) {
      result = "passed"
    } else {
      result = "failed"
    }
    return result
  }
}

まず、Studentというクラスを作ります。
Studentクラスには、生徒の名前を代入する「name」のプロパティを定義します。
1つのメソッドは、5教科の平均点を計算するcalAvgメソッド。

ちなみに、calは計算するという意味のcalculate、avgは、平均のaverageを省略する時にプログラミングでよく使う文字です。
もう1つメソッドは、平均点以上だったら合格という意味の”passed”を表示、平均点以下なら不合格という意味の”failed”を表示させるjudgeメソッドを定義します。
早速、ソースコードをみていきましょう。
クラスを定義していきましょう。
まずclassと書いて、次にクラス名を書きます。
今回はStudentというクラス名なので、Student。
次に、コンストラクタを書きます。
コンストラクタを使うので、引数に文字列型のnameを書きます。
コンストラクタは省略できるので、省略します。

class Student(name: String) {

  var name = name

  fun calAvg(data: IntArray): Int {
    var sum = 0
    for(score in data) {
        sum += score
    }
    var avg = sum / data.count()
    return avg
  }

  fun judge(avg: Int): String {
    var result:String
    if(avg >= 60) {
      result = "passed"
    } else {
      result = "failed"
    }
    return result
  }
}

次に、プロパティを定義していきましょう。
プロパティは、クラスのところに記述します。
佐藤さん、鈴木さん、佐々木さんといったような名前を代入したいので、プロパティはnameとしておきましょう。
次に、5教科の平均点を計算するcalAvgメソッドを定義します。
calAvgメソッドには、5教科の点数が格納されている配列を渡します。
引数名はdataとしましょう。
calAvgメソッド内に、sumという変数を定義をして、0を代入。
レッスン11で説明しましたが、for文のinの後に配列を書くことで、配列の中身が変数に一つずつ格納されます。
配列の要素数を求めるにはcountメソッドを使います。
次に、レッスン09の演算子で説明した、複合代入演算子を使って配列の値を足し上げます。
そして、合計を、配列の要素数で割って平均を算出し、avgという変数に代入します。
算出した値をreturnで返します。
最後に、テスト結果を判定するjudgeメソッドを作ってみましょう。
judgeメソッドに平均点を渡しましょう。引数名はavgとします。
レッスン10の条件分岐で説明した、if文使って、平均点が60点以上ならpassed、それ以外ならfailedが、resultという変数に格納されるようにします。
これもreturnで返します。
これで、judgeメソッドの完成です。
これでクラスの定義は終わりです。

class Student(name: String) {

  var name = name

  fun calAvg(data: IntArray): Int {
    var sum = 0
    for(score in data) {
        sum += score
    }
    var avg = sum / data.count()
    return avg
  }

  fun judge(avg: Int): String {
    var result:String
    if(avg >= 60) {
      result = "passed"
    } else {
      result = "failed"
    }
    return result
  }
}

fun main() {
  var a001 = Student("sato")
  var data = intArrayOf(70, 65, 50, 90, 30)
  var avg = a001.calAvg(data)
  var result = a001.judge(avg)   
  println(data.count())
  println(a001.name)
  println(avg)
  println(result)
}

それでは、クラスをインスタンス化しましょう。
aという学級の出席番号001番の人は、satoさんだとします。
したがって、インスタンス名をa001とします。
引数に「sato」を渡してインスタンス化します。
そして、dataという変数に、配列を代入。配列には、70, 65, 50, 90, 30という5科目の点数を記述します。
calAvgメソッドに配列を渡して平均点を算出します。
returnで平均点が返ってくるので、これをavgという変数に格納します。
そのavgをjudgeメソッドに渡すと、passedかfailedが返ってくるはずです。
printlnで、配列の要素数をもとめるdata.count()、名前のname、平均点のavg、判定結果が代入されているresultを表示させてみましょう。
配列の要素数5、名前のsato、61という平均点、passedが返ってきました。

class Student(name: String) {

  var name = name

  fun calAvg(data: IntArray): Int {
    var sum = 0
    for(score in data) {
        sum += score
    }
    var avg = sum / data.count()
    return avg
  }

  fun judge(avg: Int): String {
    var result:String
    if(avg >= 60) {
      result = "passed"
    } else {
      result = "failed"
    }
    return result
  }
}

fun main() {
  var a001 = Student("sato")
  var data = intArrayOf(70, 65, 50, 10, 30)
  var avg = a001.calAvg(data)
  var result = a001.judge(avg)   
  println(data.count())
  println(a001.name)
  println(avg)
  println(result)
}

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

KinoCode チャンネル

YouTubeで毎日動画配信しています。
動画は3分間なので、
 ・通勤時間
 ・お昼休み
 ・お手すきのとき
 ・寝る前
など手軽に視聴できます。
 
ちょっとしたインプットにどうぞ!
 
▼チャンネル登録はこちらからどうぞ。
【朝活もくもく会】
▼どんなもくもく会?
・平日5:30〜9:30、土日祝5:30〜9:30でやります。平日も休日も休まずやります。
・プログラミングを問わず、受験勉強、資格試験の勉強などなどペースメーカに活用ください。
・自宅で出来る「もくもく会」なので、パジャマのまま参加できます
▼ライブ配信の内容は?
・参加したら今日の目標をコメントをお願いします。
・終了5分前に私の成果報告をします。
・みなさんからも今日の成果についてチャットにて発表お願いできればと思います。