Обучение 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
 

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


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

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

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

Задание:
Нарисовать кривую Гильберта на листе бумаги.
Отчёт отправил: 7980. Сергей Лузум Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Рисовать кривую Гильберта) 
Сложности: Пока ничего 
Комментарии: Понравился вывод чисел "задом наперёд" 
3 Рекурсия. Заливка области 00:47:23
1 тест
120 чел. ★ 5 Done
  Пишем алгоритм заливки, как в программе Паинт.
Отчёт отправил: 7980. Сергей Лузум Выполнено за 1 час. 30 мин. [Показать отчёт]
Научился: Рекурсия - это удобно и красиво, но использовать её нужно с осторожностью и только там, где это оправданно. 
Сложности: Закончить экспериментировать с программой.) 
Комментарии: Мне кажется, что эта программа в полной мере позволяет оценить именно красоту и "магию" рекурсии. Так что я даже сегодня решил на уроке информатики в 8 классе, забегая вперёд, с её помощью познакомить учеников с рекурсией: дать самое общее представление о ней, но, в первую очередь - ЗАИНТЕРЕСОВАТЬ детей! И, кажется, эффект был...))) 
4 Рекурсия. Факториал 00:04:35
1 тест
85 чел. ★ 4.9 Done
  На этом уроке мы пойдём в гости к роботу Шарпу.

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

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

Задание:
Решить задачу «Общий делитель».
Отчёт отправил: 7980. Сергей Лузум Выполнено за 24 час. 00 мин. [Показать отчёт]
Научился: Искать разные способы решения одной задачи. 
Сложности: Минимизировать время работы программы, не изменяя алгоритма. Пока не смог. 
Комментарии: Со скоростью работы программы осталось много непонятных моментов, с которыми постараюсь разобраться. В частности, при вычислении НОД(33333333, 1111) программа зависает, если вместо if (a>b) return NOD(a-b,b); написать { long c = a-b; ... if (a>b) return NOD(c,b); 
7 Рекурсия. Обратный отсчёт 00:05:52
1 тест
77 чел. ★ 4.9 Done
  На этом уроке мы пойдём в гости к роботу Шарпу.

Задание:
Решить задачу «Обратный отсчёт».
Отчёт отправил: 7980. Сергей Лузум Выполнено за 10 мин. [Показать отчёт]
Научился: Ничему. 
Сложности: Ничего.) 
Комментарии: Всё хорошо! 
8 Рекурсия. Фракталы. Спираль 00:25:42
88 чел. ★ 5 $
  На этом уроке мы сначала сделаем заготовку
для рисования линий на форме, а потом
нарисуем спираль используя рекурсию.
Потом мы её немного изменим,
чтобы наша спираль стала
настоящим фракталом.
9 Рекурсия. Фракталы. Треугольник Серпинского 00:23:41
1 тест
72 чел. ★ 5 $
  На этом уроке мы будем рисовать треугольник Серпинского.
Нам опять поможет рекурсия, которая будет "тройной",
потому что на каждом следующем шаге мы
будем рисовать три новых треугольника.
10 Рекурсия. Фракталы. Кривая Гильберта 00:35:18
1 тест
60 чел. ★ 5 $
  На этом уроке мы нарисуем кривую Гильберта.
Да-да, ту самую, которую ты рисовал
на листике в начале курса Комбинаторика.
Мы здесь познакомимся с косвенной рекурсией,
это когда несколько функций вызывают друг друга.
11 Комбинаторика. Счастливые билеты 6 00:02:33
1 тест
68 чел. ★ 4.8 Done
  На этом уроке мы рассмотрим самый простой
способ решения комбинаторных задач,
с использованием вложенных циклов.

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

