Си шарп с нуля

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

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

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

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

После взноса  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 1. Консольная игра. Добро пожаловать! 00:06:21
3 теста
54 чел. ★ 4.9 Done
  Дорога длиной в тысячу миль начинается с первого шага.

На этом уроке мы поговорим о предстоящем путешествии и сделаем наш первый шаг - создадим консольное приложение.
Отчёт отправил: 9913. vip Выполнено за 2 час. 29 мин. [Показать отчёт]
Научился: Избавляться от статического метода консольного приложения интересным способом. 
Сложности: нет проблем 
2 Марионетка 00:06:01
43 чел. ★ 5 Done
  На этом слайде мы сделаем управление символом с клавиатуры.
Отчёт отправил: 9913. vip Выполнено за 14 мин. [Показать отчёт]
Научился: Реализация управление простым объектом=5! 
Сложности: все отлично! 
3 Представление выделяется 00:04:02
2 теста
43 чел. ★ 5 Done
  Show must go on!
На этом слайде мы вынесем команды для работы с экранам в отдельный класс View.
Отчёт отправил: 9913. vip Выполнено за 35 мин. [Показать отчёт]
Научился: Как выделить часть кода в отдельный метод быстро и лаконично. Но и так же выделенные методы запихнуть в класс и все причесать по коду. Витольдович ты лучший! Такого суппер простого и понятного разъяснения я еще нигде никогда не встречал. 
Сложности: не возникало проблем! Следующее, что хотелось бы отрефакторить, в соответствии с MVC - это обработка нажатых клавиш. 
4 Модель игры 00:06:57
40 чел. ★ 5 Done
  На этом слайде мы выделим логику, модель в отдельный класс Game.
Отчёт отправил: 9913. vip Выполнено за 40 мин. [Показать отчёт]
Научился: Логика игры ушла в отдельный класс. Создан метод перемещения объекта 
Сложности: мелкие ошибки по коду - ну это стандартно победимо! 
5 Контроллер не спешит 00:06:43
1 тест
39 чел. ★ 4.9 Done
  На этом слайде мы сформулируем задачи контроллера и выделим его в отдельный класс.
Отчёт отправил: 9913. vip Выполнено за 1 час. 58 мин. [Показать отчёт]
Научился: Создали класс контроллера и подвели программу под стандартную модель MVC 
Сложности: Понять как это устроено и почему же это все-таки работает.  
6 Цветной телевизор 00:03:50
1 тест
38 чел. ★ 4.9 Done
  На этом слайде мы создадим ещё одно представление и задействуем его в программе.
Отчёт отправил: 9913. vip Выполнено за 3 час. 7 мин. [Показать отчёт]
Научился: Применять новое представление для интерфейса отображения. А именно - реализовывать цветную схему. 
Сложности: немного пока не укладывается как это все взаимосвязано на коде MVC Интуитивно понятно, но по конкретике пока сложновато самому до такого дойти. Пока мало опыта. Переключать представление нужно в начале игры функция start() можно передать параметр для отображения. 
7 Видный интерфейс 00:04:45
2 теста
37 чел. ★ 4.9 Done
  На этом слайде мы создадим интерфейс IView и задействуем его в классе Game.
Класс Game теперь не зависит от конкретной реализации его представления.
Попробуйте сделать то же самое через абстрактный класс.
Отчёт отправил: 9913. vip Выполнено за 21 мин. [Показать отчёт]
Научился: Было интересно реализовать работу с интерфейсом. Всего-то меняем пару строчек кода, а результат на лицо. 
Сложности: абстрактный класс это для меня как-то пока туманно 
8 Игра в библиотеке 00:05:01
37 чел. ★ 4.9 Done
  На этом слайде мы выделим логику игру в отдельную библиотеку.
