Чтобы быстро начать программировать на языке, достаточно знать несколько основных конструкций и общих правил написания кода. Со временем вы освоите все нюансы, а на старте можно использовать что-то попроще.
Если вы не знаете, зачем нужен Kotlin и что на нём программируют, почитайте нашу статью про Kotlin. А если знаете — вот вам краткий справочник по основам языка.
Оператор множественного выбора when
👉 В Kotlin будет много конструкций, похожих на Java. Это нормально, потому что Kotlin работает тоже поверх виртуальной машины JVM, как и Java.
Точка с запятой в Котлине не нужна.
Комментарии
Всё как обычно — есть однострочные и многострочные комментарии:
// Это однострочный комментарий
// Для каждой строки нужно добавлять его отдельно
/* А это — многострочный
его можно сделать любой длины,
если в начале и в конце поставить нужные символы */
Многие программисты ругают Kotlin за то, что ключевые слова для переменной и константы отличаются всего на одну букву:
val — объявляет константу
var — объявляет переменную
Из-за этого легко ошибиться и сделать константу вместо переменной и наоборот.
val a: Int = 1 // можно сразу указать тип константы
val b = 1 // а можно не указывать, тогда тип назначится автоматически
val c: Int // когда константа сразу не получает значение, нужно обязательно указать её тип
c = 1 // этот тип будет использоваться при объявлении константы
var x = 5 // здесь тип тоже назначается автоматически
var y: Int // указываем вручную, что у нас переменная целочисленного типа
Ввод и вывод
Чтобы ввести что-то с клавиатуры, нам нужна переменная, где будет храниться результат ввода и команда readLine(). Эта команда ждёт, когда пользователь введёт любые данные и нажмёт Enter. После этого всё, что ввёл пользователь, отправляется в ту переменную.
Для вывода используются команды print() и println() — первая оставляет курсор на той же строке, а вторая после вывода переводит курсор на новую строку.
Чтобы вывести значение переменной в команде вывода, перед переменной ставят знак доллара:
var s // переменная, куда мы отправим результат ввода
print("Напишите что-нибудь: ") // выводим фразу и оставляем курсор на той же строке
s = readLine() // читаем данные с клавиатуры
println("Вот что вы только что ввели: $s") // выводим нашу фразу и значение переменной
Присваивание и сравнение
Всё так же, как в Java, но без точек с запятой:
// это присваивание
x = 10
// а это — сравнение x и 10
// результат сравнения отправляется в переменную b
var bol: Boolean
b = (x == 10)
Условный оператор if
Работает как обычно: сначала проверяется условие, и если оно истинно — выполняется код, который идёт после условия. Если результат проверки ложный — выполняется код, написанный после else, или не выполняется ничего, если такого блока в условии нет. Условие пишется в скобках, фигурные скобки можно не писать, если нужно выполнить только одну команду.
if (a > b) // проверяем условие
s = a + 10 // одна команда, поэтому можно без фигурных скобок
else { // если условие ложно, то делаем то, что написано в этом блоке
s = a - 10 // раз больше одной команды, то ставим фигурные скобки
b = b - 5
}
Оператор множественного выбора when
Аналог классического Case или Switch из других языков программирования. Команда смотрит на значение переменной, которое к ней поступило, и сравнивает это значение со своим списком вариантов. Если есть совпадение — выполняется нужная команда.
var answer = readline() // получаем ответ от пользователя
when(answer){ // проверяем ответ по списку
"Да" -> println("Правильный ответ")
"Нет" -> {
println("Неправильный ответ")
count -= 1
}
"Не знаю" -> count -= 2
else -> println("Ответ не распознан, повторите снова")
}
Циклы
Проще всего работать с циклом for: достаточно указать имя переменной цикла и диапазон, в котором она будет меняться:
for (i in 1..6) {
print("$i ")
}
При желании можно указать шаг цикла внутри диапазона (по умолчанию он равен единице):
for (i in 1..6 step 2) {
print("$i ") // на экране появятся числа 1, 3 и 5
}
Циклы с предусловием и с постусловием выглядят и работают как в обычном Java:
sum = 1
do { // начало цикла
sum = sum + (sum + 1) // тело цикла
} while (sum < 1) // проверка условия
// и то же самое с циклом while
sum = 1
while (sum < 1) { // проверка условия
sum = sum + (sum + 1) // тело цикла
}
Функции
У функций в Kotlin полная свобода:
- можно возвращать значение, а можно и не возвращать;
- функции могут иметь свой тип, а могут и не иметь;
- функции могут работать как переменные;
- функции можно перегружать почти как операторы в C++.
👉 А ещё в Kotlin, как и в Java, каждая программа состоит из функций и каждая команда должна быть внутри какой-то функции. Основная функция программы называется main.
Самое простое объявление и использование функций в Kotlin выглядит так:
fun printHello() { //объявляем новую функцию
println("Привет, это журнал Код!") // выводим приветствие
}
fun main() { // основная функция в каждой программе
printHello() // Вызываем нашу новую функцию
}
Классы
Классы в Котлине поддерживают полноценные конструкторы и инициализации, но для старта достаточно объявить имя класса и его содержимое:
class Client(val name: String, var bonus: Int, val sity: String) { //объявляем класс с тремя свойствами
fun printBonus() { // добавляем функцию внутрь класса
println("У клиента $bonus бонусных баллов")
}
}
Объекты
Как и в большинстве ООП-языков, для создания нового объекта достаточно указать класс, от которого произойдёт объект. После этого с объектом можно работать по всем правилам объектно ориентированного программирования:
class Client(val name: String, var bonus: Int, val sity: String) { //объявляем класс с тремя свойствами
fun printBonus() { // добавляем функцию внутрь класса
println("У клиента $bonus бонусных баллов")
}
}
var ivanov = Client("Сергей Иванов", 500, "Санкт-Петербург") // создаём новый объект с покупателем
println(ivanov.name) // выводим его имя
println(ivanov.sity) // и его город
ivanov.bonus() // используем встроенную в класс функцию, чтобы узнать количество бонусных баллов