Обучение c# видеоуроки

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

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Отзывы о вебинарах комбинаторики




Клуб формулистов - Ежемесячная подписка

Вступление в Клуб Формулистов на выгодных условиях для НОВЫХ участников.

После взноса  999  499 руб. вы получите подписку
в Клуб Формулистов на 30 дней и 256 байт для быстрого старта.
Байты используются для открытия более одного урока в день, по 50 байт за урок.

Стоимость 1 дня за первый месяц: всего 16 рублей.

Первый взнос - 499 руб./30 дней.

Через 30 дней будет списано 3,000 2,400 руб.
за продление подписки в Клуб на 30 дней + подарок 512 байт.

Так будет продолжаться каждые 30 дней, пока вы не отмените подписку.
Средства будет автоматически считываться с вашей карты.
Вы в любой момент сможете отказаться от продления Клуба.

Только ДО КОНЦА НЕДЕЛИ -
-50% скидка на первый взнос, всего 499 (вместо 999) рублей!
-20% скидка на ЕЖЕМЕСЯЧНЫЙ платёж!
Всего 2400 руб/месяц (вместо 3000 руб/месяц), или 80 руб./день - цена чашки кофе.


Стоимость 1 дня: 80 руб.

Хочу вступить!

Также есть другие варианты оплаты участия в КФ:

Билет в клуб формулистов на ...
30+ дней | 60 дней | 150 дней | 380 дней | 1000 дней

Внимание!
Стоимость участия в Клубе формулистов увеличивается 1 числа каждого месяца на 100 рублей.
При оформления подписки стоимость остаётся постоянной, пока подписка не будет отменена.







Первый взнос - 499 руб./30 дней + 500 байт.
Последующие взносы - 3,000 2400 руб./месяц + 512 байт.



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

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 FREE Рекурсия. Вступление без видео
2 теста
211 чел. ★ 4.7 Done
 

«Человеку свойственна итерация,
рекурсия - божественна».


Мы начнём наш курс с такой интересной и трепетной темы, как РЕКУРСИЯ.
Вокруг рекурсии ходит множество толков, загадок, непоняток и заблуждений.
Сегодня мы один раз и навсегда, просто и понятно выясним, что такое рекурсия и как её понять.

Задание:
Дать определение рекурсии своими словами.
Найти красивую и достойную картинку на тему рекурсии.

Видео на этом уроке нет.
Отчёт отправил: 7276. Ильшат Выполнено за 10 мин. [Показать отчёт]
Научился: Посмотрел интересные картинки по теме рекурсия :) 
Сложности: Выбрать две картинки. 
Комментарии: Рекурсия в программировании - это вызов функции из тела этой же самой функции. 
2 FREE Рекурсия. Главный секрет 00:31:52
3 теста
132 чел. ★ 4.9 Done
  На вебинаре рассмотрели несколько примеров по созданию рекурсивных алгоритмов.
Рассказал основной секрет, как понимать рекурсию.

Задание:
Нарисовать кривую Гильберта на листе бумаги.
Отчёт отправил: 7276. Ильшат Выполнено за 55 мин. [Показать отчёт]
Научился: Узнал 2 секрета рекурсии: 1) определить условие ее завершения, простейший вариант решения; 2) определить переход от N к N + 1. 
Сложности: Нарисовать кривую Гильберта. 
Комментарии: Интересное начало, насыщенный по темам курс.  
3 Рекурсия. Заливка области 00:47:23
1 тест
120 чел. ★ 5 Done
  Пишем алгоритм заливки, как в программе Паинт.
