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

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

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

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

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

После взноса  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 Singleton - Intro 00:05:31
57 чел. ★ 4.9 Done
  Рекомендуемая литература:

Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 2 час. 24 мин. [Показать отчёт]
Научился: Разобрался когда использовать Singleton.  Просмотрел литературу.  Не использовал некогда этот шаблон. Из литературы "Если вам нужен класс с полной объектно-ориентированной совместимостью, выберите синглтон, а если вам нужно просто хранить кучу статических методов вместе, тогда используйте статические классы." 
Сложности: Прочесть литературу и понять её. 
2 Singleton - Config - Final 00:06:48
45 чел. ★ 5 Done
  Мы начинаем серию коротких уроков по созданию класса
считывания данных из конфигурационного файла.
Для начала мы организуем несколько конфигурационных параметров
в виде констант и расположим их в основном классе Program.
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 10 мин. [Показать отчёт]
Научился: Ну по поводу этого мало что могу сказать.  
3 Singleton - Config - Git init 00:03:42
1 тест
45 чел. ★ 5 Done
  На этом уроке мы про инициализируем git репозиторий
для проекта, который мы создали на прошлом уроке.
Систему git мы будем использовать для контроля версий
наших исходников, коммититить рабочие варианты
решения одной и той же задачи, да и просто
дополнительная практика использования git в разработке.
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 5 мин. [Показать отчёт]
Научился: ☆☆☆☆☆ 
4 Singleton - Config - Static 00:09:39
44 чел. ★ 5 Done
  На этом уроке мы продемонстрируем, как
