ВТОРАЯ ОТКРЫТАЯ НАУЧНАЯ КОНФЕРЕНЦИЯ ЛИЦЕЯ

8 декабря 2004 года, Москва

График работы секции Computer Science

1000 – 1200

1.... Гречкин Максим (9Г). Средства удаленной загрузки (remote boot) операционных систем.

2.... Артюхин Стас, Янонис Павел (8В). Программа для построения многоугольников.

3.... Татаринов Андрей (МГУ ВМК, 2 курс). Редактор трехмерных поверхностей, использующий технологию NURBS.

4.... Борисов Владимир (МГУ ВМК, 2 курс). Малобюджетный трехмерный лазерный сканер.

5.... Гречаник Сергей (10Г). Концепция и платформа межмодульного взаимодействия для разработки моделирующих систем.

6.... Переславцев Алексей (9В). Разработка компилирующего транслятора выражений.

1220 – 1400

7.... Абрамов Дмитрий (7Б). Сетевые технологии.

8.... Бартунов Сергей, Зайцев Виктор (9Г). Применение современных технологий программирования на примере разработки программы построения графиков функций.

9.... Левкович-Маслюк Федор (10Г). Частотный анализ разноязычных текстов с использованием AVL-деревьев.

10.. Сальников Всеволод (9А). Необходимое и достаточное количество моторов объекта, движущегося по заданной траектории в горизонтальной плоскости.

11.. Федоров Владимир (10Г). Разработка кроссплатформенного сервера моделирования мультиагентных систем.

12.. Куренев Павел (МГТУ, 1 курс). Графическая библиотека для отображения трехмерных сцен на базе Microsoft DirectX.

1420 – 1720

13.. Зотов Алексей (МГТУ, 1 курс). Разработка аппаратной и программной части цифрового датчика температуры.

14.. Буданов В.М. (НИИ Механики МГУ). Задачи микропроцессорного управления в робототехнических системах.

15.. Хохлова Марина (9Г). Компьютерный скальпель.

16.. Руэда Валентин, Чикунов Егор (9Г). Программа – сетевой чат «VISQ».

17.. Чашкин Виктор (9Г). Моделирование игры «Жизнь».

18.. Рахманов Михаил (10Г). Разработка поисковой машины Search Server.

19.. Кожанов А., Пахомов В.Б. (НИИ Механики МГУ). Одноколесный автономный мобильный робот.

20.. Теплов Сергей (10Г). Программа моделирования Солнечной системы.

21.. Девятов Ростислав (10А). Реализация индексаторов на языке Borland C++ 3.1.

22.. Сугробов Виталий (10В). Реализация звукового редактора.

ВТОРАЯ ОТКРЫТАЯ НАУЧНАЯ КОНФЕРЕНЦИЯ ЛИЦЕЯ

8 декабря 2004 года, Москва

Тезисы докладов секции Computer Science

1000 – 1200

1.       Гречкин Максим (9Г). Средства удален­ной загрузки (remote boot) операцион­ных систем.

Удаленная загрузка – процесс загрузки рабочей станции, используя информацию с сервера. Это по­зво­ляет не администрировать каждый компьютер в от­дельности, a настраивать их параметры на сервере. Та­кая организация сети значительно снижает за­траты на обслуживание сети и повышает стабиль­ность ее ра­боты. Если что-то не работает, то стоит совершить не­сколько простых действий и рабочая станция придет в начальное состояние (в идеальном варианте это просто перезагрузка системы). Для удаленной загрузки было разработано несколько протоколов – RPL (Novell), NetBoot и PXE (Intel). Стандарт PXE (Preboot Execution Environment) опре­деляет набор сервисов, которые мо­гут быть исполь­зованы в процессе разработки сетевого загрузчика. Набор этих сервисов предельно прост – доступ к от­вету DHCP, передача файлов по протоколу TFTP, Доступ к протоколам IP и UDP. Впервые наибо­лее обще проблему удаленной загрузки решили в уни­верситете Женевы, создав утилиту bpbatch. Заслугой создателей bpbatch было осознание очень важного факта – удаленная загрузка дисковых станций более интересна, чем бездисковых. Но большинство фирм тратят годы усилий для создания системы бездиско­вой загрузки, считая, что это экономит деньги на «ненуж­ных» жестких дисках. Такие методы имеют один ог­ромный недостаток – они генерируют ог­ромный сете­вой трафик, для приемлемой работы сети требуется установка гигабитных сетевых кар­точек и хабов а их цена перекрывает экономию на жестких дисках, где клиенты могли бы кэшировать данные. Вопрос о кэ­ширование данных в оператив­ной памяти не встает – ее просто не хватит.