Отчёт отправил: 7276. Ильшат Выполнено за 2 час. 15 мин. [Показать отчёт]
Научился: Стал лучше понимать рекурсию, повторил работу с выводом информации на консоль. 
Сложности: Понять алгоритм рекурсивной заливки. 
Комментарии: Евгений Витольдович, благодарю за этот прекрасный пример объяснения работы рекурсии, все наглядно и понятно. Однако первоначально не все было очевидно. Логически-то понятно, например, сначала закрашиваем вверх, потом вниз, потом влево, потом вправо и если дошли до тупика (то есть, условие выхода из рекурсии - закрашенная клетка), то тогда рисуем звездочку и выходим из функции. И технически было понятно, что тут используется своего рода механизм "раскрутки" стека и поэтому мы всегда знаем куда вернемся, главное, чтобы было определено условие выхода из рекурсии. Были проблемы другого рода: понять, как все это вместе работает, особенно когда вложенность вызовов становится большой :) Поэтому решил пошагово проверить работу алгоритма, вместо Thread.Sleep() написал Console.ReadKey() и медленно, но верно смотрел что выдает программа при каждом вызове функции. Здесь еще хорошо подошло то, что показывается направление следующего хода, очень наглядно. В итоге, доволен результатом, спасибо :) 
4 Рекурсия. Факториал 00:04:35
1 тест
85 чел. ★ 4.9 Done
  На этом уроке мы пойдём в гости к роботу Шарпу.

Задание:
Решить задачу «Факториал».
Отчёт отправил: 7276. Ильшат Выполнено за 10 мин. [Показать отчёт]
Научился: Повторил алгоритм расчета факториала числа с использованием рекурсии. 
Сложности: Сложностей не было. 
Комментарии: Короткий и понятный урок, идем дальше. 
5 Рекурсия. Числа Фибоначчи 00:03:46
1 тест
81 чел. ★ 5 Done
  На этом уроке мы пойдём в гости к роботу Шарпу.

Задание:
Решить задачу «Числа Фибоначчи».
Отчёт отправил: 7276. Ильшат Выполнено за 10 мин. [Показать отчёт]
Научился: Алгоритм расчета числа Фибоначчи с использованием рекурсии. 
Сложности: Сложностей не было. 
Комментарии: Идем дальше. 
6 Рекурсия. Общий делитель 00:04:08
1 тест
78 чел. ★ 4.8 Done
  На этом уроке мы пойдём в гости к роботу Шарпу.

Задание:
Решить задачу «Общий делитель».
Отчёт отправил: 7276. Ильшат Выполнено за 20 мин. [Показать отчёт]
Научился: Повторил алгоритм расчета НОД двух чисел с помощью алгоритма Евклида. 
Сложности: Сложностей не было. 
Комментарии: В условии было указано решить с помощью вычитания двух чисел, но один тест не проходил - причина была переполнение стека, проверил на Visual Studio. Переделал алгоритм, с использованием операции взятия остатка от деления - тест прошел. 
7 Рекурсия. Обратный отсчёт 00:05:52
1 тест
77 чел. ★ 4.9 Done
  На этом уроке мы пойдём в гости к роботу Шарпу.

Задание:
Решить задачу «Обратный отсчёт».
Отчёт отправил: 7276. Ильшат Выполнено за 15 мин. [Показать отчёт]
Научился: Алгоритм обратного отсчета с использованием рекурсии. 
Сложности: Сложностей не было. 
Комментарии: Красиво, без массивов и циклов, рекурсия впечатляет. 
8 Рекурсия. Фракталы. Спираль 00:25:42
88 чел. ★ 5 Done
  На этом уроке мы сначала сделаем заготовку
для рисования линий на форме, а потом
нарисуем спираль используя рекурсию.
Потом мы её немного изменим,
чтобы наша спираль стала
настоящим фракталом.
Отчёт отправил: 7276. Ильшат Выполнено за 45 мин. [Показать отчёт]
Научился: Познакомился с понятием "фрактал". 
Сложности: Сложностей не было, кроме следствия небольшого эксперимента: при задании отрицательного шага возникло переполнение стека и visual studio зависла, пришлось перезапустить приложение. Все данные сохранились) 
Комментарии: Понравился результат работы программы, несколько иначе посмотрел на технику применения рекурсивных вызовов функций. 
9 Рекурсия. Фракталы. Треугольник Серпинского 00:23:41
1 тест
72 чел. ★ 5 Done
  На этом уроке мы будем рисовать треугольник Серпинского.
Нам опять поможет рекурсия, которая будет "тройной",
потому что на каждом следующем шаге мы
будем рисовать три новых треугольника.

