C# дистанционное обучение

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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







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



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

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 FREE State - Вступление 00:08:34
17 чел. ★ 5 Done
  Мы начинаем знакомство с шаблоном проектирования Состояние.
На этом уроке мы узнаем назначение этого шаблона и его отличия от Стратегии.
Далее мы напишем две программы:
игру Камень-ножницы-бумага и целый Калькулятор.
Отчёт отправил: 10558. Иван Воронин Выполнено за 15 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: На самом деле очень много картинок нашёл, для примера использования данного шаблона, прикрепил пару изображений, где показано использование при обращении к данным по HTTP протоколу, так же добавлена картинка где данный шаблон используется в игрушке, см. скриншоты. з.ы. шаблон стратегия отличается от шаблона состояние как минимум тем, что при выборе стратегии для решения определённой задачи, она ниизменна до конца выполнения, а в случае с шаблоном "Состояние" в процессе выполнения задачи выбранная статегия может меняться необходимое количество раз. з.з.ы. для примера статегии выбран вариант добираться из пункта А в пункт Б, выбрали к примеру на автомобиле и всё, едем себе и ждём когда приедем, в случае же с шаблоном состояние, выбираем всё тот же автомобиль, едем и уже не радуемся, а надеемся, что доберёмся в срок или вообще доберёмся, так как при этом шаблон в процессе нашей поздки может изменяться состояние автомобиля, водителя, пассажира(ов). 1 - водитель купил с собой выпить, когда вы сели, его состояние было трезвое, далее в пути вы уснули. а он выпил бутылочку и состояние его изменилось, есть шанс остановки и проверки на алкоголь, так же шанс вылететь на встречку, слететь в пропасть. в зависимости от текущего участка дороги и окружающей ситуации и т.д. можно долго рассуждать. 2 - состояние пассажира, может он перекусил недавно, может его укачать и нужно будет остановиться, а может быть вырвало в салоне, водителю может не понравится и он оставит его на дороге, может оказаться, что забыл кошелёк и т.д. тоже вариантов много. 3 - сам автомобиль, может не хватить топлива и когда оно закончится нужно будет либо толкать либо иди пешком, если идти пешком, то либо ловить попутку либо идти до ближайшей остановки. Опять же зависит от окружающей ситуации. 4 - часть пути проехать на авто, потом пересесть на корабль, после чего опять на авто, а можно вместо корабля использовать самолётик местного лётчика, который показывает соседние острова туристам и он знает все места... Опять же всё будет зависеть от состояния окружающих объектов. 
2 State - КНБ - States 00:09:45
16 чел. ★ 5 Done
  Мы начинаем создание программы "Камни, ножницы, бумага"
для демонстрации шаблона проектирования: "State".
На этом уроке мы подготовим основные классы и интерфейс.
Отчёт отправил: 10558. Иван Воронин Выполнено за 30 мин. [Показать отчёт]
Научился: Заготовке шаблона State 
Сложности: найти время 
Комментарии: Отличное начало, мыслей по поводу дальнейшей реализации более одной, поэтому не стал тратить время, так как с ним пока туго, поглядим реализацию на след. уроке. з.ы. добавил класс ConsoleArt(), дополнив его под нужды текущего шаблона. 
3 State - КНБ - Play 00:12:58
16 чел. ★ 5 Done
  Мы продолжаем создание программы "Камни, ножницы, бумага"
для демонстрации шаблона проектирования: "State".
На этом уроке мы реализуем необходимые алгоритмы для того,
чтобы можно было полноценно поиграть.
Отчёт отправил: 10558. Иван Воронин Выполнено за 1 час. 45 мин. [Показать отчёт]
Научился: Закрепил пройденное 
Сложности: найти время 
Комментарии: Использовал свой класс ConsoleArt() для красивого отображения стадий игры. Добавил класс GameScore() для обработки статистики побед обоих игроков, количества сыгранных игр, так же генерацией итоговой статистики. Вначале добавил счётчики в классе Context(), но позже решил вынести статистику в отдельный класс. Объяснять работу на простых примерах отличная идея. идём дальше. 
4 VIP - State - КНБ - JFrame 00:10:08
16 чел. ★ 5 Done
  Мы закончили создание программы "Камни, ножницы, бумага"