В про­цессе разработки системы удаленной за­грузки были изучены все описанные выше варианты (в том числе создан вариант, основан­ный на bpbatch, планируется создания варианта на ос­нове Venturcom BXP – сис­темы бездисковой загрузки).

2.       Артюхин Стас, Янонис Павел (8В). Про­грамма для построения многоуголь­ников.

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

3.       Татаринов Андрей (МГУ ВМК, 2 курс). Редак­тор трехмерных поверхностей, ис­пользующий технологию NURBS.

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

NURBS (неравномерные рациональные B-сплайны) – математический аппарат, позволяющий путем задания небольшого количества контрольных точек построить сложную гладкую кривую или по­верхность с минимальными трудозатратами – дизай­нер может изменять разные участки поверхности, всего лишь меняя позиции контрольных точек.

Редактор N. E. X. позволяет создавать, редактиро­вать и просматривать кривые и поверхности NURBS, а также задавать им свойства материала и визуализиро­вать их методом трассировки лучей. В редакторе пре­дусмотрены возможности настройки параметров ото­бражения, различные инструменты просмотра и редак­тирования поверхностей, а также инструменты по соз­данию поверхностей по задан­ным кривым и операции по работе с несколькими поверхностями.

Трассировщик лучей может работать в двух режи­мах – в программном режиме и в режиме аппаратного ускорения. Для визуализации NURBS-поверхностей применяется алгоритм конвертирования поверхностей NURBS в поверхности Безье и метод рекурсивного разбиения поверхностей Безье. Для аппаратного уско­рения трассировки лучей используются библиотека OpenGL и шейдеры второй версии.

4.       Борисов Владимир (МГУ ВМК, 2 курс). Мало­бюд­жетный трехмерный лазерный ска­нер.

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

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

Целью данной работы было создание трехмерного сканера, позволяющего проводить сканирование объ­ектов неограниченного размера и главное – имеющего низкую стоимость используемых компо­нентов и напи­сание необходимого программного обеспечения для обработки полученной от сканера информации.

В итоге работы, созданная рабочая модель сис­темы, позволяет быстро и просто сканировать объ­екты практически неограниченных размеров (размер объ­екта сканирования определяется лишь расстоя­нием до него и мощностью используемого лазера), обладает малой себестоимостью (порядка 50-100 дол­ларов – стоимость простой платы видеозахвата) и крайне про­стой конструкцией. Тем самым под­твер­ждающая воз­можность реализации предложен­ной идеи. Разрабо­танное программное обеспечение по­зволяет интерпре­тировать данные, полученные со сканирующей го­ловки, визуализировать полученную модель с произ­вольной точки, и сохранять эту мо­дель в формате внутреннего представления про­граммы, для ее после­дующего использования в спе­циальных программах, разработанных для этой сис­темы.

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

5.  Гречаник Сергей (10Г). Концепция и плат­форма межмодульного взаимодей­ствия для разработки моделирующих систем.

Цель проекта – создание системы с модульной ар­хитектурой и модулей для этой системы, в том числе физического. Основная задача проекта – это обеспе­че­ние возможности создания модулей, а также пере­носа несовместимых с системой модулей под сис­тему при минимальных затратах ресурсов програм­миста.

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

Модуль обычно является динамически загружае­мой библиотекой и предоставляет загрузчику специ­фиче­ский для загрузчика интерфейс. Загрузчик вы­полняет за­грузку модулей в систему и выгрузку из неё.

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

Функцией физического модуля является обра­ботка взаимодействий между объектами среды. В данной версии программы объектами среды явля­ются атомы, взаимодействующие друг с другом по закону потен­циала Леннарда–Джонса. Расчёт пове­дения объектов выполняется численными методами. Был проведён анализ некоторых разностных схем на выполняемость закона сохранения энергии.

