Функции и пакеты #
Функции #
Презентацию по теме можно посмотреть по ссылке
Видео-запись: Rutube
Пакеты и модификаторы доступа #
Презентацию по теме можно посмотреть по ссылке
Видео-запись: Rutube
Задание № 1: фильтрация коллекции #
Входные данные: последовательность целых чисел. Для формирования изначального списка данных можно воспользоваться инициализацией из исходного кода, без необходимости считывать их из внешних по отношению к приложению источникам.
val numbers = listOf(1, 55, 25, 32, 2, 67, 31, 33, 11, 25, 66, 81, 97, 43, 46, 81)- Найти нечётные числа данной последовательности.
- Найти числа, которые не делятся без остатка на 3.
- Найти числа, которые без остатка делятся на свой порядковый номер.
Поставленные задачи необходимо решить следующими способами:
- С использованием цикла
for. - С использованием функции
forEach. - С использованием функции
filter,filter. - С использованием функции
forEachIndexed. - С использованием функции
filterIndexed.
Задание № 2: преобразование коллекции #
Входные данные: последовательности длин и ширин прямоугольника.
val widths = listOf(
12,
4,
5,
7,
45,
10,
3,
)
val heights = listOf(
1,
6,
15,
32,
32,
12,
9,
10,
)Для данной последовательности длин и ширин вычислите:
- Список периметров данных прямоугольников.
- Список площадей данных прямоугольников.
- Список полупериметров прямоугольников. Для его вычисления используйте свойства высоты и ширины.
- Список диагоналей прямоугольников. Вычисление диагонали должно происходить в рамках обхода списка.
Поставленные задачи необходимо решить следующими способами:
- С использованием цикла
for. - С использованием функции
forEach. - С использованием функции
forEachIndexed. - С использованием функции
map. - С использованием функции
mapIndexed. - С использованием итератора
iterator. - С использованием функции
zip
Задание № 3: вычисление статистических данных о коллекции #
Входные данные: список строк.
val strings = listOf(
"Apple",
"Orange",
"Peach",
"Banana",
"Tangerine",
"Grapefruit",
"Kiwi",
)Для данной последовательности строк вычислите:
- Начинаются ли все строки с заглавной буквы?
- Есть ли среди строк строка длины 5?
- Во всех ли строках встречается 2 гласные буквы?
- Отсутствуют ли в строках русские буквы?
Поставленные задачи необходимо решить следующими способами:
- С использованием цикла
for. - С использованием функции
forEach. - С использованием функции
all. - С использованием функции
any. - С использованием функции
none.
Задание № 4: Разные задачи на коллекции #
Решите следующие задачи. Входные данные для данных задач можно формировать в прямо в исходном коде, без получения от пользователя.
- Определить, сколько раз в последовательности из целых чисел меняется знак, а также номера позиций, в которых происходит смена знака.
- Напечатать те элементы массива, индексы которых являются степенями двойки.
- Уплотнить массив чисел, удалив нули и сдвинув влево остальные элементы.
- Дан массив натуральных чисел. Образовать новый массив, элементами которого будут элементы исходного массива, оканчивающиеся на цифру k.
- Дан массив четырёхзначных натуральных чисел. Вывести на экран только те, у которых сумма первых двух цифр равна сумме двух последних.
Задание № 5: Использование значений аргументов по умолчанию #
Реализуйте функцию для вычисления периметра прямоугольника в метрах. Данная функция должна принимать в качестве аргументов значение ширины, высоты и коэффициент по преобразованию первых аргументов в метры. По умолчанию последний аргумент должен быть равен единице.
Вызовите данную функцию для следующих прямоугольников, указав как можно меньше аргументов.
- Ширина: 1.5м, длина: 2м.
- Ширина: 60дм, длина: 5дм.
- Ширина: 7 дюймов, длина: 15 дюймов.
Расположите аргумент коэффициента первым. Как изменились вызовы данной функции?
Задание № 6: Видимость функций и переменных #
Создайте в приложении следующие файлы:
- Файл
ru/yarsu/Base.kt:- Входит в пакет
ru.yarsu. - Содержит изменяемую целочисленную переменную
counter. - Содержит неизменяемую строку
greetings. - Содержит стартовую функцию
main().
- Входит в пакет
- Файл
ru/yarsu/Work.kt- Входит в пакет
ru.yarsu. - Содержит приватную изменяемую целочисленную переменную
acres - Содержит приватное неизменяемое вещественное число
PI - Содержит приватную функцию
reset(), сбрасывающе значениеacresв изначальное, 0.0 - Содержит функцию
actionWork().
- Входит в пакет
- Файл
ru/yarsu/internal/One.kt- Входит в пакет
ru.yarsu.internal. - Содержит неизменяемую строку
hiddenInfo - Содержит изменяемое вещественное число
some. - Содержит функцию
actionOne().
- Входит в пакет
- Файл
ru/yarsu/internal/Two.kt- Входит в пакет
ru.yarsu.internal. - Содержит приватную изменяемую строку
log. - Содержит приватную неизменяемую целочисленную переменную
FINGERS_NUMBER. - Содержит приватную функцию
clear(), записывающую пустую строку в переменнуюlogs. - Содержит функцию
actionTwo().
- Входит в пакет
Функция main() поочерёдно вызывает функции actionWork(), actionOne() и
actionTwo(). В каждой из последних функций попытайтесь:
- Вызвать не-action функции.
- Прочитать значения из неизменяемых переменных во всех файлах.
- Записать значения в изменяемые переменные во всех файлах.
Сделайте выводы относительно доступности соответствующих модификаторов доступа.