12.07.2015 Views

Выпуск 14

Выпуск 14

Выпуск 14

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

№<strong>14</strong> Издание основано в 1995 г inf.1september.ruУ Ч Е Б Н О- М Е Т О Д И Ч Е С К И Й Ж У Р Н А Л Д Л Я У Ч И Т Е Л Е Й И Н Ф О Р М А Т И К ИИНФОРМАТИКАзбукаРоботландии.От основ до самыхдо...с. 4Устройстваввода и вывода.Теорияотносительности.с. 24Хит ЕГЭ:системылогическихуравнений.с. 30Ха! Хаскель!Серебряная пулясовременногопрограммирования?с. 361september.ruИНФОРМАТИКАсентябрь2011Индексы подписки «Роспечати»: 32291 (бумажная версия), 19179 (электронная); «Почта России»: 79066 (бумажная версия), 12684 (электронная)


О НОМЕРЕсентябрь 2011 / ИНФОРМАТИКАВ НОМЕРЕНА ДИСКЕЭтот номер получилсяочень содержательным иразнообразным. Большуючасть материалов в нембезо всякой натяжки можноназвать эксклюзивными –только у нас и только длянас. Описание исполнителей“Азбуки Роботландии” –уникальный материал, статьяо системах логическихуравнений – на самую злобу,пусть уже и прошедшегодня (но ведь и оглянуться неуспеем, как и новый ЕГЭ повиснетна носу), материал оязыке Хаскель – мы давномечтали его сделать.Читайте с удовольствием.3424303648ОЛИМПИАДЫБои по правиламНАЧАЛКААзбука РоботландииМНЕНИЯУстройства ввода и вывода.Теория относительностиЕГЭСистемы логических уравненийСЕМИНАРHaskell: серебряная пулясовременного программирования?ЗАНИМАТЕЛЬНЫЕ МАТЕРИАЛЫДЛЯ ПЫТЛИВЫХ УЧЕНИКОВИ ИХ ТАЛАНТЛИВЫХ УЧИТЕЛЕЙ“В мир информатики” № 168ИНФОРМАЦИЯПедагогический университет“Первое сентября” предлагаеточно-заочные курсы повышенияквалификации для педагоговМосквы и Московской областиЭЛЕКТРОННЫЕ МАТЕРИАЛЫ:Демонстрационные версии“Азбуки Роботландии” — учебника иметодички (по три полных урока)Демонстрационные версиипрактикумов по исполнителям“РС-1” и “Агент РБ”Пакет “Хиты Роботландии” (версиядля DOS)Программа для решения системлогических уравненийИсходные тексты программ к статьео языке Хаскель и интерпретаторязыка (установочный пакет)ПрезентацииФестиваль “Учительская книга”31 октября — 3 ноябряИНФОРМАТИКПОДПИСНЫЕ ИНДЕКСЫ: по каталогу “Роспечати”: 32291 (бумажная версия), 19179 (электронная версия);“Почта России”: 79066 (бумажная версия), 12684 (электронная версия)http://inf.1september.ruУчебно-методический журналдля учителей информатикиИЗДАТЕЛЬСКИЙ ДОМ“ПЕРВОЕ СЕНТЯБРЯ”ГАЗЕТАИЗДАТЕЛЬСКОГО ДОМАУЧРЕДИТЕЛЬ:ООО “ЧИСТЫЕ ПРУДЫ”Основан в 1995 г.Выходит один раз в месяцРЕДАКЦИЯ:гл. редактор С.Л. ОстровскийредакторыЕ.В. Андреева,Д.М. Златопольский(редактор вкладки“В мир информатики”)Дизайн макета И.Е. Лукьяновверстка Н.И. Пронскаякорректор Е.Л. Володинасекретарь Н.П. МедведеваФото: фотобанк ShutterstockЖурнал распространяетсяпо подпискеЦена свободнаяТираж 3000 экз.Тел. редакции: (499) 249-48-96E-mail: inf@1september.ruhttp://inf.1september.ruГлавный редактор:Артем Соловейчик(генеральный директор)Коммерческая деятельность:Константин Шмарковский(финансовый директор)Развитие, ITи координация проектов:Сергей Островский(исполнительный директор)Реклама и продвижение:Марк СартанМультимедиа, конференциии техническое обеспечение:Павел КузнецовПроизводство:Станислав СавельевАдминистративнохозяйственноеобеспечение:Андрей УшковГлавный художник:Иван ЛукьяновПедагогический университет:Валерия Арсланьян (ректор)Первое сентября – Е.БирюковаЖУРНАЛЫИЗДАТЕЛЬСКОГО ДОМААнглийский язык – А.ГромушкинаБиблиотека в школе – О.ГромоваБиология – Н.ИвановаГеография – О.КоротоваДошкольноеобразование – М.АромштамЗдоровье детей – Н.СёминаИнформатика – С.ОстровскийИскусство – М.СартанИстория – А.СавельевКлассное руководствои воспитание школьников –О.ЛеонтьеваЛитература – С.ВолковМатематика – Л.РословаНачальная школа – М.СоловейчикНемецкий язык – М.БузоеваРусский язык – Л.ГончарСпорт в школе – О.ЛеонтьеваУправление школой – Я.СартанФизика – Н.КозловаФранцузский язык – Г.ЧесновицкаяХимия – О.БлохинаШкольный психолог – И.ВачковЗарегистрированоПИ № ФС77-44341от 22.03.2011в Министерстве РФпо делам печатиПодписано в печать:по графику 15.08.2011,фактически 15.08.2011Заказ №Отпечатано в ОАО “Чеховскийполиграфический комбинат”ул. Полиграфистов, д. 1,Московская область,г. Чехов, <strong>14</strong>2300АДРЕС ИЗДАТЕЛЯ:ул. Киевская, д. 24,Москва, 121165Тел./факс: (499) 249-31-38Отдел рекламы:(499) 249-98-70http://1september.ruИЗДАТЕЛЬСКАЯ ПОДПИСКА:Телефон: (499) 249-47-58E-mail: podpiska@1september.ruДокументооборотИздательского дома“Первое сентября” защищенантивирусной программойDr.Web


ОЛИМПИАДЫ28 июля в ТаиландезавершиласьXXIII Международнаяолимпиада школьниковпо информатике (IOI).От каждой страныв IOI можетучаствовать неболее 4 школьников(исключением являетсястрана-организатор,которая можетвыставить “вторуюкоманду”). В этомгоду в олимпиадеприняли участие307 школьников из80 стран мира.Участники олимпиадыпишут программына одном из двухдоступных языковпрограммирования(Free Pascal илиС++), после чегоотсылают программудля автоматическойпроверки.Боипо правиламУже второй год олимпиада проходитпо существенно измененным правилам.Если раньше участник не получалинформации о результатах проверкиотправленного им решения, то сейчастакая информация участникам предоставляется.Участник может узнать результатпроверки отправленного им решенияна полном наборе тестов и в соответствиис полученной информациейпланировать дальнейшие действия.Сами тесты, конечно, остаются участникуне известными. В зачет идет лучшаяиз попыток. Заметим, что подобнаясистема проверки не всегда облегчаетжизнь участникам. При наличии в программеошибки (особенно неизвестнойошибки) можно потратить все времятура на отладку одной задачи, котораявроде бы решена, и так и не приступитьк решению других задач.В отличие от 2010 года все задачиотносились к традиционной олимпиаднойтематике и имели полное решение.Дадим краткую характеристикузадачам олимпиады. Задача garden потематике похожа на задачу быстроговозведения в степень. При ее решенииприменяется такая идея, как быстрыйпоиск непериодической части и периодав циклическом процессе. Задача race(самая сложная задача первого тура)предполагает знание структур данныхи техники хеширования. Задача ricehubиспользует технику линейного прохождениямассива с помощью несколькихуказателей. Правда, обычно используютсядва указателя, а в данной задаченеобходимы три. Задача второго тураcrocodile решается с помощью модифицированногоалгоритма Дейкстрыпоиска кратчайшего пути в графе. Задачаelephants решается с помощьюдостаточно сложных структур данных(например, таких, как Декартово деревопо неявному ключу). В задаче parrotsучастники были введены в заблуждениеформулировкой условия — из нее вродебы следовало, что задача не имеет точногорешения и оцениваться будут продвиженияв качестве приближенных решений.На самом деле задача решаласьс помощью комбинаторных методов, нопоняли это только 7 участников.По результатам соревнований былоприсуждено 27 золотых, 49 серебряныхи 78 бронзовых медалей. Абсолютнымчемпионом третий год подряд стал ГеннадийКороткевич, десятиклассник изГомеля. Для Геннадия это уже шестаямеждународная олимпиада и пятаяподряд золотая медаль. В этом году победительнабрал полный балл. Третьеместо занял россиянин Павел Кунявскийиз Саратова, а пятое — АлександрТимин из СУНЦ МГУ, Москва. Впервыеза много лет сразу два россиянина оказалисьв первой десятке. Два другихроссиянина — Дмитрий Егоров и ЕгорСуворов (оба петербуржцы) — получилисеребряные медали. Полныерезультаты можно посмотреть здесь:http://158.250.33.215/~ejudge/player_all.html.В неофициальном командном зачетепо набранным в сумме баллам победителемстала команда Китая, на второмместе — команда России, на третьем —команда США.3сентябрь 2011 / ИНФОРМАТИКА


НАЧАЛКА4сентябрь 2011 / ИНФОРМАТИКАА.А. Дуванов,г. Переславль-Залесский,kurs@robotland.pereslavl.ruН.Д. Шумилина,г. Тверь,nshumilina@yandex.ruАзбукаРоботландииПредисловие“Азбука Роботландии” — это проект,запущенный в 2010/2011 году.Цель — создать четырехгодичныйкурс информатики для начальнойшколы, отвечающий, с одной стороны,современному уровню развитияинформатики (как по интерфейсусамого УМК курса, так и по его содержанию),а с другой, работающий наопережение за счет опоры на фундаментальныеосновы информатики иразвитие алгоритмического мышленияобучаемых.Учебный курс по информатике базиснымучебным планом не предусмотрен,но необходимость в систематическомобучении информатикемладших школьников существует.Формирование основ информатики,способствующих развитию мышленияшкольника (в частности, развитиюабстрактного, логического,алгоритмического мышления), поможетдетям не только в успешномформировании ИКТ-компетентности,но и в успешном освоении предметовшкольной программы, а также в будущемпрофессиональном самоопределении.О необходимости отдельного курсаинформатики говорится и в “Программеформирования универсальныхучебных действий у обучающихся наступени начального общего образования”,являющейся частью ФГОСначального общего образования.В этой Программе предлагается варианторганизации систематическогообучения младших школьниковосновам информатики и информационныхтехнологий, которым и воспользовалисьавторы курса “АзбукаРоботландии”: “Освоение уменийра ботать с информацией и использоватьинструменты ИКТ может входитьв содержание факультативныхкурсов, кружков, внеклассной деятельностишкольников”.Факультативный курс (или кружок)“Азбука Роботландии” можетбыть отнесен к внеурочным занятиямнаучно-познавательного направления.В статье описывается процесс работынад проектом, при котором созданиекурса совмещалось с его преподаваниемв школах, и предъявляютсярезультаты первого года — построенныйучебно-методический комплекс.


На диске, сопровождающем эту статью, записаныматериалы, обеспечивающие проведение трех первыхуроков курса:• Учебник.• Рекомендации по проведению уроков.• Иллюстративные материалы к урокам (презентации).• Электронные заготовки бумажных дидактическихматериалов.Кроме того, в качестве подарка от Роботландиина диск записан пакет со старым ДОС-продуктом“Хиты Роботландии”.Роботландия?Где-то я слышал это слово!Курс с таким названием вошел в историюшкольной информатики как образец комплексногопедагогического продукта, удачно соединяющегов себе идейный фундамент, учебник дляшкольника, программное обеспечение и рекомендациидля учителя.Азбука Роботландии —продолжаем традицииРазработка продуктав процессе его эксплуатацииРабота над “Роботландией” непосредственно вшкольном классе объяснялась очень просто — у одноименногопредприятия тогда просто не было отдельногопомещения. Сотрудники были вынужденыработать в уголке под аккомпанемент урока, которыйодин из них вел в этом же самом классе. Эти трудностии неудобства оказались счастливыми — дети непозволяли разработчикам отрываться от своих возможностейи потребностей, и откровенно голосовалина уроках своим интересом или своею скукою.Вот она, плодотворная нива для выращиваниякурсов!Когда возникла идея создания “Азбуки Роботландии”,мы решили и этот курс возделывать в школьномклассе. На виду учителей, детей и их родителей.Ставка была сделана на:• разработку продукта в процессе его эксплуатации;• создание современного комплексного педагогическогообеспечения;• упор на фундаментальные азы информатики иразвитие мышления школьника.Структура нового курсаНесмотря на солидный возраст этой системы(20 лет!) и безнадежно устаревший досовский интерфейс,“Роботландию” до сих пор используют вшколах, и это говорит о высоком качестве этогопедагогического продукта, ориентированного нена изучение быстротечного программного обеспечения,а на изучение фундаментальных основ информатики,инвариантных по отношению к сменекомпьютерных поколений.Успех “Роботландии” в значительной степениопределился и тем, что курс рождался на реальныхшкольных уроках, а не в стенах академической лаборатории.Даже рабочие места сотрудников располагалисьв школьном компьютерном классе.То, что вечером обсуждалось разработчиками, наследующий день работало с детьми в классе и корректировалосьпо ходу дела. Обсуждались и уточнялиськак общие методические линии, так и конкретныекомпьютерные программы, оттачиваласьих функциональность, тщательно продумывалисьинтерфейс и дизайн.Старый ДОС-пакет “Хиты Роботландии”, включающийв себя саму “Роботландию”, пакеты: “Конструктор”,“Зимние вечера” и “Азы программирования”,записан на диск, сопровождающий этотматериал.В “Азбуке” запланировано 4 ключевых раздела,соответствующих четырем годам обучения:• 1-й год. Компьютер• 2-й год. Информация• 3-й год. Алгоритмы• 4-й год. ИнтернетТаким образом, “Азбука Роботландии” позиционируетсякак курс, закладывающий основы компьютерной,информационной, алгоритмической икоммуникационной грамотности младших школьников.В настоящий момент создан учебно-методическийкомплекс первого года обучения “Компьютер”,включающий в себя:• электронный интерактивный учебник-лабораторию(интерактивные тексты, тренажеры, практикумы,зачеты, вопросы и домашние задания);• электронный сборник поурочных методическихрекомендаций;• сборник поурочных иллюстративных материалов(презентаций);• сборник дидактических раздаточных материалов.Упор на фундаментальностьЗадача курса по-роботландски очевидна: помочьмалышам освоить азы информатики.5сентябрь 2011 / ИНФОРМАТИКА


НАЧАЛКА6сентябрь 2011 / ИНФОРМАТИКАОтметим: фундаментальные азы, те, которыеустойчивы по отношению к бурным переменам современногообщества и которые способны подготовитьдетей к информационным реалиям на многолет вперед, то есть подготовить к жизни в обществе,об устройстве которого сейчас ничего не известно.Задача трудная, особенно если первый год курсамы решили посвятить компьютеру, ведь важнона первом этапе освоить базовый инструмент современнойинформатики. Освоить конкретно, напрактике, но фундаментально, даже в той части,которая касается изменчивого интерфейса с учетомсовременных тенденций его развития.Интерфейс современных приложенийдинамичен, как с функциональной, так и свизуальной точки зрения. Визуально такойинтерфейс повторяет привычную физикуреального мира. Например, реальные предметыне исчезают мгновенно в одном местеи не возникают ниоткуда в другом (нультранспортировкапока еще встречается толькоу фантастов). Современный интерфейсиспользует для имитации физических сущностейэкранных объектов такой прием, как“плавный переход” (постепенное растворение,раздвижка/схлопывание с конечнойскоростью и т.п.). Даже в арсенале современногоВеба сегодня распространены такиеинтерфейсные шаблоны, как прямое (контекстное)редактирование данных, перетаскивание,всплывающие контекстные инструментыи приглашения, оверлеи, инлеи,виртуальные страницы, автозаполнение,управление жестами и другие приемы, направленныена создание комфортной средыдля пользователя, среды, которая не требуетчтения длинных инструкций, становится понятнойв ассоциации с привычной деятельностьюв обычном реальном мире.Мы хотим дать представление о составе компьютера,о принципах его работы, и мы хотим, чтобы детиосвоили современный интерфейс на практике.Но самое главное — мы хотим научить детеймыслить алгоритмически, ведь основа информатики— это теория и практика составления алгоритмовдля обработки информации.Развитие алгоритмического мышления — нашаосновная цель, она формулировалась в Роботландии,и к ней мы будем стремиться в новом курсе.Заметим, мы не хотим подменять другие формымышления алгоритмическим!Мы хотим сформировать алгоритмическое мышлениенаряду с другими формами мышления. Этонаша специфическая образовательная задача.Алгоритмическое мышление — это способностьоблечь абстрактную идею в последовательностьконкретных шагов, необходимых дляее воплощения на практике.Алгоритмическое мышление полезно человеку нетолько при работе с компьютером, оно полезно влюбом (самом творческом) деле, ибо учит превращатьабстракцию в реальность.Художник мечтает нарисовать красивыйпейзаж с видом на озеро. Он может мечтатьоб этом сколько угодно, если... Если не начнетмыслить алгоритмически! Он должен облечьсвою абстракцию в конкретные формы(выбрать натуру, продумать композицию,освещение, цвет, тональность...). Он должен,наконец, встать с дивана и сделать что-то алгоритмическое,выражаемое глагольнымиформами: умыться, пойти, найти, купить,собрать, организовать, нарисовать.Конечно, мы хотим воспитывать по ходу дела ипри любой к тому возможности и то, что обозначаютоборотом “информационная компетентность”.То есть мы хотим сформировать у детей привычкупри решении задач обращаться к адекватному инструменту(не забивать гвозди микроскопом, нонаходить молоток с удобной ручкой).Наконец, мы хотим способствовать общему развитиюребенка (это задача любого предмета). Мыхотим привить любовь к чтению, письму, думаниюи учению. Мы хотим способствовать формированиюпривычки находить точные формулировки,умению корректно вести спор, отстаивать свои позиции.Кроме всего этого, мы хотим еще двух важныхвещей:• раскрытия индивидуальности;• проявления коллективизма.Воспитанию этих качеств будут способствоватьвыполнение творческих домашних заданий и учебныекомандные игры в классе.Задачи курса для первого классаМы хотим познакомить первоклассников с базовыминструментом современной информатики —компьютером.Это основная тема курса в первом классе.Более конкретно задачи первого года обученияможно сформулировать так:• Состав и функционирование компьютера.Многообразие устройств, подключаемых к компьютеру.• Введение в компьютерный интерфейс, реализуемыйс помощью физических устройств (мышь,клавиатура, тачпад, сенсорный экран) и системыэкранных объектов, предназначенных для взаимодействияс программным обеспечением (значки,окна, курсоры, меню).Кроме того, дети освоят текстовое редактированиена базе учебного (строчного) редактора, снабженногосистемой контроля выполнения заданий.Однако что бы мы ни рассказывали детям, какиедействия ни учили бы выполнять на компьютере,мы будем постоянно “гнуть” свою линию: “фор-


мировать алгоритмическое мышление”, и будемсвязывать дела компьютерные с делами от них далекими,показывая, что разные идеи имеют общиекорни, как, например, иконка на мониторе и пиктограммана дверях туалета.Следует особо отметить, что наряду с неформальнымиалгоритмами уже на первом году обучениявводятся и формальные — дети собирают,запускают и отлаживают программы для роботовна экране компьютера.ИгрыИгровые формы традиционно используются вобучении младших школьников.В “Азбуке” предлагается авторская реализацияданного принципа. Игра сопутствует практическивсем разделам курса и проводимым занятиям.Например, объяснение нового материала, проверкаусвоенных знаний ведется с использованиемроботландских героев (Вася Кук, Буквоед, Хролик,Трям, Прям, Кукарача, Агент РБ и других).МетодикаПринцип максимумаМетодика курса учитывает, конечно, возрастныеособенности младших школьников, но пытается достичьпри этом максимума возможного в развитиидетей, делая ставку на ассоциативные связи ивыстраивая последовательность маленьких шагов,связывающих простое и сложное, конкретное и абстрактное.Особенности обучения• Использование игровых форм обучения, какпри работе за компьютером, так и при коллективнойработе с учителем.• Использование сюжетной основы при подаченового материала.• Продвижение к сложной деятельности или абстрактномупонятию методом восходящей цепочкишагов: от простого — к сложному, от конкретного— к абстрактному.• Обязательное подкрепление любой теориипрактической деятельностью.• Обязательные целевые установки для каждогозадания с понятной детям мотивацией.• Непрерывный контроль знаний на каждомуроке (система тестов-зачетов) и зачетных занятийпо итогам каждой темы.• Поощрение проявления индивидуальностипри выполнении творческих работ.• Формирование навыков работы в коллективе.• Предоставление детям для работы в школе (апри желании и дома) обучающих компьютерныхсред, выполненных на базе современных дизайнерскихи интерфейсных решений.• Вовлечение в процесс обучения, по возможности,домашних наставников (пап, мам, братьев,сестер…).• Использование социальных сервисов Интернетадля публикации детских работ и создания портфелядостижений каждого ребенка.Прокомментируем отдельные важные моментыметодики.Иллюстративные презентацииДля проведения урока учитель может использоватьиллюстративные материалы (презентации),которые входят в состав УМК курса.ОценкиРезультаты работы детей оцениваются не ввиде традиционных оценок, а с помощью “почетныхзваний”: Профессор, Студент, Торопыжка,Незнайка и вручением “дипломов” (“профессорам”и “студентам”).ФизминуткиФизкультурные паузы, или физминутки, становятсяне только комплексами физических упражнений,но и игровыми фрагментами урока. “Превращаемсяв курсор”, “Буратино и Пьеро”, “Окно программы”,“Глаза и пальцы”, “Кто внимательнее?” идругие комплексы упражнений, с удовольствиемвыполняемые детьми, позволяют лучше усвоитьматериал занятия. В том числе, физминутки позволяюторганизовать серии логических и алгоритмическихзаданий-упражнений.Театр Роботландии“Театр Роботландии” — одна из реализаций игровойформы обучения. Театрализация подразумеваетрозыгрыш в “лицах” некоторого информационногодействия или процесса.Например, дети разыгрывают вывод информациииз памяти компьютера на монитор или на звуковыеколонки, демонстрируют ввод с клавиатурытекста в память компьютера.Сначала детям объясняется задача, сценарий, затемраспределяются роли, раздаются необходимыереквизиты, и дети разыгрывают сценку.Роботизированные игрушкиИгровые моменты занятий могут быть связаны сдемонстрацией роботизированных игрушек, которыеиспользует учитель или которые приносят детипо теме занятия (например, игрушки, как устройстваввода или вывода информации), или в видеигры с использованием этих игрушек.Практикум за партойОдной из особенностей “Азбуки” является предметнаядеятельность в виде практикума, предшествующаяработе за компьютером.После объяснения нового материала дается заданиес использованием дидактических раздаточныхматериалов: собрать элементы в правильнойпоследовательности, собрать картинку, рассорти-7сентябрь 2011 / ИНФОРМАТИКА


НАЧАЛКАровать объекты, поработать на интерактивной доске(вписать пропущенные буквы, установить соответствие,выполнить задание практикума путемперетаскивания элементов).Практикум за компьютеромКомпьютерные практикумы предполагают активнуюработу для достижения поставленной цели, идети попутно наращивают интерфейсные навыки.В примере, показанном на иллюстрации, детиработают со средой “Паспорт устройства” (наэкране стрелками показаны датчики компьютеризированноговездехода).Ученику предъявляется изображение устройства,подключаемого к компьютеру. Он должен ввыпадающих списках выбрать название устройства(“датчики”) и его назначение (“проверка местности”).Затем включить нужную радиокнопку(“ввод”) и, наконец, нажать кнопку Готово.Регулярный контроль знаний осуществляется вразных формах, в том числе и в виде компьютерногозачета по теме занятия.Оценивание ведется с использованием традиционныхвизуальных образов: Профессор (задание выполненобез ошибок), Студент (одна-две ошибки),Торопыжка (более двух ошибок), Незнайка (многоошибок).Составные части занятияЗанятие строится с учетом длительности, рекомендованнойдля начальной школы. Занятия первогогода обучения длятся 35 минут, со второго почетвертый классы — 45 минут. Занятие строится последующему “типовому” сценарию:1. Повторение пройденного материала в виде ответовна вопросы.2. Объяснение нового материала.3. Физминутка.4. ПрактикумП (за партой).5. ПрактикумК и Зачет (работа за компьютером).6. Подведение итогов занятия.Работа за компьютером является одним из шестиэтапов занятия и занимает не больше 20 минутв соответствии с гигиеническими “Требованиямик условиям реализации основной образовательнойпрограммы начального общего образования” в рамкахстандарта начального общего образования второгопоколения.Отметим, что необходимостив более длительнойработе за компьютером ине возникает. Ведь на обучениехорошо работают идругие, некомпьютерныечасти урока.8сентябрь 2011 / ИНФОРМАТИКАЗачетный классПотому чтомы пилотыВ 2010–2011 учебномгоду в пилотном режиме была запущена перваячасть курса — “Компьютер”. За работу взялись 9учителей из 7 школ (Мурманск, Тверь, Челябински Белорецк Челябинской области) и 15 групп детей(всего 168 первоклассников и 15 второклассников).В работе участвовали не только учителя информатики,но и два учителя начальной школы.Отдельно отметим важнейший момент — одиниз авторов “по совместительству” работал тьютором,второй внимательно следил за уроками по видеозаписи.Кроме учителей-тьюторов в проекте принялиучастие 3 советника — они хотели, но по разнымпричинам не смогли работать со школьниками врамках проекта.Курс был реализован в форме кружка. В школах,являющихся пилотными площадками по введениюновых стандартов начального общего образования,


