5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

木更津高専Advent Calendar 2022

Day 8

C言語とKotlinを比較してKotlin Loverになろう

Last updated at Posted at 2022-12-07

はじめに

木更津高専情報工学科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")
}

printfprintln似てますね!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 名前:XXX2で変数が使えるようになります。右側に何か書いてあげないと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のことについて知りたい・・・?

  1. KotlinってAndroidアプリの開発言語で有名だと思ったんだけどなぁ・・・あれか?みんなFlutterに行ったのか?

  2. どうつよつよになったかは別記事で~ 2

  3. https://kotlinlang.org/lp/mobile/

  4. 深い意味はない

5
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?