はじめに
木更津高専情報工学科1年のなおちきです。(KotlinKotlinうるさい人です。)
Kotlinの知名度が弊学科1年では低すぎる1のでKotlinを広めるべくこんな記事を書いてます。
対象読者
Kotlinをやっていない人(特にC言語を学んでいる弊学科1年生,C言語が初めてのプログラミング言語な人)
そもそもKotlin(ことりん)って?
最新で簡潔で安全なプログラミング言語
だそうです。
マイクラのModとかで聞いたことがある人もいるかも知れませんが、Javaという世界中で広~~~~く使われている言語があるんです。それを改良してつよつよ2にしたのがKotlinです!!!
Androidアプリを作るときの標準言語でもあります(iOSアプリも作れるよ!3)
ちなみにWebサイトもほとんどKotlinで完結できます。
基本構文
少しでも「良さそう」とか思ったらKotlinの環境構築をやりましょう!!!
↑ここから手軽にKotlinを試せるので是非一緒に使ってください。
C言語と比較しながら見ていきましょう!
基本的にC言語とKotlinの実行結果は同じになるよう書いてます。
普通に文字を出力
C言語
#include <stdio.h>
int main(){
printf("Hello, world\n");
}
Kotlin
fun main(){
println("Hello, world")
}
printf
とprintln
似てますね!Kotlinのprintln
は改行(\n
)が勝手に入っています。もちろん改行無しのprint
もありますよ^-^)v
変数
C言語
#include <stdio.h>
int main(){
int prime = 53;
printf("素数は %d",prime);
}
Kotlin
fun main(){
var prime:Int = 53
println("素数は $prime")
}
Kotlinではvar 名前:XXX
2で変数が使えるようになります。右側に何か書いてあげないとKotlinではエラーになってしまうので、0でもなんでも入れておきましょう。
printlnの中の$prime
は変数primeの中身を入れるという意味です。直感的ですね!!
入力を受け取る
C言語
#include <stdio.h>
int main(){
int a,b;
printf("足し算するぜ\n");
scanf("%d %d",&a,&b);
printf("a+b=%d",a+b);
}
Kotlin
fun main(){
println("足し算するぜ")
var (a,b) = readln().split(" ").map { it.toInt() }
println("a+b=${a+b}")
}
Kotlinの方が長くて難しそうですね。僕もこの記事を書いててそう思いました。 なのでなるべく丁寧にやります。
入力される文字を「33 4」4とします。
画面上はこうですね
足し算するぜ
33 4
まずreadln()
が入力を一行まるごと読み取ってくれます。この場合は"33 4"
ですね。
次にsplit(" ")
が文字列をスペースで区切ってくれます。その次にあるmap{}
は区切られたそれぞれの物に対してなにか処理をするというものです。この場合は{it.toInt()}
なので文字列からInt、即ち整数に変換してくれます。
その結果を左辺のa,bにわけて代入します。あとはこれまで通り足し算して結果を出力しています。
"33 4" # readln()
↓ # split(" ")
["33","4"]
↓ # map{it.toInt()}
var (a,b) = [33,4] # 数値になった!!
a は 33
b は 4
for文
C言語
#include<stdio.h>
int main(){
for(int i=0;i<10;i++){
printf("%d 回目のHello!!\n");
}
for(int i=1;i<=10;i++){
printf("%d 回目のやぁ!!!\n");
}
}
Kotlin
fun main(){
for(i in 0 until 10){
println("$i 回目のHello!!")
}
for(i in 1..10){
println("$i 回目のやぁ!!!")
}
}
ここは随分C言語と違いますね。Kotlinには範囲(Range)というものがありまして、n until m
では$n \leqq x < m$を、n..m
では$n \leqq x \leqq m$を表します。(この場合、$x$は整数)
0 \ \textrm{until} \ 10=\{0,1,2,3,4,5,6,7,8,9\}
\\
1..10=\{1,2,3,4,5,6,7,8,9,10\}
i in ~
は変数i
を作って、そこに範囲の中身を順番に入れていくという意味です。
while文は同じなので割愛します。
switch文
C言語
#include<stdio.h>
int main(){
int finger=0;
printf("めざましジャンケン ジャンケンポン\n(グー:0,チョキ:2,パー:5)\n");
scanf("%d",&finger);
printf("俺はパーを出したぞ。");
switch(finger){
case 0:{
printf("YOU LOSE\n");
break;
}
case 2:{
printf("YOU WIN\n");
break;
}
case 5:{
printf("DRAW\n");
break;
}
}
printf("シャンクス、ありがとうございました。\n");
}
Kotlin
fun main(){
println("めざましジャンケン ジャンケンポン\n(グー:0,チョキ:2,パー:5)")
val finger:Int=readln().toInt()
println("俺はパーを出したぞ。")
when(finger){
0->{
println("YOU LOSE")
}
2->{
println("YOU WIN")
}
5->{
println("DRAW")
}
}
println("シャンクス、ありがとうございました。")
}
Kotlinではwhen
を使います!!!~のとき...をするみたいな意味ですたぶん。ほぼswitch
です
関数を定義する
C言語
int superFunc(int n){
return n*10;
}
Kotlin
fun superFunc(n:Int){
return n*10
}
//このように一行でもOK
fun superFunc(n:Int) = n*10
一行の式なら=
で簡略化できます
配列
C言語
#include<stdio.h>
int main(){
const char *languages[] = {"C#","Python","Kotlin","BASIC","JavaScript"};
printf("%s is the best language.",languages[2]);
}
Kotlin
fun main(){
var languages = listOf("C#","Python","Kotlin","BASIC","JavaScript")
println("${languages[2]} is the best language.")
}
listOf()
です覚えましょう!!
おわり
Kotlinやってみたくなりましたか?
早速、環境構築しましょう!!!!
まあ実は先程挙げたようなものは他の言語でも出来たりします。
もっとKotlinのことについて知りたい・・・?