для демонстрации шаблона проектирования: "State".
Но на этом уроке мы добавим GUI интерфейс на основе JFrame.
Отчёт отправил: 10558. Иван Воронин Выполнено за 50 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Опять добавили элементы поверх фрейма =), потом хаки писать для корректировки размеров. Я решил сделать так как всегда советую, вначале добавляем папель, потом на панель уже водружаем нужные элементы, в нашем случае кнопочки. Алгоритм инициализации формируется у нас уже не один курс по Java, поэтому использовал его для создания формы нужного размера, плюс тот самый метод pack(). Без него никуда =) Добавил все три кнопки, думаю можно использовать массив кнопок, чтобы код выглядел более компактным. Так же реализовал определение на какую кнопку было нажатие, чтобы изменялась надпись именно на ней. Отличная идея реализовать GUI интерфейс для игрушки. 
5 VIP - State - КНБ - JButtons 00:12:11
16 чел. ★ 5 Done
  Мы продолжаем создание GUI интерфейса для игры "Камни, ножницы, бумага".
На этом уроке мы исправим косметические ошибки и продолжим
реализовывать GUI интерфейс для возможности полноценной игры.
Отчёт отправил: 10558. Иван Воронин Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Отличный завершение для не менее отличного курса по созданию игры "Камни, Ножницы, Бумага". Вначале реализовал сам лейблы, потом посмотрел видео, центровка текста пока не начали играть, после первой игры центровка отключается и информация выдаётся по собственному стилю. Параллельно в консоли отображается консольная версия игры. В GUI версии отображается статистика игр и кто сколько набрал очков. Все элементы располагаются на JPanel, так же исправлен баг при котором объекты панели могли не отрисовываться корректно, пока не свернуть и развернуть форму, оказывается необходимо вызывать эту проверку в критических ситуациях. 
6 ПОЛУФИНАЛЬНЫЙ УРОК без видео
8 чел. ★ 4.8 Done
  Поздравляю c завершением первой части курса.
Напиши, чему ты научился, нравится ли тебе данный шаблон.
Какие видишь преимущества и недостатки.
Отчёт отправил: 10558. Иван Воронин Выполнено за 5 мин. [Показать отчёт]
Научился: Ничему 
Сложности: найти время 
Комментарии: Шаблон очень полезный, используется на 100% в играх, пример: переключение между стадиями отображения игрового меню или непосредственно самой игры, глобальной карты и т.д. При передаче данный по сети тоже данный шаблон будет кстати. Везде где может понадобится переход между состояниями - этот шаблон будет полезен!!! з.ы. Пауза в игре это тоже состояние =) 
7 State - Целый калькулятор - States 00:15:30
15 чел. ★ 5 Done
  Мы начинаем создание целого калькулятора для демонстрации
использования шаблона проектирования State.
На этом уроке мы изучим работу калькулятора.
Отчёт отправил: 10558. Иван Воронин Выполнено за 25 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Я думаю каждую разработку чего бы то ни было нужно начинать с построения схемы, хотя-бы базовой, в процессе разработки можно будет её дополнять, если будет в этом необходимость. 
8 State - Целый калькулятор - Context 00:09:57
16 чел. ★ 5 Done
  Мы продолжаем создание целого калькулятора для демонстрации
использования шаблона проектирования State.
На этом уроке мы реализуем базовую логику.
Отчёт отправил: 10558. Иван Воронин Выполнено за 17 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Пока ничего не могу сказать по поводу того, хватит того, что уже реализовано или нет, будет видно в процессе разработки. 
9 State - Целый калькулятор - Press key 00:08:36
16 чел. ★ 5 Done
  Мы продолжаем создание целого калькулятора для демонстрации
использования шаблона проектирования State.
На этом уроке мы реализуем основной класс Program(),
чтобы можно было тестировать написанный код.
Отчёт отправил: 10558. Иван Воронин Выполнено за 46 мин. [Показать отчёт]
Научился: Закрепил пройденное 
Сложности: найти время 
Комментарии: Добавил свой класс ConsoleArt() и реализовал псевдоинтерфейс калькулятора в консоли =) Избавился от статика. Вначале реализовал метод show() в классе Context() так как нужно было где-то генерировать вид калькулятора, а после увидел в видео, что такой же метод создаётся как раз для той же задачи =) Не стал бежать впереди паровоза, идём в ногу с уроками. =) 
10 State - Целый калькулятор - Logic 00:14:28
16 чел. ★ 5 Done
  Мы продолжаем создание целого калькулятора для демонстрации
использования шаблона проектирования State.
На этом уроке мы реализуем переход между состояниями ввода данных.