Задание:
Решить задачу «Счастливые билеты N».
Скачать книжку для чтения по комбинаторике:
Как решать комбинаторные задачи.
Отчёт отправил: 7980. Сергей Лузум Выполнено за 3 час. 00 мин. [Показать отчёт]
Научился: Работе с массивами, решил задачу в общем виде. 
Сложности: Решить математически. Здесь уже не рекурсия, иначе программа будет работать очень долго. 
Комментарии: Всё-таки, решил сделать программу, решающую задачу для довольно больших N.     class Program     {         static void Main(string[] args)         {             long[] sum, sum2;             long S = 0;             int N;             N = int.Parse(Console.ReadLine());             sum = new long[9 * N + 1];             sum2 = new long[9 * N + 1];             for (int i = 0; i <= 9*N; ++i)                 sum[i] = 0;             for (int i = 0; i <= 9; ++i)             {                 sum[i] = 1;                 sum2[i] = 1;             }             if (N > 1)                 for (int k = 2; k <= N; ++k)                 {                     for (int i = 0; i <= 9 * k; ++i)                     {                         switch (i)                         {                             case 0: sum[i] = 1; break;                             case 1:                             case 2:                             case 3:                             case 4:                             case 5:                             case 6:                             case 7:                             case 8:                             case 9: sum[i] += sum[i - 1]; break;                             case 10: sum[i] += sum[i - 1] - sum[i - 10]; break;                             default: sum[i] += sum[i - 1] - sum2[i - 10]; break;                         }                         Console.Write("{0,2:D}, ", sum[i]);                     }                     sum.CopyTo(sum2, 0);                     Console.WriteLine();                     Console.WriteLine();                 }             for (int i = 0; i <= 9 * N; ++i)                 S += sum[i] * sum[i];             Console.WriteLine(S);             Console.ReadKey();             //for (int a = 0; a < 10; ++a)             //    for (int b = 0; b < 10; ++b)             //        for (int c = 0; c < 10; ++c)             //            for (int d = 0; d < 10; ++d)             //                for (int e = 0; e < 10; ++e)             //                    for (int f = 0; f < 10; ++f)             //                        if (a + b + c == d + e + f)             //                            console.writeline("{0} {1} {2} {3} {4} {5}", a, b, c, d, e, f);         }     }  
13 Комбинаторика. 4 x 4. Ладья x Ферзь 00:26:01
1 тест
74 чел. ★ 5 Done
  На этом уроке мы рассмотрим две шахматные задачи,
про расстановку ладьей и ферзей на доске, чтобы они не рубили друг друга.
Задачи решаются первым способом - перебор вариантов без использования рекурсии.

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

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


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

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


Отчёт отправил: 7980. Сергей Лузум Выполнено за 3 час. 00 мин. [Показать отчёт]
Научился: Договариваться с Роботом-Шарпом и вникать в тонкости рекурсии. 
Сложности: МНОГО (БЫЛО БУЛОК) 
Комментарии: 1. Долго не мог понять, почему зависает Робот-Шарп. Выяснилось, что забыл вводить его начальные данные. 2. Перебор вариантов у меня начинался с первой цифры первого слагаемого - отсюда ошибки в примерах 3 и 4 или при переборе всех варианотв "вылет" по таймауту. Понял это только тогда, когда "подсунув" Шарпу правильные ответы, смог просмотреть решения остальных участников и... не найти в них ничего нового. Скопировал одно из решений себе, запустил... все результаты "ВЕРНО"! Вот тут, наконец, всё и разъяснилось.))) 
16 Комбинаторика. Математические операции 00:22:34
1 тест
63 чел. ★ 5 Done
  Продолжаем комбинаторную практику.
Дан ряд цифр и одно число, например:
1 2 3 4 5 6 7 8 и 100.
Расставить между цифрами знаки
"пробел", "умножить", "плюс" и "минус"
таким образом, чтобы получилось заданное число.

Отчёт отправил: 7980. Сергей Лузум Выполнено за 3 час. 00 мин. [Показать отчёт]
Научился: Узнал, как можно организовать вычисление выражений, содержащих действия с разным приоритетом. Ещё раз проработал рекурсию. 
Сложности: Всё было понятно! 
Комментарии: Насколько я понял, для любого такого калькулятора размер стека операций должен быть не меньше числа рангов (разных приоритетов) операций, не считая операции "=" с её низшим "нулевым". Для "нашего" примера всё работало при размерности 3.  
17 Полуфинальный урок. Ответы на вопросы без видео
59 чел. ★ 4.9 Done
  Ты уже практически закончил курс «Комбинаторика».