обращаться к константам из отдельного класса.
Для этого мы создадим новый класс Process(),
добавим в него метод demo(), в котором реализуем
вывод данных из констант класса Program().
Константы необходимо будет сделать статичными.
Так же мы порефакторим имена констант,
чтобы они были по стандарту ЗАГЛАВНЫМИ буквами.
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 12 мин. [Показать отчёт]
Научился: _______ad88888888888888888888888a, ________a88888"8888888888888888888888, ______,8888"__"P88888888888888888888b, ______d88_________`""P88888888888888888, _____,8888b_______________""88888888888888, _____d8P'''__,aa,______________""888888888b _____888bbdd888888ba,__,I_________"88888888, _____8888888888888888ba8"_________,88888888b ____,888888888888888888b,________,8888888888 ____(88888888888888888888,______,88888888888, ____d888888888888888888888,____,8___"8888888b ____88888888888888888888888__.;8'"""__(888888 ____8888888888888I"8888888P_,8"_,aaa,__888888 ____888888888888I:8888888"_,8"__`b8d'__(88888 ____(8888888888I'888888P'_,8)__________88888 _____88888888I"__8888P'__,8")__________88888 _____8888888I'___888"___,8"_(._.)_______88888 _____(8888I"_____"88,__,8"_____________,8888P ______888I'_______"P8_,8"_____________,88888) _____(88I'__________",8"__M""""""M___,888888' ____,8I"____________,8(____"aaaa"___,8888888 ___,8I'____________,888a___________,8888888) __,8I'____________,888888,_______,888888888 _,8I'____________,8888888'`-===-'888888888' ,8I'____________,8888888"________88888888" 8I'____________,8"____88_________"888888P 8I____________,8'_____88__________`P888" 8I___________,8I______88____________"8ba,. (8,_________,8P'______88______________88""8bma,. _8I________,8P'_______88,______________"8b___""P8ma, _(8,______,8d"________`88,_______________"8b_____`"8a __8I_____,8dP_________,8X8,________________"8b.____:8b __(8____,8dP'__,I____,8XXX8,________________`88,____8) ___8,___8dP'__,I____,8XxxxX8,_____I,_________8X8,__,8 ___8I___8P'__,I____,8XxxxxxX8,_____I,________`8X88,I8 ___I8,__"___,I____,8XxxxxxxxX8b,____I,________8XXX88I, ___`8I______I'__,8XxxxxxxxxxxxXX8____I________8XXxxXX8, ____8I_____(8__,8XxxxxxxxxxxxxxxX8___I________8XxxxxxXX8, ___,8I_____I[_,8XxxxxxxxxxxxxxxxxX8__8________8XxxxxxxxX8, ___d8I,____I[_8XxxxxxxxxxxxxxxxxxX8b_8_______(8XxxxxxxxxX8, ___888I____`8,8XxxxxxxxxxxxxxxxxxxX8_8,_____,8XxxxxxxxxxxX8 ___8888,____"88XxxxxxxxxxxxxxxxxxxX8)8I____.8XxxxxxxxxxxxX8 __,8888I_____88XxxxxxxxxxxxxxxxxxxX8_`8,__,8XxxxxxxxxxxxX8" __d88888_____`8XXxxxxxxxxxxxxxxxxX8'__`8,,8XxxxxxxxxxxxX8" __888888I_____`8XXxxxxxxxxxxxxxxX8'____"88XxxxxxxxxxxxX8" __88888888bbaaaa88XXxxxxxxxxxxXX8)______)8XXxxxxxxxxXX8" __8888888I,_``""""""8888888888888888aaaaa8888XxxxxXX8" __(8888888I,______________________.__```"""""88888P" ___88888888I,___________________,8I___8,_______I8" ____"""88888I,________________,8I'____"I8,____;8" ___________`8I,_____________,8I'_______`I8,___8) ____________`8I,___________,8I'__________I8__:8' _____________`8I,_________,8I'___________I8__:8 ______________`8I_______,8I'_____________`8__(8 _______________8I_____,8I'________________8__(8; _______________8I____,8"__________________I___88, ______________.8I___,8'_______________________8"8, ______________(PI___'8_______________________,8,`8, _____________.88'____________,@@___________.a8X8,`8, _____________(88_____________@@@_________,a8XX888,`8, ____________(888_____________@@'_______,d8XX8"__"b_`8, ___________.8888,_____________________a8XXX8"____"a_`8, __________.888X88___________________,d8XX8I"______9,_`8, _________.88:8XX8,_________________a8XxX8I'_______`8__`8, ________.88'_8XxX8a_____________,ad8XxX8I'________,8___`8, ________d8'__8XxxxX8ba,______,ad8XxxX8I"__________8__,__`8, _______(8I___8XxxxxxX888888888XxxxX8I"____________8__II__`8 _______8I'___"8XxxxxxxxxxxxxxxxxxX8I'____________(8__8)___8; ______(8I_____8XxxxxxxxxxxxxxxxxX8"______________(8__8)___8I ______8P'_____(8XxxxxxxxxxxxxxX8I'________________8,_(8___:8 _____(8'_______8XxxxxxxxxxxxxxX8'_________________`8,_8____8 _____8I________`8XxxxxxxxxxxxX8'___________________`8,8___;8 _____8'_________`8XxxxxxxxxxX8'_____________________`8I__,8' _____8___________`8XxxxxxxxX8'_______________________8'_,8' _____8____________`8XxxxxxX8'________________________8_,8' _____8_____________`8XxxxX8'________________________d'_8' _____8______________`8XxxX8_________________________8_8' _____8________________"8X8'_________________________"8" _____8,________________`88___________________________8 _____8I________________,8'__________________________d) _____`8,_______________d8__________________________,8 ______(b_______________8'_________________________,8' _______8,_____________dP_________________________,8' _______(b_____________8'________________________,8' ________8,___________d8________________________,8' ________(b___________8'_______________________,8' _________8,_________a8_______________________,8' _________(b_________8'______________________,8' __________8,_______,8______________________,8' __________(b_______8'_____________________,8' ___________8,_____,8_____________________,8' ___________(b_____8'____________________,8' ____________8,___d8____________________,8' ____________(b__,8'___________________,8' _____________8,,I8___________________,8' _____________I8I8'__________________,8' _____________`I8I__________________,8' ______________I8'_________________,8' ______________"8_________________,8' ______________(8________________,8' ______________8I_______________,8' ______________(b,___8,________,8) ______________`8I___"88______,8i8, _______________(b,__________,8"8") _______________`8I__,8______8)_8_8 ________________8I__8I______"__8_8 ________________(b__8I_________8_8 ________________`8__(8,________b_8, _________________8___8)________"b"8, _________________8___8(_________"b"8 _________________8___"I__________"b8, _________________8________________`8) _________________8_________________I8 _________________8_________________(8 _________________8,_________________8, _________________Ib_________________8) _________________(8_________________I8 __________________8_________________I8 __________________8_________________I8 __________________8,________________I8 __________________Ib________________8I __________________(8_______________(8' ___________________8_______________I8 ___________________8,______________8I ___________________Ib_____________(8' ___________________(8_____________I8 ___________________`8_____________8I ____________________8____________(8' ____________________8,___________I8 ____________________Ib___________8I ____________________(8___________8' _____________________8,_________(8 _____________________Ib_________I8 _____________________(8_________8I ______________________8,________8' ______________________(b_______(8 _______________________8,______I8 _______________________I8______I8 _______________________(8______I8 ________________________8______I8, ________________________8______8_8, ________________________8,_____8_8' _______________________,I8_____"8" ______________________,8"8,_____8, _____________________,8'_`8_____`b ____________________,8'___8______8, ___________________,8'____(a_____`b __________________,8'_____`8______8, __________________I8/______8______`b, __________________I8-/_____8_______`8, __________________(8/-/____8________`8, ___________________8I/-/__,8_________`8 ___________________`8I/--,I8________-8) ____________________`8I,,d8I_______-8) ______________________"bdI"8,_____-I8 ___________________________`8,___-I8' ____________________________`8,,--I8 _____________________________`Ib,,I8 ______________________________`I8I 
5 Singleton - Config - Git add 00:02:20
42 чел. ★ 5 Done
  На этом уроке мы зафиксируем очередные изменения