Постарайтесь самостоятельно найти все ошибки в программе.
Потом сравните со списком ошибок, которые нашёл Иван Воронин:
https://www.videosharp.info/10558/checking/design-state=1510
Отчёт отправил: 10558. Иван Воронин Выполнено за 1 час. 46 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Тут не одна ошибка в коде, тут их куча! Что было мной выявлено при тестировании калькулятора: 1 - нужно сбрасывать значение второй переменной в методе StateOpers().opers() 2 - нужно произвести калькуляцию в начале метода StateSecond().opers() 3 - в методе calc() добавил проверку: "Делить на ноль нельзя!" 4 - метод calc() перенёс в класс Context(), так как он вызывается не только в StateResult() 5 - не нужно производить калькуляцию при вводе очередного числа в StateResult() 6 - не нужно производить калькуляцию при вводе операции в StateResult() 7 - нужно делать сброс при вводе числа в StateResult() 8 - оставить ситуацию без изменений, если ввести символ, который не поддерживается 9 - что бы не ввели, брать первый символ з.ы. Помимо этого, как видно из скриншота, динамически увеличивается список истории вычислений. В результате отображается текущая ситуация, что тоже видно на скриншотах. Обкатал калькулятор, вроде все нюансы учёл, баги больше не встречались. 
11 State - Целый калькулятор - 16 кнопок 00:26:07
16 чел. ★ 5 Done
  На этом уроке мы сделаем графический интерфейс для калькулятора.
Попрактикуемся в использовании JFrame, JButton, JLabel, JPanel.
Немножко доработаем контекст и состояния.
Отчёт отправил: 10558. Иван Воронин Выполнено за 1 час. 25 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Приснился калькулятор и вариант был, ввести число, потом операцию и сразу равно, что будет. Проверил, получается, что он к числу плюсует второе значение, которое по-умолчанию равно 0 и записывается в историю 2+0=2, я решил проверить, как ведёт себя калькулятор в windows 10, оказалось, что если набрать 2+=, то двойка будет увеличиваться на саму себя и при последующих нажатиях на равно, постоянно увеличивается на изначальное число два!!! Поэтому приснился ещё один баг: 10 - если набрать 2+= то должно увеличивать число само на себя (так работает калькулятор в windows 10) который уже внесён в код к следующему уроку. з.ы. метод show() не пришлось модифицировать, так как уже давно реализовал аналог в виде переменной result, в которой формируется вывод вводимых данных. Добавил справа от калькулятора вывод истории. 
12 State - Целый калькулятор - Fix Bugs 00:10:45
15 чел. ★ 4.9 Done
  На этом уроке мы исправим ошибки,
которые были допущены при реализации
функций перехода между состояниями.


Отчёт отправил: 10558. Иван Воронин Выполнено за 30 мин. [Показать отчёт]
Научился: Ничему 
Сложности: найти время 
Комментарии: Что было мной выявлено при тестировании калькулятора: 1 - нужно сбрасывать значение второй переменной в методе StateOpers().opers() 2 - нужно произвести калькуляцию в начале метода StateSecond().opers() 3 - в методе calc() добавил проверку: "Делить на ноль нельзя!" 4 - метод calc() перенёс в класс Context(), так как он вызывается не только в StateResult() 5 - не нужно производить калькуляцию при вводе очередного числа в StateResult() 6 - не нужно производить калькуляцию при вводе операции в StateResult() 7 - нужно делать сброс при вводе числа в StateResult() 8 - оставить ситуацию без изменений, если ввести символ, который не поддерживается 9 - что бы не ввели, брать первый символ 10 - если набрать 2+= то должно увеличивать число само на себя (так работает калькулятор в windows 10) з.ы. Последний пункт реализовал после того как мне приснился этот вариант возможного бага. Так же реализовано за данный урок: У калькулятора и истории отличается размер шрифта. Размеры шрифта вынесены в константы. Размер шрифта зависит от размеров формы. Если история пуста, выводится надпись: "Пусто". Если размер истории превышает размеры формы, появляется скроллбар и история добавляется ниже. При добавлении новой строки в историю, скрол автоматом спускается в самый них и показывает последние записи истории. 
13 ФИНАЛЬНЫЙ УРОК без видео
1 тест
7 чел. ★ 5 Done
  Поздpaвляю!
Твoя зaдaча - прoверить cебя и пpойти тест, см. вкладку "Тест".

Напиши отзыв или видеообзор по этому видеокурсу.
Отчёт отправил: 10558. Иван Воронин Выполнено за 5 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Отличный шаблон проектирования, удачно подходят уроки по созданию калькулятора. Но данный шаблон на этом не останавливается, он применяется почти везде, особенно в играх =) 
  Итого:   13 видеоуроков 2 час. 18 мин.
1 тест
7 чел. ★ 4.98  
  Финалисты:   Сергей Соколов,   Иван Воронин,   Алексей Малышев,   Александр,   Новопашин Владимир,   Tekashnik,   Виктор .

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





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

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

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

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


Научился: Отличный паттерн программирования State. Его возможное широкое применеие делает обязательным к изучению, для каждого уважвющего себя программиста. Рекомендован к изучению
Трудности: Вспомнить, что из себя представляет данный паттерн))



Научился: закончил обучение по шаблону Состояние
замечательный курс по шаблону Состояние в рамках которого был написан калькулатор.