К списку заданий

дз ко второй лекции по всем темам

Дедлайн 23.10.2025 в 20:59

сдавать дз можно любым удобным способом (ссылки на гит, текст, либо файл если сделают уже к этому времени функцию)

Часть 1: Функции, Функциональный Тип и Функции Высшего Порядка

Задача: Работа со списком чисел

1. Объявите функциональный тип NumberTransformer, который представляет функцию, принимающую Int и возвращающую Int.

2. Создайте функцию высшего порядка processNumbers, которая принимает:

- Список чисел

- Функцию-трансформер типа NumberTransformer

- Возвращает новый список с преобразованными числами

3. Создайте несколько лямбд:

- square - возводит число в квадрат

- increment - увеличивает число на 1

- double - удваивает число

val numbers = listOf(1, 2, 3, 4, 5)

val squared = processNumbers(numbers, square)

Часть 2: Null Safety и Scope-функции

Задача 1: Безопасная обработка пользовательского ввода

1. Напишите функцию safeStringProcessor, которая принимает nullable строку

2. Используйте let для обработки только non-null значений

3. Внутри let используйте also для логирования исходной строки

4. Используйте run для преобразования строки (на ваш вкус)

fun safeStringProcessor(input: String?): String {

}

Задача 2: Обработка данных пользователя

val userAge: String? = "25"

val userName: String? = " Анна "

val userCity: String? = null

Задание: обработайте каждое значение с помощью подходящих scope-функций

и соберите информацию в строку формата "Имя: Анна, Возраст: 25, Город: Не указан"

используйте форматирование строки через $ для вывода

Часть 3: Функции-расширения

Задача 1: Расширения для String

1. Добавьте функции-расширения для String:

- isValidEmail() - проверяет, содержит ли строка @ и точку после нее

- getInitials() - возвращает инициалы (первые буквы каждого слова)

- removeSpaces() - удаляет все пробелы из строки

fun String.isValidEmail(): Boolean {

}

Задача 2: Расширения для List

**Добавьте функции-расширения для списка интов

- average() - вычисляет среднее значение

- getEvenNumbers() - возвращает только четные числа

- sumIf() - принимает условие (лямбду) и суммирует только те числа, которые ему удовлетворяют

Часть 4: Обработка исключений

Задача:

1. Напишите функцию safeParseInt которая принимает строку и возвращает число

2. Используйте try-catch для обработки NumberFormatException

3. При ошибке возвращайте значение по умолчанию (например, -1)

kotlin

fun safeParseInt(str: String): Int {

}

Часть 5: Практическая интеграция (map, also, let, run)

Задача: Обработка списка сотрудников

val employees = listOf(

"Иван Иванов - 28 лет - 50000",

"Мария Петрова - 32 года - 60000",

"Алексей Сидоров - null - 55000",

" Елена Козлова - 29 лет - 62000 "

)

Задание: Напишите функцию processEmployeeData, которая:

1. Использует map для преобразования каждого элемента

2. Для каждой строки использует let/run для обработки

3. Использует also для логирования этапов

4. Возвращает список в формате: "И. Иванов (28 лет) - 50000р"

fun processEmployee(employees: List<String>): List<String> {

return employees.map { employee ->

employee.also {

println("Обрабатываем: $it")

}.let { emp ->

}

}

}

Поступи на курс, чтобы сдавать задания на проверку преподавателям