нашей программы с помощью команды commit в git репозитории.
Для начала мы посмотрим, что изменилось с последнего коммита.
Добавим изменённый и новый файлы на сцену и
закоммитим их в историю репозитория для фиксации
очередной рабочей версии нашей программы.
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 3 мин. [Показать отчёт]
Научился: git add, git log, git status - вспомнил 
6 Singleton - Config - Class 00:05:13
40 чел. ★ 5 Done
  На этом уроке мы выделим всё, что касается
конфигурации в отдельный класс.
Для этого мы создадим новый класс Config()
и перенесём туда наши константы.
Так же нам нужно будет исправить появившиеся ошибки,
указав новое расположение констант.
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 5 мин. [Показать отчёт]
Научился: ░░░░░░░░░░░░▄▄ ░░░░░░░░░░░█░░█ ░░░░░░░░░░░█░░█ ░░░░░░░░░░█░░░█ ░░░░░░░░░█░░░░█ ███████▄▄█░░░░░██████▄ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█████░░░░░░░░░█ ██████▀░░░░▀▀██████▀  
7 Singleton - Config - Git commit 00:02:16
1 тест
39 чел. ★ 4.9 Done
  На этом уроке мы заново попрактикуемся в работе с git.
Вначале мы попробуем закоммитить изменения,
но увидим, что новый файл не попал в коммит.
Так как он не отслеживался системой git, его необходимо
вначале добавить на сцену и только потом закоммитить.
В дальнейшем система git будет отслеживать
изменения данного файла автоматически.
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 2 мин. [Показать отчёт]
Научился: ░░░░░░░░░░░░▄▄ ░░░░░░░░░░░█░░█ ░░░░░░░░░░░█░░█ ░░░░░░░░░░█░░░█ ░░░░░░░░░█░░░░█ ███████▄▄█░░░░░██████▄ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█████░░░░░░░░░█ ██████▀░░░░▀▀██████▀  
8 Singleton - Config - FileReader 00:11:45
1 тест
39 чел. ★ 5 Done
  На этом уроке мы с вами доработаем класс Config(),
чтобы параметры хранились и загружались из файла.
Для этого создадим файл конфигурации,
перенесём в него настройки программы и
в классе Config() добавим метод считывания
из нашего конфигурационного файла.
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 37 мин. [Показать отчёт]
Научился: Статик плохо потому что занимает память. Finally{ } - сделал но надо опять добавлять try catch, получается ошибка на ошибке.  
9 Singleton - Config - Git default 00:04:39
1 тест
36 чел. ★ 5 Done
  На этом уроке мы закоммитим все наши изменения.
Для начала мы создадим копию конфигурационного файла
с именем config.default.txt. Это необходимо делать,
чтобы небыло конфликтов из-за того, что у каждого разработчика
будет своя версия config.txt для корректной работы приложения.
Так же изменим значения файла config.default.txt
на значения для примера, чтобы каждый смог изменить их под себя.

Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 6 мин. [Показать отчёт]
Научился: Использую гит:)  
10 Singleton - Config - Static field 00:09:57
36 чел. ★ 5 Done
  На этом уроке мы поэкспериментируем с оптимизацией
загрузки конфигурационного файла.
Остановимся на варианте глобальной версии
с передачей в другие классы в качестве параметра.
Так же закоммитим наши изменения в git репозиторий.
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 11 мин. [Показать отчёт]
Научился: Все работает. Смотрим дальше... 
11 Singleton - Config - Static class 00:06:31
33 чел. ★ 5 Done
  На этом уроке мы продолжим оптимизации,
сделав всё в классе Config() статичным.
Так же оптимизируем классы Program() и Process()
для использования статичной версии класса Config().
После чего добавим загрузку конфига в классе Program().
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 7 мин. [Показать отчёт]
Научился: Сделал все статичным в классе конфиг. Это неудобно потому что, теряем некоторые возможности ООП.  
12 Singleton - Config - Using pattern 00:07:54
1 тест
32 чел. ★ 5 Done
  Мы рассмотрели множество рабочих вариантов
реализации, но на деле их эффективность
зависела от конкретной реализации и при
определённых условиях требовалась доработка.
На этом уроке мы наконец реализуем
шаблон проектирования: Синглтон (Singleton).
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 9 мин. [Показать отчёт]
Научился: Cоздал метод getInstance и модифицировал программу.   
13 Singleton - Config - Cant extend 00:06:23
1 тест
32 чел. ★ 5 Done
  На этом уроке мы вынесем из класса Config() код синглтона
