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

Формула программиста
основатель — Волосатов Евгений Витольдович

Итератор

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

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


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

1,000 руб.


Для подписки на пакет необходимо авторизоваться.

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

# Название видеоурока Решило Рейтинг Доступ
1 Итератор. Разложение числа на простые множители. 00:09:22 37 чел. ★ 4.7 Done
  Отчёт отправил: 9263. Андрей Н. Решено за 10 мин. [Показать отчёт]
Научился: --- 
Сложности: --- 
Комментарии: Когда я слышу что-то про простые числа - всегда вспоминаю замечательную книгу: Дербишир, Джон. Простая одержимость. Бернхард Риман и величайшая нерешённая проблема в математике. Всем интересующимся читать обязательно, книга читается не хуже чем хороший детектив + с драматической подоплекой. Многие думают (да и я думал), что простые числа, да и вообще теория чисел придумана математиками для себя лишь для развлечения, но на самом деле теорема о распределении простых чисел так широко используется и связана с такими областями физики, что вы будете ... в шоке. Подробнее в книге ;) 
2 Итератор. Создание пустого итератора. 00:11:21 37 чел. ★ 4.9 Done
  Отчёт отправил: 9263. Андрей Н. Решено за 15 мин. [Показать отчёт]
Научился: Создавать класс, который наследует один или несколько интерфейсов 
Сложности: --- 
Комментарии: > Нaпиcaть, чтo такoе итератoр свoими словами. Итератор - это такой интерфейс, который должен уметь отдавать последовательно члены "своей последовательности". Кстати, массив в .Net (класс Array) тоже наследник IEnumerable, поэтому он позволяет перебирать элементы в цикле foreach. 
3 Итератор. Перебор чисел в итераторе. 00:09:04 37 чел. ★ 4.9 Done
  Отчёт отправил: 9263. Андрей Н. Решено за 10 мин. [Показать отчёт]
Научился: Организовывать перечисление в методах IEnumerator. 
Сложности: --- 
Комментарии: --- 
4 Итератор. Перебор простых чисел. 00:10:28 37 чел. ★ 4.9 Done
  Отчёт отправил: 9263. Андрей Н. Решено за 15 мин. [Показать отчёт]
Научился: Гуглить список пятичначных простых чисел. 
Сложности: --- 
Комментарии: --- 
5 Итератор. Зачем нужно два класса 00:16:21 33 чел. ★ 5 Done
  Отчёт отправил: 9263. Андрей Н. Решено за 20 мин. [Показать отчёт]
Научился: Теперь понятна потребность в двух интерфейсах, все более-менее становится на свои места. 
Сложности: --- 
Комментарии: --- 
6 Итератор. Волшебное слово yield. 00:11:03 35 чел. ★ 4.9 Done
  Отчёт отправил: 9263. Андрей Н. Решено за 25 мин. [Показать отчёт]
Научился: Узнал новое ключевое слово - yield. 
Сложности: Вникнуть заново в алгоритм 
Комментарии: > Сфopyлиpовaть своими словaми, что такoе yield. yield используется для возвращения поочередно членов перечисления, при этом текущее состояние перечисления сохраняется. Для завершения итераций используется конструкция yield break. 
7 Итератор. Список простых чисел. 00:08:42 33 чел. ★ 5 Done
  Отчёт отправил: 9263. Андрей Н. Решено за 10 мин. [Показать отчёт]
Научился: Освежил в памяти работу с List<> (шутка, List не забыть, т. к. он очень часто используется) 
Сложности: --- 
Комментарии: Теперь алгоритм очень прост для восприятия, чист и понятен. В конкретно нашем случае двойку можно было не сохранять в список, т. к. у нас потом идет перебор только по нечетным числам, которые заведомо на 2 не делятся, но мы с завидной упрямостью каждое все же пробуем разделить. Хотя, конечно, класс от этого перестанет быть универсальным, но ведь у нас все же нет публичного доступа к List primes из вне и если нам потребуется список простых чисел еще раз, мы начнем генерировать его заново... %) 
8 Итератор. Один метод вместо классов. 00:06:19 32 чел. ★ 5 Done
  Отчёт отправил: 9263. Андрей Н. Решено за 10 мин. [Показать отчёт]
Научился: Научился использовать возможности интерфейса перечисления без создания специального класса, наследующего этот интерфейс. 
Сложности: --- 
Комментарии: Возможность, конечно, очень интересная, но смысла от нее я не вижу никакого, если мы уж пишем такой метод, то логично его выделить в отдельный полноценный класс, отвечающий всем канонам IEnumerator. В теле цикла foreach() метода Start() добавил строчку if (j > number) break; после вложенного цикла while(), т. к. если начальное число большое, а его делители маленькие, очень долго приходится ждать пока он там впустую прогонит цикл до конца, хотя множители все уже найдены... 
9 ФИНАЛЬНЫЙ УРОК 23 чел. ★ 5 Done
  Отчёт отправил: 9263. Андрей Н. Решено за 3 мин. [Показать отчёт]
Научился: По курсу в целом. Курс короткий (буквально на 3-4 часа со всеми перерывами на попить чайку), но на самом деле очень ценный (по крайней мере оказался для меня). Магия интерфейса IEnumerator/IEnemerable и ключевых слов foreach()/yield завораживает. Что называется - однозначно мастхэв. 
Сложности: --- 
Комментарии: Приложил книгу, о которой говорил в первом уроке || V 
  Итого:   9 видеоуроков общей продолжительностью 1 час. 22 мин. 23 чел. ★ 4.93  
  Финалисты:   Permitin Alexey,   Максим,   Алексей,   Дмитрий,   Артём,   Tekashnik,   Alcatraz,   Дмитрий,   Николай,   Андрей Н.,   Владимир,   Владимир Борисенко,   Сергей Зулкарнаев,   radikofill,   Андрей,   Neo,   Максим Лапшинов,   Максим Саратов,   Алексей Хонин,   Алексей В.,   Lik_Kirill,   Елена,   Сергей Соколов .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Составлять отзыв
Трудности: Наверное, пройти курс за 2 дня
Хотя... это не сложно, учитывая, что курс интересный, что я давно собиралась его пройти и что курс оправдал мои ожидания. Следующий курс - "Коллекция графа". Правда, он побольше - за 2 дня пройти уже не получится.
Научился: Очень интересный курс!Понравилась многовариантность в написании кода, о простого к сложному и наоборот, когда в конце курса в последнем видеоуроке мы использовали один метод вместо двух классов!
Трудности: Многие моменты ещё усваиваются, есть желание и интерес двигаться и обучаться дальше!
Евгений Витольдович!Благодарю вас за подробное объяснение курса!Конечно информация ещё усваивается, но такой подход как у вашей школы, в интернете я ещё не встречал.По тому как вы обучаете и разъясняете в своих видеоуроках, сразу видно что вы заинтересованы в своих учениках!