diff --git a/frontend-calculator.md b/frontend-calculator.md new file mode 100644 index 0000000..068ecc1 --- /dev/null +++ b/frontend-calculator.md @@ -0,0 +1,122 @@ +# [Тестовое задание Frontend](https://jm-program.github.io/frontend-calculator) + +Вам потребуется решить кодовую задачу на языке JavaScript. + +Ссылка на задачу: [https://repl.it/@JavaMentor/RomanCalculator](https://repl.it/@JavaMentor/RomanCalculator) + +После решения задачи, сохраняем ссылку на решение (скопировать url). + +Решение сохраняется на платформе под уникальным url, которое нужно будет выслать нам на почту *info@java-mentor.com* с темой **"Тестовое задание Front-end"** + +# Задача Calculator + +## Описание +Создайте функцию calculate. +Функция должна принимать арифметические операции двух чисел в виде строки и возвращать строку с результатом их выполнения. +Функция принимает данные из аргументов и возвращает с помощью return. + +## Требования +- Решение должно пройти все тесты. +- Калькулятор умеет выполнять операции сложения, вычитания, умножения и деления с двумя числами: a + b, a - b, a * b, a / b. Данные передаются в виде одной строки! +- Калькулятор умеет работать как с арабскими (1,2,3,4,5…), так и с римскими (I,II,III,IV,V…) числами. Оба операнда должны быть либо арабскими, либо римскими. +- Операнды должны лежать в диапазоне от 1 до 10 включительно, без ноля. Ответ может быть больше 10. +- Калькулятор умеет работать только с целыми числами, принимает и возвращает. +- Результат на выходе всегда строка с целым числом. В делении учитываем только целую часть - десятичную отбрасываем, например 2 / 4 = 0,5 - вернём 0. +- Калькулятор умеет работать только с арабскими или римскими цифрами одновременно, при вводе пользователем строки вроде 3 + II калькулятор должен выбросить исключение (ошибку) и прекратить свою работу. +- Поскольку в римской системе счисления нет нуля и отрицательных чисел, то вместо них возвращаем пустую строку. (например I - II = '') +- При вызове калькулятора с неподходящими числами, функция выбрасывает исключение и завершает свою работу. +- При вызове калькулятора со строкой, которая не является математическим примером с одной из арифметических операций, описанных в требовании, приложение выбрасывает исключение и завершает свою работу. + + + +## Пример работы программы +``` +calculate('1 + 2'); // вернется строка '3' +calculate('VI / III'); // вернется строка 'II' +calculate('VII / III'); // вернётся строка II' +calculate('I + II'); // вернется строка 'III' +calculate('I - II'); // вернётся строка '' (пустая строка) т.к. в римской системе нет отрицательных чисел +calculate('I + 1'); // вернётся исключение (ошибка) throws Error т.к. используются одновременно разные системы счисления +calculate('I'); // вернётся исключение throws Error т.к. строка не является математической операцией +calculate('1 + 1 + 1'); // вернётся исключение throws Error т.к. формат математической операции не удовлетворяет заданию - два операнда и один оператор (+, -, /, *) +``` + +## Работа с repl.it +1. Необходимо зарегистироваться или залогиниться на платформе https://replit.com/ +2. Перейти по сслыке https://repl.it/@JavaMentor/RomanCalculator и нажать кнопку "Fork", чтобы начать решать задачу + + +#### Основной интерфейс: +![Интерфейс](https://jm-program.github.io/img/ui.png) + +После нажатия кнопки “run” ваш код будет протестирован. Результаты тестов будет выведен в консоль. В консоли может быть как сообщение об успешном выполнении, так и сообщения об ошибках. +Вам нужно написать такой код, который пройдет все проверки. + +#### Решение не прошло проверку + + +#### Успешное решение задачи: + + +## Требования +- Ты должен решить задачу самостоятельно, без чьей-либо помощи. +- Можно пользоваться гуглом, но не ищи готовое решение задачи. + +## Как отправить решение? +Ссылки на решение отправьте нам на почту *info@java-mentor.com* с темой **"Тестовое задание Front-end"** + +# FAQ + +## С чего начать? + +### Ознакомься со списком тем, изучение которых поможет с задачей: + +- Типы данных +- Переменные +- Методы массива и объекта +- Преобразование типов данных (из строки в число и обратно) +- Операция с числами (округление, деление и тд) +- Обработка ошибок, проброс исключений +- Типа ошибок в JS и что означают +- Функции +- Циклы, сравнение, условные конструкции if-else и switch-case +- Логические операторы + +### Начни свой путь к решению задачи с изучения ресурсов, которые помогут в подготовке: +ВНИМАНИЕ! Не нужно смотреть все видео из плейлиста, также не нужно проходить курсы от начала и до конца. У тебя 7 дней на решение задачи, поэтому не трать время. Сверься со списком тем выше и посмотри выборочно материалы только по этим темам! Для того, чтобы сэкономить твое время, выбери один-два источника из предложенных и используй их для решения ТЗ. Помни, твоя цель - решить задачу, а не изучить JS полностью самостоятельно. + +- https://www.youtube.com/watch?v=T3IgBNN9bhM&list=PLVfMKQXDAhGUaEtJ_fOUz0F7TJtidE7Qw - канал на Youtube Web Developer Blog, плейлист с видео для начинающих +- https://ru.code-basics.com/languages/javascript - интерактивный курс по основам. Полное прохождение курса займет неделю, лучше совместить с параллельным изучением других источников, для решения ТЗ одного этого курса будет мало. +- https://ru.hexlet.io/courses/introduction_to_programming - более углубленный интерактив +- https://learn.javascript.ru/first-steps / https://learn.javascript.ru/data-types / https://learn.javascript.ru/error-handling - основы языка в виде коротких статей + + +![Программа JavaScript](http://i.imgur.com/vseQ56D.png) + +## Я знаю другой язык программирования, но не знаю JavaScript. + +1. [Side-by-side code snippets](https://rosetta.alhur.es/) - сравнение примеров кодов на разных языках. Выбираем ваш язык и javascript - изучаем сходства/различия. +2. [Learn X in Y minutes - JS](https://github.com/adambard/learnxinyminutes-docs/blob/master/ru-ru/javascript-ru.html.markdown) - Короткий обзор синтаксиса языка. +3. Все ссылки из предыдущего вопроса + +## Я написал код, а мне выдает какую-то ошибку + +[Что пошло не так? Устранение ошибок JavaScript](https://developer.mozilla.org/ru/docs/Learn/JavaScript/%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B5_%D1%88%D0%B0%D0%B3%D0%B8/%D0%A7%D1%82%D0%BE_%D0%BF%D0%BE%D1%88%D0%BB%D0%BE_%D0%BD%D0%B5_%D1%82%D0%B0%D0%BA) + +Советы: +1. Если не понимаете английского - пользуйтесь словарем/переводчиком. +2. Не стесняйтесь гуглить текст ошибки. +3. Если не работает большой кусок кода - попробуйте отладить его часть. + +## Я не знаю, как подступиться к задаче + +1. Мысленно пройдись последовательно по коду, записывая значения переменных и результат работы. +2. Постарайся разбить большую задачу на маленькие подзадачи и решать их по отдельности - так гораздо проще. Или упрости задачу до варианта, который ты можешь решить, а потом дорабатывай ее до необходимых требований. + + +## Я не знаю, как работать с римскими числами + +Воспользуйтесь преобразованием римских чисел в арабские. Как это сделать можно легко найти в интернете. + +# Успехов! + diff --git a/frontend-task-codewars.md b/frontend-task-codewars.md new file mode 100644 index 0000000..40cd9e4 --- /dev/null +++ b/frontend-task-codewars.md @@ -0,0 +1,39 @@ +# Задачи с Codewars + +## Описание + +Вам нужно зарегистрироваться на сайте [Codewars](https://www.codewars.com) и решить 5 задач: +- [Mumbling](https://www.codewars.com/kata/mumbling/train/javascript) +- [Milk and Cookies for Santa](https://www.codewars.com/kata/milk-and-cookies-for-santa/train/javascript) +- [Remove duplicate words](https://www.codewars.com/kata/remove-duplicate-words/train/javascript) +- [Array comparator](https://www.codewars.com/kata/array-comparator/train/javascript) +- [Highest and Loweest](https://www.codewars.com/kata/highest-and-lowest/train/javascript) + +Условия задач на английском, если не знаете языка - пользуйтесь переводчиком/словарем + +## Работа с Codewars +#### Основной интерфейс: +![Интерфейс](https://monosnap.com/image/3g3m0xxfRmq4FgIh6ROkA03seYOnAl) + +![Сохранение решения](https://monosnap.com/image/vfZWQoSBqM99hPpTnUqwxLCc34IKv3) + +#### Отладка: +![Отладка](https://monosnap.com/image/fdEtHxoIYBNTPBOwBFnqsUKyZfGwDj) + +#### Возможные проблемы: +![Пустой solution](https://monosnap.com/image/gb5tGhnzHz9cPkQL6ABmFzDd8L7YIt) + +## Требования +- Вы должны решить задачи самостоятельно, без чьей либо помощи +- Кнопку __Show solution__ не нажимаем, такие задания не будут приняты - ссылка Discuss не появится +- Кончно, можно пользовать гуглом, но не ищите готовое решение задачи + +## Будут оцениваться +- Элегантность решения +- Читаемость кода + +## Как отправить решение? +1. Заходим в ваш профиль (View profile) +2. Переходим на вкладку Solutions +3. Под каждым заданием есть ссылка Discuss - копируем эту ссылку +4. Ссылки на решения отправьте нам на почту *info@java-mentor.com* с темой **"Тестовое задание Front-end"** diff --git a/frontend-task.md b/frontend-task.md new file mode 100644 index 0000000..67f8a0a --- /dev/null +++ b/frontend-task.md @@ -0,0 +1,45 @@ +# Задача "Рейтинг языков программирования" + +## Описание + +Подготовить страницу со статистикой по языкам программирования. +На странице должен быть выпадающий список, в котором мы можем выбрать +"Направление разработки" (Front-end, Back-end, Mobile). + +Начальный экран + +Мы можем выбрать только одно направление или оставить поле пустым. + +После нажатия на кнопку "Загрузить", должен быть отправлен GET запрос на сервер по url +[https://frontend-test-api.alex93.now.sh/api/languages](https://frontend-test-api.alex93.now.sh/api/languages) и передан параметр "group" +с возможными значениями frontend, backend, mobile в зависимости от того, что выбрал пользователь на странице. + +Пример запроса для получения данных по backend направлению (можно просто кликнуть по ссылке). +[https://frontend-test-api.alex93.now.sh/api/languages?group=backend](https://frontend-test-api.alex93.now.sh/api/languages?group=backend) + +Результатом данного запроса будет JSON с данными, которые нужно вывести на страницу. +Пример результата работы программы: + +Вывод результата + +**Вам необходимо отобразить только те языки, у которых есть параметр logo.** + + +## Требования +- В проекте должны быть файлы index.html с разметкой, index.js с подключаемым кодом и styles.css со стилями +- Можно использовать современные возможности языка, без учета старых браузеров +- При реализации задачи можно использовать внешние библиотеки + +## Будут оцениваться +- Структура кода, разделение на логические блоки, читаемость. +- Внешний вид страницы + +## Как отправить решение? +1. Если вы не знакомы с git и Github вам нужно ознакомиться с этой [статьей](http://maxsite.org/page/how-to-put-your-project-on-github-com), в ней описаны основы работы с git. +2. Если вы уже ознакомились с основами работы с git или были знакомы ранее - вам нужно создать собственный репозиторий и добавить туда проект с решением. +3. Ссылку на репозиторий отправьте нам на почту *info@java-mentor.com* с темой **"Тестовое задание Front-end"** + +## Материалы, которые могут пригодиться +- [Работа с DOM](https://learn.javascript.ru/document) +- [Работа с событиями](https://learn.javascript.ru/introduction-browser-events) +- [Получение данных с сервера](https://learn.javascript.ru/fetch) diff --git a/frontend-tasks.md b/frontend-tasks.md new file mode 100644 index 0000000..49264fa --- /dev/null +++ b/frontend-tasks.md @@ -0,0 +1,35 @@ +# [Задачи на JavaScript](https://jm-program.github.io/frontend-tasks) + +Необходимо решить 5 задач на языке javascript. Решения сохранятся на платформе под уникальным url, которые нужно будет выслать нам. + +## Описание + +Решите эти задачи: +- [Задача 1](https://repl.it/@JavaMentor/task1) +- [Задача 2](https://repl.it/@JavaMentor/task2) +- [Задача 3](https://repl.it/@JavaMentor/task3) +- [Задача 4](https://repl.it/@JavaMentor/task4) +- [Задача 5](https://repl.it/@JavaMentor/task5) + +После решения каждой задачи сохраняем ссылку на решение (url страницы или нажимаем **Share** и копируем ссылку из поля **Share Link**) + +## Работа с repl.it +#### Основной интерфейс: +![Интерфейс](https://monosnap.com/image/JbZCDdBvx9MPeMYKpFgpOFlLtjpT08) + +#### Решение не прошло проверку + + +#### Успешное решение задачи: +![Успешное решение](https://monosnap.com/image/AxOO9Im0Ej91CtYfJCarzXIM4vOkvA) + +## Требования +- Вы должны решить задачи самостоятельно, без чьей либо помощи +- Кончно, можно пользовать гуглом, но не ищите готовое решение задачи + +## Будут оцениваться +- Элегантность решения +- Читаемость кода + +## Как отправить решение? +Ссылки на решение отправьте нам на почту *info@java-mentor.com* с темой **"Тестовое задание Front-end"** diff --git a/img/.gitkeep b/img/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/img/.gitkeep @@ -0,0 +1 @@ + diff --git a/img/fail.png b/img/fail.png new file mode 100644 index 0000000..186be43 Binary files /dev/null and b/img/fail.png differ diff --git a/img/fork.png b/img/fork.png new file mode 100644 index 0000000..7145e0f Binary files /dev/null and b/img/fork.png differ diff --git a/img/replSuccess.png b/img/replSuccess.png new file mode 100644 index 0000000..10831f0 Binary files /dev/null and b/img/replSuccess.png differ diff --git a/img/replTestSample.png b/img/replTestSample.png new file mode 100644 index 0000000..04285f1 Binary files /dev/null and b/img/replTestSample.png differ diff --git a/img/romanCalc.png b/img/romanCalc.png new file mode 100644 index 0000000..eda6db8 Binary files /dev/null and b/img/romanCalc.png differ diff --git a/img/sign-in-up.png b/img/sign-in-up.png new file mode 100644 index 0000000..d8e79d5 Binary files /dev/null and b/img/sign-in-up.png differ diff --git a/img/success.png b/img/success.png new file mode 100644 index 0000000..fd5fc82 Binary files /dev/null and b/img/success.png differ diff --git a/img/ui.png b/img/ui.png new file mode 100644 index 0000000..6d366d9 Binary files /dev/null and b/img/ui.png differ diff --git a/task-calculator.md b/task-calculator.md new file mode 100644 index 0000000..12e521f --- /dev/null +++ b/task-calculator.md @@ -0,0 +1,130 @@ +# Задача: "Калькулятор" + +## Описание: +Создай консольное приложение "Калькулятор". +Приложение должно читать из консоли введенные пользователем арифметические операции и выводить в консоль результат их выполнения. + +## Требования: + +1. Калькулятор умеет выполнять операции сложения, вычитания, умножения и деления с двумя числами: +a + b, a - b, a * b, a / b. Данные передаются в одну строку (смотри пример)! Решения, в которых каждое число и арифмитеческая операция передаются с новой строки считаются неверными. +2. Калькулятор умеет работать как с арабскими (1,2,3,4,5...), так и с римскими (I,II,III,IV,V...) числами. +3. Калькулятор должен принимать на вход числа от 1 до 10 включительно, не более. На выходе числа не ограничиваются по величине и могут быть любыми. +4. Калькулятор умеет работать только с целыми числами. +5. Калькулятор умеет работать только с арабскими или римскими цифрами одновременно, при вводе пользователем строки вроде 3 + II калькулятор должен выбросить исключение и прекратить свою работу. +6. При вводе римских чисел, ответ должен быть выведен римскими цифрами, соответственно, при вводе арабских - ответ ожидается арабскими. +7. При вводе пользователем неподходящих чисел приложение выбрасывает исключение и завершает свою работу. +8. При вводе пользователем строки, не соответствующей одной из вышеописанных арифметических операций, приложение выбрасывает исключение и завершает свою работу. +9. Результатом операции деления является целое число, остаток отбрасывается.  +10. Результатом работы калькулятора с арабскими числами могут быть отрицательные числа и ноль. Результатом работы калькулятора с римскими числами могут быть только положительные числа, если результат работы меньше единицы, выбрасывается исключение + +## Пример работы программы: +###### Input: +`1 + 2` +###### Output: +`3` +###### Input: +`VI / III` +###### Output: +`II` +###### Input: +`I - II` +###### Output: +`throws Exception //т.к. в римской системе нет отрицательных чисел` +###### Input: +`I + 1` +###### Output: +`throws Exception //т.к. используются одновременно разные системы счисления ` +###### Input: +`1` +###### Output: +`throws Exception //т.к. строка не является математической операцией ` +###### Input: +`1 + 2 + 3` +###### Output: +`throws Exception //т.к. формат математической операции не удовлетворяет заданию - два операнда и один оператор (+, -, /, *) ` + +## Принципы оценки работы: +Обрати внимание на принципы ООП, постарайся разбить программу на логические классы. Решения, в которых весь код программы находится в одном классе будут низко оценены. Продемонстрируй своё умение в работе с разными синтаксическими конструкциями, не забудь про исключительные ситуации, при которых выполнение программы невозможно из-за некорректных входных данных. + +## Как отправить решение? +1. Тебе нужно создать собственный репозиторий на Github и добавить туда проект с решением. +2. Ссылку на репозиторий отправь нам на почту *info@java-mentor.com* с темой **Тестовое задание калькулятор Java**. + +--- +# FAQ + +### Что, если я не знаю Java? + +1. Начни с установки JDK c сайта ORACLE - [скачать](https://www.oracle.com/ru/java/technologies/javase-downloads.html). Подойдет любая версия выше 8-й включительно. Обрати внимание, после выбора версии ОС перед началом загрузки необходимо создать учетную запись на сайте ORACLE. +2. Эти материалы помогут вам в установке и настройке JDK: + - [Установка и настройка JDK ](https://www.youtube.com/watch?v=0OrVOHB42C4) (Перед просмотром видео не забудь, пожалуйста, включить русские субтитры :) +) + - [Установка JDK и IntelliJ Idea:]( https://www.youtube.com/watch?v=xvUFqDKIKJE) +3. Установи среду разработки (мы рекомендуем IntelliJ IDEA) и напиши свою первую маленькую программу на Java. + +### Какую среду разработки мне выбрать? + +Мы не ограничиваем тебя в выборе, ты можешь реализовать свой проект в любой удобной среде разработки: +- IntelliJ IDEA - [скачать.](https://www.jetbrains.com/ru-ru/idea/download/) +- Eclipse - [скачать.](https://www.eclipse.org/downloads/) +- NetBeans - [скачать.](https://netbeans.apache.org/download/index.html) + +Мы рекомендуем выбрать IntelliJ IDEA. Вот видео, показывающее как быстро начать с ней работу: +- [Установка и запуск первой программы под Intellij IDEA.](https://www.youtube.com/watch?v=YCnd0IAJHd4) + +### Я не умею работать с Git и GitHub + +- Если ты не знаком с Git и Github, то тебе нужно ознакомиться с [этой статьей](http://maxsite.org/page/how-to-put-your-project-on-github-com), в ней описаны основы работы с Git. +- [Git: загрузить существующий проект на GitHub.](https://www.youtube.com/watch?v=kO5u0PFdHUQ) +- [Отправка проекта на GitHub из IntelliJ IDEA.](https://www.youtube.com/watch?v=zM6z57OtR2Q) + +### Тебе потребуется изучить некоторый теоретический минимум для решения этой задачи: +1. Основы синтаксиса Java, простые (примитивные) типы данных +2. Арифметические операции в java +3. Методы +4. Преобразование строки в число +5. Класс String, работа со строками +6. Циклы в Java +7. Работа с массивами +8. Логические операторы +9. Условные операторы, сравнение, switch case +10. Enum +11. Работа с консолью - ввод/вывод, классы Scanner и BufferedReader +12. Java и ООП +13. Обработка ошибок и создание своих исключений + +### Помогут также следующие ресурсы: + +**ВНИМАНИЕ!** Не нужно смотреть все видео из плейлиста, не нужно проходить курс до конца и читать всю книгу! У тебя 7 дней на решение задачи, поэтому не трать время. Сверься со списком тем выше и посмотри выборочно материалы только по этим темам! Для того, чтобы сэкономить свое время, выбери один источник из предложенных и используй его для решения ТЗ. + +1. [Трегулов, Програмания](https://www.youtube.com/watch?v=TQ_vwm4h0ro&list=PLqj7-hRTFl_rqruGcnd2V8SPbY0j9DzT5) +2. [Канал Алишева](https://www.youtube.com/watch?v=ziOQ8wkmnSE&list=PLAma_mKffTOSUkXp26rgdnC0PicnmnDak) +3. [Metanit. Руководство по языку программирования Java.](https://metanit.com/java/tutorial/) +4. [Java для начинающих. Курс](https://ru.code-basics.com/languages/java) +9. Гугл - основной инструмент для поиска информации. + +### Я написал код, а мне выдает какую-то ошибку +Часто написанный с ошибками код компилируется и при запуске может выбрасывать исключения, стектрейс которых выводится в консоль. Это нормально. +##### Советы: +1. Для понимания природы этого исключения можно прочитать java doc этого исключения, либо просто загуглив исключение по названию первого исключения и тексту ошибки. +2. Если по поиску теста ошибки ничего не находится, попробуй сократить текст ошибки, удалив из него текст, относящийся к конкретно к твоему приложению (например там могут быть указаны название написанных тобой методов или переменных). +3. Если не понимаешь английского - пользуйся словарем/переводчиком. +4. Не стесняйся гуглить текст ошибки. +5. Если не работает большой кусок кода - попробуй отладить небольшую его часть. +6. Мысленно пройдись последовательно по коду, записывая значения переменных и результат работы. + +Так же для отладки приложения и нахождения проблемный мест в среде разработки предсмотрен режим debug. Видео, показывающее основы использования debug режима в IntelliJ Idea [смотреть](https://www.youtube.com/watch?v=nIABqX19qFM) + +### Я не знаю, как подступиться к задаче + +Если эта первая программа, которую ты пытаешься написать - постарайся отработать основы на более простых задачах (см материалы выше). +Постарайся разбить большую задачу на маленькие подзадачи и решать их по отдельности - так гораздо проще. Или упрости задачу до варианта, который ты можешь решить, а потом дорабатывай до заданных требований. + +### Я не знаю, как работать с римскими числами + +Воспользуйся преобразованием римских чисел в арабские, например [онлайн тут](https://planetcalc.ru/378/). + +Статья о Римских цифрах в [Википедии](https://ru.wikipedia.org/wiki/%D0%A0%D0%B8%D0%BC%D1%81%D0%BA%D0%B8%D0%B5_%D1%86%D0%B8%D1%84%D1%80%D1%8B). + +## Успехов! diff --git a/task-string-calculator.md b/task-string-calculator.md new file mode 100644 index 0000000..6d98ab8 --- /dev/null +++ b/task-string-calculator.md @@ -0,0 +1,49 @@ + # Задача: программа "Строковый калькулятор" + +#### Описание: +Создайте консольное приложение "Строковый калькулятор". +Приложение должно читать из консоли введенные пользователем строки, числа, арифметические операции проводимые между ними и выводить в консоль результат их выполнения. + +#### Требования: + +1. Калькулятор умеет выполнять операции сложения строк, вычитания строки из строки, умножения строки на число и деления строки на число: +"a" + "b", "a" - "b", "a" * b, "a" / b. Данные передаются в одну строку(смотрите пример)! Решения, в которых каждая строка, число и арифмитеческая операция передаются с новой строки считаются неверными. +2. Значения строк передаваемых в выражении выделяются двойными кавычками. +3. Результатом сложения двух строк, является строка состоящая из переданных. +4. Результатом деления строки на число n, является строка в n раз короче исходной (смотрите пример). +5. Результатом умножения строки на число n, является строка, в которой переданная строка повторяется ровно n раз. +6. Результатом вычитания строки из строки, является строка, в которой удалена переданная подстрока или сама исходная строка, если в нее нет вхождения вычитаемой строки (смотрите пример). +7. Калькулятор должен принимать на вход числа от 1 до 10 включительно, не более. И строки длинной не более 10 символов. Если строка, полученная в результате работы приложения длинее 40 симовлов, то в выводе после 40 символа должны стоять три точки (...) +8. Калькулятор умеет работать только с целыми числами. +9. Первым аргументом выражения, подаваемого на вход, должна быть строка, при вводе пользователем выражения вроде 3 + "hello", калькулятор должен выбросить исключение и прекратить свою работу. +10. При вводе пользователем неподходящих чисел, строк или неподдерживаемых операций (например, деление строки на строку) приложение выбрасывает исключение и завершает свою работу. +11. При вводе пользователем выражения, не соответствующего одной из вышеописанных арифметических операций, приложение выбрасывает исключение и завершает свою работу. + +#### Пример работы программы: +###### Input: +`"100" + "500"` +###### Output: +`"100500"` +###### Input: +`"Hi World!" - "World!"` +###### Output: +`"Hi "` +###### Input: +`"Bye-bye!" - "World!"` +###### Output: +`"Bye-bye!"` +###### Input: +`"Java" * 5` +###### Output: +`"JavaJavaJavaJavaJava"` +###### Input: +`"Example!!!" / 3` +###### Output: +`"Exa"` +#### Принципы оценки работы: +Обратите внимание на принципы ООП, постарайтесь разбить программу на логические классы. Решения, в которых весь код программы находится в одном классе будут низко оценены. Продемонстрируйте своё умение в работе с разными синтаксическими конструкциями, не забудьте про исключительные ситуации, при которых выполнение программы невозможно из-за некорректных входных данных. + +#### Как отправить решение? +1. Если вы не знакомы с git и Github вам нужно ознакомиться с этой [статьей](http://maxsite.org/page/how-to-put-your-project-on-github-com), в ней описаны основы работы с git. +2. Если вы уже ознакомились с основами работы с git или были знакомы ранее - вам нужно создать собственный репозиторий и добавить туда проект с решением. +3. Ссылку на репозиторий отправьте нам на почту *info@java-mentor.com* с темой **Тестовое задание калькулятор Java**. diff --git "a/\320\227\320\260\320\264\320\260\321\207\320\260.md" b/task.md similarity index 80% rename from "\320\227\320\260\320\264\320\260\321\207\320\260.md" rename to task.md index 3592e08..e1eddb1 100644 --- "a/\320\227\320\260\320\264\320\260\321\207\320\260.md" +++ b/task.md @@ -18,10 +18,12 @@ `50` `стол/30/7000 шкаф/40/9000 пылесос/10/6000 кровать/40/10000` ###### Output: - `шкаф пылесос 15000 ` + `пылесос кровать 16000 ` + +#### Принципы оценки работы: +Обратите внимание на принципы ООП, постарайтесь разбить программу на логические классы. Продемонстрируйте своё умение в работе с разными синтаксическими конструкциями, не забудьте про исключительные ситуации, при которых выполнение программы невозможно из-за некорректных входных данных. #### Как отправить решение? 1. Если вы не знакомы с git и Github вам нужно ознакомиться с этой [статьей](http://maxsite.org/page/how-to-put-your-project-on-github-com), в ней описаны основы работы с git. 2. Если вы уже ознакомились с основами работы с git или были знакомы ранее - вам нужно создать собственныый репозиторий и добавить туда проект с решениием. 3. Ссылку на репозиторий отправьте нам на почту *info@java-mentor.com* с темой **Тестовое задание на курс**. -