кружок действовал в рамках дополнительных занятийшколы полного дня.Первые уроки прошли в конце октября, большаячасть групп начала занятия со второй четверти.Последние занятия состоялись в конце мая, параллельнос окончанием учебного года в школах.Как мы леталиСетевые сервисыДля взаимодействия участников проекта былсоздан электронный список рассылки.На первом этапе именно он помог всем понятьобщие идеи курса, его цели и задачи. В дальнейшемсписок выступил в качестве рабочего коммуникационногоинструмента. Через него шло все публичноеобщение, и тьюторы публиковали на нем отчетыо прошедших уроках.Кроме того, были задействованы документыGoogle (публикация домашних заданий, правда,не востребованная в пилоте), веб-альбомы Google(фоторепортажи уроков и работы школьников),YouTube (видеорепортажи уроков и учебные роликик урокам).Взаимодействие с родителямиАвторы рассчитывали на активную помощь домашнихнаставников. Поэтому тьюторам было рекомендованодо начала занятий провести встречис родителями (во время одного из текущих школьныхродительских собраний).На этой встрече предлагалось объяснить содержательнуюсторону предстоящих занятий и техническую,относящуюся к работе с учебником в домашнихусловиях.Дальнейшее взаимодействие с родителями укаждого учителя строилось по-своему. Учитель начальныхклассов контактирует с родителями практическикаждый учебный день. Учитель информатикилишен такой возможности. Был опробованвариант создания Google-группы для родителейпервоклассников.Список рассылки помог распределить детей погруппам в удобное для посещения время, позволилоперативно извещать родителей о датах занятийили их изменениях, об особенностях изучаемыхтем и заданий, о характерных ошибках, к которыминогда подталкивали детей родители, исходя изсвоего понимания заданий (например, в задании спиксельным рисованием).От родителей поступали предложения друг другуо совместных домашних занятиях детей, в случае,если кто-то испытывал затруднения с доступом кИнтернету. С помощью списка часть родителей отвечалана вопросы анкеты, которая была предложенав конце учебного года.Всего за учебный год на списке рассылки былоопубликовано 77 сообщений. Из них 38 — учителем.Взаимодействие через электронную связь было налажено,Google-группа показала себя действенныминструментом. Связь между учителем и родителямишла и по личным электронным адресам.Замечание. “Один урок в учебнике — одно учебноезанятие”. Подобный режим обучения получался приподдержке школьных занятий систематической домашнейработой детей с электронным учебником под руководствомнаставника. Если учитель не рассчитываетна работу детей дома, время обучения увеличивается.Опыт пилотных групп показал, что в одном случае в течениепервого (неполного) года было освоено 4 темы(20 уроков), а в другом 3 темы (15 уроков). При работетолько в классе можно рассчитывать на основной(минимальный) уровень освоения курса (означающийвыполнение обязательных, но не всех предложенных вучебнике, заданий).Мониторинг занятийУчителя описывали каждое проведенное занятиеи отправляли свой отчет на список рассылки проекта.В результате возникающих обсуждений вносилиськоррективы в трактовки учебника, в методикупроведения занятий.В процессе подобных обсуждений, например, родиласьидея проведения обобщающего урока в концекаждой темы (“экзамен в Роботландии”).Уроки, по возможности, фотографировались иснимались на видео.Выложенные в Интернет, они были доступны дляродителей и коллег. В съемке неоценимую помощьоказали родители, а также коллеги-учителя.Где приземлилисьРаскрывая стержневые темы курса:• знакомство с устройством и функционированиемкомпьютера и• введение в компьютерный интерфейс, реализуемыйс помощью физических устройств и экранныхобъектов,— мы не забывали и о сверхзадачах — о формированииалгоритмического мышления, об общемразвитии ребенка, о раскрытии его индивидуальностей(через творческие домашние задания) и демонстрациипреимуществ кооперации (через учебныекомандные игры и поощрение взаимопомощипри выполнении зачетов и практикумов).АлгоритмикаГоворя о формировании алгоритмического мышленияи развитии практических навыков работы накомпьютере, необходимо отметить замечательноепереплетение двух этих направлений, случившеесяв нашем курсе.Осваивая набор и редактирование текста, мыприступили к выполнению и составлению алгоритмов,и даже к программированию! Причем работав этом направлении началась со второго занятия, споявления на уроке термина “алгоритм”.9сентябрь 2011 / ИНФОРМАТИКА


НАЧАЛКАВ дальнейшем эта линия была поддержана двумяспециальными программируемыми исполнителями.Ребята с большим удовольствием выполняликак задания, представленные в печатном виде,так и на компьютере, с помощью электронногоучебника.Практикумы, связанные с алгоритмизацией ипрограммированием, — это:• 15 заданий на выполнение или сборку алгоритмов(из готовых действий);• 23 задания на программирование редакторастроки (исполнитель РС-1);• 70 упражнений с шифровками (исполнительАгент РБ).Навыки набора текстаПараллельно с основными темами не прекращаласьработа на клавиатуре.Дети освоили:• набор русского и английского текста в строчномредакторе;• использование модификатора и переключателя ;• набор на клавиатуре специальных знаков;• редактирование текста с помощью операцийи .В курсе предусмотрено 65 упражнений на освоениеклавиатурного набора и редактирование текста.Первые итогиНепрерывный мониторинг “полета” (в том числепросмотр видеозаписи уроков), участие одного изавторов в проекте в качестве тьютора, анкетированиев конце учебного года (тьюторов, советников,родителей) — все это позволяет с уверенностью говоритьо том, что, работая по принципу максимума(максимума возможного в развитии детей), мы всеже не “перегнули палку”, сумели сохранить детскийинтерес, не превышая при этом допустимые нормыработы за компьютером.Пилотом остались довольны учителя (в том числеи благодаря солидной методической поддержкекурса) и родители.Чему научилисьВ результате работы пилота у детей было сформировано:• представление об устройстве компьютера, егоосновных и периферийных блоках;• представление о программном обеспечении —основе автоматической работы компьютера;• представление об элементах экранных объектов,необходимых для взаимодействия человека ипрограммного обеспечения компьютера (значки,окна, курсоры, меню);• умение работы с устройствами ввода (клавиатура,мышь);• первичное умение работать с текстом на компьютере(набирать, редактировать, сохранять);• умение понимать, выполнять и строить несложнуюпоследовательность действий (работа салгоритмами и программами).Все это было достигнуто благодарясовету Васи Кука, одного из главных героевРоботландии, который не уставалповторять: “Моя голова помнит лишьто, что делают мои руки!”10сентябрь 2011 / ИНФОРМАТИКАРОБОТЛАНДСКИЙ УНИВЕРСИТЕТ ПРОИЗВОДИТ НАБОР СТУДЕНТОВ НА 2011/2012 УЧЕБНЫЙ ГОДВ университет (руководитель — Дуванов Александр Александрович)принимаются коллективные, а на курс “42. Web-конструирование” коллективныеи индивидуальные ученики.Коллективный студент — это группа детей, работающая под руководствомодного или нескольких наставников (наставник, как правило,школьный учитель).Индивидуальный студент — это учитель, желающий пройти обучениеиндивидуально, без группы детей.В конце годичного курса при успешном обучении школьный учительполучает удостоверение от негосударственного образовательного учреждения“Роботландия” и удостоверение государственного образца о прохождениикурсов повышения квалификации и переподготовки работниковобразования. Школьники получают удостоверение от “Роботландии”.Занятия в университете платные (цены — на сайте www.botik.ru/~robot). Они начинаются 10 октября текущего года и продолжаютсяНомер и название курсаВозрастдетейКуратор курса11. Зимние вечера 3–4-е классы Первин ЮрийАбрамович12. Азы информатики-I. Знакомимся скомпьютером. Работаем с информацией<strong>14</strong>. Азы информатики-II.Пишем на компьютере3–5-е классы4–6-е классы31. Азы программирования-I.6–8-е классыПлюсик и Кукарача32. Азы программирования-II.7–9-е классыКорректор42. Web-конструирование СтаршиеклассыКРАТКОЕ ОПИСАНИЕ КУРСОВКацай ИринаИвановнаКацай ИринаИвановнаСадовая ИринаВладимировнаСадовая ИринаВладимировнаДуванов АлександрАлександровичв течение двух семестров до мая следующего года. Для подписчиков “Информатики”предусмотрена 10%-ная скидка за обучение.Характерные черты Роботландской школы:1. Совместное обучение учителя и школьников в рамках однойкоманды.2. Турнирный цикл обучения.3. Моделирование коллективной деятельности.4. Реальная практическая польза детских проектов.5. Перекрестные проверки работ.6. Развитые горизонтальные связи.Заявки принимаются по адресу: kurs@robotland.pereslavl.ru до 1 октября.Для получения более подробной информации можно написать поадресу kurs@robotland.pereslavl.ru (администрация университета) илизаглянуть на сайт www.botik.ru/~robot (здесь можно отправить электроннуюзаявку).Описание курсаЗнакомство с алгоритмами и исполнителями, электронная почта;детские конкурсыНачала информатики для малышей. Коллективная работа наWiki-сайте и других сервисах Web 2.0В рамках обозначенной темы курс связывает пять контентов: познавательный,инструментальный, концептуальный, дизайнерскийи творческий. Коллективная работа на Wiki-сайте и других сервисахWeb 2.0Для детей, знакомых с понятиями “исполнитель”, “алгоритм”, “программа”и желающих поближе познакомиться с программированиемПродолжение курса 31 на базе исполнителя КорректорСоздание сайтов на базе HTML+CSS+JavaScript (последнее факультативно).Основы проектирования, веб-дизайна и юзабилити. Планируетсякружок по теме, связанной с JavaScript


ПАРА СЛОВА.А. Дуванов,г. Переславль-Залесский,kurs@robotland.pereslavl.ruН.Д. Шумилина,г. Тверь,nshumilina@yandex.ruАлгоритмы ипрограммы“АзбукиРоботландии”“Азбука Роботландии” — это четырехгодичныйкурс информатики длямладших школьников, создаваемый впроцессе (и с учетом) его использованияв школьных классах. Отдельная статья“Азбука Роботландии” описывает созданныйк настоящему моменту УМК первогогода (раздел “Компьютер”) и рассказываето том, как курс работал (и создавался)в рамках пилотного проекта, запущенногоосенью 2010 года.Данная статья описывает алгоритмическуюлинию курса. В частности, рассказываето двух новых программируемыхисполнителях, придуманных в процессеработы над проектом.Развитие алгоритмического мышления— основная задача “Азбуки Роботландии”,и мы старались решать еена каждом занятии, не ограничиваяськрасивыми лозунгами на вратах нашегопроекта.Понятие алгоритма вводится на второмзанятии и с этого момента становитсярабочим словом. Напомним, чтопервая часть курса, о которой идет речьв статье, ориентирована на учениковпервого класса.На диске, сопровождающем эту статью,записаны:• Демоверсия учебника (с тремя уроками).• Демоверсия методички (с тремяуроками).• Набор практикумов исполнителяРС-1.• Набор практикумов исполнителяАгент РБ.Икра по-роботландски(фрагмент урока 2из учебника)Азбукой называют алфавит. А ещеазбукой называют букварь — книгу дляобучения грамоте.“Азбука Роботландии” — это нашбукварь по информатике. Мы будемучиться компьютерной грамоте, учитьсяуправлять роботами.Сегодня выучим четыре буквы из “АзбукиРоботландии”. Эти буквы легко запомнить— из них складывается слово ИКРА.Информатика — наукаи школьный предмет.Учит работать на компьютере— основноминструменте информатики.Слово “информатика” созвучно сословом информация. Это не случайно.Ведь компьютер работает с числами,11сентябрь 2011 / ИНФОРМАТИКА


СЕМИНАР12сентябрь 2011 / ИНФОРМАТИКАсловами, картинками, звуками, а это все — информация.Компьютер — прибор, на котором можно:• читать;• писать;• считать;• рисовать;• играть;• сочинять музыку;• общаться;• управлять роботами;• и многое другое.Робот — это устройство, которое выполняетработу самостоятельно, автоматически.Алгоритм — это план выполненияработы.Компьютер всегда работает поплану, то есть по алгоритму.Алгоритм — это план, в которомописано, что и как надо делать.Мама посылает дочку за продуктами и говорит:— Сходи, Катюша, в магазин, купи пакет молокаи кусок сыра.Это алгоритм. Описание того, что нужно сделать:1. Сходить в магазин.2. Купить молока и сыра.А если в магазин послать робота? Робот не человек,и ему нужно описать все подробно:• адрес магазина;• как идти, быстро или медленно;• что делать, если молока или сыра нет;• куда положить продукты;• как возвращаться.Алгоритм — это план работы.Робот работает по алгоритму.Алгоритм — самое важное слово в нашей азбуке!Замечание. Отметим, что предметом науки “информатика”является информация (передача, обработка ихранение информации), а вовсе не компьютер. Компьютер— это инструмент информатики, как микроскоп —инструмент биологии, компас — инструмент географии,телескоп — инструмент астрономии.Однако достижения современной информатики базируютсяисключительно на возможностях компьютернойтехники (невозможны без нее), поэтому информатикаоднозначно ассоциируется с компьютером.Первоклассникам нужно объяснить, чем они будут заниматьсяна том или ином предмете.Мы говорим:На математике учимся считать (хотя математика —это не счет).На русском учимся писать (хотя русский язык — этоне письмо).На литературе учимся читать (хотя чтение — это нелитература).А на уроках информатики? На информатике учимсяработать на компьютере (хотя компьютер — это не информатика).Эти формулы (математика — счет, русский — письмо,информатика — компьютер) относятся к первым шагамв том или ином учении: учимся считать, писать, работатьна компьютере.Авторам очень хотелось заменить в учебнике фразу“информатика учит работать на компьютере” на “информатикаучит работать с информацией” или “информатикаучит работать с алгоритмами” (ибо алгоритмы —основа информатики, а развитие алгоритмическогомышления — та основная цель, которую мы ставим передсобой в этом курсе). Но информация и алгоритмы — абстракции,недоступные пока нашим ученикам, а компьютер— это конкретно, вот он, красавец, стоит на виду, идети действительно будут осваивать на нем компьютернуюграмоту. Так что наши высокие цели придется оставитьпока неозвученными. Настанет время, и мы с этимразберемся основательно.Отметим, что под компьютерной грамотностью мыпонимаем такие навыки, умения и знания, которыеустойчивы по отношению к бурным переменам современногообщества и которые способны подготовитьнынешних первоклашек к жизни в информационномобществе после школы. В частности, в ходе обучениямы будем стараться давать не кнопочные инструкции(щелкни на иконке домика), а идейные алгоритмы(вернись на начальную страницу). Ибо кнопки меняютсяили вообще пропадают (управление жестами), аидеи остаются.Алгоритмы в действииВо втором уроке рассказывается (среди прочего),как перетаскивать мышкой объекты по экрану.Инструкция записывается в виде алгоритма:


АЛГОРИТМПример (фрагмент из учебника урока 3)1. Расположи курсор над объектом.2. Нажми левую кнопку мыши.3. Перемести объект на новое место, не отпускаякнопки.4. Отпусти кнопку.Решая задачу сложения, Вася Кук ввел с клавиатурыв компьютер такой алгоритм:АЛГОРИТМПервый компьютерный практикум урока закрепляетсмысл новых слов и позволяет освоить алгоритмоперации перетаскивания на практике.Ученику предлагается перетащить ярлыки с новымисловами урока (информатика, компьютер,робот, алгоритм — икра) на “свои” картинки.1. Прочитай первое число.2. Прочитай второе число.3. Сложи числа.4. Покажи результат.Затем Вася ввел с клавиатуры два числа: 2 и 3.Процессор выполнил алгоритм, и на экране компьютеразасветилось число 5.Практикум урока (один из двух) поддерживает темусоответствующим интерактивным упражнением:Слагаемые генерируются автоматически посленажатия на кнопку Получить.Операция перетаскивания задействована и вовтором практикуме сразу с двух сторон: идейноалгоритмическойи практической.Ученику предлагается собрать алгоритм перетаскиванияпри помощи перетаскивания!В уроке 3 речь заходит о назначении процессора:Ответ выбирается в выпадающем списке (отрабатываеми этот интерфейсный навык).13А что делает процессор?Процессор обрабатывает информацию.А как он это делает?Процессор работает по алгоритму.Следом приводится пример конкретного алгоритмадля процессора.Кнопка Готово фиксирует результат и показываетоценку.сентябрь 2011 / ИНФОРМАТИКА


А вот составить алгоритм гораздо сложнее.Опыт такой деятельности практически отсутствует.А когда возникает, детям не хватает формальноговоображения. Ибо алгоритм есть абстракция. Присоставлении алгоритма нужно описывать действия,которые в данный момент не происходят.В “Азбуке Роботландии” в качестве основы длясоздания формальных алгоритмов (программ) мывзяли среду программного управления редакторомстроки (исполнитель РС-1, он подробно описанниже в этой статье). Такой выбор был обусловленначалом активной работы с текстом (набор, редактирование).И что же? Получается, что детям нужно записыватьдля РС-1 команды о передвижениях курсора,в то время, когда курсор неподвижен. Значит,нужно мысленно представлять эти движенияи держать изменяемое состояние среды в головево все время написания программы. Аналогичныетрудности возникают, когда записываютсякоманды на выполнение действий клавишамии . Кроме того, нужно постоянно держатьв голове конечное состояние среды, достигаемоевыполнением правильной программы. Чем большекоманд в программе, тем труднее дается этоумственное напряжение, ибо на сложность восприятияабстракции (представить то, чего нет)накладывается сложность удержания в памятибольшого числа элементов.Очевидный способ смягчения этих трудностей —создание такой среды разработки программ, в которойпостоянно отображалось бы и начальное положениесреды исполнителя (“дано”), и конечное(“надо”), и промежуточные состояния, достигаемыевыполнением уже написанных команд (“выполнениепрограммы”).Именно так и был построен исполнитель РС-1(среда исполнителя + визуальная интерактивнаясреда разработки программ для него), но такоеблаго приятное устройство исполнителя само посебе не решило проблем с абстракциями (абстрактноемышление все равно надо развивать!) и принеслоновую трудность — интерфейсную, ибо работус исполнителем нужно тоже осваивать.Разработав среду разработки программ, комфортнуюдля юного разработчика, авторы решили,что дети легко с ней справятся и весело займутсяпрограммированием.Мы придумали серию заданий с разным количествомдействий (программы в одну команду показалисьнам слишком простыми) и с воодушевлениемпошли с ними в класс. Но нас постигло разочарование.Дети с трудом ориентировались в средеРС-1 (интерфейсная сложность оказалась выше,чем мы полагали), составление программ, содержащихболее одной команды, не получилось, и дажена программах с одной командой дети застревали,не понимая разницы между написанием команды иее выполнением.Мы огорчились и решили, что давать формальноепрограммирование детям первого класса рановато.К счастью, поостыв от неудачи, решилиповторить попытку, приложив к нашей благоприятнойсреде разработки программ очевидный, вообщеговоря, прием: постепенное продвижение отпростого к сложному методом маленьких шажков,многократно выполняемых в разных видах, в томчисле и некомпьютерных.И это принесло удачу! Дети уловили суть программирования,они поняли, что программа пишетсядля исполнителя, который выполняет программупосле запуска. Появился интерес, желаниеправильно выполнить задание.Итоги можно сформулировать так.Алгоритмическое мышление особенно успешноформируется при программировании (составленииалгоритмов для формальных исполнителей).Ибо программы — это как формулы вматематике. Формулы — основа математическогомышления, программы — основа алгоритмического.Программирование невозможно без работы с абстракциями,ибо программа описывает действия,которые в момент ее написания не происходят. И вэтом состоит сложность поставленной задачи. У детейпервого класса абстрактное мышление толькоформируется.Поэтому для успешного обучения программированиюнужна тщательная педагогическая проработкасреды используемого формального исполнителя.Необходимо:• предъявить ученику среду разработки, в которойпредусмотрена визуализация планируемыхдействий, а также памятка о начальном (“дано”) иконечном (“надо”) состоянии среды;• максимально упростить интерфейс ученика сосредой разработки;• защитить создаваемую программу от синтаксическихошибок (не написание команды, а ееконструирование из готовых элементов списка выбора);• задать позитивную визуальную мотивацию:учим программировать Незнайку и помогаем емуполучить звание Профессора.Кроме того, необходимо разработать методическуюлинию, содержащую систему упражнений дляосвоения программирования в созданной среде,основываясь на принципе постепенного продвиженияот простого к сложному, с применением разнообразныхформ представления алгоритмическихдействий:• предметных и игровых;• словесных (устных и письменных);• знако-символьных в печатном виде;• и, наконец, в среде самого формального исполнителя.Далее мы покажем, как эти теоретические размышлениябыли реализованы на практике.15сентябрь 2011 / ИНФОРМАТИКА


СЕМИНАРАлгоритм не выполняет работу,он ее описываетНачиная с урока 7 дети осваивают набор текста вспециальном редакторе строки со встроенным блокомконтроля:Урок 9 начинает тему исправления клавиатурныхошибок, и задания следующего типа ученикивыполняют без особых проблем.ЗаданиеУдалите лишние конечные символы с помощьюклавиши BS:В самом деле, какие могут быть сложности?Дети устанавливают курсор в конец записи(клавиатурой или мышкой) и нажимают двараза BS.В следующем, чуть более сложном практикумепредлагается удалить лишние символы, расположенныев разных местах слова:КооооозаМышшшшшшшкаааааааааПаррррррроххххххххходЭти практикумы связаны с усвоением алгоритмаудаления лишнего символа при помощи клавиши:АЛГОРИТМ1. Перемести курсор к лишнему символу так,чтобы символ оказался слева от курсора.2. Нажми клавишу .Закрепляем знание цепочкой упражнений с нарастающейсложностью.Примеры некомпьютерных упражненийПримеры компьютерных упражнений16сентябрь 2011 / ИНФОРМАТИКА


Для работы в классе были заготовлены бумажныераспечатки с набором упражнений, идети с удовольствием брали эти задания в качестведомашней работы (приводятся фрагментызаданий).Примеры некомпьютерныхупражненийДано Алгоритм Получилосьносорог|носПримеры компьютерных упражнений к уроку 11.лошадка|лодкакозерог|озероДано Алгоритм Получилосьморе| BS 1сдевять| ←3BS 1сокошко| BS 1а←5BS 1морсдесятькошкаОбратим внимание на то, что задания, представленныев таблице, существенно отличаются от первых,начальных заданий компьютерных практикумов“Удалите лишние символы с помощью клавиши”, которые имели обобщенную формулировку,без указания конкретного количества действий спомощью клавиши .Задания же в таблице представлены в виде формальныхалгоритмов для исполнителя, которыйумеет выполнять записанные команды. Командынадо выполнять абсолютно точно, в приведенномпорядке и именно такое количество раз, котороеуказано в записи. Можно выполнить алгоритмустно, а можно “поддержать” выполнение явнымзачеркиванием букв в слове, моделируя курсор карандашомили ручкой.Задания составлены так, чтобы из одного значимогослова получалось другое значимое слово (дополнительнаямотивация, задание превращается вразгадку головоломки).Урок 11 продолжает алгоритмическую тему.В уроке 12 обсуждается вариант удаления клавишей(удаление справа от курсора), возможностиредактирования расширяются, а записькоманд алгоритма принимает все более формальныйвид (приближаясь к командам из СКИ исполнителяРС-1).17сентябрь 2011 / ИНФОРМАТИКА


