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

Формула программиста

основатель — Волосатов Евгений Витольдович
Робот Шарп опять работает.
Open shop Итератор

Итератор

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

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

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


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

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 Итератор. Разложение числа на простые множители. 00:09:22
1 тест
131 чел. ★ 4.9 Done
  На этом уроке мы создадим очевидный алгоритм,
который будет раскладывать число на просты множители.
Отчёт отправил: 20071. New programist Выполнено за 46 мин. [Показать отчёт]
Научился: Узнал про алгоритм разложения числа на множители в C#, повторил циклы.  
Сложности: Ничего. 
2 Итератор. Создание пустого итератора. 00:11:21
118 чел. ★ 4.8 Done
  На этом уроке мы подберём ключ к циклу foreach.
создадим класс, который позволит создать свой алгоритм
для перебора значений в обычном цикле foreach.

Нaпиши, что такое итератор, своими словами.
Отчёт отправил: 20071. New programist Выполнено за 38 мин. [Показать отчёт]
Научился: Узнал как реализовываются классы (ой! Интерфейсы), более менее понял что вообще представляет из себя интерфейс в языке программирования C#. Ссылаясь из материала данного видеоурока, своими словами скажу, что интерфейс - это ссылка на другие классы, методы, которые реализуют данный интерфейс, так как я понимаю интерфейс сам по себе ничто без реализованных методов классов и т.д. Интерфейс по ходу дела расширяет возможности программы (в моем понимании). Пришлось все равно гуглить: Что такое интерфейс? 
Сложности: Понять, что такое интерфейс в языке программирования и что он из себя представляет. 
3 Итератор. Перебор чисел в итераторе. 00:09:04
113 чел. ★ 4.9 Done
  На этом уроке мы добавим в созданный класс перебор чисел.
Начнём с двойки и будем его всё время увеличивать "до бесконечности".
В конце урока добавим ограничение, чтобы итератор останавливался.
Отчёт отправил: 20071. New programist Выполнено за 39 мин. [Показать отчёт]
Научился: Научился перебирать числа все подряд, именно в этом уроке узнал что такое итератор, научился устанавливать начальное и конечное значения для перебора чисел в итераторе.  
Сложности: Как сделать перебор чисел. 
4 Итератор. Перебор простых чисел. 00:10:28
1 тест
111 чел. ★ 4.9 Done
  На этом уроке мы сдеаем так, чтобы наш класс возвращал в цикл
только простые числа, как и было задуманно изначально.
Отчёт отправил: 20071. New programist Выполнено за 1 час. 5 мин. [Показать отчёт]
Научился: Выводить простые числа в C#, повторил циклы. 
Сложности: Вывести пятизначное простое число. Над тем как вывести на консоль пятизначные простые числа мучился долго, нужно было немного кое-что исправить в коде, надеюсь это так как я исправил верно, иначе я пока не соображу как сделать по другому. 
5 Итератор. Зачем нужно два класса 00:16:21
1 тест
99 чел. ★ 4.9 Done
  На этом уроке мы разберёмся, зачем всё-таки нужно два класса
один для создания итератора, второй для его использования.
Для демонстрации напишем программу, которая выведет
на экран таблицу умножения простых чисел.
Отчёт отправил: 20071. New programist Выполнено за 1 час. 35 мин. [Показать отчёт]
Научился: Узнал зачем нужны два класса, выводить числа по столбикам, как в таблице умножения. Просмотрев видеоурок несколько раз, я подвел итог,  что два класса нужны для двух интерфейсов: один класс для одного интерфейса, другой класс для другого интерфейса, чтобы была возможность поменять некоторые данные, вроде так как-то, как я понял основную идею данного видеоурока. 
Сложности: Понять, зачем нужны два класса. 
6 Итератор. Волшебное слово yield. 00:11:03
2 теста
97 чел. ★ 4.9 Done
  На этом уроке мы узнаем, как упростить создание итератора.
Для этого достаточно просто написать нужный нам цикл,
внутри которого воспользоватся волшебным словом yield.

Отчёт отправил: 20071. New programist Выполнено за 1 час. 5 мин. [Показать отчёт]
Научился: Узнал про чудесное слово "yield", узнал как это слово работает, увидел чудо при котором это слово срабатывает. Просмотр определения yield своими словами на скринах. 
Сложности: Представить как работает слово yield, в этом видеоуроке сложностей не возникло. 
7 Итератор. Список простых чисел. 00:08:42
92 чел. ★ 5 Done
  На этом уроке мы перепишем алгоритм перебора простых чисел с использованием списка,
который будет постепенно, по мере необходимости, пополняться новыми простыми числами.

Отчёт отправил: 20071. New programist Выполнено за 55 мин. [Показать отчёт]
Научился: Узнал как написать алгоритм перебора простых чисел с помощью списка. Представленный в данном видеоуроке алгоритм мне очень понравился, он краткий, компактных, понятный, аж глаз радуется, только непонятно как и в каких местах использовать слово yield. Список нужен был для того, чтобы сохранять простые числа которые нашли и чтобы, делить не на все подряд а вот только на эти простые числа и работает по мере получения данных, а не тогда, когда будет весь список сформирован. 
Сложности: Непонятно как вообще работать со словом yield, а так алгоритм проще некуда. 
8 Итератор. Один метод вместо классов. 00:06:19
90 чел. ★ 4.9 Done
  На этом уроке мы увидим, что класс, оказывается, создавать не обязательно.
