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

12 декабря 2006 года, Москва

ГРАФИК РАБОТЫ КОНФЕРЕНЦИИ 2006 г.
СЕКЦИЯ COMPUTER SCIENCE

930-1200

1.   Зайцев Виктор (11Г). Разработка программы полу­автоматического электрохимического ана­лиза жидкостей.

2.   Куренев Павел (МГТУ им Н.Э. Баумана, 3 курс). Программирование управляющих ал­горитмов для робототехники с использова­нием датчиков угла поворота (энкодеров).

3.   Зотов Алексей (МГТУ им Н.Э. Баумана, 3 курс). Ин­теллектуальное управление звеном манипу­ля­тора робота.

4.   Варенцов Михаил (9В). Программа тестирова­ния по географии «ГлобуС++».

5.        Шимко Олег (10 класс, школа №179 МИОО). Раз­ра­ботка компьютерной игры «Halloween».

6.   Борисова Татьяна (8B). Разработка про­граммы «Foomitox».

7.   Лебедев Сергей (7А). Создание компьютер­ной игры, развивающей меткость, на языке про­грам­мирования C++.

1220-1400

1.   Заостровных Арсений (10 класс, школа №179 МИОО). Объектно-ориентированное проек­тиро­вание компьютерной игры «Внимание, Танки!».

2.   Варенцов Михаил (9В). Программа «Молеку­ляр­ное моделирование».

3.   Калугин М.Д. (Институт системного программирования РАН). Моделирование теплового движения воды вокруг фрагмента ДНК.

4.   Маликов О.И., Несов В.С. (Институт системного программирования РАН). Интегрированная среда поиска уязвимостей и критических ошибок в исходном коде программ.

5.   Переславцев Алексей (11В). Разработка алго­ритма параллельного LR(k) грамматиче­ского разбора.

1420-1620

1.   Швец Павел, Костин Григорий (11Г). Реали­зация трёхмерной ролевой игры жанра RPG на базе скриптового движка.

2.   Кузьмин Алексей, Чикунов Егор (10Г). Мно­гоце­ле­вой мультимедийный движок «Fiery Engine».

3.   Гожев Михаил (8Б). Разработка двумерной игры, ос­нованной на объектно-ориентиро­ван­ном про­граммировании.

4.   Кузнецов Сергей (8Б). Компьютерная игра «Змейка».

5.   Свешников Михаил (8Б). Реализация двумер­ной анимации персонажей.

6.   Голубенко Дмитрий (7А). Разработка игры «Пере­возчик – симулятор дальнобойщика».

7.   Пономарёв Олег (7А). Создание игры в среде MS Windows с помощью компиляторов MS Visual Studio и Dev-C++ на базе проекта в MS-DOS.

1640-1800

1.   Янонис Павел (10В). Разработка векторного гра­фи­ческого редактора.

2.   Устинов Владислав (11Г). Система динамиче­ского подключения и классифика­ции про­граммных мо­дулей.

3.   Климентьев Антон (8Б). Реализация компью­тер­ной игры с использованием ООП.

4.   Павлович Борис (11Б). Реализация алго­ритма за­ливки произвольных замкнутых фигур в кросс­платформенном графическом редакторе JPaint.

5.   Банников Эдуард (10В). Разработка компью­тер­ной игры жанра RPG.

6.   Чеснокова Эльвира (8Б). Визуализация прин­ципа сортировки объектов.

7.   Волынский Андрей (10А). Использование ре­сур­сов и ресурс-менеджеров в Windows.



ТЕЗИСЫ ДОКЛАДОВ КОНФЕРЕНЦИИ 2005 г.
СЕКЦИЯ COMPUTER SCIENCE

Предс. И.Р. Дединский

1. Банников Эдуард (10В). Разработка компью­тер­ной игры жанра RPG.

