Рабочий стол > DL Руководство пользователя > ... > Programming Languages > Kotlin > Просмотр
Kotlin Войти | Зарегистрироваться   Просмотр версии для печати текущей страницы.

Добавлено Вадим Копиченко, последний раз изменено Вадим Копиченко Jun 04, 2019  (просмотр изменений)
Метки: 
(нет)

Kotlin

Kotlin - это универсальный язык программирования, созданный JetBrains в качестве альтернативы Java с намного более удобным синтаксисом, но выполняющийся на JVM и полностью совместимый с существующей экосистемой Java.

Поддержка языка уже доступна из коробки в ItelliJ IDEA от JetBrains и Android Studio от Google. Поэтому перспективы внушительные. См. про это в блоге: Kotlin 1.0 Released: Pragmatic Language for JVM and Android.
Kotlin уже стал официальным и предпочтительным языком для Android и официальным языком соревнований ACM ICPC.

Официальная справка по языку (по-русски)
Краткое описание по русски
Хабрахабр: Почему следует полностью переходить на Kotlin (список фич)

Бесплатные курсы по Kotlin на Stepik
https://www.coursera.org/learn/vvedenie-v-yazyk-kotlin
Серия видеоуроков по Kotlin по-русски (playlist)
Вводные видео
Видео: Что такое Kotlin? Введение
Algorithms and data structures in Kotlin
Kotlin Academy
https://superkotlin.com/kotlin-mega-tutorial/

На сайте http://try.kotlinlang.org/ есть набор ознакомительных задач и можно запускать решения на Kotlin прямо в браузере.
Habr: Андрей Бреслав и Дмитрий Жемеров о Kotlin 1.0 (внутри много ссылок).
Большой набор набор ссылок по продвинутому использованию Kotlin: http://kotlin.link/.
https://developer.android.com/kotlin/resources.html

Вот отчёт о первом Kotlin Challenge с Геной и примером решения: https://habrahabr.ru/company/JetBrains/blog/222693/.
Больше идеоматических примеров решения задач можно найти в Codeforces Surprise Language Round #8 и http://rosettacode.org/wiki/Category:Kotlin.

Как писать в файл.
Примеры обращения с коллекциями.
Функциональное программирование на Kotlin.
Kotlin Coding Conventions.

Ещё тренироваться в решении задач на Kotlin можно на http://codeforces.com, https://www.hackerrank.com, https://www.codechef.com, https://codingame.com, Advent of Code и в курсе Программирование \ Программирование на Java на DL.

Для корректного тестирования на DL в тексте решения на Kotlin должна быть определена функция верхнего уровня main:

fun main() {
  println("Hello world!")
}

Примеры A+B

fun main() {
  val (a, b) = readLine()!!.split(' ')
  println(a.toInt() + b.toInt())
}

или

fun main() {
  val (a, b) = readLine()!!.split(' ').map { it.toInt() }
  println(a + b)
}

или (из https://kotlinlang.org/docs/tutorials/competitive-programming.html)

fun readLn() = readLine()!!                       // string line
fun readInt() = readLn().toInt()                  // single int
fun readStrings() = readLn().split(" ")           // list of strings
fun readInts() = readStrings().map { it.toInt() } // list of ints

fun main(vararg args: String) {
  val (a, b) = readInts()
  println(a + b)
}

или

import java.util.Scanner

fun main() {
  val input = Scanner(System.`in`)
  val a = input.nextInt()
  val b = input.nextInt()
  println(a + b)
}

или

import java.util.Scanner

fun main() {
    with(Scanner(System.`in`)) {
        val a = nextInt()
        val b = nextInt()
        println(a + b)
    }
}

Чтение/запись в файл:

fun <T : Closeable, R> T.useWith(block: T.() -> R): R = use { with(it, block) }

    File("a.in").bufferedReader().useWith {
        File("a.out").printWriter().useWith {
            val (a, b) = readLine()!!.split(' ').map(String::toInt)
            println(a + b)
        }
    }

    Scanner(File("b.in")).useWith {
        PrintWriter("b.out").useWith {
            val a = nextInt()
            val b = nextInt()
            println(a + b)
        }
    }
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: http://www.atlassian.com/software/confluence Build:#2.6.1 916) - Ошибка/новая особенность - Свяжитесь с Администраторами