Отчёт отправил: 7276. Ильшат Выполнено за 31 мин. [Показать отчёт]
Научился: Нарисовал на бумаге треугольник Серпинского, рассмотрел два варианта решения. Для экспериментальной части переписал алгоритм расчета трех точек, в результате, на втором скриншоте вариант с пропорцией 3/7 между смежными вершинами. 
Сложности: Переписать алгоритм расчета трех вершин, спасибо ручке и листку бумаги) 
Комментарии: Рекурсия божественна 
10 Рекурсия. Фракталы. Кривая Гильберта 00:35:18
1 тест
60 чел. ★ 5 Done
  На этом уроке мы нарисуем кривую Гильберта.
Да-да, ту самую, которую ты рисовал
на листике в начале курса Комбинаторика.
Мы здесь познакомимся с косвенной рекурсией,
это когда несколько функций вызывают друг друга.

Отчёт отправил: 7276. Ильшат Выполнено за 1 час. 50 мин. [Показать отчёт]
Научился: Повторил вывод графики на форму, работу с рекурсией. 
Сложности: Понять рекурсивные функции. 
Комментарии: Рекурсивные функции впечатляют, краткие и в то же время емкие. Понравился процесс прорисовки "красных" линий, соединяющих графические элементы, нарисованные на этапе рекурсии более низшей вложенности. Причем из этих же "красных" линий по сути создается весь рисунок. Спасибо за урок, хорошее объяснение и демонстрация рекурсии, я впечатлен:) 
11 Комбинаторика. Счастливые билеты 6 00:02:33
1 тест
68 чел. ★ 4.8 Done
  На этом уроке мы рассмотрим самый простой
способ решения комбинаторных задач,
с использованием вложенных циклов.

Задание
Решить задачу «Счастливые билеты»
Отчёт отправил: 7276. Ильшат Выполнено за 10 мин. [Показать отчёт]
Научился: Оптимизация алгоритма путем замены цикла условием. 
Сложности: Понять оптимизацию алгоритма. 
Комментарии: Идем дальше. 
12 Комбинаторика. Счастливые билеты N 00:40:51
1 тест
82 чел. ★ 5 Done
  На этом уроке мы рассмотрим
два основных способа решения комбинаторных задач:
Первый способ - когда известно количество объектов - вложенные циклы.
Второй способ - любое количество объектов - использование рекурсии.

Задание:
Решить задачу «Счастливые билеты N».
Скачать книжку для чтения по комбинаторике:
Как решать комбинаторные задачи.
Отчёт отправил: 7276. Ильшат Выполнено за 1 час. 15 мин. [Показать отчёт]
Научился: 1) Закрепил навыки работы с рекурсией; 2) Познакомился с интересным вариантом вызова рекурсивной функции в цикле; 3) Поработал с оптимизацией алгоритма, перенос локальных переменных в область определения класса хоть и не имеет логической полезности, но дает прирост в производительности. 
Сложности: Материал хорошо объясняется, сложностей не было. 
Комментарии: Хороший урок, мне понравился, понятны плюсы и минусы рекурсии. Тест N=5 не прошел по тайм-ауту, поэтому, как и предложил Евгений Витольдович, посчитал в Visual Studio (второй скриншот) количество счастливых билетов при N=5 и указал в коде полученное значение. 
13 Комбинаторика. 4 x 4. Ладья x Ферзь 00:26:01
1 тест
74 чел. ★ 5 Done
  На этом уроке мы рассмотрим две шахматные задачи,
про расстановку ладьей и ферзей на доске, чтобы они не рубили друг друга.
Задачи решаются первым способом - перебор вариантов без использования рекурсии.

Задание:
Решить задачу «Четыре Ладьи».
Решить задачу «Четыре Ферзя».

Отчёт отправил: 7276. Ильшат Выполнено за 1 час. 20 мин. [Показать отчёт]
Научился: Поиск с отсечением - исключение избыточных комбинаций вызовов рекурсивной функции. 
Сложности: Расчет индексов диагоналей в булевых массивах. 
Комментарии: Интересное решение - использовать проверку условий отсечений с помощью трех булевых массивов. Это достаточно явно отображает словесный алгоритм в программном коде. 
14 Комбинаторика. Много ферзей. Демонстрация 00:47:45
67 чел. ★ 5 Done
  Теперь составим программу для расстановки N ферзей на шахматной доске N x N.
Для решения этой задачи нам потребуется рекурсия.
А чтобы понять, как она работает -
сделаем визуальную демонстрацию процесса работы алгоритма.


