Обучение по c#

Формула программиста
основатель — Волосатов Евгений Витольдович
Вступай в Телеграм чат проекта | Обход блокировки
Игровой комплекс Сокобан - Введи код скидки

Итератор

На этом курсе мы познакомимся с интерфейсами IEnumerable + IEnumerator.
На примере решения задачи разложения числа на простые множители
мы будем создавать итератор, который будет перебирать простые числа.

Содержание курса
+ создание класса по интерфейсу IEnumerable
+ создание класса по интерфейсу IEnumerator
+ подробное объяснение, зачем нужно два класса.
+ использование yield для удобной реализации итератора.
+ создание итератора через функцию, не создавая спец. класса.


9 миниуроков.
1 час 22 минут.
Доступ на 15 дней.

Хочу купить!

Цена: 100 p.


Список уроков | фото | видео

# Название видеоурока Решило Рейтинг Доступ
1 Итератор. Разложение числа на простые множители. 00:09:22 77 чел. ★ 4.9 Done
  На этом уроке мы создадим очевидный алгоритм,
который будет раскладывать число на просты множители.
Отчёт отправил: 9263. Андрей Н. Выполнено за 10 мин. [Показать отчёт]
Научился: --- 
Сложности: --- 
Комментарии: Когда я слышу что-то про простые числа - всегда вспоминаю замечательную книгу: Дербишир, Джон. Простая одержимость. Бернхард Риман и величайшая нерешённая проблема в математике. Всем интересующимся читать обязательно, книга читается не хуже чем хороший детектив + с драматической подоплекой. Многие думают (да и я думал), что простые числа, да и вообще теория чисел придумана математиками для себя лишь для развлечения, но на самом деле теорема о распределении простых чисел так широко используется и связана с такими областями физики, что вы будете ... в шоке. Подробнее в книге ;) 
2 Итератор. Создание пустого итератора. 00:11:21 73 чел. ★ 4.9 Done
  На этом уроке мы подберём ключ к циклу foreach.
создадим класс, который позволит создать свой алгоритм
для перебора значений в обычном цикле foreach.

Нaпиши, что такое итератор, своими словами.
Отчёт отправил: 9263. Андрей Н. Выполнено за 15 мин. [Показать отчёт]
Научился: Создавать класс, который наследует один или несколько интерфейсов 
Сложности: --- 
Комментарии: > Нaпиcaть, чтo такoе итератoр свoими словами. Итератор - это такой интерфейс, который должен уметь отдавать последовательно члены "своей последовательности". Кстати, массив в .Net (класс Array) тоже наследник IEnumerable, поэтому он позволяет перебирать элементы в цикле foreach. 
3 Итератор. Перебор чисел в итераторе. 00:09:04 70 чел. ★ 4.9 Done
  На этом уроке мы добавим в созданный класс перебор чисел.
Начнём с двойки и будем его всё время увеличивать "до бесконечности".
В конце урока добавим ограничение, чтобы итератор останавливался.
Отчёт отправил: 9263. Андрей Н. Выполнено за 10 мин. [Показать отчёт]
Научился: Организовывать перечисление в методах IEnumerator. 
Сложности: --- 
Комментарии: --- 
4 Итератор. Перебор простых чисел. 00:10:28 69 чел. ★ 4.9 Done
  На этом уроке мы сдеаем так, чтобы наш класс возвращал в цикл
только простые числа, как и было задуманно изначально.
Отчёт отправил: 9263. Андрей Н. Выполнено за 15 мин. [Показать отчёт]
Научился: Гуглить список пятичначных простых чисел. 
Сложности: --- 
Комментарии: --- 
5 Итератор. Зачем нужно два класса 00:16:21 64 чел. ★ 5 Done
  На этом уроке мы разберёмся, зачем всё-таки нужно два класса
один для создания итератора, второй для его использования.
Для демонстрации напишем программу, которая выведет
на экран таблицу умножения простых чисел.
Отчёт отправил: 9263. Андрей Н. Выполнено за 20 мин. [Показать отчёт]
Научился: Теперь понятна потребность в двух интерфейсах, все более-менее становится на свои места. 
Сложности: --- 
Комментарии: --- 
6 Итератор. Волшебное слово yield. 00:11:03 64 чел. ★ 5 Done
  На этом уроке мы узнаем, как упростить создание итератора.
Для этого достаточно просто написать нужный нам цикл,
внутри которого воспользоватся волшебным словом yield.

