Обучение программированию c# онлайн

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

основатель — Волосатов Евгений Витольдович

Интернетный бот

Система авто-управления сайтом

Это более 20 уроков по написанию программы,
Выполняющей за тебя рутинные операции.
Мы пройдемся по всем этапам разработки.
Решим какие операции не приносят радости,
И их просто необходимо автоматизировать!
Мы проведем тебя по всему пути создания бота.
С нами ты обязательно дойдешь до финиша!
И получишь бесценные знания, опыт.
У тебя в руках будет мощный инструмент для работы с HTML.

Что ты получишь, пройдя курс:

+ Понимание HTML документа
+ Знания, для прохождения авторизации
+ Навык автоматизировать однотипные действия
+ Опыт, позволяющий тебе работать с динамическими ссылками
+ Универсальный инструмент для работы с контентом сайта.

Внимание! Заметьте, существует много инструментов и фреймворков для работы с HTML документом, но сторонние библиотеки не участвуют в разработке проекта, используются только встроенные возможности языка программирования C#.

После окончания курса у тебя будет полноценный,
Рабочий бот, выполняющий за тебя все операции.

Преимущества курса
+ Практические задания
+ Показаны различные возможности
+ Без сторонних библиотек
+ Курс не утяжелен теорией
+ Чёткий пошаговый алгоритм: повтори и получи
+ Универсальный подход к написанию (применяй в любых своих разработках)
+ Автоматизируй свою работу!

Хочу купить!

Купить в рассрочку за мегахеши

Цена: 2500 p.


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

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 FREE Видеообзор Игры 00:06:05
39 чел. ★ 4.6 Done
  Описание игры Небоскребы, для которой
мы будем создавать систему автоматического управления сайтом,
или проще - веббота на языке C#.

Отчёт отправил: 8275. Tekashnik Выполнено за 23 мин. [Показать отчёт]
Научился: Играть в игру Небоскрёбы 
Сложности: Сложно было, сидеть и играть в эту нудную игру 
Комментарии: Вообще не очень люблю игры, тем более такого характера 
2 Планирование функций 00:12:35
22 чел. ★ 4.9 Done
  Напишем список функций, проанализируем какой необходим алгоритм для будущего Робота
Нарисуем блок-схему.
Вопрос: Какие ещё функции нужно добавить в список?

Отчёт отправил: 8275. Tekashnik Выполнено за 34 мин. [Показать отчёт]
Научился: Рисовать блок-схему 
Сложности: Придумывать, что было самым сложным 
Комментарии: Какая приставучая игра, теперь я в неё играю :D Функции дополнительные можно: - постройка этажей - перераспределение рабочих - участвовать в жизни города (это с 15ого уровня) :D Да, да.... я дошёл до 18ого ^~D 
3 Подготовка формы 00:21:15
22 чел. ★ 4.8 Done
  Создадим первую форму и начнем её заполнять необходимыми элементами.

Задание: Написать метод изменения страницы браузера из адресной строки

Отчёт отправил: 8275. Tekashnik Выполнено за 35 мин. [Показать отчёт]
Научился: Повторил создание формы и причендалов на ней 
Сложности: Придумать, что было самым сложным 
Комментарии: Всем добра. 
4 Проверяем авторизацию 00:19:49
20 чел. ★ 4.9 Done
  Добавим проверку авторизации. Допишем, если авторизации нет, то переходить на страницу авторизации

Задание: Добавить кнопку Авторизация. Написать метод проверки авторизации

Отчёт отправил: 8275. Tekashnik Выполнено за 45 мин. [Показать отчёт]
Научился: Закрепил изменение атрибутов HTML страницы 
Сложности: Придумать, что было самое сложное 
Комментарии: Хорошее начало, посмотрим, что будет дальше)) 
5 Авторизация 00:14:08
18 чел. ★ 4.9 Done
  1. Создаем метод проверки авторизации возвращающий логическое значение (True / False)
2. Пишем авторизацию с заполнением полей
Задание: Приложить скрин со скрытым паролем.

Отчёт отправил: 8275. Tekashnik Выполнено за 32 мин. [Показать отчёт]
Научился: Выполнять авторизацию на простых сайтах 
Сложности: Придумать, что было самым сложным 
Комментарии: Я уже урока до 6 сам всё написал, так что посмотрим, как автор это всё реализует 
6 Робот приступает к действиям 00:21:04
18 чел. ★ 4.8 Done
  1. Разбираем действия "Собрать выручку"
