Java. Трудности в начинании, нормальные ли ошибки в начале?
Здравствуйте
учу java 2 недели, очень уплотнился на циклах, прохожу курс на javarush, последние задачи самостоятельно решить вообще не смог, для меня они кажутся слишком трудными, хотя после того как смотрю верное решение все абсолютно ясно, я ушел еще глубже и последние задачи а точнее их логику я начал понимать, в голове представление кода начал иметь, но написать его в редакторе я не мог, каждый раз был близок, но самую важную суть кода я написать не смог. Приведу пример:
была задача написать код где будут вводится цифры и после stop слова цикл завершается, а в консоли выходит второе по величине значение из веденых. else if (num > second_max && num != max_number)
вот этот код был у меня в голове но написать я его не смог, и так каждую задачу.
там в чем вопрос, как прокачивать в себе этот навык, нормально ли ошибаться так в начале, ведь чем дальше тем тяжелее, а если я тут лажаю то что дальше будет?
Учиться можно от простого к сложному, пробуйте упрощать постановку задачи если она не получается - дальше этот навык поможет развить навык декомпозиции.
Как только что то получилось усложняйте постановку задачи в направлении требуемого решения.
В целом помогает учиться решению задач регулярное решение разных задач.
Также нужно смотреть чужие решения, смотреть разборы типовых алгоритмов.
Можно брать чужое решение, на который нет разбора и пытаться понять что делает каждая строка, тут ИИ неплохо помогает. Больше 50% времени нужно самому решать задачи, т.к. навыки это постоянная практика.
Рискну ответить, хотя вопрос на самом деле не простой, т к у всех всё очень индивидуально. Вам стоит не просто решать задачи одну за одной, а начать усложнять их самостоятельно. Как это работает: вы придумываете дополнительные условия, а ваш мозг сам подсказывает как это можно реализовать. Т к придумали вы это сами, мозг может уже изначально знать решение на подсознательном уровне. Дальнейшая реализация решения в коде закрепляет навык. Вы начинаете как бы представлять как работает код внутри.
Другие варианты действий:
1. Разбор чужих решений до полного понимания их работы. Берете и буквально на бумаге расписываете всё, что происходит на каждой итерации цикла - все переменные и как сработают условия. Эта техника развивает не только внутреннее представление работы кода, но и навык чтения чужого кода.
2. Более простой метод: тоже самоме, что и п1, но с использованием отладчика. На каждой итерации цикла смотрите состояние программы и у вас должны появиться мысли, что и куда нужно там добавить, что бы получить нужный эффект. Это "упражнение" за одно развивает навык отладки.
3. Не зацикливайтесь на конечном правильном решении, разбивайте задачу на малые итерации. Из вашего же примера: не можете сообразить как получить второе значение, выведите первое! Затем прогоните программу через отладчик (ну или "через бумажку") и попробуйте понять чего не хватает и где.
вот что я хотел на самом деле услышать, потому что эта проблема действительно решается практикой "усложение одной задачи" и смотреть как найти то или иное значение, просто меня задело что я ни одну задачу не смог решить сам, но когда я сидел и думал над логикой решения задачи у меня все в голове верно собиралось, но в коде я это собрать не мог, не хватает навыков логических условий, спасибо!
ну найти сабмаксимум не так уж и просто для новичка.
и логика там не в if-else, а в том, как мы этот сабмаксимум обновляем. это сложнее чем просто максимум найти с одной переменной, которую мы просто обновляем проходя массив данных.