こんにちは、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エデュケーション