Отчёт отправил: 9913. vip Выполнено за 19 мин. [Показать отчёт]
Научился: Подключили библиотеку отрезав от проекта. Замечательно вышло. 
9 2. Рефакторинг. Перечисление субъектов 00:05:24
31 чел. ★ 4.9 Done
  Приступаем к рефакторингу.
На этом слайде мы составим список "главных героев", которые могут быть отображены на экране.
Отчёт отправил: 9913. vip Выполнено за 49 дней 22 час. 43 мин. [Показать отчёт]
Научился: Создал класс в котором перечислены игровые объекты 
Сложности: вспомнить код после долгого перерыва 
10 Показ героя на экране 00:06:31
28 чел. ★ 5 Done
  На этом слайде мы задействуем перечисление субъектов в интерфейсе представления и во всех его реализациях.
Отчёт отправил: 9913. vip Выполнено за 33 мин. [Показать отчёт]
Научился: Внес изменения в метод отображения 
11 Координатная структура 00:10:25
28 чел. ★ 5 Done
  На этом слайде мы создадим структуру Coord для хранения координат объекта на карте.
Отчёт отправил: 9913. vip Выполнено за 11 час. 43 мин. [Показать отчёт]
Научился: Создал отдельным классом структуру рабочая точка с двумя координатами 
12 Карта сокровищ 00:06:43
28 чел. ★ 5 Done
  На этом слайде мы создадим класс Level, в котором будет храниться карта уровня.
Благодаря этому классы мы сможем узнать, что в какой клетке поля находится.
Отчёт отправил: 9913. vip Выполнено за 2 час. 26 мин. [Показать отчёт]
Научился: Создал новый класс. Сделал там методы для объектов живности (проверить живность, поместить живность на поле игры - пусть это будут коровы) 
Сложности: Есть мыслишки создать еще один класс - инициализация уровня Ну и соответственно в этом классе расставить фишки по своим местам что бы потом с ними можно было бы поиграть согласно правилам которые мы еще не придумали 
13 Шаги по карте 00:05:31
1 тест
28 чел. ★ 5 Done
  На этом слайде мы задействуем класс Level в классе логики Game
Отчёт отправил: 9913. vip Выполнено за 1 час. 19 мин. [Показать отчёт]
Научился: Описал Level в классе game. Отрефакторил код  
Сложности: нашел у себя ошибку в методе move - исправил Ступил почему контроллер про старт ругается потом разобрался (видимо усталость к вечеру сказывается - лень набросилась на мозг) Странно с переданным уровнем в методе start(level) у меня почему-то программу ни на что не отругалась и продолжила работать как ни в чем не бывало 
14 Генерация лабиринта 00:07:29
1 тест
28 чел. ★ 5 Done
  На этом слайде мы сгенерируем лабиринт и отобразим его на экране.
Отчёт отправил: 9913. vip Выполнено за 3 час. 38 мин. [Показать отчёт]
Научился: Проинициализировал первый уровень Прикольно что номер урока у меня стал совпадать с текущей датой 
Сложности: побил ошибки в коде по размерности консольного окна 
15 Координатный перебор 00:06:51
1 тест
28 чел. ★ 5 Done
  На этом слайде мы создадим в структуре Coord метод для перебора всех координат, ограниченных указанным размером
Отчёт отправил: 9913. vip Выполнено за 19 мин. [Показать отчёт]
Научился: Круто получилось заузинговать IEnumerable Как ни странно 15 урок 15 числа - магия! 
Сложности: надо бы пройтись еще разок по итератору для лучшего усвоения сложно этот елд перварить 
16 Подходящий размер! 00:04:50
28 чел. ★ 5 Done
  На этом слайде мы добавим проверки размеров нашего уровня.