Пожалуйста, ответь на несколько вопросов.
Эти ответы пригодятся тебе при записи видеоотзыва.
(видео в этом уроке нет)
Отчёт отправил: 7980. Сергей Лузум Выполнено за 15 мин. [Показать отчёт]
Научился: Подвёл итоги по пройденной части курса. 
Сложности: Здесь ничего. 
Комментарии: 1. Больше всего понравились задача с ферзями (для N) и калькулятор. Ещё алгоритм заливки очень красив! Трудно из них выбрать лучший... 2. Да. Всё-таки, подход к решению комбинаторных задач математика и программиста заметно отличаются. Математический я знал, а вот со вторым хорошо познакомился в этом курсе. 3. Пока нет. 4. Самым ценным, наверное, оказался алгоритм калькулятора (принципиально новый для меня). 5. Лузум Сергей. 
18 Динамика. Поле дураков 00:18:40
1 тест
65 чел. ★ 5 Done
  Вступление в тему "Динамическое программирование".
Решение олимпиадной задачи "Поле дураков".
Отчёт отправил: 7980. Сергей Лузум Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: Очевидное (шаблонное) решение далеко не всегда будет лучшим. 
Сложности: Будет. Найти ошибку в своём рекурсивном алгоритме. Приведённый пример решает верно, а неизвестный "тестовый 0" - неверно. 
Комментарии: Получилось, что два раза решал задачу. Сначала написал свою программу, которая застопорилась на первом же тесте, а потом по уроку сделал второй вариант. Было бы неплохо увидеть начальные данные теста, чтобы найти ошибку в своём варианте. 
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


Отчёт отправил: 7980. Сергей Лузум Выполнено за 5 час. 00 мин. [Показать отчёт]
Научился: Узнал, в чём заключается идея динамического программирования. 
Сложности: Самому решить задачу "математически" - из указанных 5 часов, пожалуй, часа 3 - 4 ушло на решение задачи в общем виде. 
Комментарии: Всё отлично!!! Только рискну решение задачи в Excel-e выложить в своём варианте - вдруг, кому-то будет интересно? (Пока придумывал алгоритм, тоже решил использовать Excel для проверки разных способов). Отличие моего решения только формальное (коротко описал в отзыве к вебинару).  
20 Динамика. Выход из Лабиринта 00:59:02
1 тест
55 чел. ★ 5 Done
  Мы рассмотрим наиболее популярный, интересный и полезный алгоритм теории графов:
Поиск кратчайшего пути в графе. В основе идеи лежит принцип динамического программирования.

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

Прошу перед уроком ознакомиться со следующими материалами:
1. Очередь в C#.
2. Поиск в ширину в графе.
Отчёт отправил: 7980. Сергей Лузум Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: 1. Освоил алгоритм поиска в ширину. 2. Приобрёл опыт работы с очередью. 
Сложности: Ничего!) 
Комментарии: Очень интересный и понятный урок!) 
21 ФИНАЛЬНЫЙ УРОК 00:23:23
40 чел. ★ 4.9 $
  Задание
Записать видео обзор твоих лучших программ этого курса.
22 VIP. Простые числа. Оптимизация алгоритма 01:19:28
1 тест
42 чел. ★ 5 $
  Пишем функцию для поиска простых чисел и
поэтапно оптимизируем её в двух направлениях.
  Итого:   22 видеоурока 9 час. 57 мин.
21 тест
29 чел. ★ 4.95  
  Финалисты:   Елена,   alexmail19Q,   Максим Лапшинов,   Андрей Поляков,   Vera,   Иван,   Артём,   Tekashnik,   Михаил Ермишин,   Николай,   Alcatraz,   Den Andreevich,   Дмитрий,   Иван Воронин,   Алексей В.,   Новопашин Владимир,   Сергей Зулкарнаев,   Алексей Малышев,   Александр,   Sergio,   Сергей Стефаненко,   Денис,   chokayes,   ser2018,   Дмитрий,   Илья,   Яков,   MaxB,   Tim .

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





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

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

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

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


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



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