Целью работы было создание увлекательной компь­ю­терной игры. Ее жанр– RPG (role playing game) – ро­левая пошаговая стратегия. Вы высту­паете в роли ге­роя стран­ника. В вашем распоря­жении 6 рас, 3 класса по 2 про­фессии в каждом. В игре большое количество предметов и мобов (как NPC, так и монстров). Также был разрабо­тан ин­тересный сюжет с неожиданным концом. Проект был реализован с помощью объектно-ориентиро­ванного подхода на языке программирова­ния C++.

2. Борисова Татьяна (8B). Разработка про­граммы «Foomitox».

Цель работы – написание графического прило­жения (компьютерной игры) в среде Visual C++. В ходе вы­пол­нения работы были рассмотрены такие аспекты, как объ­ектно-ориентированная архитек­тура программы, собы­тийная модель, взаимодей­ствие объектов, поворот и пре­образование слож­ной геометрической фигуры с исполь­зованием матриц, реализация алгоритма «по­гони» за объек­том, сохранение настроек программы в файле кон­фигурации. Для рисования объектов исполь­зо­вались функции собственных и сторонних биб­лио­тек.

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

Другой интересной частью работы была реали­зация алгоритма расчёта траектории объекта в за­висимости от траектории другого объекта, то есть «погони» за объек­том.

3. Варенцов Михаил (9В). Программа тестирова­ния по географии «ГлобуС++».

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

4. Варенцов Михаил (9В). Программа «Молеку­ляр­ное моделирование».

Целью проекта является компьютерное моде­лирова­ние движения молекул в безвоздушном пространстве с целью демонстрации некоторых законов статистики, в частности, распределения Максвелла, разработка базо­вого физического и интерфейсного движков для даль­нейшего разви­тия и создание на их основе модели бро­уновского движения. Разработка проекта ведется на языке Java. Интерфейс пользователя реализован с помо­щью встроенной интерфейсной библиотеки java.awt. В докладе будут рассмотрены следую­щие во­просы: физика взаимодействия молекул как упругих сфер, некоторые законы статистической физики и их исследование с по­мощью модели, создание физиче­ского движка и его оп­тимизация, а также особенности разработки интерфейса про­граммы средствами Java и его оптимизации.

5. Волынский Андрей (10А). Использование ре­сур­сов и ресурс-менеджеров в Windows.

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

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

6. Гожев Михаил (8Б). Разработка двумерной игры, ос­нованной на объектно-ориентиро­ван­ном про­граммировании.

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

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

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

7. Голубенко Дмитрий (7А). Разработка игры «Пере­возчик – симулятор дальнобойщика».

Целью является создание игры на языке С++. При на­писании используется компилятор среды Dev-С++. Дей­ствие происходит в Огненной Земле, в долине реки. Вам вверен небольшой грузовичок с продуктами, и необхо­димо развезти груз по всем домам, которые есть на карте. Будьте осторожны: везде есть некоторые неприят­ности, подробности в системе помощи.

Во время разработки я лучше познакомился с осно­вами программирования под Windows, нау­чился поль­зо­ваться компилятором С++ и средой Dev-Cpp, нау­чился пользоваться графической библиотекой, понял её досто­инства и недостатки и научился лучше думать.

8. Зайцев Виктор (11Г). Разработка программы полу­автоматического электрохимического ана­лиза жидкостей.

Программа АТП-ЭКСПЕРТ-2006 предназна­чена для приема, математической обработки и графического представления в одной из заданных форм (по выбору оператора) экспериментальных данных, получаемых по­тенциометрическим ана­лизатором жидкости Эус­перт-001. работающим в режиме непрерывного кон­троля со­става жидкости или в режиме потенциометри­ческого титрования жидкости.

