Другие языки программирования и технологии
Запутываюсь при решении логических задач, написании программ
Я учусь на программиста и в последнее время заметил, что я часто запутываюсь при решении логических задач, сначала читаю задачу вдумываюсь, что вообще она должна делать ( программа) потом уже думаю как реализовать ее в виде кода, и когда например начинаю продумывать реализацию кода, в голове начинаю продумывать ее действия как она себя будет вести и вот как бы немогу доконца дойти этого решения) как бы, тоесть начиная просчитывать и чем глубже ухожу в просчет этого решения дабы посомтреть поведения программы ( в голоове как бы представляю) тем мне становится сложнее и я запутываюсь в решении начинаю заново пробовать продумать все, и еще больше запутываюсь а потом отдохнув некоторое время день например понимаю что задача то простая но при реешнии опять же запутываюсь но уже легче ( второй раз после отдыха) вообщем как с этим бороться? Кто что посоветует?
Варианты возгласа "Какой я идиот! " будут сопровождать всю "сознательную деятельность"
Что тут посоветуешь? Развивать абстрактное мышление.
Всяко, в программировании не часто встречаются задачи, похожие на просчёт в шашках/шахматах/брижде
Что тут посоветуешь? Развивать абстрактное мышление.
Всяко, в программировании не часто встречаются задачи, похожие на просчёт в шашках/шахматах/брижде
Евген Ий Телепнёв
почему такие варианты возгласа будут сопровождать человека всю жизнь?
"Разделяй и властвуй"
Дели решение на простые части и не пытайся объединить в одном модуле программы сразу много действий, которые можно отделить друг от друга, даже если это сулит некоторую экономию вычислений.
Дели решение на простые части и не пытайся объединить в одном модуле программы сразу много действий, которые можно отделить друг от друга, даже если это сулит некоторую экономию вычислений.
Только маленький код и лишь иногда получается создать сходу, интуитивно. В остальных случаях создание хорошего алгоритма - это технология. Мы не компьютеры, наш мозг не способен одновременно держать во внимании все конструкции языка, значения переменных и т. д. Поэтому и появились разные языки, принципы и другие приемы программирования.
1) как верно отметил Краб, нужно делить задачу, причем сразу по нескольким плоскостям. Отделяем программу от данных, отделяем вычисления от интерфейса, отделяем обработку от хранения и т. д. и т. п. Важно выделить разные уровни обработки информации. Деление выполняется различными средствами языка - процедурами и функциями, классами, программными модулями и библиотеками, структурами данных и т. д.
2) скрывайте ненужные на данный момент детали. Для этого нужно реализовывать отдельные части последовательно. Выделили, например, в отдельную процедуру решение квадратного уравнения - доведи алгоритм до рабочего состояния, чтобы он был корректен, удобен для вызова, обрабатывал ошибочные ситуации. После этого можно забыть о внутренней реализации функции и в других местах только следовать ее интерфейсу.
3) Сделайте код понятным. Тут много можно написать - о стиле, о правильных именах переменных, о размере одного модуля, комментариях и т. д.
4) Рисуйте схемы. Это не всегда нужно, но в сложных случаях иногда бывает полезно изобразить общую структуру модуля.
5) Старайтесь сперва проектировать модель алгоритма, потом переводить его в код. Потому, что это две разные задачи, два разных режима работы мозга - проектирование схемы алгоритма и реализация его деталей, где нужно уже заботиться о мелочах, таких как особенности синтаксиса или обработки конкретных данных. Хотя тут, вообще такая сложная смесь получается, поэтому приходится учиться постоянно переключаться - с узкого фокуса на широкий охват и обратно.
6) Используйте готовые решения. Это касается не только готовых классов, функций, библиотек. Но и более общих принципов, так называемых шаблонов проектирования. Например, если я знаю, что программа должна будет реагировать на внешние воздействия, которые носят более-менее случайный характер, то очевидно, что она должна реализовать ту или иную схему событийно-управляемого интерфейса. А они строятся по вполне известным схемам. То есть не надо изобретать свою систему, а можно сразу приступать к реализации очереди сообщений, диспетчера, обработчиков.
7) Возможно, пора думать об организации процесса - режиме работы, разделении труда, дополнительном образовании, обустройстве рабочего места, автоматизации процесса и т. д.
Короче, вы просто добрались до того уровня сложности программ, где заканчивается простое кодирование и начинается программирование в более широком понимании - изучение правил организации данных и кода, архитектура ПО и даже управление процессом разработки.
1) как верно отметил Краб, нужно делить задачу, причем сразу по нескольким плоскостям. Отделяем программу от данных, отделяем вычисления от интерфейса, отделяем обработку от хранения и т. д. и т. п. Важно выделить разные уровни обработки информации. Деление выполняется различными средствами языка - процедурами и функциями, классами, программными модулями и библиотеками, структурами данных и т. д.
2) скрывайте ненужные на данный момент детали. Для этого нужно реализовывать отдельные части последовательно. Выделили, например, в отдельную процедуру решение квадратного уравнения - доведи алгоритм до рабочего состояния, чтобы он был корректен, удобен для вызова, обрабатывал ошибочные ситуации. После этого можно забыть о внутренней реализации функции и в других местах только следовать ее интерфейсу.
3) Сделайте код понятным. Тут много можно написать - о стиле, о правильных именах переменных, о размере одного модуля, комментариях и т. д.
4) Рисуйте схемы. Это не всегда нужно, но в сложных случаях иногда бывает полезно изобразить общую структуру модуля.
5) Старайтесь сперва проектировать модель алгоритма, потом переводить его в код. Потому, что это две разные задачи, два разных режима работы мозга - проектирование схемы алгоритма и реализация его деталей, где нужно уже заботиться о мелочах, таких как особенности синтаксиса или обработки конкретных данных. Хотя тут, вообще такая сложная смесь получается, поэтому приходится учиться постоянно переключаться - с узкого фокуса на широкий охват и обратно.
6) Используйте готовые решения. Это касается не только готовых классов, функций, библиотек. Но и более общих принципов, так называемых шаблонов проектирования. Например, если я знаю, что программа должна будет реагировать на внешние воздействия, которые носят более-менее случайный характер, то очевидно, что она должна реализовать ту или иную схему событийно-управляемого интерфейса. А они строятся по вполне известным схемам. То есть не надо изобретать свою систему, а можно сразу приступать к реализации очереди сообщений, диспетчера, обработчиков.
7) Возможно, пора думать об организации процесса - режиме работы, разделении труда, дополнительном образовании, обустройстве рабочего места, автоматизации процесса и т. д.
Короче, вы просто добрались до того уровня сложности программ, где заканчивается простое кодирование и начинается программирование в более широком понимании - изучение правил организации данных и кода, архитектура ПО и даже управление процессом разработки.
Гуляйте больше, на свежем воздухе, абсолютно серьезно! И занимайтесь спортом.
Похожие вопросы
- Составьте программу решения старинной задачи: сколько можно купить быков (бык стоит 10рубей) , коров (по 5 рублей) и тел
- Как написать программу решения следующей задачи?
- Как научиться зарабатывать в интернете, с помощью написания программ и т. п. молодому человеку?
- Выбор языка для написания программы
- Как написали первую программу без программы для написания программ?
- Помощь в написании программ
- . Исходя из условия задачи, исправьте программу и напишите правильное решение
- Где можно найти видео для обучения написания программ***????
- Народ где можно найти внятные и понятные видео уроки или книги для написания программ!!!
- Pycharm (Пожалуйста, помогите с написанием программы)