Магия слова yield сделает всё за тебя, можно просто один раз организовать перебор нужных элементов,
и потом его можно использовать через обычный foreach в любом месте программы.
Вся прелесть в том, что перебор элементов происходит по мере необходимости.

Отчёт отправил: 20071. New programist Выполнено за 49 мин. [Показать отчёт]
Научился: Узнал основную идею такого подхода: можно реализовывать какой-либо алгоритм неважно какой, в котором перебираем какие-нибудь элементы, и потом использовать не помещая их в массив, а пользоваться ими сразу как они будут найдены, т.е. нашли элемент и сразу используем, нашли элемент и сразу его используем и так до победного конца. Учел примечания формулиста, исправил некоторые ошибки по отчету формулиста, узнал про потерю оптимизации программы и что надо было использовать глобальную переменную и использовать слово this (это слово this я так понимаю его нужно использовать именно для конкретного места программы, чтобы корректно завершался перебор чисел, думаю так). 
Сложности: Понять, в каком месте программы была потеряна оптимизация. 
9 ФИНАЛЬНЫЙ УРОК без видео
77 чел. ★ 4.9 Done
  Поздравляю с окончанием курса!
Оставь, пожалуйста, отзыв о курсе.

Какой курс ты будешь проходить следующим?
Отчёт отправил: 20071. New programist Выполнено за 12 мин. [Показать отчёт]
Научился: Данный видеокурс показался для меня сложноватым  из-за темы про интерфейсы. В остальном повторил циклы, узнал про список List и как он работает, узнал как можно было оптимизировать программу, узнал про алгоритм перебора чисел, который можно использовать для своих нужд и не только. Данный видеокурс буду перепроходить, так как есть вещи, которые не до конца понял и чувствую, что темы про интерфейсы будет для меня больной темой. Но вот слово yield как было сказано в одном из видеоуроков - это просто магия, сам в этом убедился покопаясь в алгоритме. Желание пройти видеокурс про "База данных Отеля" никуда не пропало. 
10 VIP. Оптимизация поиска простых чисел 01:19:28
1 тест
41 чел. ★ 5 Done
  Пишем функцию для поиска простых чисел и
поэтапно оптимизируем её в двух направлениях.
Отчёт отправил: 20071. New programist Выполнено за 4 час. 40 мин. [Показать отчёт]
Научился: Узнал про алгоритм нахождения всех простых чисел, научился делать проверки всех функций, узнал как используются делегаты, узнал почему все время в стоит слово static (так как консольное приложение), узнал как сравнивать несколько функций через делегаты, узнал какими способами можно оптимизировать функции, повторил список List, повторил циклы. Честно говоря - это самый лучший вебинар про алгоритмы, мне очень захотелось пересматривать его снова и снова, также появилась мотивация перепройти этот видеокурс. Большое спасибо автору за мотивацию изучать, таких вебинаров очень мало. 
Сложности: Прочитав несколько раз определение про решето Эратосфена я так и не понял либо это и есть тот самый алгоритм, который рассматривался в данном видеоуроке (из определения решето Эратосфена - алгоритм нахождения всех простых чисел до некоторого целого числа n, что смотря на алгоритм языка C# не один раз,  что это и есть то что было из определения, как по-моему мнению, может быть я что-то упустил), либо его надо реализовывать самому? Пока не догнал. 
  Итого:   10 видеоуроков 2 час. 42 мин.
6 тестов
41 чел. ★ 4.91  
  Финалисты:   Иван Воронин,   Елена,   Артём,   Новопашин Владимир,   Алексей В.,   Фомичева Наталья,   Rita,   Станислав,   Neverwinter 2,   Permitin Alexey,   aleksey-k,   Николай Денисов,   Денис,   Bazel,   kalobyte,   Yefim,   Tekashnik,   Алексей Малышев,   Sergio,   Роман,   konstantin,   Сергей Стефаненко,   chokayes,   ser2018,   vip,   Виктор,   Дмитрий,   Максим Лапшинов,   FireWolf,   Слава,   Денис,   Александр,   New programist,   no name,   Deep Network,   Кирилл,   Max,   Kitsuneco,   Дмитрий,   Anatoli,   MaxB .

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





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

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


Научился: Итератор - это метод, возвращающий по очереди члены совокупности объектов от ее начала и до конца. Реализовав итератор, можно обращаться к объектам определяемого класса в цикле foreach.
Трудности: Сложности: Тема очень интересная, полезная, но визуально для восприятия довольно сложная. Реализация итератора позволяет через цикл foreach обращаться ко всем элементам совокупности объектов по очереди, причем динамически.



Научился:  Отличный курс, настолько интересный что прошел сразу весь =). Узнал для себя много нового. Мотивирует найти и прочитать теорию =)
=)