Анализатор жидкости Эксперт-001 представ­ляет со­бой специализированный вольтметр, по­зволяющий из­мерять значения потенциала со спе­циальных химиче­ских датчи­ков – ионоселектив­ных электродов и преоб­разовывать эти значения в величины рХ (одна из при­нятых шкал концентра­ций) или в значения концентра­ции данного ком­понента (например, нитратов или со­лей аммония). Прибор может непрерывно измерять значения концен­траций и передавать в компьютер че­рез СОМ-порт или, через переходник, через USB- порт. Прибор может также выполнять ряд других функций, в частности, осуществ­лять потенцио­метрическое титро­вание, то есть управлять пода­чей жидкости из специ­ального устройства – бю­ретки в исследуемый образец и при этом фикси­ровать одновременно значения рХ и объем подан­ной жидкости. Полученные зависимости, так на­зываемые кривые тит­рования, применяются для количественного определения состава жидкости по ряду важных компонентов – пока­зателю ки­слотности рН, концентрации сульфатов, жест­ко­сти воды и т.д. , в зависимости от используемых дат­чиков анализатора и состава добавляемого рас­твора (титрующего раствора или титранта). Опре­деляемые по­казатели имеют прак­тическое значе­ния, включая во­просы промышленной безопасно­сти. в том числе процесс титрования широко при­меняется в учебных курсах общей и аналитиче­ской химии, что позволяет применить данный анализатор и программу АТП-ЭКСПЕРТ-2006 в учебных курсах аналитической и общей химии и промышленной эколо­гии.

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

Математическая обработка данных включает интер­по­ляцию экспериментальных точечных функций раз­лич­ными методами: с помощью кри­вых Безье с ис­пользова­нием разработанной нами процедуры сопря­жения от­дельных кривых, с по­мощью кубических сплайнов, с по­мощью при­ближения параболами. В со­ответствии с тре­бова­ниями к обработке кривых титро­вания программа включает устойчивые к эксперимен­тальным шу­мам про­цедуры построения гладкой первой и вто­рой производ­ной из точечных функций, а также так называемых коор­динат Грана, представляю­щих со­бою обратную величину первой производ­ной значения рХ по объему. Доступный в про­грамме АТП-ЭКС­ПЕРТ-2006 набор способов пред­ставления данных по­зволяет с достаточной точностью определять особые точки кривых тит­рования, точки эк­вивалентности.

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

Программа АТП-ЭКСПЕРТ-2006 является не­обхо­ди­мой составляющей приборно-программ­ного ком­плекса для титрования на базе анализа­тора жидкости Эксперт-001 и полностью внедрена в производство. Программа была успешно исполь­зована при подго­товке студенче­ской дипломной работы в Российском государственном универси­тете нефти и газа им. И.М.Губкина. Ранняя вер­сия программы была исполь­зована при проведении сту­денческого практикума по физико-химическим методам анализа (ФХМА) в том же университете, где ей восполь­зовались 7 групп (бо­лее 200 студен­тов).

9. Заостровных Арсений (10 класс, школа №179 МИОО). Объектно-ориентированное проек­тиро­вание компьютерной игры «Внимание, Танки!».

Цель проекта – разработать игру «Attention, tanks!». В задачи входило:

1. Разработка архитектуры программы;

2. Разработка физического движка;

3. Разработка и реализация поддержки единого стиля графических элементов («скинов»).

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

10. Зотов Алексей (МГТУ им Н.Э. Баумана, 3 курс). Ин­теллектуальное управление звеном манипу­ля­тора робота.

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

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

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

11. Калугин М.Д. (Институт системного программирования РАН). Моделирование теплового движения воды вокруг фрагмента ДНК.

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

В институте математических проблем биологии РАН была разработана модель, описывающая тепловое движение молекул возле фрагмента ДНК. Движение молекул моделируется с использованием метода Монте-Карло по алгоритму Метрополиса. Этот алгоритм подразумевает поочередное испытание всех молекул воды в системе. Одиночное испытание состоит в случайном изменении положения отдельной молекулы, но не более чем на d. В результате такого перемещения изменяется потенциальная энергия системы, которая в данной модели представляет собой сумму энергий парных взаимодействий молекул внутри ячейки. Если потенциальная энергия конфигурации, получившейся в результате испытания, меньше чем потенциальная энергия в прежней конфигурации, то новое положение молекулы принимается. В противном случае проводится дополнительное испытание, поскольку существует отличная от 0 вероятность перехода системы из состояния с меньшей потенциальной энергией в состояние с большей потенциальной энергией.