Отчёт отправил: 7276. Ильшат Выполнено за 3 час. 20 мин. [Показать отчёт]
Научился: Повторил работу с рекурсией, созданием графического интерфейса программы. 
Сложности: Написать программу демонстрации алгоритма. 
Комментарии: По сути, в прошлом уроке уже был представлен алгоритм решения задачи для N ферзей, в этом уроке было повторение. И дополнительно было предложено написать программу демонстрации алгоритма в консольном режиме. Я решил, что в графическом режиме это будет нагляднее и написал Windows Forms приложение. Информацию выводил в динамическую матрицу pictureBox. 
15 Комбинаторика. Сложение букв 00:36:25
1 тест
69 чел. ★ 5 Done
  Существует серия головоломок на математическое выражение из букв, например:
ШРАМ * Ы = ШРАМЫ
БУЛОК + БЫЛО = МНОГО
Как правило в этих примерах каждой букве соответствует одна цифра.
Одинаковым буквам одинаковые цифры, разным буквам - разные цифры.
Необходимо решить эту головоломку, то есть разгадать, какой был пример.

Для решения этих задач комбинаторика так и напрашивается.
Первую задачу мы решим первым способом, через вложенные циклы.
Вторую задачу вторым способом, через рекурсию.


Отчёт отправил: 7276. Ильшат Выполнено за 1 час. 30 мин. [Показать отчёт]
Научился: Повторил работу с рекурсией, с методами поиска/замены символов в строке. 
Сложности: В целом, сложностей не было, все хорошо объясняется, но поначалу разбирался с алгоритмом решения задачи. 
Комментарии: Рекомендую всем, кто проходит данный курс, обратить внимание на предложенное в видеоуроке рекурсивное решение второй задачи, "пропустить через себя", разобраться от начала до конца, понять ход оптимизации. Емкий алгоритм, три массива неплохо закручены между собой, и каждая строчка кода несет много смысла. 
16 Комбинаторика. Математические операции 00:22:34
1 тест
63 чел. ★ 5 Done
  Продолжаем комбинаторную практику.
Дан ряд цифр и одно число, например:
1 2 3 4 5 6 7 8 и 100.
Расставить между цифрами знаки
"пробел", "умножить", "плюс" и "минус"
таким образом, чтобы получилось заданное число.

Отчёт отправил: 7276. Ильшат Выполнено за 2 час. 30 мин. [Показать отчёт]
Научился: Повторил работу с рекурсией, неплохо закрепил полученные навыки во время создания класса калькулятора. 
Сложности: Реализовать свой класс калькулятора. 
Комментарии: Калькулятор реализовал с использованием грамматики(на втором скриншоте слева): Expression отвечает за вычисление суммы/разности, Term - произведение, Number - составление числа из цифр, разделенных пробелами. Все операции левоассоциативны, приоритеты реализованы с помощью рекурсивных вызовов функций Term, Number. 
17 Полуфинальный урок. Ответы на вопросы без видео
59 чел. ★ 4.9 $
  Ты уже практически закончил курс «Комбинаторика».
Пожалуйста, ответь на несколько вопросов.
Эти ответы пригодятся тебе при записи видеоотзыва.
(видео в этом уроке нет)
18 Динамика. Поле дураков 00:18:40
1 тест
65 чел. ★ 5 Done
  Вступление в тему "Динамическое программирование".
Решение олимпиадной задачи "Поле дураков".
Отчёт отправил: 7276. Ильшат Выполнено за 35 мин. [Показать отчёт]
Научился: Познакомился с динамическим программированием. 
Сложности: Сложностей не было. 
Комментарии: Понравился метод решения задачи, наглядно и понятно. Большой плюс в том, что для пояснения был использован Excel для пошаговой демонстрации алгоритма. 
19 Динамика. Счастливые билеты 20 00:58:04
1 тест
59 чел. ★ 5 Done
  Решаем уже знакомую задачу новым способом.
Начальные данные: число N от 1 до 10.
Вывод результата: количество 2N-значных счастливых билетов.
Работает - моментально!

Рекомендую ознакомиться с публикациями на эту же тему:
http://www.sql.ru/forum/932580/posobie-dlya-studentov-i-shkolnikov?mid=15179128#15179128
https://goo.gl/RyNCXH