2. Переходим на Собирание выручки
3. Получаем первую ссылку на сбор выручки
4. Кликаем по ссылке(переходим по ней)
5. Тоже самое проделываем с "Выложить товар"
Задание: Написать список ссылок, для перехода на другие функции

Отчёт отправил: 8275. Tekashnik Выполнено за 45 мин. [Показать отчёт]
Научился: Кликать по ссылкам 
Сложности: Придумывать, что было самым сложным 
Комментарии: Ну я немного не так реализовывал, но конва прослеживается) 
7 Робот ходит за покупками 00:28:27
18 чел. ★ 4.9 Done
  1. Разбираем закупку
2. Пишем метод перехода на Закупить
3. Дописываем условие для "Закупить товар"
4. Объединяем три метода в один
Задание: При смене метода изменять название кнопки

Отчёт отправил: 8275. Tekashnik Выполнено за 34 мин. [Показать отчёт]
Научился: немного рефакторить 
Сложности: Придумывать, что было самым сложным 
Комментарии: Пишу бота номер 2, а пока первый повышает моё благосостояние :) 
8 Лифтёра вызывали? 00:20:42
18 чел. ★ 4.9 Done
  1. Пишем метод поднятия на лифте
2. Пишем метод выполнения заданий
Вопрос: что нужно добавить и где, чтобы выполнялись не более 7 заданий?

Отчёт отправил: 8275. Tekashnik Выполнено за 45 мин. [Показать отчёт]
Научился: Отточил мастерство в набирании однообразных функций и условий 
Сложности: Набирать однообразные функции и условия (это я лукавлю.... я знаю Copy/Paste) (= 
Комментарии: На странице quest найти строчку.Contains("7 из 7") если true то выходим из функции) По мне так лучше использовать Contains вместо двух условий string > X && string == "this.string" 
9 Сегодня выполняем 00:26:56
18 чел. ★ 4.8 Done
  1. Ставим проверку на то, сколько заданий выполнено
2. Пишем метод определения выполненных заданий
Вопрос: как сделать перечисление методов, чтобы избавиться от строки?

Отчёт отправил: 8275. Tekashnik Выполнено за 43 мин. [Показать отчёт]
Научился: Резать строки, парсить числа 
Сложности: Придумывать, что было самым сложным 
Комментарии: Мне кажется, условия усложнены, можно сделать проще, напимер как у меня) см. скрин Что касается строковой переменой, можно enum сделать, строковый массив, строковый list, строковый ... 
10 Работа - работа, перейди на Федота, а с Федота... 00:21:31
18 чел. ★ 4.8 Done
  1. Пишем отдельный метод Rabota
2. Добавляем таймер
3. Проверяем работу Робота
Вопрос: как определить что страница уже загрузилась?

Отчёт отправил: 8275. Tekashnik Выполнено за 31 мин. [Показать отчёт]
Научился: Делать из ЧекБокса кнопку 
Сложности: Да вроде ничего сложным не было, сложный вопрос, который автор задания задал, на него бы я хотел получить ответ 
Комментарии: Всем здравствуйте ну и начнём. Проблема загрузки страницы меня волнует уже некоторое врёмя, я много гуглил, есть разные решения, но 100% универсального решения нет. Для нашего случая (случай очень простой и лёгкой html страницы) всё очень просто: if (webbrowser.DocumentCompleted != WebBrowserReadyState.Complete)           Application.DoEvents(); можно ждать наступление события webBrowser_DocumentCompleted И в нашем случае это прокатит, но есть случаи когда на странице несколько фреймов и по завершению загрузки каждого будет срабатывать событие webBrowser_DocumentCompleted, и в общем случае непонятно сколько таких событий должно быть, если не рассматривается одна конкретная страница и под неё всё не затачивается. А ещё весёлый случай когда WebBrowserReadyState.Complete не наступает, то есть страница его вообще не достигает а замирает на WebBrowserReadyState.Interactive - тоже неприятная ситуация. Вот вопрос к создателю, знает ли он универсальный способ (для любой страницы) определения загрузилась ли она?  
11 Лабиринт Минотавра 00:32:54
18 чел. ★ 4.8 Done
  На уроке мы напишем метод открывания случайной двери
Вопрос: какие нужны проверки для корректной работы метода?

Отчёт отправил: 8275. Tekashnik Выполнено за 49 мин. [Показать отчёт]
Научился: Открывать двери невидимой рукой. 
Сложности: Придумать, что было самым сложным 
Комментарии: Наш рандом в таком виде будет работать, если только наши ссылки будут всегда первыми, иначе будет фигня. Так и не понял, почему называется лабиринт :) Ведь по факту лучше наверное назвать "Двери", ну да ладно это кому как нравится. А проверки... ну во-первых по наличию ключей, а второе нужно выигрыш как то забрать ежели мы дошли до конца) Интересно подбить статистику, как часто рандом будет доходить до конца) 
12 Лабиринт Минотавра и нить Ариадны 00:18:14
17 чел. ★ 4.8 Done
  Напишем метод определение текущей двери и метод определения текущего количества ключей.
Задание: добавить два текстовых поля и вывести информацию с количеством ключей и номеру текущей двери в соответствующие текстовые поля.

Отчёт отправил: 8275. Tekashnik Выполнено за 58 мин. [Показать отчёт]
Научился: Возиться с ключами, комнатами, и другой чепухой 
Сложности: Придумывать, что было самое сложное 
Комментарии: По мне так вообще с начала не нужно начинать открывать двери если ключей меньше 10 
13 Уборка помещений 00:51:26
17 чел. ★ 4.8 Done
  1. Пишем метод подсчета ключей
2. Создаем новый класс BrowserClass
3. Переносим все методы внутрь
Вопрос: где должна располагаться переменная перечисления mode?

Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 32 мин. [Показать отчёт]
Научился: Рефакторить 
Сложности: Не запутаться в многообразии неотрефакторенного кода 
Комментарии: Я уж думал мы не будем создавать новых классов, но был приятно удивлён. Сделать mode публичной и пользовать из одного места, скажем из формы 
14 Цикличность бытия 00:32:34
17 чел. ★ 4.8 Done
  1. Пишем метод NextStep()
2. Пишем метод проверки, нужен ли цикл
Вопрос: в какое время нужно программно останавливать работу таймера?

Отчёт отправил: 8275. Tekashnik Выполнено за 49 мин. [Показать отчёт]
Научился: программно переключать состояния 
Сложности: Придумать, что было самым сложным 
Комментарии: Вспомнил замечание! У нас же закупка по верхней цене происходит, а выгодней по нижней, это нужно исправить срочно! Останавливать таймер нужно когда NeedCicle() вернёт false 
15 Сколько времени? 00:22:32
16 чел. ★ 5 Done
  1. Добавляем настройки запуска робота
2. Добавляем информацию о времени запуска
Вопрос: Как и в какое место нужно установить обновление страницы в браузере, чтобы получить свежие данные по необходимости повтора цикла?

Отчёт отправил: 8275. Tekashnik Выполнено за 39 мин. [Показать отчёт]
Научился: Повтарил, время и форматирование строк 
Сложности: Решить как всё расположить, чтобы влезло время 
Комментарии: У нас же есть в методе Rabota() строчка if (web.ReadyState != WebBrowserReadyState.Complete) return; что ещё надо то? она по моему прекрасно справляется 
16 Настройки меняют настроение 00:33:45
16 чел. ★ 5 Done
  Добавить настройки по выполнению методов, на их основе перепишем метод получения следующего шага
Вопрос: напишите варианты хранения настроек программы (минимум один вариант)

Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 27 мин. [Показать отчёт]
Научился: Рефакторить, проверять 
Сложности: Искать ошибки 
Комментарии: Ну а у меня уже 26 уровень)) Для сохранение настроек можно сделать файл с настройками 
17 С настройками всё в порядке! 00:37:54
16 чел. ★ 5 Done
  Изучаем настройки VisualStudio, заполним значения и попробуем сохранять и получать данные из настроек.
А так же наконец-то добавим Авторизацию в наш цикл и сделаем чтобы всё это крутилось и работало!
Задание: сделать так, чтобы работало прохождение Лабиринта.

Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 49 мин. [Показать отчёт]
Научился: Рефакторить программу и сохранять настройки внутри 
Сложности: не запутаться 
Комментарии: Очень мудрёный код получился,  и что самое странное после 2-3 кругов у меня бот разлогинивается,  пока не могу понять почему это происходит,  а так всё ровно работает 
18 Жители. Выбираем гостиницу 00:23:13
15 чел. ★ 5 Done
  Ищем Гостиницу и попробуем в нее заходить.
