Обучение программированию 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 Подготовка - Фрукты по списку 00:12:36
2 теста
45 чел. ★ 5 Done
  На этом уроке мы познакомимся с перечислением Enum.
Фактически - это набор именных констант в одной упаковке.
Перечисления в языке Java представляют из себя класс,
который предоставляет много интересных возможностей.

Преимущества использования перечислений:
+ Все константы собраны под одним именем.
+ Можно проверить наличие строчного значения в списке.
+ Можно в цикле перебрать все константы.
+ Оператор выбора switch на основе перечисления исключает ошибки.
+ Можно использовать как константную справочную базу данных.

Самостоятельное задание:
Создайте перечисление по дням недели - от MONDAY до SUNDAY.
Введите с клавиатуры строку и проверьте, является ли она днём недели.
Выведите название введённого дня недели на русском языке (switch-case).
Выведите на экран список всех дней недели, кроме введённого.

Отчёт отправил: 10309. Станислав Выполнено за 40 мин. [Показать отчёт]
Научился: Работе с перечислениями 
Сложности: Не сразу понял как работают values 
Комментарии: Все гуд) 
2 Подготовка - База фруктов 00:18:10
1 тест
38 чел. ★ 5 Done
  На этом уроке мы увидим интересные возможности перечислений enum в языке Java.
Оказывается каждое слово - это не просто константное числовое значение,
а целый экземпляр класса, в котором можно размещать справочную информацию.
Получается целая константная база данных - справочник!

Рекомендуемая литература:
http://interviewinit.com/2014/04/java-enumerations-особенности/
15 вопросов на собеседование относительно Enum, с ответами:
http://info.javarush.ru/translation/2015/10/13/15-вопросов-для-собеседования-разработчиков-относительно-Enum-в-Джаве-с-ответами-.html


Самостоятельное задание
Отчёт отправил: 10309. Станислав Выполнено за 1 час. 05 мин. [Показать отчёт]
Научился: Создавать конструкторы в перечислениях, и статические методы обработки данных 
Сложности: Сделать универсальный метод, который по названию или номеру определяет месяц 
Комментарии: Отличный урок, если и весь курс будет таким же - я в восторге! Задания интересные и для меня достаточно сложные. Подача материала очень нравится. Браво, Магистр! Если в таком духе еще и по шарпу...) 
3 FREE Постановка задачи 00:11:50
2 теста
51 чел. ★ 4.9 Done
  Мы начинаем создание Java-проекта
на основе задачи про Деда Мороза,
который дарил детям фрукты.

При создании проекта вы сможете проникнуться духом Явы
и прочуствовать во всей красе суть объектно-ориентированного подхода.
Отчёт отправил: 10309. Станислав Выполнено за 20 мин. [Показать отчёт]
Научился: --- 
Сложности: --- 
Комментарии: Думаю, нужно выделить в отдельные методы функцию получения заполненного списка. 
4 Яблоки на снегу 00:15:44
2 теста
47 чел. ★ 5 Done
  На этом уроке мы добавим в нашу программу перечисление - enum Fruit.
Таким образом мы сможем изменять список допустимых фруктов,
не меняя основную программу.
Отчёт отправил: 10309. Станислав Выполнено за 25 мин. [Показать отчёт]
Научился: --- 
Сложности: --- 
Комментарии: Теперь с перечислением можно задавать общие для фруктов поля, например вес, цвет.  
5 Фрукточтец 00:11:51
2 теста
45 чел. ★ 5 Done
  На этом уроке мы создадим класс FruitReader,
в который перенесём алгоритм считывания начальных данных.
Таким образом основная программа значительно упростится.

Создайте текстовы файл "fruits.txt".
На нескольких строчках напишите названия фруктов.
Не забудьте в конце файла два раза нажать Enter.
Разместите файл в корень проекта.
Попробуйте открыть файл, указав полный путь с именем.
Отчёт отправил: 10309. Станислав Выполнено за 25 мин. [Показать отчёт]
Научился: Читать данные разными способами. Интересное решение с перегруженными методами. 
Сложности: --- 
Комментарии: В классе чтеца функцию конвертации в фрукты возможно стоит выделить в отдельные метод. Не нравится еще отсутствие проверки  наличия файла для чтения. 
6 Фрукты из строки 00:14:40
2 теста
44 чел. ★ 5 Done
  На этом уроке мы напишем метод,