СЕМИНАРПримеры компьютерных упражненийПримеры некомпьютерных упражнений№ Дано Команды Получилось1 лошадка|2 козерог|3 |математика4 самовар|Фактически теперь дети готовы к программированиюформального исполнителя РС-1.Юные программисты за работойИ вот, наконец, в уроке 13 Кукарача рассказываето программах и об исполнителе РС-1.— Поясню на примере разницумежду алгоритмом и программой!В Роботландию поступило задание:Задание. Из слова лиса получитьслово лис. Курсор расположен в начале строки.Программирование (фрагмент урока 13)18сентябрь 2011 / ИНФОРМАТИКАКукарача Роботландский —большой специалист по программированию.— Привет! Меня зовут Кукарача.Я буду учить программировать.Ах да! Вы не знаете, что такое программа!Но вы знаете, что такое алгоритм!Алгоритм — это план выполнения работы.Алгоритм состоит из шагов или пунктов, которыенумеруются по порядку их выполнения.Программа — это примерно то же самое, но…Программа — это такая запись алгоритма, которуюпонимает робот.Программа состоит из команд, которые выполняютсяв порядке их записи.Можно сказать, что программа — это алгоритм,записанный на языке робота.— Человеку мы можем предложить план работына клавиатуре, состоящий из двух шагов:АЛГОРИТМ1. Нажми клавишу со стрелкой, смотрящей влево,три раза.2. Нажми клавишу удаления один раз.В Роботландии есть робот РС-1,который умеет работать с текстом.Но, увы, робот РС-1 запись алгоритма,приведенную выше, непоймет!


Алгоритмы для робота РС-1 пишут так:Это уже не просто алгоритм! Эта запись — программа.Программа для робота РС-1. Программасостоит из двух команд, и ее выполнение начнетсяпосле нажатия на специальную кнопку Пуск (кнопказапуска).Сначала робот выполнит первую команду — передвинеткурсор вправо на 3 символа:КомандаСКИКак РС-1выполняет командуПеремещает курсор на n сим воловвлевоПеремещает курсор на n сим воловвправоУдаляет n символов слева откурсораУдаляет n символов справа откурсораПустая команда. РС-1 не выполняетникаких дей ствий• черновик для записи текста (поле для записитекста) с кнопкой Дано, которая заносит в полеисходное слово;• кнопку Пуск для запуска программы и кнопкуСброс для приведения исполнителя в исходное состояние.Потом вторую — удалит справа от курсора одинсимвол:— А что означают буквыРС и цифра 1 в названииробота?— РС — это сокращениеот “Редактор Строки”,а цифра 1 обозначает первуюмодель.Правда, сам робот расшифровываетсвое название как “РоботСмелый”, первый среди другихроботов! А когда выпьет чаю ссухариками, то и вовсе говорит,что он “Роботландский Сапфир”!Устройство РС-1Среда исполнителя — редактор строки. Системакоманд исполнителя (СКИ) состоит из 5 команд,имеющих общий формат:Указанное в команде действиеРС-1 исполняет n раз (n можетпринимать значение от 1 до 9).В таблице в правой колонке вверху представленполный набор возможных действий РС-1.Среда разработки программ для исполнителяимеет:• поле с постановкой задачи (дано, надо);• поле для вывода протокола пошаговой работыисполнителя (выполнение);• поле для конструирования программы (программа);Конструирование программы выполняется мышкойпри помощи следующих интерфейсных действий:• щелчок по кнопке с названием команды открываетсписок выбора из 5 возможных вариантов;• щелчок по кнопке с параметром открываетсписок выбора из 9 возможных вариантов (выборчисла от 1 до 9);• щелчок по кнопке вставляет пустую командуза текущей;• щелчок по кнопке удаляет текущую команду;• команду можно перетаскивать на другое местов программе за специальную “ручку” .На уроке, для подготовки к работе с исполнителемРС-1, предлагаются задания, совпадающие с первымичетырьмя заданиями компьютерного практикума: иззаданного слова получить другое слово, с учетом начальногоположения курсора. Отличие в том, что детине составляют, а выполняют готовые программы.Дано Надо Программалист| лис BS 1котел| кот BS 2|экран кран Del 1|победа еда Del 319сентябрь 2011 / ИНФОРМАТИКА


СЕМИНАР20сентябрь 2011 / ИНФОРМАТИКАДля работы готовятся карточки в специальномварианте (отдельные буквы и части слов) и складываютсяв конверт:лис+т, кот+ё+л, э+кран, п+о+б+еда.При выполнении задания необходимо:• Сложить слово.• Используя карандаш (или ручку) в качествекурсора, выполнить команды по заданию. Покоман дам BS или Del удалять буквы из слова.• Прочитать полученное слово.Этот практикум несложен для детей, хорошопонявших работу команд BS и Del, и особеннополезен тем, кто чувствует себя пока не оченьуверенно.После выполнения упражнений с карточкамипредстоит работа с исполнителем РС-1. Для урокаприготовлено 12 заданий на программирование.Шесть основных и шесть дополнительных.Первые четыре задания (смотрите практикум скарточками) содержат только одну команду. Онизнакомят детей как с разными вариантами команд(BS, Del), так и с возможностью разного количестваповторений.Поле программы РС-1 в начальный моментсодержит пустую команду с параметром-по в торителем1, и набор программы сводится к последовательномуредактированию этой пустойкоманды:Номер Дано Надо Программа Комментарий001 лист| лис| BS 1 Редактируемтолько названиекоманды002 котел| кот| BS 2 Редактируемназваниеи параметр003 |экран |кран Del 1 Редактируемтолько названиекоманды004 |победа |еда Del 3 Редактируемназваниеи параметрСледующие задания требуют добавления второйкоманды. Сразу же знакомим с обратнымдействием — удалением лишней команды (добавленнойпо ошибке).Номер Дано Надо Программа005 |риск рис| → 3Del 1006 |леска лес| → 3Del 2Таким образом, интерфейс осваивается последовательно:• Практикум 001 — учимся выбирать названиекоманды.• Практикум 002 — закрепляем и переносимосвоенный навык на параметр.• Практикумы 003 и 004 — закрепление с другойкомандой.• Практикумы 005 и 006 — учимся добавлятьновую команду (и удалять лишнюю).Дополнительные практикумы содержат болеесложные задания, выстроенные по количеству необходимыхкоманд.Порядок выполнения каждого задания можетпроходить по двум вариантам.Вариант 1. Ставим курсор в исходное положениеполя для записи текста. Выполняем нужныедействия и описываем их программой. Запускаем,когда все сделано.Вариант 2. Решаем, какая команда необходимапервой. Задаем первую команду. Запускаем программуна выполнение. Получаем результат выполнения однойкоманды и звание “Незнайка”. Добавляем команду, запускаемпрограмму, пока задача не решена, званиеостается прежним — “Незнайка”. Запуск правильнойпрограммы меняет Незнайку на Профессора.Именно второй вариант “заставил” выдвинутьверсию: мы учим Незнайку программировать и помогаемему получить звание Профессора.Еще раз отметим, что ключевым моментом обученияпрограммированию стала предварительнаяработа с упражнениями по освоению команд BS иDel, а также верный порядок предъявления заданийдля исполнителя РС-1.Дальнейшие упражнения для РС-1 связаны с редактированиемзаданной программы:• Удалить одну лишнюю команду.• Расположить команды в правильном порядке.• Добавить команду.Редактирование заготовки преследует две цели.• Играет роль промежуточной (подготовительной)ступеньки на пути к сложным заданиям (начинать программированиеприходится не с чистого листа).• Демонстрирует на практике процесс тестированияи отладки, без которых программированиеневозможно.Параллельно продолжается работа по составлениюпрограмм и в “бумажном” варианте:Примеры компьютерных упражненийДано Программа Надочайник|чайвосемь|семькозлята|козашоколад|школаапельсин|ель


Шпионские страсти. Агент РБВ урок 17 “забирается” Агент РБ и предлагаетсвой способ шифрования текста.Таким образом, программа для Агента РБ — этовыражение, состоящее из текстовых данных (слов)и двух операций:• “|” (унарная операция, более высокий приоритет);• “+” (бинарная операция).Выполняя программу, Агент РБ вычисляет выражениеи получает новое слово. Примерно так мызаписываем операции со строками в языках программирования,например, в JavaScript:// переменная x получает значение "лапа"var x = "ла"+"па"Новый роботландский оператор “|” создает дополнительнуюинтригу в программировании выраженийс текстовыми данными.Язык программирования — это еще более высокийуровень абстракции по сравнению с записьюпрограммы в виде линейной последовательностикоманд из СКИ (даже с учетом неявно зашитого вних цикла ПОВТОРИ — числовой параметр команды).Поэтому на данном этапе развития алгоритмическойлинии мы даже не говорим детям, чтоони программируют вычисление выражения наспециаль ном языке программирования. Говорим отом, что надо разгадать шифровку (а реально, выполнитьпрограмму) и составить шифровку (а реально,написать программу на предложенном языкепрограммирования).Продолжая повышать уровень абстрактногомышления, начинаем разговор о переменных, тоесть об именованных объектах, содержащих возможноизменяемые значения.Второй формальный исполнитель (Агент РБ,“шпион”, задающий шифровки) может обрабатыватьслова, удаляя первые или последние символы(оператор |) и “склеивая” их (оператор +).“Шифровка” Агента ориентирована на исполнителя,который умеет выполнять операции “|” и “+”.КомандаКак Агент РБ выполняетСКИкоманду| Удаляет одну букву по правилу Del,если команда стоит в начале слова,и по правилу BS, если в конце+ Выполняет конкатенацию словШифровки (фрагмент урока 17)— Привет, ребята! Зовите меняАгент РБ.Посмотрите, у менядва пустых бейджика:(икс) и(игрек).В x вставлю карточкусо словом “слон”, ав y — карточку со словом“жираф”.Если теперь скажу Буквоеду“x”, он будет знать,что я говорю ему “слон”.Если теперь скажуЛисенку “у”, он будетзнать, что я говорю ему“жираф”.— Вы поняли, ребята?Икс означает “слон”, аигрек означает “жираф”!А если заменю карточки,то и будут обозначать совсем другиеслова!Теперь:• x означает сто;• у означает лица.— А теперь,внимание:шифровка!• x+y означает столица.— И еще один мой способшифрования: вертикальнаячерточка! Черточка удаляет букву в начале или вконце слова!|x означает едаx| означает рисЗадания на работу с шифровками весьма разнообразны,как в компьютерном, так и безкомпьютерномварианте. Ниже приводятся несколько примеров.Задания первого практикума Агента (из двух) врамках урока 17 (набрать ответы шифровок):21сентябрь 2011 / ИНФОРМАТИКА


СЕМИНАР1. |x, если x=экран2. x|, если x=лист3. |x|, если x=школа4. x+у, если x=лис, а y=ток5. x+|у, если x=стоп, а y=мольЗадания первого практикума Агента (из трех) врамках урока 18 (набрать ответы шифровок):1. три||+игра|2. ||игра|+уж|+||точка3. дом||+ива+||сон4. крот|+код+|пила|5. ||коса+||топот|+жнец||+|ликЗадания первого практикума Агента (из трех) врамках урока 19 (набрать шифровки, которые решаютпоставленные задачи):1. Из слов “лук” и “она” получить слово “луна”.2. Из слов “море” и “каша” получить слово “река”.3. Из слов “степь” и “волна” получить слово “луна”.4. Из слов “тут” и “сказка” получить слово “утка”.5. Из слов “крыло” и “кашалот” получить слово“крыша”.Задания первого практикума Агента (из трех) врамках урока 20 (набрать значение буквы x):1. x+ас=ужас2. дом|+x=дорога3. крот|+x+|шило|=крокодил4. пол||+x+|тесто|=протест5. ||дерево||+x+|зал|=редискаЗадания первого практикума Агента (из трех) врамках урока 22 (набрать ответы шифровок):1. x|+y, x=мак, у=шина2. ||x|+||y, x=новый, у=забор3. ||x||+||y+л, x=легенда, у=вчера4. ||x|||+|он+|y| , x=сумерки, у=люк5. |x|||+ дом|+||y, x=правда, у=шестьТаким образом, для работы с Агентом детямпредлагались задания следующих типов:• отгадать шифровку (вычислить выражение, втом числе и с переменными);• составить шифровку (записать выражение);• решить “уравнение” (вычислить значение переменной,входящей в равенство).Отметим, что дети придумали большое количествособственных шифровок.Разбор полетовВ 2010–2011 учебном году в пилотном режимеработала первая часть курса — “Компьютер”. В пилотеприняли участие 9 учителей из 7 школ (Мурманск,Тверь, Челябинск и Челябинская область,Белорецк) и 15 групп детей (всего 168 первоклассникови 15 второклассников).По теме “Алгоритмизация и программирование”в течение учебного года детям предлагалось болеесотни компьютерных заданий:• 15 заданий на выполнение или сборку алгоритмов(из готовых действий);• 23 задания на программирование редакторастроки (исполнитель РС-1);• 70 упражнений с шифровками (исполнительАгент РБ).Параллельно (по желанию) можно выполнить(и многие выполняли) более 50 упражнений, подготовленныхдля работы на бумаге.Задания выстроены по степени сложности,т.е. по сложности предполагаемой деятельностии по увеличению количества команд в алгоритме:• Выполнить алгоритм.• Составить алгоритм.• Обработать имеющийся алгоритм или последовательностькоманд (удалить лишнее, добавитькоманды, изменить порядок команд, определитьнедостающую часть).Ребята с большим удовольствием выполняли какзадания, представленные в печатном виде, так и накомпьютере, с помощью двух исполнителей электронногоучебника. Проведенное в конце учебногогода анкетирование родителей показало, что работасо словами и шифровки очень понравились и детям,и самим родителям.То, с чем читатель познакомился в этой статье,в программе курса выведено одной строчкой:“В результате первого года обучения дети научатсясоставлять и выполнять простые алгоритмыи программы”.Подтверждаем — научились!22Электронная версия “Информатики”для подписчиков на бумажную версиюсентябрь 2011 / ИНФОРМАТИКАУважаемые коллеги! Напоминаем вам, что если вы получили этот номер по подписке, то имеетевозможность прямо сейчас получить его электронную версию в Личном кабинете на сайтеwww.1september.ru. Если у вас еще нет Личного кабинета — зарегистрируйтесь. Это очень быстрои, разумеется, бесплатно.В Личном кабинете в разделе “Издания → Коды доступа” необходимо ввести код SE-00332-68580.Зачем это нужно? Вы ведь и так держите номер в руках, а электронная версия имеется на вложенномдиске? Во-первых, удобство в том, что указанный код предоставляет доступ ко всем номерам полугодия.Например, октябрьский номер вы получите в Личном кабинете уже 1 октября — день в день. А попоч те он придет позже. Кроме того, электронные версии всегда будут доступны вам в Личном кабинете,что бы ни случилось с бумажной версией или с диском. Например, у моего коллеги диск сгрызщенок ☺. Он и оглянуться не успел ☺.


23август 2011 / ИНФОРМАТИКА


МНЕНИЯА.А. Дуванов,г. Переславль-Залесский,kurs@robotland.pereslavl.ruН.Д. Шумилина,г. Тверь,nshumilina@yandex.ru24сентябрь 2011 / ИНФОРМАТИКАУстройстваввода ивывода. ТеорияотносительностиГлавные части компьютера — процессори память. Процессор выполняет алгоритмы,а память хранит информацию.Все другие устройства обеспечиваютили ввод информации в память компьютера,или вывод из нее. Соответственно, вседругие устройства, подключаемые к процессоруи памяти, являются устройствамиввода и(или) вывода.Что принтер есть устройство выводакомпьютера, а сканер — устройствоввода, никто не возражает. А вот в то,что, например, флешка есть устройствоввода/вывода, обычно не верят(“неправда, флешка — запоминающееустройство”).Хотя на самом деле флешка и МФУ(принтер+сканер) функционально другот друга не отличаются — они являютсядля компьютера устройствами ввода/выводаинформации.Заметка объясняет авторскую позицию.Что есть компьютерКомпьютер не всегда выглядит как системныйблок, монитор, мышь и клавиатура.Ноутбук, например, представляетсобой единое устройство, в которое интегрированыи монитор, и клавиатура, итачпад (вместо мыши).Компьютер в стиральной машинеи вовсе не такой, у него нет привычнойклавиатуры, мыши и монитора(только переключатели, кнопки и маленькийЖК-индикатор в некоторыхмоделях).Получается, монитор, клавиатура имышь для компьютера необязательны(сразу заметим, что жесткий диск, дисковод,флешка тоже факультативны).А что же есть компьютер?Чтобы это узнать, давайте убиратьустройства, пока не получим минимальныйнабор, без которого компьютера точноне бывает.Убираем принтеры, сканеры, модемы,флешки, дисководы.Убираем жесткий диск (в компьютеретелефона, например, его нет).Убираем клавиатуру, монитор и мышку(их не имеет компьютер стиральной машины,компьютер внутри робота).


Что же остается? Остается процессор (обработчик)и внутренняя память (хранилище).Их убрать нельзя.Компьютер — это устройство для обработкиинформации с помощью программ. Программывыполняет процессор. Обрабатываемая информация,как и сама программа, располагается вовнутренней памяти.Итак, компьютер — это процессор и внутренняяпамять.Процессор объединяет в себе два устройства —исполнительное (АЛУ, арифметико-логическоеустройство) и управляющее (УУ, устройствоуправления). Процессор выполняет команды программы.Управление (выбор команды, ее анализ,загрузка операндов) возлагается на УУ, выполнение— на АЛУ.Внутренняя память — это: ОЗУ + ПЗУ + регистрыпроцессора + кэш процессора.ОЗУ (оперативное запоминающее устройство)—эта память доступна процессору непосредственно,кроме того, в ней хранятся программы, по которымпроцессор работает. Содержимое ОЗУ при отключениипитания пропадает.ПЗУ (постоянное запоминающее устройство)хранит программу первоначальной загрузки компьютеравместе с данными, необходимыми для работыэтой программы. Понятно, что эта память нестирается при выключении питания.Кроме того, в компьютере есть регистры и кэш —дополнительная к ОЗУ память, встроенная прямо вмикросхему процессора.Регистры — это сверхбыстрая небольшая память.Команды, в которых операнды расположеныв регистрах, выполняются гораздо быстрее команд,операнды которых расположены в ОЗУ.Кэш — это также сверхбыстрая память, в которуюпредварительно загружаются операнды команди команды программы из ОЗУ. В дальнейшем,если операнд (или команда) находится в кэше, он(она) читается из кэша, а не из ОЗУ, что ускоряетвыполнение программы.Замечание. Отметим, что внедрение регистров икэш-памяти в микросхему процессора не делает ихфункциональной частью процессора. Процессор — обработчик,а не хранилище информации. Как, например,расположение кнопки сигнала на руле не делаетруль устройством подачи звукового сигнала, руль — этоустройство для поворота и удержания на курсе транспортногосредства.Что есть устройства ввода и выводаИтак, компьютер — это процессор и внутренняяпамять (ОЗУ, ПЗУ, регистры и кэш процессора).А что же тогда все остальное?Для компьютера все остальное — устройстваввода и вывода.Когда принтер называют устройством вывода, никтоне возражает. Когда говорят, что флешка являетсяустройством ввода/вывода, возникают вопросы.Флешка, действительно, запоминающее устройство!В корпусе флешки есть микросхема флешпамяти.Устройство типичного USB Flash-носителя (показаноизделие фирмы Saitek, иллюстрация из Википедии):1 — USB-разъем;2 — контроллер;3 — контрольные точки;4 — микросхема Flash-памяти;5 — кварцевый резонатор;6 — светодиод;7 — переключатель “Защита от записи”;8 — место для дополнительной микросхемы памятиНо флешка, как и жесткий диск, совмещает водном корпусе информационный носитель (микросхемапамяти) и устройство чтения/записи данных(контроллер, фактически маленький компьютер,с программой чтения/записи, расположеннойв его ПЗУ).Если нужно сохранить результаты вычисленийна флешке, мы должны вывести на нее данные изОЗУ, то есть флешка выступает устройством выводакомпьютера.25сентябрь 2011 / ИНФОРМАТИКА


ПРОФИЛЬВсе происходит аналогично работе принтера.Принтер — это устройство, которое позволяет сохранятьинформацию на бумаге. Но прежде чеминформация будет отпечатана, она должна бытьпередана в принтер из компьютера. Принтер поотношению к компьютеру выступает устройствомвывода, хотя он является и устройством сохраненияинформации на бумаге.Бумагу из принтера мы вынимаем, чтобы использовать,а память из флешки мы не вынимаем,мы носим ее вместе с флешкой. Но суть не меняется.Можно представить себе принтер, из которогобумага бы не вынималась. Ее можно было бы просматриватьчерез окошко. Тогда принтер мы таскалибы с собой, как флешку.Флешка и принтер между собой принципиальноне отличаются. Для компьютера это устройстваввода/вывода. Хотя, конечно, они же являются иустройствами хранения информации. Процесс храненияне связан с компьютером, а процесс полученияинформации — связан.Итак, итог.Компьютер — это процессор и внутренняяпамять. Все остальное, что к компьютеру подключается,является для него устройствамиввода/вывода, через которые течет информацияв компьютер или из него.Причина неверного толкованияКазалось бы, все просто! Однако вопросы возникают.Почему?Причина в том, как изображается схема компьютерав школьных учебниках. Вот как изображаетсяклассический вариант фон Неймана:26сентябрь 2011 / ИНФОРМАТИКАКогда мы говорим о вводе/выводе по отношениюк компьютеру, то имеем в виду обмен даннымимежду внутренней памятью компьютера идругим информационным носителем: жесткимдиском, оптическим диском, флеш-памятью, бумагой.Работа с внешней памятью для компьютера —это операция ввода/вывода, которую он выполняетчерез контроллер внешнего запоминающегоустройства.Дисковод оптических дисков еще более похож напринтер и сканер, чем флешка, ибо информационныйноситель (диск) является сменным (как бумагав принтере и сканере).По этой схеме легко отнести принтер к устройствувывода, клавиатуру — к устройству ввода, афлешку, само собой, — к внешней памяти компьютера.На этой схеме внешняя память никак несвязана с устройствами ввода/вывода, а самиустройства ввода/вывода никак не связаны свнешней памятью: откуда же они вводят и кудавыводят?Получается, что для записи на диск последнийнужно просто положить на системный блок, и компьютерзапишет информацию на диск при помощиволшебства.В жизни так не получается, и внешняя памятьстыкуется с компьютером при помощи специальногоустройства (объединяющего электроннуюи, возможно, механические части), котороеобеспечивает чтение и запись информации наинформационный носитель. Было бы логичноименно это устройство называть устройствомввода/вывода.Таким устройством, например, является дисковод.Это устройство объединяет механическуючасть и электронную, а сам диск является носителеминформации, внешней памятью по отношениюк компьютеру.Когда внешняя память и устройство ввода/выводасобраны в одном корпусе, как флешка или винчестер,мы можем называть это объединение и внешнейпамятью, и устройством ввода/вывода, ибоверно и то и другое. Для того чтобы сохранить вовнешней памяти информацию, ее туда надо передать,а для этого необходимо выполнить операциювывода информации из компьютера, а значит, в моментпередачи информации устройство являетсяустройством вывода.


В момент чтения информации — это устройство ввода. На схеме зеленые стрелки показывают движениеинформации, а красные — управляющие воздействия процессора:Отметим, что у самого фон Неймана блока с “внешней памятью” в схеме не было (схема скопирована изВикипедии).Схему современного компьютера в школьных учебниках часто рисуют так:Очевидно, что долговременная память, например диск CD или бумага, подключается к общей шинетолько через устройство ввода/вывода. Поэтому правильная схема должна выглядеть так:27сентябрь 2011 / ИНФОРМАТИКА


ПРОФИЛЬТаким образом, флешка для компьютера являетсяустройством ввода/вывода, ибо компьютерработает с контроллером флешки. Контроллер выполняетоперации чтения/записи на микросхемупамяти флешки.Ввод и вывод связаны с передачей информацииот одного информационного носителя кдругому.Теория относительности вводаи выводаИтак, мы выяснили, что компьютер — это процессорплюс внутренняя память (ОЗУ, ПЗУ, регистрыи кэш процессора).Все остальное — это устройства ввода, выводаили ввода/вывода компьютера.Пусть информация передается с носителя А к носителюВ.Тогда эта передача для носителя А означает вывод,а для носителя В — ввод.И получается, что В для А — устройство вывода,а А для В — устройство ввода.Видим, что одна и та же передача информациисвязана и с вводом, и c выводом, следовательно,может быть названа и вводом, и выводом в зависимостиот того, к какому носителю мы относим этуоперацию.Пусть, например, мы используем сканер для передачив компьютерную память образа бумажного листа.28сентябрь 2011 / ИНФОРМАТИКАНапример, мышь, клавиатура, сканер, тачпад,графический планшет, веб-камера, микрофон,датчики — это устройства ввода компьютера (сних он получает информацию), а монитор, принтер,звуковые колонки, исполнительные устройства— это устройства вывода компьютера (наних он передает информацию).Есть устройства, с которых компьютер может иполучать информацию и на которые он может информациюпередавать. Эти устройства называютустройствами ввода/вывода — винчестер, дисковод,МФУ, флешка, модем, фото- и видеокамеры.Давайте подробнее разберемся с тем, что мы называемвводом и выводом.Для сканера эта передача означает вывод — информацияуходит из сканера, а для компьютераввод — информация приходит в компьютер.Компьютер получает из сканера информацию,значит, происходит ввод в компьютер, следовательно,сканер — устройство ввода компьютера.А для самого сканера компьютер являетсяустройством вывода! Ведь сканер на него посылает,выводит информацию.Так что же есть сканер? Для компьютера этоустройство ввода.А для человека? А для человека сканер — устройствовывода. Мы ведь отдаем ему листок, “выводя”из папки, в которой листок хранили.Но мы никогда не говорим, что выводим листокна сканер. Мы говорим, наоборот, что вводим листок,то есть относим процесс передачи информациине к себе, а к сканеру. Более того, мы частоговорим, вставляя листок в сканер, что вводимлисток в компьютер, и здесь мы говорим уже не опередаче информации от нас сканеру, а о передачеинформации от сканера в компьютер, и связываемэту передачу с компьютером.Любая передача информации сопровождаетсявыводом из источника и вводом в приемник. Следовательно,разделение устройств на устройства


