Tartalomjegyzék

< Kotlin

Kotlin nyelv

Helló világ

prog.kt
fun main() {
    println("Helló Világ!")
}

Fordítás:

kotlinc src/prog.kt -d bin

Futtatás:

java -cp bin ProgKt

JVM fordítás:

kotlinc prog.kt -include-runtime -d prog.jar

Kapunk egy prog.jar fájlt.

Futtatás:

java -jar prog.jar

A kotlin forráskódok kiterjesztése a következők egyike lehet:

Megjegyzés

Egysoros megjegyzés:

// egysoros megjegyzés

Többsoros megjegyzés:

/*
több
soros
megjegyzés
*/

Kivitel

fun main() {
    print("Szám: ")
}
fun main() {
    println("Eredmény: ")
}

Ha a println() számára megadok egy kifejezést, az kiértékelésre kerül.

kiir.kt
fun main() {
    println(5/2)    // 2
    println(5/2.0)  // 2.5
}

Osztás esetén egész osztás történik, ha csak egész számok esetén. Ha szeretnénk a példában található 2, valós számként értelmeztetni, egyszerűen írjuk utána .0 meghatározást.

kiir.kt
fun main() {
    val a = 2;
    println(5 / a)             // 2
    println(5 / a.toDouble())  //2.5
}

Hibakimenet

A kotlin nem tartalmaz kiírató utasítást, amely az alapértelmezett kimenetre ír. De használhatjuk a Java szabványos utasítását:

System.err.println("Hiba")

Típusok

Egész típusok
Típus Bitek Min érték Max érték
Long 64 -9223372036854775808 9223372036854775807
Int 32 -2147483648 2147483647
Short 16 -32768 32767
Byte 8 -128 127
Valós típusok
Típus Bitek Leírás
Double 64 16-17 értékes szám (mint a float a Python nyelven)
Float 32 6-7 értékes szám
Egyéb
Típus Bitek Leírás
Char 16 UTF-16 kód
Boolean 8 true vagy false

Változók

A változókat használat előtt deklarálni kell, vagyis be kell jelenteni. Ezt a var kulcsszóval tehetjük meg.

var szam = 30
var uzenet = "helló"

Csak olvasható változó:

val number = 30
val uzenet = "helló"

A helyes terminológia szerint, ez csak változó, csak olvasható változó. A val kulcsszóval nem deklarálunk állandót, mivel annak értékét nem kell definiálni fordításkor.

Állandó:

const val szam = 2

Típus megahatározása:

var a = 35
var b: Byte = 35;
var c: Int = 45;
var d: Short = 55;

Ha nem adjuk meg a változó típusát, és belefér az Int típusba, akkor Int lesz.

De beállíthatjuk egy szám típusát:

var e = 65.toShort()
var f = 75.toByte()

Formázott kimenet

Használható formátumkarakterek:

Néhány konverziós karakter
%d egész kiíratása
%f valós kiíratása
%c karakter kiíratása
%s karaktersorozat kiíratása
forma.kt
fun main() {
    val szam = 34.12345
    println("Eredmény: %.2f".format(szam))
}

Matematikai függvények

Hatványozás:

println(Math.pow(2.0,3.0))

Pi értéke:

println(Math.PI)

Szinusz:

fun main() {
    var szog = 1.0
    var rad = szog * Math.PI / 180
    println(Math.sin(rad))
}

Bevitel

fun main() {
    print("Szám: ")
    val szam = readLine()!!.toInt()
    println("Szám: "+ szam * 2)
}

Beolvasás másként:

import java.util.Scanner
 
fun main() {
    print("Szám: ")
    val input = Scanner(System.`in`)
    val szam = input.nextInt()
    println("Eredmény: " + szam)
}

Újra:

fun main() {
    print("Szám: ")
    val szam:Int = readLine()!!.toInt()
    println("Dupla: " + szam * 2)
}

Szelekció

if

fun main() {
    val szam = 30
    if(szam > 0) {
        println("A szám pozitív")
    }
}

Ellenben:

fun main() {
    val szam = -30
    if(szam > 0) {
        println("A szám pozitív")
    }else {
        println("A szám nulla vagy negatív")
    }
}

Több ágú szelekció:

fun main() {
    val szam = -30
    if(szam > 0) {
        println("A szám pozitív")
    }else if(szam < 0) {
        println("A szám negatív")
    }else {
        println("A szám nulla")
    }
}

when

szelekcio.kt
fun main() {
    print("Szám: ")
    var szam = readLine()!!.toInt()
    when(szam) {
        1 -> println("egy")
        2 -> println("kettő")
        3 -> println("három")
        4 -> println("négy")
        else -> {
            println("Nem 1..4 közötti szám")
        }
    }
}
szelekcio.kt
fun main() {
    print("Szám: ")
    var szam = readLine()!!.toInt()
    when(szam) {
        1, 2 -> println("egy vagy kettő")
        else -> {
            println("Valami más")
        }
    }
}
szelekcio.kt
fun main() {
    print("Szám: ")
    var szam = readLine()!!.toInt()
 
    var szamok = (10..20).toList()
    when(szam) {
        in 1..10 -> println("1 és 10 között")
        in szamok -> println("10 és 20 között")
        else -> {
            println("Valami más")
        }
    }
}
szelekcio.kt
fun main() {
    print("Szám: ")
    var szam = readLine()!!.toInt()
 
    var szamok = (10..20).toList()
    when(szam) {
        in 1..10 -> println("1 és 10 között")
        in szamok -> println("10 és 20 között")
        !in 20..30 -> println("nem 20 és 30 közötti szám")
        else -> {
            println("Valami más")
        }
    }
}

Ciklus

for

fun main() {
    for(i in 0..9) {
        println("Helló Világ!")
    }
}

A 10 kizárása:

fun main() {
    for(i in 0 until 10) {
        println(i)
    }
}

Léptetés 2-vel:

fun main() {
    for(i in 0 until 10 step 2) {
        println(i)
    }
}

Csökkentés:

fun main() {
    for(i in 10 downTo 0 step 2) {
        println(i)
    }
}

while

ciklus.kt
fun main() {
    var szam = 0
    while(szam<10) {
        println("Valami")
        szam++
    }
}

do..while

ciklus.kt
fun main() {
    var szam = 0
    do {
        println("Valami")
        szam++
    }while(szam<10);
}

Lista

fun main() {
    var szamok = (0..9).toList()
    println(szamok[2])
}
val nevek = listOf("Kati", "Mari", "Dani")
for (nev in nevek) {
    println(nev)
}

Karakterek

val ch = 'a' // karakter
val uzenet = "alma" // karaktersorozat
val elso = uzenet[0] // karakter

Konkatenálás

fun main() {
    val vnev = "Nagy"
    val knev = "János"
    val nev = "$vnev $knev"
    println(nev)
}

Kifejezés kiértékelése

fun main() {
    val szuletesEv = 1985
    val jelenEv = 2020    
    println("Életkor: ${jelenEv - szuletesEv}")
}

Fájlkezelés

File("adat.txt").writeText("alma")
import java.io.File
 
fun main() {
    File("adat.txt").writeText("alma\nkörte\nbarack")
    File("adat.txt").forEachLine { println(it) }
}

Függvények

eljaras.kt
fun main() {
    nevjegy()
}
 
fun nevjegy() {
    println("Nagy János")
    println("Szolnok")
    println("Kék utca 32.")
}
fuggveny.kt
fun dupla(szam: Int): Int {
    return szam * 2
}