Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: помогите найти ошибку  (Прочитано 27737 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #30 : 23-09-2011 14:24 » 

mr_madik_7, я ведь не спросил, где ты учишься, и что тебе задали. Я спросил, что лично ты хочешь от этой задачи? Научиться программировать, заставить компьютер решить эту задачу или просто получить оценку за выполненную лабораторную работу?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
mr_madik_7
Интересующийся

kz
Offline Offline

« Ответ #31 : 23-09-2011 15:14 » 

Научиться программировать! К чему эти вопросы?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #32 : 23-09-2011 17:41 » 

mr_madik_7, к тому, что ты не хочешь учиться программировать. Ты хочешь, чтобы при запуске программа показывала на экране или записывала в файлы) примерно то, что тебе кажется правильным - и всё. В программировании главное не то, что компьютер делает, а то, как обеспечить правильную работу компьютера. Для этого надо сперва точно знать и понимать, что компьютер должен делать (и это не программирование, это постановка задачи), а затем запрограммировать.

Что значит "точно"? Это значит строго логично, как в математике. Поэтому программирование - это раздел математики.

Что значит "правильно"? Это значит, что либо нужно применять особые методы программирования, гарантирующие правильность (но этого ты пока не проходил - скорее всего, это будет в районе 2-го курса); либо, если методы программирования не дают гарантий, применять методы тестирования работы разработанной программы. В обоих случаях ключевым словом является метод - т.е. способ программирования, набор приёмов, правил, подходов и т.д.

Тебе в этой теме пытаются объяснить приёмы, правила и подходы, поскольку по твоему коду видно, что ты их не знаешь. Ты же от них отказываешься, говоря "и так сойдёт". Именно поэтому всем здесь, кроме тебя, очевидно, что программированию ты не учишься, а тебе нравится лишь "кнопки топтать". И это прямо противоположно твоей декларации "хочу научиться программировать".

Твоя задача - это уже поставленная задача. За тебя кто-то её продумал. Тебе не надо заботиться о том, что должен делать компьютер, тебе надо сосредоточиться на том, как чётко и внятно "объяснить" компьютеру, что от него требуется. А тебя как раз почему-то совсем не интересует это как.

Хороший программист (как и любой инженер) - это ленивый человек. Он кровно заинтересован в том, чтобы делать свою работу с наименьшими усилиями со своей стороны. Это называется "быть эффективным". Чтобы программист был эффективным, он должен досконально знать методы программирования и выбирать среди них те, которые в данных условиях наиболее просты и легки.

Ты пока - не программист. Потому что ты не знаешь методов. Если хочешь быть программистом - изучай методы. Это значит, что в учёбе лень и позиция "и так сойдёт" лишь снижают твой потенциал стать хорошим программистом и возможность быть ленивым на работе. Написал решение - думай над тем, как его сделать короче и проще, ищи примеры, разбирай подходы. Это и есть учёба. В результате ты решения таких задач, как твоя, будешь писать за несколько минут с первого раза, сейчас же у тебя на это уходит несколько дней мучений. Это неэффективно. Зато все прошедшие дни (раз уж всё равно время ты тратишь, и быстрее у тебя пока не получается) ты мог бы посвятить не "боданию" со старшими, а опробации различных вариантов решения.

Подумай на досуге над всем сказанным.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
mr_madik_7
Интересующийся

kz
Offline Offline

« Ответ #33 : 24-09-2011 10:58 » 

Твоя мысль ясна. Но мне кажется на первых парах все начинающие программисты занимаются "топтанием кнопок". Из всего сказанного я сделал такой вывод: слушать ваши советы; изучать теорию, методы; упрощать свои алгоритмы.
Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #34 : 24-09-2011 11:16 » 

Цитата
упрощать алгоритмы
Боже упаси...
Не усложнять и не засорять.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #35 : 24-09-2011 11:54 » 

Цитата: mr_madik_7
Но мне кажется на первых парах все начинающие программисты занимаются "топтанием кнопок".
Освой десятипальцевый слепой метод набора в разных раскладках (латиница, кириллица) - и вообще перестань об этом думать. Это должен быть естественный процесс, как ходьба, дыхание. Тогда твои мозги и твоё время освободится для других вещей.

