Обучение программированию 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).
Выведите на экран список всех дней недели, кроме введённого.

Отчёт отправил: 10670. Сергей Соколов Выполнено за 25 мин. [Показать отчёт]
Научился: Создавать перечисление. Проверять есть ли в перечислении строка введенная на клавиатуре Использовать перечисление в конструкции switch 
Сложности: ничего 
Комментарии: =) 
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


Самостоятельное задание
Отчёт отправил: 10670. Сергей Соколов Выполнено за 25 мин. [Показать отчёт]
Научился: Добавлять конструктор и методы в enum. Получать помимо самого значения enum связанные с ним параметры.  
Сложности: ничего 
Комментарии: =) 
3 FREE Постановка задачи 00:11:50
2 теста
51 чел. ★ 4.9 Done
  Мы начинаем создание Java-проекта
на основе задачи про Деда Мороза,
который дарил детям фрукты.

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

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

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

В конечном итоге мы реализуем всё через волшебные конструкторы наследников.
В основной программе алгоритм вычислений вынесем в отдельную функцию.
Избавимся от статика и удивимся, как удобно теперь можно изменять
тип источника данных - нужно всего лишь менять вызов конструктора.
Отчёт отправил: 10670. Сергей Соколов Выполнено за 25 мин. [Показать отчёт]
Научился: Перенес функции в соответствующие классы. Переделал функции в конструкторы. В основном классе сделал поле BufferedReader и сделал метод Read() финальным. Избавился от статика в основной программе и выделил основной алгоритм в отдельную функцию.  
Сложности: ничего 
Комментарии: =) 
8 Фруктовые комментарии 00:21:08
2 теста
35 чел. ★ 5 Done
  На этом уроке мы займёмся документированием созданных классов и методов.
Мы будем использовать javadoc-стиль для автоматизации процесса создания документации.
Отчёт отправил: 10670. Сергей Соколов Выполнено за 30 мин. [Показать отчёт]
Научился: Добавлять комментарий в коде java и получать html документацию с помощью утилиты javadoc.  
Сложности: ничего 
Комментарии: =) 
9 Новые игрушки 00:12:51
1 тест
35 чел. ★ 5 Done
  На этом уроке мы попробуем расширить диапазон игрушек в мешке Деда Мороза.
Сначала попробуем это сделать через обобщение, и окажемся в тупике.
В конце урока мы найдём простое правильное решение,
и выясним, почему стоит делать именно так.
Совет: сначала посмотрите видео полностью, не внося изменений в код.
Отчёт отправил: 10670. Сергей Соколов Выполнено за 20 мин. [Показать отчёт]
Научился: Добавил несколько машинок к фруктам =) По хорошему лучше или переименовать енум в Gifts и пусть там будут все подарки которые нужны. Либо хранить подарки в файле и считывать их из него во время запуск =) 
Сложности: ничего 
Комментарии: =) 
10 Какие ваши аргументы? 00:13:36
2 теста
33 чел. ★ 5 Done
  На этом уроке мы сделаем управление нашей программой через аргументы командной строки.
В этом случае мы сможем легко изменять источники входных данных.
Не нужно больше менять и компилировать исходный код.
Отчёт отправил: 10670. Сергей Соколов Выполнено за 20 мин. [Показать отчёт]
Научился: Выводить в консоль инструкцию по запуску программы Считывать аргументы при запуске 
Сложности: ничего 
Комментарии: =) 
11 Рефакторинг аргументов 00:10:39
1 тест
31 чел. ★ 5 Done
  На этом уроке мы перенесём проверку
аргументов командной строки в отдельную функцию.
Попутно исправим некоторые недочёты и ошибки.

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

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

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

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

Пожалуйста, оставь отзыв об этом видеокурсе.
Что тебе понравилось, что не понравилось,
что можно было бы сделать лучше,
в свободной новогодней форме.
Отчёт отправил: 10670. Сергей Соколов Выполнено за 5 мин. [Показать отчёт]
Научился: Курс очень понравился. Погрузился в ООП по полной. И правда что нужно будет попробовать его пройти еще разок. 
Сложности: ничего 
Комментарии: =) 
  Итого:   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 для разделения общего интерфейса и конкретной реализации в новых классах.