Функции и пакеты #
Функции #
Презентацию по теме можно посмотреть по ссылке
Видео-запись: 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 функции.
- Прочитать значения из неизменяемых переменных во всех файлах.
- Записать значения в изменяемые переменные во всех файлах.
Сделайте выводы относительно доступности соответствующих модификаторов доступа.