サンプルで学ぶ!Kotlin速習ツアー(前編)

Kotlin

こんにちは、ECF Techブログ
担当 Michiharu.Tです。

今回はAndroidアプリ開発にも使用されているプログラミング言語、Kotlinを速習してみたいと思います。

対象読者

本記事は次のような読者を想定しています。文法などについて丁寧な説明は割愛していますので、ご了承ください。

  • 何らかのプログラミング言語の学習経験がある方
  • Kotlinの使い方を2時間くらいでさくっと一通り使ってみたい。という方

今すぐ始める

PlayGround

今すぐKotlinを動かしたい方は、Webブラウザ上で動作できる「Kotlin PlayGround」の利用がオススメです。

使い方はざっと下のとおりとなります。

①プログラムを書きます。
②実行します。
③実行結果を確認します。

Hello World

まずは、標準出力に「Hello Wold」と表示するプログラムです。
サンプル01

fun main() {
    println("Hello World")
}

実行結果

Hello World

ポイント

  • Kotlinのプログラムはmain関数から始まります。

変数と演算

変数の利用

サンプル02

fun main() {
    //Int(整数)型の変数iを宣言、5を代入
    val i: Int = 5;
    //String(文字列)型の変数sを宣言、「Hello」を代入
    val s: String = "Hello";
    //iを表示
    println(i)
    //sを表示
    println(s)
}

実行結果

5
Hello

型推論

サンプル03

fun main() {
    //型を記述しない変数宣言
    val num = 5             //Intと判断
    val str = "こんにちは"    //Stringと判断

    println( num )
    println( str )
    //文字列の文字数を表示できるString型
    //ならではの表記を使用
    println( str.length )
}

実行結果

5
こんにちは
5

値の埋め込み

サンプル04

fun main() {
    val name: String = "タロウ"
    val age: Int = 20

    println("私の名前は${name}です。年齢は${age}です")
}

実行結果

私の名前はタロウです。年齢は20です

比較演算子

サンプル05

fun main() {
    val a: Int = 12
    val b: Int = 3
    println(a+b)    //加算
    println(a-b)    //減算
    println(a*b)    //乗算
    println(a/b)    //除算
    println(a%b)    //剰余
}

実行結果

15
9
36
4
0

サンプル06

fun main() {
    val a: Int = 12
    val b: Int = 3
    //aは12と等しい
    println(a == 12)
    //aは12ではない
    println(a != 12)
    //bは3以上である
    println(b >= 3)
    //bは3以下である
    println(b <= 3)
    //bは3より大きい
    println(b > 3)
    //bは3より小さい
    println(b < 3)
    //「Hello」と「Hello」は同じ文字列である
    println("Hello" == "Hello")
    //「Hello」と「Hello」は異なる文字列である
    println("Hello" != "Hello")
}

実行結果

true
false
true
true
false
false
true
false

制御構文

if文

サンプル07

fun main() {
    val a: Int = 10
    if (a > 10) {   //aが10より大きければ
        println("aは10より大きい")
    } else {        //そうでなければ
        println("aは10より小さい")
    }
}

実行結果

aは10より小さい

サンプル08

fun main() {
    val a: Int = 10
    //ifを式として扱われている
    val str: String =
            if (a > 10) "aは10より大きい"
            else "aは10より小さい"

    println(str)
}

実行結果

aは10より小さい

when式

サンプル09

fun main() {
    val a: Int = 3

    //aの値に応じて、unseiに値が代入される
    val unsei = when(a){
        1 -> "大吉"
        2 -> "中吉"
        3 -> "小吉"
        else -> "凶"
    }
    println(unsei)
}

実行結果

小吉

while文

サンプル10

fun main() {
    var i:Int = 0
    while( i <5 ){
        println("i = ${i}")
        i++
    }
}

実行結果

i = 0
i = 1
i = 2
i = 3
i = 4

for文

サンプル11

fun main() {
    //1~10までを連続表示
    for( i in 1..10 ){
        println("i=${i}")
    }
}

実行結果

i=1
i=2
i=3
i=4
i=5
i=6
i=7
i=8
i=9
i=10

サンプル12

fun main() {
    //1~10までを1つ飛ばしで表示
    for( i in 1..10 step 2){
        println("i=${i}")
    }
}

実行結果

i=1
i=3
i=5
i=7
i=9

関数

関数の基本

サンプル13

//「Hello」を表示する関数
fun sayHello(): Unit {
    println("Hello")
}

//2値の足し算をして、値を返す関数
fun tasizan(x: Int, y: Int): Int {
    return x + y
}

fun main() {
    for( i in 1..3 ) sayHello()
    val ans = tasizan(5,9)
    println(ans)
}

実行結果

Hello
Hello
Hello
14

関数の色々な書き方

サンプル14

//引数の値を2倍して返す関数
fun bai(x: Int) = x * 2

//2値のうち、大きい方を返す関数
fun max(x: Int, y:Int) =
        if( x > y ) x
        else y

//価格と税率を引数としてとり、税込価格を戻り値として返す
//引数を指定しない場合、デフォルト10%として計算
fun calcTax( payment: Int, tax: Double = 0.1 ) = (payment * (1+tax)).toInt()

fun main() {
    println(bai(6))
    println(max(10,5))
    //第2引数を指定していないので、デフォルトの0.1が適用
    println(calcTax(1000))
}

実行結果

12
10
1100

関数を引数とする

サンプル15

fun main() {
    //関数型の変数を定義し、2値の加算関数を代入
    var ope2Int: (Int, Int) -> Int =
            fun(x: Int, y: Int) = x + y
    //関数型の変数を使って、関数を実行
    val ret = ope2Int(12, 3)
    println(ret)

    //関数型の変数を定義し、2値の減算関数を代入
    ope2Int = fun(x: Int, y: Int) = x - y
    //関数型の変数を使って、関数を実行
    val ret2 = ope2Int(12, 3)
    println(ret2)
}

実行結果

15
9

ラムダ式

サンプル16

fun main() {
    //引数を1つとり、値を5倍する関数をopeに代入
    var ope: (Int) -> Int = { x:Int -> x * 5}
    println( ope(8) )

    //引数の2乗を返す関数をopeに代入
    //引数が1つの場合は、itを引数名の代わりに代用可能
    ope = { it * it }
    println( ope(8) )
}

実行結果

40
64

オブジェクト

サンプル17

fun main() {
    var student = object{
        //フィールド(属性)
        val name: String = "タロウ"
        val age: Int = 10

        //メソッド(動作)
        fun introduce(){
            println("私は${name}です。${age}歳です")
        }
    }

    //studentオブジェクトのintroduceを呼び出し
    student.introduce()
}

実行結果

私はタロウです。10歳です

おわりに

本日は以上とさせていただきます。最後までご覧くださりありがとうございます。次回はオブジェクト指向プログラミングに関連する文法などをひととおりご紹介したいと思います。引き続き、よろしくお願いいたします。


合同会社イー・シー・エフでは、子ども向けプログラミングなどの教育講座を実施しています。プログラミング教室の案内や教育教材の情報、また関連するご相談・問い合わせにつきましては下記よりご確認ください。

ECFエデュケーション
タイトルとURLをコピーしました