ввода и устройства вывода зависит от того, по отношениюк какому информационному носителю мырассматриваем процесс передачи информации.Для компьютера классификация построена нанаправлении потока информации в или из компьютернойпамяти.Ввод — это процесс передачи информации вкомпьютер. Устройство, с которого компьютер получаетинформацию, является устройством вводакомпьютера.Вывод — процесс передачи информации из компьютера.Устройство, на которое компьютер передаетинформацию, является устройством выводакомпьютера.Два компьютера (см. рисунок). Их можно соединитьдруг с другом через порты кабелем без модемаи передавать информацию в обе стороны.Что происходит, ввод или вывод, зависит от того,по отношению к какому компьютеру мы рассматриваемпроцесс передачи информации.Из всего этого следует, что на уроке в классе лучшеговорить не “колонки выводят звук”, а “колонкивоспроизводят звук, который на них выводит компьютер”.Обе фразы правильные, но в них говоритсяо двух разных передачах информации:1. Передаче звука от компьютера на колонки (выводиткомпьютер).2. Передаче звука от колонок к человеку (выводятколонки).Во втором случае колонки для нас являютсяустройством ввода (мы вводим с них звук в своиуши), а мы для колонок — устройством вывода —колонки выводят на нас звук.Так как мы рассматриваем устройства ввода ивывода компьютера, то лучше говорить “звук выводитсякомпьютером на колонки, а колонки звуквоспроизводят”.И так далее.Завершим изложение темы набором формальныхопределений, связанных с вводом ивыводом.Формальные определенияОпределение 1Передача информации — это процесс, в результатекоторого информация с носителя A передаетсяна носитель В по каналу связи. Обозначим это какA → B.Определение 2Пусть A → B. Будем говорить, что информациявыводится с носителя A и вводится на носительB.Замечание. Понятно, что сам носитель не способенпередавать информацию в канал связи и записыватьсам на себя информацию из канала связи. Для такогочтения/записи используется дополнительное устройство(искусственное или естественное).Определение 3Назовем устройство, обеспечивающее чтение/запись информации на носитель, контроллером.И будем обозначать контроллеры маленькими буквами:a — контроллер носителя A, b — контроллерносителя B.Для обозначения устройства “носитель + контроллер”будем использовать обозначение вида Aa(или Bb).Замечание. В связке Aa A — хранит информацию, a —организует прием/передачу.Определение 4Назовем Cc устройством вывода для Dd, если информацияпередается из D в C.Как не стоит говоритьМонитор выводит информациюКлавиатура вводит информациюА как надо сказатьКомпьютер выводитинформацию на мониторКомпьютер вводитинформацию с клавиатурыПринтер выводит информациюКомпьютер выводитинформацию напринтерОпределение 5Назовем Cc устройством ввода для Dd, если информацияпередается из C в D.Пусть A → B. Видим, что:Aa — устройство ввода Bb,Bb — устройство вывода Aa.29сентябрь 2011 / ИНФОРМАТИКА


ЕГЭ30сентябрь 2011 / ИНФОРМАТИКАК.Ю. Поляков,д. т. н., учительинформатики школы № 163,Санкт-ПетербургСистемылогическихуравненийВсе школьники на уроках математикизнакомятся с алгебраическимии трансцендентными уравнениями.Более экзотические логическиеуравнения, в которых все величинымогут принимать только два значения(“истина” и “ложь”), традиционнотоже относились к математике[1–3]. На практике они оказалисьполезны при разработке цифровыхлогических устройств [4–5] и в последниегоды стали появляться в заданияхЕГЭ по информатике. Так какни в одном школьном учебнике соответствующегоматериала нет, учителюприходится разбираться в этомвопросе самостоятельно. В даннойстатье мы попытаемся немного прояснитьситуацию.Далее для сокращения записиистинное значение обозначаетсяединицей, а ложное — нулем. Длялогических операций “И”, “ИЛИ”,“исключаю щее ИЛИ”, “импликация”и “эквивалентность” будем использоватьзнаки “·”, “+”, “⊕”, “→” и “≡” соответственно,а операцию “НЕ” обозначимчертой сверху.Решение логических задачНачнем с логической задачи, котораясводится к системе логическихуравнений.Задача 1. Следующие два высказыванияистинны:(1). Неверно, что если корабль Aвышел в море, то корабль C — нет.(2). В море вышел корабль B или корабльC, но не оба вместе.Определить, какие корабли вышлив море.Обозначим буквами высказывания:A — “корабль A вышел в море”,B — “корабль B вышел в море”,C — “корабль C вышел в море”.Тогда высказывание “если корабльA вышел в море, то корабль C — нет”можно записать в виде A → C = 1. Поусловию (1), это высказывание неверно,таким образом, имеем A → C=0. Крометого, из (2) получаем A ⊕ B = 1 . Итак,решение задачи сводится к решениюсистемы логических уравнений⎧A → C=0⎨⎩A ⊕ B = 1Нужно найти тройку логическихзначений A, B и C, при которых обауравнения превращаются в истинныеравенства. Покажем несколько способоврешения этой системы.


Способ 1. Сведение к одному уравнению. Сначалапреобразуем уравнения так, чтобы правые частибыли равны 1 (истинному значению). Для этогоприменим инверсию (операцию “НЕ”) к обеим частямпервого уравнения:⎧⎪A → C=1⎨⎪⎩ A ⊕ B = 1Теперь представляем импликацию и “исключающееИЛИ” через базовые операции (“И”, “ИЛИ”,“НЕ”):⎪⎧ A + C=1⎨⎪⎩ A ⋅ B + A ⋅ B = 1Поскольку необходимо, чтобы левые части обоихуравнений были равны 1, можно объединить ихс помощью операции “И” в одно уравнение, равносильноеисходной системе:( A+ C)( ⋅ A⋅ B+ A⋅ B)= 1Раскрываем инверсию в первой скобке по законуде Моргана и вносим “сомножитель” A в скобку, незабыв, что A ⋅ A = 0 и A ⋅ A = A:A ⋅C⋅( A⋅ B+ A⋅ B)= 1 ⇔ A ⋅B⋅ C=1Последнее уравнение, равносильное исходнойсистеме, имеет единственное решение: A = 1,B=0 и C=1. Таким образом, в море вышли кораблиА и C.Способ 2. Таблица истинности. Поскольку логическиевеличины имеют только два значения, можнопросто перебрать все варианты и найти срединих те, при которых выполняется данная системауравнений. Для системы с тремя переменными возможны8 вариантов:A B C A → C A ⊕ B0 0 0 1 00 0 1 1 00 1 0 1 10 1 1 1 11 0 0 1 11 0 1 0 11 1 0 1 01 1 1 0 0Зеленым цветом выделена единственнаястрочка, для которой выполняются условия задачи,то есть A → C=0 и A ⊕ B=1. Таким образом,A = 1, B=0 и C=1, это значит, что в море вышликорабли А и C. Недостаток этого метода — трудоемкостьпри большом количестве переменных(больше 4).Заметим, что такой подход особенно удобен приавтоматизации решения подобных задач. Именноон (совместно с приведением системы к одномууравнению) используется в программе для решениясистем логических уравнений, которая размещенана диске-приложении к этому номеру.Способ 3. Декомпозиция. Идея состоит в том,чтобы зафиксировать значение одной из переменных(положить ее равной 0 или 1) и за счет этогоупростить уравнения. Затем можно зафиксироватьзначение второй переменной и т.д. В нашем случаепри A = 0 получаем⎧0→ C=0⎨⎩0 ⊕ B = 1Известно, что импликация ложна только в одномслучае — когда посылка истинна, а следствие ложно( 1→ 0=0). Поэтому первое уравнение (и, следовательно,вся система) при A = 0 решений не имеет.Теперь рассмотрим второй случай, когда A = 1:⎧1→ C=0⎨⎩1 ⊕ B = 1Из первого уравнения в силу свойств импликациисразу следует, что C=0 или C=1, а из второго— B=0 ( A ⊕ B=1 означает, что A ≠ B ). Таким образом,существует единственное решение системы:A = 1 , B=0 и C=1; это значит, что в море вышликорабли А и C.Способ 4. Последовательное решение уравнений.В некоторых случаях можно решать уравнения последовательно,на каждом шаге добавляя по однойпеременной в рассматриваемый набор. Чтобы вводитьпеременные в алфавитном порядке, поменяемместами уравнения в нашей системе:⎧A⊕ B=1⎨⎩A → C = 0Мы видим, что первое уравнение зависиттолько от A и B , а в третьем подключается переменнаяC . Будем строить дерево решений и одновременнозаписывать его в свернутом виде в таблицу.Переменная A может принимать два значения:A0А011Из первого уравнения A ⊕ B=1 следует, чтоA ≠ B , поэтому при A = 0 получаем единственныйвариант B=1, а при A = 1 имеем B=0. Итак, первоеуравнение имеет два решения относительно переменныхA и B.АB01A B0 11 0Теперь “подключаем” второе уравнение A → C=0,из которого нужно определить допустимые значенияC для каждоговарианта. При A = 0А01 импликация не можетбыть ложна, тоесть первая строчкаB10 предыдущейтаблицы×не дает ни одно-го решения системыC1 двух уравнений. При1031сентябрь 2011 / ИНФОРМАТИКА


ПРОФИЛЬ32сентябрь 2011 / ИНФОРМАТИКАA = 1 получаем единственное решение, для которогоC=1:A B C1 0 1Таким образом, существует единственное решениесистемы: A = 1, B=0 и C=1. Это значит, что вморе вышли корабли А и C.Количество решенийИногда требуется определить только количестворешений системы логических уравнений, при этомнаходить сами решения не нужно.Задача 2. Найти количество решений системыуравнений:⎧X1+ X2= 1⎪X2+ X3= 1⎨⎪...⎪⎩X9 + X10= 1где X 1KX 10 — неизвестные логические величины.Здесь 10 переменных, поэтому при решении системычерез таблицу истинности нужно заполнить2 10 = 1024 строки, что трудновыполнимо. Поэтомурешения, сводящиеся к полному перебору вариантов,нужно отбросить. Поскольку все правые части равны 1,можно легко свести систему к одному уравнению:( X1+ X2) ⋅ ( X2+ X3) ⋅K⋅ ( X9 + X10)= 1 ,но такой подход также не внушает оптимизма.Несложно заметить, что первое уравнение зависиттолько от X1 и X2, затем во втором уравнении добавляетсяX3 и т.д. Поэтому логично попробовать решатьуравнения последовательно. Начнем строить дереворешений, и одновременно будем записывать его ввиде таблицы. Первое уравнение, X1+ X2= 1, обращаетсяв истинное равенство в трех случаях:X1X2X 1010 00 11 1X 20 1 1Теперь подключаем второе уравнение,X2 + X3= 1. Допустимые значения X 3 зависят отранее выбранного значения X2: если X2= 0, то X3может принимать любое значение (0 или 1), а еслиX2= 1, то X3= 1. Дерево и соответствующая емутаблица выглядят так:X X1 2X3X 10100 010 1 101 11 1 1X 2X 30111Легко заметить, что при добавлении очередногоуравнения (и очередной переменной) верхняястрока таблицы (где все нули) дает два решения(они выделены зеленым фоном), а остальныестроки — по одному. Поэтому количество решенийувеличивается на 1. Таким образом, системаиз трех уравнений имеет 5 решений, из четырех— 6, а исходная система из девяти уравнений— 11 решений.Рассмотрим более сложный пример на ту жетему.Задача 3. Найти количество решений системыуравнений:( )( )⎧ X2 ≡ X1 + X2 ⋅ X3 + X2 ⋅ X3= 1⎪⎪ X3 ≡ X1 + X3 ⋅ X4 + X3 ⋅ X4= 1⎪⎨K⎪⎪( X9 ≡ X1)+ X9 ⋅ X10 + X9 ⋅ X10= 1⎪⎩( X10 ≡ X1)= 0где X 1K X 10— неизвестные логические величины.Здесь, так же как и в предыдущей задаче, удобнеевсего последовательно решать уравнения и записыватьполученные решения в таблицу (дереворисовать не будем для сокращения записи). Сначалаупростим исходные уравнения, заметив, что( )X2 ⋅ X3 + X2 ⋅ X3 = X2 ≡ X3 , так что исходнуюсистему можно записать в виде⎧( X2 ≡ X1) + ( X2 ≡ X3)= 1⎪⎪( X3 ≡ X1) + ( X3 ≡ X4)= 1⎪⎨K⎪⎪( X9 ≡ X1) + ( X9 ≡ X10)= 1⎪⎩( X10 ≡ X1)= 0В первом уравнении используются три переменных( X 1K X 3 ). Значения X1 и X2могут быть выбраныпроизвольно четырьмя способами:X1X20 00 11 01 1Теперь добавляем X 3и первое уравнение какограничение. Запишем в таблицу все комбинациипеременных, при которых выполняется первоеуравнение:X1X2X30 0 00 0 10 1 11 0 01 1 01 1 1Если X2 = X1, то значение X 3 может быть любое(эти строки выделены зеленым цветом), а приX X получаем только один вариант: X = X .≠2 13 2


Таким образом, при подключении первого уравнениячисло решений увеличивается на количествострок в таблице, для которых значения X1 и X2(последнейрассмотренной переменной) равны. В данномслучае таких строк две, получаем 6 решений.Более того, в новой таблице снова осталось всегодве строки (верхняя и нижняя), где X3 = X1. Какследует из второго уравнения, именно эти (и толькоэти) строки на следующем шаге “раздваиваются”,дают по два решения. Таким образом, при подключениик системе очередного уравнения числорешений увеличивается на 2. Для двух уравненийполучим 8 решений, для трех — 10, а для восьми —20 решений.Остается учесть последнее (особое) уравнение,( X10 ≡ X1)= 0. Это означает, что X10 ≠ X1. Изанализа таблицы видно, что есть всего две строки(верхняя и нижняя), где первая и последняя переменныеравны. Поэтому из полученных 20 решенийнужно отбросить эти два, не удовлетворяющиепоследнему уравнению. В итоге исходная системаимеет 18 решений.Замена переменныхВ некоторых случаях задача упрощается, если использоватьзамену переменных.Задача 4. Найти количество решений системыуравнений:⎧X1 ⋅ X2 + X1 ⋅ X2 + X3 ⋅ X4 + X3 ⋅ X4= 1⎪X3 ⋅ X4 + X3 ⋅ X4 + X5 ⋅ X6 + X5 ⋅ X6= 1⎨⎪X5 ⋅ X6 + X5 ⋅ X6 + X7 ⋅ X8 + X7 ⋅ X8= 1⎪⎩X7 ⋅ X8 + X7 ⋅ X8 + X9 ⋅ X10 + X9 ⋅ X10= 1где X 1K X 10 — неизвестные логические величины.Сначала упростим эти уравнения, используясвойства операций “исключающее ИЛИ” и “эквивалентность”.В первом уравненииX1 ⋅ X2 + X1 ⋅ X2 = ( X1 ⊕ X2) = ( X1 ≡ X2)X3 ⋅ X4 + X3 ⋅ X4 = ( X3 ≡ X4)Применяя подобные преобразования во всехуравнениях, получаем⎧( X1 ≡ X2) + ( X3 ≡ X4)= 1⎪⎪( X3 ≡ X4) + ( X5 ≡ X6)= 1⎨⎪( X5 ≡ X6) + ( X7 ≡ X8)= 1⎪⎪⎩( X7 ≡ X8) + ( X9 ≡ X10)= 1Далее замечаем, что можно ввести новые переменныеY1 = ( X1 ≡ X2), Y2 = ( X3 ≡ X4)Y3 = ( X5 ≡ X6), Y4 = ( X7 ≡ X8)Y5 = ( X9 ≡ X10)и система уравнений принимает вид⎧Y1 + Y2= 1⎪Y2 + Y3= 1⎨⎪Y3 + Y4= 1⎪⎩Y4 + Y5= 1Важно, что переменные Y 1K Y 5независимы,то есть каждая из исходных переменных X 1K X 10входит только в одну из новых переменных.Полученная система совпадает по форме ссистемой, которая рассматривалась в задаче 2.Используя результаты решения задачи 2, сразунаходим, что наша система из четырех уравненийимеет 6 решений относительно переменныхY1 K Y5.Остается вернуться обратно к исходным переменнымX 1K X 10 . Предположим, что значениеY1 = ( X1 ≡ X2)фиксированно (0 или 1). Тогда,согласно таблице истинности операции “эквивалентность”,существует ровно две пары значений( X1, X2), при которых Y 1 имеет заданное значение(как для Y1= 0, так и для Y1= 1). Таким образом,каждая комбинация значений Y 1K Y 5 дает подве возможных пары ( X1, X2), ( X3, X4), ( X5, X6),( X7, X8)и ( X9, X10), то есть всего 2 5 = 32 комбинацииисходных переменных.Таким образом, общее количество решений равно6 · 32 = 192.Решение — функцияРассмотрим более сложную задачу, в которойтребуется найти логическую функцию, удовлетворяющуюзаданному уравнению (или системе уравнений).Задачи такого типа могут встречаться напрактике при разработке схем логического управления[4–5].Задача 5. Найти логическую функцию X(A, B),которая при любых значениях логических переменныхA и B удовлетворяет системе уравнений:⎧X + A = X ⋅ A + B⎨⎩A + B + X = 1Заметим, что классические методы решений системуравнений, известные из математики, здесьне работают, потому что для логических величинне определено вычитание и деление.Такие системы проще всего решать с помощьютаблиц истинности. Для каждой возможной комбинациизначений переменных A и B получаем системууравнений с одним неизвестным X:A BСистемаXуравнений⎧X = 00 0 ⎨⎩X = 100 11 0⎧X = 1⎨⎩1 = 1⎧1 = X⎨⎩1 = 1⎧1 = 11 1 ⎨⎩1 = 10 или 1Заметим, что в последней строчке значение Xможет быть любым. Поэтому исходной системе1033сентябрь 2011 / ИНФОРМАТИКА


ПРОФИЛЬ34сентябрь 2011 / ИНФОРМАТИКАудовлетворяют две логические функции, которыезадаются таблицами истинностиA B X1A B X20 0 0 0 0 00 1 1 0 1 11 0 0 1 0 01 1 0 1 1 1В первом случае получаем X1= A ⋅ B, а во втором— X2= A ⋅ B + A ⋅ B = B. Исходная системауравнений имеет два решения.Логические уравнения такого типа не всегдаимеют решение в двузначной логике. Например,уравнение X + A = X + B не имеет решений, потомучто при A = B = 0 получаем X = X , что невыполнимо.Задачи для тренировки:1) На вопрос “Кто из твоих учеников изучал логику?”учитель ответил: “Если логику изучал Андрей,то изучал и Борис. Однако неверно, что если изучалСемен, то изучал и Борис”. Составьте систему логическихуравнений и определите, кто же изучал логику.(Ответ: только Семен.)2) Суд присяжных пришел к таким выводам:а) если Аськин не виновен или Баськин виновен,то виновен Сенькин; б) если Аськин не виновен, тоСенькин не виновен. Составьте систему логическихуравнений, решите ее и сделайте выводы о виновноститрех подозреваемых. (Ответ: Аськин точновиновен, про остальных ничего определенного сказатьнельзя.)3) Прогноз погоды выглядит так: “Если не будетветра, то будет пасмурная погода без дождя. Еслибудет дождь, то будет пасмурно и без ветра. Еслибудет пасмурная погода, то будет дождь и не будетветра”. Составьте и решите систему логическихуравнений и определите, какая погода может бытьзавтра. (Ответ: ясно, ветер, без осадков.)4) Сколько различных решений имеет системауравнений⎧(X1 ≡ X2) ⋅(X3 ≡ X4) + (X1 ≡ X2) ⋅(X3 ≡ X4)= 0⎪⎪(X3 ≡ X4) ⋅(X5 ≡ X6) + (X3≡ X4) ⋅(X 5≡ X6)= 0⎨⎪(X5 ≡ X6) ⋅(X7 ≡ X8) + (X5≡ X6) ⋅(X7 ≡ X8)= 0⎪⎪⎩(X7 ≡ X8) ⋅(X9 ≡ X10) + (X7 ≡ X8) ⋅(X9 ≡ X10)= 0где X 1K X 10 — логические переменные?(Ответ: 64)5) Сколько различных решений имеет системауравнений⎧X1 ⋅ X2 + X1 ⋅ X2 + ( X1 ≡ X3)= 1⎪⎪X2 ⋅ X3 + X2 ⋅ X3 + ( X2 ≡ X4)= 1⎪⎨K⎪⎪X7 ⋅ X8 + X7 ⋅ X8 + ( X7 ≡ X9)= 1⎪⎩X8 ⋅ X9 + X8 ⋅ X9 + ( X8 ≡ X10)= 1где X 1K X 10 — логические переменные?(Ответ: 20)6) Сколько различных решений имеет системауравнений⎧X1 ⋅ X2 + X1 ⋅ X2 + ( X1 ≡ X3)= 1⎪⎪X2 ⋅ X3 + X2 ⋅ X3 + ( X2 ≡ X4)= 1⎪⎨K⎪⎪X7 ⋅ X8 + X7 ⋅ X8 + ( X7 ≡ X9)= 1⎪⎩X8 ⋅ X9 + X8 ⋅ X9 + ( X8 ≡ X10)= 0где X 1K X 10 — логические переменные?(Ответ: 16)7) Сколько различных решений имеет системауравнений⎧X1 ⋅ X2 + X1 ⋅ X2 + X2 ⋅ X3 + X2 ⋅ X3= 1⎪X2 ⋅ X3 + X2 ⋅ X3 + X3 ⋅ X4 + X3 ⋅ X4= 1⎨⎪K⎪⎩X8 ⋅ X9 + X8 ⋅ X9 + X9 ⋅ X10 + X9 ⋅ X10= 1где X 1K X 10 — логические переменные?(Ответ: 178)8) Сколько различных решений имеет системауравнений⎧X1 ⋅ X2 + X1 ⋅ X2 + X2 ⋅ X3 + X2 ⋅ X3= 1⎪X2 ⋅ X3 + X2 ⋅ X3 + X3 ⋅ X4 + X3 ⋅ X4= 1⎪⎨K⎪X ⋅ + ⋅ + ⋅ + ⋅ =⎪7X8 X7 X8 X8 X9 X8 X91⎪⎩X8 ⋅ X9 + X8 ⋅ X9 + X9 ⋅ X10 + X9 ⋅ X10= 0где X 1K X 10 — логические переменные?(Ответ: 42)9) Сколько различных решений имеет системауравнений⎧( X1 ≡ X2)+ X1 ⋅ X10 + X1 ⋅ X10= 1⎪⎪( X2 ≡ X3)+ X2 ⋅ X10 + X2 ⋅ X10= 1⎪⎨K⎪⎪( X9 ≡ X10)+ X9 ⋅ X10 + X9 ⋅ X10= 1⎪⎩( X1 ≡ X10)= 0где X 1K X 10 — логические переменные?(Ответ: 0)10) Сколько различных решений имеет системауравнений⎧( X1 → X2) + ( X1 → X3)= 1⎪⎪( X2 → X3) + ( X2 → X4)= 1⎨⎪K⎪⎩( X8 → X9) + ( X8 → X10)= 1где X 1K X 10— логические переменные?(Ответ: 232)11) Найдите все пары логических функций( X(A, B); Y(A, B) ), удовлетворяющие при любыхзначениях логических переменных A и B системеуравнений:⎧X ⋅ A + B = B ⋅ Y⎨⎩Y ⋅ B + A = A ⋅ X(Ответ: X = A или X = A + B ; Y = 0 илиY = A ⋅ B, причем X и Y могут выбираться независимодруг от друга.)