В процессе создания системы были применены следующие шаблоны проектирования: Команда, Функтор, Итератор, Стратегия, Посетитель, Фабрич­ный метод, Адаптер.

6.       Переславцев Алексей (9В). Разработка ком­пилирующего транслятора выра­же­ний.

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

В ходе проекта пришлось выполнить следующие задачи: 1) Создание грамматики, способной описать ариф­ме­тическое выражение. 2) Перевод обычной за­писи выражения в об­рат­ную польскую. 3) Компиля­ция обратной польской записи в ма­шинный код. 4) Разработка интерфейса под операционную сис­тему Windows.

Из перечисленных вариантов наиболее сложным оказался третий. Для его реализации было использо­ван ДОС-компилятор ассемблера (Turbo Assembler) с оп­цией создания файла листинга, в котором каж­дой ко­манде ассемблера соответствует код машин­ное ко­манды в шестнадцатеричном виде. Для от­ладки само­стоятельно скомпилированного кода ис­пользовался отладчик среды Microsoft Visual Studio.

1220 – 1400

7.       Абрамов Дмитрий (7Б). Сетевые техноло­гии.

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

8.       Бартунов Сергей, Зайцев Виктор (9Г). Приме­нение современных технологий про­граммирования на примере разра­ботки про­граммы построения графиков функций.

Цель работы – создание среды для исследования математических функций с возможностью разбора вы­ражения, характеризующего функцию, и исследо­вания ее на различных участках.

В проекте использованы современные технологии сохранения и восстановления произвольных объек­тов, которые могут применяться в любых других за­дачах и расширяемый формат данных, основанный на XML, что позволяет не терять информацию о ра­нее исследо­ванных функциях и реализовать много­языковой ин­терфейс (совместимый с Unicode). Дан­ный формат данных хранит тип сохраненного объ­екта, его значе­ние, преобразованное в строку, а также аналогичные сведения обо всех его свойствах, что и представляется в виде файла XML.

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

Среда способна отображать график в разном мас­штабе, передвигать центр координат и устанавли­вать точность получения значений функции при раз­личных аргументах. Графическая часть проекта ис­пользует возможности GDI+ MS Windows. Также программа способна исследовать функцию на чет­ность/нечетность и возрастание/убывание на различ­ных промежутках.

9.       Левкович-Маслюк Федор (10Г). Частот­ный анализ разноязычных текстов с ис­пользованием AVL-деревьев.

Целью работы было определение наиболее упот­ребительных слов в текстах на различных языках. Анализировались несколько крупных текстов на рус­ском и английском языках. Слова, составляющие текст, записывались в узлы дерева, и вычислялось рас­пределение слов по частотам их вхождения в текст. Эффективность программ обеспечивалась за счет ис­пользования сбалансированного двоичного дерева (AVL-дерева).

AVL деревья было введены Адельсоном-Вель­ским и Ландисом в 1962 году. Оно характеризуется тем, что высоты левого и правого поддеревьев лю­бого узла от­личаются не более, чем на 1. Это свой­ство дос­тигается путем локальных (затрагивающих 2 или 3 узла) моди­фикаций дерева при каждой вставке нового элемента. В результате обеспечивается при­мерно одинаковое (близкое к логарифму от числа узлов) время доступа к данным, записанным в такое дерево.

В рассматриваемой задаче использование сбалан­сированного AVL-дерева позволило быстро вычис­лять частоты вхождения слов в текстовые массивы. Полу­ченные данные сравнивались для текстов на раз­лич­ных языках. В работе представлены резуль­таты срав­нения частот для нескольких классов тек­стов.

10.  Сальников Всеволод (9А). Необходимое и достаточное количество моторов объ­екта, движущегося по заданной траекто­рии в горизонтальной плоскости.