Отчёт отправил: 9263. Андрей Н. Выполнено за 25 мин. [Показать отчёт]
Научился: Узнал новое ключевое слово - yield. 
Сложности: Вникнуть заново в алгоритм 
Комментарии: > Сфopyлиpовaть своими словaми, что такoе yield. yield используется для возвращения поочередно членов перечисления, при этом текущее состояние перечисления сохраняется. Для завершения итераций используется конструкция yield break. 
7 Итератор. Список простых чисел. 00:08:42 62 чел. ★ 5 Done
  На этом уроке мы перепишем алгоритм перебора простых чисел с использованием списка,
который будет постепенно, по мере необходимости, пополняться новыми простыми числами.

Отчёт отправил: 9263. Андрей Н. Выполнено за 10 мин. [Показать отчёт]
Научился: Освежил в памяти работу с List<> (шутка, List не забыть, т. к. он очень часто используется) 
Сложности: --- 
Комментарии: Теперь алгоритм очень прост для восприятия, чист и понятен. В конкретно нашем случае двойку можно было не сохранять в список, т. к. у нас потом идет перебор только по нечетным числам, которые заведомо на 2 не делятся, но мы с завидной упрямостью каждое все же пробуем разделить. Хотя, конечно, класс от этого перестанет быть универсальным, но ведь у нас все же нет публичного доступа к List primes из вне и если нам потребуется список простых чисел еще раз, мы начнем генерировать его заново... %) 
8 Итератор. Один метод вместо классов. 00:06:19 62 чел. ★ 5 Done
  На этом уроке мы увидим, что класс, оказывается, создавать не обязательно.
Магия слова yield сделает всё за тебя, можно просто один раз организовать перебор нужных элементов,
и потом его можно использовать через обычный foreach в любом месте программы.
Вся прелесть в том, что перебор элементов происходит по мере необходимости.

Отчёт отправил: 9263. Андрей Н. Выполнено за 10 мин. [Показать отчёт]
Научился: Научился использовать возможности интерфейса перечисления без создания специального класса, наследующего этот интерфейс. 
Сложности: --- 
Комментарии: Возможность, конечно, очень интересная, но смысла от нее я не вижу никакого, если мы уж пишем такой метод, то логично его выделить в отдельный полноценный класс, отвечающий всем канонам IEnumerator. В теле цикла foreach() метода Start() добавил строчку if (j > number) break; после вложенного цикла while(), т. к. если начальное число большое, а его делители маленькие, очень долго приходится ждать пока он там впустую прогонит цикл до конца, хотя множители все уже найдены... 
9 ФИНАЛЬНЫЙ УРОК 53 чел. ★ 5 Done
  Поздравляю с окончанием курса!
Оставь, пожалуйста, отзыв о курсе.

Какой курс ты будешь проходить следующим?
Отчёт отправил: 9263. Андрей Н. Выполнено за 3 мин. [Показать отчёт]
Научился: По курсу в целом. Курс короткий (буквально на 3-4 часа со всеми перерывами на попить чайку), но на самом деле очень ценный (по крайней мере оказался для меня). Магия интерфейса IEnumerator/IEnemerable и ключевых слов foreach()/yield завораживает. Что называется - однозначно мастхэв. 
Сложности: --- 
Комментарии: Приложил книгу, о которой говорил в первом уроке || V 
10 VIP. Оптимизация поиска простых чисел 01:19:28 23 чел. ★ 5 $
  Пишем функцию для поиска простых чисел и
поэтапно оптимизируем её в двух направлениях.
  Итого:   10 видеоуроков общей продолжительностью 2 час. 42 мин. 23 чел. ★ 4.96  
  Финалисты:   Иван Воронин,   Елена,   Артём,   Новопашин Владимир,   Алексей В.,   Фомичева Наталья,   Rita,   Станислав,   Neverwinter 2,   Permitin Alexey,   aleksey-k,   Николай Денисов,   Денис,   Bazel,   kalobyte,   Yefim,   Tekashnik,   Алексей Малышев,   Sergio,   Роман,   konstantin,   Сергей Стефаненко,   chokayes .

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Трудности: Вообще по сути курс и не легкий и не сложный, но все штыки повылазят на практике
Интересный курс, прошел все испытания итератора, узнал много для себя, что такое yield, enumerable, enumerator, испытал несколько метаморфоз с классом, без класса, 2 классами и т.д. до посинения.


Научился: Очень интересно. Разнообразные подходы к использованию IEnumerable порадовали. Спасибо. Со следующим курсом пока не определился.