Дело не калькуляторе, просто хотел показать те принципы, на которых сам учился. Калькулятор - первое, что пришло в голову. Да, кстати, почитай на досуге "Готовые алгоритмы на Visual Basic".
Еще можно олимпиадные задачки порешать. Много знаний по конкретному языку они не требуют, а тренировка хорошая. Только не надо перед решением смотреть ответ - лучше после того как сам решил
По поводу идей, калькуляторов, бульбуляторов итп... Такой подход
только утомляет, этим подходом разве что нервы будущего программиста
закалять. На примере калькулятора, скорее всего программист
(начинающий), полсе реализации всего того что перечислил mynog (учёт
скобок, операций, итп...) будет долго пливаться узнав про Microsoft
Script Control (P.S. А вдруг и mynog про него незнает ) Который, тот
код, в несколько сотен строк, что безсонными ночами будет писать
начинающий программист, заменит в одну строку... Вот так то... прям
как "В жизни так бывает..." (с) Многоточие Я имею ввиду, что нужно
учиться на интересных и разнобразные примерах. Интересный пример
программист изучает с интересом, удовольствием... Но если зацыклиться
на этом "интересном" примере, который, по словам mynog'a, нужно
постепенно набивать фичами, то начнёт тошнить от этого интересного
примера, а вдруг тазика рядом небудет... и... опять "В жизни так
бывает..." )) новичёк забросит свою идею, причём как показывает
практика, забросит где-то на середине дела, т.е. небудет исходников
хоть какой нибуть полность законченной (если хотите - официальной)
версии того же калькулятора. А это всёравно что потерять исходный
код проекта. (Надеемся, что новичёк небудет, свой мега проект
калькулятор, разрабатывать под CVS or VSS etc... ) Итак, через время (пускай месяц, 2...) когда вдруг снова
появится желания взяться за проект "Калькулятор", новичёк, открыв свой
код, брошенного на середине калькулятора, просто офигает. На это есть
вот какие причины: 1) Новичек забудет все аспекты и подводные камни
своего калькулятора, скажем так забудет архитектуру приложения 2) За
время пока проект был заморожен, новичёк узнает оч. много нового, и на
момент повторного поднятия проекта, захочет 85% кода перписать,
оптимизировать, переделать итп итп... 3) Паралельно (одновременно)
всего этого, незаконченный проект будет набиваться новыми фичами (Ведь
именно советовал mynog). В итоге: Старые баги, новые баги, бардак в
коде, смутное представление идеи (архитектуры). Конечный результат:
"Ну его этот калькулятор, всёравно кроме меня и моего друга Васи им
мало кто будет пользоваться, и вообще... пиво пить пора....".
У самого меня так сгорел не один проект, так что всё написанное выше -
не от винта... Поэтому, я бы советовал писать небольшие программы, в
разных направлениях: математические расчёты, визуальное
программирование, 3D, системное программирование, базы данных, инет
протоколы... Небольшие, в смысле фич - идея > запись цели (техническое
задание) > пошаговый разбор реализации > нахождение нужной информации,
материалов, примеров итп... > ну и, непосредственно, сама
реализация. Молчу про публичный тестинг, пробные beta версии итп...
Это же "начинающий" ! Ну и паралельно этому изучать новые технологии,
различные среды для разработки, аспекты коммандной разработки, итп...
Всё это выдрисирует универсального программиста, а не узкопрофа...
Универсальный, с перспективами на будущие, программист! Аж звучит
приятно!
Я тоже начинал с мега-проектов Писал текстовый редактор. Долго писал, набивал фичами (вот, гляжу, вижу, что локализацию делал, собственный формат форматированного документа, конвертация в HTML, автообновление через интернет и т.д.)... В конце концов потерял интерес, замучали отовсюду появляющиеся баги, и совершенно неуместным признал ранний стиль кодирования и проектирования А переписывать 300 кб кода ради потерявшей смысл идеи я не стал. Так и остался проект лежать мертвым грузом.
Много позже делал почтовый клиент (уже на .NET). Там планы были совсем гигантские, вплоть до того, чтобы переплюнуть TheBat Написал реализации протоколов POP3, SMTP, парсер MIME, хранение и управления письмами и папками, экпорт/импорт из TheBat... Дальше дело не пошло
Вообще, анализируя свой опыт изучения программирования, получаю два факта:
1. Проекты, которые у меня делаются на чистом энтузиазме, а не из-за денег, практически никогда не доходят до релиза. После изучения целевой технологии (в почтовике это сетевые протоколы и формат MIME и почтовых баз TheBat, в грандиозном проекте битвы искуственных интеллектов с онлайн-трансляцией через интернет - .NEt Remoting и алгоритмы игры в крестики-нолики и т.д.) интерес к проекту сильно ослабевает, и тянет изучать что-то новое.
2. Всегда когда смотришь на свой код, написанный даже полгода назад, думаешь, каким дураком же ты был раньше Сейчас вот думаю, что неизбежно, вглянув на пишущийся сейчас код VBNet v4.0 через полгода-год, я подумаю о себе то же самое ))
Главное, чтобы поменьше незаконченного кода на первых порах. Чтобы каждый раз видеть законченный результат. Это стимулирует продолжать и воспитывает в тебе винера, а не лузера
Мой первый учитель по программированию исповедовал такой подход к программированию
(это было еще в стародавние времена и работали мы тогда на супермашине СМ-4 -
может кто еще помнит, размером с комнату) - давал задачку, которая имеет известное решение
и просил ее решить самостоятельно. Мне, например, достался алгоритм сортировки по
возастанию/убыванию. Потом сам уже сравнивал полученное решение. Вот и придумывал
алгоритм. Как же я был удивлен, когда узнал, что мой алгоритм имеет название "пузырьковый" и
давным-давно известен. Потом давалась более сложная задача и т.д.
В результате - несколько его учеников несколько лет подряд занимают первые места
на союзных олимпиадах по программированию и даже было 2-е место на Международной олимпиаде
(это где-то конец 80-х).
А с тем, что сказали HACKER и Павел, я в общем согласен. Только я не хотел
ориентировать начинающих на мегапроекты, а просто хотел показать, что
не бывает до конца завершенных задач.
Мегапроект - это вообще не для одного человека, будь ты хоть кто.
Мегапроект - это вообще не для одного человека, будь ты хоть кто.
Пожалуй, правда.
Я давно пишу графический редактор. И вот сейчас у меня есть большое желание его довести до логического конца, оттестить, выложить, и начать писать заново с красивой архитектурой.
Вот только логического конца не видно.
Сейчас я делаю ему форматы файлов, которых там практически нет. Это оказалась непростая задача сделать организацию этих форматов и избежать повторения кода.
В данный момент пытаюсь придумать, как же быстро производить перевод из 24-bit RGB в индексированные цвета, теряя как можно меньше (в том числе и подбор палитры). Пока ничего особо путного не придумал.
2mynog:
Да я понял суть, но то что лучше доводить начатое до конца тоже
понял, а в следствии если кидаешься делать, что то большое и
полезное, возникает куча вопросов и багов и идея вместе с кодом
теряется на винте, будем делать меленькое, но приятное!
На счет олимпиадных задач - голова начинает болеть, причем
сразу, а если простые с массивами и т.д., то прогресс виден и
что то получается, что не может не радовать!
2HACKER:
А что ты там про Microsoft Script Control сказал?
В двух словах - что это есть?
Во всем согласен, пока был на отжыхе прочитал не сколько книг,
появились мысли, новые знания, и открывать старые проекты даже
страшно, хотя наверное все же открою и как нить закончу!
2Павел:
Согласен.
Но все же мне нужен опыт, так что как нить, то что начал
попытаюсь закончить и начну параллельно что нить еще
Ну а про пол года назад, тут узнаешь всякие функции и т.д. и
смотришь как пытался это сделать сам, вот тут то и думаешь, что
ты не просто дурак, а еще какой.
А ведь одной теорией сыт не будешь, интересно кодить, а в
перерывах читать, но блин не выходит.
правым батоном на панель контролов >> Components Подключаем "Microsoft Script Control" >> Кидаем его на форму. Ещё кидаем текстовое поле и батон. Кодим:
Private Sub Command1_Click()
Text1 = ScriptControl1.Eval(Text1)
End Sub
Запускаем, в текс. поле вводим пример (со всеми скобками, правелами умножения, любой пример короче) жмёмс батон - опля, и решило О до чего техника дошла