Исследуется задача нахождения минимального не­обходимого количества моторов для обеспечения дви­жения по заданной траектории и пути её реше­ния, примененные на «Мобильном Роботе», сделан­ном в качестве опытного образца на базе програм­мируемого блока RCX 1.0. Таким образом, для ре­шения этой за­дачи необходимо собрать опытный образец из стан­дартных деталей фирмы Legotm и за­программировать движение. Не составляет никакого труда организовать движение, используя два мотора, но можно ли обеспе­чить движение по траектории, заданной, например, стенками, которые необходимо объезжать, используя меньшее количество моторов? Если не устанавливать на объект ни одного мотора, то он становится не­управляемым, следовательно, поставленный вопрос сводится к проверке возмож­ности движения объекта с одним мотором, и напи­санию программы для управле­ния этим устройст­вом. Если удастся запрограммиро­вать движение, ис­пользующее лишь один мотор, то мы получим воз­можность использовать в качестве основ­ного про­граммируемого устройства плату лишь с од­ним вы­ходом, тем самым заметно упростив ее. В то же время необходимо подавать электрический ток лишь на один мотор, что обеспечивает меньшее количе­ство деталей, которые могут изменять характер сво­его дви­жения, что дает возможность быстрее опре­делять не­исправности в работе механизма. При по­лучении от­вета на поставленный вопрос был по­строен опыт­ный образец, который действительно использует лишь один мотор и три световых датчика для свободного передвижения в горизонтальной плоскости и объезда препятствий.

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

Среди программного обеспечения, которое про­граммирует блок RCX, наиболее удобным на дан­ный момент считается Not Quite C (NQC, D. Baum, J. Hansen). Именно эта среда и была использована при решении данной задачи.

11.  Федоров Владимир (10Г). Разработка кроссплатформенного сервера моде­ли­рования мультиагентных систем.

Цель работы – реализация сервера моделирования мультиагентных систем. Сервер моделирования муль­тиагентных систем – это программный ком­плекс, включающий в себя модули обработки сете­вых под­ключений, программ поведения агентов, об­работки взаимодействий объектов моделируемой системы. Он представляет собой совокупность средств для задания модели, самого процесса моде­лирования и средств ад­министрирования.

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

В ходе разработки комплекса были поставлены следующие задачи о разработке: 1) Системы обра­ботки клиентов и агентов, и их взаимодействий ме­жду собой и с объектами моделируемой системы; 2) Средств описания объектов (их реакций и возможно­стей их действий) и поведения агентов моделируе­мой системы; 3) Средств администрирования моде­лируе­мой системы, изменение различных условий протека­ния процесса; 4) Клиентского приложения, работаю­щего с сервером посредством сетевого со­единения; 5) Средств визуализации в серверном и клиентском при­ложениях.

В докладе рассматриваются различные варианты решения данных задач на примере игровых серве­ров.

В ходе разработки был создан программный ком­плекс сервера моделирования мультиагентных сис­тем, использующий: 1) Многопоточность современ­ных ОС; 2) Универсальное кроссплатформенный се­тевой API BSD Sockets (WinSock1.1); 3) Язык над­программных надстроек и OpenSource-библиотека его обработки Lua (v. 5); 4) OpenSource-библиотеку OGRE (Object-Ori­ented 3D Graphical Engine)для реа­лизации визуализа­ции моделируемой системы в клиентском приложе­нии.

В результате разработки были достигнуты сле­дующие результаты: 1) Создана программная часть, реализующая сетевое взаимодействие для сервер­ного и клиентских приложений; 2) Создана консоль адми­нистрирования сервера; 3) Создан тестовый ва­риант клиентского приложения.

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

12.  Куренев Павел (МГТУ, 1 курс). Графиче­ская библиотека для отображения трех­мер­ных сцен на базе Microsoft DirectX.

Основной целью проекта является создание биб­лиотеки с набором классов для упрощения создания приложений, использующих Direct3D для отображе­ния трёхмерной графики.

Сначала была создана программа 3DTest, в кото­рой велась разработка и отладка графических функ­ций, а затем весь код был вынесен в библиотеку.

Библиотека написана на Microsoft Visual C++ (поддерживаются версии 6.0 и 7.1). Проект состоит из самой библиотеки (GraphLib.dll) и заголовочного файла (GraphLib.h), в котором находятся описания функций, типов данных, структур и прототипы клас­сов. Библиотека работает следующим образом: в про­грамме создаётся указатель на объект класса, да­лее, с помощью соответствующей функции библио­теки, соз­даётся новый объект этого класса и запоми­нается  ука­затель на него. По завершению работы с объектом он удаляется функцией, также экспорти­руемой библиоте­кой.

