Программы LEGO.

Логомиры .

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

Элкон .

Элкон - графическая среда для моделирования объектов различных предметных областей. Создание композиций объектов (конструирование) осуществляется по принципу мозаики в процессе последовательного и целенаправленного применения к множеству используемых объектов соответствующих преобразований. В среде ЭЛКОН возможна реализация широкого спектра преобразований над множествами. Такие абстрактные понятия, как множество, функция, преобразование, операция и т.п., интерпретируются в системе на доступном для любого возраста уровне.

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

Применение системы возможно практически в любых предметных областях, включая орнаментальное искусство, историю, географию, домоводство, дисциплины естественно-математического цикла. Система ориентирована на непрограммирующего пользователя. В среде Элкон могут работать дети, начиная с 5-6 лет.

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

Аскун .

Аскун - компьютерная учебная среда для изучения терминологии и моделирования задач на понятийном уровне. Словарный комплекс ориентирован на помощь учащимся в освоении основной терминологической лексики изучаемой предметной области, а также служит средством структурной организации понятий в виде тезауруса, выступая тем самым своеобразной моделью предметной области. Тезаурус содержит краткое определение каждого понятия и его связи с другими понятиями описываемой предметной области.

Разработка такого тезауруса является далеко не тривиальной задачей, а сам тезаурус представляет интеллектуальный продукт. Описание каждого термина в системе его связей становится отдельным исследованием, поскольку эта работа проводится на самом глубоком уровне изучения лингвистического объекта - как в парадигматике (в ряду аналогичных объектов), так и в энциклопедическом аспекте (в системе знаний).

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

При использовании АСКУН достигаются следующие цели:

изучение основной терминологической лексики предметной области и системы семантических связей между понятиями (тематическая и структурная ориентация);

формирование производных словарей (микротезаурусов) на базе основного тезауруса (функциональная ориентация);

ассоциативное усвоение элементов знаний изучаемой предметной области на основе многоаспектного использования словарной информации и графического изображения связей понятий (когнитивная ориентация).

Контур .

Контур - компьютерная учебная среда для решения задач на построение сечений выпуклого многогранника. Важно отметить, что решение задач в системе имеет в целом невычислительный характер. КОНТУР - это инструментальная среда, обеспечивающая активное изучение предметной области на базе тезауруса, моделирование проблемных ситуаций задачи на понятийном уровне, а также реализацию плана учащегося по построению сечения. Решение задачи в системе Контур осуществляется в режиме диалога с компьютером на естественном языке.

Система Контур позволяет решить любую задачу данного класса из школьного курса стереометрии, условие задачи формируется в режиме диалога. Одновременно создаются графические модели исходных объектов. При решении задачи учащийся работает с реальными объектами предметной области (точкой, прямой, отрезком, плоскостью, многоугольником, многогранником), использует набор графических операций, ему доступны различные виды вращения фигуры, работа в оконной среде.

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

Основные достоинства разработки:

построение формальной модели условия задачи;

возможность исследования задачи на наличие других решений;

приближение объекта к реальному, за счёт учёта свойств элементов многогранника;

идея конструктора задач;

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

Узнав о виртуальных деструкторах, естественно спросить: "Могут ли конструкторы то же быть виртуальными?" Если ответить коротко - нет. Можно дать более длинный ответ: "Нет, но можно легко получить требуемый эффект".

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

Но эти ограничения можно обойти, если определить функцию, содержащую вызов конструктора и возвращающую построенный объект. Это удачно, поскольку нередко бывает нужно создать новый объект, не зная его истинного типа. Например, при трансляции иногда возникает необходимость сделать копию дерева, представляющего разбираемое выражение. В дереве могут быть узлы выражений разных видов. Допустим, что узлы, которые содержат повторяющиеся в выражении операции, нужно копировать только один раз. Тогда нам потребуется виртуальная функция размножения для узла выражения.

Как правило "виртуальные конструкторы" являются стандартными конструкторами без параметров или конструкторами копирования, параметром которых служит тип результата:

expr(); // стандартный конструктор

virtual expr* new_expr() { return new expr(); }

Виртуальная функция new_expr() просто возвращает стандартно инициализированный объект типа expr, размещенный в свободной памяти. В производном классе можно переопределить функцию new_expr() так, чтобы она возвращала объект этого класса:

