Как программисту научиться решать задачи? - Компьютерные вопросы

Вопрос Как программисту научиться решать задачи?

Регистрация
17 Ноя 2013
Сообщения
77
Репутация
0
Спасибо
0
Монет
0
Здравствуйте.

Вспоминаю былую профессию. Читаю ныне книгу "Песни о Паскале". После прочтения главы делаю задачки. Дошёл до пузырьковой сортировки. Уже начинаю появляться затруднения. Вот пример задачи после главы:



Напишите программу для сортировки фамилий учеников в алфавитном порядке

(фамилии берутся из файла). Программа должна сортировать их как по возрастанию,

так и по убыванию фамилий, - на выбор пользователя



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



Собственно вопрос: как научиться решать задачи? И, самое главное, как догадываться до какого-то решения: до конкретного действия и что в принципе следует делать для решения задач/подзадач? Вроде кажется, что понимаю после чтения главы и решения задачек, но стоит встретить чуть более нестандартную задачу - и мой мозг говорит мне: "Пока, чувак"...
 
Регистрация
8 Ноя 2013
Сообщения
70
Репутация
0
Спасибо
0
Монет
0
"И опыт, сын ошибок трудных..."
(А.С.Пушкин)
Что касается того, что
" моё решение в корне отличается от того, как решил автор книги"
- вспомним Киплинга
"Девяносто шесть дорог
Есть, чтоб песнь сложить ты мог,
И любая - правильна, поверь"
 
Регистрация
21 Ноя 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
Любую программистскую задачу можно решить множеством совершенно разных способов. И то, что ты решил задачу иначе, чем автор книги, абсолютно нормально. Ну а то, что твой код неправильно работает - так опубликуй его, чтобы мы могли указать на твои ошибки. Наличие ментора (даже в виде ответов на Ответах), проверяющего твои решения и указывающего на твои ошибки - самый эффективный способ обучения.

Чтобы научиться решать задачи, надо решать задачи. Но не сами по себе, а параллельно изучению алгоритмики и дискретной математики, дающих теоретическую базу, необходимую для решения задач.

P.S. Задача программиста - видеть разные способы решения задачи и уметь выбирать из них наиболее подходящий для данных конкретных условий. Посмотри, например, раздел сортировок в учебнике Вирта: он учит именно сравнению множества разных алгоритмов.
 
Регистрация
10 Авг 2013
Сообщения
79
Репутация
3
Спасибо
2
Монет
0
ИМХО, тут нужно больше практики. Больше решай задач. Изменяй их, "играйся" с ними: пробуй сделать что-нибудь своё. Твои проблемы решаются именно путём регулярной, непрерывной и разнообразной практики.
 
Регистрация
20 Дек 2013
Сообщения
93
Репутация
0
Спасибо
1
Монет
0
решать, решать, решать и в сотый раз найдёшь своё сто первое решение.
 
Сверху Снизу