Библиотека имеет средства для работы Direct3D: класс с базовыми функциями, классы для работы с текстурами, с вершинными буферами и др. Также со­держит классы для упрощения созданий приложе­ний: классы для редактирования изображений, для работы с динамическими массивами, для работы с файлами и др. А также классы, которые решают бо­лее сложные задачи: загрузка и сохранение трёхмер­ных сцен (карт) и отображение их на экране.

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

1420 – 1720

13.  Зотов Алексей (МГТУ, 1 курс). Разра­ботка аппа­ратной и программной части циф­рового датчика температуры.

Основной целью проекта является подключение к ПК дополнительных устройств. Одной из задач было присоединение к ПК измерительных приборов. В моём случае был создан программно-аппаратный комплекс для измерения температуры. Комплекс со­стоит из двух основных компонентов: 1) Аппаратная часть на базе АЦП (аналого-цифро­вого преобразова­теля) и компьютера; 2) Программная часть, позво­ляющая обраба­ты­вать полученные данные.

Аппаратная часть представляет собой устройство, подключаемое к порту LPT компьютера (принтер­ному порту). Реализация базируется на микросхеме 10-бит­ного АЦП с последовательным интерфейсом. Устрой­ство позволяет считывать значение темпера­туры 100 раз в секунду.

Программная часть написана на Visual C++. Про­грамма занимается представлением данных в удоб­ном виде для восприятия и обработки данных. Пре­дусмот­рено сохранение данных в файл, совмести­мый по формату с Microsoft Excel.

Данная работа может служить основой для ком­пьютеризации лабораторных работ по физике.

14.  Буданов В.М. (НИИ Меха­ники МГУ). Задачи микропроцессорного управления в робототехнических системах.

Рассматриваются задачи микропроцессорного управления в системах управления мобильными роботами. Как правило, такие задачи распадаются на три класса: работа с различными датчиками (фотодатчики, сенсорные датчики, видеокамеры и т.д.), взаимодействие с внешними устройствами робота (двигатели, электромагниты, пневматика) и собственно задача управления, т.е. решение поставленной перед роботом задачи. Для работы с разными классами задач используются различные аппаратные платформы: для работы с датчиками и внешними устройствами ­– преимущественно микроконтроллеры PIC, AVR, Motorola; для задач управления – платформы Intel 8х86 (часто в виде ноутбуков), RISC процессоры Texas Instuments и другие. В докладе будут рассмотрены применения микроконтроллеров Motorola для решения задач управления шестиногой шагающей машиной и другими робототехническими устройствами. Эти микроконтроллеры программируются как на ассемблере, так и на Си, имеют широкий спектр портов ввода и вывода, что делает их удобной логической платформой для робототехники. Также будут рассмотрены примеры применения других микроконтроллерных средств.

Доклад адресован в первую очередь тем, кто хочет начать осваивать самостоятельное программирование микроконтроллерных устройств и принять участие в разработке программного обеспечения для робототехнических систем в Институте Механики МГУ.

15.  Хохлова Марина (9Г). Компьютерный скальпель.

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

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

16.  Руэда Валентин, Чикунов Егор (9Г). Про­грамма – сетевой чат «VISQ».

Поставленной целью было создание чата для об­щения разных пользователей с различных компьюте­ров сети ROOM2X лицея.

Задачи, которые встали в процессе создания про­граммы: эффективная работа с файлами, простой, кра­сивый интерфейс, удобное администрирование. Работа с файлами – одна из самых серьезных про­блем явля­ется работа с файлами, так как нельзя от­крывать файл с двух компьютеров одновременно. Чтобы пользова­телю было удобнее общаться с дру­гими людьми, было необходимо сделать простой ин­туитивно понятный простому пользователя интер­фейс. Удобное админи­стрирование позволяют моде­рировать чат, причем де­лать это могут не только ав­торы проекта, но и пользо­ватели, которым были даны такие права. Из этого сле­дует, что в программе присутствует зародышевый ва­риант иерархической системы чата.

Программа написана под операционную систему MS-DOS. Благодаря невысоким требованиям к ком­пь­ютеру, она будет работать даже на самых слабых ма­шинах.

Планы на будущее: поддержка нескольких интер­фейсов, звуковое сопровождение, передача сообще­ний через протокол TCP/IP, шифрование пакетов.