Для этого мы добавим в структуру Coord ещё один метод Coord.InSize().
Отчёт отправил: 9913. vip Выполнено за 23 час. 5 мин. [Показать отчёт]
Научился: Прописал в классе координат метод проверки границ поля игры 
Сложности: нашел ошибку в методе move - придавил ее есть еще какие-то косяки по коду надо бы пройтись повнимательнее посмотреть 
17 Правила игры 00:10:18
1 тест
27 чел. ★ 5 Done
  На этом слайде мы добавим проверку правил игры, чтобы главный герой не мог забираться на стенки.
Отчёт отправил: 9913. vip Выполнено за 19 час. 21 мин. [Показать отчёт]
Научился: Проблему курсора решил так Console.CursorVisible = false; еще пару уроков назад в методе start() класса Game() - раз и навсегда одним махом 
Сложности: магия чисел продолжается 17-ый урок 17-го числа 
18 Дорога из жёлтого кирпича 00:01:42
1 тест
27 чел. ★ 5 Done
  На этом слайде мы разукрасим уровень - установим разные цвета для разных субъектов
Отчёт отправил: 9913. vip Выполнено за 8 мин. [Показать отчёт]
Научился: Классный такой урок получился чисто Воскресенской прохладительный такой. Как ветер в поле. Суппер! 
Сложности: Магия числе 18 урок 18 числа месяца 
19 Ищи ветра в поле 00:06:36
1 тест
26 чел. ★ 5 Done
  На этом слайде мы напишем метод, который найдёт месторасположение субъекта на карте.
Воспользуемся этим методом для инициализации первоначальных координат игрока.
Отчёт отправил: 9913. vip Выполнено за 1 час. 50 мин. [Показать отчёт]
Научился: Не совсем понял зачем нам искать что-то по полю. Ну видимо дальше будет ясно. Создали несуществующую координату (-1,-1) 
Сложности: не совсем понятен вопрос зачем нам создавать переменные у которых указываем параметры запрета на изменение если мы эти переменные и не собираемся менять... (тот самый случай а вдруг - это вот для чего применимо???) магия чисел 19 число 19 урок продолжение следует 
20 Координатный рефакторинг 00:10:17
1 тест
26 чел. ★ 5 Done
  На этом слайде мы добавим в структуру Coord операторы == и !=,
а также добавим метод проверки нахождения координат на краю поля.
Отчёт отправил: 9913. vip Выполнено за 12 час. 52 мин. [Показать отчёт]
Научился: Понятие operator было новым в изучении C# #region - так же удивило как и то что спрятано внутри У меня координатная область немного не так задана в связи с выводом информации о правилах игры поэтому пришлось повозиться для корректного отображения 
Сложности: Магия чисел продолжается 20 урок 20 числа ентого месяца Кстати про тестирование - есть один очень интересный метод программирования когда с начало пишутся тесты а потом программа 
21 Собери монетки 00:17:17
1 тест
26 чел. ★ 5 Done
  На этом слайде мы добавим в игру монетки,
научимся их собирать и при этом добавлять новые.
Отчёт отправил: 9913. vip Выполнено за 4 час. 5 мин. [Показать отчёт]
Научился: Реализовал предложенные методы и рефакторинг кода Создал переменную в классе game под названием count для подсчета и отображения очкоff. Вот с отображением поля для игры после отрисовки очков конечно проблема - пока не победил - поле исчезает... 
Сложности: Магия чисел продолжается 21 урок 21 числа 
22 3. Тестирование. Тестовый прогон 00:10:10
26 чел. ★ 5 Done
  Мы приступаем к очередному этапу созданию программы - написание unit-тестов.
На этом слайде мы создадим класс тестирования для структуры Coord.
Отчёт отправил: 9913. vip Выполнено за 10 час. 9 мин. [Показать отчёт]
Научился: Да тестирование это хорошая тема. Есть специальная ветка разработки через тестирование. Магия чисел 22 урок 22.11.2018 
Сложности: Не совсем понятна логика как мы создавали алгоритм тесту вернее совсем да же непонятно что именно и как будет тестировать не ну я не совсем уже про то что совсем не понятно я про то что именно в классе coord кто догадался тестировать именно координаты и именно так а там еще много чего есть внутри класса- кто это будет тестировать? 
23 Тест обратной стороны Луны 00:08:20
26 чел. ★ 5 Done
  На этом слайде мы напишем тесты для методов InSize() и OnSide().
Отчёт отправил: 9913. vip Выполнено за 1 час. 14 мин. [Показать отчёт]
Научился: Создали и запустили еще пару тестов для проверки 
Сложности: магия чисел продолжается ч-ёрт побъ-е-ри  23 урок 23.11.2018 
24 Случайное тестирование 00:06:55
25 чел. ★ 5 Done
  На этом слайде мы напишем тест для методов Coord.YieldCoords() и Coord.GetRandom()
Отчёт отправил: 9913. vip Выполнено за 1 день 23 час. 9 мин. [Показать отчёт]
Научился: Написали еще 2 теста для проверки работы программы  
Сложности: магия чисел сбилась нужно компенсировать срочно 26.11.2018 а урок еще 24 
25 Лабиринты тестирования 00:09:41
1 тест
25 чел. ★ 5 Done
  На этом слайде мы создадим тест для класса Level
Отчёт отправил: 9913. vip Выполнено за 1 мин. [Показать отчёт]
Научился: Евгений Витольдович провел ликбез по написанию тестов 
26 Поиск монеток на поле Дураков 00:08:51
25 чел. ★ 5 Done
  На этом слайде мы закончим создание тестов для класса Level
Отчёт отправил: 9913. vip Выполнено за 23 час. 55 мин. [Показать отчёт]
Научился: Просмотрел создание тестов писать больше не стал не вижу смысла. Как-то не заинтересовало для данной задачи. Скучно 
27 Внутренний мир Субъекта 00:03:26
24 чел. ★ 5 Done
  На этом слайде мы изменим модификатор доступа для метода Level.SetSubject()
Отчёт отправил: 9913. vip Выполнено за 10 час. 4 мин. [Показать отчёт]
Научился: Изменили SetSubject на internal 
28 Прогулка за ручку 00:12:10
22 чел. ★ 5 Done
  На этом слайде мы протестируем самый главнный класс Game в нашей библиотеке.
Отчёт отправил: 9913. vip Выполнено за 37 мин. [Показать отчёт]
Научился: Создали Unit test для класса game.cs  
Сложности: Что-то после написания тестов пропало желание вообще что-либо программировать Вообщем текущий конец данного курса меня окончательно расстроил Начиналось все так хорошо - Онлайн игра. А на выходе - 1 за долларом носится..... будем ждать вот этого и ТД и ТП 
  Итого:   28 видеоуроков 3 час. 23 мин.
18 тестов
22 чел. ★ 4.98  
  Финалисты:   Trira,   Александр,   Слава,   Дмитрий Че,   Иван Воронин,   Andrew,   Дмитрий,   DimanDOS,   Chip,   Tekashnik,   Александр,   vip,   Алексей В.,   Максим Лапшинов,   Александр Балбашов,   Никита,   Yefim,   Max,   Николай Денисов,   Дмитрий,   MaxB,   Alina .

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





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

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

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

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


Научился: Мухи отдельно, котлеты отдельно. Все параметры по умолчанию передаются в методы по значению, то есть, проще говоря, копируются. При передаче по значению метод получает не саму переменную, а ее копию. При передаче параметра по ссылке метод получает адрес переменной в памяти.



Научился: Устанавливать англоязычный интерфейс для VStudio и создавать пустое решение из windowsForms)
Трудности: У меня при выборе проекта нет такого варианта как BlankSolution)) Уж чего я только ни сделал, чтобы его найти - и английский интерфейс докачал и еще какое-то средство разработки VS, но увы. В итоге создал проект windowsForms и удалил его содержимое. Получилось так же и все работает - "кто бы мог подумать"))