Для получения интересных с биологической точки зрения результатов требуется производить расчеты в системах, содержащих десятки и сотни тысяч молекул и производить над каждой из них 10-20 тысяч испытаний. Объем вычислений в данном алгоритме имеет порядок N(N-1)/2, где N - число молекул, поэтому потребовалась разработка специального параллельного алгоритма.

Идея распараллеливания вычислений заключается в разделении исходного объема на ячейки меньшего размера и проведении нескольких испытаний одновременно. Это возможно, потому что в модели, при вычислении энергии, не учитывается взаимодействие молекул удаленных друг от друга более чем на определенное расстояние. Это расстояние называется радиусом обрезания и составляет 8-10 А.

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

В результате разработки параллельного алгоритма появилась возможность за приемлемое время (1-2 суток) производить эксперименты на системах, расчет которых на персональном компьютере занял бы не один месяц.

12. Климентьев Антон (8Б). Реализация компью­тер­ной игры с использованием ООП.

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

Будут рассмотрены вопросы создания «умного» врага, гоняющегося за игроком; потенциального врага, просто летающего по полю и алгоритмы их работы.

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

Сценарий игры таков, что игрок управляет ме­няю­щим цвет эллипсом и уменьшает количество желтых монет, прибавляя себе этим очки. «Ум­ный» враг унич­тожает монеты, мешая игроку са­мому это сделать, и увеличи­вает сложность про­хождения игры. А про по­тенциаль­ного врага и го­ворить нечего: он просто ле­тает по своей траекто­рии и мешает.

13. Кузнецов Сергей (8Б). Компьютерная игра «Змейка».

Весьма популярной и известной игрой является «Змейка», игра, где по экрану двигается «Змея», со­стоя­щая из элементов, которая «ест» «яблоки», увели­чивая свою длину.

Целью работы было найти несложный и логич­ный спо­соб представления «змеи». Было решено использо­вать для этого массив структур, содер­жащих коорди­наты по X и Y. У змеи есть также длина, направление головы и цвет.

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

В дальнейшем эту несложную по написанию, но ин­те­ресную игру можно будет усовершенство­вать.

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

В докладе будут представлены устройство змейки и схема работы с ней.

14. Кузьмин Алексей, Чикунов Егор (10Г). Мно­гоце­ле­вой мультимедийный движок «Fiery Engine».

Движок – это то, без чего не может существо­вать ни одна крупная графическая программа и любая компью­терная игра. Движок объединяет в себе набор классов, функций и утилит для исполь­зования графики, звука, устройств ввода и всего остального, что может вам по­требоваться в про­граммах. Соответственно перед нами стояла за­дача создать простой в использовании, но в тоже время многоцелевой движок, при помощи кото­рого Вы можете использовать графику в своих про­граммах, даже не будучи знакомыми с ней. Fiery Engine, на дан­ный момент, является далеко не первой, и не финальной версией движка. За 2 года работы он много раз перепи­сывался, обрас­тал новыми возможно­стями. Теперь Fiery Engine – это в первую очередь не зависящий от графиче­ской, библиотеки ввода, музы­кальной библиотеки дви­жок (вы можете использовать DirectX или OpenGL или любую другую библиотеку с мини­мальными затратами времени на её подключе­ние). Именно на такую незави­симость был сделан упор в последней версии. На теку­щий момент он под­держи­вает музыку, обрабатывает устройства ввода, а также содержит функции для работы со сложной графикой (создание ландшафтов, за­грузка моделей). Уже готова документация, в ко­торой описаны все классы и функ­ции движка, а в ближайшее время бу­дет написан ряд примеров, которые помогут Вам лучше понять основы ис­пользования Fiery Engine.