Затем ты освоишь язык программирования (синтаксис), а то и несколько языков - и тоже перестанешь думать, как записываются всякие if, while, функции, структуры данных и т.д. И опять твои мозги и время освободятся для других, более важных вещей. Язык и синтаксис не имеют значения.

Затем ты освоишь основные алгоритмы и структуры данных - массивы, списки, стеки и очереди и другие виды коллекций, операции поиска, выбора, сортировки, потоки данных и их обработку, распараллеливания и синхронизации параллельных потоков. Всё это называется примитивами программирования. При должном опыте их применение не требует особых раздумий. И опять твои мозги и время освободятся для других, более важных вещей.

Наконец, ты познакомишься с архитектурами, шаблонами проектирования. И опять твои мозги освободятся для более важных мыслей. И вот тогда программирование станет для тебя тривиальным занятием, а все сложности будут видеться в области постановки задач и выбора технологий.

Как видишь, топтание кнопок - это освоение профессии машинистки, и к программированию непосредственного отношения не имеет. Когда я учился на программиста, у нас была склонность ставить для себя такие задачи, которые мы не умели решать, чтобы научиться их решать. Простые задачи, которые мы уже умели решать, нам казались неинтересными. Но дело в том, что каждая следующая более сложная задача предполагала, что мы уже научились решать предыдущие более простые задачи, и научились их решать хорошо, доводили решения простых задач до автоматизма, потому что иначе не оставалось времени и мозгов, чтобы подумать о более сложном.

Когда пишешь открытие и чтение из файла, или обработку массива, или поиск максимума, или выбор из списка в 20-й раз, это уже начинает раздражать - хочется быстрее, тогда для себя узнаёшь о библиотеках, объектах и т.п. полезных вещах, которые всё это упрощают.

Цитата: mr_madik_7
Из всего сказанного я сделал такой вывод: слушать ваши советы; изучать теорию, методы; упрощать свои алгоритмы.
Слушать советы и изучать теорию ты всё равно будешь вполуха. Ага Программирование не изучается как теория по книжке. Нужно программировать. А чтобы программировать, нужно постоянно испытывать неудовлетворённость от достигнутого результата.

Взял задачу. Мучался-мучался, наконец, написал, и что-то заработало - радуешься. А на следующий день уже не доволен, уже думаешь "а если так попробовать?", "а если этак?", а вот тут тормозит - как быстрее сделать, а вот тут памяти много уходит - как экономнее, а вот тут длинный, некрасивый и мутный кусок кода - как его упростить и переписать, чтобы красивее было.

Так вот, чего у тебя пока в этой теме не наблюдается, так это недовольства собственным решением. Как только оно у тебя появится, во-первых, ты перестанешь отбрыкиваться от советов (хотя и не обязательно начнёшь им следовать), во-вторых, у тебя появится куча вариантов решений, в-третьих, твой профессиональный уровень начнёт так расти, что обгонит университетскую программу - ты будешь легко выполнять все задания, и тебе даже скучновато станет, зато освободится время для того, что тебе интересно, в-четвёртых, уже на 3-4-м курсе ты легко найдёшь работу или приработку про профессии, а потом не ты будешь искать работу, а работа будет искать тебя.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
mr_madik_7
Интересующийся

kz
Offline Offline

« Ответ #36 : 25-09-2011 09:50 » 

мда.. да тебе надо писать мотивирующие книги для программистов Ага
путь к успеху всегда один, будь ты программистом или инженером без разницы. Главное всегда двигаться вперед.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #37 : 25-09-2011 11:55 » 

Цитата: mr_madik_7
Главное всегда двигаться вперед.
Правда, не все почитатели успеха знают, где перед, но двигаются Отлично
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
mr_madik_7
Интересующийся

kz
Offline Offline

« Ответ #38 : 25-09-2011 13:59 » 

Цитата: mr_madik_7
Главное всегда двигаться вперед.
Правда, не все почитатели успеха знают, где перед, но двигаются Отлично
Да, правильнее "Главное всегда двигаться". Незнаю зачем написал "вперед".
Записан
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines