Created by AIImproved by people
Riqli · living documents · updated continuously
Where AI knowledge meets human practice.
Share with friends

Kotlin JVM - курс для начинающих
(kotlin java, kotlin jvm, основы kotlin, функции kotlin высшего порядка, лямбды выражения kotlin, нул абильность null safety, data class sealed class, делегирование kotlin by, kotlin стандартная библиотека функции, sequence vs collection kotlin, inline noinline crossinline, generics in out where kotlin)
Бинарные операции в Kotlin
В этом разделе мы изучим основы бинарных операций, которые являются фундаментом для выполнения вычислений в программировании.
Бинарная операция — это математическая операция, принимающая два аргумента и возвращающая один результат. В Kotlin к ним относятся мультипликативные (*, /, %) и аддитивные (+, -) операции.
Условный оператор when
Раздел посвящен мощному инструменту Kotlin для обработки множества условий — оператору when, который часто используется как альтернатива каскадам if-else.
Оператор when в Kotlin используется для выбора одного из нескольких вариантов выполнения кода. Он работает как switch в Java, но гораздо мощнее, т.к. может использоваться с любыми типами и диапазонами.
Функции и модульность кода
Изучаем, как создавать и использовать функции для структурирования программ и избежания дублирования кода.
Функция — это именованный блок кода, который выполняет определенную задачу. Ключевое слово для объявления функции — fun. Правильное разделение программы на функции повышает ее читаемость и упрощает тестирование.
Безопасная работа с данными и исключения
В этом разделе мы рассмотрим лучшие практики для средств ввода данных в Kotlin, позволяющие избежать распространенных ошибок, таких как ввод некорректных данных.
Плохой подход: использовать команду readln() внутри других команд, например println("Привет, ${readln()}!"). Это делает код неочевидным и затрудняет его понимание. Правильный подход: всегда сохранять результат readln() в переменную.
Сборка проектов и командная разработка
Изучаем, как организовать код в нескольких файлах и использовать переменные с глобальной областью видимости.
Программу можно разбить на несколько исходных файлов. Переменные, объявленные на внешнем уровне (вне блоков), имеют глобальное время жизни и видны в этом файле. Локальные переменные живут только внутри своего блока и называются локальными.
Практическое применение массивов
Разберем реальные кейсы использования массивов для хранения и обработки данных, а также научимся применять условный оператор if для анализа данных в массивах.
Массивы идеально подходят для хранения однотипных данных. Используя цикл for и условные операторы, можно легко обрабатывать большие объемы информации, например, фильтровать данные по определенному критерию.
Цикл for и обработка данных
В практических задачах цикл for используется для перебора известного количества элементов, например, для суммирования километража или подсчета количества записей.
Условный оператор when и множественные проверки
Оператор when в Kotlin мощнее традиционного switch, позволяя проверять вхождения в диапазоны, списки и даже выполнять сложные логические условия.
Функции: параметры и возвращаемые значения
Функции декомпозируют код. Параметры со значениями по умолчанию делают вызовы гибкими, а правильное указание типа возвращаемого значения критично для компиляции.
Массивы и итерация по индексам
Свойство `indices` в Kotlin возвращает диапазон допустимых индексов массива. Это позволяет безопасно итерироваться по элементам, зная их позицию.
Исключения и безопасный ввод данных
Ошибка ReadAfterEOFException возникает, когда программа вызывает `readln()` чаще, чем количество переданных строк ввода, пытаясь прочитать данные после конца файла.
Область видимости (Scope) и время жизни переменных
Переменные, объявленные внутри цикла или функции, имеют локальную область видимости. Они существуют только во время выполнения этого блока кода.
Работа с многомерными массивами
Многомерные массивы в Kotlin — это массивы, элементами которых являются другие массивы. Они удобны для хранения табличных данных.
Использование цикла for для обработки последовательностей
Цикл for в Kotlin идеально подходит для ситуаций, когда заранее известно количество итераций. Например, для опроса группы пользователей или суммирования показателей массива данных.
Сортировка массива и проверка условий
Для сортировки массивов в Kotlin используется алгоритм «пузырька» или встроенные функции. Сортировка по убыванию часто требует изменения знака сравнения в условном операторе if.
Работа с командами split и substringAfter
Методы split() и substringAfter() используются для парсинга строк с разделителями. `split()` возвращает массив, а `substringAfter()` — одну подстроку после указанного шаблона.
Работа с range (диапазонами) в циклах
Диапазоны `..`, `until`, `downTo` и `step` позволяют гибко контролировать поведение цикла for, задавая шаг и направление итерации.
Многомерные массивы и обход элементов
Трехмерные массивы можно представить как «куб» данных. Обход таких структур требует вложенных циклов: первый цикл — по высоте (строки), второй — по ширине (столбцы), третий — по глубине.
Переполнение типов и выбор типа данных
При умножении больших чисел результат может не поместиться в тип Int, вызывая переполнение. В таких случаях необходимо использовать тип Long.
Безопасная работа с исключениями (NumberFormatException)
Методы преобразования строк в числа, такие как `toInt()`, выбрасывают исключение NumberFormatException, если строка не является корректным числом.
Декомпозиция кода с помощью функций в проектах
Разбиение программы на функции (например, `printMainMenu`, `readItemMenu`) улучшает читаемость и позволяет переиспользовать код. Главное меню часто выводится из функции main.
Использование while (true) для бесконечных циклов
Конструкция `while (true)` создает бесконечный цикл. Чтобы выйти из него, внутри тела цикла используется условный оператор с ключевым словом break.
Функции: параметры по умолчанию и именованные аргументы
Необязательные параметры (параметры со значениями по умолчанию) позволяют опускать аргументы при вызове функции. Если аргумент не передан, используется значение, указанное в объявлении функции.
Именованные аргументы позволяют явно указывать имя параметра при вызове функции. Это улучшает читаемость кода и делает его менее зависимым от порядка аргументов.
Область видимости и время жизни переменных
Время жизни переменной — это интервал выполнения программы, в течение которого переменная существует. Оно может быть локальным или глобальным.