который сконвертирует строчку в объект BufferedReader.
Таким образом мы сможем задачу по заполнению коллекции
фруктов из строки делегировать уже созданному методу Read().

Теперь наш класс FruitReader стал чересчур универсальным, и это не очень хорошо.
Мы его разделим на несколько составных частей,
каждая часть будет отвечать за свой инструментарий.
Отчёт отправил: 10309. Станислав Выполнено за 30 мин. [Показать отчёт]
Научился: Создавать BufferedReader из разных источников. Наследовать классы, расширяя их функционал. 
Сложности: --- 
Комментарии: Классно получается) 
7 Волшебные конструкторы 00:18:40
2 теста
39 чел. ★ 5 Done
  На этом уроке мы рассмотрим несколько способов,
как можно оформить содержимое наследников класса FruitReader.
Какие будут преимущества и недостатки при их использовании из основной программы.

В конечном итоге мы реализуем всё через волшебные конструкторы наследников.
В основной программе алгоритм вычислений вынесем в отдельную функцию.
Избавимся от статика и удивимся, как удобно теперь можно изменять
тип источника данных - нужно всего лишь менять вызов конструктора.
Отчёт отправил: 10309. Станислав Выполнено за 25 мин. [Показать отчёт]
Научился: Отличная практика по наследованию и работе конструкторов 
Сложности: Пришлось несколько раз пройтись по алгоритму наследования до полной ясности 
Комментарии: --- 
8 Фруктовые комментарии 00:21:08
2 теста
35 чел. ★ 5 Done
  На этом уроке мы займёмся документированием созданных классов и методов.
Мы будем использовать javadoc-стиль для автоматизации процесса создания документации.
Отчёт отправил: 10309. Станислав Выполнено за 30 мин. [Показать отчёт]
Научился: Создавать документацию по программе  
Сложности: С кодировкой пришлось повозится) 
Комментарии: --- 
9 Новые игрушки 00:12:51
1 тест
35 чел. ★ 5 Done
  На этом уроке мы попробуем расширить диапазон игрушек в мешке Деда Мороза.
Сначала попробуем это сделать через обобщение, и окажемся в тупике.
В конце урока мы найдём простое правильное решение,
и выясним, почему стоит делать именно так.
Совет: сначала посмотрите видео полностью, не внося изменений в код.
Отчёт отправил: 10309. Станислав Выполнено за 25 мин. [Показать отчёт]
Научился: Перечисления это константы, и обращаться с ними нужно соответственно) 
Сложности: --- 
Комментарии: Морковка - это фрукт! http://epidersia.ru/morkovka-eto-frukt/ 
10 Какие ваши аргументы? 00:13:36
2 теста
33 чел. ★ 5 Done
  На этом уроке мы сделаем управление нашей программой через аргументы командной строки.
В этом случае мы сможем легко изменять источники входных данных.
Не нужно больше менять и компилировать исходный код.
Отчёт отправил: 10309. Станислав Выполнено за 25 мин. [Показать отчёт]
Научился: Работать с параметрами командной строки в ecllipse 
Сложности: --- 
Комментарии: Теперь многообразие способов получения данных обрело явную форму) 
11 Рефакторинг аргументов 00:10:39
1 тест
31 чел. ★ 5 Done
  На этом уроке мы перенесём проверку
аргументов командной строки в отдельную функцию.
Попутно исправим некоторые недочёты и ошибки.

Обоснуйте своими словами, почему мы решили
не создавать отдельный класс для проверки аргументов?
Отчёт отправил: 10309. Станислав Выполнено за 20 мин. [Показать отчёт]
Научился: Рефакторингу 
Сложности: --- 
Комментарии: Поскольку класс Program занимается запуском программы, то логично оставить методы проверки аргументов в нем. 
12 Пошаговый проход 00:13:05
1 тест
30 чел. ★ 4.9 Done
  На этом уроке мы вынесем проверку аргументов в отдельную функцию.
