Created by AIImproved by people

Riqli · living documents · updated continuously

Where AI knowledge meets human practice.

Share with friends
image

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)

sections

Бинарные операции в Kotlin

В этом разделе мы изучим основы бинарных операций, которые являются фундаментом для выполнения вычислений в программировании.

contents

Бинарная операция — это математическая операция, принимающая два аргумента и возвращающая один результат. В Kotlin к ним относятся мультипликативные (*, /, %) и аддитивные (+, -) операции.

sections

Условный оператор when

Раздел посвящен мощному инструменту Kotlin для обработки множества условий — оператору when, который часто используется как альтернатива каскадам if-else.

contents

Оператор when в Kotlin используется для выбора одного из нескольких вариантов выполнения кода. Он работает как switch в Java, но гораздо мощнее, т.к. может использоваться с любыми типами и диапазонами.

sections

Функции и модульность кода

Изучаем, как создавать и использовать функции для структурирования программ и избежания дублирования кода.

contents

Функция — это именованный блок кода, который выполняет определенную задачу. Ключевое слово для объявления функции — fun. Правильное разделение программы на функции повышает ее читаемость и упрощает тестирование.

sections

Безопасная работа с данными и исключения

В этом разделе мы рассмотрим лучшие практики для средств ввода данных в Kotlin, позволяющие избежать распространенных ошибок, таких как ввод некорректных данных.

contents

Плохой подход: использовать команду readln() внутри других команд, например println("Привет, ${readln()}!"). Это делает код неочевидным и затрудняет его понимание. Правильный подход: всегда сохранять результат readln() в переменную.

sections

Сборка проектов и командная разработка

Изучаем, как организовать код в нескольких файлах и использовать переменные с глобальной областью видимости.

contents

Программу можно разбить на несколько исходных файлов. Переменные, объявленные на внешнем уровне (вне блоков), имеют глобальное время жизни и видны в этом файле. Локальные переменные живут только внутри своего блока и называются локальными.

sections

Практическое применение массивов

Разберем реальные кейсы использования массивов для хранения и обработки данных, а также научимся применять условный оператор if для анализа данных в массивах.

contents

Массивы идеально подходят для хранения однотипных данных. Используя цикл for и условные операторы, можно легко обрабатывать большие объемы информации, например, фильтровать данные по определенному критерию.

sections

Цикл for и обработка данных

contents

В практических задачах цикл for используется для перебора известного количества элементов, например, для суммирования километража или подсчета количества записей.

sections

Условный оператор when и множественные проверки

contents

Оператор when в Kotlin мощнее традиционного switch, позволяя проверять вхождения в диапазоны, списки и даже выполнять сложные логические условия.

sections

Функции: параметры и возвращаемые значения

contents

Функции декомпозируют код. Параметры со значениями по умолчанию делают вызовы гибкими, а правильное указание типа возвращаемого значения критично для компиляции.

sections

Массивы и итерация по индексам

contents

Свойство `indices` в Kotlin возвращает диапазон допустимых индексов массива. Это позволяет безопасно итерироваться по элементам, зная их позицию.

sections

Исключения и безопасный ввод данных

contents

Ошибка ReadAfterEOFException возникает, когда программа вызывает `readln()` чаще, чем количество переданных строк ввода, пытаясь прочитать данные после конца файла.

sections

Область видимости (Scope) и время жизни переменных

contents

Переменные, объявленные внутри цикла или функции, имеют локальную область видимости. Они существуют только во время выполнения этого блока кода.

sections

Работа с многомерными массивами

contents

Многомерные массивы в Kotlin — это массивы, элементами которых являются другие массивы. Они удобны для хранения табличных данных.

sections

Использование цикла for для обработки последовательностей

contents

Цикл for в Kotlin идеально подходит для ситуаций, когда заранее известно количество итераций. Например, для опроса группы пользователей или суммирования показателей массива данных.

sections

Сортировка массива и проверка условий

contents

Для сортировки массивов в Kotlin используется алгоритм «пузырька» или встроенные функции. Сортировка по убыванию часто требует изменения знака сравнения в условном операторе if.

sections

Работа с командами split и substringAfter

contents

Методы split() и substringAfter() используются для парсинга строк с разделителями. `split()` возвращает массив, а `substringAfter()` — одну подстроку после указанного шаблона.

sections

Работа с range (диапазонами) в циклах

contents

Диапазоны `..`, `until`, `downTo` и `step` позволяют гибко контролировать поведение цикла for, задавая шаг и направление итерации.

sections

Многомерные массивы и обход элементов

contents

Трехмерные массивы можно представить как «куб» данных. Обход таких структур требует вложенных циклов: первый цикл — по высоте (строки), второй — по ширине (столбцы), третий — по глубине.

sections

Переполнение типов и выбор типа данных

contents

При умножении больших чисел результат может не поместиться в тип Int, вызывая переполнение. В таких случаях необходимо использовать тип Long.

sections

Безопасная работа с исключениями (NumberFormatException)

contents

Методы преобразования строк в числа, такие как `toInt()`, выбрасывают исключение NumberFormatException, если строка не является корректным числом.

sections

Декомпозиция кода с помощью функций в проектах

contents

Разбиение программы на функции (например, `printMainMenu`, `readItemMenu`) улучшает читаемость и позволяет переиспользовать код. Главное меню часто выводится из функции main.

sections

Использование while (true) для бесконечных циклов

contents

Конструкция `while (true)` создает бесконечный цикл. Чтобы выйти из него, внутри тела цикла используется условный оператор с ключевым словом break.

sections

Функции: параметры по умолчанию и именованные аргументы

contents

Необязательные параметры (параметры со значениями по умолчанию) позволяют опускать аргументы при вызове функции. Если аргумент не передан, используется значение, указанное в объявлении функции.

contents

Именованные аргументы позволяют явно указывать имя параметра при вызове функции. Это улучшает читаемость кода и делает его менее зависимым от порядка аргументов.

sections

Область видимости и время жизни переменных

contents

Время жизни переменной — это интервал выполнения программы, в течение которого переменная существует. Оно может быть локальным или глобальным.

sections

Практика: функции в проектах