Skip to content
This repository has been archived by the owner on Oct 13, 2021. It is now read-only.

Latest commit

 

History

History
54 lines (40 loc) · 8.33 KB

README.md

File metadata and controls

54 lines (40 loc) · 8.33 KB

Домашнее задание к занятию 4.3. Функции и области видимости.

Правила выполнения домашней работы:

  • Все задачи можно выполнить и сдать в одном файле .playground, подписанный в формате ФамилияГруппаHW4_3 (например, IvanovIOS5_HW4_3.playground). Файл нужно заархивировать и загрузить в личном кабинете в формате .zip
  • Все задачи обязательны к выполнению для получения зачета, кроме задач со звездочкой. Присылать на проверку можно каждую задачу по отдельности или все задачи вместе. Во время проверки по частям ваша домашняя работа будет со статусом "На доработке".
  • Любые вопросы по решению задач задавайте в чате Slack (ссылку вы найдете в письме на вашей эл. почте).

Для выполнения домашнего задания скачайте приложенный архив и следуйте инструкциям в нем.

Чтобы успешно выполнить это домашнее задание, необходимо усвоить следующие темы:

Задача 1

В данной задаче Вы тренируетесь Добавлять и Удалять значения в Хранилище (массив) при помощи двух функций, которые Вам и нужно реализовать. Функции принимают значение, но ничего не возвращают. Первая функция добавляет элемент в массив, вторая функция удаляет элемент из массива, вы сами можете выбрать любой удобный для вас вариант добавления и удаления элементов из массива.

Алгоритм решения:

  • Создайте пустой массив строк типа String на любимую тематику, например, это будет Хранилище столовых приборов (этот пример не использовать), в который вы будете поочередно добавлять или удалять ложки, вилки и другие приборы.
  • Создайте 2 функции в соответствии с условием.
  • Попробуйте добавлять и удалять значения в массиве при помощи созданных функций.
  • Что произойдет, если попытаетесь удалить значение, которого нет в Хранилище? Напишите, что в этом случае вы можете изменить в своей функции и внесите в нее изменения.
  • Условие со звездочкой (необязательное для выполнения): обе функции должны принимать массив и значение. Они должны добавлять или удалять значения в массиве. Функция удаления должна быть безопасной, т.е. если Хранилище пустое, мы должны сообщить об этом пользователю, если запрашиваемое на удаление значение отсутствует, необходимо также сообщить, что такого элемента нет. Запрещается использование forced unwrapping, если в вашем варианте будет необходимость работать с опциональными значениями.

Задача 2

Вы получили тестовое задание от службы доставки еды: преобразовать бонусные баллы клиентов, которые хранятся на сайте, в денежные единицы. Со стороны сайта приходит словарь, содержащий ID клиента (Int) и накопленную сумму Бонусов (Double). Ваша задача вернуть на сайт словарь, содержащий ID клиента (Int) и конвертированные денежные единицы (Int), каждые 100 бонусов равны 10 денежным единицам.

Алгоритм решения:

  • Словарь со своими значениями создавать не нужно. Значения, с которыми вы будете работать, инкапсулированы и переданы в userPoints.
  • Распечатайте словарь и посмотрите, с какими значениями вы будете работать.
  • Создайте функцию, которая принимаем словарь, ключом которого будет тип Integer, значением число с плавающей точкой Double, вернуть необходимо словарь ключом и значением, которого будет Integer.
  • Вызовите функцию и распечатайте полученный результат.
  • Дополнительно (необязательно) входящих параметров может быть больше, например, для коэффициента пересчета баллов в денежные единицы.

Задача 3 * (задача со звездочкой)

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

  • Массив может содержать повторяющиеся и nil значения, например: [1, 2, nil, 12, 1, nil, 3, 2].
  • В вычислении должны быть использованы только уникальные значения, а повторяющиеся учитываться не должны. Например, у нас повторяются числа 1 и 2, но попадать в результат они должны один раз; сумма нечетных будет (1 + 3 = 4), четных (2 + 12 = 14).
  • Так как в массиве могут быть nil, а вернуть необходимо не опциональное значение, необходимо использовать безопасное развертывание опционала (optional binding).
  • Для проверки вашего решения передайте в функцию подготовленный массив arrayOfNumbers.
  • Массив со своими значениями создавать не нужно. Значения, с которыми вы будете работать, инкапсулированы и переданы в arrayOfNumbers.
  • Распечатайте массив и посмотрите, с какими значениями вы будете работать.
  • Если вы все правильно сделаете, то получите ответ: сумма четных: 1378, нечетных: 1304.