15. Куренев Павел (МГТУ им Н.Э. Баумана, 3 курс). Программирование управляющих ал­горитмов для робототехники с использова­нием датчиков угла поворота (энкодеров).

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

Как правило, на выходе у энкодера имеется 2 сиг­нала: канал A и канал B, имеющие П-образный вид и смещён­ные друг относительно друга на чет­верть пе­риода. При подключении этих выводов на выводы микроконтрол­лера, можно отслеживать частоту сиг­нала на этих выво­дах и запаздывание оного сигнала относительно другого. Таким обра­зом можно опреде­лять положение, скорость и на­правление вращения датчика.

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

В докладе будут рассмотрены алгоритмы рас­чёта по­ложения и скорости вращения датчика и особенно­сти написания программы для реализа­ции данных ал­горит­мов на примере одного из распространённых ти­пов эн­кодеров.

16. Лебедев Сергей (7А). Создание компьютер­ной игры, развивающей меткость, на языке про­грам­мирования C++.

Целью работы было создание графической компью­терной игры TIR_UNLIMITED на языке программиро­ва­ния C++ с помощью компилятора Dev-C++. Цель игры – за минимальное количество выстрелов попасть в различ­ные мишени. Игра развивает меткость. В игре использо­вана графика в виде файлов BMP, что придает игре кра­соч­ность. Разработка этой игры помогла лучше по­нять основы программирования под Windows и нау­читься пользоваться компилятором Dev-C++.

В дальнейшем планируется командная разра­ботка игры в среде Visual Studio 2005, которая бу­дет являться аналогом знаменитой игры «Life Forse» на Dendy.

17. Маликов О.И., Несов В.С. (Институт системного программирования РАН). Интегрированная среда поиска уязвимостей и критических ошибок в исходном коде программ.

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

Отделом компиляторных технологий ИСП РАН разрабатывается интегрированная среда поиска уязвимостей и критических ошибок SVaCE Detector (Security Vulnerabilities and Critical Errors Detector) для статического обнаружения уязвимостей и критических ошибок в исходном коде программ.

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

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

18. Павлович Борис (11Б). Реализация алго­ритма за­ливки произвольных замкнутых фигур в кросс­платформенном графическом редакторе JPaint.

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

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

19. Переславцев Алексей (11В). Разработка алго­ритма параллельного LR(k) грамматиче­ского разбора.

Целью работы является создание программы генера­ции синтаксического LR(k) анализатора по заданной контекстно-свободной грамматике. Для разработки ал­го­ритма заполнения таблицы со­стояний LR(k) разбора и алгоритма анализа с по­мощью этой таблицы, была раз­работана формаль­ная теория, отличающаяся от класси­ческой. Эта теория удачно описывает работу с неодно­знач­ными грамматиками, в неё логично встраи­вается ал­горитм для параллельного разбора.

Основной особенностью разработанного алго­ритма является поддержка разбора по неодно­значным грам­ма­тикам. Такая возможность была получена за счёт па­рал­лельного разбора в неодно­значных конструкциях языка. Этот разбор полезен в языках с неоднозначной синтак­сической струк­турой (C++, ограниченные есте­ственные языки).

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

В качестве C++ API пользователя для сложных грам­матик генератор может порождать структуры дан­ных синтаксического скелета языка, а так же автомати­чески строить это скелет. Построение синтаксического скелета очень полезно, если оп­ределение сущностей может идти после их ис­пользования. Если же струк­туры данных не нужны (например, для программы калькулятора), то от пользователя требуется реализа­ция функций, соответст­вующих правилам грамматики. Боль­шинство генерируе­мых классов является шаблон­ными, что обеспечивает гибкую настройку их по­веде­ния без перегенерации API.

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

