Путём длительных размышлений, я пришел к выводу, что чтобы воспитать настоящего программиста, обучение следует начинать чуть ли не с младенческого возраста. Вопрос — как?
Ведь книжки по программированию (даже те, что «для чайников») явно не годятся для неокрепших детских умов. И вообще, начинать со всяких «Хеллоу, ворлд» — себя не уважать.
Короче, мой метод — брать быка за рога и приступать сразу к эпическим произведениям. А что для ребенка является самым эпическим произведением? Конечно же, «Сказка о репке»!
Напомню суть. В пространстве сказки определены семь экземпляров класса Персонаж, в порядке первого вызова: дедка, репка (вот давайте только не спорить сейчас, репка — такой же персонаж, как и все остальные), бабка, внучка, жучка, кошка и мышка.
Каждый экземпляр класса Персонаж обладает свойствами «имя» и «сила» (сила репки, кто не понял, — это минимальная сила, с которой её можно вытянуть из земли) и методами «посадить» и «позвать на помощь» (оба они, фактически, вызывают функцию-конструктор нового экземпляра этого же класса). Да, вы правы: по идее, должен быть ещё метод «тянуть», но мы его реализуем попозже.
Так вот, про основное действие — то самое воспетое неизвестным автором «тянем-потянем». В этом процессе участвуют сразу несколько экземпляров класса Персонаж, поэтому реализовать его разумно не в виде метода этого класса, а в виде отдельного класса. У него есть свойства «что тянем» (экземпляр класса Персонаж) и «кто тянет» (массив экземпляров класса Персонаж). А также, грубо говоря, один основной метод — определение результата попытки вытягивания при текущем составе участников.
Остался только сам сюжет, который в классическом варианте сводится к следующему алгоритму:
дедка = новый Персонаж;
репка = дедка.посадить(новый Персонаж);
процесс = новый ТянемПотянем(репка);
процесс.включить(дедка);
до тех пор, пока (результат процесса отрицательный, и ещё есть, кого позвать)
процесс.включить(процесс.последнийВОчереди.позвать(новый Персонаж));
Вот и всё — теперь, если задать правильные исходные данные, то программа в точности повторит эпическую историю о пище и взаимопомощи со счастливым концом.
Но если чуть-чуть поиграться с исходными данными, то... может получиться огромное количество совершенно новых увлекательнейших историй с поистине непредсказуемым финалом!
↑ Нажми на кнопку — будет сказка
P.S.Исходный код (правда, я не особенно щедр на комментарии).
P.P.S. Если у вас не видно никакой кнопочки, или если при ее нажатии ничего не происходит, то вы, скорее всего, читаете эту заметку не на live.mephist.ru.
Вот она - верификация абсурда под прикрытием логической концепции валидации декларируемых свойств. Точность поставленного диагноза легко устанавливается по следующим симптомам: дислексией, шизофренией и диафорезом.
чисто программистская развлекуха:) самое смешное, что я когда-то школьникам базовые алгоритмы как раз на примере сказок и объясняла!!! ну там case , loop - репка, про кощея и его смерть... колобок... но, object oriented - это гениально... а, главное, такая фигня феерическая получaется!!!