в класс Singleton() и попробуем унаследовать его.
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 8 мин. [Показать отчёт]
Научился: Данные способ не удался потому что в Синглетоне используем статик. 
14 Singleton - Config - Super child 00:05:57
31 чел. ★ 5 Done
  На этом уроке мы всё же разделим
класс Config() на две логические части.
Для этого мы выделим логику Синглона
в отдельный класс ConfigSingleton().
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 12 мин. [Показать отчёт]
Научился: Модифицировал. Сделал отдельный класс Синглтон. 
15 Singleton - Timer - Pattern Design 00:08:15
1 тест
31 чел. ★ 5 Done
  На этом уроке мы начинаем создание
класса Секундомер() для засекания времени
работы различных участков программы.
Для разработки этого класса мы воспользуемся
шаблоном проектирования Синглтон.
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 9 мин. [Показать отчёт]
Научился: Создал шаблон Singletone  для таймера. добавил в гит .  
16 Singleton - Timer - Start / Click 00:05:25
1 тест
30 чел. ★ 5 Done
  На этом уроке мы продолжим создание класса
Timer() при помощи шаблона синглтон.
Для начала мы добавим метод start()
в класс Timer() для запуска секундомера.
Так же мы добавим метод click(),
чтобы увидеть сколько времени прошло.
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 6 мин. [Показать отчёт]
Научился: Добавил в методы start(), click() отсчёт времени .  
17 Singleton - Timer - Program 00:09:45
30 чел. ★ 5 Done
  На этом уроке мы наконец добавим основной
класс для нашей программы: Program()
и добавим в метод Program.main() необходимый код
для демонстрации работы синглтона Timer().
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 11 мин. [Показать отчёт]
Научился: Все получилось - все работает. Создал Програм/ посчитал время.  
18 Singleton - Timer - String vs Buffer Speed 00:10:58
1 тест
28 чел. ★ 5 Done
  На этом уроке мы сравним скорость работы
между String и StringBuffer.
Для этого мы создадим новый класс StringSpeed()
с методами runString() и runStringBuffer().
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 19 мин. [Показать отчёт]
Научился: StringBuffer  намного быстрее работает...  
19 Singleton - Timer - Experiment 00:06:05
28 чел. ★ 5 Done
  На этом уроке мы изучим класс Timer()
и выделим часть кода для нового синглтона.
Для этого нам понадобиться новый класс Log()
который будет реализован как синглтон
и заниматься логированием в консоль.
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 11 мин. [Показать отчёт]
Научился: Создал Лог класс. Он работает.  
20 Singleton - Timer - Log class 00:08:45
1 тест
28 чел. ★ 5 Done
  На этом уроке мы разделим наш синглтон Timer()
на две части: Timer() и SingleTimer().
Тот же эксперимент проведём и с классом Log().
После чего будет ясно, что лучше так не делать
и вернём код в состояние на момента начала урока.
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 44 мин. [Показать отчёт]
Научился: Singletone лучше использовать в основном классе и не создавать новый - потому что код повторяться.   
21 ФИНАЛЬНЫЙ УРОК без видео
7 тестов
13 чел. ★ 5 Done
  Поздpaвляю!
Твoя зaдaча - прoверить cебя и пpойти тест, см. вкладку "Тест".

Напиши отзыв или видеообзор по этому видеокурсу.
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 3 мин. [Показать отчёт]
Научился: Хороший видео курс по Singletone. Спасибо! 
22 VIP - Singleton - Timer - Enum 00:06:31
1 тест
28 чел. ★ 5 Done
  На этом уроке мы реализуем синглтон
с использованием перечислений.
Для этого мы переделаем Log()
из класса (class) в перечисление (enum).
Тоже самое мы проделаем и с классом Timer()
Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 47 мин. [Показать отчёт]
Научился: Доне 
  Итого:   22 видеоурока 2 час. 24 мин.
18 тестов
13 чел. ★ 5  
  Финалисты:   Иван Воронин,   Сергей Соколов,   Станислав,   Povilas Abramovicius,   Sergej Šugajev,   Александр,   Новопашин Владимир,   Tekashnik,   Andrei,   Dmitry Sinitsin,   Yefim,   Anatoli,   Tom .

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





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

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

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

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


Научился: Повторил пройденное
Отличный шаблон проектирования. Много где можно использовать, уже активно им пользуюсь там где есть в этом необходимость =)


Научился: Отличный паттерн проектирования) Делал этот курс давно, сейчас просто закрываю дыры) Всем рекоменндую!"
Трудности: Придумать, что было самым сложным