12) Найдите все пары логических функций( X(A, B); Y(A, B) ), удовлетворяющие при любыхзначениях логических переменных A и B системеуравнений:⎧X ⋅ A + B = B ⋅ Y⎨⎩Y ⋅ B + A = A ⋅ X(Ответ: X = 0 или X = A ⋅ B; Y = B илиY = A + B, причем X и Y могут выбираться независимодруг от друга.)13) Найдите все пары логических функций( X(A, B); Y(A, B) ), удовлетворяющие при любыхзначениях логических переменных A и B системеуравнений:⎧X ⋅ A + B ⋅ X = B ⋅ Y⎨⎩Y ⋅ B + A ⋅ Y = A ⋅ X(Ответ: Существует две группы решений по 4 решенияв каждой:I. X = A ⋅ B или X = A ⊕ B;Y = A или Y = A + BII. X = B или X = A + B;Y = A ⋅ B или Y = A ⊕ B.В пределах каждой группы X и Y могут выбиратьсянезависимо друг от друга.)Дополнительные материалы1. Тарасова А.П. Системы логических уравнений.http://festival.1september.ru/articles/416929/.2. Левченков B.C. Булевы уравнения. М.: ДиалогМГУ, 1999.3. Закревский А.Д. Логические уравнения. М.:УРСС, 2003.4. Шалыто А.А. Логическое управление. Методыаппаратной и программной реализации. СПб.:Наука, 2000.5. Вальциферов Ю.Ф., Дронов В.П. Информатика.Часть I. М.: Московский государственныйуниверситет экономики, статистики и информатики,2005.Автор признателен О.А. Тузовой за ценныезамечания, способствовавшие улучшению статьи.Robots.txt никогдане причинит вредчеловеку?Прошедшим летом много шуму наделали историио появлении в выдаче поисковых системперсональных данных людей, производивших теили иные операции в Интернете. Речь, в частности,шла об отправке SMS с сайта оператора мобильнойсети, покупке билетов и т.д. Сразу, какводится, нашлось немалое количество желающихнемедленно найти и наказать виноватых. Кого-тонашли, кого-то наказали, но уверенности в том,что те, кто искал и наказывал, хорошо понимали,в чем дело, увы, нет. Так в чем же дело?Поисковые роботы не занимаются хакерством.Они могут добраться лишь до страниц,которые находятся в открытом доступе — незакрыты теми или иными способами авторизации.Более того, они могут добраться лишь достраниц, о которых им каким-либо способомстановится известно. Последнее важно. Если выразместите на своем сайте страницу, о которойникому не скажете, и ссылку на нее никому недадите, роботы о ней не узнают. Они не перебираютвсе возможные строки, выясняя, нет листраницы с таким именем.Такой способ “защиты” нередко используетсяв случаях, когда полноценная авторизация неудобнадля пользователей. Пример с отправкойSMS характерен. Представьте себе, что SMS ссайта оператора смогут отправлять лишь зарегистрированныепользователи. Удобно ли этодля самих пользователей? Ведь придется сначаларегистрироваться, затем каждый раз вводитьлогин и пароль, периодически забывать и то идругое и восстанавливать или регистрироватьсязаново. Поэтому в подобных случаях нередкоприменяют “защиту”, которая заключаетсяв том, что, например, страница с результатамиотправки SMS имеет имя подобное 545d6464ab-64436f128a199e361d73c6c18a72097 (это, разумеется,просто случайный набор цифр и букв).Случайно найти такую страницу нереально,ссылок на нее не выставляется и, как кажется,“защита” вполне надежная? Да, но… Проблема,которая возникла этим летом, была в ряде случаев(не во всех) связана с тем, что на такихстраницах зачем-то находились счетчики обычныхрейтинговых систем. А счетчик — та же самаяссылка! Он же, фиксируя факт посещения,передает адрес страницы!От этого можно было бы уберечься, запретивиндексацию таких страниц специальными директивамив файле robots.txt. Но и этого сделано небыло.В любом случае, производя те или иные операциив Интернете, надо понимать, что всегдаимеется риск утечки данных. Полностью избежатьэтого нельзя — и администраторы, ипрограммисты, и даже специалисты в областиаудита систем безопасности — обычные люди.Они могут ошибиться и по отдельности, и всевместе (последнее случается редко, но, как видим,случается).Впрочем, риск утечки данных при операциях воффлайне ничем не меньше (больше — посколькубольше роль человеческого фактора).35сентябрь 2011 / ИНФОРМАТИКА


СЕМИНАРИ.А. Сукин,г. Переславль-Залесский36сентябрь 2011 / ИНФОРМАТИКАHaskell: серебрянаяпуля современногопрограммирования?Что такое функциональноепрограммирование?Описать язык Haskell непросто. Сам основнойразработчик и законодатель мод этого языкаСаймон Пейтон-Джонс полагает, что главныйминус Haskell — его чрезмерная полнота инепривычность для среднестатистического современногопрограммиста. Поэтому я вынужденсовершить небольшой экскурс в историю ипричины появления такого явления, как функциональноепрограммирование. Надеюсь, чтоэто краткое путешествие позволит вам лучшевникнуть в глубины этого чисто функциональногоязыка.Традиционно, когда мы в современном миреупотребляем термин “программирование” или“язык программирования”, мы имеем в видупрограммирование императивное и такие широкораспространенные в наше время языки,как C, Pascal, Java, C#. У многих информатиковтермин “программирование” неустанно следуетвместе с понятиями объектов и объектноориентированногоподхода. Немалое же количествопрограммистов вообще имеет очень смутныеи крайне общие представления о разделенииязыков и парадигм программирования.Для тех читателей, что не стесняются относитьсебя к последней категории (признаться, я сампостоянно сомневаюсь, что в этом хитросплетениисущностей можно хоть как-нибудь разобраться),необходимо ввести некоторые определенияи строго показать структуру современного“зверинца” языков программирования.В современном состоянии вычислительнаятехника переживает некоторый кризис, связанныйс принципиальной несовершенностьюсуществующих компьютеров и отсутствиемпрактических реализаций компьютеров другоготипа, например, биологических или квантовыхвычислителей. Современная ЭВМ — этомашина фоннеймановского типа, нравитсянам это или нет. Несмотря на то что идея такихмашин считалась устаревшей уже 30 лет назад,они до сих пор являются фактически единственнымизвестным нам способом аппаратнореализовать вычислительное устройство, обладающееприемлемыми для нас характеристикамии производительностью. Все основныеимперативные языки программирования, будьто C, Pascal, с оговорками Java и C#, являютсямоделями машины фон Неймана.Чем же плоха такая машина и чем плохи еемодели, а также какие из возникающих приэтом проблем можно устранить при помощи


функционального программирования? Напомнюосновную структуру машины фон Неймана: в самомобщем случае у нас имеются процессор и память,подключенные к одной соединительной шине, черезкоторую они и вынуждены общаться. Эта шинане зря издавна называется “узким местом фонНеймана”: вся основная нагрузка в машине такоготипа ложится на нее. В принципе, можете сказатьвы, ничего страшного в этом нет. Но вспомнитесвой опыт программирования, например, на языкеСи, или даже на языке ассемблера: основную массуконструкций языка занимают имена, имена данныхи операций, а также операции по раскрытиюсоответствующих имен (вспомните, например, такиевещи, как косвенная адресация) — именно этанагрузка бесполезным грузом ложится на “узкоеместо фон Неймана”.Рассмотрев главную проблему самой концепциифоннеймановской машины (тут уж мы ничего неможем сделать, реализация ЭВМ другого типа выходитза рамки данного обсуждения), обратимсяк проблемам собственно языков программирования,являющихся моделями машины фон Неймана.Исследователи выделяют четыре основных критерияоценки подобных моделей: математическаяобоснованность, историческая чувствительность(другими словами — степень зависимости текущегосостояния модели от ее предыдущих состояний),удобство и тип семантики, ясность и концептуальнаячистота программ, описываемых конкретноймоделью. Я не буду подробно описывать то, чтостоит за каждым из этих понятий, интересующиесямогут обратиться к соответствующей литературе,скажу лишь, что подавляющее большинство столповнынешней computer science справедливо считают,что модели фоннеймановского типа заслуживаютвесьма низких оценок по этим критериям.К примеру, возьмем слова создателя языка FortranДжона Бэкуса: “По-видимому, с языками программированияпроисходит что-то неладное. Всякийновый язык включает с небольшими изменениямивсе свойства своих предшественников плюс коечтоеще... но фактически дела обстоят так, что лишьнемногие языки снижают затраты на программированиеили повышают его надежность...” [1]. Этоположение было высказано Бэкусом в его лекции,как раз посвященной функциональному программированию.В заключение этих нескольких абзацев подчеркнуих основную идею: современные популярныеязыки программирования своими корнями прочностоят в императивной парадигме программирования;императивная парадигма программированияявляется прямой моделью машины фон Неймана;мы согласимся со светилами информатики XX векаи поддержим мысль о том, что императивное программированиедавно изжило себя.Неудивительно, что многие исследователи ужедавно пришли к выводу о том, что нужно искатьдополнительные пути и придумывать новые парадигмыпрограммирования. Однако сама идеяфункционального программирования в виде использованияоткрытий таких математиков и логиков,как Хаскелл Карри, Алонсо Черч, МоисейИсаевич Шейнфинкель, появилась гораздо раньшеразочарования программистов в императивныхязыках и пришла к нам из разработок в области искусственногоинтеллекта в виде языка Лисп. Лиспбыл и остается совершенно утилитарным языком,хорошо заточенным под нужды задач, близких кискусственному интеллекту. Идея создания чистогоматематически обоснованного языка, специальнопризванного для преодоления проблемфоннеймановских моделей, возникла в конце60-х — начале 70-х годов XX века в работах такихисследователей, как вышеупомянутый Джон Бэкус,Робин Милнер, Дэвид Тернер, отчасти ВалентинФедорович Турчин. Из этих идей родились языки,не привязанные к аппаратной части компьютеров,красиво описываемые математическими формализмами:ML, Рефал, FP, SASL. В начале своего путиэти языки были далеки от требуемого идеала, ониявлялись лишь доказательством того, что программированиеможет быть отделено от фоннеймановскогостиля. В дальнейшем функциональные языкиактивно развивались, и венцом этого развитиястал виновник нашего “торжества”: язык Haskell(названный в честь уже упомянутого математикаХаскелла Карри, одного из авторов комбинаторнойлогики, лежащей в основе многих языков функциональногопрограммирования).Справедливости ради надо сказать, что созданиефункциональной парадигмы было не единственнымответом на моральное устаревание императивныхфоннеймановских языков, примером могут служитьлогическая и объектно-ориентированная парадигмы.Однако эти парадигмы страдают от отсутствия мощнойматематической базы и могут быть выраженыв терминах функционального программирования,поэтому мы не будем сильно заострять на них нашевнимание. Интересующиеся могут обратиться к соответствующейлитературе [2, 3].Haskell: о самом важномНадеюсь, предыдущий раздел оставил у вас положительныевпечатления о функциональном программированиии заставил несколько обновитьсобственные взгляды на программирование императивное.Если нет, у вас еще будет предостаточновремени сделать это, читая остаток этой статьи.Что же такое Haskell? Haskell — это чисто функциональныйязык программирования. Заостритесвое внимание на слове чисто. Чуть позже вы поймете,почему оно так важно в определении этогоязыка. В императивных языках работа программысостоит в выполнении компьютером последовательныхзаданий, описанных на вашем любимом37сентябрь 2011 / ИНФОРМАТИКА


СЕМИНАР38сентябрь 2011 / ИНФОРМАТИКАязыке. Выполняя эти задания, машина представляетсобой автомат — она имеет набор состояний и выполняетпереходы между этими состояниями по заданнымправилам. Например, вы можете объявитьпеременную a и присвоить ей некоторое значение,например, 3. Затем вы можете изменить ее. Такжевы можете применить целый набор управляющихструктур для более хитрого описания действий.Кроме того, вы можете определить несколько функций,которые будут, по сути, обобщением вашихприказаний и управляющих структур (здесь необходимосделать важное уточнение: в современнойлитературе принято называть такие функции блоками,а термин функция оставлять для математическичистых функций, о которых вы прочитаетедалее). Описанная схема напрямую соответствуетмодели машины фон Неймана.В чисто функциональных языках, и в языкеHaskell в первую очередь, вы увидите совершенноиное. В них вы не говорите машине, как она должнадействовать, вы описываете ей, что вы хотитеполучить. Простой пример: факториал. Вы говорите:“Факториал — это произведение всех целыхчисел от 1 до заданного. Сумма набора чисел — этосумма первого числа и суммы оставшихся чисел,и т.д.”. Важным фактом является то, что все данныев чисто функциональных языках неизменяемы(immutable). Вы не можете поменять значение переменной,которой один раз уже было что-то присвоено(если вас возмущает этот факт, подумайтео переменной не как о ячейке памяти, а как о переменнойв математическом смысле, дальше вы увидите,что неизменяемость никак не связывает вамруки). И, наконец, одна из самых важных концепцийфункционального программирования: функциидолжны быть чистыми. Никаких измененийвнешнего контекста программы: изменения переменных,безусловных переходов, — внутри функциипроисходить не должно. Функция описываетсяв строго математическом смысле, как отображениеиз одного множества в другое, и для одних и тех жевходных данных она должна вернуть один и тот жерезультат (для любопытных читателей скажу, чтодля реализации ввода-вывода, генерации случайныхчисел и прочих “нечистых” задач существуютспециальные формализмы, подробнее о них можнопрочитать в [4, 5, 6]). Чистота функций обеспечиваеттри важных преимущества: широкие возможностиоптимизации кода, простоту верификации (доказательстваправильности) программ, что имеетвесьма важное значение при тестировании, и простотуиерархического проектирования (в первуюочередь проектирования снизу вверх): разработкипрограмм из маленьких составных частей.Особенности, описанные в предыдущем абзаце,в принципе могут подходить для любогофункционального языка программирования.Теперь пару слов о том, что выделяет Haskell средиостальных функциональных языков (кстати,именно в Haskell нижеописанные возможностидостигли своего совершенства). Haskell — этоленивый язык. Ленивость языка означает, чтозначения функций и переменных не будут вычисленыдо тех пор, пока они не понадобятсяна самом деле, полезная работа откладываетсяна самый последний момент (тут некоторыечитатели могут вспомнить свое студенчество).Какие преимущества это обес печивает? Одиниз немаловажных плюсов ленивости, особеннозаметный в современном мире многопоточныхмногопроцессорных систем, — это оптимизациявыполнения участков кода по времени и оптимальноераспределение работы между потокамии процессами. Важный теоретический аспектленивости — возможность создания бесконечныхструктур данных, множеств контиуальноймощности, так распространенных в математике(другой подход к описанию подобных структур— это так называемые генераторы, впервыепоявившиеся в языке Icon и успешно перекочевавшиев Python). Кроме того, ленивые языкимогут представить выражение как самое настоящеечистое преобразование данных. Для пониманияэтого приведем небольшой пример. У насесть список xs = [1, 2, 3, 4] и функцияdoubleMe, удваивающая все элементы в списке ивозвращающая новый список. Также представим,что у нас есть выражение doubleMe(doubleMe(doubleMe(xs))). Каким будет вычисление этоговыражения в неленивом языке? Третья функцияdoubleMe удвоит значения в списке и отдастновый список второй функции, вторая функцияудвоит значения в полученном списке и вернетновый список первой функции, первая функцияудвоит значения в новом полученном списке ивернет результат. Все это произойдет ровно в тотмомент, в который компилятор или интерпретаторвстретит это выражение. В ленивом языкеэто выражение начнет вычисляться только тогда,когда его результат действительно будет нужен,например, при выводе на экран. При этом перваяфункция попросит вторую вернуть результат, втораяпопросит третью, третья возьмет первый элементсписка, удвоит его и возвратит второй, втораяудвоит его и возвратит первой, первая удвоитего и возвратит внешней функции, затем потребуетследующий элемент и так далее. Заметьте,что в данной схеме список проходится один раз ине имеет дополнительных промежуточных представлений.Вот что называется чистым преобразованиемданных: мы можем гарантировать, чтонаше выражение преобразует список в список ине усложнит ситуацию созданием его дополнительныхпредставлений.В заключение обзора специфических возможностейязыка Haskell необходимо сказать о статическойсистеме типов, унаследованной им изсемейства языков ML (изобретенных Робином


Милнером, тем самым, что стоял у истоков преодоленияпроблемы фоннеймановских моделей). Когдавы компилируете вашу программу на Haskell, компиляторабсолютно точно знает, какой тип имееткаждый кусочек, каждая переменная в вашем коде,и не даст вам скомпилировать программу, если вынаделали ошибок, попытавшись совместить переменныеразных типов. Это позволяет избавиться отмногих ошибок уже во время компиляции. В отличиеот императивных языков, использующих тот жеподход, Haskell поддерживает очень мощную, математическистрогую систему вывода типов: есликомпилятору известны типы аргументов функции иизвестен характер функции, он может автоматическии однозначно вывести тип результата функции(не в последнюю очередь это достигается чистотойфункций).Не пугайтесь, если вы что-то не поняли в том,что я сказал о языке Haskell в этом разделе, в дальнейшемвы увидите, что Haskell — это элегантныйи мощный язык программирования, и программына нем получаются значительно более краткими,чем соответствующие программы на императивныхязыках.Чтобы понять Haskell, необходимо почувствоватьего самостоятельно, поэтому ваши собственныепрактические занятия по написаниюпрограмм будут иметь куда большую пользу, чеммои пространные рассуждения о математическойстрогости и функциональности. В силу этой причиныостаток статьи будет представлять собойнечто вроде наглядного и простого урока, призванногодать вам хороший старт в нелегком делесамостоятельного постижения функциональногопрограммирования.В заключение этого раздела, прежде чем перейтик непосредственному описанию основ языка иправил написания программ на нем, необходимосказать пару слов о том, что вам необходимо дляработы. В первую очередь это компилятор илиинтерпретатор. Самым популярным компиляторомHaskell является свободно распространяемыйGHC (Glasgow Haskell Compiler), и если вы решитеиспользовать его, а также планируете “застрять”в Haskell надолго, то лучше сразу скачать HaskellPlatform — полный набор программ для программированияна Haskell. Также GHC может работатьв качестве интерпретатора. Если же вы планируетепросто глянуть на Haskell одним глазом, то я посоветуювам скачать также свободно распространяемыйи специально предназначенный для обученияинтерпретатор Hugs.Пара простых замечаний. Традиционно программына Haskell хранятся в файлах с расширением*.hs, подобные файлы можно открыть илииз контекстного меню, или из командной строкиинтерпретатора. Как вызвать интерпретатор?Если вы выбрали GHC, то интерпретатор вызываетсякомандой ghci, в случае Hugs команда будетпрос той: hugs. Как открыть файл с программой изкомандной строки интерпретатора? Допустим, увас есть файл myprogram.hs; чтобы открыть его,вам нужно написать :l myprogram в строке интерпретатора.Если во время работы вы изменилифайл, вы можете снова набрать :l myprogram илиже воспользоваться повторной загрузкой файла с помощьюкоманды :r. Полученных знаний вам должнохватить для перехода к следующему разделу.Первые шаги в мире функцийВы все же решили попробовать Haskell в деле,и это просто потрясающе! Запустите полюбившийсявам интерпретатор, и вы увидите приглашение,например, Hugs> или Prelude>; ужесейчас вы можете использовать Haskell в качествепродвинутого калькулятора. Все известныевам правила ассоциативности и коммутативностиарифметических операций для него справедливы,необходимо сделать лишь одно небольшое замечание:отрицательные числа крайне рекомендуетсязаписывать в скобках, например: 5 * (-4), посколькув целях чистоты и правильности кода некоторыекомпиляторы будут ругаться на записи вдухе 5 * -4.Поиграв с обычной арифметикой, можетеобратить свой взгляд на булеву: обозначенияопераций в ней похожи на соответствующиеобозначения в С — &&, ||, но not. Операциясравнения на равенство аналогично своему побратимув С тоже обозначается ==, операция жесравнения на неравенство имеет несколько непривычныйвид /=. Булевы значения в Haskellпредставляются как True и False и относятсяк соответствующему типу Bool. Важно заметить,что в силу строгой типизации вы не можетесравнить значения разных типов. Например,если вы попробуете написать 3 == True или3 == '3', вы получите ошибку. Вы не можетесравнить несравнимое (по мнению компилятора).В очень редких случаях типы могут быть неявноприведены, например, в выражении 3 - 1.0число 3 может быть трактовано как целое или жекак вещественное, однако число 1.0 может бытьтрактовано исключительно как вещественное,поэтому в данном выражении компилятор приметрешение в пользу вещественных чисел и приведет3 к 3.0, а не 1.0 к 1. В дальнейшем я опишутипы более по дробно, пока что они не являютсяпредметом нашего рассмотрения.Если вы до этого не имели опыта программированияна Haskell, то вы наверняка могли предположить,что вышеописанные операции вычисляютсяс помощью операторов. Однако это не так: и +,и –, и все другие арифметические и логические операцииявляются чистыми функциями, и посколькуони заключены между своих аргументов, они называютсяинфиксными. В языке Haskell не так уж39сентябрь 2011 / ИНФОРМАТИКА


СЕМИНАР40сентябрь 2011 / ИНФОРМАТИКАмного инфиксных чисел, и большая их часть пришлаиз мира математики. Основная масса функцийявляются префиксными, то есть их имена записываютсяперед аргументами, например, max 1 3.Заметьте особое отличие вызова функций в Haskellот вызовов в других языках — аргументы при записивызова пишутся без скобок и каких-либо разделительныхзнаков, поскольку все это имеет несколькодругой смысл.Разумеется, вы запросто можете определить собственныефункции. Вы должны разместить описаниефункции в файле с расширением *.hs и загрузитьэтот файл командой :l — определение функцийв командной строке интерпретатора работатьне будет (в дальнейшем будет описан способ сделатьэто, если уж очень хочется)! Опишем, к примеру,вышеупомянутую функцию doubleMe, котораяудваивает собственный аргумент. Это просто:doubleMe x = x + xили:doubleMe x = x * 2оба определения математически правильны и эквивалентны.Разумеется, вы можете определить другиефункции, используя уже определенные вамифункции (причем сделать это можно даже до определенияпоследних!):doubleMeTwice x = doubleMe (doubleMe x)Также вы можете использовать условные выраженияпри описании функций. Например, нам надоопределить функцию, которая будет удваиватьлишь числа не бÓльшие ста:doubleFromFirstHundred x = if x > 100then x else doubleMe xЗдесь необходимо заметить, что ветвь else вязыке Haskell обязательна по следующей причине:условный оператор является выражением, котороевсегда должно иметь определенное значение. Онни в коем случае не является чистой функцией, посколькузависит от значения переменных, определенныхвовне его, но он является полноправнымматематическим выражением.Константные выражения в Haskell тоже являютсяфункциями: функциями, не имеющими аргументови, следовательно (вспомните правило: чистаяфункция всегда должна давать один и тот же результатдля одних и тех же входных данных), имеющимиединственно возможное значение:temperature = 35Напоследок для людей, заинтересовавшихсяправилами именования функций: имя функциив Haskell не может начинаться с заглавной буквы,поэтому имена всех вышерассмотренных функцийначинаются со строчных букв. Кроме того, принятоеще одно интересное соглашение о наименованиифункций: имя функции, заканчивающееся на апостроф,обозначает либо неленивую функцию, либонесколько измененный вариант уже имеющейсяфункции. Такое именование — стандартная практикапри программировании на языке Haskell.Списки, списки, спискиСписок — одна из основных структур данных вязыке Haskell. Если вы имеете хоть малейший опытпрактического программирования, вы уже, вне сомнения,знаете, что такое список. В Haskell спискомможет быть однородное множество элементов. Выможете иметь список чисел или список символов,но не список, содержащий одновременно и числа исимволы. Например:ghci> let someList = [1, 2, 3, 4]ghci> let anotherList = ['h', 'e', 'l','l', 'o'][Замечание для любознательных читателей:слово let и есть та самая конструкция, котораяпозволяет определять функции прямо в строкеинтерпретатора (а ведь это определение спискаи есть определение функции, как я уже писалвыше). К сожалению, в Hugs это так просто несработает.]Строки являются частным случаем списков —это списки символов. Однако Haskell разрешает неписать каждый раз ['h', 'e', 'l', 'l', 'o'],когда мы хотим определить строку 'hello', вы можетезаписать ее напрямую.Одна из основных и простейших операцийнад списками — конкатенация, или склейка,списков:Hugs> [1, 2, 3, 4] ++ [9, 10, 11, 12][1, 2, 3, 4, 9, 10, 11, 12]Hugs> 'hello' ++ ' ' ++ 'world''hello world'Однако с частой конкатенацией очень длинныхсписков следует быть осторожным, поскольку этодовольно ресурсоемкая операция: при склейке двухсписков интерпретатор вынужден пройти первыйиз них от начала до конца, а, как нам известно, времяэтого прохода линейно зависит от числа элементовв списке.Теоретическая база списков в Haskell унаследованаиз языков семейства Лисп и заслуживает некоторогорассмотрения. Допустим, вы хотите добавитьэлемент в начало списка — это делается операторомдвоеточие:Hugs> 4:[1, 2, 3][4, 1, 2, 3]В данном случае число 4 называется головой списка,а список [1, 2, 3] — хвостом. Рассмотримсам список [1, 2, 3], его голова — 1, хвост —[2, 3]. Рассмотрим этот хвост, его голова — 2,хвост — [3]. Выражение [3] ни в коем случаене является числом, это список, имеющий голову3 и хвост [], где [] является специальным видомсписка — пустым списком. Таким образом,список [4, 1, 2, 3] имеет альтернативную(имеющую теоретически верный вид) форму4:1:2:3:[], однако при записи программ предпочтительноиспользовать первую форму записисписков для повышения читабельности.