Отчёт отправил: 7276. Ильшат Выполнено за 3 час. 10 мин. [Показать отчёт]
Научился: Увидел применение динамического программирования для решения задачи поиска счастливых билетов. 
Сложности: Разобраться в алгоритме поиска счастливых билетов, а конкретнее, переход от N к N + 1. 
Комментарии: Очень достойный урок, просмотрел его дважды, прежде чем понял всю суть. Наглядно показано, как использование другого алгоритма в несколько раз повышает скорость работы программы. 
20 Динамика. Выход из Лабиринта 00:59:02
1 тест
55 чел. ★ 5 Done
  Мы рассмотрим наиболее популярный, интересный и полезный алгоритм теории графов:
Поиск кратчайшего пути в графе. В основе идеи лежит принцип динамического программирования.

В качестве графа у нас будет Лабиринт, мы будем в нём искать кратчайший путь из одной клетки в другую.

Прошу перед уроком ознакомиться со следующими материалами:
1. Очередь в C#.
2. Поиск в ширину в графе.
Отчёт отправил: 7276. Ильшат Выполнено за 1 час. 20 мин. [Показать отчёт]
Научился: Повторил работу с очередью Queue, поиском в ширину в графе. 
Сложности: Сложностей не было. 
Комментарии: Данную тему ранее проходил в курсе Сокобан, здесь было повторение и закрепление. 
21 ФИНАЛЬНЫЙ УРОК 00:23:23
40 чел. ★ 4.9 Done
  Задание
Записать видео обзор твоих лучших программ этого курса.

Отчёт отправил: 7276. Ильшат Выполнено за 25 мин. [Показать отчёт]
Научился: Повторил создание видео обзоров. 
Сложности: Кратко рассказать про программу заливки области. 
Комментарии: Курс очень понравился, спасибо, Евгений Витольдович :) 
Видеообзор: https://youtu.be/GHR7oY-HHpM
22 VIP. Простые числа. Оптимизация алгоритма 01:19:28
1 тест
42 чел. ★ 5 Done
  Пишем функцию для поиска простых чисел и
поэтапно оптимизируем её в двух направлениях.
Отчёт отправил: 7276. Ильшат Выполнено за 3 час. 10 мин. [Показать отчёт]
Научился: Практиковался с алгоритмами поиска простых чисел, реализовал "решето Эратосфена", повторил работу с модульными тестами. 
Сложности: Сложностей не было, в основном мелкие ошибки типов данных и границ поиска. 
Комментарии: Проверку функций реализовал с помощью модульных тестов библиотеки boost. Опробовал создание функций isPrime* через некое подобие TDD. Поначалу было трудно привыкнуть, но в итоге понравилось, больше уверенности в работоспособности своего кода. Выполнил проверку скорости работы функций, как было предложено в уроке, за определенное время: странно, функция isPrimeSqrtP оказалась медленнее, чем ожидалось. Реализовал алгоритм "решето Эратосфена", для ее проверки выбрал другой способ: задаю максимальное число и засекаю время выполнения функций. Результат удивил, алгоритм Эратосфена и isPrimeSqrtP проиграли по времени isPrimeSqrt3. При бОльших границах интервала поиска отставание уменьшается, я полагаю проблема в реализации алгоритма. Урок понравился, поработал с консолью, тестами, оптимизацией, реализацией алгоритма. Спасибо!:) 
  Итого:   22 видеоурока 9 час. 57 мин.
21 тест
29 чел. ★ 4.95  
  Финалисты:   Елена,   alexmail19Q,   Максим Лапшинов,   Андрей Поляков,   Vera,   Иван,   Артём,   Tekashnik,   Михаил Ермишин,   Николай,   Alcatraz,   Den Andreevich,   Дмитрий,   Иван Воронин,   Алексей В.,   Новопашин Владимир,   Сергей Зулкарнаев,   Алексей Малышев,   Александр,   Sergio,   Сергей Стефаненко,   Денис,   chokayes,   ser2018,   Дмитрий,   Илья,   Яков,   MaxB,   Tim .

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





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

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

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

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


Научился: Трудный курс, понял основы работы с рекурсией и понятие динамического программирования



Трудности: Рассказывать, не уверен, что у меня получилось хорошо
Спасибо за курс) Классика в программировании важная часть становления мировозрения программиста. Всем добра.