После этого займёмся исправлением ошибки,
которая возникает при отсутствии \n в конце строк.
Чтобы проще было найти ошибку, и улучшить понимание струкутры программы в целом, мы выполним пошагово всю программу, посмотрим на содержимое переменных и доберёмся до сути той ошибки.
Отчёт отправил: 10309. Станислав Выполнено за 20 мин. [Показать отчёт]
Научился: Попрактиковался с отладкой 
Сложности: --- 
Комментарии: У меня ошибка не вылетала, потому, что был лишний \n. Для понимания что происходит при создании списка фруктов пришлось несколько раз пройтись отладчиком. Очень хорошо, что дебаггер предоставляет информацию о том как все работает. В этом смысле урок весьма полезный) 
13 Массивная строка 00:20:56
2 теста
30 чел. ★ 5 Done
  На этом уроке мы создадим класс FruitReaderStringArray,
в который вынесем алгоритм формирования строчки из массива.
Урок длинный - очень много подробных объяснений -
что мы делаем, почему мы делаем именно так.
Отчёт отправил: 10309. Станислав Выполнено за 25 мин. [Показать отчёт]
Научился: Подготавливать данные для базового конструктора. До использования статичной функции я сам как то не дошел, так что спасибо за науку) 
Сложности: --- 
Комментарии: А еще я теперь считаю, что отладчик отличный способ самому понять что и как работает. Для меня это открытие) 
14 Логические задачи 00:18:14
1 тест
30 чел. ★ 5 Done
  На этом уроке мы начнём наращивать функционал нашего проекта.
Создадим класс Logic, в котором реализуем несколько методов.
Каждый метод будет решать одну задачу по списку фруктов.
Отчёт отправил: 10309. Станислав Выполнено за 30 мин. [Показать отчёт]
Научился: Нового для меня не было, а это значит, что прогресс имеет место быть)  
Сложности: --- 
Комментарии: Исчерпывающие объяснения в уроке, отлично проиллюстрированные с помощью отладчика. 
15 Размер множества 00:10:27
2 теста
28 чел. ★ 5 Done
  На этом уроке мы продолжим работу над классом Logic.
Напишем два разных способа решения одной задачи:
Сколько разных фруктов в мешке у Деда Мороза?

Самостоятельное задание:
сделать пошаговое выполнение новых функций.
Отчёт отправил: 10309. Станислав Выполнено за 30 мин. [Показать отчёт]
Научился: Попрактиковался со множествами 
Сложности: --- 
Комментарии: Сделал тестовый файл с 10000 строчек. Разница между алгоритмами заметна, у видимо будет еще больше при увеличении объемов данных. 
16 Список задач 00:13:43
1 тест
27 чел. ★ 5 Done
  На этом уроке мы составим список всех решаемых задач.
У нас будет функция, которая запускает все задачи друг за другом.
Также мы создадим ещё одно перечисление из всех возможных задач.
Отчёт отправил: 10309. Станислав Выполнено за 25 мин. [Показать отчёт]
Научился: Использовать перечисления для списка задач - это совершенно новая для меня опыт 
Сложности: --- 
Комментарии: Что улучшить? Не знаю. Откровенно говоря то, что уже получилось мне очень нравится. И если будет еще элегантней это просто отлично! 
17 Форматы JSON и XML 00:12:02
1 тест
25 чел. ★ 5 Done
  На этом уроке мы переделаем класс Logic,
чтобы он мог возвращать результаты расчётов
в совершенно разных форматах - RAW, JSON, XML.
Отчёт отправил: 10309. Станислав Выполнено за 25 мин. [Показать отчёт]
Научился: Выводить данные в JSON и XML. 
Сложности: :) 
Комментарии: Думаю вывод нужно убрать из класса логики в отдельный. И там сделать наподобие фрукточтеца. Общий класс на вывод, с наследниками в нужный формат.  
18 Профессиональный Интерфейс 00:12:12
2 теста
23 чел. ★ 5 Done
  На этом уроке мы создадим интерфейс Convertable.