При записи списков чисел (или других объектовперечислимого типа; о классах типов — дальше)можно использовать промежутки:Hugs> [1 .. 4][1, 2, 3, 4]Если правый конец промежутка не указан, томы получим бесконечный список, начинающийсяс заданного элемента (не стоит пытаться еговывести, он все-таки бесконечный), ленивостьHaskell легко позволяет работать с такими структурамиданных.Элементами списков также могут быть списки,причем не обязательно, чтобы все внутренние спискиодного большого списка имели одинаковуюдлину: в Haskell тип список обозначает список любойдлины.Операций над списками в Haskell великое множество:это и традиционная для массивов индексация,и взятие головы и хвоста списка, и подсчетдлины, и нахождение минимального и максимальногоэлементов, и многое-многое другое. За полнымперечнем можно обратиться к специальнойлитературе [4, 5, 6]. Для нас сейчас самыми интереснымиявляются свертки списка.Суммирование элементов списка:Hugs> sum [1, 2, 3, 4]10Подсчет произведения элементов списка:Hugs> product [1, 2, 3, 4]24С помощью таких сверточных функций красивореализуются многие математические задачи, кпримеру, факториал:factorial n = product [1 .. n]Посмотрите на это определение функции,считаю щей факториал, и скажите, что оно вамнапоминает? Да это же один в один математическоеопределение: “Факториал числа n равен произведениювсех чисел от 1 до n включительно”!Вспомните еще хоть один неспециализированныйязык, который позволил бы вам определятьфункции в том виде, в котором они задаются вматематике.Одним из самых мощных средств работы сосписками в Haskell являются так называемые списочныевыражения. Вспомните, как определяютсямножества в математике, например: “МножествоS — это множество x, принадлежащих множествуN и удовлетворяющих системе неравенств...”.В языке Haskell имеются все средства для заданиямножеств точно таким же языком! Например, множествоудвоенных чисел из промежутка от 1 до 10,тогда вы можете записать:Hugs> [x * 2 | x


СЕМИНАР42сентябрь 2011 / ИНФОРМАТИКАматематической задачи. Условие задачи ставитсятак: необходимо найти все такие прямо угольныетреугольники со стороной не больше 10 и периметром,равным 24. В императивных языках эта задачаимеет не самое тривиальное и не самое очевидноерешение, связанное с неоднократным применениемциклов. В Haskell же все ясно: необходимоиспользовать списочное выражение. Представимтреугольник в виде кортежа из значений длин сторон— (a, b, c). Перечислим все прямоугольныетреугольники со сторонами не больше 10:Hugs> [(a, b, c) | c Intlength' [] = 0length' (_:xs) = 1 + length' xsСпециальная точка в области определенияфункции длины — пустой список — выделена вособый случай, длина такого списка равна нулю.Длина же любого непустого списка равна единице,плюс длина его хвоста. Голова в данном случаенам не нужна, поэтому обозначена подчеркиванием.


Выражение x:xs, два частных случая которого —x:_ и _:xs часто применяется при определении черезсравнение с образцом функций, работающихсо списками. Здесь x является головой списка иимеет тот же тип, что и все элементы списка, например,a, а xs является хвостом списка и имееттип “список элементов типа a”. В отдельных случаяхприменяются и более сложные выражения, например,x:y:xs или даже x:y:z:xs.Следующим важным моментом в определениифункций являются охранные выражения. Подобнаяформа записи должна быть знакома многим, ведькаждый, кто изучал в школе математику, хоть разда определял кусочно заданные функции с ее помощью.Разумеется, это та самая крайне удобная возможностьразбить область определения сложнойфункции на несколько подобластей и определитьфункцию отдельно для каждой из этих под областей.Простейший пример — функция, ищущая максимальноеиз двух целых чисел:max' :: Int -> Intmax' a b| a > b = a| b >= a = bКак видите, для разбиения области определенияфункции используется вертикальная черта, послекоторой следует неравенство, показывающее отношениемежду входными данными, подобных разбиенийможет быть любое количество. В вышеописанномопределении есть недочет: оно избыточно,содержит лишнее неравенство. Ведь если a не большеb, то это автоматически обозначает, что b большеили равно a. Для описания случаев, которые неописываются ни одним из встреченных ранее неравенств,применяется ключевое слово otherwise, сним это определение станет куда элегантнее:max' :: Int -> Intmax' a b| a > b = a| otherwise = bВ мои задачи не входит описать все возможныеварианты определения функций, поэтому, рассмотревлишь самые интересные из них, отсутствующиев привычных нам императивных языках программирования,я закончу речь о подобных формальностяхи перейду к краткому описанию действительномощного метода программирования: использованиюфункций высших порядков, что являетсяисключительной прерогативой и основой мощифункционального стиля.Функции от функций от функцийОдна из фундаментальных концепций функциональногопрограммирования пришла из теориилямбда-исчисления, своебразного формализма, подобногомашине Тьюринга, созданного для того,чтобы конструктивно описывать математическиевыражения. Эта концепция носит имя лямбдавыраженийи, иными словами, представляет собойанонимные функции, то есть функции, не имеющиеимени.Для того чтобы понять, зачем они нужны, необходимосказать, что функции в Haskell являютсясобственным полноправным типом данных:они могут быть аргументами и результатамидругих функций. В Haskell такая терминологияне распространена, но обычно функции, принимающиеили возвращающие другие функции,называют функционалами, а в среде любителейHaskell — функциями высших порядков. В теориифункционального программирования выделяютдва самых важных функционала: map и filter.Функционал map принимает функцию f и список,и применяет эту функцию к каждому элементусписка, формируя новый список:Hugs> map sin [1, 2, 3, 4][0.84<strong>14</strong>70984807897,0.909297426825682,0.<strong>14</strong>1120008059867,-0.756802495307928]Функционал filter принимает функцию, котораявозвращает логическое значение (предикат) исписок, а возвращает список тех элементов исходногосписка, для которых применение предикатадает результат True.Hugs> filter (> 2) [1, 2, 3, 4][3,4]В этом примере мы отсеиваем из списка всезначения, которые меньше или равны двойке.Заметьте интересную запись функции — (> 2),этот прием называется каррингом, в честь математикаХаскелла Карри. В языке Haskell вы можетелюбой функции дать неполный набор аргументови получить при этом новую функцию, котораяпримет оставшиеся аргументы. Яркий пример использованиятакой особенности показан выше:применение таких неполных функций в функционалахmap и filter.Точно такого же эффекта, как применение карринга,но с большей гибкостью, можно достичь спомощью анонимных функций, то есть лямбдавыражений.Перепишем пример для filter с их использованием:Hugs> filter (\x -> x > 2) [1, 2, 3, 4][3,4]Как видите, анонимная функция определяетсяследующим образом: \ аргумент1 ... аргументN –>тело (символ “\” обозначает греческую букву “лямбда”).Лямбда-выражение может иметь любое числоаргументов и в принципе является полноправнойфункцией, а не урезанной версией существующей,что дает нам большую мощь при их использовании.Один из классических примеров использованияанонимных функций: обобщенная версия функциисортировки, принимающая список, подлежащийсортировке, и функцию, которая сравнивает по некоторымправилам два аргумента.На этом многообразие применения функцийвысших порядков не заканчивается, но в мою за-43сентябрь 2011 / ИНФОРМАТИКА


СЕМИНАР44сентябрь 2011 / ИНФОРМАТИКАдачу не входит полностью описать эту практическинеобъятную область. Как и всегда, к моему сожалению,вынужден отправить любопытных читателейв [4, 5, 6].Как быстро это все работает?Рассуждения о производительности программныхсистем всегда очень субъективны, поэтомуя даже не стану пытаться выгораживать себяи убеждать вас в том, что мои потуги в этом направлениисильно отличаются в сторону объективностиот чьих-либо чужих, коих полно вИнтернете, специальной литературе и публицистике.Думаю, у вас уже назрел вполне ожидаемыйвопрос: а сколько ресурсов мы теряем дляподдержания работы такой мощной среды программирования,в которой работают программы,написанные на языке Haskell? Ведь, разумеется,скажете вы, такие легкие и непринужденные действияи операции над списками, функциями, любымидругими видами данных не могут пройтибезболезненно. Вы будете абсолютно правы: программына Haskell работают медленнее аналогичныхпо функциональности программ на языкеС или Pascal и тратят большее число памятипри своей работе. Однако результаты тестов показывают,что обычно производительность программна Haskell редко падает больше чем в 1,5раза, и лишь в самых исключительных случаяхфункциональные программы медленнее соответствующихимперативных в 9–10 раз. В настоящеевремя ведутся активные работы по разработкекомпилятора Haskell, который сможет сравнятьпроизводительность функциональных и императивныхпрограмм, и эти работы весьма успешны:в них используются концепции метавычислений,позволяющих создавать оптимизирующие компиляторы,“заточенные” под каждую отдельнуюпрограмму (!). Из серьезных минусов производительностифункцио нальных сред разработкиможно назвать, пожалуй, чрезмерно высокуютребовательность компиляторов к ресурсам, ввидувысокой сложности применяемых оптимизаций.К сожалению, эта проблема действительноимеет место, и решить ее, не ухудшив скоростигенерируемого кода, не представляется возможным.В целом, суммируя сказанное в этом разделе,можно сказать, что Haskell представляетсерьезную угрозу для императивного программирования,являясь одним из немногих действительнобыстрых функциональных языков, поэтомуон как минимум заслуживает того, чтобы кнему присмотрелись поближе.Заключение: а серебряная ли пуля?Завершая этот краткий обзор, я надеялся ответитьна вопрос: а является ли Haskell той самойсеребряной пулей, которая поможет нам справитьсяс оборотнем сложности проектированияи реализации программных систем? Когда же янапрямую подошел к написанию этого раздела, японял, что так и не могу дать вам этот ответ и одновременноне запутать вас и не сбить с пути, поэтому,думаю, вам, читателям, предстоит для себярешить, нужен ли и интересен ли вам Haskell ифункциональное программирование вообще, кажутсяли они вам мощнее императивных языков,могут ли они стать вашим повсе дневным инструментом.В этой статье я не успел охватить глубиныязыка Haskell, но, надеюсь, я смог показать егоневероятную простоту вкупе с сильнейшей теоретическойи математической обоснованностьювсех языковых конструкций. В общем, делайтевыводы, выбирайте язык программирования подуше и ни в коем случае не ставьте себя в какиенибудьжесткие рамки, делая этот выбор.ПримерыВ данном разделе я размещу 20 простых программна языке Haskell, решающих разнообразныечасто встречающиеся алгоритмические и математическиезадачи. Неясные моменты будут сопровождатьсяаннотациями. Для запуска в интерпретаторевсе примеры должны быть сохраненыкак определения функций — в отдельном файле ипотом загружены с помощью команды :l. Запускосуществляется вызовом соответствующей функцииили функции main. Результатом некоторыхпрограмм могут являться списки (в том числебесконечные).1. 99 бутылок колыОдин из самых бесполезных, но в то же время довольнонетривиальных примеров. Задача состоит втом, чтобы вывести стихотворение:“99 bottles of cola on the wall, 99 bottles of cola.Take one down and pass it around, 98 bottles of colaon the wall.98 bottles of cola on the wall, 98 bottles of cola.Take one down and pass it around, 97 bottles of colaon the wall....”и так далее.bob n = (num n) ++ ' bottle' ++(s n) ++ ' of cola'wall = ' on the wall'pass 0 = 'Go to the store and buysome more, 'pass _ = 'Take one down and passit around, 'up (x : xs) = x : xs


num (-1) = '99'num 0 = 'no more'num n = show ns 1 = ''s _ = 's'main = putStr $ concat[up (bob n) ++ wall ++ ', ' ++bob n ++ '.\n' ++pass n ++ bob (n - 1) ++wall ++ '.\n\n'| n lengthys then xs else yslcs [] _ = []lcs _ [] = []lcs (x:xs) (y:ys)| x == y = x : lcs xs ys| otherwise = longest (lcs (x:xs) ys)(lcs xs (y:ys)8. Построение бесконечной последовательности,каждый следующий член которой являетсяследующим рядом треугольника ПаскаляТреугольник Паскаля — треугольник, образованныйбиномиальными коэффициентами. О биномиальныхкоэффициентах — см. дальше.nextRow row = zipWith (+)([0] ++ row) (row ++ [0])pascal = iterate nextRow [1]Функция iterate строит бесконечный списокпоследовательных применений заданной функции кзаданному списку — [x, f x, f (f x), ...]9. Проверка, является ли число совершеннымСовершенные числа — натуральные числа, равныесумме своих делителей.perfect n = n == sum [i | i y = y : (x:xs) 'merge' ys| otherwise = x : xs 'merge' yshamming = 1 : map (2*) hamming 'merge'map (3*) hamming 'merge'map (5*) hamming12. Факторизация натурального числаФакторизация — разложение натурального числана простые делители.factorize' n pps@(p:ps) = case n'divMod' p of(0, 1 ) -> [](remainder, 0) ->p : factorize' remainder pps-> factorize' n psfactorize n = factorize' n primesБесконечный список primes взят из задачи 10.Выражение имя1@(x:xs) разбивает данный списокна голову и хвост, оставляя за исходным спискомимя имя1.13. Решение задачи о Ханойских башняхПостановка задачи: даны три стержня, на одиниз которых нанизаны n, причем кольца отличаютсяразмером и лежат меньшее на большем. Задачасостоит в том, чтобы перенести пирамиду из nколец за наименьшее число ходов. За один раз разрешаетсяпереносить только одно кольцо, причемнельзя класть большее кольцо на меньшее.hanoi' 0 _ _ _ = []hanoi' n a b c = hanoi' (n-1) a c b ++[(a, b)] ++ hanoi' (n-1) c b ahanoi n = hanoi' n 1 2 3Функция hanoi возвращает решение в видесписка пар (a, b), каждая из которых значит:“Передвиньте диск со стержня а на стержень b”.45сентябрь 2011 / ИНФОРМАТИКА


СЕМИНАР<strong>14</strong>. Расчет биномиальных коэффициентовБиномиальные коэффициенты — коэффициенты вразложении бинома Ньютона по степеням x. Общаяформула для расчета: binom(n, k) = n!/((n – k)!k!).binom n k = product([k + 1..n]) 'div'product([1..n – k])15. Скалярное произведение векторовdot a b | length a == lengthb = sum (zipWith (*) a b)| otherwise = error 'Sizes don't match'16. Численное решение уравненияНахождение численного решения уравненияf(x) = 0, на промежутке [start, stop] с шагомstep и допустимой ошибкой eps.solve f start stop step eps =[x | x


ОПЫТ ТЕМА В МИР ИНФОРМАТИКИ НОМЕРА№ 168vmi@1september.ruДля пытливых ученикови их талантливых учителей4848сентябрь 2011 / ИНФОРМАТИКАД.М. ЗлатопольскийЛОГИКАОт кошек — через переключатели —к компьютерамПредставьте себе, заходите вы однажды в зоомагазин,где можно купить кошку, и говорите продавцу:“Мне нужна кошка мужского пола, сиамская, белаяили рыжая; или кошка женского пола, сиамская, любогоцвета, кроме белого; или любая кошка черногоокраса”. А продавец вам отвечает: “А-а, так вам нужнакошка из множества, описываемого выражением:(М × С × (Б + Р)) + (Ж × С × (1 – Б)) + ЧВерно?” 1Вы, конечно, спросите продавца: “А что означаютбуквы М, Ж, Б, Р, С и Ч, знаки «+», «×» и «1 –»?”.Он объяснит:— М и Ж — множества всех кошек, соответственно,мужского и женского пола;— Б, Р и Ч — множества всех кошек, соответственно,белого, рыжего и черного цветов;— С — множество кошек сиамской породы;— знак “+” обозначает слово ИЛИ, знак “×” —слово И;— запись “1 –” соответствует слову НЕ (в смыслевсе, за исключением чего-то).С учетом этого объяснения записанное продавцомвыражение приобретает вид:(М И С И (Б ИЛИ Р)) ИЛИ (Ж И С И (НЕ Б)) ИЛИ ЧПрочитав новое выражение, вы, конечно, скажете:“Да! Именно это я произнес словами!”. Действительно,вам нужна кошка, входящая в одно из трех множеств:(М И С И (Б ИЛИ Р))ИЛИ(Ж И С И (НЕ Б))ИЛИЧЕсли принесенная кошка принадлежит к соответствующемумножеству, то вместо буквы надоподставить 1 (или Истина, или Да), в противномслучае — 0 (или Ложь, или Нет).1Наверное, этот продавец, учась в школе, имел по информатикеоценку “5” ☺.Для начала продавец приносит вам рыжего кота,о котором говорит, что тот не сиамской породы.Условие покупки этой кошки выглядит так:(1 И 0 И (0 ИЛИ 1)) ИЛИ (0 И 0 И (НЕ 0)) ИЛИ 0Обратите внимание, что единице равны толькоусловия М и Р, поскольку продавец принес рыжуюкошку мужского пола.Теперь нужно вычислить значение этого логическоговыражения 2 . Но для этого нужно уметь вычислятьзначения более простых логических выражений,включающих только отдельные слова (или,как их еще называют, логические связки) И, ИЛИи НЕ. Как вы, очевидно, знаете, это делается по такназываемым “таблицам истинности”. Например,для слова И такая таблица выглядит так:Условие 1 Условие 2 Условие 1 И Условие 21 (Истина) 0 (Ложь) 0 (Ложь)0 (Ложь) 1 (Истина) 0 (Ложь)1 (Истина) 1 (Истина) 1 (Истина)0 (Ложь) 0 (Ложь) 0 (Ложь)— то есть результат равен 1 (Истина), только еслиоба условия, которые “соединяет” слово И, истинны(равны 1).Для логической связки ИЛИ таблица имеет вид:Условие 1 Условие 2 Условие 1 ИЛИ Условие 21 (Истина) 0 (Ложь) 1 (Истина)0 (Ложь) 1 (Истина) 1 (Истина)1 (Истина) 1 (Истина) 1 (Истина)0 (Ложь) 0 (Ложь) 0 (Ложь)— то есть результат равен 1 (Истина), если хотя быодно из условий, которые “соединяет” слово И, истинно(равно 1).Таблица истинности для связки НЕ:Условие НЕ Условие1 (Истина) 0 (Ложь)0 (Ложь) 1 (Истина)2Напомним, что логическими называются выражения,в которых используются условия, каждое из которых можетбыть истинным или ложным, и слова И, ИЛИ, НЕ; результатлогического выражения равен ИСТИНА (или 1)либо ЛОЖЬ (0). Логическая операция, в которой используетсяслово И, называется конъюнкцией, или логическимумножением, слово ИЛИ — дизъюнкцией, или логическимсложением, слово НЕ — отрицанием, или инверсией.


— то есть при использовании слова НЕ результатпротивоположен значению условия, записанногопосле этого слова.С помощью этих таблиц можно легко вычислитьзначение логического выражения:(1 И 0 И (0 ИЛИ 1)) ИЛИ (0 И 0 И (НЕ 0)) ИЛИ 0 == (1 И 0 И 1) ИЛИ (0 И 0 И 1)) ИЛИ 0 = 0Нулевой результат означает, что эта кошка вамне подойдет.Тогда продавец приносит вам белую сиамскую кошечку.Подставляем в исходное выражение 0 и 1:(0 И 1 И (1 ИЛИ 0)) ИЛИ(1 И 1 И (НЕ 1)) ИЛИ 0.Это выражение равно:(0 И 1 И 1) ИЛИ (1 И 1 И 0) ИЛИ0 = 0 ИЛИ 0 ИЛИ 0 = 0,то есть и эту бедную киску вы тоже отвергаете.Наконец, продавец приносит дымчатую сиамскуюсамку (ее цвет попадает в категорию Д —другой, т.е. не белый, не черный, не рыжий). Выражение(0 И 1 И (0 ИЛИ 0)) ИЛИ(1 И 1 И (НЕ 0)) ИЛИ 0сводится к виду:(0 И 1 И 0) ИЛИ(1 И 1 И 1) ИЛИ0 = 0 ИЛИ 1 ИЛИ 0 = 1Окончательный результат равен 1 — кошка нашласвой новый дом!Вечером того же дня кошка дремлет, свернувшисьв клубок, у вас на коленях, а вы размышляетео том, можно ли, вместо того чтобы преобразовыватьвыражения с логическими связками И, ИЛИи НЕ, соорудить такое устройство, которое определялобы, подходит покупателю предложенная продавцомкошка или нет. А почему бы и нет! Давайтепопробуем.Чтобы начать наш эксперимент, надо соединитьлампочку с батарейкой, как обычно, но включить вцепь два переключателя, а не один:Ничего не случится и если вы замкнете правыйпереключатель при разомкнутом левом. Лампочказагорится лишь при одном условии: если включитьлевый и правый переключатели одновременно:Работу цепи можно суммировать в следующейтаблице:ЛевыйпереключательЛевыйпереключательЛампочкаЗамкнут Разомкнут Не горитРазомкнут Замкнут Не горитЗамкнут Замкнут ГоритРазомкнут Разомкнут Не горитЕсли разомкнутое состояние переключателя обозначитьнулем, замкнутое — единицей, а состояниялампочки — аналогично: 0 (не горит) и 1 (горит),то эта таблица будет иметь вид:ЛевыйпереключательЛевыйпереключательЛампочка1 0 00 1 01 1 10 0 0Вам эта таблица ничего не напоминает? Правильно— таблицу истинности для логической связки И(для операции логического умножения)! А это значит,что с помощью собранной нами схемы мы можем “механизировать”часть расчетов по решению вопроса отом, подходит покупателю предложенная продавцомкошка или нет! С ее помощью мы сможем определятьрезультат логических выражений со словом И.Теперь подключим переключатели иначе:Как вы, очевидно, знаете из уроков физики, переключатели,соединенные таким способом (одинза другим), называются подключенными последовательно.Если вы замкнете левый переключатель,то не случится ничего:Отличие от предыдущей схемы в том, что лампочкабудет гореть независимо от того, включилили вы верхний переключатель:49сентябрь 2011 / ИНФОРМАТИКА


В МИР ИНФОРМАТИКИ № 168нижний:или оба:вы увидите, что буквы в ней стоят в том же порядке,что и в выражении. Каждому слову И в выражении соответствуетфрагмент схемы, в котором два переключателя(или две группы переключателей) соединеныпоследовательно (о таком соответствии мы говориличуть выше). Каждому слову ИЛИ в выражении соответствуетчасть схемы, в котором два переключателя(или две группы переключателей) соединены параллельно(это мы тоже обсуждали).Как вы помните, в нашем рассказе сначала продавецпринес рыжего кота не сиамской породы.Включите соответствующие переключатели:МСБРВы, вероятно, уже догадались, что это таблица истинностидля логической связки ИЛИ (для операции логическогосложения). А это значит, что схема с параллельнымсоединением выключателей, как и с соединениемпоследовательным, сможет “механизировать” частьрасчетов по подбору кошки. Сделав этот вывод, мы можемсоединить 8 переключателей в такую схему:МСБРЖСЧХотя переключатели М, Р и Б замкнуты, цепь вцелом разомкнута, и лампочка не горит. Это значит,что предложенный кот не подходит. Такой жеответ мы получили раньше, анализируя логическоевыражение “аналитически”, т.е. наше устройствосработало правильно!Затем продавец принес белую сиамскую кошечку:БЖСЧБМСБРЖСБ50сентябрь 2011 / ИНФОРМАТИКАКаждый переключатель в этой схеме помечен буквой— той же, что и в логическом выражении, приведенномв начале статьи (Б эквивалентно выражениюНЕ Б). Просмотрев схему слева направо и сверху вниз,ЧИ снова цепь осталась разомкнутой, и лампочка незажглась, т.е. и в этот раз устройство нас не подвело.Наконец, продавец принес серую сиамскую кошечку:МЖССЧБРБ


Вот теперь цепь замкнута, лампочка горит, сигнализируяо том, что все ваши условия для покупкикошки выполнены!Итак, мы с вами создали (пусть на бумаге) устройство,в котором с помощью переключателей можно вычислятьрезультат сложного логического выражения.А не хотите попробовать изготовить подобноеустройство? Предлагаем читателям сделать это, обратившисьпри необходимости за помощью к учителюфизики или технологии.Возникает вопрос: “А нельзя ли аналогичным образомизготовить вычислительное устройство?” —Можно! Только вместо переключателей следует использоватьчто-то другое. О том, как это сделать,мы расскажем в одном из следующих выпусков.Дополнительное заданиедля самостоятельной работыИспользуя законы логики, упростите приведенноев начале логическое выражение для выборакошки. Сделав это, вы сможете изготовить и соответствующееустройство.Полученное логическое выражение и/или фотографииизготовленного устройства, пожалуйста,присылайте в редакцию. Все изготовившие устройствобудут награждены дипломом.Литература1. Петцольд Ч. Код. М.: Издательско-торговыйдом “Русская редакция”, 2001.ЗАДАЧНИКОтветы, решения, разъясненияк заданиям, опубликованным в разделе“В мир информатики” ранее1. Числовые ребусы с 2011 годомОтветыЗадание “Россия в 2011 году”Вариант 1: РО 2 + СС 2 + ИЯ == 2011 – 29 2 + 33 2 + 81 = 2011Вариант 2: РО 2 + СС + ИЯ 2 == 2011 – 37 2 + 66 + 24 2 = 2011Вариант 3: РО 2 + СС + ИЯ == 2011 – 43 2 + 77 + 85 = 2011Задание “Москва в 2011 году”:М 2 + О 4 + С 4 + К 4 + В 4 + А 2 == 2011 – 3 2 + 1 4 + 2 4 + 5 4 + 6 4 + 8 2 = 2011(возможны и другие, “симметричные” приведенному,варианты ответа).Задание “Год Кролика”Вариант 1: КР 2 + ОЛИК == 2011 – 23 2 + <strong>14</strong>82 = 2011Вариант 2: КРОЛ + ИК 2 == 2011 – 1570 + 21 2 = 2011Задание “Сумма степеней в год Кролика”К 3 + Р 3 + О 2 + Л 2 + И 3 + К 3 == 2011 – 9 3 + 0 3 + 4 2 + 5 2 + 8 3 + 9 3 = 2011 или9 3 + 8 3 + 2 2 + 6 2 + 1 3 + 9 3 = 2011(возможны и другие, “симметричные” приведенным,варианты ответа).Ответы представили:— Базылев Юрий, Варфоломеев Сергей, ГалушковаКарина и Макаров Игорь, Республика Карелия, поселокНадвоицы, школа № 1, учитель Богданова Л.М.;— Бородкина Алевтина, средняя школа села Сердар,Республика Марий Эл, учитель Чернова Л.И.;— Васинская Екатерина, Газизуллин Артур иСафиуллин Ильдар, Республика Башкортостан,г. Стерлитамак, школа № 17, учитель Орлова Е.В.;— Владимирова Юлия, Моронцова Анастасия,Семенов Дмитрий, Тимофеев Анатолий и ЯковлевАнатолий, основная школа села Именево, РеспубликаЧувашия, Красноармейский р-н, учитель ТимофееваИ.А.;— Вылка Татьяна, основная школа поселка Каратайка,Архангельская обл., учитель Безумова В.А.;— Коростелев Андрей и Филимонова Галина,г. Пенза, школа № 512, учитель Гаврилова М.И.;— Согомонян Серине, Воронежская обл., поселокКаменка, средняя школа № 1 им. Героя СоветскогоСоюза В.П. Захарченко, учитель Старикова М.Е.;— Тимошенко Иван, средняя школа села ВосточноеНижегородской обл., учитель Долгова Г.А.;— Ядзевичюс Стас, Республика Карелия, поселокНадвоицы, школа № 1, учитель Каликина Т.В.2. Задача “Змей Горыныч курити скоро умрет”Ответ — 22 года.Правильный ответ прислали:— Базылев Юрий, Республика Карелия, поселокНадвоицы, школа № 1, учитель Богданова Л.М.;— Демьянова Елена, Костюнин Александр и ХомяковаАнна, средняя школа деревни Муравьево,Вологодская обл., учитель Муравьева О.В.;— Малышева Татьяна и Сафиуллин Ильдар, РеспубликаБашкортостан, г. Стерлитамак, школа№ 17, учитель Орлова Е.В.;— Яновский Виталий, Москва, гимназия № 1530,учитель Шамшев М.В.3. Задача “Кто какое место занял?”Напомним условие. “На соревнованиях Эндрю,Боб, Серж и Дэн заняли первые четыре места. Когдаих знакомые девушки начали вспоминать, как этиместа распределились, то мнения разошлись:1) Кэт: Эндрю был первым, Дэн — вторым;2) Линда: Эндрю был вторым, Боб — третьим;3) Мэри: Боб был четвертым, Серж — вторым.Оказалось, что каждая девушка сделала одноправильное и одно неправильное заявление. Кто изюношей какое место занял?”51сентябрь 2011 / ИНФОРМАТИКА


В МИР ИНФОРМАТИКИ № 16852сентябрь 2011 / ИНФОРМАТИКАРешениеДопустим, первое заявление Кэт правдивое, авторое — нет:Имя Эндрю Дэн Боб СержМесто 1 Не второйПри таком допущении в заявлении Линды перваячасть — ложная, то есть правдивая — вторая.Запишем место Боба в таблицу:Имя Эндрю Дэн Боб СержМесто 1 Не второй 3или (Дэну “остается” 4-е место):Имя Эндрю Дэн Боб СержМесто 1 4 3 2Полученная картина соответствует высказываниюМэри (его первая часть ложная, вторая — истинная).Значит, можно сделать вывод о таком распределениимест: первое — Эндрю, второе — Серж,третье — Боб, четвертое — Дэн.Аналогичный результат можно получить, начаврассуждения с высказываний Линды или Мэри, атакже применив метод решения логических задач спомощью схем, разработанный О.Б. Богомоловой иописанный в газете “Информатика” № 8/2008.Ответы прислали:— Андрющенко Александр и Свистунов Николай,Ставропольский край, Кочубеевский р-н,станица Барсуковская, школа № 6, учитель РябченкоН.Р.;— Базылев Юрий и Галушкова Карина, РеспубликаКарелия, поселок Надвоицы, школа № 1, учительБогданова Л.М.;— Васильева Юлия, Даутов Азат и Евченко Мария,Республика Башкортостан, г. Стерлитамак,школа № 17, учитель Орлова Е.В.;— Захарова Мария и Осипова Дарья, Республика Карелия,г. Сегежа, школа № 5, учитель Меньшиков В.В.;— Зорихин Алексей, Свердловская обл., г. НижняяСалда, школа № 7, учитель Зорихина Н.Ю.;— Кабанов Андрей и Макаров Петр, средняяшкола села Сердар, Республика Марий Эл, учительЧернова Л.И.;— Полюхович Максим, Суминова Марина и ЯдзевичюсСтас, Республика Карелия, поселок Надвоицы,школа № 1, учитель Каликина Т.В.;— Тайбарей Нина, основная школа поселка Каратайка,Архангельская обл., учитель Безумова В.А.;— Филимонова Галина, г. Пенза, школа № 512,учитель Гаврилова М.И.4. Статья “Антианаграммы”Ответы по первой группе слов1. Носитель. 2. Накопитель. 3. Истина. 4. Протокол.5. Трафик. 6. Кабель. 7. Магистраль. 8. Дорожка.9. Ксерокс. 10. Документ. 11. Микропроцессор.12. Координата. 13. Интерфейс. <strong>14</strong>. Манипулятор.15. Ярлык. 16. Протокол. 17. Маршрутизатор.18. Кластер.Ответы по второй группе слов1. Плата. 2. Сервер. 3. Адаптер. 4. Апорт.Ответы прислали:— Абдулова Эльвира, Буляккулов Рустам, Духнин Семен,Моисеев Игорь, Ноздрин Данил, Трифонова Екатеринаи Шафиева Алина, Республика Башкортостан,г. Стерлитамак, школа № 17, учитель Орлова Е.В.;— Андрющенко Александр и Свистунов Николай,Ставропольский край, Кочубеевский р-н, станицаБарсуковская, школа № 6, учитель Рябченко Н.Р.;— Базылев Юрий и Галушкова Карина, РеспубликаКарелия, поселок Надвоицы, школа № 1, учительБогданова Л.М.;— Демьянова Елена, Костюнин Александр и ХомяковаАнна, средняя школа деревни Муравьево,Вологодская обл., учитель Муравьева О.В.;— Дюбарова Анастасия, Клименко Надежда,Кожевников Евгений, Лышко Александр, МурашовНиколай, Мурзагалиева Гульнара и Мухамадеев Равиль,г. Лесосибирск Красноярского края, поселокСтрелка, школа № 8 им. Константина Филиппова,учитель Лопатин М.А.;— Зорихин Алексей, Свердловская обл., г. НижняяСалда, школа № 7, учитель Зорихина Н.Ю.;— Осипова Дарья, Республика Карелия, г. Сегежа,школа № 5, учитель Меньшиков В.В.;— Полюхович Максим, Суминова Марина и ЯдзевичюсСтас, Республика Карелия, поселок Надвоицы,школа № 1, учитель Каликина Т.В.;— Штатнов Сергей, средняя школа села Сердар,Республика Марий Эл, учитель Чернова Л.И.;— Шадрина Юлия, Чувашская Республика, г. Канаш,Канашский педагогический колледж, преподавательВоеводина Р.В.Почти все приславшие ответы привели развернутыекомментарии к найденным терминам.5. Числовой ребус с числом АВCDНапомним, что необходимо было решить числовойребус:ABCD × 4 = DCBA.В нем одинаковые цифры зашифрованы одинаковымибуквами, разные цифры — разными буквами.РешениеУмножение четырехзначного числа ABCD на 4дает четырехзначное произведение при А = 1 илипри А = 2. Но единице А не может быть равно. Значит,А = 2. Запишем это в ребус:× 2 B C D 4D C B 2Анализ последнего разряда показывает, чтоD = 3 или D = 8. Но произведение четырехзначногочисла ABCD на 4 не может начинаться с цифры 3.Следовательно, D = 8:


× 2 B C 8 48 C B 2Видно, что B < 3. Так как цифра 2 уже “использована”,то В = 0 или В = 1. Анализ показывает, чтовыражение 4С + 3 не может оканчиваться на 0 нипри каких значениях цифры С. Значит, В = 1. Всерешение ребуса:× 2 1 7 8 48 7 1 2Правильные ответы представили:— Базылев Юрий и Галушкова Карина, РеспубликаКарелия, поселок Надвоицы, школа № 1, учительБогданова Л.М.;— Дюбарова Анастасия, Клименко Надежда, КожевниковЕвгений, Лышко Александр, Мурашов Николай,Мурзагалиева Гульнара и Мухамадеев Равиль, г. ЛесосибирскКрасноярского края, поселок Стрелка, школа № 8им. Константина Филиппова, учитель Лопатин М.А.;— Кондратьева Наталья, Малышева Татьяна иНазаров Андрей, Республика Башкортостан, г. Стерлитамак,школа № 17, учитель Орлова Е.В.;— Полюхович Максим, Суминова Марина и ЯдзевичюсСтас, Республика Карелия, поселок Надвоицы,школа № 1, учитель Каликина Т.В.;— Тайбарей Нина, основная школа поселка Каратайка,Архангельская обл., учитель Безумова В.А.;— Яковлева Александра, средняя школа поселкаНовопетровский Московской обл., учитель АртамоноваВ.В.6. Задача “В школьном буфете”— Тайбарей Нина, основная школа поселка Каратайка,Архангельская обл., учитель Безумова В.А.;— Харитонова Елена и Хомякова Анастасия,средняя школа деревни Муравьево, Вологодскаяобл., учитель Муравьева О.В.7. Задача “Добейтесь равенства”Напомним, что необходимо было сделать правильнымвыражение: 987654321 = 100, используя4 знака “+” или “–” в его левой части.Ответ: 98 – 76 + 54 + 3 + 21 = 100Правильные ответы прислали:— Базылев Юрий и Галушкова Карина, РеспубликаКарелия, поселок Надвоицы, школа № 1, учительБогданова Л.М.;— Дюбарова Анастасия, Клименко Надежда,Кожевников Евгений, Лышко Александр, МурашовНиколай, Мурзагалиева Гульнара и Мухамадеев Равиль,г. Лесосибирск Красноярского края, поселокСтрелка, школа № 8 им. Константина Филиппова,учитель Лопатин М.А.;— Кольтякова Анна, Кондратьева Наталья и МалышеваТатьяна, Республика Башкортостан, г. Стерлитамак,школа № 17, учитель Орлова Е.В.;— Осипова Дарья, Республика Карелия, г. Сегежа,школа № 5, учитель Меньшиков В.В.;— Полюхович Максим, Суминова Марина и ЯдзевичюсСтас, Республика Карелия, поселок Надвоицы,школа № 1, учитель Каликина Т.В.8. Задание “Шесть вопросов. Вариант 4”(рубрика “Поиск информации”)Напомним условие.В очереди в школьный буфет стояли Юрий, Михаил,Вазген, Семен и Омар.Юрий стоял раньше Михаила, но после Омара.Вазген и Омар не стояли рядом, а Семен не находилсярядом ни с Омаром, ни с Юрием, ни с Вазгеном.В каком порядке стоят ребята?ОтветОчередь стояла в таком порядке: Омар, Юрий,Вазген, Михаил, Семен.Ответы представили:— Андрющенко Александр и Свистунов Николай,Ставропольский край, Кочубеевский р-н, станицаБарсуковская, школа № 6, учитель Рябченко Н.Р.;— Базылев Юрий и Галушкова Карина, РеспубликаКарелия, поселок Надвоицы, школа № 1, учительБогданова Л.М.;— Васильева Юлия, Герасимов Артем, ДаутовАзат и Евченко Мария, Республика Башкортостан,г. Стерлитамак, школа № 17, учитель Орлова Е.В.;— Захарова Мария и Осипова Дарья, Республика Карелия,г. Сегежа, школа № 5, учитель Меньшиков В.В.;— Полюхович Максим и Суминова Марина, РеспубликаКарелия, поселок Надвоицы, школа № 1,учитель Каликина Т.В.;Ответы1. Навархом Спарты в указанный в вопросе периодбыл Лисандр.2. Слова “Как Магдалина плачешь ты, и как русалкаты хохочешь” принадлежат русскому поэтуЕвгению Абрамовичу Баратынскому (Боратынскому).3. От греческого слова “сладкий” происходитназвание простейшего трехатомного спирта —глицерина.4. Речь в вопросе идет о Великой Китайской стене.Ее в 2<strong>14</strong> году до нашей эры приказал построитьимператор Цинь Шихуанди.5. Канал Санкт-Петербурга, который отходитот реки Екатерингофки, охватывает с северапарк Екатерингоф и у Сутугина моста соединяетсяс рекой Таракановкой, называется “Бумажныйканал”.6. Французский посол в Бельгии герцог Плесси-Пралин в 1671 году создал рецепт приготовления десерта,который затем был назван его именем — “пралине”.Ответы прислали:— Базылев Юрий и Галушкова Карина, РеспубликаКарелия, поселок Надвоицы, школа № 1, учительБогданова Л.М.;53сентябрь 2011 / ИНФОРМАТИКА


В МИР ИНФОРМАТИКИ № 16854сентябрь 2011 / ИНФОРМАТИКА— Буханов Василий, Григорьев Кирилл и ЮхтенкоИлья, г. Воронеж, лицей № 2, учитель КомбароваС.И.;— Зорихин Алексей и Шишкина Анастасия,Свердловская обл., г. Нижняя Салда, школа № 7,учитель Зорихина Н.Ю.;— Макурина Юлия и Ходак Ольга, Пензенская обл.,поселок Тамала, школа № 1, учитель Пашина Н.Д.;— Микулик Илья, г. Астрахань, школа № 33им. Н.А. Мордовиной, учитель Лепехина С.М.;— Ноздрин Данил, Республика Башкортостан,г. Стерлитамак, школа № 17, учитель Орлова Е.В.;— Полюхович Максим, Суминова Марина и ЯдзевичюсСтас, Республика Карелия, поселок Надвоицы,школа № 1, учитель Каликина Т.В.;— Тайбарей Нина, основная школа поселка Каратайка,Архангельская обл., учитель Безумова В.А.;— Шадрина Юлия, Чувашская Республика, г. Канаш,Канашский педагогический колледж, преподавательВоеводина Р.В.Большинство приславших ответы привели развернутыекомментарии к ним, в том числе с указаниемиспользованных источников информации.Решения двух японских головоломок “судоку”прислали:— Базылев Юрий и Галушкова Карина, РеспубликаКарелия, поселок Надвоицы, школа № 1, учительБогданова Л.М.;— Осипова Дарья, Республика Карелия, г. Сегежа,школа № 5, учитель Меньшиков В.В.;— Кондратьева Наталья, Малышева Татьяна, СеменоваНаталья, Республика Башкортостан, г. Стерлитамак,школа № 17, учитель Орлова Е.В.;— Суминова Марина, Республика Карелия, поселокНадвоицы, школа № 1, учитель Каликина Т.В.;— Яковлева Александра, средняя школа поселкаНовопетровский Московской обл., учитель АртамоноваВ.В.Задачу “Семь кошельков” правильно решилитакже:— Вылка Татьяна, основная школа поселка Каратайка,Архангельская обл., учитель Безумова В.А.;— Дюбарова Анастасия, Клименко Надежда,Лышко Александр, Кожевников Евгений, МурашовНиколай, Мурзагалиева Гульнара и Мухамадеев Равиль,г. Лесосибирск Красноярского края, поселокСтрелка, школа № 8 им. Константина Филиппова,учитель Лопатин М.А.;— Мнацаканян Ашот, средняя школа поселкаНовопетровский Московской обл., учитель АртамоноваВ.В.Татьяна Вылка прислала также правильное решениезадачи “Три министра”.Решения заданий, опубликованных в нашей газетев феврале, представили также:— ученики средней школы поселка Озеры Красноярскогокрая (учитель Филипченко И.С.):1) Тарасюк Степан и Юнусова Гульнара — задачи“120 тетрадей”;2) Аникин Сергей, Бондаренко Сергей, ВасильеваГалина, Донец Андрей, Тарасюк Степан и ХорьковаСветлана — ребусов по информатике;— ученики Караклинской средней школы, ЧувашскаяРеспублика, Канашский р-н (учитель МакароваЛ.Ф.):1) Соловьев Сергей — задачи “Улитка и конфета”;2) Иванов Вадим — задачи “Стая гусей и три черепахи”;3) Коньков Александр и Ефимов Петр — японскихголоволомок “судоку”;— ученики основной школы села Красный БорНижегородской обл. (учитель Баженова С.А.):1) Евсеев Павел и Кондратьев Владимир — задачи“Кто выше?”;2) Антоненко Татьяна, Антоненко Юлия и МалыхинаАнна — головоломки “Как получить три квадрата?”;— ученики школы № 17 г. Стерлитамак, РеспубликаБашкортостан (учитель Орлова Е.В.):1) Девицын Артем — задач “Семь кошельков” и“Второе дело об украденном компьютере”;2) Алтынгузина Эльза и Кондратьева Наталья —головоломки “Слова на диагоналях”.Спасибо всем!Штирлиц и IP-адресШтирлиц попал в XXI век. Ему для связи дали IPадрес,но по ошибке он порвал листок с адресом на4 части:137.721.235. 20Разведчик обратился к школьнику, изучающемуинформатику, и тот рассказал ему, что обычно IPадресазаписываются в виде четырех неотрицательныхцелых чисел, меньших 256, разделенных точками.После этого Штирлиц восстановил нужныйадрес. А вы сможете это сделать?На олимпиаде по информатикеОб учениках, занявших первые пять мест наолимпиаде по информатике, имеется пять высказываний:1) первое место занял Вася, а Юра — второе;2) Саша занял второе место, а Вася — пятое;3) второе место занял Иван, а Гриша оказалсячетвертым;