17.  Чашкин Виктор (9Г). Моделирование игры «Жизнь».

Основной целью разработки являлось создание интерактивной графической среды для игры «Жизнь». Эта игра – частный случай клеточных ав­томатов, стилизованных, синтетических миров, оп­ределенных простыми правилами, подобными пра­вилам настоль­ных игр. Она описывает динамику по­пуляции стили­зованных организмов во времени под действием про­тивоборствующих процессов размно­жения и вы­мира­ния.

Так как данная программа изначально ориентиро­валась на пользователя, была очевидной необходи­мость создания удобного пользовательского интер­фейса и специальных средств для быстрого редакти­ро­вания имеющихся и создания новых конфигура­ций. Этими средствами являются редактор конфигу­раций с возможностью размножения фрагмента изо­бражения («штампа») и библиотека базовых конфи­гураций, ко­торую пользователь может дополнять при помощи ре­дактора. Реализована такая важная возможность, как сохранение и загрузка конфигура­ций из библиотеки.

Программа изначально писалась под операцион­ную систему MS-DOS. Ведется разработка Windows-версии.

18.  Рахманов Михаил (10Г). Разработка по­ис­ковой машины Search Server.

Программа Search Server – это поисковая про­грамма, которая работает наподобие современных по­исковых серверов и имеет свою базу данных. Search Server принимает в качестве параметра слово или на­бор слов. Программа проверяет свою базу данных на наличие этих слов и выдает идентификационные но­мера тех файлов, в которых содержатся все слова из заданного набора (каждому файлу в базе данных при­своен свой идентификационный номер).

При большом объеме базы данных, примерно 1010 документов, количество документов, где содержится определенное слово или набор слов, обычно превос­хо­дит 108 документов. Следовательно, список иден­тифи­кационных номеров занимает примерно 400 Мб, т. к. каждый идентификационный номер зани­мает 4 байта (unsigned long). Очевидно, при доста­точно большом количестве запросов может про­изойти переполнение жесткого диска. Для этого был использован алгоритм сжатия получающихся спи­сков. Благодаря этому алго­ритму размер файла уменьшается в полтора-два раза.

Пути дальнейшего развития: написать подобие поискового Интернет сервера в локальной сети и соз­дать GUI для данной программы.

19.  Кожанов А., Пахомов В.Б. (НИИ Меха­ники МГУ). Одноколесный автономный мобильный робот.

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

20.  Теплов Сергей (10Г). Программа модели­рования Солнечной системы.

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

В данный момент создано ДОС-приложение, ис­пользующее библиотеку классов для хранения дан­ных и реализации взаимодействий между объектами мо­дели, библиотеку BGI для визуализации модели, ввод с клавиатуры для задания параметров объектов сис­темы. Пользователь может создавать и удалять объ­екты в реальном времени, не прерывая работы про­граммы.

В ближайшем будущем планируется создание дружественного интерфейса для приложения, вклю­чающего в себя возможности изменения масштаба при просмотре взаимодействий модели пользовате­лем, ре­дактора, позволяющего отредактировать соз­даваемые в реальном времени объекты. Также будет добавлена возможность просмотра пользователем численных значений физических величин, изме­няющихся во время действия модели. В дальнейшем будет осущест­влен перенос модели в ОС Windows, внедрение новой графической библиотеки, а также более точный расчет физических величин.

21.  Девятов Ростислав (10А). Реализация индексаторов на языке Borland C++ 3.1.

Индексаторы – "мнимые" массивы, которые на самом деле представлены с помощью функций get и set, хотя пользователь обращается к ним посредством обычного синтаксиса для массивов. Функция get принимает набор индексов и возвращает элемент мнимого массива, функция set принимает набор индексов и значение элемента массива и должна установить его.

Это позволяет: 1) Предлагать пользователю несколько вариантов доступа к данным, храня в памяти лишь один из них. 2) Хранить несколько представлений данных и автоматически обновлять их все при изменении данных. 3) Предлагать данные пользователю в более удобном виде, чем они хранятся в памяти. 4) Протоколировать изменения данных и обращения к ним.

22.  Сугробов Виталий (10В). Реализация звукового редактора.