class conditional: public expr {

conditional(); // стандартный конструктор

expr* new_expr() { return new conditional(); }

Это означает, что, имея объект класса expr, пользователь может создать объект в "точности такого же типа":

void user(expr* p1, expr* p2)

expr* p3 = p1->new_expr();

expr* p4 = p2->new_expr();

Переменным p3 и p4 присваиваются указатели неизвестного, но подходящего типа.

Тем же способом можно определить виртуальный конструктор копирования, называемый операцией размножения, но надо подойти более тщательно к специфике операции копирования:

// копировать `s" в `this"

inline void copy(expr* s);

// создать копию объекта, на который смотрит this

virtual expr* clone(int deep = 0);

Параметр deep показывает различие между копированием собственно объекта (поверхностное копирование) и копированием всего поддерева, корнем которого служит объект (глубокое копирование). Стандартное значение 0 означает поверхностное копирование.

Функцию clone() можно использовать, например, так:

void fct(expr* root)

expr* c1 = root->clone(1); // глубокое копирование

expr* c2 = root->clone(); // поверхностное копирование

Являясь виртуальной, функция clone() способна размножать объекты любого производного от expr класса. Настоящее копирование можно определить так:

void expr::copy(expression* s, int deep)

if (deep == 0) { // копируем только члены

else { // пройдемся по указателям:

left = s->clone(1);

right = s->clone(1);

Функция expr::clone() будет вызываться только для объектов типа expr (но не для производных от expr классов), поэтому можно просто разместить в ней и возвратить из нее объект типа expr, являющийся собственной копией:

expr* expr::clone(int deep)

expr* r = new expr(); // строим стандартное выражение

r->copy(this,deep); // копируем `*this" в `r"

Такую функцию clone() можно использовать для производных от expr классов, если в них не появляются члены-данные (а это как раз типичный случай):

class arithmetic: public expr {

// новых членов-данных нет =>

// можно использовать уже определенную функцию clone

С другой стороны, если добавлены члены-данные, то нужно определять собственную функцию clone():

class conditional: public expression {

inline void copy(cond* s, int deep = 0);

expr* clone(int deep = 0);

Функции copy() и clone() определяются подобно своим двойникам из expression:

expr* conditional::clone(int deep)

conditional* r = new conditional();

r->copy(this,deep);

void conditional::copy(expr* s, int deep)

if (deep == 0) {

expr::copy(s,1); // копируем часть expr

cond = s->cond->clone(1);

Определение последней функции показывает отличие настоящего копирования в expr::copy() от полного размножения в expr::clone() (т.е. создания нового объекта и копирования в него). Простое копирование оказывается полезным для определения более сложных операций копирования и размножения. Различие между copy() и clone() эквивалентно различию между операцией присваивания и конструктором копирования ($$1.4.2) и эквивалентно различию между функциями _draw() и draw() ($$6.5.3). Отметим, что функция copy() не является виртуальной. Ей и не надо быть таковой, поскольку виртуальна вызывающая ее функция clone(). Очевидно, что простые операции копирования можно также определять как функции-подстановки.

LEGO Digital Designer 4 - программа для создания различных 3D-объектов на основе виртуальных деталей конструктора LEGO от самих разработчиков этого популярного конструктора.

В этом Лего, как и в настоящем конструкторе, можно использовать огромное разнообразие существующих на данный момент LEGO-элементов.

Последня версия программы LEGO Digital Designer 4.0.20 включает порядка 760 типов элементов. Выбранной детале можно присвоить любой цвет.

Как и в обычных 3D-редакторах, рабочую область программы можно приближать и удалять, разворачивать под любым углом, свободно перемещаться по ней.

Задний фон можно добавить или поменять в режиме просмотра готовой виртуальной модели LEGO.

Интерфейс программы очень прост и удобен, поэтому даже самому маленькому ребенку будет несложно разобраться с Виртуальным конструктором Лего.

Программа поддерживает два режима конструирования: вы можете начать все "с нуля" и воплотить свои даже немыслимые фантазии в созданных моделях или дополнить почти готовые модели, что рекомендуется начинающим пользователям.

А после создания своего шедевра, его можно разместить в галерее лучших работ на сайте разработчиков LEGO Digital Designer, где помещены наиболее удачные конструкции пользователей, или просто разместить модель на нашем сайте в форуме Модели LEGO .

SR 3D Builder

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

Главное отличие данной программы от аналогичных – возможность точно определять место соединение деталей. Программа постоянно дорабатывается, в нее вносятся изменения, добавляются новые функции. Не исключено, что программа не оправдает все Ваши ожидания: например, программа не учитывает физические явления, такие как сила тяжести, скрученность, вес, эластичность и т. п., но она доставит удовольствие тем, кому нравится проектировать в программах, похожих на LDD и порадует большим количеством деталей. Ко всему вышесказанному можно добавить, что если Вы при моделировании будете использовать такие детали, как шестеренки, то в готовом проекте Вы сможете увидеть их в действии!
Сайт разработчика http://sr3dbuilder.altervista.org. Разработчиком является Sergio Reano.

Обсудить программу и разместить модели, созданные в ней, а так же задать вопросы по работе с приложением, можно на .

LeoCad

LeoCAD – это среда проектирования моделей LEGO: каждый отдельный блок можно поворачивать, перемещать в пространстве и менять его цвет.

Просмотр проекта возможен с 7 различных видов, включая изометрический.

Программа включает в себя большую пополняемую библиотеку блоков, редактор персонажей, а также возможность экспорта в популярные форматы 3D Studio и Wavefront и рендеринга с помощью POV-Ray.

Интуитивно понятный интерфейс поможет быстро разобраться с LeoCAD, и уже через несколько минут после освоения программы вы сможете построить собственные модели Lego!

Программа была создана сторонними разработчиками и не совместима с LEGO Digital Designer.

Вы можете обсудить или разместить модели созданные в редакторе на форуме .

(Официальный сайт: www.leocad.org)

Вид ПО : Конструктор
Разработчик/Издатель : Madfinger Games
Версия : 0.1.0
iPhone + iPad : Бесплатно [Скачать из App Store ]

Все без исключения мальчики в детстве обожали собирать конструкторы или модели. Это могли быть автомобили, самолеты и другие реальные объекты, уменьшенные в десятки и сотни раз. И лишь редкие юные конструкторы с возрастом сохранили любовь к своему хобби, продолжая конструировать. Причины на это могут быть самые разнообразные, но это уже выходит за рамки данного материала. Сегодня мы рассмотрим приложение Monzo , которое позволит любому ненадолго вернуться в детство и немного пособирать превосходные трехмерные модели.

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

Процесс сборки интересен, но довольно сильно упрощен. В правом верхнем углу присутствует инструкция, по которой и предстоит производить сборку модели. Шаг за шагом, деталь за деталью. Отступить от руководства нельзя не на шаг – неподходящие в данный момент детали будут попросту недоступны для выбора.

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

Спустя три-пять минут модель будет собрана. Никакой сложности в этом процессе нет. После этого предлагается раскрасить получившийся объект. Для каждой детали можно выбрать свой цвет из богатой палитры доступных красок. Затем можно украсить результат наклейками или стикерами. Вот их размещение реализовано довольно неудобно – один из редких недостатков Monzo.

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

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

Дисплей iPhone или iPad может показать процесс сборки в мельчайших деталях, но реальные манипуляции с небольшими деталями и часами работы они, конечно же, не заменят. Monzo сгодится, чтобы немного скрасить пару-тройку свободных минут, но не претендует на замену реальному хобби. Допускаю, что приложение окажется интересно детям, но опять же оно не сможет так же эффективно развивать навыки и логику юного конструктора, как это сделает реальный набор. В итоге, неплохое развлечение, но не больше.

iPhone + iPad : Бесплатно [Скачать из App Store ]
*включает встроенные покупки

Страница 47 из 88

6.7.1 Виртуальные конструкторы

Узнав о виртуальных деструкторах, естественно спросить: "Могут ли
конструкторы то же быть виртуальными?" Если ответить коротко - нет.
Можно дать более длинный ответ: "Нет, но можно легко получить
требуемый эффект".
Конструктор не может быть виртуальным, поскольку для правильного
построения объекта он должен знать его истинный тип. Более того,
конструктор - не совсем обычная функция. Он может взаимодействовать
с функциями управления памятью, что невозможно для обычных
функций. От обычных функций-членов он отличается еще тем, что
не вызывается для существующих объектов. Следовательно нельзя получить
указатель на конструктор.
Но эти ограничения можно обойти, если определить функцию,
содержащую вызов конструктора и возвращающую построенный объект.
Это удачно, поскольку нередко бывает нужно создать новый объект,
не зная его истинного типа. Например, при трансляции иногда
возникает необходимость сделать копию дерева, представляющего
разбираемое выражение. В дереве могут быть узлы выражений разных
видов. Допустим, что узлы, которые содержат повторяющиеся в выражении
операции, нужно копировать только один раз. Тогда нам потребуется
виртуальная функция размножения для узла выражения.
Как правило "виртуальные конструкторы" являются стандартными
конструкторами без параметров или конструкторами копирования,
параметром которых служит тип результата:

Class expr {
// ...
public:
expr(); // стандартный конструктор
virtual expr* new_expr() { return new expr(); }
};

Виртуальная функция new_expr() просто возвращает стандартно
инициализированный объект типа expr, размещенный в свободной памяти.
В производном классе можно переопределить функцию new_expr() так,
чтобы она возвращала объект этого класса:

Class conditional: public expr {
// ...
public:
conditional(); // стандартный конструктор
expr* new_expr() { return new conditional(); }
};

Это означает, что, имея объект класса expr, пользователь может
создать объект в "точности такого же типа":

Void user(expr* p1, expr* p2)
{
expr* p3 = p1->new_expr();
expr* p4 = p2->new_expr();
// ...
}

Переменным p3 и p4 присваиваются указатели неизвестного, но подходящего
типа.
Тем же способом можно определить виртуальный конструктор
копирования, называемый операцией размножения, но надо подойти
более тщательно к специфике операции копирования:

Class expr {
// ...
expr* left;
expr* right;
public:
// ...
// копировать `s" в `this"
inline void copy(expr* s);
// создать копию объекта, на который смотрит this
virtual expr* clone(int deep = 0);
};

Параметр deep показывает различие между копированием собственно
объекта (поверхностное копирование) и копированием всего поддерева,
корнем которого служит объект (глубокое копирование). Стандартное
значение 0 означает поверхностное копирование.
Функцию clone() можно использовать, например, так:

Void fct(expr* root)
{
expr* c1 = root->clone(1); // глубокое копирование
expr* c2 = root->clone(); // поверхностное копирование
// ...
}

Являясь виртуальной, функция clone() способна размножать объекты
любого производного от expr класса.
Настоящее копирование можно определить так:

Void expr::copy(expression* s, int deep)
{
if (deep == 0) { // копируем только члены
*this = *s;
}
else { // пройдемся по указателям:
left = s->clone(1);
right = s->clone(1);
// ...
}
}

Функция expr::clone() будет вызываться только для объектов типа
expr (но не для производных от expr классов), поэтому можно просто
разместить в ней и возвратить из нее объект типа expr, являющийся
собственной копией:

Expr* expr::clone(int deep)
{
expr* r = new expr(); // строим стандартное выражение
r->copy(this,deep); // копируем `*this" в `r"
return r;
}

Такую функцию clone() можно использовать для производных от expr
классов, если в них не появляются члены-данные (а это как раз
типичный случай):

Class arithmetic: public expr {
// ...
// новых членов-данных нет =>
// можно использовать уже определенную функцию clone
};

С другой стороны, если добавлены члены-данные, то нужно определять
собственную функцию clone():

Class conditional: public expression {
expr* cond;
public:
inline void copy(cond* s, int deep = 0);
expr* clone(int deep = 0);
// ...
};

Функции copy() и clone() определяются подобно своим двойникам из
expression:

Expr* conditional::clone(int deep)
{
conditional* r = new conditional();
r->copy(this,deep);
return r;
}

Void conditional::copy(expr* s, int deep)
{
if (deep == 0) {
*this = *s;
}
else {
expr::copy(s,1); // копируем часть expr
cond = s->cond->clone(1);
}
}

Определение последней функции показывает отличие настоящего
копирования в expr::copy() от полного размножения в expr::clone()
(т.е. создания нового объекта и копирования в него). Простое
копирование оказывается полезным для определения более сложных
операций копирования и размножения. Различие между copy() и clone()
эквивалентно различию между операцией присваивания и конструктором
копирования ($$1.4.2) и эквивалентно различию между функциями
_draw() и draw() ($$6.5.3). Отметим, что функция copy() не является
виртуальной. Ей и не надо быть таковой, поскольку виртуальна
вызывающая ее функция clone(). Очевидно, что простые операции
копирования можно также определять как функции-подстановки.