4) на первом месте был Гриша, а Юра — четвертым;5) Юра был четвертым, а Иван — вторым.Известно, что в каждом высказывании одноутверждение верное, а второе — нет. Кто какое занялместо?Наименьшее числоПользуясь только двумя одинаковыми цифрамии знаками действий, запишите как можно меньшеечисло.Индюки и жеребята 3По дороге вдоль кустов шло 11 хвостов.Подсчитать я также смог, что шагало 30 ног.Это вместе шли куда-то индюки и жеребята.И вопрос мой к вам таков: “Сколько было индюков?”И хотел бы также знать, сколько было жеребят?Решите задачу, не составляя систему уравнений,а методом рассуждений, который был описан в газете“В мир информатики” № 157, 165 (“Информатика”№ 3/2011, 11/2011).Сколько весит бидон? 4Полный бидон с молоком весит 7 кг, а наполненныйнаполовину — 4 кг. Сколько весит бидон?Пять карточекИмеются пять карточек, на которых записана однаиз букв А, Б, Е, Ж, И. Надо составить последовательностьиз k карточек, соблюдая такие правила:1) любая последовательность начинается буквойА;2) после гласной буквы не может снова идтигласная, а после согласной — согласная;3) буквы в последовательности не должны повторяться.Запишите все допустимые последовательностикарточек для:1) k = 3;2) k = 4;3) k = 5.Из Ёлкино — в ПалкиноМежду четырьмя местными аэропортами: Ёлкино,Палкино, Веревкино и Булкино — ежедневновыполняются авиарейсы. Расписание перелетоврейсов между ними:АэропортвылетаАэропортприлетаВремявылетаВремяприлетаЁлкино Веревкино 7:30 10:50Булкино Ёлкино 8:15 10:35Палкино Веревкино 11:35 13:25Веревкино Ёлкино 12:10 <strong>14</strong>:20Ёлкино Булкино 12:30 <strong>14</strong>:30Булкино Палкино <strong>14</strong>:10 16:20Ёлкино Палкино <strong>14</strong>:15 16:40Веревкино Палкино <strong>14</strong>:20 16:30Палкино Ёлкино 16:10 18:50Палкино Булкино 18:40 20:45Представьте, что вы оказались в аэропорту Ёлкинов 6 часов утра. Каково самое раннее время,когда вы сможете попасть в аэропорт Палкино?Время на пересадку из самолета в самолет не учитывать.ПОИСК ИНФОРМАЦИИЧетыре вопросаОтветы на приведенные ниже вопросы найдите в Интернете или по другим источникам информации.1. Название какой модели автомобильной фирмы Renault связано с Интернетом?2. Приведите еще одну-две фамилии в этом ряду: Ней, Виктор, …3. Какие из существующих в настоящее время государств образовались в результате объединения разныхгосударств и какие — в результате разъединения? (Приведите несколько примеров.)4. Какова была (за время наблюдений) самая низкая и самая высокая температура воздуха в Москве26 октября?Ответы присылайте в редакцию (можно отвечать не на все вопросы).3Задачу, которая была опубликована в “Календаре школьника” в 1981 году, представила Федорова Л.А., учитель Московскогокадетского корпуса “Пансион воспитанниц МО РФ”.4Задача предназначена для учащихся начальной школы и учеников 5–7-х классов.55сентябрь 2011 / ИНФОРМАТИКА


В МИР ИНФОРМАТИКИ № 168ДЛЯ ЭРУДИТОВЧетыре столицыО каждой из этих четырех столиц дано лишьнесколь ко фактов. Тем не менее их вполне возможноузнать. Попробуйте!1а) В русском языке ее название является омонимомдля сельскохозяйственной пос тройки, в которойсушат и обмолачивают снопы;б) она входила в Ганзейский торговый союз с1282 года, первое же упоминание о ней относитсяк 1198 году. Однако официальной датой основаниягорода является 1201 год;в) одной из самых “легендарных” построек висторическом центре города является “Дом с чернымикотами”;г) в разные периоды она входила в состав Швеции,Речи Посполитой, Российской империи, Германии;д) среди прочего ее прославил алкогольный напиток.2а) Она расположена у одноименного заливаЯванского моря и разделена на западный ивосточный районы рекой Чиливунг;б) наиболее раннее упоминание этой сто лицыотносится к периоду существования королевстваТарумы в IV веке нашей эры;в) сейчас в этом городе проживает 23 мил лионачеловек;г) ...но, несмотря на это, столицу хотят перенести— из-за частых затоплений;д) официально она является не городом, а провинциейсо статусом столицы, поэтому управляетсяне мэром, а губернатором.3а) Он является самой западной столицей континентальнойЕвропы;б) на севере его расположен международ ныйаэропорт Портела;в) по легенде, этот город был основан Одиссеем,давшем ему свое имя (хотя и в изме ненной форме);г) более трех столетий этот город находился подвластью исламского халифата;д) одно из наиболее разрушительных и смертоносныхземлетрясений в истории 1 ноября 1755года разрушило этот город и унесло жизни более100 тысяч человек за 6 минут.4а) Длинное и красивое название этой столицыозначает “тысяча деревень” или “город ты ся чивоинов”;б) она была основана в начале XVII в. правителемИмерины Андриандзакой;в) три ее района расположены на трех холмахи соединены между собой тоннелями илест ницами;г) более полувека город был центром французскойколонии;д) одна из главных достопримечательнос тей —королевский дворец Рува — долгое время был иединственным каменным зда нием на острове.Ответы присылайте в редакцию (можно решатьне все задания).56сентябрь 2011 / ИНФОРМАТИКАGAMES.EXEИгры на клетчатой доскеВ прошлом учебном году были описаны двеигры — “Короли на клетчатой доске” и “Доминошкина клетчатой доске”.Условие первой из них: “Двое по очереди ставятшахматных королей в клетки доски размером 9 × 9клеток так, чтобы они не били друг друга (цвет фигурзначения не имеет). Проигрывает тот, кто несможет сделать ход”. Необходимо определить, ктовыиграет в эту игру — начинающий ее или делающийход вторым.Вторая игра такая. “Двое играют в такую игру наклетчатой доске размером 10 × 10 клеток. За ходразрешается накрыть любые две соседние клеткидоминошкой (прямоугольником 1 × 2 клетки) так,чтобы доминошки не перекрывались. Проигрываеттот, кто не сможет сделать ход. Кто выиграет — начинающийее или делающий ход вторым?”Прежде чем проводить анализ игр, вспомнимеще одну игру “Монеты на столе”, опубликованнуюв газете “В мир информатики” № <strong>14</strong>8 (“Информатика”№ 18/2010). В ней двое по очередикладут одинаковые монеты на круглый стол,причем так, чтобы они не накладывались другна друга. Имеется неограниченное число монет.Проигрывает тот, кто не сможет сделать ход. Ктовыиграет в эту игру — начинающий ее или делающийход вторым?В этой игре выигрывает тот, кто начинает игру,независимо от размеров стола. Первым ходом ондолжен положить монету так, чтобы центры монетыи стола совпали. После этого на каждый ходвторого игрока начинающий должен класть монетусимметрично относительно центра стола. При такойстратегии после каждого хода первого игрокапозиция будет симметрична. Поэтому если возможеночередной ход второго игрока, то возможен исимметричный ему ответный ход первого. Когда-тоделающий ход вторым разместить монету на столене сможет. Следовательно, побеждает первыйигрок.Использование симметрии лежит в основе и двухпервых игр.


