Контейнеры, блоки, итераторы
Информация по теме
Цель: познакомиться с основными методами работы с контейнерами, описания логики внутри блоков и использования стандартных итераторов.
Материалы для кодготовки
- Глава №4 книги Programming Ruby 2.0
- Глава №5 книги Изучаем Ruby
- Глава №8 книги Путь Ruby
Презентация
Презентацию можно скачать по данной ссылке.
Код, написанный на паре, можно скачать по данной ссылке
Практическое занятие
Цель занятия: научиться использовать стандартные контейнеры для решения поставленных задач, использовать стандартные итераторы.
В качестве основы мы будем использовать предыдущее задание. Вам необходимо восстановить код предыдущего задания:
- Класс для описания одной записи об оплате.
- Класс для описания всех наборов записей.
- Методы для считывания данных из CSV-файлов.
В процессе решения следующих задач вам необходимо написать по 2 метода. Первый метод должен использовать цикл for
для обхода значений массива. Вы можете использовать также цикл while
. Название данного метода должно иметь суффикс _for
.
Второй метод должен использовать итераторы для решения данной задачи. Название метода должно иметь суффикс _iter
. Желательно, чтобы методы располагались друг за другом.
Задачи
- Найти среднее арифметическое значение всех поступивших платежей.
- Найти 10 самых больших платежей, поступивших за всё время. Отсортировать их по убыванию объёма платежа.
- Сфромировать список месяцев и объёмов платежей, поступивших за каждый из них. Результатом работы должен быть Хеш. Ключ - название месяца, значение - общий объём платежей.
- Найти платёж, наиболее близкий к среднему арифметическому значению.
- Найти по 5 самых больших платежей за каждый месяц. Отсортировать их по времени получения.
- Указать какой из домов принёс наибольшую прибыль по каждому месяцу.
Документация
- Официальная документация на методы класса Array
- Официальная документация на методы класса Hash
- Официальная документация на модуль Enumerable