Он поможет нам выделить из класса Logic задачи по конвертации.
Отчёт отправил: 10309. Станислав Выполнено за 20 мин. [Показать отчёт]
Научился: Создавать и реализовывать интерфейс 
Сложности: --- 
Комментарии: --- 
19 Коллекция HashMap 00:11:14
2 теста
23 чел. ★ 5 Done
  На этом уроке мы создадим в классе Logic метод,
который запишет результаты вычислений в словарь -
то есть в коллекцию HashMap.
Отчёт отправил: 10309. Станислав Выполнено за 20 мин. [Показать отчёт]
Научился: Поработал со словарем. 
Сложности: --- 
Комментарии: В моем понимании интерфейс это обязательство класса реализовать заявленный в описании интерфейса  функционал. Из того, что еще нужно сделать - добавить в Convert возможности вывода в json и xml. 
20 Конвертабельные классы 00:12:23
3 теста
23 чел. ★ 5 Done
  На этом уроке мы сделаем три новых класса,
каждый из которых реализует интерфейс Convertable.
В каждом классе будет всего одна функция - Convert(),
которая из словаря создаёт нужную структуру данных.
Отчёт отправил: 10309. Станислав Выполнено за 25 мин. [Показать отчёт]
Научился: Реализовывать интерфейсы. 
Сложности: Получившийся код, несмотря на его элегантность гораздо сложнее для моего понимания. Надеюсь пройдет со временем) 
Комментарии: -- 
21 Параметр Формата 00:16:18
1 тест
22 чел. ★ 5 Done
  На этом уроке мы обсудим возможность управления
форматом вывода результата нашей программой
через передачу параметра командной строки:
java Program [-format json|xml|raw]
Отчёт отправил: 10309. Станислав Выполнено за 35 мин. [Показать отчёт]
Научился: Использовать интерфейс 
Сложности: --- 
Комментарии: Дописал функции ParseArgsFreader и ParseArgsConvert. Все работает) Идем дальше 
22 Параметрический Созидатель 00:12:34
3 теста
19 чел. ★ 5 Done
  На этом уроке мы так и не реализуем функцию parseArgsConvert().
Вместо этого мы организуем более общий подход к анализу аргументов.
Разделим список всех аргументов на составные части по их назначению.
И подготовим функцию create(), которая будет созидать каждую часть.
Отчёт отправил: 10309. Станислав Выполнено за 20 мин. [Показать отчёт]
Научился: Новому подходу к анализу аргументов 
Сложности: --- 
Комментарии: --- 
23 Создатель 00:15:59
2 теста
19 чел. ★ 5 Done
  На этом уроке напишем функцию create.
Отчёт отправил: 10309. Станислав Выполнено за 40 мин. [Показать отчёт]
Научился: Сложно сказать чему научился, хотя я пытался) 
Сложности: Найти ошибку. Мне не удалось 
Комментарии: Добавил новый класс FruitReaderStringList, унаследованный от FruitReaderString. В него добавил метод ListToString, который переводит список в строку. Так вроде более объектно-ориентировано. Но я подозреваю, что зря,  ибо Магистр чуть  позже выдаст очередной крутой рецепт. 
24 Как шагает Дед Мороз 00:11:25
1 тест
19 чел. ★ 5 Done
  На этом уроке мы пошагово выполним всю программу,
увидим, как параметры командной строки разделяются
на несколько списков и поочерёдно обрабатываются.
Отчёт отправил: 10309. Станислав Выполнено за 20 мин. [Показать отчёт]
Научился: --- 
Сложности: --- 
Комментарии: Интересный алгоритм парсинга аргументов. Ошибку в прошлом уроке у себя я не нашел, потому, что на грабли с equals() я уже наступал. В шарпе это работает нормально, а в джаве надо иметь в виду) 
25 Конвертабельность 00:09:41
2 теста
19 чел. ★ 5 Done
  На этом уроке мы наконец-таки проанализируем параметры
командной строки и создадим нужный экземпляр конверт.
Отчёт отправил: 10309. Станислав Выполнено за 20 мин. [Показать отчёт]
Научился: --- 
Сложности: --- 
Комментарии: Немного жаль, что курс подходит к концу. Буду использовать его код в своих поделках. 
26 Фабрика параметров 00:14:42
1 тест
19 чел. ★ 5 Done
  На этом уроке мы наконец-таки закончим создание основной части программы.