Задание: провести анализ жителей Гостиницы. Определить какие жители нужны, а каких необходимо выгонять

Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 13 мин. [Показать отчёт]
Научился: Создавать mode, перебирать коллекции, всё как всегда 
Сложности: не запутаться в запутанном коде 
Комментарии: Выгоняем всех у кого нет 9 или (+) 
19 Жители. Кто следующий? 00:29:45
16 чел. ★ 5 Done
  Рассмотрим жителей, начнем разбирать жителей из Гостиницы и методом перебора будем выбирать тех жителей, с которыми мы будем работать
Задание: написать метод выселения жителя

Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 21 мин. [Показать отчёт]
Научился: перебирать код, туда сюда)) 
Сложности: Уже много всего, ориентироваться не очень просто 
Комментарии: Вот оно моё ДЗ:         private void HumansOut()         {             HtmlElementCollection collection = web.Document.Links;             foreach (HtmlElement link in collection)             {                 if (link.OuterText.Trim() != "" && link.OuterText.Contains("Выселить")  )                 {                     web.Navigate(link.GetAttribute("href"));                 }             }         } 
20 Жители. Кто хочет сегодня поработать? 00:25:52
16 чел. ★ 5 Done
  Напишем три метода: "выселения жителя", "Найти работу", "Устроить на работу".
Задание: красиво и удобно разместить на форме элементы

Отчёт отправил: 8275. Tekashnik Выполнено за 59 мин. [Показать отчёт]
Научился: Выбирать из коллекции элемент, из выбранного элемента делать коллекцию и снова выбирать элемент, и так пока не разложим html на атомы 
Сложности: Придумывать, что было самым сложным 
Комментарии: Собственно на скриншоте мой интрефейс... добавлено состояне в котором находится сейчас бот ну и в принципе ничего пока сверх.. 
21 Жители. Кто не работает - то не ест! 00:20:17
16 чел. ★ 5 Done
  Пишем метод Увольнения сотрудника
Проверяем всю логику программы, подводим итоги.

Отчёт отправил: 8275. Tekashnik Выполнено за 54 мин. [Показать отчёт]
Научился: Писать много if 
Сложности: Не запутаться 
Комментарии: floor/ - не работало потому что нужно было писать floors/  ;) Веселый курс) надо бы что нибудь полезное, доброе, вечное сделать) Вся работа программы в видеообзре будет 
22 ФИНАЛЬНЫЙ УРОК 00:23:23
13 чел. ★ 5 Done
  Задание.
Записать видеообзор любой своей программы.

Отчёт отправил: 8275. Tekashnik Выполнено за 43 мин. [Показать отчёт]
Научился: Записывать видеообзор 
Сложности: Записывать видеообзор 
Комментарии: Полезный курс, спасибо за него Кириллу Шмойлову. Думаю что он пригодится в программировании, для устранения всякой рутины) Рекомендован к прохождению. 
Видеообзор: https://youtu.be/cfRlAry9Ays
23 VIP. Формирование цикла 00:21:06
10 чел. ★ 5 Done
  Формируем супер-цикл

Отчёт отправил: 8275. Tekashnik Выполнено за 56 мин. [Показать отчёт]
Научился: Рефакторить программу, использовать очередь 
Сложности: Придумывать, что было самым сложным 
Комментарии: Да, как сказал автор курса, нет пределу совершенства, ещё воять и воять)) 
  Итого:   23 видеоурока 9 час. 25 мин.
10 чел. ★ 4.9  
  Финалисты:   Новопашин Владимир,   Tekashnik,   Alcatraz,   Дмитрий 199,   Максим Лапшинов,   Ludmila,   Антон,   Роман,   Константин,   Слава .

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





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

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

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

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


Научился: Записывать видеообзор
Трудности: Записывать видеообзор
Полезный курс, спасибо за него Кириллу Шмойлову. Думаю что он пригодится в программировании, для устранения всякой рутины) Рекомендован к прохождению.


Трудности: Записывать видеообзор, ощущение будто на сцене стоишь.
Дико извиняюсь за сухой обзор, очень волновался и меня постоянно отвлекали. Огромная благодарность Кириллу Шмойлову за его труды и за этот обучающий курс, многому на нем научился. Далее планирую пройти курс "Сетевые технологии". Ссылка на видео ниже. https://youtu.be/mN2Dxdh0mVs