20. Пономарёв Олег (7А). Создание игры в среде MS Windows с помощью компилятора Dev-C++ на базе проекта в MS-DOS.

Цель работы – создание графического прило­жения (компьютерной игры «Kill Wolf»). В про­екте использо­вано современные технологии ком­пилятора g++ (среды Dev-CPP), а также функции графической библиотеки Windows.

Цель игры – поразить врага, используя при этом ле­вую кнопку мыши в режиме одного игрока, а в режиме двух игроков первый игрок должен «убе­жать» из под прицела второго игрока, используя при этом клавиши W – вверх, S – вниз, A – влево и D – вправо.

В дальнейшем планируется командная разра­ботка игры в среде Visual Studio 2005, которая бу­дет являться аналогом знаменитой игры «Life Forse» на Dendy.

21. Свешников Михаил (8Б). Реализация двумер­ной анимации персонажей.

Цель работы – разработка библиотеки для ра­боты с анимацией. Каждый программист, соз­дающий игру, стал­кивается с проблемой: как её оживить, сделать привлека­тельной и разнообраз­ной. Одно из решений этой про­блемы – создание анимации персонажей и фона. Куда лучше выгля­дит игра, где главный герой ходит, прыгает, лазит по стенам и стучит в монитор, пытаясь разбудить игрока, а солнце изредка плавным движением улыбается всей планете! Именно для этого пред­назначена библиотека для создания анимации. Для удобства работы поможет знание классов и насле­дова­ния.

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

22. Устинов Владислав (11Г). Система динамиче­ского подключения и классифика­ции про­граммных мо­дулей.

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

23. Чеснокова Эльвира (8Б). Визуализация прин­ципа сортировки объектов.

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

Сортировка объектов по какому-либо признаку мо­жет происходить различными способами. Я хочу рас­сказать о методе сортировки за счёт пе­ремены двух ячеек в мас­сиве с соседними индек­сами.

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

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

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

24. Швец Павел, Костин Григорий (11Г). Реали­зация трёхмерной ролевой игры жанра RPG на базе скриптового движка.

Целью работы являлось написание трёхмерной ро­ле­вой игры и редактора карт для неё. Для взаи­модейст­вия с пользователем был реализован ин­терпретатор скриптов.

Скрипт представляет собой набор команд, ко­торые исполняются в зависимости от состояния игрового мира или по команде пользователя. Пользователь мо­жет пи­сать свои скрипты и созда­вать собственную игру или просто изменять ка­кой-либо элемент.

В ходе разработки была изучена графическая биб­лио­тека OpenGL и была реализована загрузка моделей фор­мата 3DS, что позволяет пользова­телю добавлять свои модели, созданные в профес­сиональных 3D ре­дакторах.

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

Ролевая система игры основана на упрощённых пра­вилах D&D 3 редакции.

В будущем планируется включить поддержку звука и игру через Интернет.

25. Шимко Олег (10 класс, школа №179 МИОО). Раз­ра­ботка компьютерной игры «Halloween»

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

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

26. Янонис Павел (10В). Разработка векторного гра­фи­ческого редактора.

Целью работы является создание векторного графи­че­ского редактора. Векторные редакторы позволяют созда­вать и редактировать векторные изображения непо­средст­венно на экране компью­тера, а также сохра­нять их в различных векторных форматах. В программе исполь­зуется принцип геометрического моделирования — ис­пользова­ния геометрических примитивов, таких как точки, линии, сплайны и полигоны , для представ­ления изображений. «Векторная графика» является не­которой противоположностью растровой графике, в которой изо­бражение представляется как мат­рица пик­селей. Очень часто изображения в век­торном формате занимают на­много меньше места, чем растровые. Со­хранение файла идет в формате PostScript, который легко импортируется в Photoshop и другие графические программы. Среди других задач проекта разработка различных инструмен­тов рисования, пользователь­ского ин­терфейса в модели Win32. Программа позво­ляет задавать различные пара­метры изображения как объекта PostScript.