Рассмотрим игру с шахматными королями. Начинающийее должен своим первым ходом поставитькороля в центр доски:Ясно, что если возможен очередной ход начинавшегоигру, то возможен и симметричный емуответный ход второго участника, который в концеконцов и выиграет.Задания для самостоятельной работыКа после каждого хода соперника — размещать“своих” королей симметрично относительноцентра:КККККСледовательно, при такой стратегии начинающегоигру на очередной ход второго игрока всегдабудет возможность ответного хода. Но после тогокак будут заняты все клетки доски, второй игроксделать ход не сможет и — проиграет.Во второй игре делающий ход вторым также долженразмещать свою доминошку симметрично последнемуходу соперника:КК1. Подумайте, пожалуйста, над вопросом: “Зависитли результат игры «Короли на клетчатой доске»от размеров квадратной доски?” А игры “Доминошкина клетчатой доске”?2. Двое по очереди ставят коней в клетки шахматнойдоски так, чтобы они не били друг друга(цвет коней значения не имеет). Проигрываеттот, кто не сможет сделать ход. Кто выиграет вэту игру — начинающий ее или делающий ходвторым?Ответы присылайте в редакцию (можно отвечатьне на все вопросы).Игра “Три кучки камней”Имеются три кучки камней: в первой — 10, вовторой — 15, в третьей — 20. Играют двое. За ходразрешается разбить любую кучку на две меньшие.Проигрывает тот, кто не сможет сделать ход. Ктовыиграет в эту игру — начинающий ее или делающийход вторым?Такая задача была опубликована в одном извесенних номеров. Благодаря Юрия Базылева(Республика Карелия, поселок Надвоицы, школа№ 1, учитель Богданова Л.М.), Татьяну Малышевуи Азата Даутова (Республика Башкортостан,г. Стерлитамак, школа № 17, учитель ОрловаЕ.В.) и Марину Суминову (Республика Карелия,поселок Надвоицы, школа № 1, учительКаликина Т.В.), приславших ответы, редакцияпредлагает читателям еще раз подумать над ответомна поставленный вопрос.Указание по выполнению. Рассмотрите сначалавариант игры с одной кучкой камней при их небольшомколичестве.ШКОЛА ПРОГРАММИРОВАНИЯСколько квадратов в круге?Нет, уважаемый читатель, речь не будет идти о задаче, которуюназывают “квадратура круга”, — задаче точного построения квадрата,равновеликого по площади кругу 5 . Мы будем решать следующуюзадачу: “На координатной плоскости нарисована окружностьрадиуса R (R — целое число) с центром в начале координат.Сколько полных квадратов размером 1 × 1 находится внутри этойокружности?”.Рис. 15Эту задачу пытались решить первоначально с помощью циркуля и линейки. Попытки решения задачи, продолжавшиеся втечение тысячелетий, неизменно оканчивались неудачей. С 1775 года Парижская академия наук, а затем и другие академиистали отказываться от рассмотрения работ, посвященных квадратуре круга. Лишь в XIX веке было дано научное обоснованиеэтого отказа: строго установлена неразрешимость задачи с помощью циркуля и линейки.57сентябрь 2011 / ИНФОРМАТИКА


В МИР ИНФОРМАТИКИ № 16858сентябрь 2011 / ИНФОРМАТИКАОчевидное решение — перебрать все возможныеквадратики и проверить, располагается ли каждыйиз них внутри окружности. Соответствующая схемапрограммы:цикл для каждого квадратикаесли квадратик внутри окружноститоУвеличить счетчик числа квадратов на 1всеконец циклаВ дальнейших рассуждениях и в программе будемиспользовать следующие основные величины:— R — радиус окружности;— Хлн, Хпн, Хлв, Хпв — координаты по оси х,соответственно, левой нижней, правой нижней,левой верхней и правой верхней вершинквадрата;— Улн, Упн, Улв, Упв — то же по оси у;— n — искомое количество квадратов.Перебор, о котором шла речь чуть выше, можнопровести, рассмотрев, например, все возможныезначения величины Хлн, а для каждого из них —все возможные значения величины Улн:нц для всех возможных значений Хлннц для всех возможных значений УлнОпределить координаты трех остальныхвершин квадратикаесли квадратик внутри окружноститоУвеличить счетчик числа квадратов на 1всекцкцКоординаты х и у трех остальных вершин некоторогоквадратика в зависимости от Хлн и Улн найтипросто:Хпн = Хлн + 1Хлв = ХлнХпв = Хлн + 1Упн = УлнУлв = Улн + 1Упв = Улн + 1А как проверить тот факт, что квадратик полностьюнаходится внутри окружности? Ответ такой— это имеет место, если при заданных значенияхабсцисс вершин одновременно справедливыдва условия (см. рис. 2):1) координаты по оси у верхней левой и верхнейправой вершин квадрата не больше, чем соответствующеезначение ординаты соответствующейточки верхней половины окружности;2) координаты по оси у нижней левой и нижнейправой вершин квадрата не меньше, чем соответствующеезначение ординаты соответствующейточки нижней половины окружности:если Улв = Унпотоn := n + 1всегде Увпо — ордината соответствующей точки верхнейполовины окружности, Унпо — нижней половины.Рис. 2Зависимость ординаты у некоторой точки окружностиот ее абсциссы х можно получить, зная уравнениеокружности (x 2 + y 2 = R 2 ):y R xпричем для верхней половины окружности следуетвзять положительное значение корня, а длянижней — отрицательное. Учитывая это, можемзаписать условие размещения квадратика внутриокружности:Улв ≤ sqrt(R * R – Хлв * Хлв) и Упв ≤ sqrt(R * R –– Хпв * Хпв) и Улн ≥ sqrt(R * R – Хлн * Хлн) и Упн ≥≥ sqrt(R * R – Хпн * Хпн), где sqrt — функция, возвращающаяквадратный корень из своего аргумента.Видно, что для каждой половины окружностипроверка проводится дважды (для левой и правойточек). Поэтому целесообразно разработать функцию,определяющую значение ординаты для тойили иной половины окружности в зависимости отзаданного значения абсциссы х. Для верхней половинытакая функция имеет вид:алг вещ Увпо(арг цел х)начзнач := sqrt(R * R – х * х)кон— для нижней:алг вещ Унпо(арг цел х)начзнач := -sqrt(R * R – х * х)конС использованием этих функций основнаяпрограмма может быть оформлена следующимобразом:цел RR := …алг Вариант 1нач цел Хлн, Хпн, Хлв, Хпв, Улн, Упн, Улв,Упв, nn := 0нц для Хлн от -R до R – 1 |См. рис. 1нц для Улн от -R до R - 1Хпн := Хлн + 1Хлв := ХлнХпв := Хлн + 1Упн := Улн2 2 ,


Улв := Улн + 1Упв := Улн + 1если Улв = Унпо(Хпн)тоn := n + 1всекцкцвывод nконПримечание. Так как величина R используется вовспомогательных функциях, то она описана как общая(глобальная).Но, как говорят программисты, “чем быстрееначнешь писать программу, тем хуже она получится”.Имеется в виду, что нужно постараться продуматьвсе детали, особенности и найти и применитьсамые рациональные варианты решения. В нашемслучае можно значительно сократить объем вычислений.Во-первых, можно подсчитать искомое количествотолько для одной четверти координатнойплоскости, а затем умножить результатна 4.Кроме того, можно учесть, что квадраты, находящиесяв крайних рядах (столбцах и строках), точноне размещаются внутри окружности, и их можно нерассматривать.Предлагаем читателям разработать вариантпрограммы (на изучаемом языке программирования),учитывающий два указанных обстоятельства,и прислать его в редакцию. Фамилии всехприславших правильную программу будут опубликованы.Может также возникнуть идея решения, основаннаяна рассмотрении “столбиков” из квадратови сравнении целых частей Увпо(Х) и Увпо(Х + 1).Соответствующая программа такая:алг Вариант 3нач цел Х, nn := 0нц для Х от 0 до R - 2если int(Увпо(Х)) = int(Увпо(Х + 1))тоn := n + int(Увпо(Х))иначеn := n + int(Увпо(Х)) - 1всекцвывод нс, n * 4конВ ее особенностях разберитесь самостоятельно.Проверьте, можно ли использовать этот вариантпри любых значениях R. Как надо изменить программу,чтобы она работала при любых R?И еще. Если провести расчеты, то можно получить,что при R = 2 количество квадратов n = 4, а приR = 3 – n = 16, т.е. для этих случаев n = (2R – 2) 2 .Предлагаем читателям проверить, справедлива липолученная формула для других значений R, илиможно получить другую общую формулу, с помощьюкоторой можно рассчитывать значение n, неиспользуя разработанную программу.Ответы в части использования последнего вариантапрограммы (с обоснованием) и результатыисследований в части формулы, пожалуйста, такжеприсылайте в редакцию.ЛИЧНОСТИ190-летие со дня рожденияП.Л. ЧебышёваВ мае 2011 года исполнилось 190 лет со дня рожденияПафнутия Львовича Чебышёва, выдающегосяроссийского математика, механика, одного изпервых создателей отечественной вычислительнойтехники.П.Л. Чебышёв родился 4 (16) мая 1821 г. в деревнеОкатьево Боровского уезда Калужской губерниив семье богатого землевладельца. Первоначальноевоспитание и образование получил дома.В 1832 году семья переезжает в Москву, чтобыпродолжить образование взрослеющих детей. Летом1837 года Чебышёв начинает изучение математикив Московском университете на втором философскомотделении.В 1838 году, участвуя в студенческом конкурсе,получил серебряную медаль за работу по нахождениюкорней уравнения n-й степени. Оригинальнаяработа была закончена уже в 1838 годуи сделана на основеалгоритма Ньютона. Заработу Чебышёв былотмечен как самый перспективныйстудент.В 1841 году ПафнутийЛьвович успешно заканчиваетуниверситет и защищаетдиссертацию.В 1847 году Чебышёвутвержден в звании доцентаи начинает читать лекции по алгебре и теориичисел в Петербургском университете.В 1850 году он защищает докторскую диссертациюи становится профессором Петербургскогоуниверситета. Эту должность Чебышёв занимал достарости.Заслуги П.Л. Чебышёва оценены были ученыммиром достойным образом. Его избрали своим действительнымчленом:— Петербургская академия наук (1853 г.);— Берлинская академия наук;59сентябрь 2011 / ИНФОРМАТИКА


В МИР ИНФОРМАТИКИ № 168— Болонская академия наук;— Парижская академия наук (1860 г.).Избран также членом-корреспондентом Лондонскогокоролевского общества, Шведской академиинаук и др., всего 25 различных академий и научныхобществ. П.Л. Чебышёв состоял также почетнымчленом всех российских университетов.В творчестве Пафнутия Чебышёва удивительнымобразом сочетаются глубокие исследованияпо “чистой” математике и устойчивый интерес ксугубо прикладным вопросам. Он был не толькоматематиком, но и изобретателем, причем в основевсех его изобретений лежало стремление внестивозможную экономию труда и времени во всякуюработу.К числу выдающихся изобретений Чебышёвапрежде всего следует отнести вычислительноеустройство — арифмометр, сконструированныйим в 1878 го ду, который, несмотря на сложность,считался одной из наиболее совершенных существующихтогда машин такого рода.Отличительная особенность арифмометра Чебышёвазаключалась в весьма оригинальном приспособлениидля перенесения десятков. Им былиразработаны два варианта устройства:1) суммирующая машина;2) арифмометр с приставкой для умножения иделения.П.Л. Чебышёв скончался 8 декабря 1894 года записьменным столом. Погребен в родном имении вселе Спас-Прогнанье, которое находится в 90 км отМосквы.ТВОРЧЕСТВО НАШИХ ЧИТАТЕЛЕЙРебусы, посвященные Году космонавтикиПредлагаем читателям решить ребусы, которые разработали Анатолий и Ульяна Тимофеевы, ученикиИменевской основной школы, Красноармейский р-н Чувашской Республики (учитель Тимофеева И.А.).60сентябрь 2011 / ИНФОРМАТИКАОтветы присылайте в редакцию (можно решать не все ребусы).


“ЛОМАЕМ” ГОЛОВУАзбука информатикив определенияхН.А. Владимирова,учитель информатикигимназии № 2,г. ЗаозерныйКрасноярского краяПо приведенным ниже определениям(иногда — шуточным)найдите соответствующие термины,связанные с информатикойи компьютерами.А 1. Место жительства ячейки.2. Прапрадедушка калькулятора.3. МЧС против вируса.Б 1. Единица информации —малютка.2. Управляющий гиперссылками.3. Обменщик данными междуприложениями.В 1. Микроб в компьютере.2. Cвязист между процессором имонитором.3. Организатор видеоконференцийна бескрайних просторахИнтернета.Г 1. Компьютерные художества.2. “Паутинный” документ.3. “Переходник” к другому документу.Д 1. Пожиратель дисков.2. Все файлы, как листья и ветки.3. “#” (не “тюрьма”).Е 1. Академик, первопроходецшкольной информатики.2. Автор самого древнего алгоритма.3. Условная команда в алгоритме(русский вариант).Ж 1. Особый режим в компьютере.2. Чем больше это свойстводиска, тем легче нам игратьбез риска.3. Долговременный хранительданных.З 1. Вид локальной сети с “лучами”к каждому компьютеру.2. Наглядное представление объектав операционной системе.3. Уменьшитель нагрузки наэкран.И 1. Работник в информатике.2. Этой сетью ловят знания, отдыхи друга.3. Ваш любимый школьный предмет(и специальная наука).К 1. Бегунок на экране.2. Тренажер для пальцев.3. Прибор — “копировщик”.Л 1. Без нее рассуждатьнельзя.2. Учетное имя для доступа всеть.3. Объединитель компьютеров вклассе.М 1. Компьютерное шоссе.2. Визуальный воспроизводительсимвольной и графическойинформации.3. Главная плата компьютера.Н 1. Место скопления информации.2. Компактный портативныйкомпьютер или электронная записнаякнижка.3. Одна из двух главных цифр вкомпьютере.О 1. Устройство — единоличник,о существовании которогознает только процессор.2. Обрамленная часть экрана.3. То, над чем проводится операция(не хирургическая).П 1. У человека — судьба, а укомпьютера — ...2. Секретное слово.3. “Мозг” компьютера.Р 1. Местохранитель информации.2. Сортировщик популярностисайтов.3. Место в записи числа.C 1. Работник на узловых компьютерах.2. Электронный карандаш илиручка.3. Побратим того, что К3.Т 1. Разделяет целую и дробнуючасти числа.2. Времязадающая электроннаясхема.3. Переводчик программы наязык, понятный компьютеру.У 1. Сжатый.2. Алгоритм — развилка.3. Арифметическая операция.Ф 1. Хранитель информации,имеющий особое имя.2. В электронной таблице начинаетсяс “=”.3. Частичка программы.Х 1. Жаргонное названиеустройства для подключениякомпьютеров к локальной сети(происходит от английского слова,означающего “центр деятельности”).2. Любитель исследовать чужиефайлы в Интернете.3. Размещение сайта или информациина специальном обо-61сентябрь 2011 / ИНФОРМАТИКА


В МИР ИНФОРМАТИКИ № 168рудовании, которое обеспечиваетего доступность для пользователейсети Интернет.Ц 1. Часть числа.2. Многократное повторение команд.3. Алгоритм-“попугай”.Ч 1. Набор микросхем.2. Виртуальное место встречи вИнтернете.3. Считывание информации изпамяти.Ш 1. Магистраль — связистпроцессора с оперативной памятью.2. Система условных знаков длясекретного письма.3. Набор символов определенноготипа.Щ 1. Действие над мышью.2. Это первое блюдо любят многиепрограммисты.3. Почти синоним слова “зонд”.Э 1. Лицо компьютера.2. Имитатор в информатике.3. Свойство оперативной памяти.Ю 1. Пользователь ПК.2. Английское “использовать”по-русски.3. Народные коллекции видеоклиповна сайте (по-русски).Я 1. Улей — таблица, а соты — …2. Указатель на объект.3. Российский поисковик.Числовой ребус “ГРОМ ГРЕМИ”Решите, пожалуйста, числовой ребус:СМЕХ+ГРОМГРЕМИОдинаковыми буквами зашифрованы одинаковыецифры, разными буквами — разные цифры.101 монета, одна фальшиваяОтветы присылайте в редакцию (можно не со всеми терминами).Среди 101 одинаковой по виду монеты есть однафальшивая, отличающаяся по весу от настоящих.Как за два взвешивания с помощью чашечных весовбез гирь определить, легче или тяжелее настоящихфальшивая монета? Находить фальшивую монетуне требуется.Эликсир бессмертияЕсть двое песочных часов: на 3 минуты и на 8 минут.Для приготовления эликсира бессмертия егонадо непрерывно готовить ровно 7 минут. Как этосделать за минимально возможное число операций(установок часов и их переворачиваний)? Время,затрачиваемое на переворачивание часов, не учитывать.ГРАФИКАЧто за изображение? 6По заданным в скобках координатам точек, используя клетчатую или так называемую “миллиметровую”бумагу, постройте изображение, состоящее из нескольких частей.62сентябрь 2011 / ИНФОРМАТИКАЧасть 1(–1,5; 3), (–2,5; 1), (–3; –1), (–2,5; –5), (–3,5; –5,5), (–4; –6), (–4; –6,5), (–1,5; –6,5), (–1; –6), (–1; –2),(0; –1,5), (1; –2), (1; –6), (1,5; –6,5), (4; –6,5), (4; –6), (3,5; –5,5), (2,5; –5), (3; –1), (2,5; 1), (1,5; 3), (4; –1),(4; –4), (5; –4), (5,5; –5), (5,25; –5,5), (6; –6), (6; –6,75), (5,5; –7,5), (3,5; –8), (1; –8), (0,5; –8,25),(–0,5; –8,25), (–1,5; –7,75), (–0,5; –7,25), (0,5; –7,25), (1; –7,5), (3,5; –7,5), (5; –7,25), (5,5; –6,75), (5,5; –6,25),(5; –6), (4; –6), (4; –6,5), (1,5; –6,5), (1; –6), (–1; –6), (–1,5; –6,5), (–4; –6,5), (–4; –6), (–5; –6), (–5,5; –5),(–5; –4), (–4; –4), (–4; 1), (–1,5; 3), (–1; 3,25), (–0,5; 2,5), (0; 3), (–0,5; 2,5), (1; 3,25), (–1,5; 3), (2; 3,5),(2,5; 3,5), (2,5; 4), (3; 4), (3; 4,5), (3,5; 5), (3; 5,5), (3,5; 6), (3; 6,5), (3,5; 7), (3; 7,5), (3; 8), (2,5; 8), (2,5;8,5), (2; 8,5), (2; 9), (1,5; 8,75), (1; 9,25), (0,5; 9), (0; 9,5), (–0,5; 9), (–1; 9,25), (–1,5; 8,75), (–2; 9), (–2; 8,5),(–2,5; 8,5), (–2,5; 8), (–3; 8), (–3; 7,5), (–3,5; 7), (–3; 6,5), (–3,5; 6), (–3; 5,5), (–3,5; 5), (–3; 4,5), (–3; 4),(–2,5; 4), (–2,5; 3,5), (–2; 3,5), (–1,5; 3).Часть 2(0; 3,5), (–1,5; 4), (–2,5; 5), (–2,75; 6), (–2,5; 7), (–1,5; 8), (0; 8,5), (1,5; 8), (2,5; 7), (2,75; 6), (2,5; 5),(1,5; 4), (0, 3,5).Часть 31) (–3; 7,5), (–3,5; 8), (–3,5; 8,5), (–3; 9), (–2; 9);2) (2; 9), (3; 9), (3,5; 8,5), (3,5; 8), (3; 7,5).6Задание разработала Нарушева Мария, Большетолкайская средняя школа, Самарская обл., учитель Тараканова Т.В.


Часть 4(–1; 6,5), (1; 6,5).Часть 5(–0,5; 4,25), (0; 4,5), (0,5; 4,25), (1; 4,5), (1; 5), (0,5; 5,25), (0; 5), (–0,5; 5,25), (–1; 5), (–1; 4,5),(–0,5; 4,25), (0; 4), (0,5; 4,25).Часть 61) (0,5; 5), (2;6);2) (0,5; 4,75), (2,5; 4,75);3) (0,5; 4,5), (2; 4);4) (–0,5; 4;5), (–2; 4);5) (–0,5; 4,75), (–2,5; 4,75);6) (–0,5; 5), (–2; 6).Что получилось? Что в задании не соответствует правилам построения изображений по пикселям?ВНИМАНИЕ! КОНКУРСКонкурс № 87“Уменьшить количество знаков «+»”В предыдущем номере нашей газеты была описанапрограмма, моделирующая известную игрукрестики-нолики. В ней решается такая частнаязадача. В двумерном массиве размером 3 на 3,заполненном числами, для каждого элементапроводится суммирование значений в соответствующейстроке и в соответствующем столбце,а для некоторых элементов — и на соответствующейдиагонали / на соответствующих диагоналяхмассива.A B CD E FG H IНапример, для элементов, обозначенных B, D,F и H, осуществляется суммирование значений встроке (сумма1) и в столбце (сумма2):при x = 1 и y = 2:сумма1 := поле[1, 1] +поле[1, 2] + поле[1, 3]сумма2 := поле[1, 2] +поле[2, 2] + поле[3, 2]…— где поле — имя массива с числами, х — номерстроки, у — номер столбца.Для всех четырех элементов знак “+” используетсяздесь 16 раз.Для элементов массива, обозначенных A, C, G и I,проводится суммирование значений в строке (сумма1),в столбце (сумма2), на главной (сумма3) илина побочной (сумма4) диагонали:при x = 1 и y = 1:сумма1 := поле[1, 1] +поле[1, 2] + поле[1, 3]сумма2 := поле[1, 1] +поле[2, 1] + поле[3, 1]сумма3 := поле[1, 1] +поле[2, 2] + поле[3, 3]при x = 1 и y = 3:сумма1 := поле[1, 1] +поле[1, 2] + поле[1, 3]сумма2 := поле[1, 3] +поле[2, 3] + поле[3, 3]сумма4 := поле[3, 1] +поле[2, 2] + поле[1, 3]…В результате для четырех указанных элементовзнак “+” применяется 24 раза.Для элемента, обозначенного Е, проводится расчетчетырех значений сумм:при x = 2 и y = 2:сумма1 := поле[2, 1] +поле[2, 2] + поле[2, 3]сумма2 := поле[1, 2] +поле[2, 2] + поле[3, 2]сумма3 := поле[1, 1] +поле[2, 2] + поле[3, 3]сумма4 := поле[3, 1] + поле[2, 2] + поле[1, 3]При этом используются 8 знаков “+”.Задание № 1Напишите фрагмент программы (на изучаемомязыке программирования), в котором для подсчетанеобходимых сумм для элементов, обозначенныхB, D, F и H, использовалось бы как можно меньшеечисло знаков “+”.Задание № 2Напишите фрагмент программы, в котором дляподсчета необходимых сумм для элементов, обозначенныхA, C, G и I (см. табличку), применялосьбы как можно меньшее число знаков “+”.Задание № 3Напишите фрагмент программы, в котором дляподсчета необходимых сумм для элемента Е применялосьбы как можно меньшее число знаков “+”.Указания по выполнению. Используйте операторцикла, операцию определения остатка и др.Срок представления ответов — 10 октября. Можновыполнять не все задания.63сентябрь 2011 / ИНФОРМАТИКА

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!