ÐÑпÑÑк 16
ÐÑпÑÑк 16
ÐÑпÑÑк 16
- No tags were found...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
ПАРА СЛОВКапитан“Очевидность”Мне повезло — в моем окружении много молодыхталантливых коллег, которые “горят”, “хотят”,пробуют, бьются, терпят неудачи и одерживаютпобеды. Наблюдать за ними и в меру надобностии сил помогать им — большое удовольствие. И впроцессе получения этого удовольствия часто приходитсярешать достаточно типовую мета-задачу, окоторой мне хочется сегодня рассказать.В общем виде запросы, с которыми ко мне нередкообращаются коллеги, выглядят так: “Как ты этоделаешь? Почему ты это делаешь? Почему ты делаешьэто так, а не иначе? Почему один раз ты сделалтак, а другой — иначе?”. Узнаете? Уверен, чтои к вам такие вопросы были обращены много раз.В каждом конкретном случае на большинство такихвопросов можно дать достаточно определенный ответ.Но вспомните, не возникало ли у вас ощущение,что ваш четкий, понятный, нередко иллюстрированныйпримерами ответ как бы “не впрок”. Чточерез некоторое время коллега снова приходит с вопросомо том же. Или о похожем. Было ведь?У меня — было. И дело вовсе не в том, что учитьи помогать “ломает” или надоедает. Напротив — помогатьхочется, это тебе самому доставляет удовольствие,но низкий КПД собственной деятельности заставляетзадуматься, что и как надо сделать иначе.Мне самому далеко ходить не пришлось. Я постаралсяпроанализировать то, как сам учился(и учусь) у своих замечательных учителей, коллег,друзей. Мысль, к которой я пришел, оказалась такойпростой, что я уже не уверен, что стоит все этоизлагать ☺. Впрочем, раз начал…Вывод такой: я ничего не делаю так же, как те, укого я этому научился. Более того, я ничего не делаюпо тем же основаниям, как они. Я все делаюпо-своему. Работа мастеров, которую я наблюдал инаблюдаю, лишь запускает мою собственную внутреннююработу по пониманию и преломлению ихметодов, приемов, их стиля.Важно, что это понимание ничего не отменяет!Все равно важно наблюдать. Все равно важноспрашивать. Все равно важно получать ответы навопросы “почему?” и “как?”. Все это совершеннонеобходимо, но только для того, чтобы у каждогоиз нас непрерывно кипело и пыхтело собственное,личное варево из умений, навыков, мыслей,чувств, идей.Еще раз повторюсь: это очень простое понимание.И то, что у меня самого его некоторое времяне было, — это, вполне возможно, моя личная проблема.Я помню, как стремился сделать “как гуру”,а не получалось ничего. Я иног да расстраивался.А потом в какой-то момент делал “как я”. И у меняполучалось. И лишь потом я понял, что получалосьименно “как у гуру”, но только “как я”.Кстати, я знаю, когда пришло ко мне это понимание.Это было после семинаров гениаль ногоФрэнка Фаррелли — автора методов провокативнойюморотерапии. Его работа бесподобна. Нокаждую секунду семинаров я понимал, что именнотак я точно не могу. “Так” — это противоречитмоей натуре. Прошло совсем немного времени, ия отметил, что сам (не без удовольствия, возможнодаже не без изящества ☺) использую методыФрэнка. Но только использую их “как я”, от именисебя, от своей натуры, от своего нутра. Я научилсяу Фрэнка, не копируя буквально ни одногоего прие ма. И боюсь даже подумать, что ответилбы Фрэнк на вопрос “Почему ты сделал это так,а не иначе?” ☺. Но это был бы его ответ, не мой.Сергей Островский(so@1september),главный редактор3май 2013 / ИНФОРМАТИКА
УГЛУБЛЕНКА4май 2013 / ИНФОРМАТИКАИ.А. Калинин,к. п. н., доценткафедры информатикии прикладнойматематики МГПУН.Н. Самылкина,к. п. н., доцент,профессор кафедрытеории и методикиобучения информатике,МПГУИмитационноемоделированиеЭтой статьей мы открываем небольшойцикл публикации материаловнового углуб ленного курсаинформатики, представленногов УМК авторов И.А. Калинина иН.Н. Самылкиной.УМК состоит из:1. Программы по информатике, старшаяшкола, углубленный уровень.2. Учебника для 10-го класса (вФе де ральном перечне учебников с2013 года).3. Учебника для 11-го класса (вФедеральном перечне учебников с2013 года).4. Задачника-практикума с диском.5. Сборника проверочных тестов.6. Методического пособия для учителя.Авторы отобрали для публикации совершенноновый для курса информатикисодержательный материал по темам:“Основы имитационного моделирования”,“Технология обработки текста (регулярныевыражения, частотный анализ)”,“Обработка звука”, “Технологияобработки графики”.В этом номере журнала представленыпервые две темы из перечисленных.Практические работы предваряеттео ретический материал в минимальнонеобходимом объеме. Для выполненияпрактических работ необходимо установитьрекомендуемую к использованиюпрограммную среду с сайта компанииThe AnyLogic Company. Продуктплатный, но всем доступна демонстрационнаяверсия программного продуктадля использования в течение месяца.Этой версии достаточно для выполненияпредлагаемых практических работ.Основы имитационногомоделированияТеоретический материал учебника10-го класса, посвященный моделированию,раскрывает суть основногометода познания информатики и применениесистемного подхода, широкоиспользуемых в других научных дисциплинах.В дальнейшем понятие моделииспользуется постоянно — либо приописании того или иного способа организацииавтоматизированной обработ-
(576 на входе) и вышедшими (147на выходе) стала гораздо больше,хотя к самой витрине народу подошломеньше (43 вместо 51).Причина пробки — время, котороебыло потрачено частью людейна то, чтобы протолкнуться к витрине,а остальными — на то, чтобывсе-таки пройти мимо. Хотя этовремя зависит от алгоритма обходапрепятствия (и в другой версии системымоделирования может измениться),в реальности происходитто же самое.Для создания более наглядноймодели в качестве подложки можноиспользовать план здания, а стеныпрепятствиярасставить точно так,как они стоят в реальности.Конечно, создать такую модельдля конкретных условий можнотолько тщательно исследовав поведениенастоящих пешеходов: какони движутся, сколько из них смотритна витрины, как изменяетсяпри этом их движение. Именно поэтомутакие параметры — предметмногочисленных и довольно сложныхисследований.Аналогичный подход можноприменить к очень многим процессам,например, создав моделимашин, веществ и аппаратов, исследоватьорганизацию производства.Такие модели — мощный и универсальныйспособ исследованиявлияния изменений в поведенииотдельных объектов-агентов навсю модель. В математическоймодели, например, было бы оченьсложно увидеть, как повлияет изменениетактики поведения жертвна популяцию хищников. Иногдаочень простые изменения параметровприводят к существеннодругим результатам, что в формулах можно учестьтолько после того, как эффект будет замечен.Второй упомянутый нами вид моделей — моделидискретно-событийные.В агентной модели агент (точнее — программныйкод, моделирующий его деятельность изменениемпараметров), как мы помним, принималрешения о своих действиях, исходя из восприятияокружения (то есть получая разрешенные ему сведенияо состоянии среды). При моделировании жемногих организованных процессов все решенияуже приняты заранее, то есть известно, в какомпорядке, кто и как должен действовать.Рис. 3. Исследование модели: 6000 пешеходов в часРис. 4. Исследование модели: 6000 пешеходов в час,вит рину замечают от поворотаМоделируя такие системы, понятием агента(и самим агентным подходом) не пользуются, аиспользуют понятие заявки на обслуживание —обращения к системе для достижения какого-торезультата. Порядок обработки заявки задаетсяв системе в виде некоторой последовательностисобытий: появления заявки, передачи заявки отодной стадии к другой, задержки (моделирующейвыполнение стадии), накопления заявок вочереди.При возникновении таких событий также оцениваетсядостаточность ресурсов, например, занятили свободен какой-либо аппарат или комната.7май 2013 / ИНФОРМАТИКА
УГЛУБЛЕНКА8май 2013 / ИНФОРМАТИКАВремя в таких системах чащевсего представляется в виде условныхдискретных шагов, посколькузаявка переходит из одной стадиив другую сразу, то есть дискретно.Такой подход позволяет проанализироватьработу системы подзаданной нагрузкой, определитьзаранее “узкие” места, оценить количествонеобходимых ресурсов икачество работы системы в целом.Рассмотрим такую модель напримере упрощенного представлениятранспортного маршрута.Рис. 5. Транзакционная модель маршрутаНаш маршрут состоит из трехостановок: начальной, промежуточнойи конечной. Маршрутноетранспортное средство (будем егов дальнейшем называть маршруткой)имеет 12 мест и ходит по некоторомурасписанию. В маршруткуможно посадить не более 12 человек.На первой остановке люди толькосадятся, на промежуточной —выходят (если это предполагалось)и садятся (если есть места), а наконечной — только выходят.Для нас основным критерием работылинии будет количество ожи-Рис. 6. Исследование моделидающих посадки людей на остановках. Еще один критерий, часто используемый в таких системах, — время,проведенное заявкой в системе.Вот рабочее окно нашей модели — рис. 5.В этой модели в отличие от предыдущей мы не используем анимацию для визуализации, поскольку насинтересуют только численные оценки. Длины очередей на каждом шаге мы фиксируем в специальных спискахи отражаем на гистограммах, оценивающих длину двух очередей.На рис. 5 видно, что длина очереди на первой остановке не превышала 4, а на второй, гораздо более интенсивной,доходит и до 7. Насколько такое допустимо — вопрос изначально заданных критериев.Если пассажиры не будут учитывать расписания маршруток, то при длительном перерыве в их движении(в нашем случае — от 18-й до 30-й точки отсчета) ситуация может выглядеть так, как на рис. 6.То есть на остановках начнут скапливаться ожидающие маршрутку (23 на первой остановке и 21 навторой, поскольку там последняя маршрутка прошла позже). Чтобы это скомпенсировать, потребуетсябольше, чем четыре маршрутки, потому что не обязательно выходят все люди и постоянно подходятновые. При необходимости можно подобрать более адекватное расписание или увеличить количествомаршруток.Эта модель упрощена, поэтому мы не оцениваем задержку при входе и выходе пассажиров 2 , не рассматриваемработу станций-пересадок, возврат маршрутки назад, реальное время маршруток в пути.Очевидно, что при более тщательном подходе можно достаточно точно описать работу транспортнойсети города и, оценив интенсивность появления пассажиров на остановках, спрогнозировать ее поведение.Таким образом можно моделировать работу учреждений, складов, транспортных сетей, систем обслуживания,конвейерных производств, оценивать достаточность ресурсов и скорость их работы. В отличиеот агентного подхода этот способ требует существенно меньших ресурсов, что позволяет строить и изучатьдостаточно сложные модели.В целом ряде случаев применение обоих видов моделей — хорошая альтернатива реальным “пробам”.Например, значительно целесообразнее проверять достаточность пожарных водоемов, помп и расчетов на2В ряде городов введены в действие системы автоматического контроля пассажиров. В результате время посадки 15 человекможет достигать 10–12 минут, что, конечно, стоит учесть в модели. Аналогично будет действовать и условие “оплата водителюпри входе/выходе”.
сетевой транспортной модели, а не в условиях реальных пожаров. Хотя в последние несколько лет решения,как кажется авторам, принимаются именно на основе практического опыта и внесистемных мотивов.Реальные потери, конечно, значительно убедительнее.Особый вид имитационных моделей — системной динамики, разработан и используется для прогнозированияразвития крупных систем, в которых поведение отдельных объектов взаимозависимо, причем связеймного. Чаще всего такие системы рассматриваются в финансово-экономической сфере и в производстве.Существенная особенность таких моделей — что в них мы рассматриваем не модели объектов, а взаимосвязьпараметров.В моделях системной динамики всю систему представляют в виде набора взаимосвязанных объектовследующих видов:Название объектаУровеньСвязьСвязь с задержкойПотокПоток с регуляторомВспомогательныепеременныеКонстанты“Облако” (“Озеро”)НазначениеПеременная, накапливающая измененияОбозначение влияния переменныхВлияние с запаздываниемПеременная, изменяющая значения уровнейИзменение значения уровней с регуляцией. Изменение значения потока на основаниивспомогательной переменнойПеременные-параметры, определяющие поведение, но сами ни на что не влияю щиеНеизменные (во время симуляции) значенияНеисчерпаемый источник или поглотительВ качестве примера мы попробуем исследовать работу таможни в некоторой стране. Рассмотримтипичную для таможни ситуацию, когда часть товара поставляется в обход правил уплаты сборов иконтролирующие органы страны полагают, что бюджет недополучает эти средства.Предлагается идея: вместо того чтобы усиливать борьбу с контрабандой (это долго, дорого и не гарантируетуспеха), государство увеличивает налог на товар, компенсируя свои потери.Поставщики товара поднимают цену при продаже, чтобы скомпенсировать выросший налог.Известно, что в таких случаях контрабанда возрастает, потому что становится выгодной большемуколичеству поставщиков и потребителей.Возникает вопрос: сумеет ли государство скомпенсировать потери таким образом?Составим модель: есть поток товара (который мы укажем в денежном эквиваленте — USD, УсловныхСистемных Деньгах), с которого по заданной ставке взимается налог. Налоги определяют уровень реальныхсборов.Зная объем ввоза (предположим,он не меняется),мы предполагаем уровеньсборов и можем оценитьнедосбор налогов. Исходяиз недосбора, мы вычислимновую ставку налога.Изменяя ставку, мы повлияеми на сбор налогов,и на уровень контрабанды.Уровень контрабанды изменитсяне сразу, а через некотороевремя, требуемое дляреакции системы.Составим модель 3 (рис. 7).“Проиграв” эту модель для100 условных лет, мы выяснимудивительную вещь —реальные сборы налогов невыросли, а упали. Можноэкспериментировать с коэффициентамии усложнятьРис. 73Модель подготовлена в демонстрационной версии PowerSim Studio 8.9май 2013 / ИНФОРМАТИКА
УГЛУБЛЕНКАмодель, но суть дела не изменится: простой рост налогов при нежелании или неспособности бороться с контрабандойтолько ухудшит ситуацию.Такие сравнительно простые схемы встречаются достаточно часто и имеют свои названия. Приведеннаяв примере схема называется “Решение, обреченное на неудачу”.Модель можно усложнить, введя уровень борьбы с контрабандой, и учесть в нем влияние на деятельностьконтролирующих органов возрастания объема сборов, влияние такой борьбы на время и стоимостьтранспортных перевозок, другие параметры.Подобные схемы (иногда большие и сложные) позволяют изучать взаимное влияние происходящих социальныхпроцессов и используют для принятия управленческих решений.Системно-динамическое моделирование применяется для исследования и предсказания поведениясложных систем (например, социальных отношений) и активно используется для принятия решений.ПРАКТИКУМ10май 2013 / ИНФОРМАТИКАЧтобы практически освоить основные виды имитационного моделирования и познакомиться с возможностямиэтого метода, мы рассмотрим построение таких моделей с использованием среды AnyLogic.Компания — производитель этой среды — российская компания The AnyLogic Company предоставляет дляознакомления пробную версию (http://www.anylogic.ru/downloads), которой нам более чем достаточно.Перед началом работы рекомендуем установить ее на своем компьютере.Среда эта объектно ориентированная и для создания моделей опирается на язык Java. Особенности языканам изучать не потребуется, для работы достаточно общих представлений об объектно ориентированномподходе и синтаксисе языка C.Перед началом работы кратко опишем интерфейс среды. Основное рабочее окно среды выглядит примернотак — см. рис. 8.С левой стороны вверху — дерево,в котором показаны открытыесейчас модели (на иллюстрации— только одна, Epedemy), а вмоделях — объекты, из которыхона состоит. Объекты размещенына двумерной плоскости — рабочемпространстве. В открытойсейчас модели мы видим объектпространство— Main, объектагентPerson и стартовую страницумодели, на которой можно будетразмещать настройки передпрогонами, — Simulation.Объекты размещаются в рабочемпространстве — как в графическомредакторе. Объекты можнодобавлять, перетаскивая их изпалитр в правой части (сейчасоткрыта палитра “Диаграмма состояний”).Рис. 8Объекты в модели имеют свойстваи методы, которые можно описывать, задавая им значения в нижней центральной части рабочегоокна. Наша задача с точки зрения среды делится на две фазы: подготовка модели (описание объектов и ихвзаимодействия) и “прогон” — запуск модели.Начнем с наиболее иллюстративного вида имитационных моделей — агентных моделей, на котором ипокажем, как именно это делается.Практическая работа № 1“Изучение движения учащихся через турникеты с помощью агентной модели”ЗадачаВ школе № 0 планируется повысить уровень обеспечения безопасности.В первую очередь специалисты рекомендовали ограничить проход в школу посторонних, для чего на входеустановят два турникета и начнут проверять всех входящих c помощью специальной карты.
По мнению директора школы, реальное применение такогоподхода приведет к существенным затруднениям передначалом занятий.Как подтвердить или проверить эти предположения?РешениеСоздадим модель, показывающую первый этаж школы стурникетами и агентами-пешеходами, единственной задачейкоторых будет — пройти через турникет.При этом мы учтем, что проход через турникет (а точнее— проверка) занимает некоторое время, и время от временибудет попадаться человек без документов (например,без карточки), который будет возвращаться назад.Время прохода может меняться (человек проверяет документымедленнее, чем автомат — карточки), вероятностьпоявления “неправильного” документа — тоже.Чтобы модель выглядела реалистично, найдем и загрузимтиповой план первого этажа школы. Авторы использовалиплан из типового проекта № 45-621/1.Рис. 9Запустим среду и командой “Файл\Создать” создадим пустуюмодель (см. рис. 9).На втором шаге укажем, что модель создаем “с нуля”, не используя заготовки.Возьмем за основу типовой проект школы № 65-426/1. Найдем в сети план первого этажа, очистим егоот лишних артефактов и разместим на рабочем листе: из набора компонентов “Презентация” перетащимна рабочее поле объект “Изображение” и добавим в его параметрах картинку плана этажа (см. рис. 10).Вставленную картинку “растянем”.Теперь прямо поверх плана мы отметим стены (поскольку на картинке автоматически система стенывыделить не может). Для этого построим ломаные вдоль стен. Обратите, пожалуйста, внимание — чтобыначать рисование ломаной, нужно дважды щелкнуть по значку “карандаш” справа от объекта “Ломаная” внаборе компонентов “Презентация”.Чтобы сделать нашу ломаную “стенами”, нам нужно объединить все элементы в группу — выберите их,щелкнув на них мышью с прижатой клавишей, нажмите правую клавишу мыши и выберите в меню“Группа/Создать”. Появившуюся группу назовем Walls.Создадим стартовую линию — “источник” пешеходов. Линию мы расположим перед крыльцом — с точкизрения модели нам не важно, откуда люди приходят к школе.Чтобы ее нарисовать, перетащим объект-линию, подгоним размеры и зададим линии имя: enter.Внутри школы отметим парулиний — выходов. На самомделе это, конечно, не выходы, апросто подъемы на 2-й этаж, ноопять же — с точки зрения моделиважно только то, что людиуходят с этажа. Схема, конечно,очень упрощена — в обычнойситуации людям надо еще, какминимум, раздеться.Линии назовем exit1 и exit2,примерно так, как показано нарис. 11 (выделена линия exit1 — вначале и конце ее видны кружки).Пока что на нашей модели ничегопроисходить не будет, посколькумы ничего задающего движениепешеходов еще не сделали.Построим общую логическуюсхему движения из готовых блоков.Блоки нужно перетащить поодному из раздела “Пешеходнаябиблиотека” и расположить при-Рис. 1011май 2013 / ИНФОРМАТИКА
УГЛУБЛЕНКА12май 2013 / ИНФОРМАТИКАмерно так, как показано на рисунке.Блоки будут такие:pedSource — источник пешеходов;pedSelectOutput — выбор выхода;pedGoto — движение пешехода.Этих блоков будет два — посколькуу нас два выхода.Сейчас для нас не так важно,что происходит за пределамитурникетов, поэтому мы не учитываемтого, что люди могут откаждого входа пойти к любомувыходу.Блоки нужно связать между собой.Для этого щелкнем два раза впрямоугольнике — порту для соединителей(см. рис. 12).Кроме них, нам на модели понадобятсяеще два объекта безРис. 11соединений:pedConfiguration — конфигурация;pedGround — объект-этаж.В параметрах этажа нам нужно указать:• имя этажа. Для этого в поле “Имя” напишем “ground1”;• объект-стены. В разделе свойств нужно в поле “Стены” вписать название группы линий со стенами:Walls;• зададим параметры источника пешеходов: ограничим количество пешеходов. Для этого поставим галочку“ограничено количество прибытий” и укажем в поле “Максимальное количество прибытий” значение600;• укажем объект-этаж. В поле “Этаж” напишем “ground1”;• место появления. В соответствующем поле напишем имя линии — enter;• укажем частоту появления новых пешеходов, исходя из следующих параметров: в школе учится 600 человек,и попасть внутрь они должны за полчаса. То есть параметр “Интенсивность” должен иметь значение1200 человек в час.Укажем параметры “разветвления”pedSelectOutput —коэффициенты предпочтения.Указать нужно вероятностьвыбо ра каждого направления,и в нашем случае они равны —по 0,5 пер вому и пятому исходу(остальные мы не использовали).В каждом элементе движенияpedGoto нужно указать цель —то есть линию выхода exit1 иexit2.Запустим модель и, не меняяскорости, посмотрим, скольковремени займет проход пешеходов.Стоит заметить, что времяв модели — “виртуальное”.Фактически одна единица времени— это одна минута. То есть намне нужно наблюдать за прогономполчаса, достаточно 30 секунд.Рис. 12
Во время прогона мы выяснимнесколько мелких огрехов:• пешеходы проходят черезстенку между выходами и колоннами,поскольку мы их неучли в границах. Дорисуем недостающиелинии и добавим ихв группу;• в некоторых случаях пешеход“не видит” свободного проходак своему выходу, и это вызоветошибку. Сдвинем линиивыходов чуть внутрь.В нашей модели скоростьдвижения пешеходов различается,поэтому для уверенностимы сделаем несколько прогонов(рис. 13).Результат будет вполне предсказуемым— никаких препятствийнет, 600 человек попадаютвнутрь примерно за 30 минут(то есть по дороге нет затруднений— время зависит только отчастоты появления и скоростидвижения).Дополним нашу модель.Теперь мы поставим два турникета(нарисуем линии gate1и gate2), обозначим двумя прямоугольникамизоны ожиданияобработки и предусмотрим двелинии — как цели для движенияв случае отказа (например, забытойили отказавшей карты).Время ожидания изменяетсяот 0,5 до 1 сек.Для обработки ожиданиянужно добавить два объекта-зоны:pedArea.В схеме мы разобьем путь натри этапа: до турникета, ожиданиепропуска и проход либо наэтаж, либо на выход. Все объектынужно связать, заполнивпараметры.В новых ветвлениях мы ужеукажем неравное разделение:будем считать, что 95% посетителейимеют действительныекарты (первый исход имеет коэффициентвыбора 0,95), а 5% (0,05) — нет (см.рис. 14).Снова запустим модель и обнаружим, что времявыросло, но не очень существенно: до 32 минут.Усовершенствуем нашу модель, чтобы больше неоценивать время “на глаз”. Для этого мы воспользуемсясредствами сбора статистики и возможностьюмодифицировать класс “Пешеход”.Рис. 13Рис. 14Мы видели, что во время работы модели некоторыепешеходы могут “заблудиться” и застрять на этаже. Нареальный результат они повлиять не могут, поэтомумы можем их отбросить. Параметр, который нас на самомделе интересует, — это время, которое потребуетсяпешеходу, чтобы пройти через этаж. Изначальновре мя входа и выхода у пешехода не фиксируется, по этомусоздадим нового пешехода, отмечающего время.13май 2013 / ИНФОРМАТИКА
УГЛУБЛЕНКАРис. 15 Рис. <strong>16</strong>14май 2013 / ИНФОРМАТИКАДля этого:• на названии модели нажмем правую кнопку, в меню выберем пункт “Создать\Новый Java-класс”;• в появившемся окне укажем имя класса schoolPed и базовый класс — Ped (см. рис. 15);• в следующем окне добавим параметр startMove — там будет храниться время входа. Тип этого параметра— double, поскольку именно так обрабатывается модельное время (см. рис. <strong>16</strong>);• галочки “Создать конструктор” и “Создать метод toString” уберем — мы будем записывать время сами;• теперь укажем на объекте-источнике класс пешехода — schoolPed (вместо просто Ped, который был поумолчанию). Без этого мы не сумеем обратиться к новому параметру (в базовом классе его нет);• в пункте “Новый пешеход” вместо new Ped() укажем new schoolPed();• в пункте “Действие при выходе” запишем в добавленный нами параметр время: ((schoolPed)ped).startMove = time();• поскольку в случае отказа пешеходы у нас идут в одно и то же место, модифицируем схему — исключимлишние объекты;• добавим объект сбора статистики: из палитры “Статистика” перетащим объект “Статистика” и назовемего moveTime;• сменим класс “пешеход” на всех объектах pedSink (так же, как на pedSource);• на всех объектах-выходах укажем действие при входе, добавляющее данные к статистике: moveTime.add(time()-((schoolPed)ped).startMove).Как видно, мы добавляем кстатистике время — вычисливего как разницу между текущимвременем и временем входа.Теперь мы можем при выполнениипрогонов не наблюдатьза счетчиком, а просто отслеживатьнакопленные данные:минимальное, максимальное исреднее время нахождения проходашкольников.Увидеть результаты можнопросто щелкнув мышью на статистике(рис. 17–18).Задания1. Как изменится время, есликарта будет обрабатываться от 1до 2 секунд?2. Сколько нужно будет временина проход, если детям придетсяеще и переодеваться (задержкаот 2 до 5 минут в раздевалке)?Рис. 17
3. Модель предполагает, чтолюди приходят в течение всех30 минут равномерно. Тем неменее очевидно, что на последних10 минутах плотность будетзначительно выше. Исследуйтеповедение модели с повышеннойчастотой появления людей.Практическаяработа № 2“Дискретно-событийнаямодель работыучреждения”ЗадачаЕжегодно работникам многихпредприятий полагается проходитьтак называемый “профессиональныймедицинский осмотр”.Процедура его построенапримерно так: в назначенныйдень работник является в поликлинику, получаетв регистратуре документы, получает от врачатерапевтанаправление и должен пройти осмотр унескольких врачей-специалистов.Люди выбирают специалиста сами, исходя изтого, у кого очередь короче.Общее время на проведение осмотра, выделенноелечебно-профилактическим учреждением, — 6 часов.Нам известно, сколько примерно тратят наосмотр и выдачу документов.Требуется понять — сколько людей успеют пройтиосмотр, не будут ли они где-то скапливаться приимеющихся нормах времени? Сколько в среднем проведетчеловек на осмотре, сколько максимально?В модели, с помощью которой мы можем оценитьэти параметры, нам не важна траекториядвижения людей, их взаимодействие между собойи т.д. Нам важно только время на каждом этапеобслуживания. При этом обслуживание для насдискретно: нельзя же одновременно осматриватьполтора человека.Воспользуемся для моделирования специальнымвидом моделей, который называется дискретно-событийнымимоделями. Основная единица в нем —заявка на обслуживание, которая будет некотороевремя обрабатываться на каждом этапе.Создадим чистую модель (Файл/Создать/Модель), на втором этапе выберем “Чистый холст”.Для создания модели нам понадобится, как и в предыдущихслучаях, разместить необходимые объектыэтапына рабочем поле и связать их между собой. Длядискретно-событийной модели мы воспользуемсяобъектами с закладки “Основная библиотека”.Обработка начнется с создания заявки. Для этогомы перенесем из основной библиотеки объект“Source”.Рис. 18Рис. 19Каждый этап будет состоять из двух объектов:“Очередь” (Queue) и “Ожидание” (Delay). Чтобыучесть выбор очереди к специалисту, нам придетсявывести заявку из потока (с помощью объекта“Выход” (exit), и потом для каждого специалистапринять заявку в объекте Enter). После обработкизаявки уничтожаются в объекте Sink.Там, где обработка идет линейно, свяжем объекты,как и в предыдущих моделях.Для трех специалистов получится примерно такаясхема (рис. 20).Как и в предыдущем примере, нам понадобятсяобъект для сбора статистики и гистограммадля отображения данных. Основным нашим параметром,статистику которого мы будем собиратьспециально, будет время, проведенное заявкойв системе, — то есть собственно время осмотра.Количество людей мы сможем узнать из чисел наобъектах.Обратите внимание: мы не связали очередиспециалистов с основным потоком — заявки унас будут попадать туда с помощью специальнойфункции.15май 2013 / ИНФОРМАТИКА
УГЛУБЛЕНКА<strong>16</strong>май 2013 / ИНФОРМАТИКАДля работы модели нам понадобитсясоздать новый класс заявок, как в прошломпримере для пешеходов. Назовемего Patient. Класс создаем на основе классаEntity (заявка) и описываем четыре дополнительныхпеременных:boolean stomatolog;boolean okulist;boolean blood;double ArrivalTime;В них мы учтем специалистов, которыхчеловек прошел, и время входа в здание.В конструкторе класса мы напишем начальныезначения:public Patient(double ArrivalTime){this.ArrivalTime = ArrivalTime;this.blood = false;this.okulist = false;this.stomatolog = false;}Рис. 21Этот класс — Patient — мы должны будем указатьна всех объектах, через которые проходит заявка.Кроме этого, нам необходима будет специальнаяфункция, которая будет выполнять выбор: в какуюиз очередей поставить заявку. Для этого из палитры“Основная” перетащим в рабочее окно компонент“Функция”, дадим ей название choiceDoctor и создадимодин входной параметр: entity, то есть заявкуиз уже созданного нами класса Patient. Вот как примернобудет выглядеть страница основных свойствфункции (рис. 21).Конечно, функции необходим и программныйкод, который и будет ее реализацией. Код запишемв разделе “Код”. Реализовать его можно по-разному,автор предлагает такой вариант:if((entity.blood)&&(entity.stomatolog)&&((entity.okulist)))enter3.take(entity);else {int bloodSize = ((!entity.blood)?( blood.size()):(255));int okulistSize = ((!entity.okulist)?(okulist.size()):(255));int stomatologSize = ((!entity.stomatolog)?(stomatolog.size()):(255));if ((bloodSize
дом — предположим, что это “треугольник” с вершинойв области среднего значения.Предположим, что:1. Время поиска и выдачи документов в регистратуре— от 3 до 10 минут, в среднем — 5. Зададимвремя задержки так: triangular(3, 5, 10). Для началау нас только одно окно выдачи.2. Терапевт работает быстрее, время осмотра одногочеловека — от 2 до 5 минут, в среднем — 3.3. Стоматолог -— от 5 до 15, в среднем — 10 минут.4. Окулист — от 5 до 10, в среднем — 7.5. Забор крови — от 1 до 5 минут, в среднем — 3.Время на переходы мы игнорируем — предположим,что все происходит на одном этаже и человеквидит все очереди.Нетрудно посчитать, что формально максимумвремени на полный осмотр — 45 минут. Теперь посмотрим,как это будет происходить в более точноймодели.Будем считать, что у нас прибывает один пациент вдве минуты, то есть в параметрах источника укажемскорость прибытия 0,5 единицы. Там же проверим,что не забыли указать класс заявки при создании:Задания1. Почему на анализ крови практическине было очереди?2. Как отразить в параметрах моделитот факт, что коридор, где ждут своейочереди на осмотр, — не безразмерный?3. Что произойдет, если в очереди будутпоявляться заявки с длительным временемобслуживания — например, любители поговоритьо здоровье? Какие параметры нужно будетизменить, чтобы это выяснить?4. Что произойдет в системе, если за счет внедренияэлектронной карточки врачи смогут уменьшитьвремя на заполнение документов на две минутыкаждый?5. Как повлияет на такую систему появление второгосотрудника в регистратуре? Вы можете реализоватьэто в модели с помощью объектов Service иResourcePool (они заменят очередь и обслуживаниев регистратуре) основной библиотеки. Пример использования— модель Bank из обучающих моделейAnyLogic.Как видно даже из очень небольшого материала,метод имитационного моделирования позволяетрешать огромный спектр практических задач. С методическойточки зрения ценность его еще и в том,что он ярко демонстрирует саму суть понятия “моделирование”,не требуя высокой математическойи технической подготовки.Применение современной среды моделированияпозволяет не только говорить о методе на занятиях,но и провести массу эффектных и полезных проектныхработ, темы для которых можно найти в самыхразных школьных предметах, собственном окружении,личной практике.Рис. 22Ограничим время работы модели: выберем веткуSimulation и в ее свойствах на закладке “Модельноевремя” укажем конечное время работы — 480 минут.Теперь можем запустить модель. Сразу можноотметить несколько особенностей:1) у нас появляется очередь в регистратуру, причемона все время растет;2) к окулисту и стоматологу всегда стоит очередь,а на анализ крови ее нет.Результаты исполнения таковы: примерночерез 5,5 часа очередь в регистратурупереполняется. За ВСЕ это время осмотрсмогли пройти только 30 человек,причем солидная часть из них потратилана это более трех часов (рис. 23).Очевидно, что без снижения временина осмотр и улучшения работы регистратурытакая система не сможет фактическиисполнить свои задачи.Литература1. Качала В.В. Основы теории систем и системногоанализа. М.: Горячая линия-Телеком, 2007.2. Форрестер Дж. Основы кибернетики предприятия(индустриальная динамика). М.: Прогресс, 1971.3. Шеннон Р. Имитационное моделирование систем— искусство и наука. М.: Мир, 1978.4. Медоуз Д.Х. Азбука системного мышления. М.:Бином. Лаборатория знаний, 2010.5. Арнольд В.И. Теория катастроф. 3-е изд., доп.М.: Наука. Гл. ред. физ.-мат. лит., 1990.6. Калинин И.А., Самылкина Н.Н. Информатика.10-й класс. Углубленный уровень. Учебник. М.:Бином, 2013.Рис. 2317май 2013 / ИНФОРМАТИКА
УГЛУБЛЕНКА18май 2013 / ИНФОРМАТИКАИ.А. Калинин,к. п. н., доценткафедры информатикии прикладнойматематики МГПУН.Н. Самылкинак. п. н., доцент,профессор кафедрытеории и методикиобучения информатикеМПГУОбработкатекстаТехнология компьютернойобработки текстаПредставление информации в видетекста остается до сих пор одним изнаиболее универсальных и стало однимиз первых доступных для обработкис помощью компьютера. Энциклопедическийсловарь дает такое определениепонятию “текст”: “Текст — этоупорядоченный набор слов, предназначенныйдля того, чтобы выразитьнекий смысл. В лингвистике терминиспользуется в широком значении,включая в себя и устную речь”.Представление информации в видетекста при обработке с помощью компьютераблизко к этому определению.Под “текстовым” понимают такоепредставление информации, при которомона представлена в виде записислов (логических элементов) некоторогоязыка и доступна для чтения человеком.Язык для такого представления характеризуетсяв первую очередь некоторымалфавитом, т.е. допустимым наборомсимволов. Поскольку компьютер работаеттолько с двоичным кодом, то для записии обработки текста требуется взаимнои однозначно сопоставить символы и некоторыедвоичные коды. Такое правилосопоставления кодов и символов алфавитаназывается кодировкой текста.Для русского языка существует нескольковариантов кодирования.Во-первых, это кодировки на основестандарта ASCII: CP866 (DOS), KOI-8R(UNIX), CP1251 (Windows) и MacCyr.Во-вторых, это общий универсальныйстандарт кодирования UNICODE. Какправило, программные средства поддерживаютлибо один из стандартовпервой группы, либо один из группы иUNICODE. Как вы знаете, при необходимостипреобразовать текст из однойкодировки в другую не очень сложно.С точки зрения хранения чаще всегодля работы с текстом применяютсятекстовые файлы — самый простой,компактный и легкоиспользуемый стехнической точки зрения способ храненияи передачи текста. Текстовыйфайл представляет собой последовательностьсимволов, разбитых на абзацыили строки. Понятие “текстовогофайла” не предусматривает строго заданногоформата или расширения. Тем
не менее, помимо характерной для той или инойОС таблицы кодировки, в текстовых файлах могутприменяться три основных способа деления текстана строки (абзацы):1. Windows (DOS) — символы “Возвраткаретки”+“Перевод строки” (CR+LF);2. Unix — символ “Перевод строки” (LF);3. MacOs — символ “Возврат каретки” (CR).Текстовые файлы применяются для самых различныхцелей и часто оказываются формой храненияданных, описанных сложными формальнымиязыками. Эти файлы часто используются для записиконфигурации ПО, документирования, переносаданных, описания HTML- или XML-кода.Анализ текста на естественном языкеТрадиционно, когда мы говорим об обработке текста,мы подразумеваем его создание и оформление —например, в виде макета печатного издания, со всемиего особенностями. Это важнейшее (и самое известное)применение возможностей компьютеров в этойобласти, но далеко не единственное. Не менее важныдля нас самые разные средства, позволяющие автоматизироватьи более интеллектуальные действия, вчастности, извлечение из текста новой, более полезнойинформации, верификация и т.п. Пример такихдействий — анализ текста.До тех пор, пока текст невелик, мы можем проанализироватьего без применения специальныхсредств, прочитав и обдумав. Хотя даже в этомслучае многое будет зависеть от того, насколькохорошо развито умение извлекать из текста полезныесведения. В том случае, когда необходимо сделатьконтент-анализ достаточно объемной книги(нескольких книг) или множества любых текстовыхисточников, такой анализ становится как минимумзатруднительным для пользователя — начтение и обдумывание нужно потратить немаловремени. Работа такого рода в настоящее времястановится обязательной составляющей любойучебной или профессиональной деятельности.Когда времени мало, а текста много, возникаетнеобходимость в автоматизированной обработкетекстовых источников.Анализ текста на естественном языке — оченьмногогранная задача. Различные методы и средстваанализа разработаны для многих узких областей— это задачи поиска, перевода, выявлениязакономерностей и т.д. Мы продемонстрируем несколькоспециализированных методов автоматическойобработки текста, которые в разных формахуже очень широко применяются в различных текстовыхредакторах и текстовых процессорах.Регулярные выражения. Одним из наиболееэффективных средств автоматической обработкитекста являются регулярные выражения.По сути, регулярное выражение — это шаблон,который можно сравнить с фрагментом текста. Регулярныевыражения могут использоваться для поискав тексте, выборки фрагментов и их преобразования.Таким способом можно найти и выделить:1. Имена собственные — фамилии, имена, отчествалюдей, названия городов, рек и т.д.2. Численные факты — объемы, количество чего-либои т.д.3. Данные, соответствующие шаблону, — телефоны,адреса и т.п.4. Фразы, построенные определенным образом.Регулярные выражения в разных видах реализованыв составе:— текстовых редакторов и процессоров. Частичныймеханизм регулярных выражений реализовандаже в Microsoft Word, более функциональный механизместь в других текстовых редакторах, например,в Notepad++ или в PsPad;— специализированных средств работы с регулярнымивыражениями. Как одно из удобных исвободных средств такого рода можно назвать Expresso,основанный на использовании механизмарегулярных выражений среды .Net. Средства такогорода позволяют отслеживать исполнение выражения,результаты его применения к тексту, создаватьбиблиотеки готовых шаблонов;— программных библиотек, реализующих регулярныевыражения в средах разработки, языкахсценариев и др. Фактически подавляющеебольшинство современных систем либо имеюттакие средства в своем составе (PERL, PHP, JavaScript),либо они могут быть без затрудненийдобавлены.В специальных аналитических системах, предназначенныхдля автоматической обработки текста,кроме регулярных выражений используютсяспециальные словари и заранее подготовленныеописания логических конструкций. В нашем распоряжениитаких инструментов нет, но ничто немешает выполнить анализ самостоятельно, сконструировавнужные выражения.Синтаксис регулярных выражений. Регулярноевыражение составляется как описание последовательностисимволов. Символы, которые не относятсяк специальным, считаются частью шаблона.В простейшем случае это просто строка, которуюмы ищем. Например:“Иван Грозный”Такое выражение, что очевидно, позволит найтив тексте все вхождения подстроки “Иван Грозный”.Помимо обычных символов, можно обозначитьнекоторые специальные. Для их записи перед нимиставится знак “\”:ОбозначениеСимвол\t Табуляция\r Возврат каретки\n Новая строка\a Звонок\\ Слэш\. Точка^ Начало строки$ Конец строки\b Граница. Первый или последнийсимвол слова19май 2013 / ИНФОРМАТИКА
УГЛУБЛЕНКАТакже действует правило экранирования: еслинужно использовать символ, имеющий специальноезначение, то перед ним ставится “\”.Но постановка нашей задачи анализа текста такова,что мы, очевидно, не сможем задать все возможныеподстроки для поиска имен. Кроме того,такая подстрока не подходит даже в том случае, когдамежду “Иван” и “Грозный” будет разрыв строкиили два пробела.Начнем с простого случая — обработки болеесложного разрыва. Для этого мы опишем символы,которые могут стоять между словами. Дляописания такого набора в регулярных выраженияхпредусмотрены символьные классы. Классописывается набором символов в квадратныхскобках. При записи можно либо перечислитьподряд все символы класса, либо указать диапазон.Если сразу после открывающей скобкистоит символ “^”, то класс состоит из всех символов,НЕ перечисленных в скобках. В остальныхместах этот символ означает начало строки.Символ “точка” в классе обозначает именноточку — а не любой символ. Некоторые классыуже описаны и можно использовать их сразу (см.таблицу внизу).Конструкции вида \p{} относятся к использованиюUnicode-кодировки. Они позволяют выделитьсимволы с определенными свойствами во всехалфавитах. Для работы с русскими буквами предпочтителенэтот способ, поскольку большинствореализаций регулярных выражений не включаютрусские буквы в обычные классы по соображениямсовместимости.Пример:"Иван[\s]Грозный"Такая конструкция подойдет для тех случаев,когда слова разделяются табуляцией или переводомстроки, но символ-разделитель будет толькоодин.Для решения этой проблемы используютсяквантификаторы — указания на количествовхождений, которые обозначаются следующимисимволами (см. таблицу вверху).СимволЗначение* Любое количество, включая 0? Может быть (не более одноговхождения)+ Не менее одного вхождения подстроки{a} Ровно a вхождений{a,b} От a до b вхожденийВ нашем случае конструкция будет такой:Иван[\s]+ГрозныйНо основная проблема не решена: мы не можемперечислить все имена. Остается перечислить признакиимени собственного и, исходя из них, сформироватьрегулярное выражение.Имя собственное, как мы знаем, начинается сбольшой буквы и (в русском языке) не содержитцифр. Поэтому мы можем использовать для выделенияимени собственного такую конструкцию:\p{Lu}+\p{Ll}+То есть обязательно в начале серии букв как минимумодна большая буква (сокращение в скобках отLetter Upper case), а потом обязательно хотя бы однамаленькая (сокращение в скобках от Letter Lowerсase). Первая же проверка покажет, что этот шаблонвыделит и все слова в начале предложений. Крометого, при использовании этой конструкции мы захватими один лишний символ — разделитель.Придется их исключить. Для этого мы можемиспользовать при выделении нужной нам частивыражения группировку и предварительные условия— так называемые высказывания. Особенностьусловий в том, что они не становятся частью захваченнойчасти текста. Группировка выполняетсяс помощью скобок, а чтобы указать, что группа —это предварительное условие и захватывать его ненужно, используют обозначения:ОбозначениеЗначение?
В итоге получаем:(?
УГЛУБЛЕНКАРис. 1. Пример анализа текста22май 2013 / ИНФОРМАТИКАНа рис. 1 приведены графики относительнойупоминаемости 3 слов “ЭВМ” и “компьютер” в русскоязычныхкнигах за период с 1920-го по 2010 год.Из графиков можно уверенно предположить, чтосокращение “ЭВМ” упоминается все реже и постепенноменяется на слово “компьютер”.Конечно, анализ художественного текста такимспособом вряд ли будет представлять серьезнуюпрактическую ценность. Но вот проведенный такимспособом анализ группы новостных сообщенийуже может быть практически полезен, например,для того чтобы определить, какие факторы(или субъекты событий) влияют на их формулировки.Частотный анализ, помимо прочего, позволяетнам судить — относится ли текст к какой-то заранеезаданной группе текстов 4 . При этом опираютсяна эмпирически выведенные закономерности, получившиеназвание закономерности Зипфа 5 .Первый закон Зипфа:Произведение вероятности обнаружения слова втексте на его ранг частоты (порядковый номер присортировке по убыванию частоты) — константа 6 .Второй закон Зипфа:Форма кривой зависимости частоты и количестваслов, входящих в текст с этой частотой, одинаковадля всех текстов.То есть практически на любом достаточно большомобъеме текста слово с рангом 2 встречается приблизительнов два раза реже, чем слово с рангом 1.Слово с рангом 3 — в три раза реже слова с рангом 1и т.д. При обработке группы текстов чаще всего подсчитываютзначение частоты на миллион словоформ.3Данные сервиса http://ngrams.googlelabs.com/ — результатанализа книг в хранилище Google Books.4Характеристический набор текстов для языка иливида текстов называется корпусом текстов.5Выведены и предложены профессором-лингвистомГарвардского университета Джорджем Кингсли Зипфом(George Kingsley Zipf) в 1949 году.6Для русского языка — примерно 0,06–0,07, дляанглийского — примерно 0,1.Эти закономерности, подмеченные изначальнобез всякой автоматической обработки, позволилиобосновать следующие правила:1. Наиболее часто встречающиеся в текстах словане несут характеристической, смысловой нагрузки.2. Для достаточно устойчивых типов текстовможно вывести частотные характеристики (фактически— относительный порядок) специфическихслов. Эти слова будут находиться примерно “в середине”частотной кривой (часто встречающиесяслова — предлоги и т.п., редко встречающиеся —уникальные слова).Эти эвристические правила активно используютсяв поисковых системах, системах классификациии других системах автоматической обработкитекстов.На основе частотного анализа построено несколькомощных методов анализа текстов на естественномязыке.Контент-анализ. Суть этого метода состоит воценке общего направления действий (или вычленениятекстов, соответствующих данному направлению)на основе придания объектам (людям,местам, событиям) определенной “окраски” в тексте.“Окраску”, как правило, определяют на основеприлагательных, устойчиво связываемых с этимиэлементами (точнее — со словами, их обозначающими).Ручной контент-анализ — трудоемкая задача,чреватая большим количеством ошибок. Автоматическиесредства выполнения такого анализадолжны не только вычленять отдельные слова, но иопределять структуру предложений.Существенным этапом при выполнении такогоанализа является формирование специализированногословаря-тезауруса, с помощью которого можнооценить “окраску” того или иного упоминания.Такая оценка зависит не только от простого упоминанияслова, но и от целевой аудитории текста,времени его написания, способа употребления.Составление такого словаря — достаточно субъективнаязадача, но законы Зипфа упрощают еерешение.
Контент-анализ применяется и в более упрощенномвиде, например, для определения общегосодержания сообщения, для оценки изменчивостив группе сообщений и т.д. Особую ценность этотметод имеет в связи с тем, что это один из немногихспособов применить точные, количественныеметоды анализа и доказательства в традиционногуманитарных областях знания.ПрактикумВ практической части мы решим несколько задач,которые основаны на автоматической обработкетекста. Поскольку задачи обработки текстаочень разнообразны, мы не можем, конечно, утверждать,что показанный нами инструментарий— самый лучший и единственно верный. Темне менее у нас есть основания утверждать, что ондостаточно мощен, чтобы решать с его помощьюмассу полезных задач.Основной инструментарийОсновным средством, которое мы будем использоватьдля обработки текста, будет реализация языкаPascal — PascalABC.Net. Напомним, что получитьего можно по адресу:http://pascalabc.net/ssyilki-dlya-skachivaniya.html.Помимо рабочей среды языка, нам потребуетсяпрограмма подготовки и тестирования регулярныхвыражений Expresso. Программа эта бесплатная, иее можно скачать по адресу:http://www.ultrapico.com/ExpressoDownload.htm.В этом разделе мы будем опираться на возможностиуже не столько самой системы, сколько навозможности дополнительных библиотек — какстандартных для платформы .Net, таки дополнительно полученных.Поскольку авторы ограничены “газетным”вариантом — некоторые вопросы(такие, как, например, использованиелингвистических средств) в этотвариант практикума не войдут.Основное рабочее окно программы — набор изтрех страниц: Test Mode (режим проверки), DesignMode (режим создания) и Expression Library (библиотекавыражений). В основном мы будем работатьна первой — в режиме тестирования.На этой странице есть, во-первых, управляющаяпанель, а во-вторых, несколько разделов:• Regular Expression — само регулярное выражение.В этом месте мы можем написать выражение— просто как текст;• Regex Analyzer — анализатор выражения.В этом окне выражение будет разобрано на частитак, как его будет интерпретировать механизм.Там можно проверить синтаксис. Если выражениесложное, то будет показано дерево — чтобы можнобыло проверить вложение частей;• Sample Text — пример текста. В этот раздел загружаетсятекст, к которому и применяется регулярноевыражение. Текст можно просто скопироватьтуда;• Search Result — раздел, в котором будет показанрезультат применения — т.е. поиска — регулярноговыражения. Там будут показаны все найденныевхождения, и если вхождение выбрать в примеретекста, будет показано, где именно оно найдено.Если выражение включает в себя несколько групп,то результат можно развернуть — опять-таки, какдерево.Решим несколько задач, опираясь на сведения осинтаксисе регулярных выражений. Во всех задачахнам нужно будет написать выражение, проверитьего, выполнить и оценить результат.Задача 1. Выбрать из текста все целые числа.Начнем с того, что выясним — из чего может состоятьцелое число? Очевидно, в основном — изВыделение последовательностейпо шаблонуЗадача — найти в тексте часть, соответствующуюшаблону (или проверить,соответствует ли строка шаблону), возникаеточень часто и в самых разныхситуациях. Основным способом ее решения,как мы уже говорили в учебнике,является механизм регулярных выражений.Основным средством, которое мыбудем использовать для создания ипроверки регулярных выражений,будет программа Expresso. Начнемс краткого разбора ее интерфейса(рис. 2).Рис. 223май 2013 / ИНФОРМАТИКА
УГЛУБЛЕНКА24цифр. Кроме этого, прямо перед числомможет быть знак “–” или “+” (аможет их и не быть). Кроме этого, последовательностьцифр может стоятьв начале или в конце отдельного слова,— но такая конструкция (например,“Иванов-2й”) числом не будет.Используем для этого выражениясимвольные классы и символы повторения:[+-]?\d+Выражение очень простое: первыйего символ — это либо “+”, либо “–”,это мы и записали в его классе. Он можетвозникнуть один раз, а может невозникнуть — поэтому выбран квантификатор“?”, то есть необязательныйэлемент.Следом идет набор цифр (символьныйкласс \d), причем в нем минимумодна цифра.Применив это выражение, мы выясним,что оно действительно находитвсе правильно написанные числа,но ситуацию “Иванов-2й” обрабатываетневерно — выделяет из этой подстрокичисло 2.Чтобы исключить эти ситуации, мы воспользуемсятак называемой незахватывающей проверкой:то есть конструкцией, которая проверитчасть строки на соответствие шаблону, но не выделитэту часть строки из результата. Синтаксисэтой конструкции таков: (?:) —мы проверяем, что есть, но невключаем его в результат. Получится примерновот что:(?:\s)[+-]?\d+(?:\s)То есть мы потребовали, чтобы перед и посленашего числа стояли пробельные элементы(класс \s).Вот что мы получили при тестировании, простозаписав HTML-код страницы в виде текста(см. рис. 3).Обратите внимание: в разделе Regex Analyzerподробно разобрано, в каком порядке и как анализируетсятекст в этом регулярном выражении.Внимательно посмотрев, что именно выделено,мы поймем, что нашли не только нужное, но ипробелы вокруг. Чтобы все-таки выделить толькоРис. 3целое число, придется заключить нужную частьв круглые скобки — тогда первая группа внутринайденного совпадения как раз и будет нужнымнам числом:(?:\s)([+-]?\d+)(?:\s)Теперь рядом с каждым совпадением появитсязнак развертывания ветки — в которой и будетнужная группа.Задания для самостоятельной работы1. Напишите выражение, которое найдет числав составе слов.2. Напишите выражение для поиска чисел вформате числа с плавающей точкой.3. Напишите выражение для поиска телефонныхномеров.Задача 2. Выбрать из текста все упоминания весовв метрической системе (например, 5 килограмм,10 тонн и т.д.). Для упрощения задачи считать, что всевеса — целые, а меры написаны без сокращений.Определим структуру текста, который нам нужнонайти: он состоит из числа и меры, которая заним записана. Как искать число — мы разобрали впрошлой задаче.май 2013 / ИНФОРМАТИКАКратное Название Кратное Название Кратное Название Кратное Название(СИ)(СИ)10 0 тонна 10 6 мегаграмм 10 0 тонна 10 6 мегаграмм10 1 10 7 (нет) 10 −1 децитонна(10 2 ) (центнер) 10 5 (нет)10² 10 8 (нет) 10 −2 сентитонна 10 4 (нет)10³ килотонна 10 9 гигаграмм 10 −3 миллитонна 10³ килограмм10 6 мегатонна 10 12 тераграмм 10 −6 микротонна 10 0 грамм10 −3 миллиграмм
В метрической системе мер мерыобразуются из основного слова и десятичнойприставки. Все десятичные приставкимы использовать не будем, нонекоторые перечислим в таблице.Чтобы реализовать эту структуру,мы используем выбор из несколькихвариантов:(?:\s)\d+)(?:\s)+(((?:кило|мега|гига|тера|санти|милли|сенти|санти|микро)?(?:грамм|тонн))|(г|см|м|км))Напомним, что знак вопроса послегруппы задает возможное (но не обязательное)появление.Как видите, кроме десятичных приставокмы добавили сокращения — на нихправила записи не распространяются, поэтомупридется перечислить их.Применив это выражение, мы выясняем,что оно действительно выбираетнеобходимое, но не только (рис. 4).470 м — записано как мера веса, норечь в тексте — о размере штрафа. Поэтомунам придется добавить дополнительноеусловие в конец: расширенноемножество символов:(?:\s)\d+(?:\s)+(((?:кило|мега|гига|тера|санти|милли|сенти|санти|микро)?(?:грамм|тонн))|(г|см|м|км))[ .,:;!?{}()\\[\]]+Рис. 4Задания для самостоятельнойработы1. Внесите изменения так, чтобыиз найденного можно было выделитьТОЛЬКО количество и меру веса.2. Напишите аналогичное выражениедля выбора мер расстояния.Задача 3. Выбрать из текста все адресаэлектронной почты.Как обычно, первое, что мы делаем,— это выясняем: из каких символовсостоит адрес? Согласно стандарту,адрес может состоять из двух частей:имени пользователя и имени почтовогоотделения. Имена разделяются в адресезнаком “@”. Так что этот знак будет обязательно.Имена и слева и справа могутсостоять из символов латинского алфавита, цифр,точки, знака тире и подчеркивания. Регистр буквимеет значение.Стандарт допускает использование и ряда другихсимволов, но на нашу работу это повлияет мало.Поэтому наше выражение будет состоять изтрех частей:1. Множества символов — названия ящика. Причемназвание не пустое — минимум один символ изэтого множества должен быть.2. Знака “@”.Рис. 53. Множества символов — названия почтовогоотделения.Множество символов запишем так:[A-Za-z0-9.-_].Поскольку оно встречается минимум один раз,то зададим повтор знаком “+”.В итоге выйдет примерно следующее:[A-Za-z0-9.-_]+@[ A-Za-z0-9.-_]+Для проверки скопируем реальный текст вокно примера и применим выражение. Текстмы взяли из html-кода страницы сервера ново-25май 2013 / ИНФОРМАТИКА
УГЛУБЛЕНКАЗадания для самостоятельной работы1. Напишите регулярное выражение для выборкииз текста дат в формате ДД/ММ/ГГ или ДД/ММ/ГГГГ. В выражении учтите, что в датах не бываетномера дня больше 31 и месяцеввсего 12.2. Вы получили текстовый файлпротокола обращений пользователейк ресурсам среды Интернет, в которомпострочно перечислены атрибутыкаждого обращения через запятую.Порядок полей совпадает, названияполей заданы в первой строке. Подготовьтерегулярное выражение, позволяющееотфильтровать только 1-,4-й и 7-й столбцы и перечисляющеезначения через точку с запятой.3. Выделите с помощью регулярноговыражения все имена собственные изгеографического текста (например, реферата).26май 2013 / ИНФОРМАТИКАРис. 6стей и, применив, увидели примерно вот что —см. рис. 6.Как видим, адреса выделены неправильно.Причина — появились лишние символы-разделители.Откуда они взялись? Проанализируемзапись множества и обнаружим, что добавилилишний диапазон: .-_. Мы имели в виду простосимвол “-”, но он имеет в записи множеств специальныйсмысл. Поэтому перед его упоминаниемставим знак “\”.Теперь результат будет верен, он станет примернотаким, как на первой иллюстрации. Выражениебудет выглядеть так:[A-Za-z0123456789.\-_]+@[ A-Za-z0-9.\-_]+Тем не менее этого недостаточно. Название почтовогоящика не может начинаться с точки и содержатьдве точки подряд. После знака-разделителятоже не может стоять точка.Решим эту задачу так: разобьем последовательностьна группы:[A-Za-z0123456789\-_]+(?:\.[A-Za-z0123456789\-_])*@[A-Za-z0123456789_]+(?:\.[A-Zaz0123456789\-_])+Обратите внимание: в обоих случаях в началеидет группа без точки, а потом некоторое количествогрупп, которые начинаются с точки. Если впервой части таких групп может и не быть, то вовторой части они есть обязательно.Использование регулярныхвыражений при подготовкепрограммТеперь рассмотрим, каким образоммы сможем использовать механизмрегулярных выражений всвоих программах. Стандарт Паскаля не предусматриваетбиблиотек для работы с ними,но в учебной среде нам доступна библиотека,входящая в комплект платформы .Net. Подключимее в модуле Uses и получим возможностьиспользовать объект Regex и необходимый типMatch — совпадение.program RegularExperssionsMatch;uses System.Text.RegularExpressions;vars: String;txt: Text;m: Match;beginAssign(txt, 'k:\demo.txt');Reset(txt);while not Eof(txt) dobeginReadLn(txt, s);foreach m in Regex.Matches(s,'[A-Za-z0123456789\-_]+(?:\.[A-Za-z0123456789\-_])*@[A-Za-z0123456789_]+(?:\.[A-Za-z0123456789\-_])+') doWriteln('Найдено:', m.Value);end;Close(txt);end.Обратите внимание на конструкцию foreach…in… — с ее помощью мы получаем возможностьперебрать все элементы во множестве-коллекции.Эта синтаксическая конструкция отсутству-
ет в классическом языке Паскаль, но есть в расширенном(Extended Pascal, ISO 10206:1990).Приведем пример, в котором по всему текстовомуфайлу заменим квадратные скобки на угловые.Задания для самостоятельной работы1. Напишите программу поиска заданного словав текстовом файле. Считайте, что текст записываетсябез использования переносов.2. Напишите программу для поиска двух идущихподряд заданных слов. Учтите, что между словамиможет быть несколько разделителей — например,два и более пробелов.3. Напишите программу, подсчитывающую количествоупоминаний в текстовом файле семьиИвановых (или любого из ее членов). Считайте, чтофамилия во всей семье одна.Помимо поиска совпадений, регулярное выражениеможно использовать для разделения строкина части. В этом случае регулярное выражение будетиспользоваться для поиска последовательностей-разделителей.В этом примере с помощью этой возможностистроки делятся на слова — то есть последовательностисимволов между последовательностями разделителей.Program RegularExpressionsSplit;uses System.Text.RegularExpressions;vars,s0: String;txt: Text;beginAssign(txt, 'k:\demo.txt');Reset(txt);while not Eof(txt) dobeginReadLn(txt, s);foreach s0 in Regex.Split(s, '[ ,.!?{}()\[\]/*+\-]+') doWriteln(s0);end;Close(txt);end.Задания для самостоятельной работы1. Напишите программу подсчета общего количестваслов в текстовом файле. Считайте, что текстзаписывается без использования переносов, числане считаются словами.2. Напишите программу обработки текстовогофайла с переносами, которая уберет переносы —то есть восстановит разбитые слова и результат сохранитв файл, добавив к имени .new. Учтите, чтознак, обозначающий перенос, может применятьсяи в других случаях.Еще один метод, который нам может понадобиться,— замены. Этому методу нужно будет передатьвторое выражение, которое определит, чтодолжно оказаться на месте найденного фрагмента.Program RegularExperssionsReplace;uses System.Text.RegularExpressions;vars,s0: String;txt: Text;beginAssign(txt, 'k:\demo.txt');Reset(txt);while not Eof(txt) dobeginReadLn(txt, s);s0 := Regex.Replace(s, '\[.+\]', '');Writeln(s0);end;Close(txt);end.Задания для самостоятельной работы1. Вы получили текст, в котором все даты записаныв виде ГГГГ-ММ-ДД (например: 2010-12-31 —31 декабря 2010 года), или ДД-ММ-ГГ, или ДД-ММ-ГГГГ. Напишите программу, которая преобразуетвсе эти даты к привычному нам виду: ДД.ММ.ГГГГ(т.е. 31.12.2010) — и результат сохранит в новыйтекстовый файл.2. Вы получили текст, в котором записаны номерателефонов в разных формах. Примеры изтекста: +7 (495) 123-4567, 123-4567, 1234567,499-1234567. Напишите программу, которая преобразуетвсе эти варианты к общему стандартному:+7 (495) 123-4567 — и результат сохранит в новыйтекстовый файл. По умолчанию (если не указано)предполагаем, что номера российские, код городасоответствует коду вашего города.Частотный анализИдея частотного анализа очень проста: еслиу нас есть набор каких-то элементов (букв, слов,предложений, яблок — чего угодно), то простойспособ оценить этот набор — посчитать, сколько вэтом наборе элементов каждого вида (каждой буквы,слова, размера яблок). Узнав, какую долю (тоесть насколько часто встречается) занимает элемент,мы можем делать какие-то выводы.Анализ частоты символов в текстеПервая группа задач, которую мы будем решать,будет связана с кодировками и алфавитом.Дано: текст на русском языке, в кодировкеWindows-1251, длина заранее не известна, в формефайла.Требуется: составить частотную таблицу упоминаемостисимволов в этом тексте.27май 2013 / ИНФОРМАТИКА
УГЛУБЛЕНКА28май 2013 / ИНФОРМАТИКАРешениеНетрудно увидеть, что основной частью этойзадачи будет посчитать количество упоминанийкаждого символа в тексте. Вспомним определениетаблицы кодировки и особенности конкретной кодировкиWindows-1251. Нам точно известно, чтов ней всего 256 символов, с номерами от 0 до 255включительно.Создадим массив из 256 беззнаковых (не можетбыть отрицательного количества) целых чисел. Будемсчитывать по одному символу и увеличиватьзначение в соответствующей (то есть с номером,равным коду символа) ячейке массива. Единственное,что нам придется сделать, — преобразоватьсимвол в его код.Заготовка программы будет выглядеть примернотак:program frequency;vartxt: Text;c: char;countLetters: array[0..255] of Word;i: Word;beginAssign(txt,'demo.txt');Reset(txt);for i := 0 to 255 docountLetters[i] := 0;while not Eof(txt) dobeginread(txt,c);inc(countLetters[ord(c)]);end;for i := 0 to 255 doWriteLn( i, ' — ',countLetters[i]);Close(txt);end.Найдем какой-нибудь достаточно большой текстовыйфайл, сохраним его под именем demo.txt ипосмотрим, что получится.Проанализировав результаты, мы выясним, что:1. Довольно много символов не относится к языку,а часть — даже не буквы (особенно символы“возврат каретки” и “перевод строки”, “пробел” ит.п.). Очевидно, они не должны влиять на частоту.2. Если объем текста достаточно велик (около3 Мб), появляется довольно большая вероятностьполучить ошибку “Переполнение”.3. Поскольку нам придется считать общее количествосимволов, то переменная для этого точнодолжна допускать большие значения, чем обычныйтип Word.При подготовке программы нам нужно будетввести фильтрацию символов. Самый простой способ,если мы работаем с русским языком, — учитыватьтолько символы расширенного набора — т.е.с кодами больше 255.В итоге программа будет примерно такой:program frequency;vartxt: Text;c: char;countLetters: array[0..255] of LongWord;i: Word;sigma: LongWord;beginAssign(txt,'demo.txt');Reset(txt);for i := 0 to 255 docountLetters[i] := 0;while not Eof(txt) dobeginread(txt,c);if ord(c) > 127 theninc(countLetters[ord(c)]);end;sigma := 0;for i := 0 to 255 dosigma := sigma + countLetters[i];for i := 128 to 255 doWriteLn(chr(i), '(',i, ')', ' — ',(countLetters[i]/sigma):8:7);end.Результат запуска программы для текста 1-го томаромана “Война и мир” приведен в таблице на с. 29.Несколько вопросов и предложений для совершенствованияпрограммы:1. Проанализируйте вывод программы. Можноли сделать результат ее работы более коротким,если ограничиться русским языком?2. Можно ли сократить объем занимаемойпамяти?3. Стоит ли вместо отдельного цикла с подсчетомколичества русских букв добавлять единицу к суммесразу в основном цикле?4. Что еще нужно учесть, чтобы получить настоящуючастотную таблицу — т.е. таблицу, в которойчастота подсчитана именно для буквы, а не печатногосимвола?5. Предложите вариант усовершенствования,который сможет работать с кодировкой Unicode.Очевидно, что частоты встречаемости символовв больших русских текстах хоть немного, но будутразличаться. Но вот порядок символов по частотеупоминаемости будет примерно одинаковым.Задания для самостоятельной работы1. Подсчитайте частоты для большого объематекстов разного вида: для официальных документов,литературных произведений. Совпадают лиони? Сохраняется ли порядок символов по частотевстречаемости?2. Как с помощью частот встречаемости различатьтаблицу кодировок текста: CP866, Windows-1251,KOI-8?
Буква Частота Буква Частотао(238) 0.1123347 В(194) 0.0020581а(224) 0.0822470 А(192) 0.0019786е(229) 0.0789770 П(207) 0.0019214и(232) 0.0653834 К(202) 0.0017662н(237) 0.0635027 О(206) 0.0015796т(242) 0.0557268 Б(193) 0.0015<strong>16</strong>8с(241) 0.0524678 М(204) 0.0011122л(235) 0.0501234 Д(196) 0.0010235р(240) 0.0445219 С(209) 0.0008868в(226) 0.0437774 Р(208) 0.0008591к(234) 0.0346491 Т(210) 0.0008406д(228) 0.0292490 И(200) 0.0008018м(236) 0.0283326 Я(223) 0.00056<strong>16</strong>у(243) 0.0283308 ъ(250) 0.0005247п(239) 0.0236641 Г(195) 0.0004896я(255) 0.0224928 Э(221) 0.0004360г(227) 0.0201539 Ч(215) 0.0003991ь(252) 0.0193780 Е(197) 0.0003399ы(251) 0.0188958 Л(203) 0.0002697з(231) 0.0175231 З(199) 0.0002051б(225) 0.0156794 У(211) 0.0002014ч(247) 0.0131742 Ж(198) 0.0001496й(233) 0.0114783 Ш(2<strong>16</strong>) 0.0001275ж(230) 0.0099319 Ф(212) 0.0001256ш(248) 0.0092742 Х(213) 0.0001127х(245) 0.0083801 Ц(214) 0.0000388ю(254) 0.0064421 Ю(222) 0.0000148ц(246) 0.0039979 Ь(220) 0.0000074щ(249) 0.0027897 Щ(217) 0.0000037э(253) 0.0025735 Й(201) 0.0000018ф(244) 0.0021024 Ъ(218) 0.0000000Н(205) 0.0020913 Ы(219) 0.00000003. Напишите программу преобразования текстамежду разными таблицами кодировки:a) Win1251 KOI-8b) Win1251 CP866c) CP866 KOI-8Анализ частоты упоминаемости словв текстеДано: текст на русском языке, в кодировке Windows-1251,длина заранее не известна, в формефайла.Требуется: составить частотную таблицу упоминаемостислов в этом тексте.РешениеПри решении этой задачи нам нужно учесть несколькоособенностей:• во-первых, мы не знаем, сколько слов в текстебудет;• во-вторых, в отличие от символов слово нужнов тексте выделить, потому что это не единый объект,а набор объектов;• в-третьих, слово может быть написано поразному,в зависимости от того — первое это словов предложении или нет;• слово может быть разделено на части: еслитекст заранее отформатирован устаревшими методами.На самом деле трудностей больше, но решать ихмы будем позже.Выделять слова из текста мы будем с помощьюрегулярного выражения. Чтобы его построить, мывспомним, что такое “слово”. Нас будет интересоватьстрого формальное определение, которое позволитнам выделить слово из потока символов.С этой точки зрения слово — это последовательностьсимволов, взятых из текста, и не являющихсяразделителями.Воспользуемся для создания программы, вопервых,методом деления строки на части порегулярному выражению, а во-вторых, библиотекойработы с коллекциями из .Net для организациисловаря:Program Frequency;uses System.Text.RegularExpressions,System.Collections.Generic;vars,s0: String;txt: Text;tx: System.Collections.Generic.Dictionary;m: Match;begintx:= new System.Collections.Generic.Dictionary;Assign(txt,'demo.txt');Reset(txt);while not Eof(txt) dobeginReadLn(txt,s);foreach s0 in Regex.Split(s, '[,.!?(){}+*\-;:"\[\]\\]+') doif s0 '' thenif tx.ContainsKey(s0) thentx[s0] := tx[s0]+1elsetx.Add(s0,1);end;close(txt);Assign(txt,'k:\frequency.csv');Rewrite(txt);WriteLn( txt,'Word;Count;' );foreach s0 in tx.Keys doWriteLn( txt,s0, ';', tx[s0],';' );Close(txt);end.Запустив эту программу, мы сможем проанализироватьтекстовый файл и получить результатыпримерно в таком виде, как приведено в таблицена с. 30.Изначально результат будет не отсортирован, ноэто сделать несложно.29май 2013 / ИНФОРМАТИКА
УГЛУБЛЕНКААвтор 2 Ага <strong>16</strong>автор 8 агитации 2автора 3 агрегата 1авторе 1 агрегаты 1авторитет 9 агронома 1авторитета 2 Административная 1авторитетами 1 административная 1авторитете 1 административной 1авторитетная 1 административную 2авторитетнее 1 административные 1авторитетной 1 административный 1авторитетную 1 администратор 2авторитетом 1 администратора 1авторитету 3 администрацией 2авторитеты 1 администрации 1авторов 2 администрировании 1авторских 1 администрировать 1авторскую 1авторство 1автору 3авторы 3Авторы 1На что нам придется обратить внимание, преждечем мы сможем воспользоваться результатами дляанализа? На несколько особенностей:1. Учитывается регистр, а значит, “Административная”и “административная” — это два разных слова.Очевидно, что с точки зрения извлечения смыслаэто не так.2. Самые частые слова не несут никакого значениядля анализа текста. Сложно предположить, чтонам важна частота слова “Ага” или “И”.3. Мы не учитываем формы слов, поэтому, например,видим 6 вариантов одного и того же посмыслу слова.Первая проблема решается довольно просто:нужно перед разбиением преобразовать всю строкук единому регистру — верхнему или нижнему.Метод, который это реализует, — метод самой строкиtoLower (или toUpper — логически разницыникакой нет). Добавим в программу:s := s.ToLower;Куда это поместить в программе — надеемся, читательв состоянии определить сам.Вторая проблема решается несколько труднее:нельзя просто выкинуть слово, потому что оно частовстречается в этом конкретном тексте. Чтобыпонять, какие слова не характеризуют конкретныйтекст, нам нужно проанализировать большоеколичество эталонных текстов — выделить самыечастые слова. К счастью, за нас это уже сделано:воспользуемся статистической информацией ссайта корпуса русского языка: раздел “Частоты”,самые частые 100 словоформ будут нашим стоплистом:http://ruscorpora.ru/1grams.top.html.Для реализации нужно будет сохранить их вфайл, а в программе предусмотреть отдельную коллекциюстоп-слов, в которую загрузить слова изфайла и проверять перед добавлением — есть тамслово или нет.Реализацию этого подхода авторы предоставляютчитателям для самостоятельного упражнения.Третья проблема существенно сложнее: дляее решения нам придется как минимум преобразоватьслова к их исходной, базовой форме, т.е.выполнить так называемую лемматизацию. Длярусского языка это непростая задача, которуюможно решить использованием специализированнойбиблиотеки. Как было сказано вначале, врамках сокращенного газетного варианта делатьэто было бы очень затруднительно — и для авторов,и для читателей.Автоматизированная и автоматическая обработкатекста, извлечение из текста данных,анализ больших массивов информации, поиск исмежные с ним задачи — современное и быстроразвивающееся направление. Его достижениямимы пользуемся постоянно — когда обращаемсяк любым документальным и поисковым системам,работаем со сложными сайтами. Авторыполагают, что ознакомление с базовыми приемамии средствами такой работы — необходимыйэлемент подготовки в области информационныхтехнологий.30май 2013 / ИНФОРМАТИКА
РЕКЛАМАИнтерактивная доскаMimioBoardПростота и удобство интерактивных технологий Mimio.Лучший способ учить и лучший способ учиться!Новое интерактивное устройство,сочетающее все преимуществаинтерактивной приставки MimioTeachи высококлассной маркерной доски.Поставляется полностью готовым к работе,поддерживает беспроводную связь и легкоинтегрируется с другим оборудованиемMimioClassroom.Новая интерактивная доска MimioBoard имеет всефункции и интуитивно понятный интерфейс интерактивнойприставки MimioTeach, пользующейся отличнойрепутацией, являясь при этом надежным стационарным решением. Система способна работать какв проводном, так и в беспроводном режиме, что устраняет необходимость использовать кабели,Bluetooth или выполнять специальные настройки оборудования. Износостойкая магнитная поверхностьceramicsteel легко выдерживает эксплуатацию в сложных условиях класса. Возможность сухого стираниянадписей позволяет использовать MimioBoard как обычную маркерную доску.Комплект поставки включает программное обеспечение MimioStudio (для Windows, MacOS и Linux).Это полнофункциональное решение для интерактивного обучения обеспечивает легкую интеграциюдоски с другими продуктами MimioClassroom и содержит множество удобных инструментов, в том числеБлокнот, Галерею и мастер ActivityWizard, для создания увлекательных интерактивных уроков.31Продажа оборудования, консультации и обучение:http://www.mimioclass.ru8 (800) 5555-33-0Звонок по России бесплатныйООО «Рене» — генеральный дистрибьютор Mimio в Россиимай 2013 / ИНФОРМАТИКА
СЕМИНАРКрасота этойкартинызавораживает.Есть в нейчто-то загадочное,непостижимое и дажекосмическое. Это одиниз аттракторов,построенныйна компьютере.Аттракторы —это множества,возникающие втеории динамическихсистем. Разрабатываясложныематематическиеструктуры, ученыесоздают уникальныемодели, пытаясьответитьна многочисленныевопросы, поставленныеприродой32май 2013 / ИНФОРМАТИКАА.И. Азевич,к. п. н.,доцент кафедрыинформатизацииобразования МГПУ,МоскваЭффектпорхающейбабочкиЧтобы понять, как возникли эти таинственныерисунки, начнем с небольшогоэкскурса в историю. Наверняка многиеслышали о дифференциальных уравнениях.Впервые они встречаются в работахвеликих творцов новой математикиИ.Ньютона и Г.Лейбница. Изучение этихвопросов было неслучайным, ведь благодарядифференциальным уравнениямможно описать многие природные явления.А к этому люди стремились испоконвеков.Очень часто физические законы устанавливаютсоотношения между некоторымивеличинами и скоростями их изменения.А они, в свою очередь, входятв равенства, содержащие как функции,так и их производные. Именно в ходеизучения реальных процессов возникаетнеобходимость в дифференциальныхуравнениях.Рассмотрим конкретную задачу, вкоторой надо определить закон изменениянекоторой величины. Пустькакая-то металлическая пластина, нагретаядо температуры y 0, в моментвремени t = 0 погружается в большойсосуд, наполненный воздухом нулевойтемпературы. С течением времени пластинаначинает охлаждаться, а ее температурастановится функцией времениy(t). По закону охлажденияИ.Ньютона, скорость изменения температурыпластины, т.е. производная dydt ,пропорциональна разности температуртела и окружающей среды. А таккак по условию задачи температураокружающей среды равна нулю, тоdy ky. (1)dtЗдесь k — положительный коэффициент,характеризующий свойстваматериала, из которого изготовленотело (пластина). Знак “минус” в формулепоказывает, что температураубывает.Полученное уравнение — математическаямодель процесса охлаждениятела, помещенного в сосуд.Решить уравнение — значит найтивсе такие функции y(t), которые обращаютего в тождество. Для этого проинтегрируемобе части равенства (1).
Получим общее решение дифференциальногоуравнения:y = Ce –kt . (2)В процессе охлаждения пластины нас интересуеттолько то решение, которое соответствует моментувремени t = 0. Подставив в формулу (2) t = 0 иy = y 0, получим С = y 0. Тогда частное решение дифференциальногоуравнения примет вид: y(t) = y 0e –kt .Получается, что изменение температуры пластиныпроисходит по потенциальному закону. На рис. 1изображен график, показывающий, что с течениемвремени температура пластины понижается и стремитсяк температуре окружающей среды. В данномслучае пластину окружает воздух, температура которогоравна 0.ряды чисел. Они сообщали, что господствующее вданный момент западное направление ветра скоросменится на северное, потом на южное и вновь насеверное. Оцифрованные циклоны медленно кружилисьпо воображаемому глобусу на экране компьютераЭ.Лоренца. Узнав о любопытном изобретении,преподаватели и старшекурсники стали заключатьмежду собой пари, пытаясь угадать, какойже будет виртуальная погода в каждый следующиймомент времени.Э.Лоренц применил на практике законыИ.Ньютона. Творец машинных моделей верил, чтоклассические законы движения ведут его к болеесложным математическим структурам. Постигниих — и ты поймешь не только капризы погоды, нои Вселенную! В этом заключалась философия компьютерногомоделирования, которой так увлексяматематик и метеоролог.Э.Лоренц написал компьютерную программудля решения системы дифференциальных уравненийРис. 1Мы привели простой пример, связанный с решениемдифференциального уравнения. Вернемся крисунку аттрактора и рассмотрим его подробнее.Что же такое аттрактор? Аттрактор (от англ.to attract — притягивать) — это особое множество,возникающее в теории динамических систем.Но что понимают под динамической системой?Обычно ее представляют как некоторое геометрическоепространство, на котором задано правилоповедения точек во времени. Причем время можетбыть дискретным (прерывным) или непрерывным.В последнем случае динамические системы задаютсясистемой дифференциальных уравнений, ане одним уравнением, как в предыдущем примере.Ясно, что при построении множества — решенийсистемы — получится более сложная и интереснаякартина.Именно такую картину впервые нарисовал американскийметеоролог и математик Эдвард Лоренц(1917–2008). Пытливый ученый наблюдал из окнасвоей научной лаборатории утренний туман и низкиеоблака, пришедшие с Атлантики. Восхищаяськрасотой природных явлений, он пытался построитьих компьютерные модели.Вычислительная машина, сконструированнаяЭ.Лоренцом, была по современным понятиямгромоздкой и примитивной. Это нагромождениепроводов и вакуумных ламп занимало половинунебольшого научного кабинета. Машина была раздражающешумной и часто ломалась. Устройствоне обладало ни быстродействием, ни объемом памяти,необходимым для построения модели атмосферыЗемли.И все же в 1960 г. Э.Лоренц создал мини-модельпогоды, которая привела в восторг научный мир.Каждую минуту компьютер выдавал стройныеdx s( xy)dtdy rx y xz dtdz bzxy. dtПараметры, входящие в систему, принималиконкретные значения: s = –10, r = 28, b= 8 3 .Несмотря на кажущуюся простоту, уравнениявыражали чрезвычайно сложную динамическуюструктуру. Множество решений системы в трехмерномпространстве представляет собой аттрактор,названный в честь открывшего его ученого.Аттрактор моделирует воздушные потоки в атмосфере.Непосвященным кажется, что эти движениявообще не подчиняются никаким математическимзаконам.Как позже писал Э.Лоренц в одном американскомметеорологическом журнале, он вычислялзначения решения системы дифференциальныхуравнений в течение длительного времени.Однажды его крайне удивил результат решения,полученный в середине интервала счета. Пришлосьповторить вычисления с этого момента. Результатыповторного счета, очевидно, совпали бы с результатамипервоначального счета, если бы начальныезначения для повторного счета в точности былиравны полученным ранее значениям для этого моментавремени. Лоренц слегка изменил эти значения,уменьшив число верных десятичных знаков.Ошибки, введенные таким образом, были крайненевелики.Но самое неожиданное было впереди. Вновь просчитанноерешение некоторое время хорошо согласовывалосьсо старым. Однако по мере счета рас-33май 2013 / ИНФОРМАТИКА
СЕМИНАРхождение возрастало, и постепенностало ясно, что новое решение вовсене напоминает старое.Э.Лоренц вновь проводил скрупулезныевычисления (вероятно,не доверяя компьютеру). Делалон это до тех пор, пока не осозналважность эксперимента. То, чтонаблюдал ученый, теперь называетсясущественной зависимостьюот начальных условий — основнойчертой, присущей хаотическойдинамике. Именно исследованиесложных процессов, происходящихв атмосфере, и привело к понятиюаттрактора. Аттрактор — это графическаямодель динамическогохаоса. В скоплении воздушных потоков, которые,как казалось, не поддаются научному описанию,метеоролог-исследователь открыл динамический(изменяющийся) порядок.Зависимость, которую установил Э.Лоренц,называют “эффектом бабочки”. Такое название,возможно, объясняется тем, что, несмотря насовершенные модели и колоссальные расчеты,невозможно сделать долгосрочные прогнозыпогоды. Сам Э.Лоренц разъяснил это в статье“Предсказуемость: может ли взмах крылышек бабочкив Бразилии привести к образованию торнадов Техасе?”, опубликованной в 1979 году.Его аттрактор — это графическое представлениерешений системы дифференциальных уравнений— тоже похож на бабочку (рис. 2). Сколько жетруда надо было приложить ученому, чтобы нарисоватьэту удивительную картину?Говоря об “эффекте бабочки”, Э.Лоренц подчеркивал,что теория хаоса связана с изучениемнелинейных систем, для которых скорость измененияне является постоянной. Они характеризуютсянепредсказуемостью. И, следовательно, ихизучение — это кропотливый и длительныйпроцесс. Прогноз погоды ирост численности населения планеты— примеры нелинейных систем,графические модели которых строятсовременные компьютеры. ТолькоРис. 3им под силу сложные вычислительные задачи,связанные с изучением природы, общества, человека.Чтобы ощутить себя в роли исследователя, можнои самому подготовить бабочку-аттрактор. Дляэтого надо перейти по ссылке http://parfenov-yuriy.narod.ru/attractor.swf. В нужных окнах ввести параметры:начальные и текущие координаты и время.Затем нажать на кнопку “Пуск” и внимательно следитьза компьютером, который прямо на глазах построитзамысловатую картину (рис. 3). Чтобы остановитьпроцесс, надо кликнуть по надписи “Пауза”.И конечно же полюбоваться аттрактором, которыйнарисовала умная машина.Рассматривая картину, нетрудно заметить,что каждая точка п ространства с течением времениописывает очень сложную траекторию.Аттрактор — это множество, которое притягиваеттраектории движения точек. Слово “притягивает”означает, что с течением времени траектория всеближе и ближе подходит к аттрактору. По этомупринципу построены аттракторы, изображенныена рис. 4а, б.34май 2013 / ИНФОРМАТИКАРис. 2Рис. 4аРис. 4б
Если траекторию немного возмутить,то есть “толкнуть” точку динамическойсистемы в сторону, то траекториявсе равно будет притягиватьсяк множеству (рис. 5а, б).Кстати, есть аттракторы, в которыхтраектории точек, наоборот, отталкиваются(рис. 6а, б). Они называютсярепеллерами (от англ. to repel — отталкивать).Эти многочисленные и самые разнообразные“крученые” фигуры строятмощные компьютеры. Каждомуаттрактору, помимо названия, соответствуетсвоя система дифференциальныхуравнений, определяющаядинамическую систему. При построенииуказываются значения числовыхРис. 5апараметров системы, для которыхпроводились расчеты. А визуализациякомпьютерных шедевров выполняетсяс помощью специальных плагиновдля программного обеспечения4D Cinema.Сейчас нам кажется, что компьютерныерисунки — это результатбыстрых манипуляций, которые можетосвоить любой пользователь.Например, аттрактор, изображенныйна рис. 7. Он напоминает маску совыили крылья бабочки. Этот рисунокстал эмблемой первых исследователейхаоса. Они пытались раскрытьтонкую структуру, таящуюся в беспорядочномпотоке информации, ежедневнооткрывающейся человеку.Многие годы ученые ничего неРис. 6азнали об аттракторах. Областизнания, которыми они занимались, были изолированы друг отдруга. Биологам было не до книг по математике. Физикам нехватало времени штудировать метеорологические журналы.Казалось, они были им ни к чему. На первых порах немногиеоценили открытие Э.Лоренца. И еще десяток лет физики, астрономыи биологи, пытавшиеся объяснить природные явления, открывалито, что уже было открыто. Им и в голову не приходилоискать описания сложных динамических систем на страницах“Метеорологического журнала”.Источники сети ИнтернетРис. 5бРис. 6бРис. 7351. http://www.adamaz.ru/another/972-babochka-lorenca-pod-zvezdojj-vifleema.html.2. http://ale.io.ua/album462682_1.3. http://www.fund-intent.ru/Document/Show/3642.4. http://commons.wikimedia.org/wiki/File:Atractor_Poisson_Saturne.jpg?uselang=ru.5. http://www.sernam.ru/book_e_math.php?id=40.6. http://www.arrays.ru/math/id/15.7. http://www.runyweb.com/articles/leisure/interesting-things/gallery-of-the-most-strange-attractors.html.8. http://www.ideationtriz.com/ZZLab/Nonlinear_phenomenon/Srange_attractor.htm.9. http://www.polybook.ru/comma/4.8.pdf.10. https://ru.wikipedia.org/wiki/%D0%90%D1%82%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BE%D1%80.май 2013 / ИНФОРМАТИКА
СЕМИНАР36май 2013 / ИНФОРМАТИКАИ.А. Сукин,г. Переславль-ЗалесскийАндроидыи электрическиеовцыВ настоящее время все большую ибольшую роль в нашей жизни начинаютиграть мобильные устройства, такие,как смартфоны, планшеты, смартбукии другие “игрушки”, любезно предоставленныесовременной технологией.Разработка программ для подобныхустройств долгое время оставалась достаточносложным занятием, несмотряна существование некоего стандарта ввиде J2ME. Каждое мобильное устройствообладало собственными, поройуникальными, профилями оборудования,и разработчикам приходилосьпроводить продолжительное время, отлаживаяи оптимизируя свои программыпод каждый телефон, который онихотели поддерживать в собственныхприложениях.Ситуация несколько измениласьс появлением “умных телефонов” —смартфонов и одной из первых болееменееунифицированных операционныхсистем для них — Symbian. Разработчикимобильных приложений в тотмомент испытали вздох облегчения,поскольку работа с “внутренностями”аппаратов существенно упростилась,а интерфейсы стали более стандартизованными.Разумеется, с тех пор прошлоуже немало времени, и на рынкепоявилось большое количество другихоперационных систем для мобильныхустройств: Android, iOS, Bada, Tizen,Windows Phone и прочие. Одной изнаиболее многообещающих и прогрессивныхвыглядит ОС Android (об аргументахв пользу этого — чуть позже) отGoogle, с достойным соперником в видеiOS для iPhone и iPad от Apple.Зачем писать мобильныеприложения?Достаточно разумный вопрос, которыйможет задать себе каждый читающийэтот обзор: “А зачем мне вообщеписать приложения для мобильныхустройств?” (в предположении, что читательуже знаком с программированиемдля тех же персональных компьютеров).Что могут делать мобильные приложенияиз того, что я не мог бы сделать насвоей настольной машине?
Первым и самым важным факторомздесь является, конечно, коммуникативнаямобильность. Различные программыдля мгновенного обмена сообщениями,документами, файлами прямо-такипросятся быть реализованными на мобильныхустройствах, чтобы у человекавсегда был доступ к продвинутымсредствам связи с коллегами, друзьями,родственниками. Разумеется, значительноеколичество подобных программуже написаны, однако не всем можетнравиться конкретная реализация илиможет существовать какой-нибудь внутрикорпоративныйпротокол связи, чтопотребует самостоятельной реализациисоответствующего приложения.Второй важной сферой примененияявляется область развлечений, вшироком смысле, от серьезных — таких,как фотография и видеозапись(существуют даже программы для нелинейноговидеомонтажа на мобильныхустройствах!), до куда менее серьезных— видеоигр, которые с появлениемсенсорных и мультитач-дисплеевприобрели новый особенныйколорит и требуют соответствующихизменений в дизайне.Конечно, создание таких приложений,как офисные текстовые и графическиепроцессоры для мобильныхустройств, несколько бессмысленно,в силу неудобства управления (темне менее попытки есть). Здесь значительныйинтерес представляют приложениядля создания и управлениязаметками, в особенности те, которыеподдерживают рукописный ввод с распознаваниемтекста. В этой областипока еще есть неограниченный простордля разработки.Кроме всего этого, серьезным преимуществоммногих мобильныхустройств является возможность работыс геопозиционированием, определениемсобственного положения черезсистемы GPS или Глонасс и отображениемэтого положения и окружающейобстановки на одной из систем работыс картами.В целом можно сказать, что разработкамобильных приложений представляетсобой весьма перспективнуюсферу, ставящую перед программистаминекоторые до сих пор не возникавшиепроблемы как дизайна, так и кодирования.В конце концов, это простоинтересно и увлекательно.Веб-страница со ссылками на загрузку ADTПустое окно Eclipse из ADTДиалог создания нового проекта37май 2013 / ИНФОРМАТИКА
СЕМИНАР38май 2013 / ИНФОРМАТИКАЧто такое Android?ОС Android представляет собой операционнуюсистему от компании Google (изначально Androidразрабатывала компания Android, Inc.), долгоевремя существовавшую лишь на уровне слухови выпущенную в свет лишь в 2008 году. Это побольшей части открытая и свободная (исходныйкод опубликован под Apache License) система,основанная на ядре Linux и собственной реализацииязыка программирования Java — Dalvik, однакобольшинство производителей устройств дополнительновключает в систему закрытые проприетарныемодули для поддержки собственногооборудования. Сегодня Android можно встретитьна большом спектре устройств: от мобильных телефоновдо планшетов, электронных книг и даженоутбуков.Многие архитектурные решения и возможностиобеспечили Android быстрый рост числа пользователейи одну из лидирующих позиций на рынке.Одной из таких возможностей была, в частности,качественная и унифицированная графика на основеOpenGL.Более подробно на некоторых возможностях Androidя остановлюсь позднее.Web-приложения или мобильныеприложения?Еще одним значительным веянием современнойтехнологии стали web-приложения,работающие непосредственно в браузере и нетребующие какой-либо поддержки со стороныоперационной системы. Многие разработчики,в том числе и мобильных программ, избралидля себя этот подход. В чем его преимущества?Во-первых, браузеры есть практически везде,практически на любом устройстве: от самыхпримитивных мобильных телефонов до персональныхкомпьютеров и мейнфреймов. Вовторых,программирование web-приложенийосуществляется безотносительно какой-либоопределенной аппаратной платформы — браузерпредоставляет значительную степень кроссплатформенности,которая ограничиваетсятолько некоторой несовместимостью различныхбраузерных движков (количество основныхиз них в последнее время сократилось дотрех: WebKit — Chrome, Opera, Safari, Gecko —Firefox, Trident — Internet Explorer). В-третьих,для web-приложения отсутствует понятие “обновления”— программа обновляется авторомна собственном сервере, что никак не затрагиваетконечных пользователей. И, наконец, чтотакже немаловажно, существует большое количествозрелых и устоявшихся технологий webпрограммирования:PHP, Perl, Python/Django,Ruby/Rails и другие, с обширной литературойпо большинству вопросов и огромным количествомстандартных методов решения типовыхпрограммистских задач.Казалось бы, с web-программированием всезамечательно, и мы должны избрать его в качествеединственного приемлемого вариантадля разработки наших мобильных приложений.Но у этого подхода есть существенные минусы,которые сильно ограничивают нашу сферу. Вопервых,и в главных, web-приложения не имеютникакого доступа к нижележащей операционнойсистеме, будь то доступ к файлам или многимустройствам (за исключением, пожалуй, webкамеры).Такой доступ существует только в Javaапплетахили приложениях на ActiveX, Flash,Silverlight, при этом теряется значительная долякроссплатформенности, и, кроме этого, такиеобходные пути считаются дурным тоном. Вторымсерьезным недостатком является слишком ограниченныйнабор графических компонентов длясоздания интерфейсов пользователя без какойлибовозможности серьезного комбинированиякомпонентов и создания собственных виджетов;отсутствует прямая отрисовка (частично эта ситуацияисправлена с появлением HTML5 Canvasи WebGL). Способ решения здесь такой же, каки в предыдущем случае, то есть неприемлемыйдля нас. В качестве более мелких, но довольноназойливых недостатков можно назвать изначальнуюориентированность web-технологий наустройства с большим дисплеем и мышью, а нена сенсорные и небольшие экраны, а также несовершенность,как с точки зрения оптимальнойреализации, так и с позиции безопасности, протоколаHTTP.Мобильные приложения, написанные под конкретнуюоперационную систему, лишены вышеперечисленныхнедостатков, они, как правило, поддерживаютбольшое число графических виджетовс возможностью их комбинирования и созданияновых, пользовательских, имеют доступ к прямойотрисовке через OpenGL, доступ к файловой системе,базам данных, устройствам вроде микрофона,акселерометра, сканера отпечатков пальцев, могутсовершать телефонные вызовы и отправлятьсообщения. Виджеты при этом оптимизированыдля удобства использования на экранах мобильныхустройств, а для коммуникации программистволен использовать любые протоколы, какие емувздумается. Технологии разработки мобильныхприложений, такие, как Java (Android) и Objective C(iOS), тоже имеют за собой большую базу.К несомненным минусам чисто мобильныхприложений следует отнести низкую кроссплатформенность,к примеру, вы не сможете запуститьприложение для Android на iPhone, и необходимостьнепосредственного участия пользователяв процессе обновления программногообеспечения.
Резюмируя вышесказанное,можно сделать вывод, что webприложенияпревосходно подходятдля решения задач, не требующихобращения к файлам и устройствам,а также имеющих простой интерфейс,то есть типичных программвроде web-интерфейсов к информационнымсистемам и некоторыхпростейших развлекательных приложений,например, игр. Для всехостальных проблем разумнее писатьприложения “в железе”.Почему Android, а не iOS?Если рассматривать статистикупродаж мобильных устройств, в особенностителефонов, пока что лидирующиепозиции занимает продукцияфирмы Apple — iPhone и iPad.Стоит ли при написании мобильныхприложений ориентироваться наних и какие здесь есть преимуществау Android? Проведем небольшоесравнение.Начнем с простых вещей, актуальныхне только для разработчиков:способа загрузки приложенийна устройство. Для iPhone и iPadсуществует только один легальныйспособ сделать это — послатьвашу программу в Apple App Storeи дождаться возможного (но не гарантированного)ее одобрения состороны Apple. К сожалению, этонеобходимо проделывать даже свашими личными приложениями,вроде маленьких утилит. Другойспособ — сделать так называемый“jailbreak” вашего устройства, что,однако, запрещено законодательствоммногих стран. Чем здесьотвечает Android? Во-первых ив главных, вы можете загрузитьвашу программу непосредственнона телефон через USB-кабель, что,признайтесь, действительно оченьудобно. Во-вторых, несмотря на точто существует “стандартный” магазинприложений Google App Store,есть также несколько независимыхот него, и в том числе неограниченывозможности собственного созданиятаких порталов.Обратимся теперь к техническойстороне вопроса, а именно к языкам,средам и инструментам программирования.Программирование дляНачальный диалог с параметрами нового проекта для AndroidCвежесозданный проект с открытым визуальным редактором“главной активности”Java-код логики “главной активности”39май 2013 / ИНФОРМАТИКА
СЕМИНАР40май 2013 / ИНФОРМАТИКАiOS осуществляется на языке Objective C, которыйпривычен только для тех, кто уже имеет опыт разработкидля MacOS. При этом разумеется, что всяразработка производится только на Mac’ах в средеXcode. Программировать для Android же можнопод всеми основными OS, на языке Java, которыйв настоящее время является одним из самыхпопулярных в корпоративном секторе, в средахNetbeans или Eclipse.Обобщив, можно сказать, что для разработкиличных, внутрикорпоративных или открытых программAndroid подходит как нельзя лучше. Программированиепод iOS же имеет смысл, если выхотите продавать ваше приложение (однако динамикарынка в настоящее время показывает ростдоли устройств на Android).Что нужно для программирования подAndroid?Для того чтобы разрабатывать собственныеприложения для платформы Android, в первуюочередь необходимо знать язык программированияJava. Дальше в тексте я буду предполагать,что читатель знает его хотя бы на начальномуровне и может читать простейшие программына нем.Во-вторых, как я уже говорил выше, потребуетсясреда разработки, такая, как Eclipse или Netbeans,а также Android SDK — официальный набор разработчика.Я буду использовать стандартный SDK,предлагаемый Google, и который можно скачать ссайта http://developer.android.com/sdk. В состав этогонабора по умолчанию входит среда Eclipse. Разумеется,некоторый опыт работы с ней тоже будетполезным.Установка необходимых компонентовДля того чтобы начать программировать подAndroid, вам необходимо скачать Android SDKдля вашей процессорной архитектуры и операционнойсистемы с веб-страницы http://developer.android.com/sdk. Как я уже говорил выше, однойиз основных частей этого комплекта являетсясреда разработки Eclipse. Конечно, для любителейкомандной строки существуют все необходимыеутилиты, однако для простоты я буду пользоватьсяIDE.Начальная настройка в данном случае предельнопроста: просто распакуйте скачанный архив сADT (Android Development Tools) в любое удобноевам место. Назовем это место $ADT_HOME. В директории$ADT_HOME/eclipse будет находитьсяисполняемый файл Eclipse, являющийся для нас основным.Теперь необходимо будет создать виртуальноеAndroid-устройство, если вы не хотите каждую новуютестовую версию своей программы загружатьна реальный аппарат. Чтобы сделать это, нужнозапустить Eclipse из ADT, зайти в меню Window →Android Virtual Device Manager и в поя вившемсяокне нажать кнопку New. После этого появитсядовольно большой и подробный диалог с выборомхарактеристик создаваемого устройства. Насв данный момент будут интересовать лишь триполя: AVD Name, Device и Target. Текстовое полеAVD Name содержит имя создаваемого виртуальногоустройства, например, “test_device”. Выпадающийсписок Device позволяет выбрать одиниз предустановленных наборов настроек, соответствующихреальным устройствам. При разработкес оптимизацией под конкретную модельлучше выбрать что-нибудь похожее, в данныйже момент можно выбрать первую попавшую сяконфигурацию. Пусть это будет “Nexus 7”. Выпадающийсписок Target используется для выборапрограммной платформы, и на момент написаниястатьи в нем присутствует только один вариант— Android 4.2.2 с 17-й версией API. Послеустановки всех необходимых параметров необходимонажать кнопку Ok для завершения созданиявиртуального устройства.Ваше первое приложениеБудем предполагать, что читатель установили настроил ADT и запустил входящую в его комплектсреду Eclipse. Для создания проекта Androidприложениянеобходимо нажать на иконку New впанели инструментов (можно, конечно, и воспользоватьсясоответствующим пунктом меню). В появившемсяпосле этого диалоге, в папке Androidнужно выбрать элемент Android Application Projectи нажать Next.Открывающийся после этого диалог позволяетвыбрать имя вашей программы, название проектаи название пакета, в котором будет располагатьсяисходный код. Выпадающие списки, расположенныениже, служат для выбора минимальных версийплатформы и SDK, необходимых для запуска и компиляциипрограммы, а также ее графической темы.Наберем в качестве имени приложения “Hello”(имя проекта при этом автоматически станет такимже), а в качестве названия пакета — org.hello.Hello; выпадающие списки оставим нетронутыми;после этого нажмем Next.Все следующие диалоги пока что можно безболезненнопропустить, нажимая Next до тех пор,пока не появится возможность нажать кнопкуFinish, после чего проект будет создан и открыт вEclipse. Слева в виде дерева будет располагатьсяпривычное для большинства IDE дерева проекта, ав центре — визуальный редактор, в котором можнопоместить на некоторой “форме” компонентыпользовательского интерфейса. Пока что приложениесодержит одну-единственную текстовую строку“Hello world!”.
Для запуска приложения (компиляцияпо умолчанию происходит автоматически)необходимо щелкнуть настрелочку рядом с кнопкой Run в панелиинструментов и выбрать пункт, соответствующийвашей программе (в нашемслучае Hello). После этого приложениебудет загружено на эмулятор (виртуальноеустройство) и запущено на нем.Кроме запуска на эмуляторе, приложениеможно запустить на реальномустройстве. Для этого нужно, установивнеобходимые драйверы (процессможет отличаться для каждогоустройства), присоединить устройствок компьютеру с помощью USBкабеляи включить в настройках “Отладкупо USB”. В версиях Android 3.2и раньше необходимый флажок находитсяв меню Настройки → Приложения→ Разработка, в Android 4.0–4.1 вменю Настройки → Опции разработчика.В самых новых версиях Android,начиная с 4.2, необходимо совершитьдополнительные действия для включенияотладки по USB. Точный способвключения этой возможности дляконкретного устройства должен бытьописан в руководстве по его эксплуатации.Теперь при попытке запускапрограммы способом, описаннымчуть ранее, появится диалог, позволяющийвыбрать либо реальное, либовиртуальное устройство.Редактор менюРедактор главного манифестаОсновные принципыпрограммной среды AndroidКак я уже говорил ранее, приложениядля Android представляют собойпрограммы на языке Java. Эти программыупаковываются вместе со всемиданными и ресурсами в один apkфайл,который и является главнымфайлом приложения.На каждом устройстве Androidприложениесуществует в собственнойпрограммной среде, для обеспечениябезопасности. Основные принципыздесь таковы:• ОС Android — это, в своей основе,многопользовательская операционнаясистема, основанная на Linux, при этомдля каждого приложения создается отдельныйпользователь;• Система устанавливает такие правана доступ к файлам приложения, чтотолько оно само может получить к нимдоступ;Редактор строковых ресурсовДиалог создания нового виртуального устройства41май 2013 / ИНФОРМАТИКА
СЕМИНАР42май 2013 / ИНФОРМАТИКА• Каждая программа запускается в своей собственнойвиртуальной машине, таким образом,программный код одного приложения не имеетпредставления о коде другого;• Разумеется, каждое приложение запускается врамках своего собственного процесса ОС Linux, чтотакже обеспечивает дополнительную безопасность.Подобный подход называется принципом наименьшихпривилегий, то есть приложение обладаетминимально возможными правами, необходимымидля запуска и работы.Существуют, однако, способы получения дополнительныхполномочий для программы:• Два приложения могут сосуществовать под однимидентификатором пользователя, тем самымимея доступ к файлам друг друга. Можно такжезапустить программы в рамках одного процесса иодной виртуальной машины (однако для этого онидолжны быть подписаны одним и тем же сертификатомбезопасности);• Приложение может запросить доступ к дополнительнымресурсам, таким, как список контактов,отправка сообщений, камера, внешняя карта памятии т.п. Разрешение на такой доступ дает пользовательна этапе установки приложения.Компоненты приложенийПриложения для Android строятся из так называемых“компонентов”, которые являются средствамивзаимодействия между программой и системой.Всего существует четыре различных видакомпонентов:• Активность (Activity) представляет собой попроступользовательский интерфейс. Данный компонентможно воспринимать как аналог “формы” втаких средах, как Delphi. Приложение может иметьнесколько активностей, при этом активность, отображаемаяпервой, считается главной. Более того,приложение может отображать активности другихприложений, что для конечного пользователя выглядитгладко, то есть так, будто вся работа происходитв рамках одной программы. С этой точкизрения активность можно рассматривать как некоеподобие веб-страницы.• Сервис — это компонент, работающий в фоновомрежиме и обеспечивающий выполнениепродолжительных задач, не требующих прямоговмешательства пользователя. К примеру, сервисможет проигрывать музыку или передавать данныепо сети.• Контент-провайдер (Content Provider) служитдля организации доступа к данным, которыедолжны быть общими для нескольких приложений,таким, как файлы или базы данных. Яркимпримером контент-провайдера является списокконтактов.• Broadcast Receiver используется для реагированияна общесистемные события и уведомления,такие, как сигнал о выключении экрана, уровне зарядабатареи, входящем сообщении, съемке фотографии.Все компоненты могут быть глубоко связаныдруг с другом с помощью программной логики.Каждый компонент перед использованием долженбыть активирован. Происходит это с помощьюпосылки специального сообщения-намерения.С помощью такого сообщения можно активироватьпрактически любой компонент любого приложенияв нужное время, что фактически означает,что приложения не имеют единой точки входа(такой, как функция main()). Это обеспечивает достаточнуюгибкость работы вкупе с высокой безопасностьюи степенью разделения ресурсов. Таккак одна программа не имеет непосредственногодоступа к компонентам другой, такие действия,как запуск активности одного приложения издругого, реализуются путем сообщения системе освоем намерении совершить это.Файл манифестаОдной из основных составляющих частей любогоAndroid-приложения является файл Android-Manifest.xml, содержащий всю основную информациюо программе. В частности, в нем описываются:• желаемые привилегии приложения и доступ кдополнительным устройствам и хранилищам данных;• минимальная версия API, необходимая для запускаи работы приложения;• декларации используемых программных и аппаратныхвозможностей;• дополнительные используемые библиотеки, такие,например, как Google Maps API;• объявления компонентов, их возможностей итребований (например, минимально необходимогоразрешения экрана для активности).В среде Eclipse файл AndroidManifest.xml можноредактировать не только в виде XML-текста, но ис помощью более удобных диалогов, в чем можноубедиться, дважды кликнув на этом файле в деревепроекта.РесурсыКонечно, редко какое приложение состоитисключительно из программного кода, большаячасть полезных программ имеют в своемсоставе файлы с данными. Такие файлы в контекстеAndroid именуются ресурсами. Для каждогоресурса Android SDK создает некоторыйидентификатор, который потом можно использоватьдля обращения к ресурсу в коде. К примеру,для файла image.png, лежащего в директорииres/drawable, будет создан идентификатор“R.drawable.image”.
Важной особенностью ресурсов в Android являетсявозможность использования в рамках одногоприложения разных ресурсов на разных устройствахили разных конфигурациях оборудования(например, загрузка других изображений при измененииориентации экрана с портретной на альбомную).Поддержка этого обеспечивается с помощьюквалификаторов ресурсов. Здесь я не будукасаться этой темы подробно.Разбор нашего первого приложенияТеперь, получив представление об основныхпринципах программного окружения Android,можно заняться непосредственным разбором коданашего приложения Hello.Обратимся к дереву проекта. Первым каталогомв этом дереве является “src”, где хранятся все исходныефайлы на языке Java. В настоящий момент тамв пакете org.hello.Hello лежит файл MainActivity.java, отвечаю щий за логику работы главной активностинашего приложения, той самой, в которойотображается текст “Hello world!”. Если посмотретьна исходный код, то можно увидеть, что создаетсяновый класс MainActivity, расширяющий стандартныйкласс Activity, и переопределяются два метода:onCreate и onCreateOptionsMenu. Первый метод,onCreate, приведен ниже.protected void onCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}Первым делом в нем вызывается соответствующийметод суперкласса, после чего устанавливаетсясодержимое активности из некоторого ресурса.Здесь можно заметить автоматически сгенерированныйидентификатор “R.layout.activity_main”,указывающий на файл res/layout/activity_main.xml(к этому файлу мы еще вернемся чуть позже), содержащийописание пользовательского интерфейса. МетодonCreate — единственный метод, который наш свежеиспеченныйкласс MainActivity должен переопределить.Второй метод, onCreateOptionsMenu:public boolean onCreateOptionsMenu(Menu menu){//Inflate the menu; this adds itemsto the action bar if it is present.etMenuInflater().inflate(R.menu.main, menu);return true;}Этот метод служит для создания стандартногоменю настроек приложения. Как можно увидеть изкода, описание меню берется из файла res/menu/main.xml (к нему мы тоже вернемся позже). Я небуду подробно останавливаться на этом методе.Второй каталог в дереве проекта, “gen” содержитфайлы кода на Java, сгенерированные автоматически.Для нас они не представляют практически никакогоинтереса. В данный момент там находятся два файла:BuildOptions.java, содержащий настройки текущего режимакомпиляции, и R.java, содержащий автоматическиеопределения идентификаторов ресурсов.Каталоги “Android 4.2.2” и “Android Dependencies”содержат jar-архивы всех стандартных библиотекплатформы Android.Каталог “assets” служит для хранения файлов.Он отличается от каталога ресурсов тем, что файлытам являются “динамическими”, то есть не требуютобъявления во время компиляции. При этом,конечно, теряются все описанные ранее преимущества,которыми обладают ресурсы, как то автоматическисозданные идентификаторы и автоматическийвыбор ресурсов для разных конфигураций.В каталоге “bin” находятся важные исполняемыефайлы, необходимые для работы приложения, вчастности, наш основной файл “Hello.apk”.Каталог “libs” содержит все необходимые дополнительныебиблиотеки.Каталог “res”, как читатель уже мог понять, содержитресурсы, разбитые по категориям. Например,в данный момент там есть пять подкаталогов:drawable-hdpi, drawable-ldpi, drawable-mdpi, drawable-xhdpi,drawable-xxhdpi, — в которых содержатсяфайлы изображений (конкретно сейчас — иконки)для различных вариантов разрешения экрана.В подкаталоге “res/layout” лежат XML-файлы,описывающие интерфейс пользователя, то есть активности.Рассмотрим файл main_activity.xml, содержащийописание главной активности нашегоприложения:43май 2013 / ИНФОРМАТИКА
СЕМИНАР44май 2013 / ИНФОРМАТИКАЕго структура проста. Кроме тега RelativeLayoutсо служебными атрибутами, он содержит одинединственныйтег TextView, описывающий нашунадпись “Hello world!”. Запись “@string/hello_world” является ссылкой на строковый ресурс. Болееподробно такой тип ресурсов мы рассмотримпозже. Eclipse также позволяет редактироватьпользовательский интерфейс визуально, такой подходхорошо знаком всем тем, кто программировалв визуальных средах вроде Delphi. К примеру, еслимы произвольным образом поместим на “форму”кнопку, то в файл main_activity.xml будут добавленыстрочки вродеописывающие только что добавленный виджет.Здесь можно также обратить внимание на то,что новые компоненты можно выравнивать относительноуже существующих. Создавать лиинтерфейс с помощью графических средств илиже редактируя текстовые файлы, зависит от вашихличных предпочтений, однако, графическийдизайнер предоставляет очень большуюгибкость.Немножко отвлекаясь от основной темы разделауделю время описанию того, как заставитькнопку реагировать на нажатие. Для описания этогодействия применяется атрибут android:onClickтега Button, значением которого является имя методав классе, соответствующем описываемой активности.Этот метод должен быть объявлен какpublic void и принимать один аргумент типа View.Например:где метод destroyUniverse будет иметь прототипpublic void destroyUniverse(View view)Каталог “res/menu” содержит XML-файлы с описаниемменю. Как и в случае с дизайном активностей,меню можно редактировать как с помощьюграфического диалога, так и с помощью прямойработы с XML. Здесь я не буду подробно рассматриватьсоздание меню.Каталог “res/values” служит для хранения XMLфайловс всевозможными текстовыми ресурсами.В данный момент в каталоге находятся три файла.Первый из них, dimens.xml, хранит параметрыэкрана, второй, strings.xml, используется для хранениястроковых ресурсов, таких, как уже встретившаясянам ранее надпись “Hello world!”. Третийфайл, styles.xml, содержит информацию о теме графическогооформления приложения. Все эти файлыможно редактировать как в диалоговом режиме,так и в текстовом.Следующие несколько подкаталогов в “res”:values-sw600dp,values-sw720dp-land,values-v11,values-v14— содержат описания разрешений экрана и темдля различных программно-аппаратных конфигураций.Еще один важный файл в дереве проекта —AndroidManifest.xml мы уже рассмотрели выше. Всеостальные файлы служат для всевозможных вспомогательныхцелей, являются автоматически сгенерированнымии в данный момент не представляютникакого интереса.Что дальше?Создание полноценных приложений для Android— сложная и чрезвычайно обширная областьтехнологии, по которой написаны объемныекниги, и в рамках одной статьи сложно датьдаже беглый обзор всех предоставляемых возможностейи методов. В стандартную поставкуAndroid SDK входит набор примеров, по которымможно учиться писать более сложные приложения,а на официальном сайте http://developer.android.com/training/ есть большое количествоучебного материала.Другие способы разработкидля AndroidОС Android пока еще слишком молода, а ееинфра структура до сих пор менялась слишкомбыстро, поэтому в настоящий момент существуетслишком малое число альтернативных способовразработки приложений. В частности, существуютнекоторые попытки перенести интерпретаторыскриптовых языков на Android, самой значительнойиз которых является Script Layer for Android(SL4A). Также существуют работающие прототипысистем программирования для языков Smalltalk и J.
Одним из наиболее значительныхальтернативных способов разработкипрограмм для Android является MITApp Inventor — визуальная среда разработки,похожая на Scratch (средудля обучения программированию),в которой для создания приложенийиспользуется компоновка графическихблоков. Приложения создаютсяв браузере на компьютере разработчика,после чего либо загружаютсяна устройство по USB, либо простосохраняются в виде apk-файла. App Inventorпока находится в стадии бетатестирования.Список литературы1. Ed Burnette. “Hello, Android”, ThePragmatic Programmers, 2010.2. Официальная документация кAndroid. http://developer.android.com/reference.3. Учебные материалы по программированиюдля платформы Android.http://developer.android.com/training.4. W. Frank Ableson, Charley Collinsand Roby Sen. Unlocking Android. A DevelopersGuide, Manning PublicationsCo., 2009.5. Голощапов Алексей. Google Android.Программирование для мобильныхустройств. BHV-СПб., 2010.6. Документация к MIT App Inventor.http://appinventor.mit.edu/explore/.Меню запуска приложенияРедактирование логики в App Inventor45Редактирование визуальных элементов в App Inventorмай 2013 / ИНФОРМАТИКА
Педагогический университет«Первое сентября»Лицензия Департамента образования г. Москвы 77 № 000349, рег. № 027477 от 15.09.2010ДИСТАНЦИОННЫЕ КУРСЫПОВЫШЕНИЯ КВАЛИФИКАЦИИ(с учетом требований ФГОС)Ведется прием заявок на 2013/14 учебный годобразовательные программы:НОРМАТИВНЫЙ СРОК ОСВОЕНИЯ 108 УЧЕБНЫХ ЧАСОВСтоимость – 2990 руб.НОРМАТИВНЫЙ СРОК ОСВОЕНИЯ 72 УЧЕБНЫХ ЧАСАСтоимость – 2390 руб.По окончании выдается удостоверение о повышении квалификацииустановленного образцаПеречень курсов и подробности на сайте edu.1september.ruПожалуйста, обратите внимание:заявки на обучение подаются только из Личного кабинета,который можно открыть на любом сайте портала www.1september.ru
журналИнформатика – Первое сентябряТАРИФНЫЕ ПЛАНЫ НА ПОДПИСКУ2-е полугодие 2013 годаМаксимальный — 1440 руб.бумажная версия (по почте) + CD + доступ к электронной версии на сайтеОформление подписки – на сайте www.1september.ru или на почте по каталогам:«Роспечать» – индекс 32291 (для индивидуальных подписчиков и организаций)«Почта России» – индекс 79066 (для индивидуальных подписчиков и организаций)Оптимальный — 594 руб.электронная версия на CD (по почте) + доступ к электронной версии на сайтеОформление подписки – на сайте www.1september.ru или на почте по каталогам:«Роспечать» – индекс 19179 (для индивидуальных подписчиков и организаций)«Почта России» – индекс 12684 (для индивидуальных подписчиков и организаций)Экономичный — 300 руб.доступ к электронной версии и оформление подписки на сайте www.1september.ruБесплатный — 0 руб.доступ к электронной версии на сайте www.1september.ru для педагогическихработников образовательных учреждений, участвующихв Общероссийском проекте «Школа цифрового века»Бумажная версия(доставка по почте)CD с электронной версиейжурналаи дополнительнымиматериаламидля практической работы(доставка по почте)Электронная версия в Личномкабинете подписчикана сайте www.1september.ruДополнительные материалывключеныЭКОНОМИЧНЫЙ тарифный планПользователям электроннойверсии высылаются по почтеподтверждающие документыМАКСИМАЛЬНЫЙ тарифный планОПТИМАЛЬНЫЙ тарифный планПри оформлении подписки на сайте www.1september.ru оплата производитсяпо квитанции в отделении банка или электронными платежами on-line
ОПЫТ ТЕМА В МИР ИНФОРМАТИКИ НОМЕРА | № 187vmi@1september.ruДля пытливых ученикови их талантливых учителейГРАФИКА“Занимательный практикум”:изучаем графический редакторО.Б. Богомолова,преподаватель Дворца творчествадетей и молодежи “Преображенский”,МоскваД.Ю. Усенков, ст. науч. сотр.Института информатизацииобразования РАО, Москва1. Фотомонтаж: размещение фотографиив художественной рамке (см. рис. 5)Откройте программу Paint.Net, щелкнув мышьюна ее пиктограмме:Рис. 1Откроется диалоговое окно программы:48май 2013 / ИНФОРМАТИКАПредлагаем подборку подобных занимательныхпрактических заданий, которые позволят вам освоитьряд операций по работе с компьютернойграфикой — выделение, копирование (вырезание)и вставку фрагментов, работу со слоями,использование таких инструментов, как “Лупа” и“Ластик”, и др. Можно сказать, что задания представляютсобой увлекательную игру по созданиюнеобычных фотоколлажей и художественныхфоторамок, которые пригодятся в повседневнойжизни, например, для оформления личного фотоальбома.В качестве программной базы для выполненияэтих заданий выбран графический редакторPaint.Net. Его преимущества:• бесплатность;• простота освоения (по сравнению, например,с профессиональным редактором Adobe Photoshop,насыщенным большим количеством необязательныхфункций, затрудняющих его освоение для начинающих);• достаточно богатый набор предоставляемыхвозможностей, гораздо больший, чем у простейшихрастровых редакторов типа Paint (по возможностямPaint.Net лишь незначительно уступаеттому же Adobe Photoshop).Дистрибутив программы Paint.Net имеетсяна диске к данному выпуску “Информатики”,а прочитать подробную инструкцию к ней нарусском языке можно на сайте http://paintnet.ru/?id=2.Рис. 2Чтобы поместить свою фотографию в готовую художественнуюрамку, используя готовый шаб лон:• откройте шаблон Рамка.jpg 1 (меню Файл — Открыть);• выберите инструмент “Волшебная палочка”и щелкните мышью в шаблоне — фоторамкена том участке, где должна быть размещена фотография(на одноцветном закрашенном поле);• если при выделении этой одноцветной областивыделение захватывает другие части изображенияфоторамки или если, наоборот, по краям остались невыделенные части поля для фотографии, то настройтеточность выделения при помощи “волшебной палочки”с помощью ее вспомогательного инструмента“Точность”. Для этогощелкните левой кнопкой мыши в соответствующемместе полоски — она будет закрашиваться слева идо места щелчка, и на ней будет меняться значение в1Все графические файлы, необходимые для выполненияэтого и других заданий, представлены на диске к данномуномеру журнала.
• если при вставке фотографии вы выбиралиExpand canvas, выделите фото в рамке с помощьюинструмента “Прямоугольное выделение”и обрежьте белые поля с помощью инструмента“Обрезать по выделенному” ;• сохраните результат (меню Файл | Сохранить).Фото в рамке готово!процентах. Затем повторно попытайтесь выделить областьпри помощи “волшебной палочки”. В результатедолжна быть выделена именно та часть фоторамки, вкоторой должна располагаться ваша фотография;• нажмите клавишу Delete (или Del) на клавиатуре.Выбранная область станет прозрачной — вграфическом редакторе она выглядит как шахматноеполе из белых и серых квадратиков;• откройте фотографию Конкурс.jpg 2 (менюФайл | Открыть);• выделите нужную часть фотографии инструментомвыделения и скопируйте фотографиюв буфер обмена (меню Правка | Копировать);• перейдите к фоторамке и выполните командуменю Правка | Вставить в новый слой. При необходимостивыберите в окне запроса пункт Expandcanvas (“Увеличить холст” — поле, занимаемоерисунком) — рис. 3;Рис. 52. Фотомонтаж: размещение вашего лицав готовом коллажном шаблоне (см. рис. 7)Рис. 3• используя кнопку в окне Слои, переместитеслой с вставленной фотографией вниз, под слойфоторамки;• проверьте, чтобы в окне Слои был выделенслой с фотографией (для выделения слоя достаточнощелкнуть на его имени мышью);• подгоните фотографию по размерам и положениютак, чтобы она просвечивала сквозь прозрачнуюобласть фоторамки;• закончив работу, сохраните получившуюся фотографиюв рамке с помощью команд Файл | Сохранитькак. Задайте имя файла Фото в рамке, а расширениефайла — png. Нажмите кнопку Сохранить;• появится диалоговое окно Слить слои? (рис. 4).Выберите в нем Flatten (“объединение”);Рис. 42Можно также использовать собственные фотографии. —Прим. ред.Откройте программу Paint.Net, щелкнув мышьюна ее пиктограмме, — появится диалоговое окнопрограммы (см. рис. 2).Чтобы поместить фрагмент фотографии (лицо) вготовый коллажный шаблон:• откройте файл Готовый коллажный шаблон.jpg(меню Файл | Открыть);• при необходимости увеличьте на шаблоне областьлица персонажа при помощи инструмента“лупа” ;• выберите инструмент “Волшебная палочка”и щелкните на закрашенной одним цветом областилица персонажа (той, куда вы собираетесьподставить свое лицо). С помощью инструмента“Точность” , щелкаямышью в соответствующем месте полоски, установитеточность выделения областей “волшебнойпалочкой” и снова попробуйте выделить нужнуюобласть. В результате на шаблоне должна быть выделенаименно та часть лица персонажа, на местекоторой должно быть ваше лицо;• нажмите клавишу Delete (или Del) на клавиатуре.Выбранная область станет прозрачной — в графическомредакторе она выглядит как шахматноеполе из белых и серых квадратиков. Повторите выделениеи стирание всех таких областей;Рис. 649май 2013 / ИНФОРМАТИКА
В МИР ИНФОРМАТИКИ № 18750май 2013 / ИНФОРМАТИКА• откройте фотографию Лицо.jpg (меню Файл |Открыть). Если вы будете использовать собственнуюфотографию, то она должна быть такой, чтобырасположение лица на ней примерно соответствовалорасположению лица персонажа на шаблоне(например, если персонаж смотрит прямо, а его головачуть наклонена, то лицо на фотографии тожедолжно смотреть прямо и тоже должно быть наклонено);• выделите нужную часть своей фотографии(лицо и некоторую область вокруг него) инструментомвыделения и скопируйте этот фрагмент вбуфер обмена (меню Правка | Копировать);• перейдите к шаблону фоторамки и выполнитекоманду меню Правка | Вставить в новый слой.При необходимости выберите в окне запроса пунктExpand canvas;• используя кнопку в окне Слои, переместитеслой с вставленной фотографией вниз, под слойшаблона;• проверьте, чтобы в окне Слои был выделенслой с фотографией (для выделения слоя достаточнощелкнуть на его имени мышью);• подгоните фрагмент фотографии с вашим лицомпо размерам и расположению так, чтобы онапросвечивала сквозь прозрачную область шаблонаи выглядела наиболее естественно;• закончив работу, сохраните получившуюсяколлажную фотографию с помощью команд Файл |Сохранить как. Задайте имя файла Коллажная фотография,а расширение — png. Нажмите кнопкуСохранить;• появится диалоговое окно Слить слои?. Выберитев нем Flatten (“Объединение”);• если при вставке фотографии вы выбиралиExpand canvas, выделите полученную картинку спомощью инструмента прямоугольного выделенияи обрежьте белые поля с помощью инструмента“Обрезать по выделенному” ;• сохраните результат (меню Файл | Сохранить).Коллажная фотография готова.Рис. 73. Фотомонтаж: подготовка коллажногошаблона и вставка в него фотографии(см. рис. 9)Чтобы поместить фрагмент фотографии (например,ваше лицо) в коллажный шаблон, подготовленныйвами из произвольной фотографии (см.рис. 8):• откройте файл Шаблон.jpg;• увеличьте на этой фотографии область лица заснятогочеловека/персонажа при помощи инструмента“Лупа” ;• выберите инструмент “Ластик” и удалите спомощью этого инструмента часть лица для созданиясобственного шаблона;• очищенная область будет прозрачной — в графическомредакторе она выглядит как шахматноеполе из белых и серых квадратиков;• сохраните полученный шаблон: менюФайл | Сохранить как, имя файла Коллажныйшаблон, расширение файла — pdn (стандартноедля программы Paint.NET). Нажмите кнопку Сохранить;Рис. 8• откройте фотографию Конкурс.jpg (менюФайл | Открыть). Фотография должна быть такой,чтобы расположение лица на ней примерно соответствовалорасположению лица персонажа на шаблоне(например, если персонаж смотрит прямо, аего голова чуть наклонена, то ваше лицо на фотографиитоже должно смотреть прямо и тоже должнобыть наклонено);• выделите нужную часть своей фотографии(лицо и некоторую область вокруг него) инструментомвыделения и скопируйте этот фрагмент вбуфер обмена (меню Правка | Копировать);• перейдите к шаблону и выполните командуменю Правка | Вставить в новый слой. При необходимостивыберите в окне запроса пункт Expandcanvas;• используя кнопку в окне Слои, переместитеслой с вставленной фотографией вниз, под слойшаблона;• проверьте, чтобы в окне Слои был выделенслой с фотографией (для выделения слоя достаточнощелкнуть на его имени мышью);
• подгоните фрагмент фотографии с вашим лицомпо размерам и расположению так, чтобы онапросвечивала сквозь прозрачную область шаблонаи выглядела наиболее естественно;• закончив работу, сохраните получившуюсяколлажную фотографию с помощью команд Файл |Сохранить как. Задайте имя файла Коллажная фотография,а расширение — png. Нажмите кнопкуСохранить;• появится диалоговое окно Слить слои?. Выберитев нем Flatten (“объединение”);• если при вставке фотографии вы выбиралиExpand canvas, выделите полученную картинкус помощью инструмента прямоугольного выделенияи обрежьте белые поля с помощьюинструмента “Обрезать по выделенному” . Сохранитерезультат.Коллажная фотография готова.Рис. 11• выделите фоторамку инструментом выделенияи скопируйте ее в буфер обмена (меню Правка| Копировать);• перейдите к фону и выполните команду менюПравка | Вставить в новый слой. При необходимостивыберите в окне запроса пункт Expandcanvas. Вставленная рамка должна располагатьсяв окне Слои над фоном, и этот слой с рамкой долженбыть выделен:Рис. 94. Фотомонтаж: создание художественнойфоторамки (см. рис. 13)Запустите программу Paint.Net.Откройте фон из файла 5.jpg. Убедитесь, что фоноваякартинка появилась в окне Слои:Рис. 10Наложите поверх фона фоторамку:• откройте файл рамки 1.jpg;• выберите инструмент “Волшебная палочка”и щелкните на закрашенной белым цветомобласти фона вокруг фоторамки. С помощью инструментаустановитеточность выделения внешней области “волшебнойпалочкой” и снова попробуйте выделить этуобласть. В результате у вас должен быть выделентолько фон вне рамки, но не сама рамка и не областьвнутри нее;• нажмите клавишу Delete (Del) на клавиатуре —выбранная область станет прозрачной (в графическомредакторе она выглядит как шахматное полеиз белых и серых квадратиков);Рис. 12• измените размеры и расположение рамки посвоему желанию.Добавьте оформление в виде сказочных персонажей:• откройте файл со слоненком (3.jpg);• при помощи инструмента “Волшебная палочка”(при необходимости настраивая его точность)и клавиши Delete сделайте прозрачным фонвокруг персонажа — аналогично тому, как вы этотолько что делали для рамки. Если фон вокруг персонажапредставляет собой несколько отдельныхзамкнутых областей, то сделайте прозрачной каждуютакую область;• выделите рисунок персонажа инструментомвыделения и скопируйте в буфер обмена (менюПравка | Копировать);• перейдите к фону и выполните команду менюПравка | Вставить в новый слой. При необходимостивыберите в окне запроса пункт Expand canvas.Вставленный рисунок в окне Слои образуетеще один слой (он будет выделен);• меняя размеры и положение персонажа, разместитеего рядом с рамкой (в том числе так, что онбудет ее частично закрывать);• откройте файл с изображением кенгуренка(файл 17.png). Здесь прозрачный фон вокруг рисункауже есть;• выберите в меню Рисунок пункт Flip Horizontal(“Отразить по горизонтали”);51май 2013 / ИНФОРМАТИКА
В МИР ИНФОРМАТИКИ № 187• выделите рисунок, скопируйте его в буфер обменаи вставьте на фон как новый слой — аналогичнопредыдущему персонажу. Смасштабируйтеи разместите его в нужном месте. Обратите внимание:этот персонаж очень велик, поэтому приего вставке картинка с фоном сильно уменьшится.Сначала уменьшите кенгуренка до размеров картинкис фоном, а затем используйте инструмент“Лупа” , чтобы увеличить рисунок;• повторите описанные операции для рисунка“морской звезды” (файл 3.png). Разместите ее вверхней части создаваемой вами художественнойфоторамки;• если персонажи взаимно накладываются другповерх друга, то меняйте их взаимное перекрытие,используя кнопки в окне Слои: слой с изображением,которое должно перекрывать другоеизображение, в окне Слои должен быть выше перекрываемогослоя.Закончив работу, сохраните получившуюся фоторамкус помощью команды Файл | Сохранить как.Задайте имя файла Моя фоторамка, а расширение —pdn. Этот формат файла сохраняет разделение наслои, так что позже вы сможете вновь открыть этотфайл и изменить расположение рамки и персонажей,заменить какие-то из них или общий фон и т.д.Сохраните фоторамку еще раз командой Файл |Сохранить как, но выберите расширение файлаpng. Нажмите кнопку Сохранить. В диалоговомокне Слить слои? выберите Flatten (“Объединение”).Выделите полученную картинку с помощьюинструмента прямоугольного выделения иобрежьте белые поля с помощью инструмента “Обрезатьпо выделенному” . Сохраните результат.Художественная фоторамка готова (рис. 13).Вставьте в нее фотографию (файл 4.jpg), как описанов разделе 1 (рис. 14).5. Фотомонтаж: выделение объектов сложнойформы, создание фотоколлажа (см. рис. 18)Запустите программу Paint.Net.Откройте фон из файла рыцарь1.jpg.Ваша цель — выделить фигуру рыцаря, отделивее от остального изображения (фона и других изображений):• для выделения объекта по сложному контуруиспользуется инструмент “Лассо” ;• режимы выделения областей инструментом“Лассо”, а также другими инструментами выделения— прямоугольной области и овальной области:— для выделения области нажмите левую кнопкумыши и начните двигать мышь — по мере еедвижения будет формироваться замкнутая сераяобласть выделения (ранее выделенные области приэтом сбрасываются); после отпускания мыши областьвыделения отображается “бегущим” пунктирнымконтуром:ОбластьвыделенияРис. 15— если нажать и удерживать клавишу , азатем начать выделять область при помощи левойкнопки мыши, то новая область выделения добавляетсяк ранее созданной:ДобавленнаяобластьРис. <strong>16</strong>— если выделять область при помощи правойкнопки мыши, то это позволяет снимать выделениев пределах рисуемой “Лассо” области:Область,в которойвыделениеснято52май 2013 / ИНФОРМАТИКАРис. 13Рис. 14Рис. 17— чтобы повысить точность выделения, выберитеинструмент “Лупа” и щелкните левойкнопкой мыши для увеличения масштаба (щелчокправой кнопкой мыши уменьшает масштаб); то жепозволяет делать колесико мыши при нажатой клавише; для продолжения работы с выделениемснова выберите инструмент “Лассо” либо другойинструмент выделения;— инструмент “Серая стрелка” позволяетперемещать мышью изображение, выделенное областьювыделения (причем в окне со списком слоев
должен быть выбран именно нужный слой!); инструмент“Белая стрелка” перемещает толькосаму область выделения, позволяя более точно “нацеливать”ее (накладывать на изображение) и масштабироватьобласть выделения;• установив более крупный масштаб изображения( ), выделите рыцаря, используя операциидобавления и снятия выделения (клавиша иправая кнопка мыши), а также перемещая рисунокв окне Paint.Net с помощью линеек прокрутки или(вверх/вниз) колесиком мыши;Внимание! Если вы щелкнете на рисунке левойкнопкой мыши, не удерживая нажатойклавишу , то все сделанное выделениесбросится, и надо будет начать все с начала.• завершив выделение, скопируйте выделеннуючасть рисунка в буфер обмена (меню Правка |Копировать). Вставьте этот скопированный фрагменткак новый рисунок (меню Правка | Вставитьв новое изображение). Фрагмент вставитсяна прозрачном фоне. Просмотрите его и ластиком“подчистите” его, стирая ненужные остатки изображения;• сохраните готовый рисунок в файл в форматеPaint.Net;ЯПОНСКИЙ УГОЛОК• аналогичным способом откройте файл Honda_OSM_2008_32.jpg. Выделите автомобиль, скопируйтеего, вставьте в новый слой и сохраните в файлеформата pdn;• откройте файл марс1.jpg;• скопируйте на этот рисунок ранее созданныефрагменты с рыцарем и автомашиной, вставляяих как новые слои. Управляя порядком следованияслоев, перемещая и масштабируя их, создайте картинку-коллаж:“Средневековый рыцарь приехал отдохнутьна Марс в своем автомобиле” ☺.Две судокуРешите, пожалуйста, две японские головоломки “судоку”:Рис. 181) простую:7 5 2 62 5 41 8 93 6 4 96 3 5 71 4 2 88 9 14 1 71 2 9 52) сложную:6 45 4 17 4 18 3 22 6 71 6 32 5 64 3 1 25 4 8Ответы присылайте в редакцию (можно решать не все судоку).ПОИСК ИНФОРМАЦИИ53Четыре вопросаОтветьте, пожалуйста, на четыре вопроса.1. Кто из классиков русской поэзии заседал в Чрезвычайной комиссии по расследованию преступленийцарского режима?2. Какое растение идет на создание домов, мостов, мебели, зонтиков и вееров?3. Как назывался военный плащ древних римлян?4. Как звали морскую принцессу из диснеевского мультфильма “Русалочка”?Ответы (можно не на все вопросы) присылайте в редакцию.май 2013 / ИНФОРМАТИКА
В МИР ИНФОРМАТИКИ № 187ЗАДАЧНИКЗадача, которую вы решаете, может бытьочень скромной, но если она бросает вызоввашей любознательности и если вы решаетеее собственными силами, то вы сможете испытатьведущее к открытию напряжение умаи насладиться радостью победы.Джордж ПойяКомпьютер помогает искатьпреступника. Часть 2В предыдущем выпуске была описана методикаразработки программы, с помощью которой можнорешить такую задачу: “Пять свидетелей оказалисьна месте преступления, хорошо разглядели бежавшегопреступника и согласились помочь криминалистамсоставить его словесный портрет. Каждыйиз свидетелей дал свое описание. Вот они:1) черные волосы, маленький нос, борода, маленькиеглаза, круглое лицо;2) рыжие волосы, большой нос, борода, маленькиеглаза, круглое лицо;3) черные волосы, большой нос, чисто выбрит,маленькие глаза, круглое лицо;4) лысый, большой нос, чисто выбрит, большиеглаза, худое лицо;5) рыжие волосы, маленький нос, борода, большиеглаза, круглое лицо.Каждый из свидетелей правильно указал поменьшей мере одну примету преступника и допустилодинаковое с остальными число ошибок.Как составить точный словесный портрет преступника?”.Теперь решим задачу с помощью программыMicrosoft Excel или подобной.Закодируем все возможные значения отдельныхпризнаков следующим образом:1) волосы:— черные волосы — 1;— рыжие волосы — 2;— лысый — 3;2) нос:— маленький нос — 1;— большой нос — 2;54май 2013 / ИНФОРМАТИКАA B С D E F G H I J K L M1 Словесный портрет23 Вариант свидетеля4 1-го 1 1 1 1 15 2-го 2 2 1 1 <strong>16</strong> 3-го 1 2 2 1 17 4-го 3 2 2 2 28 5-го 2 1 1 2 1910 Степень совпадения11Вариант сочетания примет 1-го свидетеля Кпр Кош12 1 1 1 1 1 1 1 1 1 1 1 5 013 2 1 1 1 1 2 1 1 1 1 0 4 114 3 1 1 1 2 1 1 1 1 0 1 4 115 4 1 1 1 2 2<strong>16</strong> 5 1 1 2 1 1…26 15 1 2 2 2 127 <strong>16</strong> 1 2 2 2 228 17 2 1 1 1 129 18 2 1 1 1 230 19 2 1 1 2 1…42 31 2 2 2 2 143 32 2 2 2 2 244 33 3 1 1 1 145 34 3 1 1 1 246 35 3 1 1 2 1…58 47 3 2 2 2 159 48 3 2 2 2 260
3) борода:— есть борода — 1;— чисто выбрит — 2;4) глаза:— маленькие глаза — 1;— большие глаза — 2;5) лицо:— круглое лицо — 1;— худое лицо — 2.В этой “системе кодировки” показания каждогоиз свидетелей будут выглядеть так:1) первый свидетель: 11111;2) второй свидетель: 22111;3) третий свидетель: 12211;4) четвертый свидетель: 32222;5) пятый свидетель: 21121.Оформим лист так, как показано на рисункениже.В диапазоне ячеек В4:F8 запишем только чтоприведенные показания каждого из свидетелей(пять элементов портрета), а в диапазоне B12:F59 —все возможные варианты сочетания примет. Несмотряна то что всего вариантов — 48, эта работане является трудоемкой, поскольку большая частьзначений может быть получена путем копирования.Так, в столбце F повторяются значения 1 и 2, в столбцеЕ — блок из четырех значений, в столбце D — извосьми значений, в столбце С — из <strong>16</strong> значений.Далее, как описано в предыдущем выпуске, длякаждого из 48 возможных вариантов портрета нужноопределить число ошибок у каждого свидетеля.Эта работа не сложная по содержанию, но несколькотрудоемкая.Итак, начнем. Для первого свидетеля:1) в ячейку G12 запишем формулу, определяющуюстепень совпадения первого признака портрета(волосы) у этого свидетеля:=ЕСЛИ(B12=B$4;1;0)Видно, что степень совпадения задается значениями1 и 0;2) вид приведенной формулы (в ней использованыотносительная и смешанная ссылки) позволяет скопироватьее на другие признаки и на другие вариантысочетания примет — в диапазон ячеек G12:K59;3) в ячейки L12 и M12 запишем формулы, подсчитывающие,соответственно, число правильныхэлементов и число ошибок для первого вариантасловесного портрета:=СУММ(G12:K12)и=5 – L12;4) скопируем эти две формулы в диапазон ячеекL13:М59.Аналогично заполним ячейки:— для второго свидетеля(N12:T59); формула в ячейке N12:=ЕСЛИ(B12=B$5;1;0)копируется в диапазон ячеекN12:R59;— для третьего свидетеля (U12:AA59); формула вячейке U12:=ЕСЛИ(B12=B$6;1;0)копируется в диапазон ячеек U12:Y59;— для четвертого свидетеля (АВ12:AН59); формулав ячейке АВ12:=ЕСЛИ(B12=B$7;1;0)копируется в диапазон ячеек AB12:AF59;— для пятого свидетеля (АI12:AO59); формула вячейке AI12:=ЕСЛИ(B12=B$7;1;0)копируется в диапазон ячеек AI12:AM59.После этого можно найти вариант словесногопортрета, соответствующий фактическому портретупреступника. Это вариант, удовлетворяющий условию— количество ошибок у каждого свидетеляодинаково и при этом не равно 5. Для его нахожденияследует сравнить значения в столбцах М, Т, АА,АН и АО, используя функции ЕСЛИ и И.Задание для самостоятельной работыОформив лист, как описано, найдите правильныйвариант словесного портрета. Лист и словесноеописание портрета присылайте в редакцию.Все приславшие правильный и обоснованныйответ будут награждены дипломами. Срок представленияответов — октябрь.Ответы, решения, разъясненияк заданиям, опубликованнымв разделе “В мир информатики” ранееГоловоломка “Переставить вагоны”Напомним, что нужно было разработать алгоритмдействий машиниста тепловоза Т (см. рисунокниже) для перестановки вагонов с арбузами(А), бананами (Б) и виноградом (В) таким образом,чтобы на каждом из путей оказались составы с одинаковымиплодами.Задача может быть решена несколькими способами.Приведем два из них:1)Исх. 1 2 3 4 5 6 7 8АВБ А АА АА ААА ААА АААВВВ АААВВВ АААБВА БВА БВ БВВВБ БВВВБ БВВВ Б ВВВБАВ БАВВБ БАВВБ БА Б ББ ББ БББ БББ55май 2013 / ИНФОРМАТИКА
В МИР ИНФОРМАТИКИ № 1872)Исх. 1 2 3 4 5 6 7 8АВБ АВБ АВ АВ АВ АВВ А ААА АААБВА БВААВ БВААВ БББВААВ БББВАА БББВАА БББВ ББББАВ Б ББ БББВААВ ВВ ВВ ВВВ56май 2013 / ИНФОРМАТИКАОтветы представили:— Аксенов Василий, Демьянова Елена и ХомяковаАнна, средняя школа деревни Муравьево, Вологодскаяобл., учитель Муравьева О.В.;— Алехина Елена, средняя школа поселкаНово петровский Московской обл., учитель АртамоноваВ.В.;— Базанов Илья и Миноцкий Ян, Владимирскаяобл., г. Струнино, школа № 11, учитель Волков Ю.П.(Илья и Ян разработали два варианта решения);— Бородюк Анна и Василенко Татьяна, средняяшкола села Горелово Тамбовской обл., учитель ШитоваЛ.А.;— Грибанов Владлен, Дукач Светлана, ЛысенкоЕкатерина, Овчинникова Елизавета и СоболевИван, г. Лесосибирск Красноярского края, поселокСтрелка, школа № 8 им. Константина Филиппова,учитель Лопатин М.А.;— Добрякова Светлана, Козина Мария и ЧерноваНаталья, средняя школа села Сердар, РеспубликаМарий Эл, учитель Чернова Л.И.;— Друзь Руслан, средняя школа поселка ЕрофейПавлович, Амурская обл., Сковородинский р-н,учитель Краснёнкова Л.А.;— Иванова Виолетта и Левченко Ирина, средняяшкола села Восточное Нижегородской обл., учительДолгова Г.А.;— Леоненко Степан, средняя школа поселка Осиновка,Алтайский край, учитель Евдокимова А.И.;— Танасюк Артем, г. Челябинск, школа № 124,учитель Юртаева Г.Ю.Софизм “Все числа равны между собой”Напомним, что предлагалось найти ошибкув следующем софизме (рассуждении, “внешне”правильном, но противоречащем общепринятымпредставлениям).Пусть т ≠ п. Возьмем тождество:т 2 – 2тп + п 2 = п 2 – 2пт + т 2 .Имеем (т – п) 2 = (п – т) 2 . Отсюда т – п = п – т,или 2п – 2т, а значит, п = т (!?).ОбъяснениеЕсли квадраты чисел равны, то это еще не означает,что и сами числа равны. Из равенства квадратовдвух чисел вытекает лишь, что равны абсолютныевеличины этих чисел. Например, если 4 = 4,то извлечение квадратного корня из обеих частейозначает, что 2 = 2 либо –2 = –2, но не означает, что2 = –2. Поэтому ошибка в рассуждении, начинающемсясловом “Отсюда…”.Правильные ответы прислали:— Андрющенко Александр и Свистунов Николай,Ставропольский край, Кочубеевский р-н, станицаБарсуковская, школа № 6, учитель Рябченко Н.Р.;— Афанасьева Ксения, средняя школа деревни Муравьево,Вологодская обл., учитель Муравьева О.В.;— Власова Ольга, средняя школа поселка ЕрофейПавлович, Амурская обл., Сковородинский р-н,учитель Краснёнкова Л.А.;— Голубева Елена, средняя школа села ГореловоТамбовской обл., учитель Шитова Л.А.;— Грибанов Владлен, Дукач Светлана, ЛысенкоЕкатерина, Овчинникова Елизавета и СоболевИван, г. Лесосибирск Красноярского края, поселокСтрелка, школа № 8 им. Константина Филиппова,учитель Лопатин М.А.;— Дегтярь Анатолий и Новиченко Владимир,средняя школа поселка Новопетровский Московскойобл., учитель Артамонова В.В.;— Добрякова Светлана, средняя школа села Сердар,Республика Марий Эл, учитель Чернова Л.И.;— Леоненко Степан, средняя школа поселка Осиновка,Алтайский край, учитель Евдокимова А.И.;— Ральникова Анна, Костромская обл., Буйскийр-н, г.п.п. Чистые Боры, школа № 1, учительВаснина О.В.;— Сорокина Дарья, средняя школа села ВосточноеНижегородской обл., учитель Долгова Г.А.;— Филимонова Галина, г. Пенза, школа № 512,учитель Гаврилова М.И.Головоломка “Числовой ребус с ЗАЗОРОМ”Напомним, что требовалось решить числовойребус:РО Р+ З О РА З О РЗ А З О Р5 5 5 5 0РешениеАнализ крайнего левого разряда показывает, чтоЗ = 5 (при этом А = 2) или З = 4 (А = 7).Исследуем разряд сотен. Здесь З + З + З + (“вуме” из разряда десятков). Допустим, З = 5. Тогдапереноса из разряда десятков нет, а это возможнопри О = 1 и при Р = 2. Но последнее равенство невозможно,так как А = 2. Значит, З = 4. Запишемизвестные цифры в ребус:РО Р+ 4 О Р7 4 О Р4 7 4 О Р5 5 5 5 0
Далее. Видно, что О = 8 (только в этом случаесумма в разряде десятков равна 35, и в разряд сотенпереносится 3). Все решение ребуса:68 6+ 4 8 67 4 8 64 7 4 8 65 5 5 5 0Задача “Блондины и брюнеты в классе”Напомним условие: “В классе девочек-блондинокстолько же, сколько мальчиков-брюнетов. Кого вклассе больше — девочек или учащихся с темнымиволосами? Принять, что шатенов и шатенок, а такжеучащихся с другим цветом волос в классе нет ☺”.РешениеОчевидно, что класс состоит из:1) девочек-блондинок;2) мальчиков-блондинов;3) девочек-брюнеток;4) мальчиков-брюнетов.Общее количество девочек в классе есть суммачисла девочек-блондинок и числа девочек-брюнеток.Общее число брюнетов есть сумма количествамальчиков-брюнетов и числа девочек-брюнеток.Но первые слагаемые этих сумм равныпо условию, а вторые слагаемые совпадают (см.рисунок ниже, на котором брюнеты обозначены“T”, а блондины — “Св”).Правильный ответ прислали:— Андрющенко Александр и Свистунов Николай,Ставропольский край, Кочубеевский р-н, станицаБарсуковская, школа № 6, учитель Рябченко Н.Р.;— Афанасьева Ксения, Демьянова Елена и СорокинаАнна, средняя школа деревни Муравьево, Вологодскаяобл., учитель Муравьева О.В.;— Базанов Илья, Владимирская обл., г. Струнино,школа № 11, учитель Волков Ю.П.;— Бляхина Ольга, средняя школа поселка Осиновка,Алтайский край, учитель Евдокимова А.И.;— Бурмантова Юлия, Совхозная средняя школа,Московская обл., Серебряно-Прудский р-н, поселокУспенский, учитель Жарикова Е.Н.;— Голубева Елена, средняя школа села ГореловоТамбовской обл., учитель Шитова Л.А.;— Диков Андрей и Филимонова Галина, г. Пенза,школа № 512, учитель Гаврилова М.И.;— Жукова Людмила, Нестерова Анастасия,Одинцова Екатерина, Попова Екатерина и ХажиевФлорит, г. Челябинск, школа № 124, учитель ЮртаеваГ.Ю.;— Казакова Ирина, средняя школа поселкаНово петровский Московской обл., учитель АртамоноваВ.В.;— Козина Мария, Локтев Иван и Чернова Наталья,средняя школа села Сердар, Республика МарийЭл, учитель Чернова Л.И.;— Наделяев Денис, средняя школа поселка ЕрофейПавлович, Амурская обл., Сковородинский р-н,учитель Краснёнкова Л.А.;— Сорокина Дарья, средняя школа села ВосточноеНижегородской обл., учитель Долгова Г.А.СвДевТДевТМалИтак, ответ — девочек в классе столько же,сколько всего учащихся с темными волосами.Правильные ответы прислали:— Агеева Наталья, средняя школа села Сердар,Республика Марий Эл, учитель Чернова Л.И.;— Бобровская Диана, средняя школа рабочегопоселка Пинеровка, Саратовская обл., Балашовскийр-н, учитель Пичугин В.В.;— Воротникова Елизавета и Катышева Людмила,средняя школа поселка Осиновка, Алтайскийкрай, учитель Евдокимова А.И.;— Голубева Елена, средняя школа села ГореловоТамбовской обл., учитель Шитова Л.А.;— Диков Андрей и Филимонова Галина, г. Пенза,школа № 512, учитель Гаврилова М.И.;— Закатов Владислав, г. Ярославль, школа № 33,учитель Ярцева О.В.;— Манукян Григорий, Владимирская обл.,г. Струнино, школа № 11, учитель Волков Ю.П.;— Назаренко Татьяна, средняя школа деревниМуравьево, Вологодская обл., учитель МуравьеваО.В.;— Новиченко Владимир, средняя школа поселкаНовопетровский Московской обл., учитель АртамоноваВ.В.;— Сорокина Дарья, средняя школа села ВосточноеНижегородской обл., учитель Долгова Г.А.Задача “Сын профессора Алгоритмова”Напомним, что предлагалось определить точнуюдату рождения сына профессора Бита БайтовичаАлгоритмова, если известно, что:1) день рождения сына является числом Фибоначчи;2) сумма цифр числа — дня рождения и произведениеего цифр также являются числами Фибоначчи;3) хотя порядковый номер месяца, в котором родилсясын, и не является числом Фибоначчи, затоявляется произведением двух не соседних чиселФибоначчи;57май 2013 / ИНФОРМАТИКА
В МИР ИНФОРМАТИКИ № 185 18758май 2013 / ИНФОРМАТИКА4) год рождения сына представляет собой удвоенноечисло Фибоначчи.РешениеЧислами Фибоначчи называют числа, образующиепоследовательность 1, 2, 3, 5, 8, … (каждыйчлен последовательности, начиная с третьего, равенсумме двух предыдущих).Из условия следует, что день рождения сына профессора— двузначное число. Так как номер дня месяцане может быть больше 31, то днем рожденияможет быть 13-е или 21-е число. Первое значение неподходит, так как сумма его цифр также является числомФибоначчи. Значит, сын родился 21-го числа.Номер месяца, в котором родился сын профессора,не может быть больше 12. Из первых пяти чиселФибоначчи (1, 2, 3, 5, 8) условию соответствуют“несоседние” числа 2 и 5, то есть мальчик родилсяв октябре.Год рождения можно определить, используя, например,электронную таблицу Microsoft Excel илиподобную.АВ1 Числа Фибоначчи Удвоенные значения2 1 23 2 4…15 610 1220<strong>16</strong> 987 197417 1597 3194Ответ: искомая дата рождения — 21.10.1974.Ответы прислали:— Андрющенко Александр и Свистунов Николай,Ставропольский край, Кочубеевский р-н,станица Барсуковская, школа № 6, учитель РябченкоН.Р.;— Афанасьева Ксения, средняя школа деревни Муравьево,Вологодская обл., учитель Муравьева О.В.;— Базанов Илья, Владимирская обл., г. Струнино,школа № 11, учитель Волков Ю.П.;— Баранец Дарья, средняя школа села ВосточноеНижегородской обл., учитель Долгова Г.А.;— Беляева Мария, Костромская обл., Буйскийр-н, г.п.п. Чистые Боры, школа № 1, учительВаснина О.В.;— Ботова Дарья, Танасюк Артем, Калугин Данил,Миронова Екатерина, Молева Александра, ЧирочкинаМария и Чурасов Михаил, г. Челябинск, школа№ 124, учитель Юртаева Г.Ю.;— Воротникова Елизавета и Катышева Людмила,средняя школа поселка Осиновка, Алтайскийкрай, учитель Евдокимова А.И.;— Дубова Валерия, средняя школа поселкаНово петровский Московской обл., учитель АртамоноваВ.В.;— Жарова Светлана, г. Пенза, школа № 512, учительГаврилова М.И.;— Закатов Владислав, г. Ярославль, школа № 33,учитель Ярцева О.В.;— Марченко Владислав, средняя школа села ГореловоТамбовской обл., учитель Шитова Л.А.;— Коршаков Вадим и Олешева Дарья, Смоленскаяобл., г. Демидов, школа № 1, учитель Кордина Н.Е.;— Наделяев Денис, средняя школа поселка ЕрофейПавлович, Амурская обл., Сковородинский р-н,учитель Краснёнкова Л.А.;— Чернова Наталья, средняя школа села Сердар,Республика Марий Эл, учитель Чернова Л.И.Задание “Две шарады и логогриф”ОтветыШарада № 1: автомат (а + в + томат).Шарада № 2: компьютер (ком + пью + тер).Логогриф: экран (э + кран).Ответы прислали:— Аджоян Кристина, средняя школа рабочегопоселка Пинеровка, Саратовская обл., Балашовскийр-н, учитель Пичугин В.В.;— Алейникова Анастасия, Вадьковская средняяшкола, Брянская обл., Погарский р-н, учительАлейникова Г.Н.;— Ахматгалиева Диана, Танасюк Артем и ШелухановаТатьяна, г. Челябинск, школа № 124, учительЮртаева Г.Ю.;— Базанов Илья и Кротов Олег, Владимирскаяобл., г. Струнино, школа № 11, учитель Волков Ю.П.;— Битюгова Елена и Чернова Мария, средняяшкола села Сердар, Республика Марий Эл, учительЧернова Л.И.;— Бурмантова Юлия, Совхозная средняя школа,Московская обл., Серебряно-Прудский р-н, поселокУспенский, учитель Жарикова Е.Н.;— Герасимова Наталья и Костина Евгения, средняяшкола деревни Муравьево, Вологодская обл.,учитель Муравьева О.В.;— Грибанов Владлен, Дукач Светлана, ЛысенкоЕкатерина, Овчинникова Елизавета и СоболевИван, г. Лесосибирск Красноярского края, поселокСтрелка, школа № 8 им. Константина Филиппова,учитель Лопатин М.А.;— Иванова Ксения и Мухина Светлана, г. Пенза,школа № 512, учитель Гаврилова М.И.;— Коростелев Иннокентий и Марун Виталий,средняя школа села Восточное Нижегородскойобл., учитель Долгова Г.А.;— Краснова Елена, средняя школа поселкаНово петровский Московской обл., учитель АртамоноваВ.В.;— Лавренов Руслан и Цыганков Евгений, Вадьковскаясредняя школа, Брянская обл., Погарскийр-н, учитель Цыганкова И.Ю.;— Починок Симпфира, средняя школа поселкаЕрофей Павлович, Амурская обл., Сковородинскийр-н, учитель Краснёнкова Л.А.;— Рюмина Екатерина, средняя школа поселкаОсиновка, Алтайский край, учитель ЕвдокимоваА.И.;— Якуба Наталья, средняя школа села ГореловоТамбовской обл., учитель Шитова Л.А.
Задача “Расположить ребят по росту”Напомним, что требовалось расположить именачетырех ребят — Андрея, Бориса, Ивана и Григорияв порядке возрастания их роста, если известно,что Борис не самый высокий, но он выше Андрея иГригория, а Андрей ниже Григория.Ответ: Андрей, Григорий, Борис и Иван.Правильные ответы прислали:— Аджоян Кристина и Бобровская Диана, средняяшкола рабочего поселка Пинеровка, Саратовскаяобл., Балашовский р-н, учитель Пичугин В.В.;— Битюгова Елена и Чернова Мария, средняяшкола села Сердар, Республика Марий Эл, учительЧернова Л.И.;— Васнин Иван, Костромская обл., Буйскийр-н, г.п.п. Чистые Боры, школа № 1, учитель ТарасоваГ.А.;— Волков Андрей, средняя школа деревни Муравьево,Вологодская обл., учитель Муравьева О.В.;— Иванова Ксения и Мухина Светлана, г. Пенза,школа № 512, учитель Гаврилова М.И.;— Коростелев Иннокентий и Марун Виталий,средняя школа села Восточное Нижегородскойобл., учитель Долгова Г.А.;— Рюмина Екатерина, средняя школа поселкаОсиновка, Алтайский край, учитель ЕвдокимоваА.И.;— Танасюк Артем, г. Челябинск, школа № 124,учитель Юртаева Г.Ю.;— Усанина Светлана, средняя школа поселкаЕрофей Павлович, Амурская обл., Сковородинскийр-н, учитель Краснёнкова Л.А.;— Федорченко Александра, средняя школа поселкаНовопетровский Московской обл., учительАртамонова В.В.;— Цыганков Евгений, Вадьковская средняя школа,Брянская обл., Погарский р-н, учитель ЦыганковаИ.Ю. (Евгений решил задачу методом схем);— Якуба Наталья, средняя школа села ГореловоТамбовской обл., учитель Шитова Л.А.Задача “На катке”Напомним условие: “Четыре подруги пришли накаток каждая со своим братом. Они разбились напары и начали кататься. Оказалось, что в каждойпаре “кавалер” выше “дамы” и никто не катался сосвоей сестрой. Самый высокий из компании — ЮраВоробьев, следующий по росту — Андрей Егоров,потом Люся Егорова, Сережа Петров, Оля Петрова,Дима Крымов, Инна Крымова и Аня Воробьева. Ктос кем катался?”Ответ: Юра Воробьев катался с Люсей Егоровой,Андрей Егоров — с Олей Петровой, СережаПет ров — с Инной Крымовой, Дима Крымов — сАней Воробьевой.Правильные ответы представили:— Абрамова Светлана, средняя школа поселкаОсиновка, Алтайский край, учитель ЕвдокимоваА.И.;— Алейникова Анастасия, Вадьковская средняяшкола, Брянская обл., Погарский р-н, учительАлейникова Г.Н.;— Ахматгалиева Диана, Евдокимова Мария и ТанасюкАртем, г. Челябинск, школа № 124, учительЮртаева Г.Ю.;— Базанов Илья, Головченко Тихон, КротовОлег, Манукян Григорий и Миноцкий Ян, Владимирскаяобл., г. Струнино, школа № 11, учительВолков Ю.П.;— Бакланова Елена, средняя школа поселкаНово петровский Московской обл., учитель АртамоноваВ.В.;— Беляева Мария, Костромская обл., Буйскийр-н, г.п.п. Чистые Боры, школа № 1, учитель ВаснинаО.В.;— Бобровская Диана, средняя школа рабочегопоселка Пинеровка, Саратовская обл., Балашовскийр-н, учитель Пичугин В.В.;— Глушаков Андрей, Семак Татьяна и Царева Татьяна,средняя школа деревни Муравьево, Вологодскаяобл., учитель Муравьева О.В.;— Закатов Владислав, г. Ярославль, школа № 33,учитель Ярцева О.В.;— Злобина Елена, средняя школа села Сердар,Республика Марий Эл, учитель Чернова Л.И.;— Коршаков Вадим и Олешева Дарья, Смоленскаяобл., г. Демидов, школа № 1, учитель КординаН.Е.;— Лавренов Руслан, Вадьковская средняя школа,Брянская обл., Погарский р-н, учитель ЦыганковаИ.Ю.;— Лёвина Татьяна и Цыплаков Евгений, г. Пенза,школа № 512, учитель Гаврилова М.И.;— Лазаренко Нина, средняя школа села ВосточноеНижегородской обл., учитель Долгова Г.А.;— Мучник Анна и Прихожан Ирина, средняяшкола села Горелово Тамбовской обл., учитель ШитоваЛ.А.;— Усанина Светлана, средняя школа поселкаЕрофей Павлович, Амурская обл., Сковородинскийр-н, учитель Краснёнкова Л.А.Головоломка “Крест-накрест”РешениеР А С Т РП О Т О КР Е Б Р ОВ Ы В О ДВ О Л Ь ТПравильные ответы прислали:— Андрющенко Александр и Свистунов Николай,Ставропольский край, Кочубеевский р-н, станицаБарсуковская, школа № 6, учитель Рябченко Н.Р.;— Ахматгалиева Диана, Евдокимова Мария, ТанасюкАртем и Шелуханова Татьяна, г. Челябинск,школа № 124, учитель Юртаева Г.Ю.;59май 2013 / ИНФОРМАТИКА
В МИР ИНФОРМАТИКИ № 185 18760май 2013 / ИНФОРМАТИКА— Бакланова Елена, средняя школа поселкаНово петровский Московской обл., учитель АртамоноваВ.В.;— Барановская Татьяна, Елизарова Елена,Жукова Ирина и Цаплина Ирина, средняя школасела Горелово Тамбовской обл., учитель ШитоваЛ.А.;— Бобровская Диана, средняя школа рабочегопоселка Пинеровка, Саратовская обл., Балашовскийр-н, учитель Пичугин В.В.;— Грибанов Владлен, Дукач Светлана, ЛысенкоЕкатерина, Овчинникова Елизавета и СоболевИван, г. Лесосибирск Красноярского края, поселокСтрелка, школа № 8 им. Константина Филиппова,учитель Лопатин М.А.;— Дерюгина Елизавета и Катышева Людмила,средняя школа поселка Осиновка, Алтайский край,учитель Евдокимова А.И.;— Дружинина Анастасия, средняя школа поселкаЕрофей Павлович, Амурская обл., Сковородинскийр-н, учитель Красненкова Л.А.;— Калугин Руслан, средняя школа села Ириновка,Новобурасский р-н Саратовской обл., учительБрунов А.С.;— Климук Анастасия, средняя школа села ВосточноеНижегородской обл., учитель Долгова Г.А.;— Кротов Олег и Миноцкий Ян, Владимирскаяобл., г. Струнино, школа № 11, учитель Волков Ю.П.;— Лёвина Татьяна, Макаренко Светлана и ТомилинАлександр, г. Пенза, школа № 512, учитель ГавриловаМ.И.;— Лопаткина Мария и Храмчук Елизавета, средняяшкола села Сердар, Республика Марий Эл, учительЧернова Л.И.;— Соловьев Иван, Костромская обл., Буйскийр-н, г.п.п. Чистые Боры, школа № 1, учитель ВаснинаО.В.;— Тупицына Лидия, средняя школа деревни Муравьево,Вологодская обл., учитель Муравьева О.В.Новогодний кроссвордОтветыПо горизонтали: 2. Фон. 3. Слово. 4. Дискета.8. Атом. 9. Зеро. 10. Единица. 13. Экран. 14. Цифра.17. Адресация. 19. Игра. 20. Абак. 21. Буфер. 22. Хакер.23. Поток. 25. Вывод. 26. Пилотка. 29. Адаптер.30. Запятая. 31. Диск. 32. Цикл. 33. Альфа.По вертикали: 1. Дорожка. 4. Домен. 5. Абзац.6. Старт. 7. Шрифт. 11. Интеграл. 12. Иерархия.15. Логотип. <strong>16</strong>. Драйвер. 17. Амулет. 18. Ячейка.24. Килобит. 25. Вставка. 27. Ада. 28. Связь. 29. Ара.Правильные ответы представили:— Алейникова Анастасия, Вадьковская средняяшкола, Брянская обл., Погарский р-н, учительАлейникова Г.Н.;— Анюков Дмитрий, средняя школа села Сердар,Республика Марий Эл, учитель Чернова Л.И.;— Ахматгалиева Диана, Вольф Николай, ОдинцоваЕкатерина, Пуговкина Ксения, Танасюк Артем,Чаусов Евгений и Шелуханова Татьяна, г. Челябинск,школа № 124, учитель Юртаева Г.Ю.;— Базылев Юрий, Галушкова Карина и МаксименкоИлья, Республика Карелия, поселок Надвоицы,школа № 1, учитель Богданова Л.М.;— Бакланова Елена и Землякова Ирина, средняяшкола поселка Новопетровский Московской обл.,учитель Артамонова В.В.;— Букин Сергей и Цаплина Ирина, средняя школасела Горелово Тамбовской обл., учитель Шитова Л.А.;— Воротникова Елизавета и Катышева Людмила,средняя школа поселка Осиновка, Алтайскийкрай, учитель Евдокимова А.И.;— Грибанов Владлен, Дукач Светлана, ЛысенкоЕкатерина, Овчинникова Елизавета и СоболевИван, г. Лесосибирск Красноярского края, поселокСтрелка, школа № 8 им. Константина Филиппова,учитель Лопатин М.А.;— Давлетов Артем, средняя школа поселка ЕрофейПавлович, Амурская обл., Сковородинский р-н,учитель Краснёнкова Л.А.;— Лёвина Татьяна, Макаренко Светлана и ТомилинАлександр, г. Пенза, школа № 512, учитель ГавриловаМ.И.;— Новиков Владимир и Пастухов Олег, средняяшкола деревни Муравьево, Вологодская обл., учительМуравьева О.В.;— Сокова Мария, Костромская обл., Буйскийр-н, г.п.п. Чистые Боры, школа № 1, учитель ВаснинаО.В.;— Трептау Татьяна, Вадьковская средняя школа,Брянская обл., Погарский р-н, учитель ЦыганковаИ.Ю.;— Шаповаленко Анастасия, средняя школасела Восточное Нижегородской обл., учительДолгова Г.А.;— Яковлев Степан, Чувашская Республика, г. Канаш,Канашский педагогический колледж, преподавательВоеводина Р.В.Решение задач из старинного учебника математики,который был написан в VII веке армянскимученым Анания Ширакаци, прислали:— Ботова Дарья, Галиуллин Антон, Коптева Алена,Меньшенина Ксения и Танасюк Артем, г. Челябинск,школа № 124, учитель Юртаева Г.Ю.;— Волков Владимир и Глушаков Андрей, средняяшкола деревни Муравьево, Вологодская обл., учительМуравьева О.В.;— Наделяев Денис, средняя школа поселка ЕрофейПавлович, Амурская обл., Сковородинский р-н,учитель Краснёнкова Л.А.;— Цаплина Ирина, средняя школа села ГореловоТамбовской обл., учитель Шитова Л.А.Правильное решение задачи, связанной с передачейфайла по каналам связи за наименьшеевремя от одного мальчика к другому, представили:— Анюков Дмитрий, средняя школа села Сердар,Республика Марий Эл, учитель Чернова Л.И.;
— Козлова Юлия, средняя школа поселка ЕрофейПавлович, Амурская обл., Сковородинский р-н,учитель Краснёнкова Л.А.;— Галиуллин Антон, Калугин Данил и ОрловКирилл, г. Челябинск, школа № 124, учитель ЮртаеваГ.Ю.Оптимальный маршрут передачи: Павел — Ахмед— Семен — Бадри — Владимир (длительностьпередачи — 38 секунд).Правильное решение головоломки “Расстановкачетырех шахматных фигур” представили АхматгалиеваДиана и Шелуханова Татьяна, г. Челябинск,школа № 124, учитель Юртаева Г.Ю. (решение показанона рисунке ниже).КРЕПКИЙ ОРЕШЕКГоловоломка “Россия — чемпион! ☺”Правильное решение задачи “Кто на ком женат?”представили также Грибанов Владлен, Дукач Светлана,Лысенко Екатерина, Овчинникова Елизаветаи Соболев Иван, г. Лесосибирск Красноярскогокрая, поселок Стрелка, школа № 8 им. КонстантинаФилиппова, учитель Лопатин М.А.Задания, предложенные для самостоятельнойработы в статье “Восточный календарь — своимируками”, выполнила Кузнецова Юлия, г. Ярославль,школа № 33, учитель Ярцева О.В. Она разработаладва варианта компьютерной программы, с помощьюкоторой можно определить, какому году повосточному календарю соответствует тот или инойгод нашего летосчисления. С их помощью Юлияустановила, что 1949 год был годом Желтой Коровы,а 2013 год является годом Черной Змеи. Юлиябудет награждена дипломом.Ребус из звездочек, опубликованный в декабрьскомвыпуске, правильно решила БурмантоваЮлия, ученица 6-го класса Совхозной среднейшколы (Московская обл., Серебряно-Прудский р-н,поселок Успенский, учитель Жарикова Е.Н.). Онатакже будет награждена дипломом.Поздравляем!Победителями конкурса № 97 “Информатика нашахматной доске” стали:— Бойкова Юлия, г. Воронеж, лицей № 2, учительКомбарова С.И.;— Василенко Ирина, ученица 3-го класса среднейшколы села Горелово Тамбовской обл., учительДудкина Л.А.;— Воропаев Андрей, г. Воронеж, лицей № 2, учительГаврилова И.В.;— Гавриков Александр, г. Пенза, школа № 512,учитель Гаврилова М.И.;— Медведьков Роман, ученик 1-го (!) класса гимназии№ 40 г. Калининграда, учитель МедведьковаН.А.;— Новиков Алексей, средняя школа поселкаНово петровский Московской обл., учитель АртамоноваВ.В.;— Семенова Елизавета, средняя школа села Сердар,Республика Марий Эл, учитель Чернова Л.И.Все они будут награждены дипломами.В мартовском выпуске “В мир информатики” былиподведены итоги конкурса № 96 (его задание былосвязано с решением задачи перемещения мальчиковна лифте). Одним из победителей этого конкурса сталаВласенко Мария, студентка Ардатовского коммерческо-техническоготехникума, поселок Ардатов Нижегородскойобл., преподаватель Зудин В.П.Дипломами будут награждены также ГладкихВладислава и Пронина Вероника, ученицы лицея№ 4 им. Героя Советского Союза Г.Б. Злотина,г. Орел (учитель Чапкевич И.М.), представившиерезультаты работы над проектами “Палиндромы” и“Числа Фибоначчи”.Поздравляем всех награжденных!Каждая команда провела с каждойпо одному матчу.Напомним, что в головоломке требовалось восстановитьтаблицу результатов встреч четырехкоманд (указать, с каким счетом сыграли командымежду собой) по известной итоговой таблице:В Н П Мячи ОчкиРоссия 2 1 0 9–1 5Испания 2 1 0 5–1 5Италия 1 0 2 2–9 2Португалия 0 0 3 0–5 2Благодаря следующих читателей,приславших правильный ответ:— Грибанова Владлена, Дукач Светлану, ЛысенкоЕкатерину, Овчинникову Елизавету и СоболеваИвана, г. Лесосибирск Красноярского края, поселокСтрелка, школа № 8 им. Константина Филиппова,учитель Лопатин М.А.;— Миноцкого Яна, Владимирская обл., г. Струнино,школа № 11, учитель Волков Ю.П.;— Танасюка Артема, г. Челябинск, школа № 124,учитель Юртаева Г.Ю.,61май 2013 / ИНФОРМАТИКА
В МИР ИНФОРМАТИКИ № 185 187ПОЧТОВЫЙ ЯЩИК62май 2013 / ИНФОРМАТИКАприведем таблицу результатов без указания счетакаждого матча:В Н П Мячи ОчкиРоссия Н В В 2 1 0 9–1 5Испания Н В В 2 1 0 5–1 5Италия П П В 1 0 2 2–9 2Португалия П П П 0 0 3 0–5 0Примечание. “В” — выигрыш, “Н” — ничья, “П” — поражение.Предлагаем восстановить таблицу с указаниемконкретных результатов игр. Ответы присылайте вредакцию.Восемь семейных пар (задачка “на лето”)Восемь семейных пар встретились, чтобы обменятьсякнигами. Мужья и жены, как это принято,носили одну и ту же фамилию; к тому же они имелиодинаковые профессии и водили одинаковые маркиавтомобиля. У каждой пары был свой любимыйцвет. Кроме того, известно, что:1. Маша Иванова и ее муж работают продавцами-консультантами.2. Книгу “Турецкий гамбит” принесла пара, у которой“Хонды” и оба они любят красный цвет.3. Сережа и Катя, его жена, любят коричневыйцвет.4. Люба и Юра Егоровы обожают белый цвет.5. Света Петрова и ее муж работают логистикамии водят “Шкоды”.6. Наташа и ее муж Игорь взяли почитать “Ярмаркутщеславия”.7. Саша и его жена любят розовый цвет и принесли“Пеппи Длинныйчулок”.8. Ира и Данила — менеджеры.9. “Алису в Зазеркалье” позаимствовала пара, котораяводит “Форды”.Об эмблеме рубрики“Японский уголок”В редакцию пришло письмоот учителя математики иинформатики средней школысела Восточное Нижегородскойобласти Галины АлександровныДолговой. Она пишет отом, что ее ученики спрашивают,как переводится на русскийязык иероглиф — эмблема рубрики“Японский уголок”.Отвечаем — данный иероглифозначает друг (выбираяего, редакция имела в видукаждого из вас, дорогие читатели☺).10. Зайцевы — юристы. Они принесли роман“Парфюмер”.11. Сидоровы — врачи. Они купили “Фиесты”.12. Иван и его жена любят зеленый цвет.13. Галине Соловьевой и ее мужу нравится синийцвет.14. Константин и его жена принесли “Фиесту”.Они водят “Лексусы”.15. Одна пара принесла книгу “Три мушкетера”,а взяли почитать “Пеппи Длинныйчулок”.<strong>16</strong>. Пара, которая водит “Субару”, любит фиолетовыйцвет.17. Бухгалтеры взяли почитать “Три мушкетера”.18. Кассиры водят “Ниссан”.19. Анна и ее муж водят “Опель” и принесли “Ярмаркутщеславия”.20. Они же взяли почитать книгу, которую принеслиХабаровы.21. Коля и его жена любят желтый. Они взяли почитать“Сто лет одиночества”.22. Кривцовы работают программистами.23. Книга “Сто лет одиночества” была принесенапарой, которая водит “Лады”.Определите, как зовут супругов в каждой паре,каковы их фамилии и марки машин, какой цветони любят, какую книгу принесли, а какую взялипочитать, кем они работают.Срок представления ответов — 1 октября. Всеприславшие правильный ответ с его обоснованиембудут награждены дипломами.Уважаемые коллеги!Для поощрения самых активных участниковконкурсов, проводимых в разделе “В мир информатики”,редакция может направить вам электронныйвариант диплома.Заявку на диплом просьба прислать в редакциюэлектронной (адрес: vmi@1september.ru)или обычной почтой в апреле–июне. Оформлениедипломов будет проводиться в учебном заведении.Уже после подготовки списков читателей, приславших ответына задания наших конкурсов, были получены письма от:— Киришиной Татьяны, средняя школа поселка Ерофей Павлович,Амурская обл., Сковородинский р-н, учитель КраснёнковаЛ.А., которая правильно решила японские головоломки “судоку”,опубликованные в декабрьском выпуске;— Трептау Татьяны, Вадьковская средняя школа, Брянскаяобл., Погарский р-н, учитель Цыганкова И.Ю.; Татьяна правильнорешила головоломку “Числовой ребус с ЗАЗОРОМ”, атакже одну из задач из старинного учебника математики, которыйбыл написан в VII веке армянским ученым Анания Ширакаци.Ответы на задание “Прилипшая монета” (начало его решениябыло приведено в рубрике “Крепкий орешек” в январском выпуске)представили:— Танасюк Артем, г. Челябинск, школа № 124, учитель ЮртаеваГ.Ю.;— Торопов Александр, средняя школа деревни Муравьево,Вологодская обл., учитель Муравьева О.В.
63апрель 2013 / ИНФОРМАТИКА
Подписка: «Роcпечать» – 32291 (бумажная версия), 19179 (электронная); «Почта России» – 79066 (бумажная версия), 12684 (электронная)