Мы создадим класс ParamFabric, в который перенесём весь парсинг аргументов.
Останется только оформить документацию - написать комментарии.

Отчёт отправил: 10309. Станислав Выполнено за 25 мин. [Показать отчёт]
Научился: Строить фабрику) 
Сложности: --- 
Комментарии: Очень здорово все получается! 
27 Буфера в стрингах 00:19:58
2 теста
18 чел. ★ 5 Done
  На этом уроке мы пройдёмся по всему коду программы
и сделаем небольшие улучшения кода.
В основном мы будем заменять
String на StringBuffer в тех местах,
где происходит итеративное формирование строк.

Отчёт отправил: 10309. Станислав Выполнено за 25 мин. [Показать отчёт]
Научился: Работать с StringBuffer, который похоже является аналогом StringBuilder  в шарпе. 
Сложности: --- 
Комментарии: Я так и не понял, почему при объявлении в ParamFactory полей fruitReader и convertable в protected они по прежнему были доступны. Ведь protected должен быть виден изнутри класса или из классов-наследников. Буду багодарен за разъяснения) 
28 Документация Деда Мороза 00:26:00
1 тест
16 чел. ★ 5 Done
  На этом уроке мы опять пройдёмся по всему проекту
и допишем документируемые комментарии.
Затем создадим HTML-документацию
используя утилиту JavaDoc.
Отчёт отправил: 10309. Станислав Выполнено за 55 мин. [Показать отчёт]
Научился: Потренировался в изготовлении javadoc 
Сложности: Наступил на все возможные грабли при изменении кодировки исходников) 
Комментарии: --- 
29 Задедомороженный Архив 00:12:05
1 тест
25 чел. ★ 5 Done
  На этом уроке мы запакуем весь архив в один файл, используя утилиту jar.
В таком виде удобно копировать и распространять программу -
вместо огромного количества файлов - всего один архив.
Отчёт отправил: 10309. Станислав Выполнено за 15 мин. [Показать отчёт]
Научился: --- 
Сложности: --- 
Комментарии: Написать заново ДедаМороза - отличная  идея! 
30 Комплименты Деду Морозу без видео
1 тест
22 чел. ★ 5 Done
  Поздравляю с завершением
Объектно-Ориентированного-Проекта
на примере решения задачи про Деда Мороза.

Пожалуйста, оставь отзыв об этом видеокурсе.
Что тебе понравилось, что не понравилось,
что можно было бы сделать лучше,
в свободной новогодней форме.
Отчёт отправил: 10309. Станислав Выполнено за 15 мин. [Показать отчёт]
Научился: --- 
Сложности: --- 
Комментарии: Отличный курс, пожалуй самый лучший что я проходил на этом сайте. Код получившийся в итоге для меня весьма взрослый, который можно использовать в качестве заготовок для своих работ. Магистр сильно прибавил и это радует) 
  Итого:   30 видеоуроков 7 час. 04 мин.
49 тестов
15 чел. ★ 5  
  Финалисты:   Новопашин Владимир,   Иван Воронин,   Алексей В.,   Tekashnik,   Сергей Соколов,   Константин,   Валерий Жданов,   Станислав,   Andrej Petrunev,   Chip,   Dmitry Sinitsin,   Anatoli,   Yefim,   Ksandr,   Tom .

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





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

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

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

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


Научился: Отличный видеокурс! Очень помогает в развитии объектно-ориентированного мышления при проектировании и программировании приложений, очень хорошо рассмотрено как происходит разбиение сложных задач на менее сложные, достаточно много рефакторинга что бы делать программу более оптимальной и локаничной, и вообще рекомендую пройти его ещё раз только самостоятельно(конечно подсматривая) это даст ещё больший эффект. Всем соискателям удачи в освоении такого прекрасного языка программирования как Java!



Научился: На этом курсе я познакомился с перечислениями, интерфейсами. Поработал с коллекциями ArrayList, HashMap и HashSet. Попрактиковался в отладке приложений, создании javadoc-документации. Увидел как можно использовать ООП возможности Java для разделения общего интерфейса и конкретной реализации в новых классах.