inf 2010-12

32
№ 12 ИнформатИк 16–30 июня 2010 Содержание Издательский дом «Первое Сентября» Методическая газета для учителей информатики 32291 — индекс по каталогу «Газеты. Журналы» агентства «роспечать» 79066 — индекс по каталогу «Почта россии» тема номера Логические основы компьютеров Глава из нового учебника Прилагается CD На фото: Дом Дж. Буля. Иллюстрации с сайта www. bluedolphin.ie. Тема номера Логические основы компьютеров ........................... 3 1. Логика и компьютер Контрольные вопросы 2. Логические операции операция «не» операция «И» операция «ИЛИ» операция «исключающее ИЛИ» Импликация Эквивалентность Другие логические операции Логические выражения некоторые задачи Контрольные вопросы Задачи 3. Диаграммы Задачи 4. Упрощение логических выражений Законы алгебры логики Логические уравнения Задачи 5. Синтез логических выражений Задачи 6. Предикаты и кванторы Задачи 7. Логические элементы компьютера Простейшие элементы Триггер Сумматор Контрольные вопросы Задачи 8. Логические задачи метод рассуждений Табличный метод Использование алгебры логики Задачи Крик души, или Осторожно: слайдоменты! Э ту колонку я пишу в поезде, возвращаясь с конференции. Наверное, стоило бы подождать до утра, до Москвы, до нор- мального рабочего стола и нормальной розетки 220 В, но не могу — такое сильное впечатление произвели на меня презен- тации участников. Выступления тоже впечатлили, но не так. Я внимательно слушал коллег, пытался вникнуть в суть до- кладов и в логику программного комитета, который эти докла- ды отбирал. И при этом старался не смотреть на экран. Люди, ну нельзя так! В конце концов изготовление компьютерных презентаций в некотором смысле дважды наша профессия. Дважды потому, что, во-первых, компьютерные — а хотим мы этого или нет, все, что в школе компьютерное — все наше, а во-вторых, потому что презентация вообще — естественная составляющая педагогического ремесла. Практически все презентации, которые мне пришлось уви- деть, были полны самых что ни на есть слайдоментов. Это противное слово, видимо, придумал Гарр Рейнольдс. В про- шлом году на русском языке вышла его книга “Презентация в стиле дзен” — она не очень дорогая и пока легко доступна в интернет-магазинах, я бы рекомендовал пополнить ей свою профессиональную библиотеку. Слайдомент по Рейнольдсу получается вследствие желания или необходимости скрестить ежа с ужом — слайд с документом. Слайдомент — это и есть те метры колючей проволоки, которые, как известно, получаются в результате вышеозначенного эксперимента. Менее метафорич- но, слайдомент — “бумажный” документ, предназначенный для восприятия в печатной версии, перенесенный на слайд, проеци- руемый на экран. То, что должно быть представлено на бумаге, демонстрируется ненадлежащим образом. Эти псевдодокумен- ты совершенно нечитабельны и не воспринимаемы. Даже если оставить за скобками все вопросы дизайна и визуализации, на таких слайдах просто трудно что-либо рассмотреть. За короткое время конференции мне довелось (уж точно не “посчастливилось”) увидеть множество разнообразных видов слайдоментов. От чисто текстовых (милое дело — по- ложить на слайд пяток абзацев 12-м кеглем) до весьма слож- ных схем и графиков. К сожалению, одними слайдоментами дело не ограни- чилось. Мне также довелось увидеть множество элементов оформления — “фенечек”, предельно затрудняющих восприя- тие даже достаточно простых вещей, которые, как мне каза- лось, “с голоса” я уже понял. В какой-то момент сидевший рядом коллега обратился ко мне — ты понимаешь этот ребус на экране? Уже после я подумал, что тот слайд напоминал мне даже не ребус, а упражнение по стеганографии — спрячь ин- формацию так, чтобы никто не догадался. Коллеги! Никто не говорит о том, что надо обязательно де- лать шедевры — их, наверное, вообще невозможно делать “на заказ”. Но нельзя же игнорировать самые что ни на есть основы! Ведь мы же и детей на таких же “презентациях” учим. Сергей Островский, гл. редактор, [email protected]

Upload: ekvitmak

Post on 22-May-2015

4.322 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Inf 2010-12

12

Ин

фо

рма

тИ

к

16ndash30 июня 2010

Содержание

Изда

тель

ский

дом

laquoПер

вое С

ентя

бряraquo

Мето

диче

ская

газе

та д

ля уч

ител

ей и

нфор

мати

ки

3229

1 mdash и

ндек

с по к

атал

огу laquo

Газе

ты Ж

урна

лыraquo а

гент

ства

laquoрос

печа

тьraquo

7906

6 mdash

инд

екс п

о кат

алог

у laquoПо

чта р

осси

иraquo

тема номера

Логические основы

компьютеровГлава из нового

учебника

Прилагается CD

На фото Дом Дж Буля Иллюстрации с сайта www bluedolphinie

Тема номера

Логические основы компьютеров 3

1 Логика и компьютерКонтрольные вопросы

2 Логические операцииоперация laquoнеraquoоперация laquoИraquoоперация laquoИЛИraquoоперация laquoисключающее ИЛИraquoИмпликацияЭквивалентностьДругие логические операцииЛогические выражениянекоторые задачиКонтрольные вопросыЗадачи

3 ДиаграммыЗадачи

4 Упрощение логических выраженийЗаконы алгебры логикиЛогические уравненияЗадачи

5 Синтез логических выражений

Задачи

6 Предикаты и кванторыЗадачи

7 Логические элементы компьютера

Простейшие элементыТриггерСумматорКонтрольные вопросыЗадачи

8 Логические задачиметод рассужденийТабличный методИспользование алгебры логикиЗадачи

Крик души или Осторожно слайдоменты

Эту колонку я пишу в поезде возвращаясь с конференции Наверное стоило бы подождать до утра до Москвы до нор-мального рабочего стола и нормальной розетки 220 В но не

могу mdash такое сильное впечатление произвели на меня презен-тации участников Выступления тоже впечатлили но не так

Я внимательно слушал коллег пытался вникнуть в суть до-кладов и в логику программного комитета который эти докла-ды отбирал И при этом старался не смотреть на экран Люди ну нельзя так В конце концов изготовление компьютерных презентаций в некотором смысле дважды наша профессия Дважды потому что во-первых компьютерные mdash а хотим мы этого или нет все что в школе компьютерное mdash все наше а во-вторых потому что презентация вообще mdash естественная составляющая педагогического ремесла

Практически все презентации которые мне пришлось уви-деть были полны самых что ни на есть слайдоментов Это противное слово видимо придумал Гарр Рейнольдс В про-шлом году на русском языке вышла его книга ldquoПрезентация в стиле дзенrdquo mdash она не очень дорогая и пока легко доступна в интернет-магазинах я бы рекомендовал пополнить ей свою профессиональную библиотеку Слайдомент по Рейнольдсу получается вследствие желания или необходимости скрестить ежа с ужом mdash слайд с документом Слайдомент mdash это и есть те метры колючей проволоки которые как известно получаются в результате вышеозначенного эксперимента Менее метафорич-но слайдомент mdash ldquoбумажныйrdquo документ предназначенный для восприятия в печатной версии перенесенный на слайд проеци-руемый на экран То что должно быть представлено на бумаге демонстрируется ненадлежащим образом Эти псевдодокумен-ты совершенно нечитабельны и не воспринимаемы Даже если оставить за скобками все вопросы дизайна и визуализации на таких слайдах просто трудно что-либо рассмотреть

За короткое время конференции мне довелось (уж точно не ldquoпосчастливилосьrdquo) увидеть множество разнообразных видов слайдоментов От чисто текстовых (милое дело mdash по-ложить на слайд пяток абзацев 12-м кеглем) до весьма слож-ных схем и графиков

К сожалению одними слайдоментами дело не ограни-чилось Мне также довелось увидеть множество элементов оформления mdash ldquoфенечекrdquo предельно затрудняющих восприя-тие даже достаточно простых вещей которые как мне каза-лось ldquoс голосаrdquo я уже понял В какой-то момент сидевший рядом коллега обратился ко мне mdash ты понимаешь этот ребус на экране Уже после я подумал что тот слайд напоминал мне даже не ребус а упражнение по стеганографии mdash спрячь ин-формацию так чтобы никто не догадался

Коллеги Никто не говорит о том что надо обязательно де-лать шедевры mdash их наверное вообще невозможно делать ldquoна заказrdquo Но нельзя же игнорировать самые что ни на есть основы Ведь мы же и детей на таких же ldquoпрезентацияхrdquo учим

Сергей Островский гл редактор so1septemberru

2 ИНФорматИка 12 2010

Уважаемые коллегиВ последние годы в сфере школьной информатики

выявилась серьезная проблема mdash отсутствие качествен-ного учебника для профильного уровня которому мож-но доверять и по которому можно преподавать наи-более известные существующие (ldquoофициальныеrdquo) учеб-ники не в полной мере устраивают учителей инфор-матики поскольку содержат немало неточностей (см критические разборы на сайте httpkpolyakovnarodruschoolmdizmmdizmhtm) например в некоторых учебниках объектно-ориентированное программиро-вание ошибочно отождествляется с использованием систем визуального проектирования программ Поэто-му использовать такие учебники без дополнительной переработки весьма затруднительно

нередко на практике часть тем курса рассматривает-ся по одному учебнику часть mdash по другому и тд мно-гие учителя информатики фактически отказываются от

учебника используя авторские и скорректированные программы Зачастую эти вынужденные меры не спо-собствуют повышению качества обучения (хотя любое правило подразумевает и ряд исключений)

Существуют проблемы связанные с подготовкой стар-шеклассников к еГЭ Для качественной сдачи экзамена требуется решить большое количество задач в то время как Стандарт и следом за ним учебники в большей степе-ни ориентированы на философские проблемы информа-ционных процессов и технологии Своеобразной ldquoлакму-совой бумажкойrdquo может служить отношение к програм-мированию в Стандарте это лишь одна из небольших по объему тем изучаемая весьма схематично в то время как получить высокий балл на еГЭ без глубокого знания про-граммирования невозможно Учителю выпускных клас-сов часто приходится решать дилемму выполнять требо-вания государственного образовательного стандарта или готовить к еГЭ по информатике и ИКТ

Учитывая указанные выше при-чины мы решили написать новый учебник для профильного уровня (10ndash11-й классы) ldquoмыrdquo mdash это автор-ский коллектив в составе

bull Константин Юрьевич Поляков доктор технических наук учитель информатики высшей категории ГоУ СоШ 163 Санкт-Петербург (httpkpolyakovnarodrudosiehtm)

bull александр Петрович Шестаков кандидат педагогических наук до-цент заведующий кафедрой инфор-матики и вычислительной техники Пермского государственного педа-гогического университета г Пермь (httpcomp-sciencenarodruabouthtml)

bull евгений александрович еремин кандидат физико-математических наук доцент кафедры мультиме-дийной дидактики и ИТо Пермско-го государственного педагогическо-го университета г Пермь (httpwwwpspurupersonalereminindexhtml)

мы хотели бы построить учебник на следующих принципах и идеях

1 Учебник должен быть ори-ентирован прежде всего на фун-даментальные знания умения и навыки в области информатики и ИКТ которые не изменяются с ldquoприходомrdquo новой операционной системы и другого программного обеспечения

2 Учебник должен быть понят-ным для школьника и учителя Се-рьезный акцент нужно сделать на доступность изложения Учебник не должен содержать ldquoводыrdquo и науко-образных текстов

3 Учебник должен в максималь-ной степени соответствовать стан-дарту профильного уровня

4 Учебник должен в максималь-ной степени ldquoзакрытьrdquo проблему подготовки к еГЭ

5 Учебник должен быть ориенти-рован на использование свободного и бесплатного программного обес-печения Это тем не менее не ис-ключает применение проприетар-ных программ (например операци-онной системы Windows и пакета Microshysoftshy Office) поскольку прин-ципы обработки информации везде примерно одинаковые

6 Учебник должен быть ldquoпринятrdquo в сообществе учителей информати-ки Учебник должен быть макси-мально очищен от ldquoляповrdquo Этому также должно помочь открытое об-суждение

7 Учебник и сопутствующие ма-териалы должны в полном объеме покрывать потребность учителя и учеников в теоретическом и прак-тическом материале быть в опреде-ленном смысле самодостаточными

8 Учебник и сопутствующие ма-териалы должны быть разноуровне-выми

В начале 2010 года на сайте httpkpolyakovnarodruschoolprobookhtm были размещены примерное оглавление и отдельные главы учеб-ника а на форуме httpprofilbookforum24ru открыто публичное об-суждение можно уверенно сказать что обсуждение материалов на фо-руме и в личной переписке с авто-рами оказалось весьма полезным и плодотворным В результате были внесены некоторые изменения как в структуру учебника так и в содер-жание отдельных глав

мы бы хотели особенно поблаго-дарить наших коллег-учителей и IT-специалистов mdash аГ Тамаревскую оа Тузову Юм розенфарба

СС михалковича Та мисаренко-ва Ка малеванова ВВ Потопахи-на Вн разумова которые взяли на себя труд внимательно прочитать рукопись готовых глав учебника и высказали ряд ценных замечаний которые были приняты авторами и учтены в текущей версии текста учебника

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

Кроме учебника мы планируем предоставить сообществу учителей информатики следующие материа-лы

bull поурочное планирование для профильного курса информатики и ИКТ (по 140 учебных часов в 10-м и 11-м классе всего 280 часов)

bull полностью разработанные прак-тические работы по всем темам учебника (практикум)

bull комплект презентаций к уро-кам

bull оригинальное программное обес-печение разработанное авторами для поддержки курса

bull методическое пособие для учи-теля

В этом номере мы предлагаем чи-тателям ознакомиться с предвари-тельной версией одного из разделов учебника надеемся что материал вызовет отклики замечания кон-структивную критику мы постара-емся учесть все высказанные пред-ложения в окончательном варианте текста который будет предложен издательству

С уважением КЮ Поляков аП Шестаков еа еремин

3 12 2010 ИНФорматИка

теМа ноМера

1 Логика и компьютер

В быту мы часто используем слова ldquoлогикаrdquo ldquoлогичноrdquo Логика (от древнегреческого λογικος mdash ldquoнаука о рассужденииrdquo) mdash это наука о том как правильно рассуждать делать выводы доказывать утверждения

В естественном языке рассуждения всегда связаны с конкретными предметами и утверждениями и поэтому исследовать все это многообразие достаточно сложно Древнегреческий философ Аристотель стал основоположником формальной логики которая отвлекается от конкретного содержания и изучает общие правила построения верных выводов из известной информации которая считается истинной Формальная логика изучает высказывания

Высказывание mdash это повествовательное предложение про которое можно одно-значно сказать что оно истинно или ложно

Используя это определение проверим можно ли считать высказываниями следую-щие предложения

1) Сейчас идет дождь2) Вчера жирафы улетели на север3) Красиво4) Который час5) В городе N живут более 2 миллионов человек6) Посмотрите на улицу7) У квадрата 10 сторон и все разные8) История mdash интересный предметЗдесь высказываниями являются только предложения 1 2 и 7 остальные не под-

ходят под определение Утверждения 3 и 4 mdash это не повествовательные предложения Предложение 5 станет высказыванием только в том случае если ldquoNrdquo заменить на на-звание конкретного города Предложение 6 mdash это призыв к действию а не утверждение Утверждение 8 кто-то считает истинным а кто-то ложным (нет однозначности) его мож-но более строго сформулировать в виде ldquoПо мнению N история mdash интересный предметrdquo Для того чтобы оно стало высказыванием нужно заменить ldquoNrdquo на имя человека

Логические основы компьютеров

КЮ ПоляковаП Шестаковеа еремин

На фото Памятник Аристотелю в городе Стагир (Греция) месте его рождения

4 ИНФорматИка 12 2010

Какая же связь между логикой и компьютерами В классической формальной логике высказывание может быть истинно или ложно третий вариант исключается1 Если обозначить истинное значение единицей а ложное mdash нулем то получится что формальная логика представляет собой правила выполнения операций с нулями и единицами то есть с двоичными кодами Как вы помните именно такой способ используется в компьютерах для кодирования всех видов информации Поэтому обработку информации оказалось возможным свести к выполнению логических опе-раций Важный шаг в этом направлении сделал английский математик Джордж Буль Он предложил применить для исследования логических высказываний математические методы Позже этот раздел математики получил название алгебра логики или булева алгебра

Алгебра логики mdash это математический аппарат с помощью которого записывают вычисляют упрощают и преобразовывают логические высказывания

Алгебра логики определяет правила выполнения операций с логическими величинами которые могут быть равны только 0 или 1 то есть с двоичными данными Используя эти правила можно строить элементы памяти и выполнять арифметические действия О том как это сделать вы узнаете в этой главе

Контрольные вопросы

1 Объясните значения слов ldquoлогикаrdquo ldquoформальная логикаrdquo ldquoалгебра логикиrdquo2 Чем отличается формальная логика от ldquoобычнойrdquo бытовой3 Что такое высказывание4 Можно ли считать высказываниями эти предложения

а) Не плачь девчонкаб) Почему я водовозв) Купите слоникаг) Клубника очень вкуснаяд) Сумма X и Y равна 36

5 Как вы думаете зачем в курсе информатики изучается логика

2 Логические операцииВысказывания бывают простые и сложные Простые высказывания нельзя разделить на более мелкие высказы-

вания например ldquoСейчас идет дождьrdquo или ldquoФорточка открытаrdquo Сложные (составные) высказывания строятся из простых с помощью логических связок (операций) ldquoИrdquo ldquoИЛИrdquo ldquoНЕrdquo ldquoеслиhellip тоrdquo ldquoтогда и только тогдаrdquo

В булевой алгебре высказывания обычно обозначаются латинскими буквами Таким образом мы уходим от кон-кретного содержания высказываний нас интересует только их истинность или ложность Например можно обозна-чить буквой A высказывание ldquoСейчас идет дождьrdquo а буквой B mdash высказывание ldquoФорточка открытаrdquo Из них строятся сложные высказывания

не A ldquoСейчас нет дождяrdquo не B ldquoФорточка закрытаrdquo A и B ldquoСейчас идет дождь и открыта форточкаrdquo A или B ldquoСейчас идет дождь или открыта форточкаrdquo если A то B ldquoЕсли сейчас идет дождь то форточка открытаrdquo

Кроме этих есть еще и другие высказывания которые можно получить из двух исходных С некоторыми из них мы также познакомимся

Операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo используются чаще других Оказывается с их помощью можно выразить любую логическую операцию поэтому эти три операции можно считать основными базовыми

Операция laquoНЕraquo

Операция ldquoНЕrdquo часто называется отрицанием или инверсией В алгебре логики всего два знака 0 и 1 поэтому логическое отрицание mdash это переход от одного значения к другому от 1 к 0 или наоборот Если высказывание A ис-тинно то ldquoне Аrdquo ложно и наоборот

Для обозначения операции ldquoНЕrdquo используются несколько способов Выражение ldquoне Аrdquo в алгебре логики записы-вается как A или notА в языках программирования Паскаль и Бейсик mdash как not A в языке Си mdash как A

Операцию ldquoНЕrdquo можно задать в виде таблицыA A

0 11 0

1 Существуют неклассические логические системы например трехзначная логика где кроме ldquoистинноrdquo и ldquoложноrdquo есть еще состояние ldquoне определеноrdquo

5 12 2010 ИНФорматИка

Эта таблица состоит из двух частей слева перечисляются все возможные значения исходного высказывания (их всего два mdash 0 и 1) а в последнем столбце записывают результат выполнения логической операции для каждого из этих вариантов Такая таблица называется таблицей истинности логической операции

Таблица истинности задает логическую функцию то есть правила преобразования входных логических значе-ний в выходные

Операция laquoИraquo

Пусть есть два высказывания A mdash ldquoСейчас идет дождьrdquo B mdash ldquoФорточка открытаrdquo Слож-ное высказывание ldquoA и Brdquo выглядит так ldquoСейчас идет дождь и форточка открытаrdquo Оно будет истинным (верным) в том и только в том случае когда оба высказывания A и B истинны одновременно

Для понимания операции ldquoИrdquo можно представить себе простую схему в которой для вклю-чения лампочки используются два выключателя соединенных последовательно (см рисунок) Чтобы лампочка загорелась нужно обязательно включить оба выключателя С другой стороны чтобы выключить лампочку достаточно выключить любой из них

Операция ldquoИrdquo (в отличие от ldquoНЕrdquo) выполняется с двумя логическими значениями кото-рые мы обозначим как A и B Результат этой операции в алгебре логики записывают как АsdotB А and B или А amp B В языках программирования используют обозначения ldquoA and Brdquo (Паскаль Бейсик) или ldquoA ampamp Brdquo (Си)

A B АsdotB0 0 0 01 0 1 02 1 0 03 1 1 1

В таблице истинности будет уже не один столбец с исходными данными а два Число строк также выросло с 2 до 4 поскольку для 2 бит мы получаем 4 разных комбинации 00 01 10 и 11 Эти строчки расположены в определен-ном порядке двоичные числа полученные соединением битов A и B идут в порядке возрастания (слева от таблицы они переведены в десятичную систему) Как следует из определения в последнем столбце будет всего одна единица для варианта A = B = 1

Легко проверить что этот результат можно получить ldquoобычнымrdquo умножением A на B поэтому операцию ldquoИrdquo на-зывают логическим умножением Существует и другое название этой операции mdash конъюнкция (от лат conjunctio mdash союз связь)

Операция laquoИЛИraquo

Высказывание ldquoСейчас идет дождь или форточка открытаrdquo истинно тогда когда истинно хотя бы одно из входящих в него высказываний или оба одно-временно В алгебре логики операция ldquoИЛИrdquo обозначается как А+B или А or B в языках программирования mdash ldquoA or Brdquo (Паскаль Бейсик) или ldquoA || Brdquo (Си)

A B А+B0 0 00 1 11 0 11 1 1

Можно представить себе схему с двумя выключателями соединенными параллельно (см рисунок) Чтобы лам-почка загорелась достаточно включить хотя бы один из выключателей Чтобы выключить лампочку необходимо обязательно выключить оба В таблице истинности будет только один ноль для варианта A = B = 0

Операцию ldquoИЛИrdquo называют логическим сложением потому что она похожа на обычное математическое сложение Единственное отличие mdash в последней строке таблицы истинности в математике 1 + 1 равно 2 а в алгебре логики mdash 1 Другое название операции ldquoИЛИrdquo mdash дизъюнкция (от лат disjunctio mdash разделение)

В учебнике для обозначения операций ldquoИrdquo и ldquoИЛИrdquo мы будем использовать знаки умножения и сложения (на-пример АsdotB и А+B) Это очень удобно потому что они привычны для нас и позволяют легко увидеть аналогию с обычной математикой

Доказано что операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo достаточно для того чтобы записать с их помощью любую логическую операцию которую только можно придумать Например для двух переменных существует всего 24 = 16 логических операций их таблицы истинности отличаются только последним столбцом в котором 4 двоичных значения (4 бита) Далее мы рассмотрим еще три распространенных операции и покажем как их можно представить через операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

sim220 В

sim220 В

6 ИНФорматИка 12 2010

Операция laquoисключающее ИЛИraquo

A B A Boplus0 0 00 1 11 0 11 1 0

Операция ldquoисключающее ИЛИrdquo отличается от обычного ldquoИЛИrdquo только тем что результат равен 0 если оба зна-чения равны 1 (последняя строчка в таблице истинности) То есть ее результат mdash истина в том и только в том случае когда два значения не равны

ldquoИсключающее ИЛИrdquo в алгебре логики обозначается знаком ldquooplusrdquo в языке Паскаль как xor (например ldquoA xor Brdquo) а в языке Си mdash знаком ldquo^rdquo (ldquoA ^ Brdquo) Эту операцию можно представить через базовые операции (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) следующим образом

A B A B A Boplus = sdot + sdot Пока мы не можем вывести эту формулу но можем доказать ее (или опровергнуть mdash доказать что она непра-

вильная) Для этого достаточно для всех возможных комбинаций A и B вычислить значения выражения стоящего в правой части равенства и сравнить его со значением А oplus B для тех же исходных данных Поскольку провести такие вычисления в уме достаточно сложно сначала вычислим значения A B A Bsdot и A Bsdot а потом уже A B A Bsdot + sdot В таблице истинности появятся дополнительные столбцы для промежуточных результатов

A B A B A Bsdot A Bsdot A B A Bsdot + sdot A Boplus0 0 1 1 0 0 0 00 1 1 0 1 0 1 11 0 0 1 0 1 1 11 1 0 0 0 0 0 0

Легко видеть что выражение A B A Bsdot + sdot совпадает с A Boplus для всех возможных вариантов Это значит что формула доказана

Операция ldquoисключающее ИЛИrdquo иначе называется разделительной дизъюнкцией (это значит ldquoодин или другой но не оба вместеrdquo) или сложением по модулю два Второе название связано с тем что ее результат равен остатку от деления ldquoобычнойrdquo суммы A + B на 2

A Boplus = (A + B) mod 2Здесь mod обозначает операцию взятия остатка от деленияОперация ldquoисключающее ИЛИrdquo обладает интересными свойствами По таблице истинности несложно прове-

рить что A 0 Aoplus = A 1 Aoplus = A A 0oplus =

Для доказательства этих равенств можно просто подставить в них A = 0 и A = 1 Теперь докажем что (A B) B Aoplus oplus = ()

Подставляя в левую часть B = 0 получим (A 0) 0 A 0 Aoplus oplus = oplus = Аналогично для B = 1 имеем (A 1) 1 A 1 Aoplus oplus = oplus = Это означает что формула () справедлива для любых значений B Отсюда следует важный вывод если два раза при-менить операцию ldquoисключающее ИЛИrdquo с одним и тем же B мы восстановим исходное значение В этом смысле ldquoисключающее ИЛИrdquo mdash обратимая операция (кроме нее обратима также операция ldquoНЕrdquo mdash если применить ее дважды мы вернемся к исходному значению)

Формула () верна не только для высказываний но и для чисел состоящих из нескольких двоичных разрядов Что-бы зашифровать данные надо применить операцию ldquoисключающее ИЛИrdquo с некоторым числом (кодом) отдельно для каждого разряда Для расшифровки еще раз применяется ldquoисключающее ИЛИrdquo с тем же ключом Нужно отме-тить что такой метод шифрования очень нестойкий для больших текстов его легко раскрыть частотным анализом

Импликация

A B A Brarr

0 0 10 1 11 0 01 1 1

Мы часто используем логическую связку ldquoесли hellip тоrdquo например ldquoЕсли пойдет дождь то я надену плащrdquo или ldquoЕсли все стороны прямоугольника равны то это квадратrdquo В логике эта связка называется импликацией2 (следованием) и обозначается стрелкой A Brarr (ldquoесли A то Brdquo ldquoиз A следует Brdquo)

2 От лат implicatio mdash сплетение тесная связь

7 12 2010 ИНФорматИка

Разобраться с импликацией будет легче если мы рассмотрим конкретное высказывание например такое ldquoЕсли хорошо работаешь то получаешь большую зарплатуrdquo Обозначим буквами два простых высказывания A mdash ldquoхорошо работаешьrdquo и B mdash ldquoполучаешь большую зарплатуrdquo Понятно что если высказывание A Brarr истинно то все кто хоро-шо работают (A = 1) должны получать большую зарплату (B = 1) Если же кто-то работает хорошо (A = 1) а получает мало (B = 0) то высказывание A Brarr ложно

Лодыри и бездельники (A = 0) могут получать как маленькую (B = 0) так и большую зарплату (B = 1) это не нарушает справедливость высказывания A Brarr Иногда определяя импликацию говорят так из истины следует истина а из лжи mdash что угодно Это значит что при ложном высказывании A высказывание B может быть как ложно так и истинно

Нужно обратить внимание на разницу между высказываниями вида ldquoесли A то Brdquo в обычной жизни и в алгебре логики В быту мы чаще всего имеем в виду что существует причинно-следственная связь между A и B то есть имен-но A вызывает B Алгебра логики не устанавливает взаимосвязь явлений истинность высказывания A Brarr говорит только о возможности такой связи Например с точки зрения алгебры логики может быть истинным высказывание ldquoесли Вася mdash студент то Петя mdash лыжникrdquo

Импликация чаще всего используется при решении логических задач Например условие ldquoесли A то Brdquo можно записать в виде A B 1rarr =

Для импликации (в отличие от других изученных операций с двумя переменными) не действует переместитель-ный закон если в записи A Brarr поменять местами A и B то результат изменится A B B Ararr ne rarr Внешне это видно по стрелке которая указывает ldquoнаправлениеrdquo

Импликацию можно заменить на выражение использующее только базовые операции (здесь mdash только ldquoНЕrdquo и ldquoИЛИrdquo)

A B A Brarr = + Доказать это равенство вы уже можете самостоятельно

Эквивалентность

A B A Bharr0 0 10 1 01 0 01 1 1

Эквивалентность (также эквиваленция равносильность) mdash это логическая операция которая соответствует связке ldquoтогда и только тогдаrdquo Высказывание A Bharr истинно в том и только в том случае когда A = B (см таблицу истинности)

Возможно вы заметили что эквивалентность mdash это обратная операция для ldquoисключающего ИЛИrdquo (проверьте по таблицам истинности) то есть

A B A Bharr = oplus Здесь черта сверху охватывающая все выражение в правой части равенства означает отрицание (инверсию) ко-

торое применяется к результату вычисления выражения A Boplus а не к отдельным высказываниям Можно заменить эквивалентность выражением которое включает только базовые логические операции

A B A B A Bharr = sdot + sdot Эту формулу вы можете доказать (или опровергнуть) самостоятельно

Другие логические операции

Мы уже говорили что существуют и другие логические операции Таблицы истинности операций с двумя переменными содержат 4 строки и отличаются только значением последнего столбца Поэтому любая новая комбинация нулей и единиц в этом столбце дает новую логическую операцию (логическую функцию) Всего их очевидно столько сколько существует четырехразрядных двоичных чисел то есть 16 = 24 Из тех что мы еще не рассматривали наиболее интерес-ны две mdash штрих Шеффера (ldquoИndashНЕrdquo англ nand = ldquonot andrdquo)

A|B A B= sdot и стрелка Пирса (ldquoИЛИndashНЕrdquo англ nor = ldquonot orrdquo)

A B A Bdarr = + Особенность этих операций состоит в том что с помощью любой одной из них можно записать произвольную

логическую операцию Например операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (базовый набор) выражаются через штрих Шеф-фера так

A A|A= A B A|B A|B)| A|B)sdot = =( ( A B A|B A|A)| B|B)+ = =( (

Эти формулы можно доказать через таблицы истинности

Штрих Шеффера Стрелка Пирса

A B A|B A B A Bdarr

0 0 1 0 0 10 1 1 0 1 01 0 1 1 0 01 1 0 1 1 0

8 ИНФорматИка 10 2010

Логические выражения

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

А mdash ldquoПервый двигатель вышел из строяrdquoB mdash ldquoВторой двигатель вышел из строяrdquoC mdash ldquoТретий двигатель вышел из строяrdquoX mdash ldquoАварийная ситуацияrdquoТогда логическое высказывание X можно записать в виде формулы

X =(AmiddotB) + (AmiddotC) + (BmiddotC) ()Таким образом мы выполнили формализацию

Формализация mdash это переход от конкретного содержания к формальной записи с помощью некоторого языка

В логических выражениях операции выполняются в следующем порядке1) действия в скобках2) отрицание (ldquoНЕrdquo)3) логическое умножение (ldquoИrdquo)4) логическое сложение (ldquoИЛИrdquo) и ldquoисключающее ИЛИrdquo5) импликация6) эквивалентностьТакой порядок означает что все скобки в выражении () для X можно

убрать Порядок вычисления выражения можно так же как и для ариф-метических выражений определить с помощью дерева (см рисунок) Вы-числение начинается с листьев корень mdash это самая последняя операция

Здесь каждая операция выполняется с двумя значениями Такие операции называются бинарными (от лат bis mdash дважды) или двуместными

Операции которые выполняются над одной величиной называют унарными (от лат uno mdash один) или одномест-ными Пример унарной логической операции mdash это отрицание (операция ldquoНЕrdquo)

Любую формулу можно задать с помощью таблицы истинности которая показывает чему равно значение логического выражения при всех возможных комбинациях значений исходных переменных Сложные выражения удобно разбить на несколько более простых сначала вычислить значения этих промежуточных величин а затем mdash окончательный результат

A B C AmiddotB AmiddotC BmiddotC X0 0 0 0 0 0 00 0 1 0 0 0 00 1 0 0 0 0 00 1 1 0 0 1 11 0 0 0 0 0 01 0 1 0 1 0 11 1 0 1 0 0 11 1 1 1 1 1 1

Рассмотрим формулу () Выражение в правой части зависит от трех переменных поэтому существует 23 = 8 комбинаций их значений Таблица истинности выглядит так как показано выше По ней видно что при некоторых значениях переменных значение X истинно а при некоторых mdash ложно Такие выражения называют вычислимыми

Высказывание ldquoВася mdash школьник или он не учится в школеrdquo всегда истинно (для любого Васи) Оно может быть записано в виде логического выражения A A+ Выражение истинное при любых значениях переменных называет-ся тождественно истинным или тавтологией

Высказывание ldquoсегодня безветрие и дует сильный ветерrdquo никогда не может быть истинным Соответствующее логическое выражение A Asdot всегда ложно оно называется тождественно ложным или противоречием

Если два выражения принимают одинаковые значения при всех значениях переменных они называются равно-сильными или тождественно равными Например равносильны выражения A Brarr и A B+ Равносильные выраже-ния определяют одну и ту же логическую функцию то есть при одинаковых исходных данных приводят к одинако-вым результатам

Некоторые задачи

Рассмотрим ряд задач в которых требуется исследовать логическое выражениеЗадача 1 Каково наибольшее целое число X при котором истинно высказывание

A (90 X ) (80 (X 2))2 2= lt rarr gt +

+

+

bull bull

bull

A A

C

C

B

B

9 12 2010 ИНФорматИка

Сначала удобно заменить импликацию по формуле A B A Brarr = + Отрицание для высказывания 90 X2lt запишется как 90 X2ge поэтому

A (90 X )2= ge или (80 (X 2))2gt + В этой задаче нас интересуют только целые числа Поэтому условие 90 X2ge можно заменить на X 9le или

9 Xminus le le9 а условие 80 (X 2)2gt + mdash на X 2 8+ le или -10 X 6le le Таким образом требуется выбрать наибольшее целое число которое входит в один или в другой промежуток

x

9

6

ndash9ndash10

Это число mdash 9Задача 2 A B и С mdash целые числа для которых истинно высказывание

X (A B)((A B) (B C))((B A) (C B))= = sdot gt rarr gt sdot gt rarr gtЧему равно В если A = 27 и C = 25Это сложное высказывание состоит из трех простых

(A B)= (A B) (B C)gt rarr gt (B A) (C B)gt rarr gtОни связаны операцией ldquoИrdquo то есть должны выполняться одновременноИз (A B) 1= = сразу следует что A Bne Предположим что A Bgt тогда из второго условия получаем 1 (B C)rarr gt Это

выражение может быть истинно тогда и только тогда когда (B C) 1gt = поэтому имеем A B Cgt gt этому условию со-ответствует только число 26

На всякий случай проверим и вариант A Blt тогда из второго условия получаем 0 (B C)rarr gt это выражение ис-тинно при любом B Теперь проверяем третье условие получаем 1 (C B) 1rarr gt = это выражение может быть истин-но тогда и только тогда когда C Bgt и тут мы получили противоречие потому что нет такого числа B для которого C B Agt gt Таким образом правильный ответ mdash 26

Контрольные вопросы

1 Даны два высказывания A mdash ldquoВ Африке водятся жирафыrdquo и B mdash ldquoВ Мурманске идет снегrdquo Постройте из них различные сложные высказывания

2 Дано высказывание ldquoВинни-Пух любит мед и дверь в дом открытаrdquo Как бы вы сформулировали отрицание этого высказывания

3 Что такое таблица истинности4 Почему в таблице истинности для операции ldquoНЕrdquo две строки а для других изученных операций mdash четыре

Сколько строчек в таблице истинности выражения с тремя переменными с четырьмя с пятью5 В каком порядке обычно записываются значения переменных в таблице истинности6 Когда истинно высказывание ldquoA и Brdquo ldquoА или Brdquo7 Какие электрические схемы можно использовать для иллюстрации операций ldquoИrdquo и ldquoИЛИrdquo8 Какие знаки применяют для обозначения операций ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo9 Почему операция ldquoИrdquo называется логическим умножением а ldquoИЛИrdquo mdash логическим сложением10 В чем отличие ldquoобычногоrdquo и логического сложения11 Сколько существует различных логических операций с двумя переменными С тремя переменными12 Чем отличается операция ldquoисключающее ИЛИrdquo от ldquoИЛИrdquo13 Почему операция ldquoисключающее ИЛИrdquo называется сложением по модулю 214 Как записать выражение A Boplus с помощью базового набора операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo)15 Как можно доказать или опровергнуть логическую формулу16 Какими интересными свойствами обладает операция ldquoисключающее ИЛИrdquo17 Что значит выражение ldquoобратимая операцияrdquo Какие изученные логические операции являются обратимыми18 Какое свойство операции ldquoисключающее ИЛИrdquo позволяет использовать ее для простейшего шифрования19 Чем отличается смысл высказывания ldquoесли A то Brdquo в обычной речи и в математической логике20 Запишите в виде формулы высказывание ldquoесли утюг горячий то лоб холодныйrdquo21 Запишите в виде формулы высказывание ldquoневерно что если утюг горячий то лоб холодныйrdquo Можно ли в этом

случае сразу сказать какой утюг и какой лоб22 Как выразить импликацию через операции ldquoНЕrdquo и ldquoИЛИrdquo Докажите эту формулу23 Как выразить эквивалентность через операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo Докажите эту формулу24 Чем интересны операции ldquoштрих Шеффераrdquo и ldquoстрелка Пирсаrdquo25 Докажите формулы позволяющие представить базовые логические операции через штрих Шеффера Попро-

буйте построить и доказать аналогичные формулы для операции ldquoстрелка Пирсаrdquo26 Что такое формализация27 В каком порядке выполняются действия в логических выражениях 28 Что можно сделать для того чтобы изменить ldquoестественныйrdquo порядок действий

10 ИНФорматИка 12 2010

29 Какие операции называются бинарными и унарными Приведите примеры унарных и бинарных операций в математике

30 Поясните разницу между терминами ldquoлогическое выражениеrdquo и ldquoлогическая функцияrdquo31 Можно ли сказать что таблица истинности однозначно определяета) логическое выражениеб) логическую функцию32 Что такое вычислимое логическое выражение 33 Что такое тавтология противоречие Приведите примеры34 Что такое равносильные выражения

Задачи

1 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) A B A Bsdot + sdot ж) A C B Csdot + sdotб) A B A B A Bsdot + sdot + sdot з) ( ) ( )A C B C+ + +в) ( ) ( ) ( )A B A B A B+ + + sdot + и) ( ) ( )A C B Csdot sdot sdotг) A B B C C Asdot + sdot + sdot к) A C B C C A Bsdot + sdot + sdot +( )) ( )A C B C C A Bsdot + sdot + sdot +( )) ( )

д) A B C A B C B Csdot sdot + sdot sdot + sdot л) A C B C B A Csdot + + + sdot sdot( ( )) ( )е) A B C A C Bsdot sdot + sdot +( ) ( )

2 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) ( ) ( )A B A Brarr + rarr е) ( ) ( )A B A Crarr rarr rarrб) ( ) ( )A B A Brarr sdot rarr ж) ( )A B B Csdot rarr +

в) ( ) ( )A B A Bsdot rarr + з) ( ) ( )A B A Crarr rarr rarrг) ( ) ( )A B A B+ rarr sdot и) ( ) ( )A B A Bharr + harr

д) ( ) ( ) ( )A B A C A Crarr sdot + sdot rarr к) ( ) ( ) ( )A B A C B Charr + harr + harr3 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z

Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а б)

X Y Z F

1 1 1 11 1 0 11 0 0 1

4 Для предыдущего задания определите сколько различных логических функций соответствует заданной частич-ной таблице истинности (Ответ 32)

5 Задано 5 строк таблицы истинности некоторого логического выражения с тремя переменными Сколько раз-личных логических функций ей соответствуют (Ответ 8)

6 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет б г)

X Y Z F

0 1 0 01 1 0 10 1 1 0

7 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а в)

X Y Z F

1 0 0 10 0 0 11 1 1 0

8 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ а)

а) X Y Z+ +б) X Y Z+ +в) X Y Z+ +г) X Y Z+ +

а) X Y Z+ +б) X Y Zsdot sdotв) X Y Zsdot sdotг) X Y Z+ sdot

а) X (Y Z)rarr +б) X Y Zsdot sdotв) X Y Z+ +г) X Y Z+ +

11 12 2010 ИНФорматИка

X Y Z F

1 0 0 10 0 0 01 1 1 0

9 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ б г)

X Y Z F

0 0 0 00 1 1 11 0 0 1

10 Определите значение логического выражения (X 2) (X 3)gt rarr gt для X = 1 2 3 4 (Ответ 1 1 0 1)11 Определите значение логического выражения

((X 5) (X 3))((X 2) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 1 0 0)12 Определите значение логического выражения

((X 3) (X 3)) (X 1)gt + lt rarr lt для X = 1 2 3 4(Ответ 0 0 1 0)13 Определите значение логического выражения

((X 4) (X 3))((X 3) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 0 0 1)14 Определите значение логического выражения

(X(X ndash 8) gt 2X ndash 25)(X(X 8) 2 X-25) (X 7)minus gt rarr gt для X = 4 5 6 7(Ответ 0 1 0 0)15 Найдите все целые значения X при которых логическое выражение

(X 2) (X 5)gt rarr gt ложно(Ответ 3 4 5)16 Найдите все целые значения X при которых логическое выражение

((X 0) (X 4)) (X 4)gt + gt rarr gt ложно (Ответ 1 2 3 4)17 Автопилот может работать если исправен главный бортовой компьютер или два вспомогательных Выполните формали-

зацию и запишите логические формулы для высказываний ldquoавтопилот работоспособенrdquo и ldquoавтопилот неработоспособенrdquo18 Каково наибольшее целое положительное число X при котором истинно высказывание

(X(X 3) X 9) (X(X 2) X 11)2 2+ gt + rarr + le + (Ответ 5)19 Каково наибольшее целое положительное число X при котором истинно высказывание

(121 X ) (X X 5)2lt rarr lt + (Ответ 11)20 Каково наибольшее целое положительное число X при котором ложно высказывание

(X(X 6) 9 0) (X 45)2+ + gt rarr gt (Ответ 6)21 Каково наибольшее целое положительное число X при котором истинно высказывание

(X -1 100) (X(X-1) 100)2 gt rarr lt (Ответ 10)22 Каково наибольшее целое положительное число X при котором ложно высказывание

(7X-3 75) (X(X-1) 65)lt rarr gt (Ответ 8)23 Известно что для чисел A B и C истинно высказывание

((C A) (C B))((C 1) A)((C 1) B)lt + lt sdot + lt sdot + lt а) Чему равно C если A = 25 и B = 48б) Чему равно C если A = 45 и B = 18(Ответ 47 44)24 Известно что для чисел A B и C истинно высказывание

(A B)((B A) (2C A))((A B) (A 2C))= sdot lt rarr gt sdot lt rarr gt Чему равно A если C = 10 и B = 22(Ответ 21)

а) X Y Zsdot sdotб) X (Y Z)rarr +в) X Y Z+ +г) Y (X Z)rarr sdot

а) (X Y) Z+ rarr

б) (X Y) Z+ rarrв) X (Y Z)+ rarrг) X Y Z+ sdot

12 ИНФорматИка 12 2010

3 Диаграммы

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

На такой диаграмме каждой переменной соответствует круг внутри которого она равна единице а вне его mdash нулю Круги пересекаются каждый с каждым Области в которых рассматриваемое логическое выражение истинно закрашиваются каким-либо цветом Ниже приведены диаграммы для простейших операций с одной и двумя пере-менными Серым цветом залиты области где рассматриваемое выражение равно единице

A A Bsdot A B+ A Brarr

A

A

В

A

В

A

В

Такие диаграммы часто используются при работе с множествами операция ldquoИrdquo соответствует пересечению двух множеств а ldquoИЛИrdquo mdash объединению

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

С

2

18

4

756

3

Для того чтобы найти выражение для объединения двух или нескольких областей надо сложить (используя логи-ческое сложение mdash операцию ldquoИЛИrdquo) выражения для всех составляющих Например выражение для объединения областей 3 и 4 имеет вид

3 + 4 A B Csdot sdot + A B Csdot sdot С другой стороны можно заметить что справедлива формула3 + 4 B Csdot Это означает что логические выражения в некоторых случаях можно упростить Как это делается вы узнаете в

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

множества ссылок полученных от поисковой системы в ответ на какой-то запрос Рассмотрим такую задачу

Известно количество ссылок которые находит поисковый сервер по следующим запросам (здесь символ ldquoamprdquo обозначает операцию ldquoИrdquo а ldquo|rdquo mdash операцию ldquoИЛИrdquo)

собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросу(кошки|собаки)ampлемуры

Обозначим буквами С К и Л высказывания ldquoключевое слово mdash собакиrdquo ldquoключевое слово mdash кошкиrdquo и ldquoключевое слово mdash лемурыrdquo Построим диаграмму с тремя перемен-ными и выделим интересующую область которая соответствует запросу

(кошки|собаки)ampлемурыНа рисунке эта область закрашена желтым цветомВ общем виде задача очень сложна Попробуем найти какое-нибудь упрощающее усло-

вие Например выделим три условия

1 A B Csdot sdot2 A B Csdot sdot3 A B Csdot sdot4 A B Csdot sdot

5 A B Csdot sdot6 A B Csdot sdot7 A B Csdot sdot8 A B Csdot sdot

КС

Л

13 12 2010 ИНФорматИка

собаки 200кошки 250кошки|собаки 450

Это означает что область ldquoкошки ИЛИ собакиrdquo равна сумме областей ldquoкошкиrdquo и ldquoсобакиrdquo то есть эти области не пересекаются Таким образом в нашем случае диаграмма выглядит так

КC

Л

1 2

Области 1 (собакиampлемуры) и 2 (кошкиampлемуры) нам известны они составляют соответственно 40 и 50 ссылок поэтому по запросу (кошки|собаки)ampлемуры поисковый сервер выдаст 40 + 50 = 90 ссылок

Задачи

1 Используя диаграмму с тремя переменными запишите логические выражения для объединения об-ластей 2 + 5 3 + 6 4 + 7 6 + 7 5 + 6 5 + 8 7 + 8 Для каждой сложной области найдите два эквивалентных выражения

2 Известно количество ссылок которые находит поисковый сервер по следующим запросам собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 810)3 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 250кошки 200лемуры 500собакиampлемуры 0собакиampкошки 20кошкиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 920)4 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 120кошки 270лемуры 100кошки|собаки 390кошкиampлемуры 20собакиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 460)

4 Упрощение логических выражений

Законы алгебры логики

Для упрощения логических выражений используют законы алгебры логики Они формулируются для базовых логических операций mdash ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

Закон двойного отрицания означает что операция ldquoНЕrdquo обратима если применить ее два раза логическое значе-ние не изменится Закон исключения третьего основан на том что любое логическое выражение либо истинно либо ложно (ldquoтретьего не даноrdquo) Поэтому если A 1= то A 0= (и наоборот) так что произведение этих величин всегда равно нулю а сумма mdash единице

14 ИНФорматИка 12 2010

Операции с константами и закон повторения легко проверяются по таблицам истинности операций ldquoИrdquo и ldquoИЛИrdquo Переместительный и сочетательный законы выглядят вполне привычно так же как и в математике Почти везде ldquoработаетrdquo аналогия с обычной алгеброй нужно только помнить что в логике 1 + 1 = 1 а не 2

Закон для ldquoИrdquo для ldquoИЛИrdquoдвойного отрицания A A=

исключения третьего A A 0sdot = A A 1+ =

операции с константами A 1 Asdot = A 0 0sdot = A 1 1+ = A 0 A+ =

повторения A A Asdot = A A A+ =

переместительный A B B Asdot = sdot A B B A+ = +

сочетательный A (B C) (A B) Csdot sdot = sdot sdot A (B C) (A B) C+ + = + +

распределительный A B C (A B)(A C)+ sdot = + sdot + A (B C) A B A Csdot + = sdot + sdot

поглощения A A B A+ sdot = A (A B) Asdot + =

законы де Моргана A B A Bsdot = + A B A Bsdot = +

Распределительный закон для ldquoИЛИrdquo mdash это обычное раскрытие скобок А вот для операции ldquoИrdquo мы видим не-знакомое выражение в математике это равенство неверно Доказательство можно начать с правой части раскрыв скобки

(A B)(A C) A A A C B A B C+ sdot + = sdot + sdot + sdot + sdot

Дальше используем закон повторения ( A A Asdot = ) и заметим что A A C A (1 C) A 1 A+ sdot = sdot + = sdot =

Аналогично доказываем что A B A A (1 B) A+ sdot = sdot + = таким образом(A B)(A C) A B C+ sdot + = + sdot

Равенство доказано Попутно мы доказали также и закон поглощения для операции ldquoИrdquo (для ldquoИЛИrdquo вы можете сделать это самостоятельно) Отметим что из распределительного закона следует полезная формула

A A B (A A)(A B) A B+ sdot = + sdot + = + Правила позволяющие раскрывать отрицание сложных выражений названы в честь

шотландского математика и логика де Моргана Обратите внимание что при этом не просто ldquoобщееrdquo отрицание переходит на отдельные выражения но и операция ldquoИrdquo за-меняется на ldquoИЛИrdquo (и наоборот) Доказать законы де Моргана можно с помощью та-блиц истинности

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

A B Csdot sdot + A B Csdot sdot =(A A) B C B C+ sdot sdot = sdot Здесь мы сначала вынесли общий множитель двух слагаемых за скобки а затем примени-

ли закон исключения третьегоВ общем случае можно рекомендовать такую последовательность действий1 Заменить все ldquoнебазовыеrdquo операции (исключающее ИЛИ импликацию эквивалент-

ность и др) на их выражения через базовые операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo 2 Раскрыть отрицания сложных выражений по законам де Моргана так чтобы операции отрицания остались

только у отдельных переменных3 Используя вынесение общих множителей за скобки раскрытие скобок и другие законы алгебры логики упро-

стить выражение Пример

(A B)(A B)(A C)+ sdot + sdot + =(A B) A B (A C)+ sdot sdot sdot + =(A A B A) B (A C)sdot + sdot sdot sdot + == B A B (A C)sdot sdot sdot + = A B B (A C)sdot sdot sdot + = A B (A C)sdot sdot + = B A (A C)sdot sdot + = B Asdot

Здесь последовательно использованы закон де Моргана распределительный закон закон исключения третьего переместительный закон закон повторения снова переместительный закон и закон поглощения

Логические уравнения

Если приравнять два логических выражения мы получим уравнение Его решением будут значения переменных при которых уравнение превращается в тождество то есть значения левой и правой частей совпадают Например уравнение A B 1sdot = имеет единственное решение A B 1= = для остальных комбинаций значений переменных левая часть равна нулю В то же время уравнение A B 1+ = имеет три решения ( A 0= B 1= ) ( A 1= B 0= ) и A B 1= =

А де МорганИллюстрация с сайта

wwwyorkacuk

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 2: Inf 2010-12

2 ИНФорматИка 12 2010

Уважаемые коллегиВ последние годы в сфере школьной информатики

выявилась серьезная проблема mdash отсутствие качествен-ного учебника для профильного уровня которому мож-но доверять и по которому можно преподавать наи-более известные существующие (ldquoофициальныеrdquo) учеб-ники не в полной мере устраивают учителей инфор-матики поскольку содержат немало неточностей (см критические разборы на сайте httpkpolyakovnarodruschoolmdizmmdizmhtm) например в некоторых учебниках объектно-ориентированное программиро-вание ошибочно отождествляется с использованием систем визуального проектирования программ Поэто-му использовать такие учебники без дополнительной переработки весьма затруднительно

нередко на практике часть тем курса рассматривает-ся по одному учебнику часть mdash по другому и тд мно-гие учителя информатики фактически отказываются от

учебника используя авторские и скорректированные программы Зачастую эти вынужденные меры не спо-собствуют повышению качества обучения (хотя любое правило подразумевает и ряд исключений)

Существуют проблемы связанные с подготовкой стар-шеклассников к еГЭ Для качественной сдачи экзамена требуется решить большое количество задач в то время как Стандарт и следом за ним учебники в большей степе-ни ориентированы на философские проблемы информа-ционных процессов и технологии Своеобразной ldquoлакму-совой бумажкойrdquo может служить отношение к програм-мированию в Стандарте это лишь одна из небольших по объему тем изучаемая весьма схематично в то время как получить высокий балл на еГЭ без глубокого знания про-граммирования невозможно Учителю выпускных клас-сов часто приходится решать дилемму выполнять требо-вания государственного образовательного стандарта или готовить к еГЭ по информатике и ИКТ

Учитывая указанные выше при-чины мы решили написать новый учебник для профильного уровня (10ndash11-й классы) ldquoмыrdquo mdash это автор-ский коллектив в составе

bull Константин Юрьевич Поляков доктор технических наук учитель информатики высшей категории ГоУ СоШ 163 Санкт-Петербург (httpkpolyakovnarodrudosiehtm)

bull александр Петрович Шестаков кандидат педагогических наук до-цент заведующий кафедрой инфор-матики и вычислительной техники Пермского государственного педа-гогического университета г Пермь (httpcomp-sciencenarodruabouthtml)

bull евгений александрович еремин кандидат физико-математических наук доцент кафедры мультиме-дийной дидактики и ИТо Пермско-го государственного педагогическо-го университета г Пермь (httpwwwpspurupersonalereminindexhtml)

мы хотели бы построить учебник на следующих принципах и идеях

1 Учебник должен быть ори-ентирован прежде всего на фун-даментальные знания умения и навыки в области информатики и ИКТ которые не изменяются с ldquoприходомrdquo новой операционной системы и другого программного обеспечения

2 Учебник должен быть понят-ным для школьника и учителя Се-рьезный акцент нужно сделать на доступность изложения Учебник не должен содержать ldquoводыrdquo и науко-образных текстов

3 Учебник должен в максималь-ной степени соответствовать стан-дарту профильного уровня

4 Учебник должен в максималь-ной степени ldquoзакрытьrdquo проблему подготовки к еГЭ

5 Учебник должен быть ориенти-рован на использование свободного и бесплатного программного обес-печения Это тем не менее не ис-ключает применение проприетар-ных программ (например операци-онной системы Windows и пакета Microshysoftshy Office) поскольку прин-ципы обработки информации везде примерно одинаковые

6 Учебник должен быть ldquoпринятrdquo в сообществе учителей информати-ки Учебник должен быть макси-мально очищен от ldquoляповrdquo Этому также должно помочь открытое об-суждение

7 Учебник и сопутствующие ма-териалы должны в полном объеме покрывать потребность учителя и учеников в теоретическом и прак-тическом материале быть в опреде-ленном смысле самодостаточными

8 Учебник и сопутствующие ма-териалы должны быть разноуровне-выми

В начале 2010 года на сайте httpkpolyakovnarodruschoolprobookhtm были размещены примерное оглавление и отдельные главы учеб-ника а на форуме httpprofilbookforum24ru открыто публичное об-суждение можно уверенно сказать что обсуждение материалов на фо-руме и в личной переписке с авто-рами оказалось весьма полезным и плодотворным В результате были внесены некоторые изменения как в структуру учебника так и в содер-жание отдельных глав

мы бы хотели особенно поблаго-дарить наших коллег-учителей и IT-специалистов mdash аГ Тамаревскую оа Тузову Юм розенфарба

СС михалковича Та мисаренко-ва Ка малеванова ВВ Потопахи-на Вн разумова которые взяли на себя труд внимательно прочитать рукопись готовых глав учебника и высказали ряд ценных замечаний которые были приняты авторами и учтены в текущей версии текста учебника

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

Кроме учебника мы планируем предоставить сообществу учителей информатики следующие материа-лы

bull поурочное планирование для профильного курса информатики и ИКТ (по 140 учебных часов в 10-м и 11-м классе всего 280 часов)

bull полностью разработанные прак-тические работы по всем темам учебника (практикум)

bull комплект презентаций к уро-кам

bull оригинальное программное обес-печение разработанное авторами для поддержки курса

bull методическое пособие для учи-теля

В этом номере мы предлагаем чи-тателям ознакомиться с предвари-тельной версией одного из разделов учебника надеемся что материал вызовет отклики замечания кон-структивную критику мы постара-емся учесть все высказанные пред-ложения в окончательном варианте текста который будет предложен издательству

С уважением КЮ Поляков аП Шестаков еа еремин

3 12 2010 ИНФорматИка

теМа ноМера

1 Логика и компьютер

В быту мы часто используем слова ldquoлогикаrdquo ldquoлогичноrdquo Логика (от древнегреческого λογικος mdash ldquoнаука о рассужденииrdquo) mdash это наука о том как правильно рассуждать делать выводы доказывать утверждения

В естественном языке рассуждения всегда связаны с конкретными предметами и утверждениями и поэтому исследовать все это многообразие достаточно сложно Древнегреческий философ Аристотель стал основоположником формальной логики которая отвлекается от конкретного содержания и изучает общие правила построения верных выводов из известной информации которая считается истинной Формальная логика изучает высказывания

Высказывание mdash это повествовательное предложение про которое можно одно-значно сказать что оно истинно или ложно

Используя это определение проверим можно ли считать высказываниями следую-щие предложения

1) Сейчас идет дождь2) Вчера жирафы улетели на север3) Красиво4) Который час5) В городе N живут более 2 миллионов человек6) Посмотрите на улицу7) У квадрата 10 сторон и все разные8) История mdash интересный предметЗдесь высказываниями являются только предложения 1 2 и 7 остальные не под-

ходят под определение Утверждения 3 и 4 mdash это не повествовательные предложения Предложение 5 станет высказыванием только в том случае если ldquoNrdquo заменить на на-звание конкретного города Предложение 6 mdash это призыв к действию а не утверждение Утверждение 8 кто-то считает истинным а кто-то ложным (нет однозначности) его мож-но более строго сформулировать в виде ldquoПо мнению N история mdash интересный предметrdquo Для того чтобы оно стало высказыванием нужно заменить ldquoNrdquo на имя человека

Логические основы компьютеров

КЮ ПоляковаП Шестаковеа еремин

На фото Памятник Аристотелю в городе Стагир (Греция) месте его рождения

4 ИНФорматИка 12 2010

Какая же связь между логикой и компьютерами В классической формальной логике высказывание может быть истинно или ложно третий вариант исключается1 Если обозначить истинное значение единицей а ложное mdash нулем то получится что формальная логика представляет собой правила выполнения операций с нулями и единицами то есть с двоичными кодами Как вы помните именно такой способ используется в компьютерах для кодирования всех видов информации Поэтому обработку информации оказалось возможным свести к выполнению логических опе-раций Важный шаг в этом направлении сделал английский математик Джордж Буль Он предложил применить для исследования логических высказываний математические методы Позже этот раздел математики получил название алгебра логики или булева алгебра

Алгебра логики mdash это математический аппарат с помощью которого записывают вычисляют упрощают и преобразовывают логические высказывания

Алгебра логики определяет правила выполнения операций с логическими величинами которые могут быть равны только 0 или 1 то есть с двоичными данными Используя эти правила можно строить элементы памяти и выполнять арифметические действия О том как это сделать вы узнаете в этой главе

Контрольные вопросы

1 Объясните значения слов ldquoлогикаrdquo ldquoформальная логикаrdquo ldquoалгебра логикиrdquo2 Чем отличается формальная логика от ldquoобычнойrdquo бытовой3 Что такое высказывание4 Можно ли считать высказываниями эти предложения

а) Не плачь девчонкаб) Почему я водовозв) Купите слоникаг) Клубника очень вкуснаяд) Сумма X и Y равна 36

5 Как вы думаете зачем в курсе информатики изучается логика

2 Логические операцииВысказывания бывают простые и сложные Простые высказывания нельзя разделить на более мелкие высказы-

вания например ldquoСейчас идет дождьrdquo или ldquoФорточка открытаrdquo Сложные (составные) высказывания строятся из простых с помощью логических связок (операций) ldquoИrdquo ldquoИЛИrdquo ldquoНЕrdquo ldquoеслиhellip тоrdquo ldquoтогда и только тогдаrdquo

В булевой алгебре высказывания обычно обозначаются латинскими буквами Таким образом мы уходим от кон-кретного содержания высказываний нас интересует только их истинность или ложность Например можно обозна-чить буквой A высказывание ldquoСейчас идет дождьrdquo а буквой B mdash высказывание ldquoФорточка открытаrdquo Из них строятся сложные высказывания

не A ldquoСейчас нет дождяrdquo не B ldquoФорточка закрытаrdquo A и B ldquoСейчас идет дождь и открыта форточкаrdquo A или B ldquoСейчас идет дождь или открыта форточкаrdquo если A то B ldquoЕсли сейчас идет дождь то форточка открытаrdquo

Кроме этих есть еще и другие высказывания которые можно получить из двух исходных С некоторыми из них мы также познакомимся

Операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo используются чаще других Оказывается с их помощью можно выразить любую логическую операцию поэтому эти три операции можно считать основными базовыми

Операция laquoНЕraquo

Операция ldquoНЕrdquo часто называется отрицанием или инверсией В алгебре логики всего два знака 0 и 1 поэтому логическое отрицание mdash это переход от одного значения к другому от 1 к 0 или наоборот Если высказывание A ис-тинно то ldquoне Аrdquo ложно и наоборот

Для обозначения операции ldquoНЕrdquo используются несколько способов Выражение ldquoне Аrdquo в алгебре логики записы-вается как A или notА в языках программирования Паскаль и Бейсик mdash как not A в языке Си mdash как A

Операцию ldquoНЕrdquo можно задать в виде таблицыA A

0 11 0

1 Существуют неклассические логические системы например трехзначная логика где кроме ldquoистинноrdquo и ldquoложноrdquo есть еще состояние ldquoне определеноrdquo

5 12 2010 ИНФорматИка

Эта таблица состоит из двух частей слева перечисляются все возможные значения исходного высказывания (их всего два mdash 0 и 1) а в последнем столбце записывают результат выполнения логической операции для каждого из этих вариантов Такая таблица называется таблицей истинности логической операции

Таблица истинности задает логическую функцию то есть правила преобразования входных логических значе-ний в выходные

Операция laquoИraquo

Пусть есть два высказывания A mdash ldquoСейчас идет дождьrdquo B mdash ldquoФорточка открытаrdquo Слож-ное высказывание ldquoA и Brdquo выглядит так ldquoСейчас идет дождь и форточка открытаrdquo Оно будет истинным (верным) в том и только в том случае когда оба высказывания A и B истинны одновременно

Для понимания операции ldquoИrdquo можно представить себе простую схему в которой для вклю-чения лампочки используются два выключателя соединенных последовательно (см рисунок) Чтобы лампочка загорелась нужно обязательно включить оба выключателя С другой стороны чтобы выключить лампочку достаточно выключить любой из них

Операция ldquoИrdquo (в отличие от ldquoНЕrdquo) выполняется с двумя логическими значениями кото-рые мы обозначим как A и B Результат этой операции в алгебре логики записывают как АsdotB А and B или А amp B В языках программирования используют обозначения ldquoA and Brdquo (Паскаль Бейсик) или ldquoA ampamp Brdquo (Си)

A B АsdotB0 0 0 01 0 1 02 1 0 03 1 1 1

В таблице истинности будет уже не один столбец с исходными данными а два Число строк также выросло с 2 до 4 поскольку для 2 бит мы получаем 4 разных комбинации 00 01 10 и 11 Эти строчки расположены в определен-ном порядке двоичные числа полученные соединением битов A и B идут в порядке возрастания (слева от таблицы они переведены в десятичную систему) Как следует из определения в последнем столбце будет всего одна единица для варианта A = B = 1

Легко проверить что этот результат можно получить ldquoобычнымrdquo умножением A на B поэтому операцию ldquoИrdquo на-зывают логическим умножением Существует и другое название этой операции mdash конъюнкция (от лат conjunctio mdash союз связь)

Операция laquoИЛИraquo

Высказывание ldquoСейчас идет дождь или форточка открытаrdquo истинно тогда когда истинно хотя бы одно из входящих в него высказываний или оба одно-временно В алгебре логики операция ldquoИЛИrdquo обозначается как А+B или А or B в языках программирования mdash ldquoA or Brdquo (Паскаль Бейсик) или ldquoA || Brdquo (Си)

A B А+B0 0 00 1 11 0 11 1 1

Можно представить себе схему с двумя выключателями соединенными параллельно (см рисунок) Чтобы лам-почка загорелась достаточно включить хотя бы один из выключателей Чтобы выключить лампочку необходимо обязательно выключить оба В таблице истинности будет только один ноль для варианта A = B = 0

Операцию ldquoИЛИrdquo называют логическим сложением потому что она похожа на обычное математическое сложение Единственное отличие mdash в последней строке таблицы истинности в математике 1 + 1 равно 2 а в алгебре логики mdash 1 Другое название операции ldquoИЛИrdquo mdash дизъюнкция (от лат disjunctio mdash разделение)

В учебнике для обозначения операций ldquoИrdquo и ldquoИЛИrdquo мы будем использовать знаки умножения и сложения (на-пример АsdotB и А+B) Это очень удобно потому что они привычны для нас и позволяют легко увидеть аналогию с обычной математикой

Доказано что операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo достаточно для того чтобы записать с их помощью любую логическую операцию которую только можно придумать Например для двух переменных существует всего 24 = 16 логических операций их таблицы истинности отличаются только последним столбцом в котором 4 двоичных значения (4 бита) Далее мы рассмотрим еще три распространенных операции и покажем как их можно представить через операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

sim220 В

sim220 В

6 ИНФорматИка 12 2010

Операция laquoисключающее ИЛИraquo

A B A Boplus0 0 00 1 11 0 11 1 0

Операция ldquoисключающее ИЛИrdquo отличается от обычного ldquoИЛИrdquo только тем что результат равен 0 если оба зна-чения равны 1 (последняя строчка в таблице истинности) То есть ее результат mdash истина в том и только в том случае когда два значения не равны

ldquoИсключающее ИЛИrdquo в алгебре логики обозначается знаком ldquooplusrdquo в языке Паскаль как xor (например ldquoA xor Brdquo) а в языке Си mdash знаком ldquo^rdquo (ldquoA ^ Brdquo) Эту операцию можно представить через базовые операции (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) следующим образом

A B A B A Boplus = sdot + sdot Пока мы не можем вывести эту формулу но можем доказать ее (или опровергнуть mdash доказать что она непра-

вильная) Для этого достаточно для всех возможных комбинаций A и B вычислить значения выражения стоящего в правой части равенства и сравнить его со значением А oplus B для тех же исходных данных Поскольку провести такие вычисления в уме достаточно сложно сначала вычислим значения A B A Bsdot и A Bsdot а потом уже A B A Bsdot + sdot В таблице истинности появятся дополнительные столбцы для промежуточных результатов

A B A B A Bsdot A Bsdot A B A Bsdot + sdot A Boplus0 0 1 1 0 0 0 00 1 1 0 1 0 1 11 0 0 1 0 1 1 11 1 0 0 0 0 0 0

Легко видеть что выражение A B A Bsdot + sdot совпадает с A Boplus для всех возможных вариантов Это значит что формула доказана

Операция ldquoисключающее ИЛИrdquo иначе называется разделительной дизъюнкцией (это значит ldquoодин или другой но не оба вместеrdquo) или сложением по модулю два Второе название связано с тем что ее результат равен остатку от деления ldquoобычнойrdquo суммы A + B на 2

A Boplus = (A + B) mod 2Здесь mod обозначает операцию взятия остатка от деленияОперация ldquoисключающее ИЛИrdquo обладает интересными свойствами По таблице истинности несложно прове-

рить что A 0 Aoplus = A 1 Aoplus = A A 0oplus =

Для доказательства этих равенств можно просто подставить в них A = 0 и A = 1 Теперь докажем что (A B) B Aoplus oplus = ()

Подставляя в левую часть B = 0 получим (A 0) 0 A 0 Aoplus oplus = oplus = Аналогично для B = 1 имеем (A 1) 1 A 1 Aoplus oplus = oplus = Это означает что формула () справедлива для любых значений B Отсюда следует важный вывод если два раза при-менить операцию ldquoисключающее ИЛИrdquo с одним и тем же B мы восстановим исходное значение В этом смысле ldquoисключающее ИЛИrdquo mdash обратимая операция (кроме нее обратима также операция ldquoНЕrdquo mdash если применить ее дважды мы вернемся к исходному значению)

Формула () верна не только для высказываний но и для чисел состоящих из нескольких двоичных разрядов Что-бы зашифровать данные надо применить операцию ldquoисключающее ИЛИrdquo с некоторым числом (кодом) отдельно для каждого разряда Для расшифровки еще раз применяется ldquoисключающее ИЛИrdquo с тем же ключом Нужно отме-тить что такой метод шифрования очень нестойкий для больших текстов его легко раскрыть частотным анализом

Импликация

A B A Brarr

0 0 10 1 11 0 01 1 1

Мы часто используем логическую связку ldquoесли hellip тоrdquo например ldquoЕсли пойдет дождь то я надену плащrdquo или ldquoЕсли все стороны прямоугольника равны то это квадратrdquo В логике эта связка называется импликацией2 (следованием) и обозначается стрелкой A Brarr (ldquoесли A то Brdquo ldquoиз A следует Brdquo)

2 От лат implicatio mdash сплетение тесная связь

7 12 2010 ИНФорматИка

Разобраться с импликацией будет легче если мы рассмотрим конкретное высказывание например такое ldquoЕсли хорошо работаешь то получаешь большую зарплатуrdquo Обозначим буквами два простых высказывания A mdash ldquoхорошо работаешьrdquo и B mdash ldquoполучаешь большую зарплатуrdquo Понятно что если высказывание A Brarr истинно то все кто хоро-шо работают (A = 1) должны получать большую зарплату (B = 1) Если же кто-то работает хорошо (A = 1) а получает мало (B = 0) то высказывание A Brarr ложно

Лодыри и бездельники (A = 0) могут получать как маленькую (B = 0) так и большую зарплату (B = 1) это не нарушает справедливость высказывания A Brarr Иногда определяя импликацию говорят так из истины следует истина а из лжи mdash что угодно Это значит что при ложном высказывании A высказывание B может быть как ложно так и истинно

Нужно обратить внимание на разницу между высказываниями вида ldquoесли A то Brdquo в обычной жизни и в алгебре логики В быту мы чаще всего имеем в виду что существует причинно-следственная связь между A и B то есть имен-но A вызывает B Алгебра логики не устанавливает взаимосвязь явлений истинность высказывания A Brarr говорит только о возможности такой связи Например с точки зрения алгебры логики может быть истинным высказывание ldquoесли Вася mdash студент то Петя mdash лыжникrdquo

Импликация чаще всего используется при решении логических задач Например условие ldquoесли A то Brdquo можно записать в виде A B 1rarr =

Для импликации (в отличие от других изученных операций с двумя переменными) не действует переместитель-ный закон если в записи A Brarr поменять местами A и B то результат изменится A B B Ararr ne rarr Внешне это видно по стрелке которая указывает ldquoнаправлениеrdquo

Импликацию можно заменить на выражение использующее только базовые операции (здесь mdash только ldquoНЕrdquo и ldquoИЛИrdquo)

A B A Brarr = + Доказать это равенство вы уже можете самостоятельно

Эквивалентность

A B A Bharr0 0 10 1 01 0 01 1 1

Эквивалентность (также эквиваленция равносильность) mdash это логическая операция которая соответствует связке ldquoтогда и только тогдаrdquo Высказывание A Bharr истинно в том и только в том случае когда A = B (см таблицу истинности)

Возможно вы заметили что эквивалентность mdash это обратная операция для ldquoисключающего ИЛИrdquo (проверьте по таблицам истинности) то есть

A B A Bharr = oplus Здесь черта сверху охватывающая все выражение в правой части равенства означает отрицание (инверсию) ко-

торое применяется к результату вычисления выражения A Boplus а не к отдельным высказываниям Можно заменить эквивалентность выражением которое включает только базовые логические операции

A B A B A Bharr = sdot + sdot Эту формулу вы можете доказать (или опровергнуть) самостоятельно

Другие логические операции

Мы уже говорили что существуют и другие логические операции Таблицы истинности операций с двумя переменными содержат 4 строки и отличаются только значением последнего столбца Поэтому любая новая комбинация нулей и единиц в этом столбце дает новую логическую операцию (логическую функцию) Всего их очевидно столько сколько существует четырехразрядных двоичных чисел то есть 16 = 24 Из тех что мы еще не рассматривали наиболее интерес-ны две mdash штрих Шеффера (ldquoИndashНЕrdquo англ nand = ldquonot andrdquo)

A|B A B= sdot и стрелка Пирса (ldquoИЛИndashНЕrdquo англ nor = ldquonot orrdquo)

A B A Bdarr = + Особенность этих операций состоит в том что с помощью любой одной из них можно записать произвольную

логическую операцию Например операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (базовый набор) выражаются через штрих Шеф-фера так

A A|A= A B A|B A|B)| A|B)sdot = =( ( A B A|B A|A)| B|B)+ = =( (

Эти формулы можно доказать через таблицы истинности

Штрих Шеффера Стрелка Пирса

A B A|B A B A Bdarr

0 0 1 0 0 10 1 1 0 1 01 0 1 1 0 01 1 0 1 1 0

8 ИНФорматИка 10 2010

Логические выражения

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

А mdash ldquoПервый двигатель вышел из строяrdquoB mdash ldquoВторой двигатель вышел из строяrdquoC mdash ldquoТретий двигатель вышел из строяrdquoX mdash ldquoАварийная ситуацияrdquoТогда логическое высказывание X можно записать в виде формулы

X =(AmiddotB) + (AmiddotC) + (BmiddotC) ()Таким образом мы выполнили формализацию

Формализация mdash это переход от конкретного содержания к формальной записи с помощью некоторого языка

В логических выражениях операции выполняются в следующем порядке1) действия в скобках2) отрицание (ldquoНЕrdquo)3) логическое умножение (ldquoИrdquo)4) логическое сложение (ldquoИЛИrdquo) и ldquoисключающее ИЛИrdquo5) импликация6) эквивалентностьТакой порядок означает что все скобки в выражении () для X можно

убрать Порядок вычисления выражения можно так же как и для ариф-метических выражений определить с помощью дерева (см рисунок) Вы-числение начинается с листьев корень mdash это самая последняя операция

Здесь каждая операция выполняется с двумя значениями Такие операции называются бинарными (от лат bis mdash дважды) или двуместными

Операции которые выполняются над одной величиной называют унарными (от лат uno mdash один) или одномест-ными Пример унарной логической операции mdash это отрицание (операция ldquoНЕrdquo)

Любую формулу можно задать с помощью таблицы истинности которая показывает чему равно значение логического выражения при всех возможных комбинациях значений исходных переменных Сложные выражения удобно разбить на несколько более простых сначала вычислить значения этих промежуточных величин а затем mdash окончательный результат

A B C AmiddotB AmiddotC BmiddotC X0 0 0 0 0 0 00 0 1 0 0 0 00 1 0 0 0 0 00 1 1 0 0 1 11 0 0 0 0 0 01 0 1 0 1 0 11 1 0 1 0 0 11 1 1 1 1 1 1

Рассмотрим формулу () Выражение в правой части зависит от трех переменных поэтому существует 23 = 8 комбинаций их значений Таблица истинности выглядит так как показано выше По ней видно что при некоторых значениях переменных значение X истинно а при некоторых mdash ложно Такие выражения называют вычислимыми

Высказывание ldquoВася mdash школьник или он не учится в школеrdquo всегда истинно (для любого Васи) Оно может быть записано в виде логического выражения A A+ Выражение истинное при любых значениях переменных называет-ся тождественно истинным или тавтологией

Высказывание ldquoсегодня безветрие и дует сильный ветерrdquo никогда не может быть истинным Соответствующее логическое выражение A Asdot всегда ложно оно называется тождественно ложным или противоречием

Если два выражения принимают одинаковые значения при всех значениях переменных они называются равно-сильными или тождественно равными Например равносильны выражения A Brarr и A B+ Равносильные выраже-ния определяют одну и ту же логическую функцию то есть при одинаковых исходных данных приводят к одинако-вым результатам

Некоторые задачи

Рассмотрим ряд задач в которых требуется исследовать логическое выражениеЗадача 1 Каково наибольшее целое число X при котором истинно высказывание

A (90 X ) (80 (X 2))2 2= lt rarr gt +

+

+

bull bull

bull

A A

C

C

B

B

9 12 2010 ИНФорматИка

Сначала удобно заменить импликацию по формуле A B A Brarr = + Отрицание для высказывания 90 X2lt запишется как 90 X2ge поэтому

A (90 X )2= ge или (80 (X 2))2gt + В этой задаче нас интересуют только целые числа Поэтому условие 90 X2ge можно заменить на X 9le или

9 Xminus le le9 а условие 80 (X 2)2gt + mdash на X 2 8+ le или -10 X 6le le Таким образом требуется выбрать наибольшее целое число которое входит в один или в другой промежуток

x

9

6

ndash9ndash10

Это число mdash 9Задача 2 A B и С mdash целые числа для которых истинно высказывание

X (A B)((A B) (B C))((B A) (C B))= = sdot gt rarr gt sdot gt rarr gtЧему равно В если A = 27 и C = 25Это сложное высказывание состоит из трех простых

(A B)= (A B) (B C)gt rarr gt (B A) (C B)gt rarr gtОни связаны операцией ldquoИrdquo то есть должны выполняться одновременноИз (A B) 1= = сразу следует что A Bne Предположим что A Bgt тогда из второго условия получаем 1 (B C)rarr gt Это

выражение может быть истинно тогда и только тогда когда (B C) 1gt = поэтому имеем A B Cgt gt этому условию со-ответствует только число 26

На всякий случай проверим и вариант A Blt тогда из второго условия получаем 0 (B C)rarr gt это выражение ис-тинно при любом B Теперь проверяем третье условие получаем 1 (C B) 1rarr gt = это выражение может быть истин-но тогда и только тогда когда C Bgt и тут мы получили противоречие потому что нет такого числа B для которого C B Agt gt Таким образом правильный ответ mdash 26

Контрольные вопросы

1 Даны два высказывания A mdash ldquoВ Африке водятся жирафыrdquo и B mdash ldquoВ Мурманске идет снегrdquo Постройте из них различные сложные высказывания

2 Дано высказывание ldquoВинни-Пух любит мед и дверь в дом открытаrdquo Как бы вы сформулировали отрицание этого высказывания

3 Что такое таблица истинности4 Почему в таблице истинности для операции ldquoНЕrdquo две строки а для других изученных операций mdash четыре

Сколько строчек в таблице истинности выражения с тремя переменными с четырьмя с пятью5 В каком порядке обычно записываются значения переменных в таблице истинности6 Когда истинно высказывание ldquoA и Brdquo ldquoА или Brdquo7 Какие электрические схемы можно использовать для иллюстрации операций ldquoИrdquo и ldquoИЛИrdquo8 Какие знаки применяют для обозначения операций ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo9 Почему операция ldquoИrdquo называется логическим умножением а ldquoИЛИrdquo mdash логическим сложением10 В чем отличие ldquoобычногоrdquo и логического сложения11 Сколько существует различных логических операций с двумя переменными С тремя переменными12 Чем отличается операция ldquoисключающее ИЛИrdquo от ldquoИЛИrdquo13 Почему операция ldquoисключающее ИЛИrdquo называется сложением по модулю 214 Как записать выражение A Boplus с помощью базового набора операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo)15 Как можно доказать или опровергнуть логическую формулу16 Какими интересными свойствами обладает операция ldquoисключающее ИЛИrdquo17 Что значит выражение ldquoобратимая операцияrdquo Какие изученные логические операции являются обратимыми18 Какое свойство операции ldquoисключающее ИЛИrdquo позволяет использовать ее для простейшего шифрования19 Чем отличается смысл высказывания ldquoесли A то Brdquo в обычной речи и в математической логике20 Запишите в виде формулы высказывание ldquoесли утюг горячий то лоб холодныйrdquo21 Запишите в виде формулы высказывание ldquoневерно что если утюг горячий то лоб холодныйrdquo Можно ли в этом

случае сразу сказать какой утюг и какой лоб22 Как выразить импликацию через операции ldquoНЕrdquo и ldquoИЛИrdquo Докажите эту формулу23 Как выразить эквивалентность через операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo Докажите эту формулу24 Чем интересны операции ldquoштрих Шеффераrdquo и ldquoстрелка Пирсаrdquo25 Докажите формулы позволяющие представить базовые логические операции через штрих Шеффера Попро-

буйте построить и доказать аналогичные формулы для операции ldquoстрелка Пирсаrdquo26 Что такое формализация27 В каком порядке выполняются действия в логических выражениях 28 Что можно сделать для того чтобы изменить ldquoестественныйrdquo порядок действий

10 ИНФорматИка 12 2010

29 Какие операции называются бинарными и унарными Приведите примеры унарных и бинарных операций в математике

30 Поясните разницу между терминами ldquoлогическое выражениеrdquo и ldquoлогическая функцияrdquo31 Можно ли сказать что таблица истинности однозначно определяета) логическое выражениеб) логическую функцию32 Что такое вычислимое логическое выражение 33 Что такое тавтология противоречие Приведите примеры34 Что такое равносильные выражения

Задачи

1 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) A B A Bsdot + sdot ж) A C B Csdot + sdotб) A B A B A Bsdot + sdot + sdot з) ( ) ( )A C B C+ + +в) ( ) ( ) ( )A B A B A B+ + + sdot + и) ( ) ( )A C B Csdot sdot sdotг) A B B C C Asdot + sdot + sdot к) A C B C C A Bsdot + sdot + sdot +( )) ( )A C B C C A Bsdot + sdot + sdot +( )) ( )

д) A B C A B C B Csdot sdot + sdot sdot + sdot л) A C B C B A Csdot + + + sdot sdot( ( )) ( )е) A B C A C Bsdot sdot + sdot +( ) ( )

2 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) ( ) ( )A B A Brarr + rarr е) ( ) ( )A B A Crarr rarr rarrб) ( ) ( )A B A Brarr sdot rarr ж) ( )A B B Csdot rarr +

в) ( ) ( )A B A Bsdot rarr + з) ( ) ( )A B A Crarr rarr rarrг) ( ) ( )A B A B+ rarr sdot и) ( ) ( )A B A Bharr + harr

д) ( ) ( ) ( )A B A C A Crarr sdot + sdot rarr к) ( ) ( ) ( )A B A C B Charr + harr + harr3 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z

Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а б)

X Y Z F

1 1 1 11 1 0 11 0 0 1

4 Для предыдущего задания определите сколько различных логических функций соответствует заданной частич-ной таблице истинности (Ответ 32)

5 Задано 5 строк таблицы истинности некоторого логического выражения с тремя переменными Сколько раз-личных логических функций ей соответствуют (Ответ 8)

6 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет б г)

X Y Z F

0 1 0 01 1 0 10 1 1 0

7 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а в)

X Y Z F

1 0 0 10 0 0 11 1 1 0

8 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ а)

а) X Y Z+ +б) X Y Z+ +в) X Y Z+ +г) X Y Z+ +

а) X Y Z+ +б) X Y Zsdot sdotв) X Y Zsdot sdotг) X Y Z+ sdot

а) X (Y Z)rarr +б) X Y Zsdot sdotв) X Y Z+ +г) X Y Z+ +

11 12 2010 ИНФорматИка

X Y Z F

1 0 0 10 0 0 01 1 1 0

9 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ б г)

X Y Z F

0 0 0 00 1 1 11 0 0 1

10 Определите значение логического выражения (X 2) (X 3)gt rarr gt для X = 1 2 3 4 (Ответ 1 1 0 1)11 Определите значение логического выражения

((X 5) (X 3))((X 2) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 1 0 0)12 Определите значение логического выражения

((X 3) (X 3)) (X 1)gt + lt rarr lt для X = 1 2 3 4(Ответ 0 0 1 0)13 Определите значение логического выражения

((X 4) (X 3))((X 3) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 0 0 1)14 Определите значение логического выражения

(X(X ndash 8) gt 2X ndash 25)(X(X 8) 2 X-25) (X 7)minus gt rarr gt для X = 4 5 6 7(Ответ 0 1 0 0)15 Найдите все целые значения X при которых логическое выражение

(X 2) (X 5)gt rarr gt ложно(Ответ 3 4 5)16 Найдите все целые значения X при которых логическое выражение

((X 0) (X 4)) (X 4)gt + gt rarr gt ложно (Ответ 1 2 3 4)17 Автопилот может работать если исправен главный бортовой компьютер или два вспомогательных Выполните формали-

зацию и запишите логические формулы для высказываний ldquoавтопилот работоспособенrdquo и ldquoавтопилот неработоспособенrdquo18 Каково наибольшее целое положительное число X при котором истинно высказывание

(X(X 3) X 9) (X(X 2) X 11)2 2+ gt + rarr + le + (Ответ 5)19 Каково наибольшее целое положительное число X при котором истинно высказывание

(121 X ) (X X 5)2lt rarr lt + (Ответ 11)20 Каково наибольшее целое положительное число X при котором ложно высказывание

(X(X 6) 9 0) (X 45)2+ + gt rarr gt (Ответ 6)21 Каково наибольшее целое положительное число X при котором истинно высказывание

(X -1 100) (X(X-1) 100)2 gt rarr lt (Ответ 10)22 Каково наибольшее целое положительное число X при котором ложно высказывание

(7X-3 75) (X(X-1) 65)lt rarr gt (Ответ 8)23 Известно что для чисел A B и C истинно высказывание

((C A) (C B))((C 1) A)((C 1) B)lt + lt sdot + lt sdot + lt а) Чему равно C если A = 25 и B = 48б) Чему равно C если A = 45 и B = 18(Ответ 47 44)24 Известно что для чисел A B и C истинно высказывание

(A B)((B A) (2C A))((A B) (A 2C))= sdot lt rarr gt sdot lt rarr gt Чему равно A если C = 10 и B = 22(Ответ 21)

а) X Y Zsdot sdotб) X (Y Z)rarr +в) X Y Z+ +г) Y (X Z)rarr sdot

а) (X Y) Z+ rarr

б) (X Y) Z+ rarrв) X (Y Z)+ rarrг) X Y Z+ sdot

12 ИНФорматИка 12 2010

3 Диаграммы

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

На такой диаграмме каждой переменной соответствует круг внутри которого она равна единице а вне его mdash нулю Круги пересекаются каждый с каждым Области в которых рассматриваемое логическое выражение истинно закрашиваются каким-либо цветом Ниже приведены диаграммы для простейших операций с одной и двумя пере-менными Серым цветом залиты области где рассматриваемое выражение равно единице

A A Bsdot A B+ A Brarr

A

A

В

A

В

A

В

Такие диаграммы часто используются при работе с множествами операция ldquoИrdquo соответствует пересечению двух множеств а ldquoИЛИrdquo mdash объединению

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

С

2

18

4

756

3

Для того чтобы найти выражение для объединения двух или нескольких областей надо сложить (используя логи-ческое сложение mdash операцию ldquoИЛИrdquo) выражения для всех составляющих Например выражение для объединения областей 3 и 4 имеет вид

3 + 4 A B Csdot sdot + A B Csdot sdot С другой стороны можно заметить что справедлива формула3 + 4 B Csdot Это означает что логические выражения в некоторых случаях можно упростить Как это делается вы узнаете в

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

множества ссылок полученных от поисковой системы в ответ на какой-то запрос Рассмотрим такую задачу

Известно количество ссылок которые находит поисковый сервер по следующим запросам (здесь символ ldquoamprdquo обозначает операцию ldquoИrdquo а ldquo|rdquo mdash операцию ldquoИЛИrdquo)

собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросу(кошки|собаки)ampлемуры

Обозначим буквами С К и Л высказывания ldquoключевое слово mdash собакиrdquo ldquoключевое слово mdash кошкиrdquo и ldquoключевое слово mdash лемурыrdquo Построим диаграмму с тремя перемен-ными и выделим интересующую область которая соответствует запросу

(кошки|собаки)ampлемурыНа рисунке эта область закрашена желтым цветомВ общем виде задача очень сложна Попробуем найти какое-нибудь упрощающее усло-

вие Например выделим три условия

1 A B Csdot sdot2 A B Csdot sdot3 A B Csdot sdot4 A B Csdot sdot

5 A B Csdot sdot6 A B Csdot sdot7 A B Csdot sdot8 A B Csdot sdot

КС

Л

13 12 2010 ИНФорматИка

собаки 200кошки 250кошки|собаки 450

Это означает что область ldquoкошки ИЛИ собакиrdquo равна сумме областей ldquoкошкиrdquo и ldquoсобакиrdquo то есть эти области не пересекаются Таким образом в нашем случае диаграмма выглядит так

КC

Л

1 2

Области 1 (собакиampлемуры) и 2 (кошкиampлемуры) нам известны они составляют соответственно 40 и 50 ссылок поэтому по запросу (кошки|собаки)ampлемуры поисковый сервер выдаст 40 + 50 = 90 ссылок

Задачи

1 Используя диаграмму с тремя переменными запишите логические выражения для объединения об-ластей 2 + 5 3 + 6 4 + 7 6 + 7 5 + 6 5 + 8 7 + 8 Для каждой сложной области найдите два эквивалентных выражения

2 Известно количество ссылок которые находит поисковый сервер по следующим запросам собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 810)3 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 250кошки 200лемуры 500собакиampлемуры 0собакиampкошки 20кошкиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 920)4 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 120кошки 270лемуры 100кошки|собаки 390кошкиampлемуры 20собакиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 460)

4 Упрощение логических выражений

Законы алгебры логики

Для упрощения логических выражений используют законы алгебры логики Они формулируются для базовых логических операций mdash ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

Закон двойного отрицания означает что операция ldquoНЕrdquo обратима если применить ее два раза логическое значе-ние не изменится Закон исключения третьего основан на том что любое логическое выражение либо истинно либо ложно (ldquoтретьего не даноrdquo) Поэтому если A 1= то A 0= (и наоборот) так что произведение этих величин всегда равно нулю а сумма mdash единице

14 ИНФорматИка 12 2010

Операции с константами и закон повторения легко проверяются по таблицам истинности операций ldquoИrdquo и ldquoИЛИrdquo Переместительный и сочетательный законы выглядят вполне привычно так же как и в математике Почти везде ldquoработаетrdquo аналогия с обычной алгеброй нужно только помнить что в логике 1 + 1 = 1 а не 2

Закон для ldquoИrdquo для ldquoИЛИrdquoдвойного отрицания A A=

исключения третьего A A 0sdot = A A 1+ =

операции с константами A 1 Asdot = A 0 0sdot = A 1 1+ = A 0 A+ =

повторения A A Asdot = A A A+ =

переместительный A B B Asdot = sdot A B B A+ = +

сочетательный A (B C) (A B) Csdot sdot = sdot sdot A (B C) (A B) C+ + = + +

распределительный A B C (A B)(A C)+ sdot = + sdot + A (B C) A B A Csdot + = sdot + sdot

поглощения A A B A+ sdot = A (A B) Asdot + =

законы де Моргана A B A Bsdot = + A B A Bsdot = +

Распределительный закон для ldquoИЛИrdquo mdash это обычное раскрытие скобок А вот для операции ldquoИrdquo мы видим не-знакомое выражение в математике это равенство неверно Доказательство можно начать с правой части раскрыв скобки

(A B)(A C) A A A C B A B C+ sdot + = sdot + sdot + sdot + sdot

Дальше используем закон повторения ( A A Asdot = ) и заметим что A A C A (1 C) A 1 A+ sdot = sdot + = sdot =

Аналогично доказываем что A B A A (1 B) A+ sdot = sdot + = таким образом(A B)(A C) A B C+ sdot + = + sdot

Равенство доказано Попутно мы доказали также и закон поглощения для операции ldquoИrdquo (для ldquoИЛИrdquo вы можете сделать это самостоятельно) Отметим что из распределительного закона следует полезная формула

A A B (A A)(A B) A B+ sdot = + sdot + = + Правила позволяющие раскрывать отрицание сложных выражений названы в честь

шотландского математика и логика де Моргана Обратите внимание что при этом не просто ldquoобщееrdquo отрицание переходит на отдельные выражения но и операция ldquoИrdquo за-меняется на ldquoИЛИrdquo (и наоборот) Доказать законы де Моргана можно с помощью та-блиц истинности

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

A B Csdot sdot + A B Csdot sdot =(A A) B C B C+ sdot sdot = sdot Здесь мы сначала вынесли общий множитель двух слагаемых за скобки а затем примени-

ли закон исключения третьегоВ общем случае можно рекомендовать такую последовательность действий1 Заменить все ldquoнебазовыеrdquo операции (исключающее ИЛИ импликацию эквивалент-

ность и др) на их выражения через базовые операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo 2 Раскрыть отрицания сложных выражений по законам де Моргана так чтобы операции отрицания остались

только у отдельных переменных3 Используя вынесение общих множителей за скобки раскрытие скобок и другие законы алгебры логики упро-

стить выражение Пример

(A B)(A B)(A C)+ sdot + sdot + =(A B) A B (A C)+ sdot sdot sdot + =(A A B A) B (A C)sdot + sdot sdot sdot + == B A B (A C)sdot sdot sdot + = A B B (A C)sdot sdot sdot + = A B (A C)sdot sdot + = B A (A C)sdot sdot + = B Asdot

Здесь последовательно использованы закон де Моргана распределительный закон закон исключения третьего переместительный закон закон повторения снова переместительный закон и закон поглощения

Логические уравнения

Если приравнять два логических выражения мы получим уравнение Его решением будут значения переменных при которых уравнение превращается в тождество то есть значения левой и правой частей совпадают Например уравнение A B 1sdot = имеет единственное решение A B 1= = для остальных комбинаций значений переменных левая часть равна нулю В то же время уравнение A B 1+ = имеет три решения ( A 0= B 1= ) ( A 1= B 0= ) и A B 1= =

А де МорганИллюстрация с сайта

wwwyorkacuk

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 3: Inf 2010-12

3 12 2010 ИНФорматИка

теМа ноМера

1 Логика и компьютер

В быту мы часто используем слова ldquoлогикаrdquo ldquoлогичноrdquo Логика (от древнегреческого λογικος mdash ldquoнаука о рассужденииrdquo) mdash это наука о том как правильно рассуждать делать выводы доказывать утверждения

В естественном языке рассуждения всегда связаны с конкретными предметами и утверждениями и поэтому исследовать все это многообразие достаточно сложно Древнегреческий философ Аристотель стал основоположником формальной логики которая отвлекается от конкретного содержания и изучает общие правила построения верных выводов из известной информации которая считается истинной Формальная логика изучает высказывания

Высказывание mdash это повествовательное предложение про которое можно одно-значно сказать что оно истинно или ложно

Используя это определение проверим можно ли считать высказываниями следую-щие предложения

1) Сейчас идет дождь2) Вчера жирафы улетели на север3) Красиво4) Который час5) В городе N живут более 2 миллионов человек6) Посмотрите на улицу7) У квадрата 10 сторон и все разные8) История mdash интересный предметЗдесь высказываниями являются только предложения 1 2 и 7 остальные не под-

ходят под определение Утверждения 3 и 4 mdash это не повествовательные предложения Предложение 5 станет высказыванием только в том случае если ldquoNrdquo заменить на на-звание конкретного города Предложение 6 mdash это призыв к действию а не утверждение Утверждение 8 кто-то считает истинным а кто-то ложным (нет однозначности) его мож-но более строго сформулировать в виде ldquoПо мнению N история mdash интересный предметrdquo Для того чтобы оно стало высказыванием нужно заменить ldquoNrdquo на имя человека

Логические основы компьютеров

КЮ ПоляковаП Шестаковеа еремин

На фото Памятник Аристотелю в городе Стагир (Греция) месте его рождения

4 ИНФорматИка 12 2010

Какая же связь между логикой и компьютерами В классической формальной логике высказывание может быть истинно или ложно третий вариант исключается1 Если обозначить истинное значение единицей а ложное mdash нулем то получится что формальная логика представляет собой правила выполнения операций с нулями и единицами то есть с двоичными кодами Как вы помните именно такой способ используется в компьютерах для кодирования всех видов информации Поэтому обработку информации оказалось возможным свести к выполнению логических опе-раций Важный шаг в этом направлении сделал английский математик Джордж Буль Он предложил применить для исследования логических высказываний математические методы Позже этот раздел математики получил название алгебра логики или булева алгебра

Алгебра логики mdash это математический аппарат с помощью которого записывают вычисляют упрощают и преобразовывают логические высказывания

Алгебра логики определяет правила выполнения операций с логическими величинами которые могут быть равны только 0 или 1 то есть с двоичными данными Используя эти правила можно строить элементы памяти и выполнять арифметические действия О том как это сделать вы узнаете в этой главе

Контрольные вопросы

1 Объясните значения слов ldquoлогикаrdquo ldquoформальная логикаrdquo ldquoалгебра логикиrdquo2 Чем отличается формальная логика от ldquoобычнойrdquo бытовой3 Что такое высказывание4 Можно ли считать высказываниями эти предложения

а) Не плачь девчонкаб) Почему я водовозв) Купите слоникаг) Клубника очень вкуснаяд) Сумма X и Y равна 36

5 Как вы думаете зачем в курсе информатики изучается логика

2 Логические операцииВысказывания бывают простые и сложные Простые высказывания нельзя разделить на более мелкие высказы-

вания например ldquoСейчас идет дождьrdquo или ldquoФорточка открытаrdquo Сложные (составные) высказывания строятся из простых с помощью логических связок (операций) ldquoИrdquo ldquoИЛИrdquo ldquoНЕrdquo ldquoеслиhellip тоrdquo ldquoтогда и только тогдаrdquo

В булевой алгебре высказывания обычно обозначаются латинскими буквами Таким образом мы уходим от кон-кретного содержания высказываний нас интересует только их истинность или ложность Например можно обозна-чить буквой A высказывание ldquoСейчас идет дождьrdquo а буквой B mdash высказывание ldquoФорточка открытаrdquo Из них строятся сложные высказывания

не A ldquoСейчас нет дождяrdquo не B ldquoФорточка закрытаrdquo A и B ldquoСейчас идет дождь и открыта форточкаrdquo A или B ldquoСейчас идет дождь или открыта форточкаrdquo если A то B ldquoЕсли сейчас идет дождь то форточка открытаrdquo

Кроме этих есть еще и другие высказывания которые можно получить из двух исходных С некоторыми из них мы также познакомимся

Операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo используются чаще других Оказывается с их помощью можно выразить любую логическую операцию поэтому эти три операции можно считать основными базовыми

Операция laquoНЕraquo

Операция ldquoНЕrdquo часто называется отрицанием или инверсией В алгебре логики всего два знака 0 и 1 поэтому логическое отрицание mdash это переход от одного значения к другому от 1 к 0 или наоборот Если высказывание A ис-тинно то ldquoне Аrdquo ложно и наоборот

Для обозначения операции ldquoНЕrdquo используются несколько способов Выражение ldquoне Аrdquo в алгебре логики записы-вается как A или notА в языках программирования Паскаль и Бейсик mdash как not A в языке Си mdash как A

Операцию ldquoНЕrdquo можно задать в виде таблицыA A

0 11 0

1 Существуют неклассические логические системы например трехзначная логика где кроме ldquoистинноrdquo и ldquoложноrdquo есть еще состояние ldquoне определеноrdquo

5 12 2010 ИНФорматИка

Эта таблица состоит из двух частей слева перечисляются все возможные значения исходного высказывания (их всего два mdash 0 и 1) а в последнем столбце записывают результат выполнения логической операции для каждого из этих вариантов Такая таблица называется таблицей истинности логической операции

Таблица истинности задает логическую функцию то есть правила преобразования входных логических значе-ний в выходные

Операция laquoИraquo

Пусть есть два высказывания A mdash ldquoСейчас идет дождьrdquo B mdash ldquoФорточка открытаrdquo Слож-ное высказывание ldquoA и Brdquo выглядит так ldquoСейчас идет дождь и форточка открытаrdquo Оно будет истинным (верным) в том и только в том случае когда оба высказывания A и B истинны одновременно

Для понимания операции ldquoИrdquo можно представить себе простую схему в которой для вклю-чения лампочки используются два выключателя соединенных последовательно (см рисунок) Чтобы лампочка загорелась нужно обязательно включить оба выключателя С другой стороны чтобы выключить лампочку достаточно выключить любой из них

Операция ldquoИrdquo (в отличие от ldquoНЕrdquo) выполняется с двумя логическими значениями кото-рые мы обозначим как A и B Результат этой операции в алгебре логики записывают как АsdotB А and B или А amp B В языках программирования используют обозначения ldquoA and Brdquo (Паскаль Бейсик) или ldquoA ampamp Brdquo (Си)

A B АsdotB0 0 0 01 0 1 02 1 0 03 1 1 1

В таблице истинности будет уже не один столбец с исходными данными а два Число строк также выросло с 2 до 4 поскольку для 2 бит мы получаем 4 разных комбинации 00 01 10 и 11 Эти строчки расположены в определен-ном порядке двоичные числа полученные соединением битов A и B идут в порядке возрастания (слева от таблицы они переведены в десятичную систему) Как следует из определения в последнем столбце будет всего одна единица для варианта A = B = 1

Легко проверить что этот результат можно получить ldquoобычнымrdquo умножением A на B поэтому операцию ldquoИrdquo на-зывают логическим умножением Существует и другое название этой операции mdash конъюнкция (от лат conjunctio mdash союз связь)

Операция laquoИЛИraquo

Высказывание ldquoСейчас идет дождь или форточка открытаrdquo истинно тогда когда истинно хотя бы одно из входящих в него высказываний или оба одно-временно В алгебре логики операция ldquoИЛИrdquo обозначается как А+B или А or B в языках программирования mdash ldquoA or Brdquo (Паскаль Бейсик) или ldquoA || Brdquo (Си)

A B А+B0 0 00 1 11 0 11 1 1

Можно представить себе схему с двумя выключателями соединенными параллельно (см рисунок) Чтобы лам-почка загорелась достаточно включить хотя бы один из выключателей Чтобы выключить лампочку необходимо обязательно выключить оба В таблице истинности будет только один ноль для варианта A = B = 0

Операцию ldquoИЛИrdquo называют логическим сложением потому что она похожа на обычное математическое сложение Единственное отличие mdash в последней строке таблицы истинности в математике 1 + 1 равно 2 а в алгебре логики mdash 1 Другое название операции ldquoИЛИrdquo mdash дизъюнкция (от лат disjunctio mdash разделение)

В учебнике для обозначения операций ldquoИrdquo и ldquoИЛИrdquo мы будем использовать знаки умножения и сложения (на-пример АsdotB и А+B) Это очень удобно потому что они привычны для нас и позволяют легко увидеть аналогию с обычной математикой

Доказано что операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo достаточно для того чтобы записать с их помощью любую логическую операцию которую только можно придумать Например для двух переменных существует всего 24 = 16 логических операций их таблицы истинности отличаются только последним столбцом в котором 4 двоичных значения (4 бита) Далее мы рассмотрим еще три распространенных операции и покажем как их можно представить через операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

sim220 В

sim220 В

6 ИНФорматИка 12 2010

Операция laquoисключающее ИЛИraquo

A B A Boplus0 0 00 1 11 0 11 1 0

Операция ldquoисключающее ИЛИrdquo отличается от обычного ldquoИЛИrdquo только тем что результат равен 0 если оба зна-чения равны 1 (последняя строчка в таблице истинности) То есть ее результат mdash истина в том и только в том случае когда два значения не равны

ldquoИсключающее ИЛИrdquo в алгебре логики обозначается знаком ldquooplusrdquo в языке Паскаль как xor (например ldquoA xor Brdquo) а в языке Си mdash знаком ldquo^rdquo (ldquoA ^ Brdquo) Эту операцию можно представить через базовые операции (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) следующим образом

A B A B A Boplus = sdot + sdot Пока мы не можем вывести эту формулу но можем доказать ее (или опровергнуть mdash доказать что она непра-

вильная) Для этого достаточно для всех возможных комбинаций A и B вычислить значения выражения стоящего в правой части равенства и сравнить его со значением А oplus B для тех же исходных данных Поскольку провести такие вычисления в уме достаточно сложно сначала вычислим значения A B A Bsdot и A Bsdot а потом уже A B A Bsdot + sdot В таблице истинности появятся дополнительные столбцы для промежуточных результатов

A B A B A Bsdot A Bsdot A B A Bsdot + sdot A Boplus0 0 1 1 0 0 0 00 1 1 0 1 0 1 11 0 0 1 0 1 1 11 1 0 0 0 0 0 0

Легко видеть что выражение A B A Bsdot + sdot совпадает с A Boplus для всех возможных вариантов Это значит что формула доказана

Операция ldquoисключающее ИЛИrdquo иначе называется разделительной дизъюнкцией (это значит ldquoодин или другой но не оба вместеrdquo) или сложением по модулю два Второе название связано с тем что ее результат равен остатку от деления ldquoобычнойrdquo суммы A + B на 2

A Boplus = (A + B) mod 2Здесь mod обозначает операцию взятия остатка от деленияОперация ldquoисключающее ИЛИrdquo обладает интересными свойствами По таблице истинности несложно прове-

рить что A 0 Aoplus = A 1 Aoplus = A A 0oplus =

Для доказательства этих равенств можно просто подставить в них A = 0 и A = 1 Теперь докажем что (A B) B Aoplus oplus = ()

Подставляя в левую часть B = 0 получим (A 0) 0 A 0 Aoplus oplus = oplus = Аналогично для B = 1 имеем (A 1) 1 A 1 Aoplus oplus = oplus = Это означает что формула () справедлива для любых значений B Отсюда следует важный вывод если два раза при-менить операцию ldquoисключающее ИЛИrdquo с одним и тем же B мы восстановим исходное значение В этом смысле ldquoисключающее ИЛИrdquo mdash обратимая операция (кроме нее обратима также операция ldquoНЕrdquo mdash если применить ее дважды мы вернемся к исходному значению)

Формула () верна не только для высказываний но и для чисел состоящих из нескольких двоичных разрядов Что-бы зашифровать данные надо применить операцию ldquoисключающее ИЛИrdquo с некоторым числом (кодом) отдельно для каждого разряда Для расшифровки еще раз применяется ldquoисключающее ИЛИrdquo с тем же ключом Нужно отме-тить что такой метод шифрования очень нестойкий для больших текстов его легко раскрыть частотным анализом

Импликация

A B A Brarr

0 0 10 1 11 0 01 1 1

Мы часто используем логическую связку ldquoесли hellip тоrdquo например ldquoЕсли пойдет дождь то я надену плащrdquo или ldquoЕсли все стороны прямоугольника равны то это квадратrdquo В логике эта связка называется импликацией2 (следованием) и обозначается стрелкой A Brarr (ldquoесли A то Brdquo ldquoиз A следует Brdquo)

2 От лат implicatio mdash сплетение тесная связь

7 12 2010 ИНФорматИка

Разобраться с импликацией будет легче если мы рассмотрим конкретное высказывание например такое ldquoЕсли хорошо работаешь то получаешь большую зарплатуrdquo Обозначим буквами два простых высказывания A mdash ldquoхорошо работаешьrdquo и B mdash ldquoполучаешь большую зарплатуrdquo Понятно что если высказывание A Brarr истинно то все кто хоро-шо работают (A = 1) должны получать большую зарплату (B = 1) Если же кто-то работает хорошо (A = 1) а получает мало (B = 0) то высказывание A Brarr ложно

Лодыри и бездельники (A = 0) могут получать как маленькую (B = 0) так и большую зарплату (B = 1) это не нарушает справедливость высказывания A Brarr Иногда определяя импликацию говорят так из истины следует истина а из лжи mdash что угодно Это значит что при ложном высказывании A высказывание B может быть как ложно так и истинно

Нужно обратить внимание на разницу между высказываниями вида ldquoесли A то Brdquo в обычной жизни и в алгебре логики В быту мы чаще всего имеем в виду что существует причинно-следственная связь между A и B то есть имен-но A вызывает B Алгебра логики не устанавливает взаимосвязь явлений истинность высказывания A Brarr говорит только о возможности такой связи Например с точки зрения алгебры логики может быть истинным высказывание ldquoесли Вася mdash студент то Петя mdash лыжникrdquo

Импликация чаще всего используется при решении логических задач Например условие ldquoесли A то Brdquo можно записать в виде A B 1rarr =

Для импликации (в отличие от других изученных операций с двумя переменными) не действует переместитель-ный закон если в записи A Brarr поменять местами A и B то результат изменится A B B Ararr ne rarr Внешне это видно по стрелке которая указывает ldquoнаправлениеrdquo

Импликацию можно заменить на выражение использующее только базовые операции (здесь mdash только ldquoНЕrdquo и ldquoИЛИrdquo)

A B A Brarr = + Доказать это равенство вы уже можете самостоятельно

Эквивалентность

A B A Bharr0 0 10 1 01 0 01 1 1

Эквивалентность (также эквиваленция равносильность) mdash это логическая операция которая соответствует связке ldquoтогда и только тогдаrdquo Высказывание A Bharr истинно в том и только в том случае когда A = B (см таблицу истинности)

Возможно вы заметили что эквивалентность mdash это обратная операция для ldquoисключающего ИЛИrdquo (проверьте по таблицам истинности) то есть

A B A Bharr = oplus Здесь черта сверху охватывающая все выражение в правой части равенства означает отрицание (инверсию) ко-

торое применяется к результату вычисления выражения A Boplus а не к отдельным высказываниям Можно заменить эквивалентность выражением которое включает только базовые логические операции

A B A B A Bharr = sdot + sdot Эту формулу вы можете доказать (или опровергнуть) самостоятельно

Другие логические операции

Мы уже говорили что существуют и другие логические операции Таблицы истинности операций с двумя переменными содержат 4 строки и отличаются только значением последнего столбца Поэтому любая новая комбинация нулей и единиц в этом столбце дает новую логическую операцию (логическую функцию) Всего их очевидно столько сколько существует четырехразрядных двоичных чисел то есть 16 = 24 Из тех что мы еще не рассматривали наиболее интерес-ны две mdash штрих Шеффера (ldquoИndashНЕrdquo англ nand = ldquonot andrdquo)

A|B A B= sdot и стрелка Пирса (ldquoИЛИndashНЕrdquo англ nor = ldquonot orrdquo)

A B A Bdarr = + Особенность этих операций состоит в том что с помощью любой одной из них можно записать произвольную

логическую операцию Например операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (базовый набор) выражаются через штрих Шеф-фера так

A A|A= A B A|B A|B)| A|B)sdot = =( ( A B A|B A|A)| B|B)+ = =( (

Эти формулы можно доказать через таблицы истинности

Штрих Шеффера Стрелка Пирса

A B A|B A B A Bdarr

0 0 1 0 0 10 1 1 0 1 01 0 1 1 0 01 1 0 1 1 0

8 ИНФорматИка 10 2010

Логические выражения

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

А mdash ldquoПервый двигатель вышел из строяrdquoB mdash ldquoВторой двигатель вышел из строяrdquoC mdash ldquoТретий двигатель вышел из строяrdquoX mdash ldquoАварийная ситуацияrdquoТогда логическое высказывание X можно записать в виде формулы

X =(AmiddotB) + (AmiddotC) + (BmiddotC) ()Таким образом мы выполнили формализацию

Формализация mdash это переход от конкретного содержания к формальной записи с помощью некоторого языка

В логических выражениях операции выполняются в следующем порядке1) действия в скобках2) отрицание (ldquoНЕrdquo)3) логическое умножение (ldquoИrdquo)4) логическое сложение (ldquoИЛИrdquo) и ldquoисключающее ИЛИrdquo5) импликация6) эквивалентностьТакой порядок означает что все скобки в выражении () для X можно

убрать Порядок вычисления выражения можно так же как и для ариф-метических выражений определить с помощью дерева (см рисунок) Вы-числение начинается с листьев корень mdash это самая последняя операция

Здесь каждая операция выполняется с двумя значениями Такие операции называются бинарными (от лат bis mdash дважды) или двуместными

Операции которые выполняются над одной величиной называют унарными (от лат uno mdash один) или одномест-ными Пример унарной логической операции mdash это отрицание (операция ldquoНЕrdquo)

Любую формулу можно задать с помощью таблицы истинности которая показывает чему равно значение логического выражения при всех возможных комбинациях значений исходных переменных Сложные выражения удобно разбить на несколько более простых сначала вычислить значения этих промежуточных величин а затем mdash окончательный результат

A B C AmiddotB AmiddotC BmiddotC X0 0 0 0 0 0 00 0 1 0 0 0 00 1 0 0 0 0 00 1 1 0 0 1 11 0 0 0 0 0 01 0 1 0 1 0 11 1 0 1 0 0 11 1 1 1 1 1 1

Рассмотрим формулу () Выражение в правой части зависит от трех переменных поэтому существует 23 = 8 комбинаций их значений Таблица истинности выглядит так как показано выше По ней видно что при некоторых значениях переменных значение X истинно а при некоторых mdash ложно Такие выражения называют вычислимыми

Высказывание ldquoВася mdash школьник или он не учится в школеrdquo всегда истинно (для любого Васи) Оно может быть записано в виде логического выражения A A+ Выражение истинное при любых значениях переменных называет-ся тождественно истинным или тавтологией

Высказывание ldquoсегодня безветрие и дует сильный ветерrdquo никогда не может быть истинным Соответствующее логическое выражение A Asdot всегда ложно оно называется тождественно ложным или противоречием

Если два выражения принимают одинаковые значения при всех значениях переменных они называются равно-сильными или тождественно равными Например равносильны выражения A Brarr и A B+ Равносильные выраже-ния определяют одну и ту же логическую функцию то есть при одинаковых исходных данных приводят к одинако-вым результатам

Некоторые задачи

Рассмотрим ряд задач в которых требуется исследовать логическое выражениеЗадача 1 Каково наибольшее целое число X при котором истинно высказывание

A (90 X ) (80 (X 2))2 2= lt rarr gt +

+

+

bull bull

bull

A A

C

C

B

B

9 12 2010 ИНФорматИка

Сначала удобно заменить импликацию по формуле A B A Brarr = + Отрицание для высказывания 90 X2lt запишется как 90 X2ge поэтому

A (90 X )2= ge или (80 (X 2))2gt + В этой задаче нас интересуют только целые числа Поэтому условие 90 X2ge можно заменить на X 9le или

9 Xminus le le9 а условие 80 (X 2)2gt + mdash на X 2 8+ le или -10 X 6le le Таким образом требуется выбрать наибольшее целое число которое входит в один или в другой промежуток

x

9

6

ndash9ndash10

Это число mdash 9Задача 2 A B и С mdash целые числа для которых истинно высказывание

X (A B)((A B) (B C))((B A) (C B))= = sdot gt rarr gt sdot gt rarr gtЧему равно В если A = 27 и C = 25Это сложное высказывание состоит из трех простых

(A B)= (A B) (B C)gt rarr gt (B A) (C B)gt rarr gtОни связаны операцией ldquoИrdquo то есть должны выполняться одновременноИз (A B) 1= = сразу следует что A Bne Предположим что A Bgt тогда из второго условия получаем 1 (B C)rarr gt Это

выражение может быть истинно тогда и только тогда когда (B C) 1gt = поэтому имеем A B Cgt gt этому условию со-ответствует только число 26

На всякий случай проверим и вариант A Blt тогда из второго условия получаем 0 (B C)rarr gt это выражение ис-тинно при любом B Теперь проверяем третье условие получаем 1 (C B) 1rarr gt = это выражение может быть истин-но тогда и только тогда когда C Bgt и тут мы получили противоречие потому что нет такого числа B для которого C B Agt gt Таким образом правильный ответ mdash 26

Контрольные вопросы

1 Даны два высказывания A mdash ldquoВ Африке водятся жирафыrdquo и B mdash ldquoВ Мурманске идет снегrdquo Постройте из них различные сложные высказывания

2 Дано высказывание ldquoВинни-Пух любит мед и дверь в дом открытаrdquo Как бы вы сформулировали отрицание этого высказывания

3 Что такое таблица истинности4 Почему в таблице истинности для операции ldquoНЕrdquo две строки а для других изученных операций mdash четыре

Сколько строчек в таблице истинности выражения с тремя переменными с четырьмя с пятью5 В каком порядке обычно записываются значения переменных в таблице истинности6 Когда истинно высказывание ldquoA и Brdquo ldquoА или Brdquo7 Какие электрические схемы можно использовать для иллюстрации операций ldquoИrdquo и ldquoИЛИrdquo8 Какие знаки применяют для обозначения операций ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo9 Почему операция ldquoИrdquo называется логическим умножением а ldquoИЛИrdquo mdash логическим сложением10 В чем отличие ldquoобычногоrdquo и логического сложения11 Сколько существует различных логических операций с двумя переменными С тремя переменными12 Чем отличается операция ldquoисключающее ИЛИrdquo от ldquoИЛИrdquo13 Почему операция ldquoисключающее ИЛИrdquo называется сложением по модулю 214 Как записать выражение A Boplus с помощью базового набора операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo)15 Как можно доказать или опровергнуть логическую формулу16 Какими интересными свойствами обладает операция ldquoисключающее ИЛИrdquo17 Что значит выражение ldquoобратимая операцияrdquo Какие изученные логические операции являются обратимыми18 Какое свойство операции ldquoисключающее ИЛИrdquo позволяет использовать ее для простейшего шифрования19 Чем отличается смысл высказывания ldquoесли A то Brdquo в обычной речи и в математической логике20 Запишите в виде формулы высказывание ldquoесли утюг горячий то лоб холодныйrdquo21 Запишите в виде формулы высказывание ldquoневерно что если утюг горячий то лоб холодныйrdquo Можно ли в этом

случае сразу сказать какой утюг и какой лоб22 Как выразить импликацию через операции ldquoНЕrdquo и ldquoИЛИrdquo Докажите эту формулу23 Как выразить эквивалентность через операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo Докажите эту формулу24 Чем интересны операции ldquoштрих Шеффераrdquo и ldquoстрелка Пирсаrdquo25 Докажите формулы позволяющие представить базовые логические операции через штрих Шеффера Попро-

буйте построить и доказать аналогичные формулы для операции ldquoстрелка Пирсаrdquo26 Что такое формализация27 В каком порядке выполняются действия в логических выражениях 28 Что можно сделать для того чтобы изменить ldquoестественныйrdquo порядок действий

10 ИНФорматИка 12 2010

29 Какие операции называются бинарными и унарными Приведите примеры унарных и бинарных операций в математике

30 Поясните разницу между терминами ldquoлогическое выражениеrdquo и ldquoлогическая функцияrdquo31 Можно ли сказать что таблица истинности однозначно определяета) логическое выражениеб) логическую функцию32 Что такое вычислимое логическое выражение 33 Что такое тавтология противоречие Приведите примеры34 Что такое равносильные выражения

Задачи

1 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) A B A Bsdot + sdot ж) A C B Csdot + sdotб) A B A B A Bsdot + sdot + sdot з) ( ) ( )A C B C+ + +в) ( ) ( ) ( )A B A B A B+ + + sdot + и) ( ) ( )A C B Csdot sdot sdotг) A B B C C Asdot + sdot + sdot к) A C B C C A Bsdot + sdot + sdot +( )) ( )A C B C C A Bsdot + sdot + sdot +( )) ( )

д) A B C A B C B Csdot sdot + sdot sdot + sdot л) A C B C B A Csdot + + + sdot sdot( ( )) ( )е) A B C A C Bsdot sdot + sdot +( ) ( )

2 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) ( ) ( )A B A Brarr + rarr е) ( ) ( )A B A Crarr rarr rarrб) ( ) ( )A B A Brarr sdot rarr ж) ( )A B B Csdot rarr +

в) ( ) ( )A B A Bsdot rarr + з) ( ) ( )A B A Crarr rarr rarrг) ( ) ( )A B A B+ rarr sdot и) ( ) ( )A B A Bharr + harr

д) ( ) ( ) ( )A B A C A Crarr sdot + sdot rarr к) ( ) ( ) ( )A B A C B Charr + harr + harr3 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z

Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а б)

X Y Z F

1 1 1 11 1 0 11 0 0 1

4 Для предыдущего задания определите сколько различных логических функций соответствует заданной частич-ной таблице истинности (Ответ 32)

5 Задано 5 строк таблицы истинности некоторого логического выражения с тремя переменными Сколько раз-личных логических функций ей соответствуют (Ответ 8)

6 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет б г)

X Y Z F

0 1 0 01 1 0 10 1 1 0

7 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а в)

X Y Z F

1 0 0 10 0 0 11 1 1 0

8 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ а)

а) X Y Z+ +б) X Y Z+ +в) X Y Z+ +г) X Y Z+ +

а) X Y Z+ +б) X Y Zsdot sdotв) X Y Zsdot sdotг) X Y Z+ sdot

а) X (Y Z)rarr +б) X Y Zsdot sdotв) X Y Z+ +г) X Y Z+ +

11 12 2010 ИНФорматИка

X Y Z F

1 0 0 10 0 0 01 1 1 0

9 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ б г)

X Y Z F

0 0 0 00 1 1 11 0 0 1

10 Определите значение логического выражения (X 2) (X 3)gt rarr gt для X = 1 2 3 4 (Ответ 1 1 0 1)11 Определите значение логического выражения

((X 5) (X 3))((X 2) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 1 0 0)12 Определите значение логического выражения

((X 3) (X 3)) (X 1)gt + lt rarr lt для X = 1 2 3 4(Ответ 0 0 1 0)13 Определите значение логического выражения

((X 4) (X 3))((X 3) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 0 0 1)14 Определите значение логического выражения

(X(X ndash 8) gt 2X ndash 25)(X(X 8) 2 X-25) (X 7)minus gt rarr gt для X = 4 5 6 7(Ответ 0 1 0 0)15 Найдите все целые значения X при которых логическое выражение

(X 2) (X 5)gt rarr gt ложно(Ответ 3 4 5)16 Найдите все целые значения X при которых логическое выражение

((X 0) (X 4)) (X 4)gt + gt rarr gt ложно (Ответ 1 2 3 4)17 Автопилот может работать если исправен главный бортовой компьютер или два вспомогательных Выполните формали-

зацию и запишите логические формулы для высказываний ldquoавтопилот работоспособенrdquo и ldquoавтопилот неработоспособенrdquo18 Каково наибольшее целое положительное число X при котором истинно высказывание

(X(X 3) X 9) (X(X 2) X 11)2 2+ gt + rarr + le + (Ответ 5)19 Каково наибольшее целое положительное число X при котором истинно высказывание

(121 X ) (X X 5)2lt rarr lt + (Ответ 11)20 Каково наибольшее целое положительное число X при котором ложно высказывание

(X(X 6) 9 0) (X 45)2+ + gt rarr gt (Ответ 6)21 Каково наибольшее целое положительное число X при котором истинно высказывание

(X -1 100) (X(X-1) 100)2 gt rarr lt (Ответ 10)22 Каково наибольшее целое положительное число X при котором ложно высказывание

(7X-3 75) (X(X-1) 65)lt rarr gt (Ответ 8)23 Известно что для чисел A B и C истинно высказывание

((C A) (C B))((C 1) A)((C 1) B)lt + lt sdot + lt sdot + lt а) Чему равно C если A = 25 и B = 48б) Чему равно C если A = 45 и B = 18(Ответ 47 44)24 Известно что для чисел A B и C истинно высказывание

(A B)((B A) (2C A))((A B) (A 2C))= sdot lt rarr gt sdot lt rarr gt Чему равно A если C = 10 и B = 22(Ответ 21)

а) X Y Zsdot sdotб) X (Y Z)rarr +в) X Y Z+ +г) Y (X Z)rarr sdot

а) (X Y) Z+ rarr

б) (X Y) Z+ rarrв) X (Y Z)+ rarrг) X Y Z+ sdot

12 ИНФорматИка 12 2010

3 Диаграммы

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

На такой диаграмме каждой переменной соответствует круг внутри которого она равна единице а вне его mdash нулю Круги пересекаются каждый с каждым Области в которых рассматриваемое логическое выражение истинно закрашиваются каким-либо цветом Ниже приведены диаграммы для простейших операций с одной и двумя пере-менными Серым цветом залиты области где рассматриваемое выражение равно единице

A A Bsdot A B+ A Brarr

A

A

В

A

В

A

В

Такие диаграммы часто используются при работе с множествами операция ldquoИrdquo соответствует пересечению двух множеств а ldquoИЛИrdquo mdash объединению

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

С

2

18

4

756

3

Для того чтобы найти выражение для объединения двух или нескольких областей надо сложить (используя логи-ческое сложение mdash операцию ldquoИЛИrdquo) выражения для всех составляющих Например выражение для объединения областей 3 и 4 имеет вид

3 + 4 A B Csdot sdot + A B Csdot sdot С другой стороны можно заметить что справедлива формула3 + 4 B Csdot Это означает что логические выражения в некоторых случаях можно упростить Как это делается вы узнаете в

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

множества ссылок полученных от поисковой системы в ответ на какой-то запрос Рассмотрим такую задачу

Известно количество ссылок которые находит поисковый сервер по следующим запросам (здесь символ ldquoamprdquo обозначает операцию ldquoИrdquo а ldquo|rdquo mdash операцию ldquoИЛИrdquo)

собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросу(кошки|собаки)ampлемуры

Обозначим буквами С К и Л высказывания ldquoключевое слово mdash собакиrdquo ldquoключевое слово mdash кошкиrdquo и ldquoключевое слово mdash лемурыrdquo Построим диаграмму с тремя перемен-ными и выделим интересующую область которая соответствует запросу

(кошки|собаки)ampлемурыНа рисунке эта область закрашена желтым цветомВ общем виде задача очень сложна Попробуем найти какое-нибудь упрощающее усло-

вие Например выделим три условия

1 A B Csdot sdot2 A B Csdot sdot3 A B Csdot sdot4 A B Csdot sdot

5 A B Csdot sdot6 A B Csdot sdot7 A B Csdot sdot8 A B Csdot sdot

КС

Л

13 12 2010 ИНФорматИка

собаки 200кошки 250кошки|собаки 450

Это означает что область ldquoкошки ИЛИ собакиrdquo равна сумме областей ldquoкошкиrdquo и ldquoсобакиrdquo то есть эти области не пересекаются Таким образом в нашем случае диаграмма выглядит так

КC

Л

1 2

Области 1 (собакиampлемуры) и 2 (кошкиampлемуры) нам известны они составляют соответственно 40 и 50 ссылок поэтому по запросу (кошки|собаки)ampлемуры поисковый сервер выдаст 40 + 50 = 90 ссылок

Задачи

1 Используя диаграмму с тремя переменными запишите логические выражения для объединения об-ластей 2 + 5 3 + 6 4 + 7 6 + 7 5 + 6 5 + 8 7 + 8 Для каждой сложной области найдите два эквивалентных выражения

2 Известно количество ссылок которые находит поисковый сервер по следующим запросам собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 810)3 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 250кошки 200лемуры 500собакиampлемуры 0собакиampкошки 20кошкиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 920)4 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 120кошки 270лемуры 100кошки|собаки 390кошкиampлемуры 20собакиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 460)

4 Упрощение логических выражений

Законы алгебры логики

Для упрощения логических выражений используют законы алгебры логики Они формулируются для базовых логических операций mdash ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

Закон двойного отрицания означает что операция ldquoНЕrdquo обратима если применить ее два раза логическое значе-ние не изменится Закон исключения третьего основан на том что любое логическое выражение либо истинно либо ложно (ldquoтретьего не даноrdquo) Поэтому если A 1= то A 0= (и наоборот) так что произведение этих величин всегда равно нулю а сумма mdash единице

14 ИНФорматИка 12 2010

Операции с константами и закон повторения легко проверяются по таблицам истинности операций ldquoИrdquo и ldquoИЛИrdquo Переместительный и сочетательный законы выглядят вполне привычно так же как и в математике Почти везде ldquoработаетrdquo аналогия с обычной алгеброй нужно только помнить что в логике 1 + 1 = 1 а не 2

Закон для ldquoИrdquo для ldquoИЛИrdquoдвойного отрицания A A=

исключения третьего A A 0sdot = A A 1+ =

операции с константами A 1 Asdot = A 0 0sdot = A 1 1+ = A 0 A+ =

повторения A A Asdot = A A A+ =

переместительный A B B Asdot = sdot A B B A+ = +

сочетательный A (B C) (A B) Csdot sdot = sdot sdot A (B C) (A B) C+ + = + +

распределительный A B C (A B)(A C)+ sdot = + sdot + A (B C) A B A Csdot + = sdot + sdot

поглощения A A B A+ sdot = A (A B) Asdot + =

законы де Моргана A B A Bsdot = + A B A Bsdot = +

Распределительный закон для ldquoИЛИrdquo mdash это обычное раскрытие скобок А вот для операции ldquoИrdquo мы видим не-знакомое выражение в математике это равенство неверно Доказательство можно начать с правой части раскрыв скобки

(A B)(A C) A A A C B A B C+ sdot + = sdot + sdot + sdot + sdot

Дальше используем закон повторения ( A A Asdot = ) и заметим что A A C A (1 C) A 1 A+ sdot = sdot + = sdot =

Аналогично доказываем что A B A A (1 B) A+ sdot = sdot + = таким образом(A B)(A C) A B C+ sdot + = + sdot

Равенство доказано Попутно мы доказали также и закон поглощения для операции ldquoИrdquo (для ldquoИЛИrdquo вы можете сделать это самостоятельно) Отметим что из распределительного закона следует полезная формула

A A B (A A)(A B) A B+ sdot = + sdot + = + Правила позволяющие раскрывать отрицание сложных выражений названы в честь

шотландского математика и логика де Моргана Обратите внимание что при этом не просто ldquoобщееrdquo отрицание переходит на отдельные выражения но и операция ldquoИrdquo за-меняется на ldquoИЛИrdquo (и наоборот) Доказать законы де Моргана можно с помощью та-блиц истинности

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

A B Csdot sdot + A B Csdot sdot =(A A) B C B C+ sdot sdot = sdot Здесь мы сначала вынесли общий множитель двух слагаемых за скобки а затем примени-

ли закон исключения третьегоВ общем случае можно рекомендовать такую последовательность действий1 Заменить все ldquoнебазовыеrdquo операции (исключающее ИЛИ импликацию эквивалент-

ность и др) на их выражения через базовые операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo 2 Раскрыть отрицания сложных выражений по законам де Моргана так чтобы операции отрицания остались

только у отдельных переменных3 Используя вынесение общих множителей за скобки раскрытие скобок и другие законы алгебры логики упро-

стить выражение Пример

(A B)(A B)(A C)+ sdot + sdot + =(A B) A B (A C)+ sdot sdot sdot + =(A A B A) B (A C)sdot + sdot sdot sdot + == B A B (A C)sdot sdot sdot + = A B B (A C)sdot sdot sdot + = A B (A C)sdot sdot + = B A (A C)sdot sdot + = B Asdot

Здесь последовательно использованы закон де Моргана распределительный закон закон исключения третьего переместительный закон закон повторения снова переместительный закон и закон поглощения

Логические уравнения

Если приравнять два логических выражения мы получим уравнение Его решением будут значения переменных при которых уравнение превращается в тождество то есть значения левой и правой частей совпадают Например уравнение A B 1sdot = имеет единственное решение A B 1= = для остальных комбинаций значений переменных левая часть равна нулю В то же время уравнение A B 1+ = имеет три решения ( A 0= B 1= ) ( A 1= B 0= ) и A B 1= =

А де МорганИллюстрация с сайта

wwwyorkacuk

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 4: Inf 2010-12

4 ИНФорматИка 12 2010

Какая же связь между логикой и компьютерами В классической формальной логике высказывание может быть истинно или ложно третий вариант исключается1 Если обозначить истинное значение единицей а ложное mdash нулем то получится что формальная логика представляет собой правила выполнения операций с нулями и единицами то есть с двоичными кодами Как вы помните именно такой способ используется в компьютерах для кодирования всех видов информации Поэтому обработку информации оказалось возможным свести к выполнению логических опе-раций Важный шаг в этом направлении сделал английский математик Джордж Буль Он предложил применить для исследования логических высказываний математические методы Позже этот раздел математики получил название алгебра логики или булева алгебра

Алгебра логики mdash это математический аппарат с помощью которого записывают вычисляют упрощают и преобразовывают логические высказывания

Алгебра логики определяет правила выполнения операций с логическими величинами которые могут быть равны только 0 или 1 то есть с двоичными данными Используя эти правила можно строить элементы памяти и выполнять арифметические действия О том как это сделать вы узнаете в этой главе

Контрольные вопросы

1 Объясните значения слов ldquoлогикаrdquo ldquoформальная логикаrdquo ldquoалгебра логикиrdquo2 Чем отличается формальная логика от ldquoобычнойrdquo бытовой3 Что такое высказывание4 Можно ли считать высказываниями эти предложения

а) Не плачь девчонкаб) Почему я водовозв) Купите слоникаг) Клубника очень вкуснаяд) Сумма X и Y равна 36

5 Как вы думаете зачем в курсе информатики изучается логика

2 Логические операцииВысказывания бывают простые и сложные Простые высказывания нельзя разделить на более мелкие высказы-

вания например ldquoСейчас идет дождьrdquo или ldquoФорточка открытаrdquo Сложные (составные) высказывания строятся из простых с помощью логических связок (операций) ldquoИrdquo ldquoИЛИrdquo ldquoНЕrdquo ldquoеслиhellip тоrdquo ldquoтогда и только тогдаrdquo

В булевой алгебре высказывания обычно обозначаются латинскими буквами Таким образом мы уходим от кон-кретного содержания высказываний нас интересует только их истинность или ложность Например можно обозна-чить буквой A высказывание ldquoСейчас идет дождьrdquo а буквой B mdash высказывание ldquoФорточка открытаrdquo Из них строятся сложные высказывания

не A ldquoСейчас нет дождяrdquo не B ldquoФорточка закрытаrdquo A и B ldquoСейчас идет дождь и открыта форточкаrdquo A или B ldquoСейчас идет дождь или открыта форточкаrdquo если A то B ldquoЕсли сейчас идет дождь то форточка открытаrdquo

Кроме этих есть еще и другие высказывания которые можно получить из двух исходных С некоторыми из них мы также познакомимся

Операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo используются чаще других Оказывается с их помощью можно выразить любую логическую операцию поэтому эти три операции можно считать основными базовыми

Операция laquoНЕraquo

Операция ldquoНЕrdquo часто называется отрицанием или инверсией В алгебре логики всего два знака 0 и 1 поэтому логическое отрицание mdash это переход от одного значения к другому от 1 к 0 или наоборот Если высказывание A ис-тинно то ldquoне Аrdquo ложно и наоборот

Для обозначения операции ldquoНЕrdquo используются несколько способов Выражение ldquoне Аrdquo в алгебре логики записы-вается как A или notА в языках программирования Паскаль и Бейсик mdash как not A в языке Си mdash как A

Операцию ldquoНЕrdquo можно задать в виде таблицыA A

0 11 0

1 Существуют неклассические логические системы например трехзначная логика где кроме ldquoистинноrdquo и ldquoложноrdquo есть еще состояние ldquoне определеноrdquo

5 12 2010 ИНФорматИка

Эта таблица состоит из двух частей слева перечисляются все возможные значения исходного высказывания (их всего два mdash 0 и 1) а в последнем столбце записывают результат выполнения логической операции для каждого из этих вариантов Такая таблица называется таблицей истинности логической операции

Таблица истинности задает логическую функцию то есть правила преобразования входных логических значе-ний в выходные

Операция laquoИraquo

Пусть есть два высказывания A mdash ldquoСейчас идет дождьrdquo B mdash ldquoФорточка открытаrdquo Слож-ное высказывание ldquoA и Brdquo выглядит так ldquoСейчас идет дождь и форточка открытаrdquo Оно будет истинным (верным) в том и только в том случае когда оба высказывания A и B истинны одновременно

Для понимания операции ldquoИrdquo можно представить себе простую схему в которой для вклю-чения лампочки используются два выключателя соединенных последовательно (см рисунок) Чтобы лампочка загорелась нужно обязательно включить оба выключателя С другой стороны чтобы выключить лампочку достаточно выключить любой из них

Операция ldquoИrdquo (в отличие от ldquoНЕrdquo) выполняется с двумя логическими значениями кото-рые мы обозначим как A и B Результат этой операции в алгебре логики записывают как АsdotB А and B или А amp B В языках программирования используют обозначения ldquoA and Brdquo (Паскаль Бейсик) или ldquoA ampamp Brdquo (Си)

A B АsdotB0 0 0 01 0 1 02 1 0 03 1 1 1

В таблице истинности будет уже не один столбец с исходными данными а два Число строк также выросло с 2 до 4 поскольку для 2 бит мы получаем 4 разных комбинации 00 01 10 и 11 Эти строчки расположены в определен-ном порядке двоичные числа полученные соединением битов A и B идут в порядке возрастания (слева от таблицы они переведены в десятичную систему) Как следует из определения в последнем столбце будет всего одна единица для варианта A = B = 1

Легко проверить что этот результат можно получить ldquoобычнымrdquo умножением A на B поэтому операцию ldquoИrdquo на-зывают логическим умножением Существует и другое название этой операции mdash конъюнкция (от лат conjunctio mdash союз связь)

Операция laquoИЛИraquo

Высказывание ldquoСейчас идет дождь или форточка открытаrdquo истинно тогда когда истинно хотя бы одно из входящих в него высказываний или оба одно-временно В алгебре логики операция ldquoИЛИrdquo обозначается как А+B или А or B в языках программирования mdash ldquoA or Brdquo (Паскаль Бейсик) или ldquoA || Brdquo (Си)

A B А+B0 0 00 1 11 0 11 1 1

Можно представить себе схему с двумя выключателями соединенными параллельно (см рисунок) Чтобы лам-почка загорелась достаточно включить хотя бы один из выключателей Чтобы выключить лампочку необходимо обязательно выключить оба В таблице истинности будет только один ноль для варианта A = B = 0

Операцию ldquoИЛИrdquo называют логическим сложением потому что она похожа на обычное математическое сложение Единственное отличие mdash в последней строке таблицы истинности в математике 1 + 1 равно 2 а в алгебре логики mdash 1 Другое название операции ldquoИЛИrdquo mdash дизъюнкция (от лат disjunctio mdash разделение)

В учебнике для обозначения операций ldquoИrdquo и ldquoИЛИrdquo мы будем использовать знаки умножения и сложения (на-пример АsdotB и А+B) Это очень удобно потому что они привычны для нас и позволяют легко увидеть аналогию с обычной математикой

Доказано что операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo достаточно для того чтобы записать с их помощью любую логическую операцию которую только можно придумать Например для двух переменных существует всего 24 = 16 логических операций их таблицы истинности отличаются только последним столбцом в котором 4 двоичных значения (4 бита) Далее мы рассмотрим еще три распространенных операции и покажем как их можно представить через операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

sim220 В

sim220 В

6 ИНФорматИка 12 2010

Операция laquoисключающее ИЛИraquo

A B A Boplus0 0 00 1 11 0 11 1 0

Операция ldquoисключающее ИЛИrdquo отличается от обычного ldquoИЛИrdquo только тем что результат равен 0 если оба зна-чения равны 1 (последняя строчка в таблице истинности) То есть ее результат mdash истина в том и только в том случае когда два значения не равны

ldquoИсключающее ИЛИrdquo в алгебре логики обозначается знаком ldquooplusrdquo в языке Паскаль как xor (например ldquoA xor Brdquo) а в языке Си mdash знаком ldquo^rdquo (ldquoA ^ Brdquo) Эту операцию можно представить через базовые операции (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) следующим образом

A B A B A Boplus = sdot + sdot Пока мы не можем вывести эту формулу но можем доказать ее (или опровергнуть mdash доказать что она непра-

вильная) Для этого достаточно для всех возможных комбинаций A и B вычислить значения выражения стоящего в правой части равенства и сравнить его со значением А oplus B для тех же исходных данных Поскольку провести такие вычисления в уме достаточно сложно сначала вычислим значения A B A Bsdot и A Bsdot а потом уже A B A Bsdot + sdot В таблице истинности появятся дополнительные столбцы для промежуточных результатов

A B A B A Bsdot A Bsdot A B A Bsdot + sdot A Boplus0 0 1 1 0 0 0 00 1 1 0 1 0 1 11 0 0 1 0 1 1 11 1 0 0 0 0 0 0

Легко видеть что выражение A B A Bsdot + sdot совпадает с A Boplus для всех возможных вариантов Это значит что формула доказана

Операция ldquoисключающее ИЛИrdquo иначе называется разделительной дизъюнкцией (это значит ldquoодин или другой но не оба вместеrdquo) или сложением по модулю два Второе название связано с тем что ее результат равен остатку от деления ldquoобычнойrdquo суммы A + B на 2

A Boplus = (A + B) mod 2Здесь mod обозначает операцию взятия остатка от деленияОперация ldquoисключающее ИЛИrdquo обладает интересными свойствами По таблице истинности несложно прове-

рить что A 0 Aoplus = A 1 Aoplus = A A 0oplus =

Для доказательства этих равенств можно просто подставить в них A = 0 и A = 1 Теперь докажем что (A B) B Aoplus oplus = ()

Подставляя в левую часть B = 0 получим (A 0) 0 A 0 Aoplus oplus = oplus = Аналогично для B = 1 имеем (A 1) 1 A 1 Aoplus oplus = oplus = Это означает что формула () справедлива для любых значений B Отсюда следует важный вывод если два раза при-менить операцию ldquoисключающее ИЛИrdquo с одним и тем же B мы восстановим исходное значение В этом смысле ldquoисключающее ИЛИrdquo mdash обратимая операция (кроме нее обратима также операция ldquoНЕrdquo mdash если применить ее дважды мы вернемся к исходному значению)

Формула () верна не только для высказываний но и для чисел состоящих из нескольких двоичных разрядов Что-бы зашифровать данные надо применить операцию ldquoисключающее ИЛИrdquo с некоторым числом (кодом) отдельно для каждого разряда Для расшифровки еще раз применяется ldquoисключающее ИЛИrdquo с тем же ключом Нужно отме-тить что такой метод шифрования очень нестойкий для больших текстов его легко раскрыть частотным анализом

Импликация

A B A Brarr

0 0 10 1 11 0 01 1 1

Мы часто используем логическую связку ldquoесли hellip тоrdquo например ldquoЕсли пойдет дождь то я надену плащrdquo или ldquoЕсли все стороны прямоугольника равны то это квадратrdquo В логике эта связка называется импликацией2 (следованием) и обозначается стрелкой A Brarr (ldquoесли A то Brdquo ldquoиз A следует Brdquo)

2 От лат implicatio mdash сплетение тесная связь

7 12 2010 ИНФорматИка

Разобраться с импликацией будет легче если мы рассмотрим конкретное высказывание например такое ldquoЕсли хорошо работаешь то получаешь большую зарплатуrdquo Обозначим буквами два простых высказывания A mdash ldquoхорошо работаешьrdquo и B mdash ldquoполучаешь большую зарплатуrdquo Понятно что если высказывание A Brarr истинно то все кто хоро-шо работают (A = 1) должны получать большую зарплату (B = 1) Если же кто-то работает хорошо (A = 1) а получает мало (B = 0) то высказывание A Brarr ложно

Лодыри и бездельники (A = 0) могут получать как маленькую (B = 0) так и большую зарплату (B = 1) это не нарушает справедливость высказывания A Brarr Иногда определяя импликацию говорят так из истины следует истина а из лжи mdash что угодно Это значит что при ложном высказывании A высказывание B может быть как ложно так и истинно

Нужно обратить внимание на разницу между высказываниями вида ldquoесли A то Brdquo в обычной жизни и в алгебре логики В быту мы чаще всего имеем в виду что существует причинно-следственная связь между A и B то есть имен-но A вызывает B Алгебра логики не устанавливает взаимосвязь явлений истинность высказывания A Brarr говорит только о возможности такой связи Например с точки зрения алгебры логики может быть истинным высказывание ldquoесли Вася mdash студент то Петя mdash лыжникrdquo

Импликация чаще всего используется при решении логических задач Например условие ldquoесли A то Brdquo можно записать в виде A B 1rarr =

Для импликации (в отличие от других изученных операций с двумя переменными) не действует переместитель-ный закон если в записи A Brarr поменять местами A и B то результат изменится A B B Ararr ne rarr Внешне это видно по стрелке которая указывает ldquoнаправлениеrdquo

Импликацию можно заменить на выражение использующее только базовые операции (здесь mdash только ldquoНЕrdquo и ldquoИЛИrdquo)

A B A Brarr = + Доказать это равенство вы уже можете самостоятельно

Эквивалентность

A B A Bharr0 0 10 1 01 0 01 1 1

Эквивалентность (также эквиваленция равносильность) mdash это логическая операция которая соответствует связке ldquoтогда и только тогдаrdquo Высказывание A Bharr истинно в том и только в том случае когда A = B (см таблицу истинности)

Возможно вы заметили что эквивалентность mdash это обратная операция для ldquoисключающего ИЛИrdquo (проверьте по таблицам истинности) то есть

A B A Bharr = oplus Здесь черта сверху охватывающая все выражение в правой части равенства означает отрицание (инверсию) ко-

торое применяется к результату вычисления выражения A Boplus а не к отдельным высказываниям Можно заменить эквивалентность выражением которое включает только базовые логические операции

A B A B A Bharr = sdot + sdot Эту формулу вы можете доказать (или опровергнуть) самостоятельно

Другие логические операции

Мы уже говорили что существуют и другие логические операции Таблицы истинности операций с двумя переменными содержат 4 строки и отличаются только значением последнего столбца Поэтому любая новая комбинация нулей и единиц в этом столбце дает новую логическую операцию (логическую функцию) Всего их очевидно столько сколько существует четырехразрядных двоичных чисел то есть 16 = 24 Из тех что мы еще не рассматривали наиболее интерес-ны две mdash штрих Шеффера (ldquoИndashНЕrdquo англ nand = ldquonot andrdquo)

A|B A B= sdot и стрелка Пирса (ldquoИЛИndashНЕrdquo англ nor = ldquonot orrdquo)

A B A Bdarr = + Особенность этих операций состоит в том что с помощью любой одной из них можно записать произвольную

логическую операцию Например операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (базовый набор) выражаются через штрих Шеф-фера так

A A|A= A B A|B A|B)| A|B)sdot = =( ( A B A|B A|A)| B|B)+ = =( (

Эти формулы можно доказать через таблицы истинности

Штрих Шеффера Стрелка Пирса

A B A|B A B A Bdarr

0 0 1 0 0 10 1 1 0 1 01 0 1 1 0 01 1 0 1 1 0

8 ИНФорматИка 10 2010

Логические выражения

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

А mdash ldquoПервый двигатель вышел из строяrdquoB mdash ldquoВторой двигатель вышел из строяrdquoC mdash ldquoТретий двигатель вышел из строяrdquoX mdash ldquoАварийная ситуацияrdquoТогда логическое высказывание X можно записать в виде формулы

X =(AmiddotB) + (AmiddotC) + (BmiddotC) ()Таким образом мы выполнили формализацию

Формализация mdash это переход от конкретного содержания к формальной записи с помощью некоторого языка

В логических выражениях операции выполняются в следующем порядке1) действия в скобках2) отрицание (ldquoНЕrdquo)3) логическое умножение (ldquoИrdquo)4) логическое сложение (ldquoИЛИrdquo) и ldquoисключающее ИЛИrdquo5) импликация6) эквивалентностьТакой порядок означает что все скобки в выражении () для X можно

убрать Порядок вычисления выражения можно так же как и для ариф-метических выражений определить с помощью дерева (см рисунок) Вы-числение начинается с листьев корень mdash это самая последняя операция

Здесь каждая операция выполняется с двумя значениями Такие операции называются бинарными (от лат bis mdash дважды) или двуместными

Операции которые выполняются над одной величиной называют унарными (от лат uno mdash один) или одномест-ными Пример унарной логической операции mdash это отрицание (операция ldquoНЕrdquo)

Любую формулу можно задать с помощью таблицы истинности которая показывает чему равно значение логического выражения при всех возможных комбинациях значений исходных переменных Сложные выражения удобно разбить на несколько более простых сначала вычислить значения этих промежуточных величин а затем mdash окончательный результат

A B C AmiddotB AmiddotC BmiddotC X0 0 0 0 0 0 00 0 1 0 0 0 00 1 0 0 0 0 00 1 1 0 0 1 11 0 0 0 0 0 01 0 1 0 1 0 11 1 0 1 0 0 11 1 1 1 1 1 1

Рассмотрим формулу () Выражение в правой части зависит от трех переменных поэтому существует 23 = 8 комбинаций их значений Таблица истинности выглядит так как показано выше По ней видно что при некоторых значениях переменных значение X истинно а при некоторых mdash ложно Такие выражения называют вычислимыми

Высказывание ldquoВася mdash школьник или он не учится в школеrdquo всегда истинно (для любого Васи) Оно может быть записано в виде логического выражения A A+ Выражение истинное при любых значениях переменных называет-ся тождественно истинным или тавтологией

Высказывание ldquoсегодня безветрие и дует сильный ветерrdquo никогда не может быть истинным Соответствующее логическое выражение A Asdot всегда ложно оно называется тождественно ложным или противоречием

Если два выражения принимают одинаковые значения при всех значениях переменных они называются равно-сильными или тождественно равными Например равносильны выражения A Brarr и A B+ Равносильные выраже-ния определяют одну и ту же логическую функцию то есть при одинаковых исходных данных приводят к одинако-вым результатам

Некоторые задачи

Рассмотрим ряд задач в которых требуется исследовать логическое выражениеЗадача 1 Каково наибольшее целое число X при котором истинно высказывание

A (90 X ) (80 (X 2))2 2= lt rarr gt +

+

+

bull bull

bull

A A

C

C

B

B

9 12 2010 ИНФорматИка

Сначала удобно заменить импликацию по формуле A B A Brarr = + Отрицание для высказывания 90 X2lt запишется как 90 X2ge поэтому

A (90 X )2= ge или (80 (X 2))2gt + В этой задаче нас интересуют только целые числа Поэтому условие 90 X2ge можно заменить на X 9le или

9 Xminus le le9 а условие 80 (X 2)2gt + mdash на X 2 8+ le или -10 X 6le le Таким образом требуется выбрать наибольшее целое число которое входит в один или в другой промежуток

x

9

6

ndash9ndash10

Это число mdash 9Задача 2 A B и С mdash целые числа для которых истинно высказывание

X (A B)((A B) (B C))((B A) (C B))= = sdot gt rarr gt sdot gt rarr gtЧему равно В если A = 27 и C = 25Это сложное высказывание состоит из трех простых

(A B)= (A B) (B C)gt rarr gt (B A) (C B)gt rarr gtОни связаны операцией ldquoИrdquo то есть должны выполняться одновременноИз (A B) 1= = сразу следует что A Bne Предположим что A Bgt тогда из второго условия получаем 1 (B C)rarr gt Это

выражение может быть истинно тогда и только тогда когда (B C) 1gt = поэтому имеем A B Cgt gt этому условию со-ответствует только число 26

На всякий случай проверим и вариант A Blt тогда из второго условия получаем 0 (B C)rarr gt это выражение ис-тинно при любом B Теперь проверяем третье условие получаем 1 (C B) 1rarr gt = это выражение может быть истин-но тогда и только тогда когда C Bgt и тут мы получили противоречие потому что нет такого числа B для которого C B Agt gt Таким образом правильный ответ mdash 26

Контрольные вопросы

1 Даны два высказывания A mdash ldquoВ Африке водятся жирафыrdquo и B mdash ldquoВ Мурманске идет снегrdquo Постройте из них различные сложные высказывания

2 Дано высказывание ldquoВинни-Пух любит мед и дверь в дом открытаrdquo Как бы вы сформулировали отрицание этого высказывания

3 Что такое таблица истинности4 Почему в таблице истинности для операции ldquoНЕrdquo две строки а для других изученных операций mdash четыре

Сколько строчек в таблице истинности выражения с тремя переменными с четырьмя с пятью5 В каком порядке обычно записываются значения переменных в таблице истинности6 Когда истинно высказывание ldquoA и Brdquo ldquoА или Brdquo7 Какие электрические схемы можно использовать для иллюстрации операций ldquoИrdquo и ldquoИЛИrdquo8 Какие знаки применяют для обозначения операций ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo9 Почему операция ldquoИrdquo называется логическим умножением а ldquoИЛИrdquo mdash логическим сложением10 В чем отличие ldquoобычногоrdquo и логического сложения11 Сколько существует различных логических операций с двумя переменными С тремя переменными12 Чем отличается операция ldquoисключающее ИЛИrdquo от ldquoИЛИrdquo13 Почему операция ldquoисключающее ИЛИrdquo называется сложением по модулю 214 Как записать выражение A Boplus с помощью базового набора операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo)15 Как можно доказать или опровергнуть логическую формулу16 Какими интересными свойствами обладает операция ldquoисключающее ИЛИrdquo17 Что значит выражение ldquoобратимая операцияrdquo Какие изученные логические операции являются обратимыми18 Какое свойство операции ldquoисключающее ИЛИrdquo позволяет использовать ее для простейшего шифрования19 Чем отличается смысл высказывания ldquoесли A то Brdquo в обычной речи и в математической логике20 Запишите в виде формулы высказывание ldquoесли утюг горячий то лоб холодныйrdquo21 Запишите в виде формулы высказывание ldquoневерно что если утюг горячий то лоб холодныйrdquo Можно ли в этом

случае сразу сказать какой утюг и какой лоб22 Как выразить импликацию через операции ldquoНЕrdquo и ldquoИЛИrdquo Докажите эту формулу23 Как выразить эквивалентность через операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo Докажите эту формулу24 Чем интересны операции ldquoштрих Шеффераrdquo и ldquoстрелка Пирсаrdquo25 Докажите формулы позволяющие представить базовые логические операции через штрих Шеффера Попро-

буйте построить и доказать аналогичные формулы для операции ldquoстрелка Пирсаrdquo26 Что такое формализация27 В каком порядке выполняются действия в логических выражениях 28 Что можно сделать для того чтобы изменить ldquoестественныйrdquo порядок действий

10 ИНФорматИка 12 2010

29 Какие операции называются бинарными и унарными Приведите примеры унарных и бинарных операций в математике

30 Поясните разницу между терминами ldquoлогическое выражениеrdquo и ldquoлогическая функцияrdquo31 Можно ли сказать что таблица истинности однозначно определяета) логическое выражениеб) логическую функцию32 Что такое вычислимое логическое выражение 33 Что такое тавтология противоречие Приведите примеры34 Что такое равносильные выражения

Задачи

1 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) A B A Bsdot + sdot ж) A C B Csdot + sdotб) A B A B A Bsdot + sdot + sdot з) ( ) ( )A C B C+ + +в) ( ) ( ) ( )A B A B A B+ + + sdot + и) ( ) ( )A C B Csdot sdot sdotг) A B B C C Asdot + sdot + sdot к) A C B C C A Bsdot + sdot + sdot +( )) ( )A C B C C A Bsdot + sdot + sdot +( )) ( )

д) A B C A B C B Csdot sdot + sdot sdot + sdot л) A C B C B A Csdot + + + sdot sdot( ( )) ( )е) A B C A C Bsdot sdot + sdot +( ) ( )

2 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) ( ) ( )A B A Brarr + rarr е) ( ) ( )A B A Crarr rarr rarrб) ( ) ( )A B A Brarr sdot rarr ж) ( )A B B Csdot rarr +

в) ( ) ( )A B A Bsdot rarr + з) ( ) ( )A B A Crarr rarr rarrг) ( ) ( )A B A B+ rarr sdot и) ( ) ( )A B A Bharr + harr

д) ( ) ( ) ( )A B A C A Crarr sdot + sdot rarr к) ( ) ( ) ( )A B A C B Charr + harr + harr3 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z

Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а б)

X Y Z F

1 1 1 11 1 0 11 0 0 1

4 Для предыдущего задания определите сколько различных логических функций соответствует заданной частич-ной таблице истинности (Ответ 32)

5 Задано 5 строк таблицы истинности некоторого логического выражения с тремя переменными Сколько раз-личных логических функций ей соответствуют (Ответ 8)

6 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет б г)

X Y Z F

0 1 0 01 1 0 10 1 1 0

7 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а в)

X Y Z F

1 0 0 10 0 0 11 1 1 0

8 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ а)

а) X Y Z+ +б) X Y Z+ +в) X Y Z+ +г) X Y Z+ +

а) X Y Z+ +б) X Y Zsdot sdotв) X Y Zsdot sdotг) X Y Z+ sdot

а) X (Y Z)rarr +б) X Y Zsdot sdotв) X Y Z+ +г) X Y Z+ +

11 12 2010 ИНФорматИка

X Y Z F

1 0 0 10 0 0 01 1 1 0

9 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ б г)

X Y Z F

0 0 0 00 1 1 11 0 0 1

10 Определите значение логического выражения (X 2) (X 3)gt rarr gt для X = 1 2 3 4 (Ответ 1 1 0 1)11 Определите значение логического выражения

((X 5) (X 3))((X 2) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 1 0 0)12 Определите значение логического выражения

((X 3) (X 3)) (X 1)gt + lt rarr lt для X = 1 2 3 4(Ответ 0 0 1 0)13 Определите значение логического выражения

((X 4) (X 3))((X 3) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 0 0 1)14 Определите значение логического выражения

(X(X ndash 8) gt 2X ndash 25)(X(X 8) 2 X-25) (X 7)minus gt rarr gt для X = 4 5 6 7(Ответ 0 1 0 0)15 Найдите все целые значения X при которых логическое выражение

(X 2) (X 5)gt rarr gt ложно(Ответ 3 4 5)16 Найдите все целые значения X при которых логическое выражение

((X 0) (X 4)) (X 4)gt + gt rarr gt ложно (Ответ 1 2 3 4)17 Автопилот может работать если исправен главный бортовой компьютер или два вспомогательных Выполните формали-

зацию и запишите логические формулы для высказываний ldquoавтопилот работоспособенrdquo и ldquoавтопилот неработоспособенrdquo18 Каково наибольшее целое положительное число X при котором истинно высказывание

(X(X 3) X 9) (X(X 2) X 11)2 2+ gt + rarr + le + (Ответ 5)19 Каково наибольшее целое положительное число X при котором истинно высказывание

(121 X ) (X X 5)2lt rarr lt + (Ответ 11)20 Каково наибольшее целое положительное число X при котором ложно высказывание

(X(X 6) 9 0) (X 45)2+ + gt rarr gt (Ответ 6)21 Каково наибольшее целое положительное число X при котором истинно высказывание

(X -1 100) (X(X-1) 100)2 gt rarr lt (Ответ 10)22 Каково наибольшее целое положительное число X при котором ложно высказывание

(7X-3 75) (X(X-1) 65)lt rarr gt (Ответ 8)23 Известно что для чисел A B и C истинно высказывание

((C A) (C B))((C 1) A)((C 1) B)lt + lt sdot + lt sdot + lt а) Чему равно C если A = 25 и B = 48б) Чему равно C если A = 45 и B = 18(Ответ 47 44)24 Известно что для чисел A B и C истинно высказывание

(A B)((B A) (2C A))((A B) (A 2C))= sdot lt rarr gt sdot lt rarr gt Чему равно A если C = 10 и B = 22(Ответ 21)

а) X Y Zsdot sdotб) X (Y Z)rarr +в) X Y Z+ +г) Y (X Z)rarr sdot

а) (X Y) Z+ rarr

б) (X Y) Z+ rarrв) X (Y Z)+ rarrг) X Y Z+ sdot

12 ИНФорматИка 12 2010

3 Диаграммы

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

На такой диаграмме каждой переменной соответствует круг внутри которого она равна единице а вне его mdash нулю Круги пересекаются каждый с каждым Области в которых рассматриваемое логическое выражение истинно закрашиваются каким-либо цветом Ниже приведены диаграммы для простейших операций с одной и двумя пере-менными Серым цветом залиты области где рассматриваемое выражение равно единице

A A Bsdot A B+ A Brarr

A

A

В

A

В

A

В

Такие диаграммы часто используются при работе с множествами операция ldquoИrdquo соответствует пересечению двух множеств а ldquoИЛИrdquo mdash объединению

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

С

2

18

4

756

3

Для того чтобы найти выражение для объединения двух или нескольких областей надо сложить (используя логи-ческое сложение mdash операцию ldquoИЛИrdquo) выражения для всех составляющих Например выражение для объединения областей 3 и 4 имеет вид

3 + 4 A B Csdot sdot + A B Csdot sdot С другой стороны можно заметить что справедлива формула3 + 4 B Csdot Это означает что логические выражения в некоторых случаях можно упростить Как это делается вы узнаете в

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

множества ссылок полученных от поисковой системы в ответ на какой-то запрос Рассмотрим такую задачу

Известно количество ссылок которые находит поисковый сервер по следующим запросам (здесь символ ldquoamprdquo обозначает операцию ldquoИrdquo а ldquo|rdquo mdash операцию ldquoИЛИrdquo)

собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросу(кошки|собаки)ampлемуры

Обозначим буквами С К и Л высказывания ldquoключевое слово mdash собакиrdquo ldquoключевое слово mdash кошкиrdquo и ldquoключевое слово mdash лемурыrdquo Построим диаграмму с тремя перемен-ными и выделим интересующую область которая соответствует запросу

(кошки|собаки)ampлемурыНа рисунке эта область закрашена желтым цветомВ общем виде задача очень сложна Попробуем найти какое-нибудь упрощающее усло-

вие Например выделим три условия

1 A B Csdot sdot2 A B Csdot sdot3 A B Csdot sdot4 A B Csdot sdot

5 A B Csdot sdot6 A B Csdot sdot7 A B Csdot sdot8 A B Csdot sdot

КС

Л

13 12 2010 ИНФорматИка

собаки 200кошки 250кошки|собаки 450

Это означает что область ldquoкошки ИЛИ собакиrdquo равна сумме областей ldquoкошкиrdquo и ldquoсобакиrdquo то есть эти области не пересекаются Таким образом в нашем случае диаграмма выглядит так

КC

Л

1 2

Области 1 (собакиampлемуры) и 2 (кошкиampлемуры) нам известны они составляют соответственно 40 и 50 ссылок поэтому по запросу (кошки|собаки)ampлемуры поисковый сервер выдаст 40 + 50 = 90 ссылок

Задачи

1 Используя диаграмму с тремя переменными запишите логические выражения для объединения об-ластей 2 + 5 3 + 6 4 + 7 6 + 7 5 + 6 5 + 8 7 + 8 Для каждой сложной области найдите два эквивалентных выражения

2 Известно количество ссылок которые находит поисковый сервер по следующим запросам собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 810)3 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 250кошки 200лемуры 500собакиampлемуры 0собакиampкошки 20кошкиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 920)4 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 120кошки 270лемуры 100кошки|собаки 390кошкиampлемуры 20собакиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 460)

4 Упрощение логических выражений

Законы алгебры логики

Для упрощения логических выражений используют законы алгебры логики Они формулируются для базовых логических операций mdash ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

Закон двойного отрицания означает что операция ldquoНЕrdquo обратима если применить ее два раза логическое значе-ние не изменится Закон исключения третьего основан на том что любое логическое выражение либо истинно либо ложно (ldquoтретьего не даноrdquo) Поэтому если A 1= то A 0= (и наоборот) так что произведение этих величин всегда равно нулю а сумма mdash единице

14 ИНФорматИка 12 2010

Операции с константами и закон повторения легко проверяются по таблицам истинности операций ldquoИrdquo и ldquoИЛИrdquo Переместительный и сочетательный законы выглядят вполне привычно так же как и в математике Почти везде ldquoработаетrdquo аналогия с обычной алгеброй нужно только помнить что в логике 1 + 1 = 1 а не 2

Закон для ldquoИrdquo для ldquoИЛИrdquoдвойного отрицания A A=

исключения третьего A A 0sdot = A A 1+ =

операции с константами A 1 Asdot = A 0 0sdot = A 1 1+ = A 0 A+ =

повторения A A Asdot = A A A+ =

переместительный A B B Asdot = sdot A B B A+ = +

сочетательный A (B C) (A B) Csdot sdot = sdot sdot A (B C) (A B) C+ + = + +

распределительный A B C (A B)(A C)+ sdot = + sdot + A (B C) A B A Csdot + = sdot + sdot

поглощения A A B A+ sdot = A (A B) Asdot + =

законы де Моргана A B A Bsdot = + A B A Bsdot = +

Распределительный закон для ldquoИЛИrdquo mdash это обычное раскрытие скобок А вот для операции ldquoИrdquo мы видим не-знакомое выражение в математике это равенство неверно Доказательство можно начать с правой части раскрыв скобки

(A B)(A C) A A A C B A B C+ sdot + = sdot + sdot + sdot + sdot

Дальше используем закон повторения ( A A Asdot = ) и заметим что A A C A (1 C) A 1 A+ sdot = sdot + = sdot =

Аналогично доказываем что A B A A (1 B) A+ sdot = sdot + = таким образом(A B)(A C) A B C+ sdot + = + sdot

Равенство доказано Попутно мы доказали также и закон поглощения для операции ldquoИrdquo (для ldquoИЛИrdquo вы можете сделать это самостоятельно) Отметим что из распределительного закона следует полезная формула

A A B (A A)(A B) A B+ sdot = + sdot + = + Правила позволяющие раскрывать отрицание сложных выражений названы в честь

шотландского математика и логика де Моргана Обратите внимание что при этом не просто ldquoобщееrdquo отрицание переходит на отдельные выражения но и операция ldquoИrdquo за-меняется на ldquoИЛИrdquo (и наоборот) Доказать законы де Моргана можно с помощью та-блиц истинности

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

A B Csdot sdot + A B Csdot sdot =(A A) B C B C+ sdot sdot = sdot Здесь мы сначала вынесли общий множитель двух слагаемых за скобки а затем примени-

ли закон исключения третьегоВ общем случае можно рекомендовать такую последовательность действий1 Заменить все ldquoнебазовыеrdquo операции (исключающее ИЛИ импликацию эквивалент-

ность и др) на их выражения через базовые операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo 2 Раскрыть отрицания сложных выражений по законам де Моргана так чтобы операции отрицания остались

только у отдельных переменных3 Используя вынесение общих множителей за скобки раскрытие скобок и другие законы алгебры логики упро-

стить выражение Пример

(A B)(A B)(A C)+ sdot + sdot + =(A B) A B (A C)+ sdot sdot sdot + =(A A B A) B (A C)sdot + sdot sdot sdot + == B A B (A C)sdot sdot sdot + = A B B (A C)sdot sdot sdot + = A B (A C)sdot sdot + = B A (A C)sdot sdot + = B Asdot

Здесь последовательно использованы закон де Моргана распределительный закон закон исключения третьего переместительный закон закон повторения снова переместительный закон и закон поглощения

Логические уравнения

Если приравнять два логических выражения мы получим уравнение Его решением будут значения переменных при которых уравнение превращается в тождество то есть значения левой и правой частей совпадают Например уравнение A B 1sdot = имеет единственное решение A B 1= = для остальных комбинаций значений переменных левая часть равна нулю В то же время уравнение A B 1+ = имеет три решения ( A 0= B 1= ) ( A 1= B 0= ) и A B 1= =

А де МорганИллюстрация с сайта

wwwyorkacuk

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 5: Inf 2010-12

5 12 2010 ИНФорматИка

Эта таблица состоит из двух частей слева перечисляются все возможные значения исходного высказывания (их всего два mdash 0 и 1) а в последнем столбце записывают результат выполнения логической операции для каждого из этих вариантов Такая таблица называется таблицей истинности логической операции

Таблица истинности задает логическую функцию то есть правила преобразования входных логических значе-ний в выходные

Операция laquoИraquo

Пусть есть два высказывания A mdash ldquoСейчас идет дождьrdquo B mdash ldquoФорточка открытаrdquo Слож-ное высказывание ldquoA и Brdquo выглядит так ldquoСейчас идет дождь и форточка открытаrdquo Оно будет истинным (верным) в том и только в том случае когда оба высказывания A и B истинны одновременно

Для понимания операции ldquoИrdquo можно представить себе простую схему в которой для вклю-чения лампочки используются два выключателя соединенных последовательно (см рисунок) Чтобы лампочка загорелась нужно обязательно включить оба выключателя С другой стороны чтобы выключить лампочку достаточно выключить любой из них

Операция ldquoИrdquo (в отличие от ldquoНЕrdquo) выполняется с двумя логическими значениями кото-рые мы обозначим как A и B Результат этой операции в алгебре логики записывают как АsdotB А and B или А amp B В языках программирования используют обозначения ldquoA and Brdquo (Паскаль Бейсик) или ldquoA ampamp Brdquo (Си)

A B АsdotB0 0 0 01 0 1 02 1 0 03 1 1 1

В таблице истинности будет уже не один столбец с исходными данными а два Число строк также выросло с 2 до 4 поскольку для 2 бит мы получаем 4 разных комбинации 00 01 10 и 11 Эти строчки расположены в определен-ном порядке двоичные числа полученные соединением битов A и B идут в порядке возрастания (слева от таблицы они переведены в десятичную систему) Как следует из определения в последнем столбце будет всего одна единица для варианта A = B = 1

Легко проверить что этот результат можно получить ldquoобычнымrdquo умножением A на B поэтому операцию ldquoИrdquo на-зывают логическим умножением Существует и другое название этой операции mdash конъюнкция (от лат conjunctio mdash союз связь)

Операция laquoИЛИraquo

Высказывание ldquoСейчас идет дождь или форточка открытаrdquo истинно тогда когда истинно хотя бы одно из входящих в него высказываний или оба одно-временно В алгебре логики операция ldquoИЛИrdquo обозначается как А+B или А or B в языках программирования mdash ldquoA or Brdquo (Паскаль Бейсик) или ldquoA || Brdquo (Си)

A B А+B0 0 00 1 11 0 11 1 1

Можно представить себе схему с двумя выключателями соединенными параллельно (см рисунок) Чтобы лам-почка загорелась достаточно включить хотя бы один из выключателей Чтобы выключить лампочку необходимо обязательно выключить оба В таблице истинности будет только один ноль для варианта A = B = 0

Операцию ldquoИЛИrdquo называют логическим сложением потому что она похожа на обычное математическое сложение Единственное отличие mdash в последней строке таблицы истинности в математике 1 + 1 равно 2 а в алгебре логики mdash 1 Другое название операции ldquoИЛИrdquo mdash дизъюнкция (от лат disjunctio mdash разделение)

В учебнике для обозначения операций ldquoИrdquo и ldquoИЛИrdquo мы будем использовать знаки умножения и сложения (на-пример АsdotB и А+B) Это очень удобно потому что они привычны для нас и позволяют легко увидеть аналогию с обычной математикой

Доказано что операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo достаточно для того чтобы записать с их помощью любую логическую операцию которую только можно придумать Например для двух переменных существует всего 24 = 16 логических операций их таблицы истинности отличаются только последним столбцом в котором 4 двоичных значения (4 бита) Далее мы рассмотрим еще три распространенных операции и покажем как их можно представить через операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

sim220 В

sim220 В

6 ИНФорматИка 12 2010

Операция laquoисключающее ИЛИraquo

A B A Boplus0 0 00 1 11 0 11 1 0

Операция ldquoисключающее ИЛИrdquo отличается от обычного ldquoИЛИrdquo только тем что результат равен 0 если оба зна-чения равны 1 (последняя строчка в таблице истинности) То есть ее результат mdash истина в том и только в том случае когда два значения не равны

ldquoИсключающее ИЛИrdquo в алгебре логики обозначается знаком ldquooplusrdquo в языке Паскаль как xor (например ldquoA xor Brdquo) а в языке Си mdash знаком ldquo^rdquo (ldquoA ^ Brdquo) Эту операцию можно представить через базовые операции (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) следующим образом

A B A B A Boplus = sdot + sdot Пока мы не можем вывести эту формулу но можем доказать ее (или опровергнуть mdash доказать что она непра-

вильная) Для этого достаточно для всех возможных комбинаций A и B вычислить значения выражения стоящего в правой части равенства и сравнить его со значением А oplus B для тех же исходных данных Поскольку провести такие вычисления в уме достаточно сложно сначала вычислим значения A B A Bsdot и A Bsdot а потом уже A B A Bsdot + sdot В таблице истинности появятся дополнительные столбцы для промежуточных результатов

A B A B A Bsdot A Bsdot A B A Bsdot + sdot A Boplus0 0 1 1 0 0 0 00 1 1 0 1 0 1 11 0 0 1 0 1 1 11 1 0 0 0 0 0 0

Легко видеть что выражение A B A Bsdot + sdot совпадает с A Boplus для всех возможных вариантов Это значит что формула доказана

Операция ldquoисключающее ИЛИrdquo иначе называется разделительной дизъюнкцией (это значит ldquoодин или другой но не оба вместеrdquo) или сложением по модулю два Второе название связано с тем что ее результат равен остатку от деления ldquoобычнойrdquo суммы A + B на 2

A Boplus = (A + B) mod 2Здесь mod обозначает операцию взятия остатка от деленияОперация ldquoисключающее ИЛИrdquo обладает интересными свойствами По таблице истинности несложно прове-

рить что A 0 Aoplus = A 1 Aoplus = A A 0oplus =

Для доказательства этих равенств можно просто подставить в них A = 0 и A = 1 Теперь докажем что (A B) B Aoplus oplus = ()

Подставляя в левую часть B = 0 получим (A 0) 0 A 0 Aoplus oplus = oplus = Аналогично для B = 1 имеем (A 1) 1 A 1 Aoplus oplus = oplus = Это означает что формула () справедлива для любых значений B Отсюда следует важный вывод если два раза при-менить операцию ldquoисключающее ИЛИrdquo с одним и тем же B мы восстановим исходное значение В этом смысле ldquoисключающее ИЛИrdquo mdash обратимая операция (кроме нее обратима также операция ldquoНЕrdquo mdash если применить ее дважды мы вернемся к исходному значению)

Формула () верна не только для высказываний но и для чисел состоящих из нескольких двоичных разрядов Что-бы зашифровать данные надо применить операцию ldquoисключающее ИЛИrdquo с некоторым числом (кодом) отдельно для каждого разряда Для расшифровки еще раз применяется ldquoисключающее ИЛИrdquo с тем же ключом Нужно отме-тить что такой метод шифрования очень нестойкий для больших текстов его легко раскрыть частотным анализом

Импликация

A B A Brarr

0 0 10 1 11 0 01 1 1

Мы часто используем логическую связку ldquoесли hellip тоrdquo например ldquoЕсли пойдет дождь то я надену плащrdquo или ldquoЕсли все стороны прямоугольника равны то это квадратrdquo В логике эта связка называется импликацией2 (следованием) и обозначается стрелкой A Brarr (ldquoесли A то Brdquo ldquoиз A следует Brdquo)

2 От лат implicatio mdash сплетение тесная связь

7 12 2010 ИНФорматИка

Разобраться с импликацией будет легче если мы рассмотрим конкретное высказывание например такое ldquoЕсли хорошо работаешь то получаешь большую зарплатуrdquo Обозначим буквами два простых высказывания A mdash ldquoхорошо работаешьrdquo и B mdash ldquoполучаешь большую зарплатуrdquo Понятно что если высказывание A Brarr истинно то все кто хоро-шо работают (A = 1) должны получать большую зарплату (B = 1) Если же кто-то работает хорошо (A = 1) а получает мало (B = 0) то высказывание A Brarr ложно

Лодыри и бездельники (A = 0) могут получать как маленькую (B = 0) так и большую зарплату (B = 1) это не нарушает справедливость высказывания A Brarr Иногда определяя импликацию говорят так из истины следует истина а из лжи mdash что угодно Это значит что при ложном высказывании A высказывание B может быть как ложно так и истинно

Нужно обратить внимание на разницу между высказываниями вида ldquoесли A то Brdquo в обычной жизни и в алгебре логики В быту мы чаще всего имеем в виду что существует причинно-следственная связь между A и B то есть имен-но A вызывает B Алгебра логики не устанавливает взаимосвязь явлений истинность высказывания A Brarr говорит только о возможности такой связи Например с точки зрения алгебры логики может быть истинным высказывание ldquoесли Вася mdash студент то Петя mdash лыжникrdquo

Импликация чаще всего используется при решении логических задач Например условие ldquoесли A то Brdquo можно записать в виде A B 1rarr =

Для импликации (в отличие от других изученных операций с двумя переменными) не действует переместитель-ный закон если в записи A Brarr поменять местами A и B то результат изменится A B B Ararr ne rarr Внешне это видно по стрелке которая указывает ldquoнаправлениеrdquo

Импликацию можно заменить на выражение использующее только базовые операции (здесь mdash только ldquoНЕrdquo и ldquoИЛИrdquo)

A B A Brarr = + Доказать это равенство вы уже можете самостоятельно

Эквивалентность

A B A Bharr0 0 10 1 01 0 01 1 1

Эквивалентность (также эквиваленция равносильность) mdash это логическая операция которая соответствует связке ldquoтогда и только тогдаrdquo Высказывание A Bharr истинно в том и только в том случае когда A = B (см таблицу истинности)

Возможно вы заметили что эквивалентность mdash это обратная операция для ldquoисключающего ИЛИrdquo (проверьте по таблицам истинности) то есть

A B A Bharr = oplus Здесь черта сверху охватывающая все выражение в правой части равенства означает отрицание (инверсию) ко-

торое применяется к результату вычисления выражения A Boplus а не к отдельным высказываниям Можно заменить эквивалентность выражением которое включает только базовые логические операции

A B A B A Bharr = sdot + sdot Эту формулу вы можете доказать (или опровергнуть) самостоятельно

Другие логические операции

Мы уже говорили что существуют и другие логические операции Таблицы истинности операций с двумя переменными содержат 4 строки и отличаются только значением последнего столбца Поэтому любая новая комбинация нулей и единиц в этом столбце дает новую логическую операцию (логическую функцию) Всего их очевидно столько сколько существует четырехразрядных двоичных чисел то есть 16 = 24 Из тех что мы еще не рассматривали наиболее интерес-ны две mdash штрих Шеффера (ldquoИndashНЕrdquo англ nand = ldquonot andrdquo)

A|B A B= sdot и стрелка Пирса (ldquoИЛИndashНЕrdquo англ nor = ldquonot orrdquo)

A B A Bdarr = + Особенность этих операций состоит в том что с помощью любой одной из них можно записать произвольную

логическую операцию Например операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (базовый набор) выражаются через штрих Шеф-фера так

A A|A= A B A|B A|B)| A|B)sdot = =( ( A B A|B A|A)| B|B)+ = =( (

Эти формулы можно доказать через таблицы истинности

Штрих Шеффера Стрелка Пирса

A B A|B A B A Bdarr

0 0 1 0 0 10 1 1 0 1 01 0 1 1 0 01 1 0 1 1 0

8 ИНФорматИка 10 2010

Логические выражения

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

А mdash ldquoПервый двигатель вышел из строяrdquoB mdash ldquoВторой двигатель вышел из строяrdquoC mdash ldquoТретий двигатель вышел из строяrdquoX mdash ldquoАварийная ситуацияrdquoТогда логическое высказывание X можно записать в виде формулы

X =(AmiddotB) + (AmiddotC) + (BmiddotC) ()Таким образом мы выполнили формализацию

Формализация mdash это переход от конкретного содержания к формальной записи с помощью некоторого языка

В логических выражениях операции выполняются в следующем порядке1) действия в скобках2) отрицание (ldquoНЕrdquo)3) логическое умножение (ldquoИrdquo)4) логическое сложение (ldquoИЛИrdquo) и ldquoисключающее ИЛИrdquo5) импликация6) эквивалентностьТакой порядок означает что все скобки в выражении () для X можно

убрать Порядок вычисления выражения можно так же как и для ариф-метических выражений определить с помощью дерева (см рисунок) Вы-числение начинается с листьев корень mdash это самая последняя операция

Здесь каждая операция выполняется с двумя значениями Такие операции называются бинарными (от лат bis mdash дважды) или двуместными

Операции которые выполняются над одной величиной называют унарными (от лат uno mdash один) или одномест-ными Пример унарной логической операции mdash это отрицание (операция ldquoНЕrdquo)

Любую формулу можно задать с помощью таблицы истинности которая показывает чему равно значение логического выражения при всех возможных комбинациях значений исходных переменных Сложные выражения удобно разбить на несколько более простых сначала вычислить значения этих промежуточных величин а затем mdash окончательный результат

A B C AmiddotB AmiddotC BmiddotC X0 0 0 0 0 0 00 0 1 0 0 0 00 1 0 0 0 0 00 1 1 0 0 1 11 0 0 0 0 0 01 0 1 0 1 0 11 1 0 1 0 0 11 1 1 1 1 1 1

Рассмотрим формулу () Выражение в правой части зависит от трех переменных поэтому существует 23 = 8 комбинаций их значений Таблица истинности выглядит так как показано выше По ней видно что при некоторых значениях переменных значение X истинно а при некоторых mdash ложно Такие выражения называют вычислимыми

Высказывание ldquoВася mdash школьник или он не учится в школеrdquo всегда истинно (для любого Васи) Оно может быть записано в виде логического выражения A A+ Выражение истинное при любых значениях переменных называет-ся тождественно истинным или тавтологией

Высказывание ldquoсегодня безветрие и дует сильный ветерrdquo никогда не может быть истинным Соответствующее логическое выражение A Asdot всегда ложно оно называется тождественно ложным или противоречием

Если два выражения принимают одинаковые значения при всех значениях переменных они называются равно-сильными или тождественно равными Например равносильны выражения A Brarr и A B+ Равносильные выраже-ния определяют одну и ту же логическую функцию то есть при одинаковых исходных данных приводят к одинако-вым результатам

Некоторые задачи

Рассмотрим ряд задач в которых требуется исследовать логическое выражениеЗадача 1 Каково наибольшее целое число X при котором истинно высказывание

A (90 X ) (80 (X 2))2 2= lt rarr gt +

+

+

bull bull

bull

A A

C

C

B

B

9 12 2010 ИНФорматИка

Сначала удобно заменить импликацию по формуле A B A Brarr = + Отрицание для высказывания 90 X2lt запишется как 90 X2ge поэтому

A (90 X )2= ge или (80 (X 2))2gt + В этой задаче нас интересуют только целые числа Поэтому условие 90 X2ge можно заменить на X 9le или

9 Xminus le le9 а условие 80 (X 2)2gt + mdash на X 2 8+ le или -10 X 6le le Таким образом требуется выбрать наибольшее целое число которое входит в один или в другой промежуток

x

9

6

ndash9ndash10

Это число mdash 9Задача 2 A B и С mdash целые числа для которых истинно высказывание

X (A B)((A B) (B C))((B A) (C B))= = sdot gt rarr gt sdot gt rarr gtЧему равно В если A = 27 и C = 25Это сложное высказывание состоит из трех простых

(A B)= (A B) (B C)gt rarr gt (B A) (C B)gt rarr gtОни связаны операцией ldquoИrdquo то есть должны выполняться одновременноИз (A B) 1= = сразу следует что A Bne Предположим что A Bgt тогда из второго условия получаем 1 (B C)rarr gt Это

выражение может быть истинно тогда и только тогда когда (B C) 1gt = поэтому имеем A B Cgt gt этому условию со-ответствует только число 26

На всякий случай проверим и вариант A Blt тогда из второго условия получаем 0 (B C)rarr gt это выражение ис-тинно при любом B Теперь проверяем третье условие получаем 1 (C B) 1rarr gt = это выражение может быть истин-но тогда и только тогда когда C Bgt и тут мы получили противоречие потому что нет такого числа B для которого C B Agt gt Таким образом правильный ответ mdash 26

Контрольные вопросы

1 Даны два высказывания A mdash ldquoВ Африке водятся жирафыrdquo и B mdash ldquoВ Мурманске идет снегrdquo Постройте из них различные сложные высказывания

2 Дано высказывание ldquoВинни-Пух любит мед и дверь в дом открытаrdquo Как бы вы сформулировали отрицание этого высказывания

3 Что такое таблица истинности4 Почему в таблице истинности для операции ldquoНЕrdquo две строки а для других изученных операций mdash четыре

Сколько строчек в таблице истинности выражения с тремя переменными с четырьмя с пятью5 В каком порядке обычно записываются значения переменных в таблице истинности6 Когда истинно высказывание ldquoA и Brdquo ldquoА или Brdquo7 Какие электрические схемы можно использовать для иллюстрации операций ldquoИrdquo и ldquoИЛИrdquo8 Какие знаки применяют для обозначения операций ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo9 Почему операция ldquoИrdquo называется логическим умножением а ldquoИЛИrdquo mdash логическим сложением10 В чем отличие ldquoобычногоrdquo и логического сложения11 Сколько существует различных логических операций с двумя переменными С тремя переменными12 Чем отличается операция ldquoисключающее ИЛИrdquo от ldquoИЛИrdquo13 Почему операция ldquoисключающее ИЛИrdquo называется сложением по модулю 214 Как записать выражение A Boplus с помощью базового набора операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo)15 Как можно доказать или опровергнуть логическую формулу16 Какими интересными свойствами обладает операция ldquoисключающее ИЛИrdquo17 Что значит выражение ldquoобратимая операцияrdquo Какие изученные логические операции являются обратимыми18 Какое свойство операции ldquoисключающее ИЛИrdquo позволяет использовать ее для простейшего шифрования19 Чем отличается смысл высказывания ldquoесли A то Brdquo в обычной речи и в математической логике20 Запишите в виде формулы высказывание ldquoесли утюг горячий то лоб холодныйrdquo21 Запишите в виде формулы высказывание ldquoневерно что если утюг горячий то лоб холодныйrdquo Можно ли в этом

случае сразу сказать какой утюг и какой лоб22 Как выразить импликацию через операции ldquoНЕrdquo и ldquoИЛИrdquo Докажите эту формулу23 Как выразить эквивалентность через операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo Докажите эту формулу24 Чем интересны операции ldquoштрих Шеффераrdquo и ldquoстрелка Пирсаrdquo25 Докажите формулы позволяющие представить базовые логические операции через штрих Шеффера Попро-

буйте построить и доказать аналогичные формулы для операции ldquoстрелка Пирсаrdquo26 Что такое формализация27 В каком порядке выполняются действия в логических выражениях 28 Что можно сделать для того чтобы изменить ldquoестественныйrdquo порядок действий

10 ИНФорматИка 12 2010

29 Какие операции называются бинарными и унарными Приведите примеры унарных и бинарных операций в математике

30 Поясните разницу между терминами ldquoлогическое выражениеrdquo и ldquoлогическая функцияrdquo31 Можно ли сказать что таблица истинности однозначно определяета) логическое выражениеб) логическую функцию32 Что такое вычислимое логическое выражение 33 Что такое тавтология противоречие Приведите примеры34 Что такое равносильные выражения

Задачи

1 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) A B A Bsdot + sdot ж) A C B Csdot + sdotб) A B A B A Bsdot + sdot + sdot з) ( ) ( )A C B C+ + +в) ( ) ( ) ( )A B A B A B+ + + sdot + и) ( ) ( )A C B Csdot sdot sdotг) A B B C C Asdot + sdot + sdot к) A C B C C A Bsdot + sdot + sdot +( )) ( )A C B C C A Bsdot + sdot + sdot +( )) ( )

д) A B C A B C B Csdot sdot + sdot sdot + sdot л) A C B C B A Csdot + + + sdot sdot( ( )) ( )е) A B C A C Bsdot sdot + sdot +( ) ( )

2 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) ( ) ( )A B A Brarr + rarr е) ( ) ( )A B A Crarr rarr rarrб) ( ) ( )A B A Brarr sdot rarr ж) ( )A B B Csdot rarr +

в) ( ) ( )A B A Bsdot rarr + з) ( ) ( )A B A Crarr rarr rarrг) ( ) ( )A B A B+ rarr sdot и) ( ) ( )A B A Bharr + harr

д) ( ) ( ) ( )A B A C A Crarr sdot + sdot rarr к) ( ) ( ) ( )A B A C B Charr + harr + harr3 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z

Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а б)

X Y Z F

1 1 1 11 1 0 11 0 0 1

4 Для предыдущего задания определите сколько различных логических функций соответствует заданной частич-ной таблице истинности (Ответ 32)

5 Задано 5 строк таблицы истинности некоторого логического выражения с тремя переменными Сколько раз-личных логических функций ей соответствуют (Ответ 8)

6 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет б г)

X Y Z F

0 1 0 01 1 0 10 1 1 0

7 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а в)

X Y Z F

1 0 0 10 0 0 11 1 1 0

8 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ а)

а) X Y Z+ +б) X Y Z+ +в) X Y Z+ +г) X Y Z+ +

а) X Y Z+ +б) X Y Zsdot sdotв) X Y Zsdot sdotг) X Y Z+ sdot

а) X (Y Z)rarr +б) X Y Zsdot sdotв) X Y Z+ +г) X Y Z+ +

11 12 2010 ИНФорматИка

X Y Z F

1 0 0 10 0 0 01 1 1 0

9 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ б г)

X Y Z F

0 0 0 00 1 1 11 0 0 1

10 Определите значение логического выражения (X 2) (X 3)gt rarr gt для X = 1 2 3 4 (Ответ 1 1 0 1)11 Определите значение логического выражения

((X 5) (X 3))((X 2) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 1 0 0)12 Определите значение логического выражения

((X 3) (X 3)) (X 1)gt + lt rarr lt для X = 1 2 3 4(Ответ 0 0 1 0)13 Определите значение логического выражения

((X 4) (X 3))((X 3) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 0 0 1)14 Определите значение логического выражения

(X(X ndash 8) gt 2X ndash 25)(X(X 8) 2 X-25) (X 7)minus gt rarr gt для X = 4 5 6 7(Ответ 0 1 0 0)15 Найдите все целые значения X при которых логическое выражение

(X 2) (X 5)gt rarr gt ложно(Ответ 3 4 5)16 Найдите все целые значения X при которых логическое выражение

((X 0) (X 4)) (X 4)gt + gt rarr gt ложно (Ответ 1 2 3 4)17 Автопилот может работать если исправен главный бортовой компьютер или два вспомогательных Выполните формали-

зацию и запишите логические формулы для высказываний ldquoавтопилот работоспособенrdquo и ldquoавтопилот неработоспособенrdquo18 Каково наибольшее целое положительное число X при котором истинно высказывание

(X(X 3) X 9) (X(X 2) X 11)2 2+ gt + rarr + le + (Ответ 5)19 Каково наибольшее целое положительное число X при котором истинно высказывание

(121 X ) (X X 5)2lt rarr lt + (Ответ 11)20 Каково наибольшее целое положительное число X при котором ложно высказывание

(X(X 6) 9 0) (X 45)2+ + gt rarr gt (Ответ 6)21 Каково наибольшее целое положительное число X при котором истинно высказывание

(X -1 100) (X(X-1) 100)2 gt rarr lt (Ответ 10)22 Каково наибольшее целое положительное число X при котором ложно высказывание

(7X-3 75) (X(X-1) 65)lt rarr gt (Ответ 8)23 Известно что для чисел A B и C истинно высказывание

((C A) (C B))((C 1) A)((C 1) B)lt + lt sdot + lt sdot + lt а) Чему равно C если A = 25 и B = 48б) Чему равно C если A = 45 и B = 18(Ответ 47 44)24 Известно что для чисел A B и C истинно высказывание

(A B)((B A) (2C A))((A B) (A 2C))= sdot lt rarr gt sdot lt rarr gt Чему равно A если C = 10 и B = 22(Ответ 21)

а) X Y Zsdot sdotб) X (Y Z)rarr +в) X Y Z+ +г) Y (X Z)rarr sdot

а) (X Y) Z+ rarr

б) (X Y) Z+ rarrв) X (Y Z)+ rarrг) X Y Z+ sdot

12 ИНФорматИка 12 2010

3 Диаграммы

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

На такой диаграмме каждой переменной соответствует круг внутри которого она равна единице а вне его mdash нулю Круги пересекаются каждый с каждым Области в которых рассматриваемое логическое выражение истинно закрашиваются каким-либо цветом Ниже приведены диаграммы для простейших операций с одной и двумя пере-менными Серым цветом залиты области где рассматриваемое выражение равно единице

A A Bsdot A B+ A Brarr

A

A

В

A

В

A

В

Такие диаграммы часто используются при работе с множествами операция ldquoИrdquo соответствует пересечению двух множеств а ldquoИЛИrdquo mdash объединению

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

С

2

18

4

756

3

Для того чтобы найти выражение для объединения двух или нескольких областей надо сложить (используя логи-ческое сложение mdash операцию ldquoИЛИrdquo) выражения для всех составляющих Например выражение для объединения областей 3 и 4 имеет вид

3 + 4 A B Csdot sdot + A B Csdot sdot С другой стороны можно заметить что справедлива формула3 + 4 B Csdot Это означает что логические выражения в некоторых случаях можно упростить Как это делается вы узнаете в

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

множества ссылок полученных от поисковой системы в ответ на какой-то запрос Рассмотрим такую задачу

Известно количество ссылок которые находит поисковый сервер по следующим запросам (здесь символ ldquoamprdquo обозначает операцию ldquoИrdquo а ldquo|rdquo mdash операцию ldquoИЛИrdquo)

собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросу(кошки|собаки)ampлемуры

Обозначим буквами С К и Л высказывания ldquoключевое слово mdash собакиrdquo ldquoключевое слово mdash кошкиrdquo и ldquoключевое слово mdash лемурыrdquo Построим диаграмму с тремя перемен-ными и выделим интересующую область которая соответствует запросу

(кошки|собаки)ampлемурыНа рисунке эта область закрашена желтым цветомВ общем виде задача очень сложна Попробуем найти какое-нибудь упрощающее усло-

вие Например выделим три условия

1 A B Csdot sdot2 A B Csdot sdot3 A B Csdot sdot4 A B Csdot sdot

5 A B Csdot sdot6 A B Csdot sdot7 A B Csdot sdot8 A B Csdot sdot

КС

Л

13 12 2010 ИНФорматИка

собаки 200кошки 250кошки|собаки 450

Это означает что область ldquoкошки ИЛИ собакиrdquo равна сумме областей ldquoкошкиrdquo и ldquoсобакиrdquo то есть эти области не пересекаются Таким образом в нашем случае диаграмма выглядит так

КC

Л

1 2

Области 1 (собакиampлемуры) и 2 (кошкиampлемуры) нам известны они составляют соответственно 40 и 50 ссылок поэтому по запросу (кошки|собаки)ampлемуры поисковый сервер выдаст 40 + 50 = 90 ссылок

Задачи

1 Используя диаграмму с тремя переменными запишите логические выражения для объединения об-ластей 2 + 5 3 + 6 4 + 7 6 + 7 5 + 6 5 + 8 7 + 8 Для каждой сложной области найдите два эквивалентных выражения

2 Известно количество ссылок которые находит поисковый сервер по следующим запросам собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 810)3 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 250кошки 200лемуры 500собакиampлемуры 0собакиampкошки 20кошкиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 920)4 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 120кошки 270лемуры 100кошки|собаки 390кошкиampлемуры 20собакиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 460)

4 Упрощение логических выражений

Законы алгебры логики

Для упрощения логических выражений используют законы алгебры логики Они формулируются для базовых логических операций mdash ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

Закон двойного отрицания означает что операция ldquoНЕrdquo обратима если применить ее два раза логическое значе-ние не изменится Закон исключения третьего основан на том что любое логическое выражение либо истинно либо ложно (ldquoтретьего не даноrdquo) Поэтому если A 1= то A 0= (и наоборот) так что произведение этих величин всегда равно нулю а сумма mdash единице

14 ИНФорматИка 12 2010

Операции с константами и закон повторения легко проверяются по таблицам истинности операций ldquoИrdquo и ldquoИЛИrdquo Переместительный и сочетательный законы выглядят вполне привычно так же как и в математике Почти везде ldquoработаетrdquo аналогия с обычной алгеброй нужно только помнить что в логике 1 + 1 = 1 а не 2

Закон для ldquoИrdquo для ldquoИЛИrdquoдвойного отрицания A A=

исключения третьего A A 0sdot = A A 1+ =

операции с константами A 1 Asdot = A 0 0sdot = A 1 1+ = A 0 A+ =

повторения A A Asdot = A A A+ =

переместительный A B B Asdot = sdot A B B A+ = +

сочетательный A (B C) (A B) Csdot sdot = sdot sdot A (B C) (A B) C+ + = + +

распределительный A B C (A B)(A C)+ sdot = + sdot + A (B C) A B A Csdot + = sdot + sdot

поглощения A A B A+ sdot = A (A B) Asdot + =

законы де Моргана A B A Bsdot = + A B A Bsdot = +

Распределительный закон для ldquoИЛИrdquo mdash это обычное раскрытие скобок А вот для операции ldquoИrdquo мы видим не-знакомое выражение в математике это равенство неверно Доказательство можно начать с правой части раскрыв скобки

(A B)(A C) A A A C B A B C+ sdot + = sdot + sdot + sdot + sdot

Дальше используем закон повторения ( A A Asdot = ) и заметим что A A C A (1 C) A 1 A+ sdot = sdot + = sdot =

Аналогично доказываем что A B A A (1 B) A+ sdot = sdot + = таким образом(A B)(A C) A B C+ sdot + = + sdot

Равенство доказано Попутно мы доказали также и закон поглощения для операции ldquoИrdquo (для ldquoИЛИrdquo вы можете сделать это самостоятельно) Отметим что из распределительного закона следует полезная формула

A A B (A A)(A B) A B+ sdot = + sdot + = + Правила позволяющие раскрывать отрицание сложных выражений названы в честь

шотландского математика и логика де Моргана Обратите внимание что при этом не просто ldquoобщееrdquo отрицание переходит на отдельные выражения но и операция ldquoИrdquo за-меняется на ldquoИЛИrdquo (и наоборот) Доказать законы де Моргана можно с помощью та-блиц истинности

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

A B Csdot sdot + A B Csdot sdot =(A A) B C B C+ sdot sdot = sdot Здесь мы сначала вынесли общий множитель двух слагаемых за скобки а затем примени-

ли закон исключения третьегоВ общем случае можно рекомендовать такую последовательность действий1 Заменить все ldquoнебазовыеrdquo операции (исключающее ИЛИ импликацию эквивалент-

ность и др) на их выражения через базовые операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo 2 Раскрыть отрицания сложных выражений по законам де Моргана так чтобы операции отрицания остались

только у отдельных переменных3 Используя вынесение общих множителей за скобки раскрытие скобок и другие законы алгебры логики упро-

стить выражение Пример

(A B)(A B)(A C)+ sdot + sdot + =(A B) A B (A C)+ sdot sdot sdot + =(A A B A) B (A C)sdot + sdot sdot sdot + == B A B (A C)sdot sdot sdot + = A B B (A C)sdot sdot sdot + = A B (A C)sdot sdot + = B A (A C)sdot sdot + = B Asdot

Здесь последовательно использованы закон де Моргана распределительный закон закон исключения третьего переместительный закон закон повторения снова переместительный закон и закон поглощения

Логические уравнения

Если приравнять два логических выражения мы получим уравнение Его решением будут значения переменных при которых уравнение превращается в тождество то есть значения левой и правой частей совпадают Например уравнение A B 1sdot = имеет единственное решение A B 1= = для остальных комбинаций значений переменных левая часть равна нулю В то же время уравнение A B 1+ = имеет три решения ( A 0= B 1= ) ( A 1= B 0= ) и A B 1= =

А де МорганИллюстрация с сайта

wwwyorkacuk

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 6: Inf 2010-12

6 ИНФорматИка 12 2010

Операция laquoисключающее ИЛИraquo

A B A Boplus0 0 00 1 11 0 11 1 0

Операция ldquoисключающее ИЛИrdquo отличается от обычного ldquoИЛИrdquo только тем что результат равен 0 если оба зна-чения равны 1 (последняя строчка в таблице истинности) То есть ее результат mdash истина в том и только в том случае когда два значения не равны

ldquoИсключающее ИЛИrdquo в алгебре логики обозначается знаком ldquooplusrdquo в языке Паскаль как xor (например ldquoA xor Brdquo) а в языке Си mdash знаком ldquo^rdquo (ldquoA ^ Brdquo) Эту операцию можно представить через базовые операции (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) следующим образом

A B A B A Boplus = sdot + sdot Пока мы не можем вывести эту формулу но можем доказать ее (или опровергнуть mdash доказать что она непра-

вильная) Для этого достаточно для всех возможных комбинаций A и B вычислить значения выражения стоящего в правой части равенства и сравнить его со значением А oplus B для тех же исходных данных Поскольку провести такие вычисления в уме достаточно сложно сначала вычислим значения A B A Bsdot и A Bsdot а потом уже A B A Bsdot + sdot В таблице истинности появятся дополнительные столбцы для промежуточных результатов

A B A B A Bsdot A Bsdot A B A Bsdot + sdot A Boplus0 0 1 1 0 0 0 00 1 1 0 1 0 1 11 0 0 1 0 1 1 11 1 0 0 0 0 0 0

Легко видеть что выражение A B A Bsdot + sdot совпадает с A Boplus для всех возможных вариантов Это значит что формула доказана

Операция ldquoисключающее ИЛИrdquo иначе называется разделительной дизъюнкцией (это значит ldquoодин или другой но не оба вместеrdquo) или сложением по модулю два Второе название связано с тем что ее результат равен остатку от деления ldquoобычнойrdquo суммы A + B на 2

A Boplus = (A + B) mod 2Здесь mod обозначает операцию взятия остатка от деленияОперация ldquoисключающее ИЛИrdquo обладает интересными свойствами По таблице истинности несложно прове-

рить что A 0 Aoplus = A 1 Aoplus = A A 0oplus =

Для доказательства этих равенств можно просто подставить в них A = 0 и A = 1 Теперь докажем что (A B) B Aoplus oplus = ()

Подставляя в левую часть B = 0 получим (A 0) 0 A 0 Aoplus oplus = oplus = Аналогично для B = 1 имеем (A 1) 1 A 1 Aoplus oplus = oplus = Это означает что формула () справедлива для любых значений B Отсюда следует важный вывод если два раза при-менить операцию ldquoисключающее ИЛИrdquo с одним и тем же B мы восстановим исходное значение В этом смысле ldquoисключающее ИЛИrdquo mdash обратимая операция (кроме нее обратима также операция ldquoНЕrdquo mdash если применить ее дважды мы вернемся к исходному значению)

Формула () верна не только для высказываний но и для чисел состоящих из нескольких двоичных разрядов Что-бы зашифровать данные надо применить операцию ldquoисключающее ИЛИrdquo с некоторым числом (кодом) отдельно для каждого разряда Для расшифровки еще раз применяется ldquoисключающее ИЛИrdquo с тем же ключом Нужно отме-тить что такой метод шифрования очень нестойкий для больших текстов его легко раскрыть частотным анализом

Импликация

A B A Brarr

0 0 10 1 11 0 01 1 1

Мы часто используем логическую связку ldquoесли hellip тоrdquo например ldquoЕсли пойдет дождь то я надену плащrdquo или ldquoЕсли все стороны прямоугольника равны то это квадратrdquo В логике эта связка называется импликацией2 (следованием) и обозначается стрелкой A Brarr (ldquoесли A то Brdquo ldquoиз A следует Brdquo)

2 От лат implicatio mdash сплетение тесная связь

7 12 2010 ИНФорматИка

Разобраться с импликацией будет легче если мы рассмотрим конкретное высказывание например такое ldquoЕсли хорошо работаешь то получаешь большую зарплатуrdquo Обозначим буквами два простых высказывания A mdash ldquoхорошо работаешьrdquo и B mdash ldquoполучаешь большую зарплатуrdquo Понятно что если высказывание A Brarr истинно то все кто хоро-шо работают (A = 1) должны получать большую зарплату (B = 1) Если же кто-то работает хорошо (A = 1) а получает мало (B = 0) то высказывание A Brarr ложно

Лодыри и бездельники (A = 0) могут получать как маленькую (B = 0) так и большую зарплату (B = 1) это не нарушает справедливость высказывания A Brarr Иногда определяя импликацию говорят так из истины следует истина а из лжи mdash что угодно Это значит что при ложном высказывании A высказывание B может быть как ложно так и истинно

Нужно обратить внимание на разницу между высказываниями вида ldquoесли A то Brdquo в обычной жизни и в алгебре логики В быту мы чаще всего имеем в виду что существует причинно-следственная связь между A и B то есть имен-но A вызывает B Алгебра логики не устанавливает взаимосвязь явлений истинность высказывания A Brarr говорит только о возможности такой связи Например с точки зрения алгебры логики может быть истинным высказывание ldquoесли Вася mdash студент то Петя mdash лыжникrdquo

Импликация чаще всего используется при решении логических задач Например условие ldquoесли A то Brdquo можно записать в виде A B 1rarr =

Для импликации (в отличие от других изученных операций с двумя переменными) не действует переместитель-ный закон если в записи A Brarr поменять местами A и B то результат изменится A B B Ararr ne rarr Внешне это видно по стрелке которая указывает ldquoнаправлениеrdquo

Импликацию можно заменить на выражение использующее только базовые операции (здесь mdash только ldquoНЕrdquo и ldquoИЛИrdquo)

A B A Brarr = + Доказать это равенство вы уже можете самостоятельно

Эквивалентность

A B A Bharr0 0 10 1 01 0 01 1 1

Эквивалентность (также эквиваленция равносильность) mdash это логическая операция которая соответствует связке ldquoтогда и только тогдаrdquo Высказывание A Bharr истинно в том и только в том случае когда A = B (см таблицу истинности)

Возможно вы заметили что эквивалентность mdash это обратная операция для ldquoисключающего ИЛИrdquo (проверьте по таблицам истинности) то есть

A B A Bharr = oplus Здесь черта сверху охватывающая все выражение в правой части равенства означает отрицание (инверсию) ко-

торое применяется к результату вычисления выражения A Boplus а не к отдельным высказываниям Можно заменить эквивалентность выражением которое включает только базовые логические операции

A B A B A Bharr = sdot + sdot Эту формулу вы можете доказать (или опровергнуть) самостоятельно

Другие логические операции

Мы уже говорили что существуют и другие логические операции Таблицы истинности операций с двумя переменными содержат 4 строки и отличаются только значением последнего столбца Поэтому любая новая комбинация нулей и единиц в этом столбце дает новую логическую операцию (логическую функцию) Всего их очевидно столько сколько существует четырехразрядных двоичных чисел то есть 16 = 24 Из тех что мы еще не рассматривали наиболее интерес-ны две mdash штрих Шеффера (ldquoИndashНЕrdquo англ nand = ldquonot andrdquo)

A|B A B= sdot и стрелка Пирса (ldquoИЛИndashНЕrdquo англ nor = ldquonot orrdquo)

A B A Bdarr = + Особенность этих операций состоит в том что с помощью любой одной из них можно записать произвольную

логическую операцию Например операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (базовый набор) выражаются через штрих Шеф-фера так

A A|A= A B A|B A|B)| A|B)sdot = =( ( A B A|B A|A)| B|B)+ = =( (

Эти формулы можно доказать через таблицы истинности

Штрих Шеффера Стрелка Пирса

A B A|B A B A Bdarr

0 0 1 0 0 10 1 1 0 1 01 0 1 1 0 01 1 0 1 1 0

8 ИНФорматИка 10 2010

Логические выражения

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

А mdash ldquoПервый двигатель вышел из строяrdquoB mdash ldquoВторой двигатель вышел из строяrdquoC mdash ldquoТретий двигатель вышел из строяrdquoX mdash ldquoАварийная ситуацияrdquoТогда логическое высказывание X можно записать в виде формулы

X =(AmiddotB) + (AmiddotC) + (BmiddotC) ()Таким образом мы выполнили формализацию

Формализация mdash это переход от конкретного содержания к формальной записи с помощью некоторого языка

В логических выражениях операции выполняются в следующем порядке1) действия в скобках2) отрицание (ldquoНЕrdquo)3) логическое умножение (ldquoИrdquo)4) логическое сложение (ldquoИЛИrdquo) и ldquoисключающее ИЛИrdquo5) импликация6) эквивалентностьТакой порядок означает что все скобки в выражении () для X можно

убрать Порядок вычисления выражения можно так же как и для ариф-метических выражений определить с помощью дерева (см рисунок) Вы-числение начинается с листьев корень mdash это самая последняя операция

Здесь каждая операция выполняется с двумя значениями Такие операции называются бинарными (от лат bis mdash дважды) или двуместными

Операции которые выполняются над одной величиной называют унарными (от лат uno mdash один) или одномест-ными Пример унарной логической операции mdash это отрицание (операция ldquoНЕrdquo)

Любую формулу можно задать с помощью таблицы истинности которая показывает чему равно значение логического выражения при всех возможных комбинациях значений исходных переменных Сложные выражения удобно разбить на несколько более простых сначала вычислить значения этих промежуточных величин а затем mdash окончательный результат

A B C AmiddotB AmiddotC BmiddotC X0 0 0 0 0 0 00 0 1 0 0 0 00 1 0 0 0 0 00 1 1 0 0 1 11 0 0 0 0 0 01 0 1 0 1 0 11 1 0 1 0 0 11 1 1 1 1 1 1

Рассмотрим формулу () Выражение в правой части зависит от трех переменных поэтому существует 23 = 8 комбинаций их значений Таблица истинности выглядит так как показано выше По ней видно что при некоторых значениях переменных значение X истинно а при некоторых mdash ложно Такие выражения называют вычислимыми

Высказывание ldquoВася mdash школьник или он не учится в школеrdquo всегда истинно (для любого Васи) Оно может быть записано в виде логического выражения A A+ Выражение истинное при любых значениях переменных называет-ся тождественно истинным или тавтологией

Высказывание ldquoсегодня безветрие и дует сильный ветерrdquo никогда не может быть истинным Соответствующее логическое выражение A Asdot всегда ложно оно называется тождественно ложным или противоречием

Если два выражения принимают одинаковые значения при всех значениях переменных они называются равно-сильными или тождественно равными Например равносильны выражения A Brarr и A B+ Равносильные выраже-ния определяют одну и ту же логическую функцию то есть при одинаковых исходных данных приводят к одинако-вым результатам

Некоторые задачи

Рассмотрим ряд задач в которых требуется исследовать логическое выражениеЗадача 1 Каково наибольшее целое число X при котором истинно высказывание

A (90 X ) (80 (X 2))2 2= lt rarr gt +

+

+

bull bull

bull

A A

C

C

B

B

9 12 2010 ИНФорматИка

Сначала удобно заменить импликацию по формуле A B A Brarr = + Отрицание для высказывания 90 X2lt запишется как 90 X2ge поэтому

A (90 X )2= ge или (80 (X 2))2gt + В этой задаче нас интересуют только целые числа Поэтому условие 90 X2ge можно заменить на X 9le или

9 Xminus le le9 а условие 80 (X 2)2gt + mdash на X 2 8+ le или -10 X 6le le Таким образом требуется выбрать наибольшее целое число которое входит в один или в другой промежуток

x

9

6

ndash9ndash10

Это число mdash 9Задача 2 A B и С mdash целые числа для которых истинно высказывание

X (A B)((A B) (B C))((B A) (C B))= = sdot gt rarr gt sdot gt rarr gtЧему равно В если A = 27 и C = 25Это сложное высказывание состоит из трех простых

(A B)= (A B) (B C)gt rarr gt (B A) (C B)gt rarr gtОни связаны операцией ldquoИrdquo то есть должны выполняться одновременноИз (A B) 1= = сразу следует что A Bne Предположим что A Bgt тогда из второго условия получаем 1 (B C)rarr gt Это

выражение может быть истинно тогда и только тогда когда (B C) 1gt = поэтому имеем A B Cgt gt этому условию со-ответствует только число 26

На всякий случай проверим и вариант A Blt тогда из второго условия получаем 0 (B C)rarr gt это выражение ис-тинно при любом B Теперь проверяем третье условие получаем 1 (C B) 1rarr gt = это выражение может быть истин-но тогда и только тогда когда C Bgt и тут мы получили противоречие потому что нет такого числа B для которого C B Agt gt Таким образом правильный ответ mdash 26

Контрольные вопросы

1 Даны два высказывания A mdash ldquoВ Африке водятся жирафыrdquo и B mdash ldquoВ Мурманске идет снегrdquo Постройте из них различные сложные высказывания

2 Дано высказывание ldquoВинни-Пух любит мед и дверь в дом открытаrdquo Как бы вы сформулировали отрицание этого высказывания

3 Что такое таблица истинности4 Почему в таблице истинности для операции ldquoНЕrdquo две строки а для других изученных операций mdash четыре

Сколько строчек в таблице истинности выражения с тремя переменными с четырьмя с пятью5 В каком порядке обычно записываются значения переменных в таблице истинности6 Когда истинно высказывание ldquoA и Brdquo ldquoА или Brdquo7 Какие электрические схемы можно использовать для иллюстрации операций ldquoИrdquo и ldquoИЛИrdquo8 Какие знаки применяют для обозначения операций ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo9 Почему операция ldquoИrdquo называется логическим умножением а ldquoИЛИrdquo mdash логическим сложением10 В чем отличие ldquoобычногоrdquo и логического сложения11 Сколько существует различных логических операций с двумя переменными С тремя переменными12 Чем отличается операция ldquoисключающее ИЛИrdquo от ldquoИЛИrdquo13 Почему операция ldquoисключающее ИЛИrdquo называется сложением по модулю 214 Как записать выражение A Boplus с помощью базового набора операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo)15 Как можно доказать или опровергнуть логическую формулу16 Какими интересными свойствами обладает операция ldquoисключающее ИЛИrdquo17 Что значит выражение ldquoобратимая операцияrdquo Какие изученные логические операции являются обратимыми18 Какое свойство операции ldquoисключающее ИЛИrdquo позволяет использовать ее для простейшего шифрования19 Чем отличается смысл высказывания ldquoесли A то Brdquo в обычной речи и в математической логике20 Запишите в виде формулы высказывание ldquoесли утюг горячий то лоб холодныйrdquo21 Запишите в виде формулы высказывание ldquoневерно что если утюг горячий то лоб холодныйrdquo Можно ли в этом

случае сразу сказать какой утюг и какой лоб22 Как выразить импликацию через операции ldquoНЕrdquo и ldquoИЛИrdquo Докажите эту формулу23 Как выразить эквивалентность через операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo Докажите эту формулу24 Чем интересны операции ldquoштрих Шеффераrdquo и ldquoстрелка Пирсаrdquo25 Докажите формулы позволяющие представить базовые логические операции через штрих Шеффера Попро-

буйте построить и доказать аналогичные формулы для операции ldquoстрелка Пирсаrdquo26 Что такое формализация27 В каком порядке выполняются действия в логических выражениях 28 Что можно сделать для того чтобы изменить ldquoестественныйrdquo порядок действий

10 ИНФорматИка 12 2010

29 Какие операции называются бинарными и унарными Приведите примеры унарных и бинарных операций в математике

30 Поясните разницу между терминами ldquoлогическое выражениеrdquo и ldquoлогическая функцияrdquo31 Можно ли сказать что таблица истинности однозначно определяета) логическое выражениеб) логическую функцию32 Что такое вычислимое логическое выражение 33 Что такое тавтология противоречие Приведите примеры34 Что такое равносильные выражения

Задачи

1 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) A B A Bsdot + sdot ж) A C B Csdot + sdotб) A B A B A Bsdot + sdot + sdot з) ( ) ( )A C B C+ + +в) ( ) ( ) ( )A B A B A B+ + + sdot + и) ( ) ( )A C B Csdot sdot sdotг) A B B C C Asdot + sdot + sdot к) A C B C C A Bsdot + sdot + sdot +( )) ( )A C B C C A Bsdot + sdot + sdot +( )) ( )

д) A B C A B C B Csdot sdot + sdot sdot + sdot л) A C B C B A Csdot + + + sdot sdot( ( )) ( )е) A B C A C Bsdot sdot + sdot +( ) ( )

2 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) ( ) ( )A B A Brarr + rarr е) ( ) ( )A B A Crarr rarr rarrб) ( ) ( )A B A Brarr sdot rarr ж) ( )A B B Csdot rarr +

в) ( ) ( )A B A Bsdot rarr + з) ( ) ( )A B A Crarr rarr rarrг) ( ) ( )A B A B+ rarr sdot и) ( ) ( )A B A Bharr + harr

д) ( ) ( ) ( )A B A C A Crarr sdot + sdot rarr к) ( ) ( ) ( )A B A C B Charr + harr + harr3 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z

Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а б)

X Y Z F

1 1 1 11 1 0 11 0 0 1

4 Для предыдущего задания определите сколько различных логических функций соответствует заданной частич-ной таблице истинности (Ответ 32)

5 Задано 5 строк таблицы истинности некоторого логического выражения с тремя переменными Сколько раз-личных логических функций ей соответствуют (Ответ 8)

6 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет б г)

X Y Z F

0 1 0 01 1 0 10 1 1 0

7 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а в)

X Y Z F

1 0 0 10 0 0 11 1 1 0

8 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ а)

а) X Y Z+ +б) X Y Z+ +в) X Y Z+ +г) X Y Z+ +

а) X Y Z+ +б) X Y Zsdot sdotв) X Y Zsdot sdotг) X Y Z+ sdot

а) X (Y Z)rarr +б) X Y Zsdot sdotв) X Y Z+ +г) X Y Z+ +

11 12 2010 ИНФорматИка

X Y Z F

1 0 0 10 0 0 01 1 1 0

9 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ б г)

X Y Z F

0 0 0 00 1 1 11 0 0 1

10 Определите значение логического выражения (X 2) (X 3)gt rarr gt для X = 1 2 3 4 (Ответ 1 1 0 1)11 Определите значение логического выражения

((X 5) (X 3))((X 2) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 1 0 0)12 Определите значение логического выражения

((X 3) (X 3)) (X 1)gt + lt rarr lt для X = 1 2 3 4(Ответ 0 0 1 0)13 Определите значение логического выражения

((X 4) (X 3))((X 3) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 0 0 1)14 Определите значение логического выражения

(X(X ndash 8) gt 2X ndash 25)(X(X 8) 2 X-25) (X 7)minus gt rarr gt для X = 4 5 6 7(Ответ 0 1 0 0)15 Найдите все целые значения X при которых логическое выражение

(X 2) (X 5)gt rarr gt ложно(Ответ 3 4 5)16 Найдите все целые значения X при которых логическое выражение

((X 0) (X 4)) (X 4)gt + gt rarr gt ложно (Ответ 1 2 3 4)17 Автопилот может работать если исправен главный бортовой компьютер или два вспомогательных Выполните формали-

зацию и запишите логические формулы для высказываний ldquoавтопилот работоспособенrdquo и ldquoавтопилот неработоспособенrdquo18 Каково наибольшее целое положительное число X при котором истинно высказывание

(X(X 3) X 9) (X(X 2) X 11)2 2+ gt + rarr + le + (Ответ 5)19 Каково наибольшее целое положительное число X при котором истинно высказывание

(121 X ) (X X 5)2lt rarr lt + (Ответ 11)20 Каково наибольшее целое положительное число X при котором ложно высказывание

(X(X 6) 9 0) (X 45)2+ + gt rarr gt (Ответ 6)21 Каково наибольшее целое положительное число X при котором истинно высказывание

(X -1 100) (X(X-1) 100)2 gt rarr lt (Ответ 10)22 Каково наибольшее целое положительное число X при котором ложно высказывание

(7X-3 75) (X(X-1) 65)lt rarr gt (Ответ 8)23 Известно что для чисел A B и C истинно высказывание

((C A) (C B))((C 1) A)((C 1) B)lt + lt sdot + lt sdot + lt а) Чему равно C если A = 25 и B = 48б) Чему равно C если A = 45 и B = 18(Ответ 47 44)24 Известно что для чисел A B и C истинно высказывание

(A B)((B A) (2C A))((A B) (A 2C))= sdot lt rarr gt sdot lt rarr gt Чему равно A если C = 10 и B = 22(Ответ 21)

а) X Y Zsdot sdotб) X (Y Z)rarr +в) X Y Z+ +г) Y (X Z)rarr sdot

а) (X Y) Z+ rarr

б) (X Y) Z+ rarrв) X (Y Z)+ rarrг) X Y Z+ sdot

12 ИНФорматИка 12 2010

3 Диаграммы

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

На такой диаграмме каждой переменной соответствует круг внутри которого она равна единице а вне его mdash нулю Круги пересекаются каждый с каждым Области в которых рассматриваемое логическое выражение истинно закрашиваются каким-либо цветом Ниже приведены диаграммы для простейших операций с одной и двумя пере-менными Серым цветом залиты области где рассматриваемое выражение равно единице

A A Bsdot A B+ A Brarr

A

A

В

A

В

A

В

Такие диаграммы часто используются при работе с множествами операция ldquoИrdquo соответствует пересечению двух множеств а ldquoИЛИrdquo mdash объединению

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

С

2

18

4

756

3

Для того чтобы найти выражение для объединения двух или нескольких областей надо сложить (используя логи-ческое сложение mdash операцию ldquoИЛИrdquo) выражения для всех составляющих Например выражение для объединения областей 3 и 4 имеет вид

3 + 4 A B Csdot sdot + A B Csdot sdot С другой стороны можно заметить что справедлива формула3 + 4 B Csdot Это означает что логические выражения в некоторых случаях можно упростить Как это делается вы узнаете в

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

множества ссылок полученных от поисковой системы в ответ на какой-то запрос Рассмотрим такую задачу

Известно количество ссылок которые находит поисковый сервер по следующим запросам (здесь символ ldquoamprdquo обозначает операцию ldquoИrdquo а ldquo|rdquo mdash операцию ldquoИЛИrdquo)

собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросу(кошки|собаки)ampлемуры

Обозначим буквами С К и Л высказывания ldquoключевое слово mdash собакиrdquo ldquoключевое слово mdash кошкиrdquo и ldquoключевое слово mdash лемурыrdquo Построим диаграмму с тремя перемен-ными и выделим интересующую область которая соответствует запросу

(кошки|собаки)ampлемурыНа рисунке эта область закрашена желтым цветомВ общем виде задача очень сложна Попробуем найти какое-нибудь упрощающее усло-

вие Например выделим три условия

1 A B Csdot sdot2 A B Csdot sdot3 A B Csdot sdot4 A B Csdot sdot

5 A B Csdot sdot6 A B Csdot sdot7 A B Csdot sdot8 A B Csdot sdot

КС

Л

13 12 2010 ИНФорматИка

собаки 200кошки 250кошки|собаки 450

Это означает что область ldquoкошки ИЛИ собакиrdquo равна сумме областей ldquoкошкиrdquo и ldquoсобакиrdquo то есть эти области не пересекаются Таким образом в нашем случае диаграмма выглядит так

КC

Л

1 2

Области 1 (собакиampлемуры) и 2 (кошкиampлемуры) нам известны они составляют соответственно 40 и 50 ссылок поэтому по запросу (кошки|собаки)ampлемуры поисковый сервер выдаст 40 + 50 = 90 ссылок

Задачи

1 Используя диаграмму с тремя переменными запишите логические выражения для объединения об-ластей 2 + 5 3 + 6 4 + 7 6 + 7 5 + 6 5 + 8 7 + 8 Для каждой сложной области найдите два эквивалентных выражения

2 Известно количество ссылок которые находит поисковый сервер по следующим запросам собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 810)3 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 250кошки 200лемуры 500собакиampлемуры 0собакиampкошки 20кошкиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 920)4 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 120кошки 270лемуры 100кошки|собаки 390кошкиampлемуры 20собакиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 460)

4 Упрощение логических выражений

Законы алгебры логики

Для упрощения логических выражений используют законы алгебры логики Они формулируются для базовых логических операций mdash ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

Закон двойного отрицания означает что операция ldquoНЕrdquo обратима если применить ее два раза логическое значе-ние не изменится Закон исключения третьего основан на том что любое логическое выражение либо истинно либо ложно (ldquoтретьего не даноrdquo) Поэтому если A 1= то A 0= (и наоборот) так что произведение этих величин всегда равно нулю а сумма mdash единице

14 ИНФорматИка 12 2010

Операции с константами и закон повторения легко проверяются по таблицам истинности операций ldquoИrdquo и ldquoИЛИrdquo Переместительный и сочетательный законы выглядят вполне привычно так же как и в математике Почти везде ldquoработаетrdquo аналогия с обычной алгеброй нужно только помнить что в логике 1 + 1 = 1 а не 2

Закон для ldquoИrdquo для ldquoИЛИrdquoдвойного отрицания A A=

исключения третьего A A 0sdot = A A 1+ =

операции с константами A 1 Asdot = A 0 0sdot = A 1 1+ = A 0 A+ =

повторения A A Asdot = A A A+ =

переместительный A B B Asdot = sdot A B B A+ = +

сочетательный A (B C) (A B) Csdot sdot = sdot sdot A (B C) (A B) C+ + = + +

распределительный A B C (A B)(A C)+ sdot = + sdot + A (B C) A B A Csdot + = sdot + sdot

поглощения A A B A+ sdot = A (A B) Asdot + =

законы де Моргана A B A Bsdot = + A B A Bsdot = +

Распределительный закон для ldquoИЛИrdquo mdash это обычное раскрытие скобок А вот для операции ldquoИrdquo мы видим не-знакомое выражение в математике это равенство неверно Доказательство можно начать с правой части раскрыв скобки

(A B)(A C) A A A C B A B C+ sdot + = sdot + sdot + sdot + sdot

Дальше используем закон повторения ( A A Asdot = ) и заметим что A A C A (1 C) A 1 A+ sdot = sdot + = sdot =

Аналогично доказываем что A B A A (1 B) A+ sdot = sdot + = таким образом(A B)(A C) A B C+ sdot + = + sdot

Равенство доказано Попутно мы доказали также и закон поглощения для операции ldquoИrdquo (для ldquoИЛИrdquo вы можете сделать это самостоятельно) Отметим что из распределительного закона следует полезная формула

A A B (A A)(A B) A B+ sdot = + sdot + = + Правила позволяющие раскрывать отрицание сложных выражений названы в честь

шотландского математика и логика де Моргана Обратите внимание что при этом не просто ldquoобщееrdquo отрицание переходит на отдельные выражения но и операция ldquoИrdquo за-меняется на ldquoИЛИrdquo (и наоборот) Доказать законы де Моргана можно с помощью та-блиц истинности

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

A B Csdot sdot + A B Csdot sdot =(A A) B C B C+ sdot sdot = sdot Здесь мы сначала вынесли общий множитель двух слагаемых за скобки а затем примени-

ли закон исключения третьегоВ общем случае можно рекомендовать такую последовательность действий1 Заменить все ldquoнебазовыеrdquo операции (исключающее ИЛИ импликацию эквивалент-

ность и др) на их выражения через базовые операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo 2 Раскрыть отрицания сложных выражений по законам де Моргана так чтобы операции отрицания остались

только у отдельных переменных3 Используя вынесение общих множителей за скобки раскрытие скобок и другие законы алгебры логики упро-

стить выражение Пример

(A B)(A B)(A C)+ sdot + sdot + =(A B) A B (A C)+ sdot sdot sdot + =(A A B A) B (A C)sdot + sdot sdot sdot + == B A B (A C)sdot sdot sdot + = A B B (A C)sdot sdot sdot + = A B (A C)sdot sdot + = B A (A C)sdot sdot + = B Asdot

Здесь последовательно использованы закон де Моргана распределительный закон закон исключения третьего переместительный закон закон повторения снова переместительный закон и закон поглощения

Логические уравнения

Если приравнять два логических выражения мы получим уравнение Его решением будут значения переменных при которых уравнение превращается в тождество то есть значения левой и правой частей совпадают Например уравнение A B 1sdot = имеет единственное решение A B 1= = для остальных комбинаций значений переменных левая часть равна нулю В то же время уравнение A B 1+ = имеет три решения ( A 0= B 1= ) ( A 1= B 0= ) и A B 1= =

А де МорганИллюстрация с сайта

wwwyorkacuk

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 7: Inf 2010-12

7 12 2010 ИНФорматИка

Разобраться с импликацией будет легче если мы рассмотрим конкретное высказывание например такое ldquoЕсли хорошо работаешь то получаешь большую зарплатуrdquo Обозначим буквами два простых высказывания A mdash ldquoхорошо работаешьrdquo и B mdash ldquoполучаешь большую зарплатуrdquo Понятно что если высказывание A Brarr истинно то все кто хоро-шо работают (A = 1) должны получать большую зарплату (B = 1) Если же кто-то работает хорошо (A = 1) а получает мало (B = 0) то высказывание A Brarr ложно

Лодыри и бездельники (A = 0) могут получать как маленькую (B = 0) так и большую зарплату (B = 1) это не нарушает справедливость высказывания A Brarr Иногда определяя импликацию говорят так из истины следует истина а из лжи mdash что угодно Это значит что при ложном высказывании A высказывание B может быть как ложно так и истинно

Нужно обратить внимание на разницу между высказываниями вида ldquoесли A то Brdquo в обычной жизни и в алгебре логики В быту мы чаще всего имеем в виду что существует причинно-следственная связь между A и B то есть имен-но A вызывает B Алгебра логики не устанавливает взаимосвязь явлений истинность высказывания A Brarr говорит только о возможности такой связи Например с точки зрения алгебры логики может быть истинным высказывание ldquoесли Вася mdash студент то Петя mdash лыжникrdquo

Импликация чаще всего используется при решении логических задач Например условие ldquoесли A то Brdquo можно записать в виде A B 1rarr =

Для импликации (в отличие от других изученных операций с двумя переменными) не действует переместитель-ный закон если в записи A Brarr поменять местами A и B то результат изменится A B B Ararr ne rarr Внешне это видно по стрелке которая указывает ldquoнаправлениеrdquo

Импликацию можно заменить на выражение использующее только базовые операции (здесь mdash только ldquoНЕrdquo и ldquoИЛИrdquo)

A B A Brarr = + Доказать это равенство вы уже можете самостоятельно

Эквивалентность

A B A Bharr0 0 10 1 01 0 01 1 1

Эквивалентность (также эквиваленция равносильность) mdash это логическая операция которая соответствует связке ldquoтогда и только тогдаrdquo Высказывание A Bharr истинно в том и только в том случае когда A = B (см таблицу истинности)

Возможно вы заметили что эквивалентность mdash это обратная операция для ldquoисключающего ИЛИrdquo (проверьте по таблицам истинности) то есть

A B A Bharr = oplus Здесь черта сверху охватывающая все выражение в правой части равенства означает отрицание (инверсию) ко-

торое применяется к результату вычисления выражения A Boplus а не к отдельным высказываниям Можно заменить эквивалентность выражением которое включает только базовые логические операции

A B A B A Bharr = sdot + sdot Эту формулу вы можете доказать (или опровергнуть) самостоятельно

Другие логические операции

Мы уже говорили что существуют и другие логические операции Таблицы истинности операций с двумя переменными содержат 4 строки и отличаются только значением последнего столбца Поэтому любая новая комбинация нулей и единиц в этом столбце дает новую логическую операцию (логическую функцию) Всего их очевидно столько сколько существует четырехразрядных двоичных чисел то есть 16 = 24 Из тех что мы еще не рассматривали наиболее интерес-ны две mdash штрих Шеффера (ldquoИndashНЕrdquo англ nand = ldquonot andrdquo)

A|B A B= sdot и стрелка Пирса (ldquoИЛИndashНЕrdquo англ nor = ldquonot orrdquo)

A B A Bdarr = + Особенность этих операций состоит в том что с помощью любой одной из них можно записать произвольную

логическую операцию Например операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (базовый набор) выражаются через штрих Шеф-фера так

A A|A= A B A|B A|B)| A|B)sdot = =( ( A B A|B A|A)| B|B)+ = =( (

Эти формулы можно доказать через таблицы истинности

Штрих Шеффера Стрелка Пирса

A B A|B A B A Bdarr

0 0 1 0 0 10 1 1 0 1 01 0 1 1 0 01 1 0 1 1 0

8 ИНФорматИка 10 2010

Логические выражения

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

А mdash ldquoПервый двигатель вышел из строяrdquoB mdash ldquoВторой двигатель вышел из строяrdquoC mdash ldquoТретий двигатель вышел из строяrdquoX mdash ldquoАварийная ситуацияrdquoТогда логическое высказывание X можно записать в виде формулы

X =(AmiddotB) + (AmiddotC) + (BmiddotC) ()Таким образом мы выполнили формализацию

Формализация mdash это переход от конкретного содержания к формальной записи с помощью некоторого языка

В логических выражениях операции выполняются в следующем порядке1) действия в скобках2) отрицание (ldquoНЕrdquo)3) логическое умножение (ldquoИrdquo)4) логическое сложение (ldquoИЛИrdquo) и ldquoисключающее ИЛИrdquo5) импликация6) эквивалентностьТакой порядок означает что все скобки в выражении () для X можно

убрать Порядок вычисления выражения можно так же как и для ариф-метических выражений определить с помощью дерева (см рисунок) Вы-числение начинается с листьев корень mdash это самая последняя операция

Здесь каждая операция выполняется с двумя значениями Такие операции называются бинарными (от лат bis mdash дважды) или двуместными

Операции которые выполняются над одной величиной называют унарными (от лат uno mdash один) или одномест-ными Пример унарной логической операции mdash это отрицание (операция ldquoНЕrdquo)

Любую формулу можно задать с помощью таблицы истинности которая показывает чему равно значение логического выражения при всех возможных комбинациях значений исходных переменных Сложные выражения удобно разбить на несколько более простых сначала вычислить значения этих промежуточных величин а затем mdash окончательный результат

A B C AmiddotB AmiddotC BmiddotC X0 0 0 0 0 0 00 0 1 0 0 0 00 1 0 0 0 0 00 1 1 0 0 1 11 0 0 0 0 0 01 0 1 0 1 0 11 1 0 1 0 0 11 1 1 1 1 1 1

Рассмотрим формулу () Выражение в правой части зависит от трех переменных поэтому существует 23 = 8 комбинаций их значений Таблица истинности выглядит так как показано выше По ней видно что при некоторых значениях переменных значение X истинно а при некоторых mdash ложно Такие выражения называют вычислимыми

Высказывание ldquoВася mdash школьник или он не учится в школеrdquo всегда истинно (для любого Васи) Оно может быть записано в виде логического выражения A A+ Выражение истинное при любых значениях переменных называет-ся тождественно истинным или тавтологией

Высказывание ldquoсегодня безветрие и дует сильный ветерrdquo никогда не может быть истинным Соответствующее логическое выражение A Asdot всегда ложно оно называется тождественно ложным или противоречием

Если два выражения принимают одинаковые значения при всех значениях переменных они называются равно-сильными или тождественно равными Например равносильны выражения A Brarr и A B+ Равносильные выраже-ния определяют одну и ту же логическую функцию то есть при одинаковых исходных данных приводят к одинако-вым результатам

Некоторые задачи

Рассмотрим ряд задач в которых требуется исследовать логическое выражениеЗадача 1 Каково наибольшее целое число X при котором истинно высказывание

A (90 X ) (80 (X 2))2 2= lt rarr gt +

+

+

bull bull

bull

A A

C

C

B

B

9 12 2010 ИНФорматИка

Сначала удобно заменить импликацию по формуле A B A Brarr = + Отрицание для высказывания 90 X2lt запишется как 90 X2ge поэтому

A (90 X )2= ge или (80 (X 2))2gt + В этой задаче нас интересуют только целые числа Поэтому условие 90 X2ge можно заменить на X 9le или

9 Xminus le le9 а условие 80 (X 2)2gt + mdash на X 2 8+ le или -10 X 6le le Таким образом требуется выбрать наибольшее целое число которое входит в один или в другой промежуток

x

9

6

ndash9ndash10

Это число mdash 9Задача 2 A B и С mdash целые числа для которых истинно высказывание

X (A B)((A B) (B C))((B A) (C B))= = sdot gt rarr gt sdot gt rarr gtЧему равно В если A = 27 и C = 25Это сложное высказывание состоит из трех простых

(A B)= (A B) (B C)gt rarr gt (B A) (C B)gt rarr gtОни связаны операцией ldquoИrdquo то есть должны выполняться одновременноИз (A B) 1= = сразу следует что A Bne Предположим что A Bgt тогда из второго условия получаем 1 (B C)rarr gt Это

выражение может быть истинно тогда и только тогда когда (B C) 1gt = поэтому имеем A B Cgt gt этому условию со-ответствует только число 26

На всякий случай проверим и вариант A Blt тогда из второго условия получаем 0 (B C)rarr gt это выражение ис-тинно при любом B Теперь проверяем третье условие получаем 1 (C B) 1rarr gt = это выражение может быть истин-но тогда и только тогда когда C Bgt и тут мы получили противоречие потому что нет такого числа B для которого C B Agt gt Таким образом правильный ответ mdash 26

Контрольные вопросы

1 Даны два высказывания A mdash ldquoВ Африке водятся жирафыrdquo и B mdash ldquoВ Мурманске идет снегrdquo Постройте из них различные сложные высказывания

2 Дано высказывание ldquoВинни-Пух любит мед и дверь в дом открытаrdquo Как бы вы сформулировали отрицание этого высказывания

3 Что такое таблица истинности4 Почему в таблице истинности для операции ldquoНЕrdquo две строки а для других изученных операций mdash четыре

Сколько строчек в таблице истинности выражения с тремя переменными с четырьмя с пятью5 В каком порядке обычно записываются значения переменных в таблице истинности6 Когда истинно высказывание ldquoA и Brdquo ldquoА или Brdquo7 Какие электрические схемы можно использовать для иллюстрации операций ldquoИrdquo и ldquoИЛИrdquo8 Какие знаки применяют для обозначения операций ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo9 Почему операция ldquoИrdquo называется логическим умножением а ldquoИЛИrdquo mdash логическим сложением10 В чем отличие ldquoобычногоrdquo и логического сложения11 Сколько существует различных логических операций с двумя переменными С тремя переменными12 Чем отличается операция ldquoисключающее ИЛИrdquo от ldquoИЛИrdquo13 Почему операция ldquoисключающее ИЛИrdquo называется сложением по модулю 214 Как записать выражение A Boplus с помощью базового набора операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo)15 Как можно доказать или опровергнуть логическую формулу16 Какими интересными свойствами обладает операция ldquoисключающее ИЛИrdquo17 Что значит выражение ldquoобратимая операцияrdquo Какие изученные логические операции являются обратимыми18 Какое свойство операции ldquoисключающее ИЛИrdquo позволяет использовать ее для простейшего шифрования19 Чем отличается смысл высказывания ldquoесли A то Brdquo в обычной речи и в математической логике20 Запишите в виде формулы высказывание ldquoесли утюг горячий то лоб холодныйrdquo21 Запишите в виде формулы высказывание ldquoневерно что если утюг горячий то лоб холодныйrdquo Можно ли в этом

случае сразу сказать какой утюг и какой лоб22 Как выразить импликацию через операции ldquoНЕrdquo и ldquoИЛИrdquo Докажите эту формулу23 Как выразить эквивалентность через операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo Докажите эту формулу24 Чем интересны операции ldquoштрих Шеффераrdquo и ldquoстрелка Пирсаrdquo25 Докажите формулы позволяющие представить базовые логические операции через штрих Шеффера Попро-

буйте построить и доказать аналогичные формулы для операции ldquoстрелка Пирсаrdquo26 Что такое формализация27 В каком порядке выполняются действия в логических выражениях 28 Что можно сделать для того чтобы изменить ldquoестественныйrdquo порядок действий

10 ИНФорматИка 12 2010

29 Какие операции называются бинарными и унарными Приведите примеры унарных и бинарных операций в математике

30 Поясните разницу между терминами ldquoлогическое выражениеrdquo и ldquoлогическая функцияrdquo31 Можно ли сказать что таблица истинности однозначно определяета) логическое выражениеб) логическую функцию32 Что такое вычислимое логическое выражение 33 Что такое тавтология противоречие Приведите примеры34 Что такое равносильные выражения

Задачи

1 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) A B A Bsdot + sdot ж) A C B Csdot + sdotб) A B A B A Bsdot + sdot + sdot з) ( ) ( )A C B C+ + +в) ( ) ( ) ( )A B A B A B+ + + sdot + и) ( ) ( )A C B Csdot sdot sdotг) A B B C C Asdot + sdot + sdot к) A C B C C A Bsdot + sdot + sdot +( )) ( )A C B C C A Bsdot + sdot + sdot +( )) ( )

д) A B C A B C B Csdot sdot + sdot sdot + sdot л) A C B C B A Csdot + + + sdot sdot( ( )) ( )е) A B C A C Bsdot sdot + sdot +( ) ( )

2 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) ( ) ( )A B A Brarr + rarr е) ( ) ( )A B A Crarr rarr rarrб) ( ) ( )A B A Brarr sdot rarr ж) ( )A B B Csdot rarr +

в) ( ) ( )A B A Bsdot rarr + з) ( ) ( )A B A Crarr rarr rarrг) ( ) ( )A B A B+ rarr sdot и) ( ) ( )A B A Bharr + harr

д) ( ) ( ) ( )A B A C A Crarr sdot + sdot rarr к) ( ) ( ) ( )A B A C B Charr + harr + harr3 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z

Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а б)

X Y Z F

1 1 1 11 1 0 11 0 0 1

4 Для предыдущего задания определите сколько различных логических функций соответствует заданной частич-ной таблице истинности (Ответ 32)

5 Задано 5 строк таблицы истинности некоторого логического выражения с тремя переменными Сколько раз-личных логических функций ей соответствуют (Ответ 8)

6 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет б г)

X Y Z F

0 1 0 01 1 0 10 1 1 0

7 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а в)

X Y Z F

1 0 0 10 0 0 11 1 1 0

8 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ а)

а) X Y Z+ +б) X Y Z+ +в) X Y Z+ +г) X Y Z+ +

а) X Y Z+ +б) X Y Zsdot sdotв) X Y Zsdot sdotг) X Y Z+ sdot

а) X (Y Z)rarr +б) X Y Zsdot sdotв) X Y Z+ +г) X Y Z+ +

11 12 2010 ИНФорматИка

X Y Z F

1 0 0 10 0 0 01 1 1 0

9 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ б г)

X Y Z F

0 0 0 00 1 1 11 0 0 1

10 Определите значение логического выражения (X 2) (X 3)gt rarr gt для X = 1 2 3 4 (Ответ 1 1 0 1)11 Определите значение логического выражения

((X 5) (X 3))((X 2) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 1 0 0)12 Определите значение логического выражения

((X 3) (X 3)) (X 1)gt + lt rarr lt для X = 1 2 3 4(Ответ 0 0 1 0)13 Определите значение логического выражения

((X 4) (X 3))((X 3) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 0 0 1)14 Определите значение логического выражения

(X(X ndash 8) gt 2X ndash 25)(X(X 8) 2 X-25) (X 7)minus gt rarr gt для X = 4 5 6 7(Ответ 0 1 0 0)15 Найдите все целые значения X при которых логическое выражение

(X 2) (X 5)gt rarr gt ложно(Ответ 3 4 5)16 Найдите все целые значения X при которых логическое выражение

((X 0) (X 4)) (X 4)gt + gt rarr gt ложно (Ответ 1 2 3 4)17 Автопилот может работать если исправен главный бортовой компьютер или два вспомогательных Выполните формали-

зацию и запишите логические формулы для высказываний ldquoавтопилот работоспособенrdquo и ldquoавтопилот неработоспособенrdquo18 Каково наибольшее целое положительное число X при котором истинно высказывание

(X(X 3) X 9) (X(X 2) X 11)2 2+ gt + rarr + le + (Ответ 5)19 Каково наибольшее целое положительное число X при котором истинно высказывание

(121 X ) (X X 5)2lt rarr lt + (Ответ 11)20 Каково наибольшее целое положительное число X при котором ложно высказывание

(X(X 6) 9 0) (X 45)2+ + gt rarr gt (Ответ 6)21 Каково наибольшее целое положительное число X при котором истинно высказывание

(X -1 100) (X(X-1) 100)2 gt rarr lt (Ответ 10)22 Каково наибольшее целое положительное число X при котором ложно высказывание

(7X-3 75) (X(X-1) 65)lt rarr gt (Ответ 8)23 Известно что для чисел A B и C истинно высказывание

((C A) (C B))((C 1) A)((C 1) B)lt + lt sdot + lt sdot + lt а) Чему равно C если A = 25 и B = 48б) Чему равно C если A = 45 и B = 18(Ответ 47 44)24 Известно что для чисел A B и C истинно высказывание

(A B)((B A) (2C A))((A B) (A 2C))= sdot lt rarr gt sdot lt rarr gt Чему равно A если C = 10 и B = 22(Ответ 21)

а) X Y Zsdot sdotб) X (Y Z)rarr +в) X Y Z+ +г) Y (X Z)rarr sdot

а) (X Y) Z+ rarr

б) (X Y) Z+ rarrв) X (Y Z)+ rarrг) X Y Z+ sdot

12 ИНФорматИка 12 2010

3 Диаграммы

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

На такой диаграмме каждой переменной соответствует круг внутри которого она равна единице а вне его mdash нулю Круги пересекаются каждый с каждым Области в которых рассматриваемое логическое выражение истинно закрашиваются каким-либо цветом Ниже приведены диаграммы для простейших операций с одной и двумя пере-менными Серым цветом залиты области где рассматриваемое выражение равно единице

A A Bsdot A B+ A Brarr

A

A

В

A

В

A

В

Такие диаграммы часто используются при работе с множествами операция ldquoИrdquo соответствует пересечению двух множеств а ldquoИЛИrdquo mdash объединению

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

С

2

18

4

756

3

Для того чтобы найти выражение для объединения двух или нескольких областей надо сложить (используя логи-ческое сложение mdash операцию ldquoИЛИrdquo) выражения для всех составляющих Например выражение для объединения областей 3 и 4 имеет вид

3 + 4 A B Csdot sdot + A B Csdot sdot С другой стороны можно заметить что справедлива формула3 + 4 B Csdot Это означает что логические выражения в некоторых случаях можно упростить Как это делается вы узнаете в

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

множества ссылок полученных от поисковой системы в ответ на какой-то запрос Рассмотрим такую задачу

Известно количество ссылок которые находит поисковый сервер по следующим запросам (здесь символ ldquoamprdquo обозначает операцию ldquoИrdquo а ldquo|rdquo mdash операцию ldquoИЛИrdquo)

собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросу(кошки|собаки)ampлемуры

Обозначим буквами С К и Л высказывания ldquoключевое слово mdash собакиrdquo ldquoключевое слово mdash кошкиrdquo и ldquoключевое слово mdash лемурыrdquo Построим диаграмму с тремя перемен-ными и выделим интересующую область которая соответствует запросу

(кошки|собаки)ampлемурыНа рисунке эта область закрашена желтым цветомВ общем виде задача очень сложна Попробуем найти какое-нибудь упрощающее усло-

вие Например выделим три условия

1 A B Csdot sdot2 A B Csdot sdot3 A B Csdot sdot4 A B Csdot sdot

5 A B Csdot sdot6 A B Csdot sdot7 A B Csdot sdot8 A B Csdot sdot

КС

Л

13 12 2010 ИНФорматИка

собаки 200кошки 250кошки|собаки 450

Это означает что область ldquoкошки ИЛИ собакиrdquo равна сумме областей ldquoкошкиrdquo и ldquoсобакиrdquo то есть эти области не пересекаются Таким образом в нашем случае диаграмма выглядит так

КC

Л

1 2

Области 1 (собакиampлемуры) и 2 (кошкиampлемуры) нам известны они составляют соответственно 40 и 50 ссылок поэтому по запросу (кошки|собаки)ampлемуры поисковый сервер выдаст 40 + 50 = 90 ссылок

Задачи

1 Используя диаграмму с тремя переменными запишите логические выражения для объединения об-ластей 2 + 5 3 + 6 4 + 7 6 + 7 5 + 6 5 + 8 7 + 8 Для каждой сложной области найдите два эквивалентных выражения

2 Известно количество ссылок которые находит поисковый сервер по следующим запросам собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 810)3 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 250кошки 200лемуры 500собакиampлемуры 0собакиampкошки 20кошкиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 920)4 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 120кошки 270лемуры 100кошки|собаки 390кошкиampлемуры 20собакиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 460)

4 Упрощение логических выражений

Законы алгебры логики

Для упрощения логических выражений используют законы алгебры логики Они формулируются для базовых логических операций mdash ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

Закон двойного отрицания означает что операция ldquoНЕrdquo обратима если применить ее два раза логическое значе-ние не изменится Закон исключения третьего основан на том что любое логическое выражение либо истинно либо ложно (ldquoтретьего не даноrdquo) Поэтому если A 1= то A 0= (и наоборот) так что произведение этих величин всегда равно нулю а сумма mdash единице

14 ИНФорматИка 12 2010

Операции с константами и закон повторения легко проверяются по таблицам истинности операций ldquoИrdquo и ldquoИЛИrdquo Переместительный и сочетательный законы выглядят вполне привычно так же как и в математике Почти везде ldquoработаетrdquo аналогия с обычной алгеброй нужно только помнить что в логике 1 + 1 = 1 а не 2

Закон для ldquoИrdquo для ldquoИЛИrdquoдвойного отрицания A A=

исключения третьего A A 0sdot = A A 1+ =

операции с константами A 1 Asdot = A 0 0sdot = A 1 1+ = A 0 A+ =

повторения A A Asdot = A A A+ =

переместительный A B B Asdot = sdot A B B A+ = +

сочетательный A (B C) (A B) Csdot sdot = sdot sdot A (B C) (A B) C+ + = + +

распределительный A B C (A B)(A C)+ sdot = + sdot + A (B C) A B A Csdot + = sdot + sdot

поглощения A A B A+ sdot = A (A B) Asdot + =

законы де Моргана A B A Bsdot = + A B A Bsdot = +

Распределительный закон для ldquoИЛИrdquo mdash это обычное раскрытие скобок А вот для операции ldquoИrdquo мы видим не-знакомое выражение в математике это равенство неверно Доказательство можно начать с правой части раскрыв скобки

(A B)(A C) A A A C B A B C+ sdot + = sdot + sdot + sdot + sdot

Дальше используем закон повторения ( A A Asdot = ) и заметим что A A C A (1 C) A 1 A+ sdot = sdot + = sdot =

Аналогично доказываем что A B A A (1 B) A+ sdot = sdot + = таким образом(A B)(A C) A B C+ sdot + = + sdot

Равенство доказано Попутно мы доказали также и закон поглощения для операции ldquoИrdquo (для ldquoИЛИrdquo вы можете сделать это самостоятельно) Отметим что из распределительного закона следует полезная формула

A A B (A A)(A B) A B+ sdot = + sdot + = + Правила позволяющие раскрывать отрицание сложных выражений названы в честь

шотландского математика и логика де Моргана Обратите внимание что при этом не просто ldquoобщееrdquo отрицание переходит на отдельные выражения но и операция ldquoИrdquo за-меняется на ldquoИЛИrdquo (и наоборот) Доказать законы де Моргана можно с помощью та-блиц истинности

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

A B Csdot sdot + A B Csdot sdot =(A A) B C B C+ sdot sdot = sdot Здесь мы сначала вынесли общий множитель двух слагаемых за скобки а затем примени-

ли закон исключения третьегоВ общем случае можно рекомендовать такую последовательность действий1 Заменить все ldquoнебазовыеrdquo операции (исключающее ИЛИ импликацию эквивалент-

ность и др) на их выражения через базовые операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo 2 Раскрыть отрицания сложных выражений по законам де Моргана так чтобы операции отрицания остались

только у отдельных переменных3 Используя вынесение общих множителей за скобки раскрытие скобок и другие законы алгебры логики упро-

стить выражение Пример

(A B)(A B)(A C)+ sdot + sdot + =(A B) A B (A C)+ sdot sdot sdot + =(A A B A) B (A C)sdot + sdot sdot sdot + == B A B (A C)sdot sdot sdot + = A B B (A C)sdot sdot sdot + = A B (A C)sdot sdot + = B A (A C)sdot sdot + = B Asdot

Здесь последовательно использованы закон де Моргана распределительный закон закон исключения третьего переместительный закон закон повторения снова переместительный закон и закон поглощения

Логические уравнения

Если приравнять два логических выражения мы получим уравнение Его решением будут значения переменных при которых уравнение превращается в тождество то есть значения левой и правой частей совпадают Например уравнение A B 1sdot = имеет единственное решение A B 1= = для остальных комбинаций значений переменных левая часть равна нулю В то же время уравнение A B 1+ = имеет три решения ( A 0= B 1= ) ( A 1= B 0= ) и A B 1= =

А де МорганИллюстрация с сайта

wwwyorkacuk

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 8: Inf 2010-12

8 ИНФорматИка 10 2010

Логические выражения

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

А mdash ldquoПервый двигатель вышел из строяrdquoB mdash ldquoВторой двигатель вышел из строяrdquoC mdash ldquoТретий двигатель вышел из строяrdquoX mdash ldquoАварийная ситуацияrdquoТогда логическое высказывание X можно записать в виде формулы

X =(AmiddotB) + (AmiddotC) + (BmiddotC) ()Таким образом мы выполнили формализацию

Формализация mdash это переход от конкретного содержания к формальной записи с помощью некоторого языка

В логических выражениях операции выполняются в следующем порядке1) действия в скобках2) отрицание (ldquoНЕrdquo)3) логическое умножение (ldquoИrdquo)4) логическое сложение (ldquoИЛИrdquo) и ldquoисключающее ИЛИrdquo5) импликация6) эквивалентностьТакой порядок означает что все скобки в выражении () для X можно

убрать Порядок вычисления выражения можно так же как и для ариф-метических выражений определить с помощью дерева (см рисунок) Вы-числение начинается с листьев корень mdash это самая последняя операция

Здесь каждая операция выполняется с двумя значениями Такие операции называются бинарными (от лат bis mdash дважды) или двуместными

Операции которые выполняются над одной величиной называют унарными (от лат uno mdash один) или одномест-ными Пример унарной логической операции mdash это отрицание (операция ldquoНЕrdquo)

Любую формулу можно задать с помощью таблицы истинности которая показывает чему равно значение логического выражения при всех возможных комбинациях значений исходных переменных Сложные выражения удобно разбить на несколько более простых сначала вычислить значения этих промежуточных величин а затем mdash окончательный результат

A B C AmiddotB AmiddotC BmiddotC X0 0 0 0 0 0 00 0 1 0 0 0 00 1 0 0 0 0 00 1 1 0 0 1 11 0 0 0 0 0 01 0 1 0 1 0 11 1 0 1 0 0 11 1 1 1 1 1 1

Рассмотрим формулу () Выражение в правой части зависит от трех переменных поэтому существует 23 = 8 комбинаций их значений Таблица истинности выглядит так как показано выше По ней видно что при некоторых значениях переменных значение X истинно а при некоторых mdash ложно Такие выражения называют вычислимыми

Высказывание ldquoВася mdash школьник или он не учится в школеrdquo всегда истинно (для любого Васи) Оно может быть записано в виде логического выражения A A+ Выражение истинное при любых значениях переменных называет-ся тождественно истинным или тавтологией

Высказывание ldquoсегодня безветрие и дует сильный ветерrdquo никогда не может быть истинным Соответствующее логическое выражение A Asdot всегда ложно оно называется тождественно ложным или противоречием

Если два выражения принимают одинаковые значения при всех значениях переменных они называются равно-сильными или тождественно равными Например равносильны выражения A Brarr и A B+ Равносильные выраже-ния определяют одну и ту же логическую функцию то есть при одинаковых исходных данных приводят к одинако-вым результатам

Некоторые задачи

Рассмотрим ряд задач в которых требуется исследовать логическое выражениеЗадача 1 Каково наибольшее целое число X при котором истинно высказывание

A (90 X ) (80 (X 2))2 2= lt rarr gt +

+

+

bull bull

bull

A A

C

C

B

B

9 12 2010 ИНФорматИка

Сначала удобно заменить импликацию по формуле A B A Brarr = + Отрицание для высказывания 90 X2lt запишется как 90 X2ge поэтому

A (90 X )2= ge или (80 (X 2))2gt + В этой задаче нас интересуют только целые числа Поэтому условие 90 X2ge можно заменить на X 9le или

9 Xminus le le9 а условие 80 (X 2)2gt + mdash на X 2 8+ le или -10 X 6le le Таким образом требуется выбрать наибольшее целое число которое входит в один или в другой промежуток

x

9

6

ndash9ndash10

Это число mdash 9Задача 2 A B и С mdash целые числа для которых истинно высказывание

X (A B)((A B) (B C))((B A) (C B))= = sdot gt rarr gt sdot gt rarr gtЧему равно В если A = 27 и C = 25Это сложное высказывание состоит из трех простых

(A B)= (A B) (B C)gt rarr gt (B A) (C B)gt rarr gtОни связаны операцией ldquoИrdquo то есть должны выполняться одновременноИз (A B) 1= = сразу следует что A Bne Предположим что A Bgt тогда из второго условия получаем 1 (B C)rarr gt Это

выражение может быть истинно тогда и только тогда когда (B C) 1gt = поэтому имеем A B Cgt gt этому условию со-ответствует только число 26

На всякий случай проверим и вариант A Blt тогда из второго условия получаем 0 (B C)rarr gt это выражение ис-тинно при любом B Теперь проверяем третье условие получаем 1 (C B) 1rarr gt = это выражение может быть истин-но тогда и только тогда когда C Bgt и тут мы получили противоречие потому что нет такого числа B для которого C B Agt gt Таким образом правильный ответ mdash 26

Контрольные вопросы

1 Даны два высказывания A mdash ldquoВ Африке водятся жирафыrdquo и B mdash ldquoВ Мурманске идет снегrdquo Постройте из них различные сложные высказывания

2 Дано высказывание ldquoВинни-Пух любит мед и дверь в дом открытаrdquo Как бы вы сформулировали отрицание этого высказывания

3 Что такое таблица истинности4 Почему в таблице истинности для операции ldquoНЕrdquo две строки а для других изученных операций mdash четыре

Сколько строчек в таблице истинности выражения с тремя переменными с четырьмя с пятью5 В каком порядке обычно записываются значения переменных в таблице истинности6 Когда истинно высказывание ldquoA и Brdquo ldquoА или Brdquo7 Какие электрические схемы можно использовать для иллюстрации операций ldquoИrdquo и ldquoИЛИrdquo8 Какие знаки применяют для обозначения операций ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo9 Почему операция ldquoИrdquo называется логическим умножением а ldquoИЛИrdquo mdash логическим сложением10 В чем отличие ldquoобычногоrdquo и логического сложения11 Сколько существует различных логических операций с двумя переменными С тремя переменными12 Чем отличается операция ldquoисключающее ИЛИrdquo от ldquoИЛИrdquo13 Почему операция ldquoисключающее ИЛИrdquo называется сложением по модулю 214 Как записать выражение A Boplus с помощью базового набора операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo)15 Как можно доказать или опровергнуть логическую формулу16 Какими интересными свойствами обладает операция ldquoисключающее ИЛИrdquo17 Что значит выражение ldquoобратимая операцияrdquo Какие изученные логические операции являются обратимыми18 Какое свойство операции ldquoисключающее ИЛИrdquo позволяет использовать ее для простейшего шифрования19 Чем отличается смысл высказывания ldquoесли A то Brdquo в обычной речи и в математической логике20 Запишите в виде формулы высказывание ldquoесли утюг горячий то лоб холодныйrdquo21 Запишите в виде формулы высказывание ldquoневерно что если утюг горячий то лоб холодныйrdquo Можно ли в этом

случае сразу сказать какой утюг и какой лоб22 Как выразить импликацию через операции ldquoНЕrdquo и ldquoИЛИrdquo Докажите эту формулу23 Как выразить эквивалентность через операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo Докажите эту формулу24 Чем интересны операции ldquoштрих Шеффераrdquo и ldquoстрелка Пирсаrdquo25 Докажите формулы позволяющие представить базовые логические операции через штрих Шеффера Попро-

буйте построить и доказать аналогичные формулы для операции ldquoстрелка Пирсаrdquo26 Что такое формализация27 В каком порядке выполняются действия в логических выражениях 28 Что можно сделать для того чтобы изменить ldquoестественныйrdquo порядок действий

10 ИНФорматИка 12 2010

29 Какие операции называются бинарными и унарными Приведите примеры унарных и бинарных операций в математике

30 Поясните разницу между терминами ldquoлогическое выражениеrdquo и ldquoлогическая функцияrdquo31 Можно ли сказать что таблица истинности однозначно определяета) логическое выражениеб) логическую функцию32 Что такое вычислимое логическое выражение 33 Что такое тавтология противоречие Приведите примеры34 Что такое равносильные выражения

Задачи

1 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) A B A Bsdot + sdot ж) A C B Csdot + sdotб) A B A B A Bsdot + sdot + sdot з) ( ) ( )A C B C+ + +в) ( ) ( ) ( )A B A B A B+ + + sdot + и) ( ) ( )A C B Csdot sdot sdotг) A B B C C Asdot + sdot + sdot к) A C B C C A Bsdot + sdot + sdot +( )) ( )A C B C C A Bsdot + sdot + sdot +( )) ( )

д) A B C A B C B Csdot sdot + sdot sdot + sdot л) A C B C B A Csdot + + + sdot sdot( ( )) ( )е) A B C A C Bsdot sdot + sdot +( ) ( )

2 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) ( ) ( )A B A Brarr + rarr е) ( ) ( )A B A Crarr rarr rarrб) ( ) ( )A B A Brarr sdot rarr ж) ( )A B B Csdot rarr +

в) ( ) ( )A B A Bsdot rarr + з) ( ) ( )A B A Crarr rarr rarrг) ( ) ( )A B A B+ rarr sdot и) ( ) ( )A B A Bharr + harr

д) ( ) ( ) ( )A B A C A Crarr sdot + sdot rarr к) ( ) ( ) ( )A B A C B Charr + harr + harr3 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z

Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а б)

X Y Z F

1 1 1 11 1 0 11 0 0 1

4 Для предыдущего задания определите сколько различных логических функций соответствует заданной частич-ной таблице истинности (Ответ 32)

5 Задано 5 строк таблицы истинности некоторого логического выражения с тремя переменными Сколько раз-личных логических функций ей соответствуют (Ответ 8)

6 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет б г)

X Y Z F

0 1 0 01 1 0 10 1 1 0

7 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а в)

X Y Z F

1 0 0 10 0 0 11 1 1 0

8 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ а)

а) X Y Z+ +б) X Y Z+ +в) X Y Z+ +г) X Y Z+ +

а) X Y Z+ +б) X Y Zsdot sdotв) X Y Zsdot sdotг) X Y Z+ sdot

а) X (Y Z)rarr +б) X Y Zsdot sdotв) X Y Z+ +г) X Y Z+ +

11 12 2010 ИНФорматИка

X Y Z F

1 0 0 10 0 0 01 1 1 0

9 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ б г)

X Y Z F

0 0 0 00 1 1 11 0 0 1

10 Определите значение логического выражения (X 2) (X 3)gt rarr gt для X = 1 2 3 4 (Ответ 1 1 0 1)11 Определите значение логического выражения

((X 5) (X 3))((X 2) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 1 0 0)12 Определите значение логического выражения

((X 3) (X 3)) (X 1)gt + lt rarr lt для X = 1 2 3 4(Ответ 0 0 1 0)13 Определите значение логического выражения

((X 4) (X 3))((X 3) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 0 0 1)14 Определите значение логического выражения

(X(X ndash 8) gt 2X ndash 25)(X(X 8) 2 X-25) (X 7)minus gt rarr gt для X = 4 5 6 7(Ответ 0 1 0 0)15 Найдите все целые значения X при которых логическое выражение

(X 2) (X 5)gt rarr gt ложно(Ответ 3 4 5)16 Найдите все целые значения X при которых логическое выражение

((X 0) (X 4)) (X 4)gt + gt rarr gt ложно (Ответ 1 2 3 4)17 Автопилот может работать если исправен главный бортовой компьютер или два вспомогательных Выполните формали-

зацию и запишите логические формулы для высказываний ldquoавтопилот работоспособенrdquo и ldquoавтопилот неработоспособенrdquo18 Каково наибольшее целое положительное число X при котором истинно высказывание

(X(X 3) X 9) (X(X 2) X 11)2 2+ gt + rarr + le + (Ответ 5)19 Каково наибольшее целое положительное число X при котором истинно высказывание

(121 X ) (X X 5)2lt rarr lt + (Ответ 11)20 Каково наибольшее целое положительное число X при котором ложно высказывание

(X(X 6) 9 0) (X 45)2+ + gt rarr gt (Ответ 6)21 Каково наибольшее целое положительное число X при котором истинно высказывание

(X -1 100) (X(X-1) 100)2 gt rarr lt (Ответ 10)22 Каково наибольшее целое положительное число X при котором ложно высказывание

(7X-3 75) (X(X-1) 65)lt rarr gt (Ответ 8)23 Известно что для чисел A B и C истинно высказывание

((C A) (C B))((C 1) A)((C 1) B)lt + lt sdot + lt sdot + lt а) Чему равно C если A = 25 и B = 48б) Чему равно C если A = 45 и B = 18(Ответ 47 44)24 Известно что для чисел A B и C истинно высказывание

(A B)((B A) (2C A))((A B) (A 2C))= sdot lt rarr gt sdot lt rarr gt Чему равно A если C = 10 и B = 22(Ответ 21)

а) X Y Zsdot sdotб) X (Y Z)rarr +в) X Y Z+ +г) Y (X Z)rarr sdot

а) (X Y) Z+ rarr

б) (X Y) Z+ rarrв) X (Y Z)+ rarrг) X Y Z+ sdot

12 ИНФорматИка 12 2010

3 Диаграммы

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

На такой диаграмме каждой переменной соответствует круг внутри которого она равна единице а вне его mdash нулю Круги пересекаются каждый с каждым Области в которых рассматриваемое логическое выражение истинно закрашиваются каким-либо цветом Ниже приведены диаграммы для простейших операций с одной и двумя пере-менными Серым цветом залиты области где рассматриваемое выражение равно единице

A A Bsdot A B+ A Brarr

A

A

В

A

В

A

В

Такие диаграммы часто используются при работе с множествами операция ldquoИrdquo соответствует пересечению двух множеств а ldquoИЛИrdquo mdash объединению

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

С

2

18

4

756

3

Для того чтобы найти выражение для объединения двух или нескольких областей надо сложить (используя логи-ческое сложение mdash операцию ldquoИЛИrdquo) выражения для всех составляющих Например выражение для объединения областей 3 и 4 имеет вид

3 + 4 A B Csdot sdot + A B Csdot sdot С другой стороны можно заметить что справедлива формула3 + 4 B Csdot Это означает что логические выражения в некоторых случаях можно упростить Как это делается вы узнаете в

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

множества ссылок полученных от поисковой системы в ответ на какой-то запрос Рассмотрим такую задачу

Известно количество ссылок которые находит поисковый сервер по следующим запросам (здесь символ ldquoamprdquo обозначает операцию ldquoИrdquo а ldquo|rdquo mdash операцию ldquoИЛИrdquo)

собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросу(кошки|собаки)ampлемуры

Обозначим буквами С К и Л высказывания ldquoключевое слово mdash собакиrdquo ldquoключевое слово mdash кошкиrdquo и ldquoключевое слово mdash лемурыrdquo Построим диаграмму с тремя перемен-ными и выделим интересующую область которая соответствует запросу

(кошки|собаки)ampлемурыНа рисунке эта область закрашена желтым цветомВ общем виде задача очень сложна Попробуем найти какое-нибудь упрощающее усло-

вие Например выделим три условия

1 A B Csdot sdot2 A B Csdot sdot3 A B Csdot sdot4 A B Csdot sdot

5 A B Csdot sdot6 A B Csdot sdot7 A B Csdot sdot8 A B Csdot sdot

КС

Л

13 12 2010 ИНФорматИка

собаки 200кошки 250кошки|собаки 450

Это означает что область ldquoкошки ИЛИ собакиrdquo равна сумме областей ldquoкошкиrdquo и ldquoсобакиrdquo то есть эти области не пересекаются Таким образом в нашем случае диаграмма выглядит так

КC

Л

1 2

Области 1 (собакиampлемуры) и 2 (кошкиampлемуры) нам известны они составляют соответственно 40 и 50 ссылок поэтому по запросу (кошки|собаки)ampлемуры поисковый сервер выдаст 40 + 50 = 90 ссылок

Задачи

1 Используя диаграмму с тремя переменными запишите логические выражения для объединения об-ластей 2 + 5 3 + 6 4 + 7 6 + 7 5 + 6 5 + 8 7 + 8 Для каждой сложной области найдите два эквивалентных выражения

2 Известно количество ссылок которые находит поисковый сервер по следующим запросам собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 810)3 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 250кошки 200лемуры 500собакиampлемуры 0собакиampкошки 20кошкиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 920)4 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 120кошки 270лемуры 100кошки|собаки 390кошкиampлемуры 20собакиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 460)

4 Упрощение логических выражений

Законы алгебры логики

Для упрощения логических выражений используют законы алгебры логики Они формулируются для базовых логических операций mdash ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

Закон двойного отрицания означает что операция ldquoНЕrdquo обратима если применить ее два раза логическое значе-ние не изменится Закон исключения третьего основан на том что любое логическое выражение либо истинно либо ложно (ldquoтретьего не даноrdquo) Поэтому если A 1= то A 0= (и наоборот) так что произведение этих величин всегда равно нулю а сумма mdash единице

14 ИНФорматИка 12 2010

Операции с константами и закон повторения легко проверяются по таблицам истинности операций ldquoИrdquo и ldquoИЛИrdquo Переместительный и сочетательный законы выглядят вполне привычно так же как и в математике Почти везде ldquoработаетrdquo аналогия с обычной алгеброй нужно только помнить что в логике 1 + 1 = 1 а не 2

Закон для ldquoИrdquo для ldquoИЛИrdquoдвойного отрицания A A=

исключения третьего A A 0sdot = A A 1+ =

операции с константами A 1 Asdot = A 0 0sdot = A 1 1+ = A 0 A+ =

повторения A A Asdot = A A A+ =

переместительный A B B Asdot = sdot A B B A+ = +

сочетательный A (B C) (A B) Csdot sdot = sdot sdot A (B C) (A B) C+ + = + +

распределительный A B C (A B)(A C)+ sdot = + sdot + A (B C) A B A Csdot + = sdot + sdot

поглощения A A B A+ sdot = A (A B) Asdot + =

законы де Моргана A B A Bsdot = + A B A Bsdot = +

Распределительный закон для ldquoИЛИrdquo mdash это обычное раскрытие скобок А вот для операции ldquoИrdquo мы видим не-знакомое выражение в математике это равенство неверно Доказательство можно начать с правой части раскрыв скобки

(A B)(A C) A A A C B A B C+ sdot + = sdot + sdot + sdot + sdot

Дальше используем закон повторения ( A A Asdot = ) и заметим что A A C A (1 C) A 1 A+ sdot = sdot + = sdot =

Аналогично доказываем что A B A A (1 B) A+ sdot = sdot + = таким образом(A B)(A C) A B C+ sdot + = + sdot

Равенство доказано Попутно мы доказали также и закон поглощения для операции ldquoИrdquo (для ldquoИЛИrdquo вы можете сделать это самостоятельно) Отметим что из распределительного закона следует полезная формула

A A B (A A)(A B) A B+ sdot = + sdot + = + Правила позволяющие раскрывать отрицание сложных выражений названы в честь

шотландского математика и логика де Моргана Обратите внимание что при этом не просто ldquoобщееrdquo отрицание переходит на отдельные выражения но и операция ldquoИrdquo за-меняется на ldquoИЛИrdquo (и наоборот) Доказать законы де Моргана можно с помощью та-блиц истинности

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

A B Csdot sdot + A B Csdot sdot =(A A) B C B C+ sdot sdot = sdot Здесь мы сначала вынесли общий множитель двух слагаемых за скобки а затем примени-

ли закон исключения третьегоВ общем случае можно рекомендовать такую последовательность действий1 Заменить все ldquoнебазовыеrdquo операции (исключающее ИЛИ импликацию эквивалент-

ность и др) на их выражения через базовые операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo 2 Раскрыть отрицания сложных выражений по законам де Моргана так чтобы операции отрицания остались

только у отдельных переменных3 Используя вынесение общих множителей за скобки раскрытие скобок и другие законы алгебры логики упро-

стить выражение Пример

(A B)(A B)(A C)+ sdot + sdot + =(A B) A B (A C)+ sdot sdot sdot + =(A A B A) B (A C)sdot + sdot sdot sdot + == B A B (A C)sdot sdot sdot + = A B B (A C)sdot sdot sdot + = A B (A C)sdot sdot + = B A (A C)sdot sdot + = B Asdot

Здесь последовательно использованы закон де Моргана распределительный закон закон исключения третьего переместительный закон закон повторения снова переместительный закон и закон поглощения

Логические уравнения

Если приравнять два логических выражения мы получим уравнение Его решением будут значения переменных при которых уравнение превращается в тождество то есть значения левой и правой частей совпадают Например уравнение A B 1sdot = имеет единственное решение A B 1= = для остальных комбинаций значений переменных левая часть равна нулю В то же время уравнение A B 1+ = имеет три решения ( A 0= B 1= ) ( A 1= B 0= ) и A B 1= =

А де МорганИллюстрация с сайта

wwwyorkacuk

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 9: Inf 2010-12

9 12 2010 ИНФорматИка

Сначала удобно заменить импликацию по формуле A B A Brarr = + Отрицание для высказывания 90 X2lt запишется как 90 X2ge поэтому

A (90 X )2= ge или (80 (X 2))2gt + В этой задаче нас интересуют только целые числа Поэтому условие 90 X2ge можно заменить на X 9le или

9 Xminus le le9 а условие 80 (X 2)2gt + mdash на X 2 8+ le или -10 X 6le le Таким образом требуется выбрать наибольшее целое число которое входит в один или в другой промежуток

x

9

6

ndash9ndash10

Это число mdash 9Задача 2 A B и С mdash целые числа для которых истинно высказывание

X (A B)((A B) (B C))((B A) (C B))= = sdot gt rarr gt sdot gt rarr gtЧему равно В если A = 27 и C = 25Это сложное высказывание состоит из трех простых

(A B)= (A B) (B C)gt rarr gt (B A) (C B)gt rarr gtОни связаны операцией ldquoИrdquo то есть должны выполняться одновременноИз (A B) 1= = сразу следует что A Bne Предположим что A Bgt тогда из второго условия получаем 1 (B C)rarr gt Это

выражение может быть истинно тогда и только тогда когда (B C) 1gt = поэтому имеем A B Cgt gt этому условию со-ответствует только число 26

На всякий случай проверим и вариант A Blt тогда из второго условия получаем 0 (B C)rarr gt это выражение ис-тинно при любом B Теперь проверяем третье условие получаем 1 (C B) 1rarr gt = это выражение может быть истин-но тогда и только тогда когда C Bgt и тут мы получили противоречие потому что нет такого числа B для которого C B Agt gt Таким образом правильный ответ mdash 26

Контрольные вопросы

1 Даны два высказывания A mdash ldquoВ Африке водятся жирафыrdquo и B mdash ldquoВ Мурманске идет снегrdquo Постройте из них различные сложные высказывания

2 Дано высказывание ldquoВинни-Пух любит мед и дверь в дом открытаrdquo Как бы вы сформулировали отрицание этого высказывания

3 Что такое таблица истинности4 Почему в таблице истинности для операции ldquoНЕrdquo две строки а для других изученных операций mdash четыре

Сколько строчек в таблице истинности выражения с тремя переменными с четырьмя с пятью5 В каком порядке обычно записываются значения переменных в таблице истинности6 Когда истинно высказывание ldquoA и Brdquo ldquoА или Brdquo7 Какие электрические схемы можно использовать для иллюстрации операций ldquoИrdquo и ldquoИЛИrdquo8 Какие знаки применяют для обозначения операций ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo9 Почему операция ldquoИrdquo называется логическим умножением а ldquoИЛИrdquo mdash логическим сложением10 В чем отличие ldquoобычногоrdquo и логического сложения11 Сколько существует различных логических операций с двумя переменными С тремя переменными12 Чем отличается операция ldquoисключающее ИЛИrdquo от ldquoИЛИrdquo13 Почему операция ldquoисключающее ИЛИrdquo называется сложением по модулю 214 Как записать выражение A Boplus с помощью базового набора операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo)15 Как можно доказать или опровергнуть логическую формулу16 Какими интересными свойствами обладает операция ldquoисключающее ИЛИrdquo17 Что значит выражение ldquoобратимая операцияrdquo Какие изученные логические операции являются обратимыми18 Какое свойство операции ldquoисключающее ИЛИrdquo позволяет использовать ее для простейшего шифрования19 Чем отличается смысл высказывания ldquoесли A то Brdquo в обычной речи и в математической логике20 Запишите в виде формулы высказывание ldquoесли утюг горячий то лоб холодныйrdquo21 Запишите в виде формулы высказывание ldquoневерно что если утюг горячий то лоб холодныйrdquo Можно ли в этом

случае сразу сказать какой утюг и какой лоб22 Как выразить импликацию через операции ldquoНЕrdquo и ldquoИЛИrdquo Докажите эту формулу23 Как выразить эквивалентность через операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo Докажите эту формулу24 Чем интересны операции ldquoштрих Шеффераrdquo и ldquoстрелка Пирсаrdquo25 Докажите формулы позволяющие представить базовые логические операции через штрих Шеффера Попро-

буйте построить и доказать аналогичные формулы для операции ldquoстрелка Пирсаrdquo26 Что такое формализация27 В каком порядке выполняются действия в логических выражениях 28 Что можно сделать для того чтобы изменить ldquoестественныйrdquo порядок действий

10 ИНФорматИка 12 2010

29 Какие операции называются бинарными и унарными Приведите примеры унарных и бинарных операций в математике

30 Поясните разницу между терминами ldquoлогическое выражениеrdquo и ldquoлогическая функцияrdquo31 Можно ли сказать что таблица истинности однозначно определяета) логическое выражениеб) логическую функцию32 Что такое вычислимое логическое выражение 33 Что такое тавтология противоречие Приведите примеры34 Что такое равносильные выражения

Задачи

1 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) A B A Bsdot + sdot ж) A C B Csdot + sdotб) A B A B A Bsdot + sdot + sdot з) ( ) ( )A C B C+ + +в) ( ) ( ) ( )A B A B A B+ + + sdot + и) ( ) ( )A C B Csdot sdot sdotг) A B B C C Asdot + sdot + sdot к) A C B C C A Bsdot + sdot + sdot +( )) ( )A C B C C A Bsdot + sdot + sdot +( )) ( )

д) A B C A B C B Csdot sdot + sdot sdot + sdot л) A C B C B A Csdot + + + sdot sdot( ( )) ( )е) A B C A C Bsdot sdot + sdot +( ) ( )

2 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) ( ) ( )A B A Brarr + rarr е) ( ) ( )A B A Crarr rarr rarrб) ( ) ( )A B A Brarr sdot rarr ж) ( )A B B Csdot rarr +

в) ( ) ( )A B A Bsdot rarr + з) ( ) ( )A B A Crarr rarr rarrг) ( ) ( )A B A B+ rarr sdot и) ( ) ( )A B A Bharr + harr

д) ( ) ( ) ( )A B A C A Crarr sdot + sdot rarr к) ( ) ( ) ( )A B A C B Charr + harr + harr3 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z

Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а б)

X Y Z F

1 1 1 11 1 0 11 0 0 1

4 Для предыдущего задания определите сколько различных логических функций соответствует заданной частич-ной таблице истинности (Ответ 32)

5 Задано 5 строк таблицы истинности некоторого логического выражения с тремя переменными Сколько раз-личных логических функций ей соответствуют (Ответ 8)

6 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет б г)

X Y Z F

0 1 0 01 1 0 10 1 1 0

7 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а в)

X Y Z F

1 0 0 10 0 0 11 1 1 0

8 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ а)

а) X Y Z+ +б) X Y Z+ +в) X Y Z+ +г) X Y Z+ +

а) X Y Z+ +б) X Y Zsdot sdotв) X Y Zsdot sdotг) X Y Z+ sdot

а) X (Y Z)rarr +б) X Y Zsdot sdotв) X Y Z+ +г) X Y Z+ +

11 12 2010 ИНФорматИка

X Y Z F

1 0 0 10 0 0 01 1 1 0

9 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ б г)

X Y Z F

0 0 0 00 1 1 11 0 0 1

10 Определите значение логического выражения (X 2) (X 3)gt rarr gt для X = 1 2 3 4 (Ответ 1 1 0 1)11 Определите значение логического выражения

((X 5) (X 3))((X 2) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 1 0 0)12 Определите значение логического выражения

((X 3) (X 3)) (X 1)gt + lt rarr lt для X = 1 2 3 4(Ответ 0 0 1 0)13 Определите значение логического выражения

((X 4) (X 3))((X 3) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 0 0 1)14 Определите значение логического выражения

(X(X ndash 8) gt 2X ndash 25)(X(X 8) 2 X-25) (X 7)minus gt rarr gt для X = 4 5 6 7(Ответ 0 1 0 0)15 Найдите все целые значения X при которых логическое выражение

(X 2) (X 5)gt rarr gt ложно(Ответ 3 4 5)16 Найдите все целые значения X при которых логическое выражение

((X 0) (X 4)) (X 4)gt + gt rarr gt ложно (Ответ 1 2 3 4)17 Автопилот может работать если исправен главный бортовой компьютер или два вспомогательных Выполните формали-

зацию и запишите логические формулы для высказываний ldquoавтопилот работоспособенrdquo и ldquoавтопилот неработоспособенrdquo18 Каково наибольшее целое положительное число X при котором истинно высказывание

(X(X 3) X 9) (X(X 2) X 11)2 2+ gt + rarr + le + (Ответ 5)19 Каково наибольшее целое положительное число X при котором истинно высказывание

(121 X ) (X X 5)2lt rarr lt + (Ответ 11)20 Каково наибольшее целое положительное число X при котором ложно высказывание

(X(X 6) 9 0) (X 45)2+ + gt rarr gt (Ответ 6)21 Каково наибольшее целое положительное число X при котором истинно высказывание

(X -1 100) (X(X-1) 100)2 gt rarr lt (Ответ 10)22 Каково наибольшее целое положительное число X при котором ложно высказывание

(7X-3 75) (X(X-1) 65)lt rarr gt (Ответ 8)23 Известно что для чисел A B и C истинно высказывание

((C A) (C B))((C 1) A)((C 1) B)lt + lt sdot + lt sdot + lt а) Чему равно C если A = 25 и B = 48б) Чему равно C если A = 45 и B = 18(Ответ 47 44)24 Известно что для чисел A B и C истинно высказывание

(A B)((B A) (2C A))((A B) (A 2C))= sdot lt rarr gt sdot lt rarr gt Чему равно A если C = 10 и B = 22(Ответ 21)

а) X Y Zsdot sdotб) X (Y Z)rarr +в) X Y Z+ +г) Y (X Z)rarr sdot

а) (X Y) Z+ rarr

б) (X Y) Z+ rarrв) X (Y Z)+ rarrг) X Y Z+ sdot

12 ИНФорматИка 12 2010

3 Диаграммы

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

На такой диаграмме каждой переменной соответствует круг внутри которого она равна единице а вне его mdash нулю Круги пересекаются каждый с каждым Области в которых рассматриваемое логическое выражение истинно закрашиваются каким-либо цветом Ниже приведены диаграммы для простейших операций с одной и двумя пере-менными Серым цветом залиты области где рассматриваемое выражение равно единице

A A Bsdot A B+ A Brarr

A

A

В

A

В

A

В

Такие диаграммы часто используются при работе с множествами операция ldquoИrdquo соответствует пересечению двух множеств а ldquoИЛИrdquo mdash объединению

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

С

2

18

4

756

3

Для того чтобы найти выражение для объединения двух или нескольких областей надо сложить (используя логи-ческое сложение mdash операцию ldquoИЛИrdquo) выражения для всех составляющих Например выражение для объединения областей 3 и 4 имеет вид

3 + 4 A B Csdot sdot + A B Csdot sdot С другой стороны можно заметить что справедлива формула3 + 4 B Csdot Это означает что логические выражения в некоторых случаях можно упростить Как это делается вы узнаете в

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

множества ссылок полученных от поисковой системы в ответ на какой-то запрос Рассмотрим такую задачу

Известно количество ссылок которые находит поисковый сервер по следующим запросам (здесь символ ldquoamprdquo обозначает операцию ldquoИrdquo а ldquo|rdquo mdash операцию ldquoИЛИrdquo)

собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросу(кошки|собаки)ampлемуры

Обозначим буквами С К и Л высказывания ldquoключевое слово mdash собакиrdquo ldquoключевое слово mdash кошкиrdquo и ldquoключевое слово mdash лемурыrdquo Построим диаграмму с тремя перемен-ными и выделим интересующую область которая соответствует запросу

(кошки|собаки)ampлемурыНа рисунке эта область закрашена желтым цветомВ общем виде задача очень сложна Попробуем найти какое-нибудь упрощающее усло-

вие Например выделим три условия

1 A B Csdot sdot2 A B Csdot sdot3 A B Csdot sdot4 A B Csdot sdot

5 A B Csdot sdot6 A B Csdot sdot7 A B Csdot sdot8 A B Csdot sdot

КС

Л

13 12 2010 ИНФорматИка

собаки 200кошки 250кошки|собаки 450

Это означает что область ldquoкошки ИЛИ собакиrdquo равна сумме областей ldquoкошкиrdquo и ldquoсобакиrdquo то есть эти области не пересекаются Таким образом в нашем случае диаграмма выглядит так

КC

Л

1 2

Области 1 (собакиampлемуры) и 2 (кошкиampлемуры) нам известны они составляют соответственно 40 и 50 ссылок поэтому по запросу (кошки|собаки)ampлемуры поисковый сервер выдаст 40 + 50 = 90 ссылок

Задачи

1 Используя диаграмму с тремя переменными запишите логические выражения для объединения об-ластей 2 + 5 3 + 6 4 + 7 6 + 7 5 + 6 5 + 8 7 + 8 Для каждой сложной области найдите два эквивалентных выражения

2 Известно количество ссылок которые находит поисковый сервер по следующим запросам собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 810)3 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 250кошки 200лемуры 500собакиampлемуры 0собакиampкошки 20кошкиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 920)4 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 120кошки 270лемуры 100кошки|собаки 390кошкиampлемуры 20собакиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 460)

4 Упрощение логических выражений

Законы алгебры логики

Для упрощения логических выражений используют законы алгебры логики Они формулируются для базовых логических операций mdash ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

Закон двойного отрицания означает что операция ldquoНЕrdquo обратима если применить ее два раза логическое значе-ние не изменится Закон исключения третьего основан на том что любое логическое выражение либо истинно либо ложно (ldquoтретьего не даноrdquo) Поэтому если A 1= то A 0= (и наоборот) так что произведение этих величин всегда равно нулю а сумма mdash единице

14 ИНФорматИка 12 2010

Операции с константами и закон повторения легко проверяются по таблицам истинности операций ldquoИrdquo и ldquoИЛИrdquo Переместительный и сочетательный законы выглядят вполне привычно так же как и в математике Почти везде ldquoработаетrdquo аналогия с обычной алгеброй нужно только помнить что в логике 1 + 1 = 1 а не 2

Закон для ldquoИrdquo для ldquoИЛИrdquoдвойного отрицания A A=

исключения третьего A A 0sdot = A A 1+ =

операции с константами A 1 Asdot = A 0 0sdot = A 1 1+ = A 0 A+ =

повторения A A Asdot = A A A+ =

переместительный A B B Asdot = sdot A B B A+ = +

сочетательный A (B C) (A B) Csdot sdot = sdot sdot A (B C) (A B) C+ + = + +

распределительный A B C (A B)(A C)+ sdot = + sdot + A (B C) A B A Csdot + = sdot + sdot

поглощения A A B A+ sdot = A (A B) Asdot + =

законы де Моргана A B A Bsdot = + A B A Bsdot = +

Распределительный закон для ldquoИЛИrdquo mdash это обычное раскрытие скобок А вот для операции ldquoИrdquo мы видим не-знакомое выражение в математике это равенство неверно Доказательство можно начать с правой части раскрыв скобки

(A B)(A C) A A A C B A B C+ sdot + = sdot + sdot + sdot + sdot

Дальше используем закон повторения ( A A Asdot = ) и заметим что A A C A (1 C) A 1 A+ sdot = sdot + = sdot =

Аналогично доказываем что A B A A (1 B) A+ sdot = sdot + = таким образом(A B)(A C) A B C+ sdot + = + sdot

Равенство доказано Попутно мы доказали также и закон поглощения для операции ldquoИrdquo (для ldquoИЛИrdquo вы можете сделать это самостоятельно) Отметим что из распределительного закона следует полезная формула

A A B (A A)(A B) A B+ sdot = + sdot + = + Правила позволяющие раскрывать отрицание сложных выражений названы в честь

шотландского математика и логика де Моргана Обратите внимание что при этом не просто ldquoобщееrdquo отрицание переходит на отдельные выражения но и операция ldquoИrdquo за-меняется на ldquoИЛИrdquo (и наоборот) Доказать законы де Моргана можно с помощью та-блиц истинности

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

A B Csdot sdot + A B Csdot sdot =(A A) B C B C+ sdot sdot = sdot Здесь мы сначала вынесли общий множитель двух слагаемых за скобки а затем примени-

ли закон исключения третьегоВ общем случае можно рекомендовать такую последовательность действий1 Заменить все ldquoнебазовыеrdquo операции (исключающее ИЛИ импликацию эквивалент-

ность и др) на их выражения через базовые операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo 2 Раскрыть отрицания сложных выражений по законам де Моргана так чтобы операции отрицания остались

только у отдельных переменных3 Используя вынесение общих множителей за скобки раскрытие скобок и другие законы алгебры логики упро-

стить выражение Пример

(A B)(A B)(A C)+ sdot + sdot + =(A B) A B (A C)+ sdot sdot sdot + =(A A B A) B (A C)sdot + sdot sdot sdot + == B A B (A C)sdot sdot sdot + = A B B (A C)sdot sdot sdot + = A B (A C)sdot sdot + = B A (A C)sdot sdot + = B Asdot

Здесь последовательно использованы закон де Моргана распределительный закон закон исключения третьего переместительный закон закон повторения снова переместительный закон и закон поглощения

Логические уравнения

Если приравнять два логических выражения мы получим уравнение Его решением будут значения переменных при которых уравнение превращается в тождество то есть значения левой и правой частей совпадают Например уравнение A B 1sdot = имеет единственное решение A B 1= = для остальных комбинаций значений переменных левая часть равна нулю В то же время уравнение A B 1+ = имеет три решения ( A 0= B 1= ) ( A 1= B 0= ) и A B 1= =

А де МорганИллюстрация с сайта

wwwyorkacuk

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 10: Inf 2010-12

10 ИНФорматИка 12 2010

29 Какие операции называются бинарными и унарными Приведите примеры унарных и бинарных операций в математике

30 Поясните разницу между терминами ldquoлогическое выражениеrdquo и ldquoлогическая функцияrdquo31 Можно ли сказать что таблица истинности однозначно определяета) логическое выражениеб) логическую функцию32 Что такое вычислимое логическое выражение 33 Что такое тавтология противоречие Приведите примеры34 Что такое равносильные выражения

Задачи

1 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) A B A Bsdot + sdot ж) A C B Csdot + sdotб) A B A B A Bsdot + sdot + sdot з) ( ) ( )A C B C+ + +в) ( ) ( ) ( )A B A B A B+ + + sdot + и) ( ) ( )A C B Csdot sdot sdotг) A B B C C Asdot + sdot + sdot к) A C B C C A Bsdot + sdot + sdot +( )) ( )A C B C C A Bsdot + sdot + sdot +( )) ( )

д) A B C A B C B Csdot sdot + sdot sdot + sdot л) A C B C B A Csdot + + + sdot sdot( ( )) ( )е) A B C A C Bsdot sdot + sdot +( ) ( )

2 Составьте деревья для вычисления логических выражений и их таблицы истинностиa) ( ) ( )A B A Brarr + rarr е) ( ) ( )A B A Crarr rarr rarrб) ( ) ( )A B A Brarr sdot rarr ж) ( )A B B Csdot rarr +

в) ( ) ( )A B A Bsdot rarr + з) ( ) ( )A B A Crarr rarr rarrг) ( ) ( )A B A B+ rarr sdot и) ( ) ( )A B A Bharr + harr

д) ( ) ( ) ( )A B A C A Crarr sdot + sdot rarr к) ( ) ( ) ( )A B A C B Charr + harr + harr3 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z

Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а б)

X Y Z F

1 1 1 11 1 0 11 0 0 1

4 Для предыдущего задания определите сколько различных логических функций соответствует заданной частич-ной таблице истинности (Ответ 32)

5 Задано 5 строк таблицы истинности некоторого логического выражения с тремя переменными Сколько раз-личных логических функций ей соответствуют (Ответ 8)

6 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет б г)

X Y Z F

0 1 0 01 1 0 10 1 1 0

7 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фрагмент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (От-вет а в)

X Y Z F

1 0 0 10 0 0 11 1 1 0

8 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ а)

а) X Y Z+ +б) X Y Z+ +в) X Y Z+ +г) X Y Z+ +

а) X Y Z+ +б) X Y Zsdot sdotв) X Y Zsdot sdotг) X Y Z+ sdot

а) X (Y Z)rarr +б) X Y Zsdot sdotв) X Y Z+ +г) X Y Z+ +

11 12 2010 ИНФорматИка

X Y Z F

1 0 0 10 0 0 01 1 1 0

9 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ б г)

X Y Z F

0 0 0 00 1 1 11 0 0 1

10 Определите значение логического выражения (X 2) (X 3)gt rarr gt для X = 1 2 3 4 (Ответ 1 1 0 1)11 Определите значение логического выражения

((X 5) (X 3))((X 2) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 1 0 0)12 Определите значение логического выражения

((X 3) (X 3)) (X 1)gt + lt rarr lt для X = 1 2 3 4(Ответ 0 0 1 0)13 Определите значение логического выражения

((X 4) (X 3))((X 3) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 0 0 1)14 Определите значение логического выражения

(X(X ndash 8) gt 2X ndash 25)(X(X 8) 2 X-25) (X 7)minus gt rarr gt для X = 4 5 6 7(Ответ 0 1 0 0)15 Найдите все целые значения X при которых логическое выражение

(X 2) (X 5)gt rarr gt ложно(Ответ 3 4 5)16 Найдите все целые значения X при которых логическое выражение

((X 0) (X 4)) (X 4)gt + gt rarr gt ложно (Ответ 1 2 3 4)17 Автопилот может работать если исправен главный бортовой компьютер или два вспомогательных Выполните формали-

зацию и запишите логические формулы для высказываний ldquoавтопилот работоспособенrdquo и ldquoавтопилот неработоспособенrdquo18 Каково наибольшее целое положительное число X при котором истинно высказывание

(X(X 3) X 9) (X(X 2) X 11)2 2+ gt + rarr + le + (Ответ 5)19 Каково наибольшее целое положительное число X при котором истинно высказывание

(121 X ) (X X 5)2lt rarr lt + (Ответ 11)20 Каково наибольшее целое положительное число X при котором ложно высказывание

(X(X 6) 9 0) (X 45)2+ + gt rarr gt (Ответ 6)21 Каково наибольшее целое положительное число X при котором истинно высказывание

(X -1 100) (X(X-1) 100)2 gt rarr lt (Ответ 10)22 Каково наибольшее целое положительное число X при котором ложно высказывание

(7X-3 75) (X(X-1) 65)lt rarr gt (Ответ 8)23 Известно что для чисел A B и C истинно высказывание

((C A) (C B))((C 1) A)((C 1) B)lt + lt sdot + lt sdot + lt а) Чему равно C если A = 25 и B = 48б) Чему равно C если A = 45 и B = 18(Ответ 47 44)24 Известно что для чисел A B и C истинно высказывание

(A B)((B A) (2C A))((A B) (A 2C))= sdot lt rarr gt sdot lt rarr gt Чему равно A если C = 10 и B = 22(Ответ 21)

а) X Y Zsdot sdotб) X (Y Z)rarr +в) X Y Z+ +г) Y (X Z)rarr sdot

а) (X Y) Z+ rarr

б) (X Y) Z+ rarrв) X (Y Z)+ rarrг) X Y Z+ sdot

12 ИНФорматИка 12 2010

3 Диаграммы

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

На такой диаграмме каждой переменной соответствует круг внутри которого она равна единице а вне его mdash нулю Круги пересекаются каждый с каждым Области в которых рассматриваемое логическое выражение истинно закрашиваются каким-либо цветом Ниже приведены диаграммы для простейших операций с одной и двумя пере-менными Серым цветом залиты области где рассматриваемое выражение равно единице

A A Bsdot A B+ A Brarr

A

A

В

A

В

A

В

Такие диаграммы часто используются при работе с множествами операция ldquoИrdquo соответствует пересечению двух множеств а ldquoИЛИrdquo mdash объединению

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

С

2

18

4

756

3

Для того чтобы найти выражение для объединения двух или нескольких областей надо сложить (используя логи-ческое сложение mdash операцию ldquoИЛИrdquo) выражения для всех составляющих Например выражение для объединения областей 3 и 4 имеет вид

3 + 4 A B Csdot sdot + A B Csdot sdot С другой стороны можно заметить что справедлива формула3 + 4 B Csdot Это означает что логические выражения в некоторых случаях можно упростить Как это делается вы узнаете в

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

множества ссылок полученных от поисковой системы в ответ на какой-то запрос Рассмотрим такую задачу

Известно количество ссылок которые находит поисковый сервер по следующим запросам (здесь символ ldquoamprdquo обозначает операцию ldquoИrdquo а ldquo|rdquo mdash операцию ldquoИЛИrdquo)

собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросу(кошки|собаки)ampлемуры

Обозначим буквами С К и Л высказывания ldquoключевое слово mdash собакиrdquo ldquoключевое слово mdash кошкиrdquo и ldquoключевое слово mdash лемурыrdquo Построим диаграмму с тремя перемен-ными и выделим интересующую область которая соответствует запросу

(кошки|собаки)ampлемурыНа рисунке эта область закрашена желтым цветомВ общем виде задача очень сложна Попробуем найти какое-нибудь упрощающее усло-

вие Например выделим три условия

1 A B Csdot sdot2 A B Csdot sdot3 A B Csdot sdot4 A B Csdot sdot

5 A B Csdot sdot6 A B Csdot sdot7 A B Csdot sdot8 A B Csdot sdot

КС

Л

13 12 2010 ИНФорматИка

собаки 200кошки 250кошки|собаки 450

Это означает что область ldquoкошки ИЛИ собакиrdquo равна сумме областей ldquoкошкиrdquo и ldquoсобакиrdquo то есть эти области не пересекаются Таким образом в нашем случае диаграмма выглядит так

КC

Л

1 2

Области 1 (собакиampлемуры) и 2 (кошкиampлемуры) нам известны они составляют соответственно 40 и 50 ссылок поэтому по запросу (кошки|собаки)ampлемуры поисковый сервер выдаст 40 + 50 = 90 ссылок

Задачи

1 Используя диаграмму с тремя переменными запишите логические выражения для объединения об-ластей 2 + 5 3 + 6 4 + 7 6 + 7 5 + 6 5 + 8 7 + 8 Для каждой сложной области найдите два эквивалентных выражения

2 Известно количество ссылок которые находит поисковый сервер по следующим запросам собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 810)3 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 250кошки 200лемуры 500собакиampлемуры 0собакиampкошки 20кошкиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 920)4 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 120кошки 270лемуры 100кошки|собаки 390кошкиampлемуры 20собакиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 460)

4 Упрощение логических выражений

Законы алгебры логики

Для упрощения логических выражений используют законы алгебры логики Они формулируются для базовых логических операций mdash ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

Закон двойного отрицания означает что операция ldquoНЕrdquo обратима если применить ее два раза логическое значе-ние не изменится Закон исключения третьего основан на том что любое логическое выражение либо истинно либо ложно (ldquoтретьего не даноrdquo) Поэтому если A 1= то A 0= (и наоборот) так что произведение этих величин всегда равно нулю а сумма mdash единице

14 ИНФорматИка 12 2010

Операции с константами и закон повторения легко проверяются по таблицам истинности операций ldquoИrdquo и ldquoИЛИrdquo Переместительный и сочетательный законы выглядят вполне привычно так же как и в математике Почти везде ldquoработаетrdquo аналогия с обычной алгеброй нужно только помнить что в логике 1 + 1 = 1 а не 2

Закон для ldquoИrdquo для ldquoИЛИrdquoдвойного отрицания A A=

исключения третьего A A 0sdot = A A 1+ =

операции с константами A 1 Asdot = A 0 0sdot = A 1 1+ = A 0 A+ =

повторения A A Asdot = A A A+ =

переместительный A B B Asdot = sdot A B B A+ = +

сочетательный A (B C) (A B) Csdot sdot = sdot sdot A (B C) (A B) C+ + = + +

распределительный A B C (A B)(A C)+ sdot = + sdot + A (B C) A B A Csdot + = sdot + sdot

поглощения A A B A+ sdot = A (A B) Asdot + =

законы де Моргана A B A Bsdot = + A B A Bsdot = +

Распределительный закон для ldquoИЛИrdquo mdash это обычное раскрытие скобок А вот для операции ldquoИrdquo мы видим не-знакомое выражение в математике это равенство неверно Доказательство можно начать с правой части раскрыв скобки

(A B)(A C) A A A C B A B C+ sdot + = sdot + sdot + sdot + sdot

Дальше используем закон повторения ( A A Asdot = ) и заметим что A A C A (1 C) A 1 A+ sdot = sdot + = sdot =

Аналогично доказываем что A B A A (1 B) A+ sdot = sdot + = таким образом(A B)(A C) A B C+ sdot + = + sdot

Равенство доказано Попутно мы доказали также и закон поглощения для операции ldquoИrdquo (для ldquoИЛИrdquo вы можете сделать это самостоятельно) Отметим что из распределительного закона следует полезная формула

A A B (A A)(A B) A B+ sdot = + sdot + = + Правила позволяющие раскрывать отрицание сложных выражений названы в честь

шотландского математика и логика де Моргана Обратите внимание что при этом не просто ldquoобщееrdquo отрицание переходит на отдельные выражения но и операция ldquoИrdquo за-меняется на ldquoИЛИrdquo (и наоборот) Доказать законы де Моргана можно с помощью та-блиц истинности

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

A B Csdot sdot + A B Csdot sdot =(A A) B C B C+ sdot sdot = sdot Здесь мы сначала вынесли общий множитель двух слагаемых за скобки а затем примени-

ли закон исключения третьегоВ общем случае можно рекомендовать такую последовательность действий1 Заменить все ldquoнебазовыеrdquo операции (исключающее ИЛИ импликацию эквивалент-

ность и др) на их выражения через базовые операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo 2 Раскрыть отрицания сложных выражений по законам де Моргана так чтобы операции отрицания остались

только у отдельных переменных3 Используя вынесение общих множителей за скобки раскрытие скобок и другие законы алгебры логики упро-

стить выражение Пример

(A B)(A B)(A C)+ sdot + sdot + =(A B) A B (A C)+ sdot sdot sdot + =(A A B A) B (A C)sdot + sdot sdot sdot + == B A B (A C)sdot sdot sdot + = A B B (A C)sdot sdot sdot + = A B (A C)sdot sdot + = B A (A C)sdot sdot + = B Asdot

Здесь последовательно использованы закон де Моргана распределительный закон закон исключения третьего переместительный закон закон повторения снова переместительный закон и закон поглощения

Логические уравнения

Если приравнять два логических выражения мы получим уравнение Его решением будут значения переменных при которых уравнение превращается в тождество то есть значения левой и правой частей совпадают Например уравнение A B 1sdot = имеет единственное решение A B 1= = для остальных комбинаций значений переменных левая часть равна нулю В то же время уравнение A B 1+ = имеет три решения ( A 0= B 1= ) ( A 1= B 0= ) и A B 1= =

А де МорганИллюстрация с сайта

wwwyorkacuk

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 11: Inf 2010-12

11 12 2010 ИНФорматИка

X Y Z F

1 0 0 10 0 0 01 1 1 0

9 Символом F обозначено одно из указанных ниже логических выражений от трех аргументов X Y Z Дан фраг-мент таблицы истинности выражения F Какие из этих выражений могут соответствовать F (Ответ б г)

X Y Z F

0 0 0 00 1 1 11 0 0 1

10 Определите значение логического выражения (X 2) (X 3)gt rarr gt для X = 1 2 3 4 (Ответ 1 1 0 1)11 Определите значение логического выражения

((X 5) (X 3))((X 2) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 1 0 0)12 Определите значение логического выражения

((X 3) (X 3)) (X 1)gt + lt rarr lt для X = 1 2 3 4(Ответ 0 0 1 0)13 Определите значение логического выражения

((X 4) (X 3))((X 3) (X 1))lt rarr lt sdot lt rarr lt для X = 1 2 3 4(Ответ 0 0 0 1)14 Определите значение логического выражения

(X(X ndash 8) gt 2X ndash 25)(X(X 8) 2 X-25) (X 7)minus gt rarr gt для X = 4 5 6 7(Ответ 0 1 0 0)15 Найдите все целые значения X при которых логическое выражение

(X 2) (X 5)gt rarr gt ложно(Ответ 3 4 5)16 Найдите все целые значения X при которых логическое выражение

((X 0) (X 4)) (X 4)gt + gt rarr gt ложно (Ответ 1 2 3 4)17 Автопилот может работать если исправен главный бортовой компьютер или два вспомогательных Выполните формали-

зацию и запишите логические формулы для высказываний ldquoавтопилот работоспособенrdquo и ldquoавтопилот неработоспособенrdquo18 Каково наибольшее целое положительное число X при котором истинно высказывание

(X(X 3) X 9) (X(X 2) X 11)2 2+ gt + rarr + le + (Ответ 5)19 Каково наибольшее целое положительное число X при котором истинно высказывание

(121 X ) (X X 5)2lt rarr lt + (Ответ 11)20 Каково наибольшее целое положительное число X при котором ложно высказывание

(X(X 6) 9 0) (X 45)2+ + gt rarr gt (Ответ 6)21 Каково наибольшее целое положительное число X при котором истинно высказывание

(X -1 100) (X(X-1) 100)2 gt rarr lt (Ответ 10)22 Каково наибольшее целое положительное число X при котором ложно высказывание

(7X-3 75) (X(X-1) 65)lt rarr gt (Ответ 8)23 Известно что для чисел A B и C истинно высказывание

((C A) (C B))((C 1) A)((C 1) B)lt + lt sdot + lt sdot + lt а) Чему равно C если A = 25 и B = 48б) Чему равно C если A = 45 и B = 18(Ответ 47 44)24 Известно что для чисел A B и C истинно высказывание

(A B)((B A) (2C A))((A B) (A 2C))= sdot lt rarr gt sdot lt rarr gt Чему равно A если C = 10 и B = 22(Ответ 21)

а) X Y Zsdot sdotб) X (Y Z)rarr +в) X Y Z+ +г) Y (X Z)rarr sdot

а) (X Y) Z+ rarr

б) (X Y) Z+ rarrв) X (Y Z)+ rarrг) X Y Z+ sdot

12 ИНФорматИка 12 2010

3 Диаграммы

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

На такой диаграмме каждой переменной соответствует круг внутри которого она равна единице а вне его mdash нулю Круги пересекаются каждый с каждым Области в которых рассматриваемое логическое выражение истинно закрашиваются каким-либо цветом Ниже приведены диаграммы для простейших операций с одной и двумя пере-менными Серым цветом залиты области где рассматриваемое выражение равно единице

A A Bsdot A B+ A Brarr

A

A

В

A

В

A

В

Такие диаграммы часто используются при работе с множествами операция ldquoИrdquo соответствует пересечению двух множеств а ldquoИЛИrdquo mdash объединению

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

С

2

18

4

756

3

Для того чтобы найти выражение для объединения двух или нескольких областей надо сложить (используя логи-ческое сложение mdash операцию ldquoИЛИrdquo) выражения для всех составляющих Например выражение для объединения областей 3 и 4 имеет вид

3 + 4 A B Csdot sdot + A B Csdot sdot С другой стороны можно заметить что справедлива формула3 + 4 B Csdot Это означает что логические выражения в некоторых случаях можно упростить Как это делается вы узнаете в

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

множества ссылок полученных от поисковой системы в ответ на какой-то запрос Рассмотрим такую задачу

Известно количество ссылок которые находит поисковый сервер по следующим запросам (здесь символ ldquoamprdquo обозначает операцию ldquoИrdquo а ldquo|rdquo mdash операцию ldquoИЛИrdquo)

собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросу(кошки|собаки)ampлемуры

Обозначим буквами С К и Л высказывания ldquoключевое слово mdash собакиrdquo ldquoключевое слово mdash кошкиrdquo и ldquoключевое слово mdash лемурыrdquo Построим диаграмму с тремя перемен-ными и выделим интересующую область которая соответствует запросу

(кошки|собаки)ampлемурыНа рисунке эта область закрашена желтым цветомВ общем виде задача очень сложна Попробуем найти какое-нибудь упрощающее усло-

вие Например выделим три условия

1 A B Csdot sdot2 A B Csdot sdot3 A B Csdot sdot4 A B Csdot sdot

5 A B Csdot sdot6 A B Csdot sdot7 A B Csdot sdot8 A B Csdot sdot

КС

Л

13 12 2010 ИНФорматИка

собаки 200кошки 250кошки|собаки 450

Это означает что область ldquoкошки ИЛИ собакиrdquo равна сумме областей ldquoкошкиrdquo и ldquoсобакиrdquo то есть эти области не пересекаются Таким образом в нашем случае диаграмма выглядит так

КC

Л

1 2

Области 1 (собакиampлемуры) и 2 (кошкиampлемуры) нам известны они составляют соответственно 40 и 50 ссылок поэтому по запросу (кошки|собаки)ampлемуры поисковый сервер выдаст 40 + 50 = 90 ссылок

Задачи

1 Используя диаграмму с тремя переменными запишите логические выражения для объединения об-ластей 2 + 5 3 + 6 4 + 7 6 + 7 5 + 6 5 + 8 7 + 8 Для каждой сложной области найдите два эквивалентных выражения

2 Известно количество ссылок которые находит поисковый сервер по следующим запросам собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 810)3 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 250кошки 200лемуры 500собакиampлемуры 0собакиampкошки 20кошкиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 920)4 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 120кошки 270лемуры 100кошки|собаки 390кошкиampлемуры 20собакиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 460)

4 Упрощение логических выражений

Законы алгебры логики

Для упрощения логических выражений используют законы алгебры логики Они формулируются для базовых логических операций mdash ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

Закон двойного отрицания означает что операция ldquoНЕrdquo обратима если применить ее два раза логическое значе-ние не изменится Закон исключения третьего основан на том что любое логическое выражение либо истинно либо ложно (ldquoтретьего не даноrdquo) Поэтому если A 1= то A 0= (и наоборот) так что произведение этих величин всегда равно нулю а сумма mdash единице

14 ИНФорматИка 12 2010

Операции с константами и закон повторения легко проверяются по таблицам истинности операций ldquoИrdquo и ldquoИЛИrdquo Переместительный и сочетательный законы выглядят вполне привычно так же как и в математике Почти везде ldquoработаетrdquo аналогия с обычной алгеброй нужно только помнить что в логике 1 + 1 = 1 а не 2

Закон для ldquoИrdquo для ldquoИЛИrdquoдвойного отрицания A A=

исключения третьего A A 0sdot = A A 1+ =

операции с константами A 1 Asdot = A 0 0sdot = A 1 1+ = A 0 A+ =

повторения A A Asdot = A A A+ =

переместительный A B B Asdot = sdot A B B A+ = +

сочетательный A (B C) (A B) Csdot sdot = sdot sdot A (B C) (A B) C+ + = + +

распределительный A B C (A B)(A C)+ sdot = + sdot + A (B C) A B A Csdot + = sdot + sdot

поглощения A A B A+ sdot = A (A B) Asdot + =

законы де Моргана A B A Bsdot = + A B A Bsdot = +

Распределительный закон для ldquoИЛИrdquo mdash это обычное раскрытие скобок А вот для операции ldquoИrdquo мы видим не-знакомое выражение в математике это равенство неверно Доказательство можно начать с правой части раскрыв скобки

(A B)(A C) A A A C B A B C+ sdot + = sdot + sdot + sdot + sdot

Дальше используем закон повторения ( A A Asdot = ) и заметим что A A C A (1 C) A 1 A+ sdot = sdot + = sdot =

Аналогично доказываем что A B A A (1 B) A+ sdot = sdot + = таким образом(A B)(A C) A B C+ sdot + = + sdot

Равенство доказано Попутно мы доказали также и закон поглощения для операции ldquoИrdquo (для ldquoИЛИrdquo вы можете сделать это самостоятельно) Отметим что из распределительного закона следует полезная формула

A A B (A A)(A B) A B+ sdot = + sdot + = + Правила позволяющие раскрывать отрицание сложных выражений названы в честь

шотландского математика и логика де Моргана Обратите внимание что при этом не просто ldquoобщееrdquo отрицание переходит на отдельные выражения но и операция ldquoИrdquo за-меняется на ldquoИЛИrdquo (и наоборот) Доказать законы де Моргана можно с помощью та-блиц истинности

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

A B Csdot sdot + A B Csdot sdot =(A A) B C B C+ sdot sdot = sdot Здесь мы сначала вынесли общий множитель двух слагаемых за скобки а затем примени-

ли закон исключения третьегоВ общем случае можно рекомендовать такую последовательность действий1 Заменить все ldquoнебазовыеrdquo операции (исключающее ИЛИ импликацию эквивалент-

ность и др) на их выражения через базовые операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo 2 Раскрыть отрицания сложных выражений по законам де Моргана так чтобы операции отрицания остались

только у отдельных переменных3 Используя вынесение общих множителей за скобки раскрытие скобок и другие законы алгебры логики упро-

стить выражение Пример

(A B)(A B)(A C)+ sdot + sdot + =(A B) A B (A C)+ sdot sdot sdot + =(A A B A) B (A C)sdot + sdot sdot sdot + == B A B (A C)sdot sdot sdot + = A B B (A C)sdot sdot sdot + = A B (A C)sdot sdot + = B A (A C)sdot sdot + = B Asdot

Здесь последовательно использованы закон де Моргана распределительный закон закон исключения третьего переместительный закон закон повторения снова переместительный закон и закон поглощения

Логические уравнения

Если приравнять два логических выражения мы получим уравнение Его решением будут значения переменных при которых уравнение превращается в тождество то есть значения левой и правой частей совпадают Например уравнение A B 1sdot = имеет единственное решение A B 1= = для остальных комбинаций значений переменных левая часть равна нулю В то же время уравнение A B 1+ = имеет три решения ( A 0= B 1= ) ( A 1= B 0= ) и A B 1= =

А де МорганИллюстрация с сайта

wwwyorkacuk

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 12: Inf 2010-12

12 ИНФорматИка 12 2010

3 Диаграммы

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

На такой диаграмме каждой переменной соответствует круг внутри которого она равна единице а вне его mdash нулю Круги пересекаются каждый с каждым Области в которых рассматриваемое логическое выражение истинно закрашиваются каким-либо цветом Ниже приведены диаграммы для простейших операций с одной и двумя пере-менными Серым цветом залиты области где рассматриваемое выражение равно единице

A A Bsdot A B+ A Brarr

A

A

В

A

В

A

В

Такие диаграммы часто используются при работе с множествами операция ldquoИrdquo соответствует пересечению двух множеств а ldquoИЛИrdquo mdash объединению

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

С

2

18

4

756

3

Для того чтобы найти выражение для объединения двух или нескольких областей надо сложить (используя логи-ческое сложение mdash операцию ldquoИЛИrdquo) выражения для всех составляющих Например выражение для объединения областей 3 и 4 имеет вид

3 + 4 A B Csdot sdot + A B Csdot sdot С другой стороны можно заметить что справедлива формула3 + 4 B Csdot Это означает что логические выражения в некоторых случаях можно упростить Как это делается вы узнаете в

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

множества ссылок полученных от поисковой системы в ответ на какой-то запрос Рассмотрим такую задачу

Известно количество ссылок которые находит поисковый сервер по следующим запросам (здесь символ ldquoamprdquo обозначает операцию ldquoИrdquo а ldquo|rdquo mdash операцию ldquoИЛИrdquo)

собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросу(кошки|собаки)ampлемуры

Обозначим буквами С К и Л высказывания ldquoключевое слово mdash собакиrdquo ldquoключевое слово mdash кошкиrdquo и ldquoключевое слово mdash лемурыrdquo Построим диаграмму с тремя перемен-ными и выделим интересующую область которая соответствует запросу

(кошки|собаки)ampлемурыНа рисунке эта область закрашена желтым цветомВ общем виде задача очень сложна Попробуем найти какое-нибудь упрощающее усло-

вие Например выделим три условия

1 A B Csdot sdot2 A B Csdot sdot3 A B Csdot sdot4 A B Csdot sdot

5 A B Csdot sdot6 A B Csdot sdot7 A B Csdot sdot8 A B Csdot sdot

КС

Л

13 12 2010 ИНФорматИка

собаки 200кошки 250кошки|собаки 450

Это означает что область ldquoкошки ИЛИ собакиrdquo равна сумме областей ldquoкошкиrdquo и ldquoсобакиrdquo то есть эти области не пересекаются Таким образом в нашем случае диаграмма выглядит так

КC

Л

1 2

Области 1 (собакиampлемуры) и 2 (кошкиampлемуры) нам известны они составляют соответственно 40 и 50 ссылок поэтому по запросу (кошки|собаки)ampлемуры поисковый сервер выдаст 40 + 50 = 90 ссылок

Задачи

1 Используя диаграмму с тремя переменными запишите логические выражения для объединения об-ластей 2 + 5 3 + 6 4 + 7 6 + 7 5 + 6 5 + 8 7 + 8 Для каждой сложной области найдите два эквивалентных выражения

2 Известно количество ссылок которые находит поисковый сервер по следующим запросам собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 810)3 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 250кошки 200лемуры 500собакиampлемуры 0собакиampкошки 20кошкиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 920)4 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 120кошки 270лемуры 100кошки|собаки 390кошкиampлемуры 20собакиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 460)

4 Упрощение логических выражений

Законы алгебры логики

Для упрощения логических выражений используют законы алгебры логики Они формулируются для базовых логических операций mdash ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

Закон двойного отрицания означает что операция ldquoНЕrdquo обратима если применить ее два раза логическое значе-ние не изменится Закон исключения третьего основан на том что любое логическое выражение либо истинно либо ложно (ldquoтретьего не даноrdquo) Поэтому если A 1= то A 0= (и наоборот) так что произведение этих величин всегда равно нулю а сумма mdash единице

14 ИНФорматИка 12 2010

Операции с константами и закон повторения легко проверяются по таблицам истинности операций ldquoИrdquo и ldquoИЛИrdquo Переместительный и сочетательный законы выглядят вполне привычно так же как и в математике Почти везде ldquoработаетrdquo аналогия с обычной алгеброй нужно только помнить что в логике 1 + 1 = 1 а не 2

Закон для ldquoИrdquo для ldquoИЛИrdquoдвойного отрицания A A=

исключения третьего A A 0sdot = A A 1+ =

операции с константами A 1 Asdot = A 0 0sdot = A 1 1+ = A 0 A+ =

повторения A A Asdot = A A A+ =

переместительный A B B Asdot = sdot A B B A+ = +

сочетательный A (B C) (A B) Csdot sdot = sdot sdot A (B C) (A B) C+ + = + +

распределительный A B C (A B)(A C)+ sdot = + sdot + A (B C) A B A Csdot + = sdot + sdot

поглощения A A B A+ sdot = A (A B) Asdot + =

законы де Моргана A B A Bsdot = + A B A Bsdot = +

Распределительный закон для ldquoИЛИrdquo mdash это обычное раскрытие скобок А вот для операции ldquoИrdquo мы видим не-знакомое выражение в математике это равенство неверно Доказательство можно начать с правой части раскрыв скобки

(A B)(A C) A A A C B A B C+ sdot + = sdot + sdot + sdot + sdot

Дальше используем закон повторения ( A A Asdot = ) и заметим что A A C A (1 C) A 1 A+ sdot = sdot + = sdot =

Аналогично доказываем что A B A A (1 B) A+ sdot = sdot + = таким образом(A B)(A C) A B C+ sdot + = + sdot

Равенство доказано Попутно мы доказали также и закон поглощения для операции ldquoИrdquo (для ldquoИЛИrdquo вы можете сделать это самостоятельно) Отметим что из распределительного закона следует полезная формула

A A B (A A)(A B) A B+ sdot = + sdot + = + Правила позволяющие раскрывать отрицание сложных выражений названы в честь

шотландского математика и логика де Моргана Обратите внимание что при этом не просто ldquoобщееrdquo отрицание переходит на отдельные выражения но и операция ldquoИrdquo за-меняется на ldquoИЛИrdquo (и наоборот) Доказать законы де Моргана можно с помощью та-блиц истинности

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

A B Csdot sdot + A B Csdot sdot =(A A) B C B C+ sdot sdot = sdot Здесь мы сначала вынесли общий множитель двух слагаемых за скобки а затем примени-

ли закон исключения третьегоВ общем случае можно рекомендовать такую последовательность действий1 Заменить все ldquoнебазовыеrdquo операции (исключающее ИЛИ импликацию эквивалент-

ность и др) на их выражения через базовые операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo 2 Раскрыть отрицания сложных выражений по законам де Моргана так чтобы операции отрицания остались

только у отдельных переменных3 Используя вынесение общих множителей за скобки раскрытие скобок и другие законы алгебры логики упро-

стить выражение Пример

(A B)(A B)(A C)+ sdot + sdot + =(A B) A B (A C)+ sdot sdot sdot + =(A A B A) B (A C)sdot + sdot sdot sdot + == B A B (A C)sdot sdot sdot + = A B B (A C)sdot sdot sdot + = A B (A C)sdot sdot + = B A (A C)sdot sdot + = B Asdot

Здесь последовательно использованы закон де Моргана распределительный закон закон исключения третьего переместительный закон закон повторения снова переместительный закон и закон поглощения

Логические уравнения

Если приравнять два логических выражения мы получим уравнение Его решением будут значения переменных при которых уравнение превращается в тождество то есть значения левой и правой частей совпадают Например уравнение A B 1sdot = имеет единственное решение A B 1= = для остальных комбинаций значений переменных левая часть равна нулю В то же время уравнение A B 1+ = имеет три решения ( A 0= B 1= ) ( A 1= B 0= ) и A B 1= =

А де МорганИллюстрация с сайта

wwwyorkacuk

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 13: Inf 2010-12

13 12 2010 ИНФорматИка

собаки 200кошки 250кошки|собаки 450

Это означает что область ldquoкошки ИЛИ собакиrdquo равна сумме областей ldquoкошкиrdquo и ldquoсобакиrdquo то есть эти области не пересекаются Таким образом в нашем случае диаграмма выглядит так

КC

Л

1 2

Области 1 (собакиampлемуры) и 2 (кошкиampлемуры) нам известны они составляют соответственно 40 и 50 ссылок поэтому по запросу (кошки|собаки)ampлемуры поисковый сервер выдаст 40 + 50 = 90 ссылок

Задачи

1 Используя диаграмму с тремя переменными запишите логические выражения для объединения об-ластей 2 + 5 3 + 6 4 + 7 6 + 7 5 + 6 5 + 8 7 + 8 Для каждой сложной области найдите два эквивалентных выражения

2 Известно количество ссылок которые находит поисковый сервер по следующим запросам собаки 200кошки 250лемуры 450кошки|собаки 450кошкиampлемуры 40собакиampлемуры 50

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 810)3 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 250кошки 200лемуры 500собакиampлемуры 0собакиampкошки 20кошкиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 920)4 Известно количество ссылок которые находит поисковый сервер по следующим запросам

собаки 120кошки 270лемуры 100кошки|собаки 390кошкиampлемуры 20собакиampлемуры 10

Сколько ссылок найдет этот сервер по запросукошки|собаки|лемуры

(Ответ 460)

4 Упрощение логических выражений

Законы алгебры логики

Для упрощения логических выражений используют законы алгебры логики Они формулируются для базовых логических операций mdash ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo

Закон двойного отрицания означает что операция ldquoНЕrdquo обратима если применить ее два раза логическое значе-ние не изменится Закон исключения третьего основан на том что любое логическое выражение либо истинно либо ложно (ldquoтретьего не даноrdquo) Поэтому если A 1= то A 0= (и наоборот) так что произведение этих величин всегда равно нулю а сумма mdash единице

14 ИНФорматИка 12 2010

Операции с константами и закон повторения легко проверяются по таблицам истинности операций ldquoИrdquo и ldquoИЛИrdquo Переместительный и сочетательный законы выглядят вполне привычно так же как и в математике Почти везде ldquoработаетrdquo аналогия с обычной алгеброй нужно только помнить что в логике 1 + 1 = 1 а не 2

Закон для ldquoИrdquo для ldquoИЛИrdquoдвойного отрицания A A=

исключения третьего A A 0sdot = A A 1+ =

операции с константами A 1 Asdot = A 0 0sdot = A 1 1+ = A 0 A+ =

повторения A A Asdot = A A A+ =

переместительный A B B Asdot = sdot A B B A+ = +

сочетательный A (B C) (A B) Csdot sdot = sdot sdot A (B C) (A B) C+ + = + +

распределительный A B C (A B)(A C)+ sdot = + sdot + A (B C) A B A Csdot + = sdot + sdot

поглощения A A B A+ sdot = A (A B) Asdot + =

законы де Моргана A B A Bsdot = + A B A Bsdot = +

Распределительный закон для ldquoИЛИrdquo mdash это обычное раскрытие скобок А вот для операции ldquoИrdquo мы видим не-знакомое выражение в математике это равенство неверно Доказательство можно начать с правой части раскрыв скобки

(A B)(A C) A A A C B A B C+ sdot + = sdot + sdot + sdot + sdot

Дальше используем закон повторения ( A A Asdot = ) и заметим что A A C A (1 C) A 1 A+ sdot = sdot + = sdot =

Аналогично доказываем что A B A A (1 B) A+ sdot = sdot + = таким образом(A B)(A C) A B C+ sdot + = + sdot

Равенство доказано Попутно мы доказали также и закон поглощения для операции ldquoИrdquo (для ldquoИЛИrdquo вы можете сделать это самостоятельно) Отметим что из распределительного закона следует полезная формула

A A B (A A)(A B) A B+ sdot = + sdot + = + Правила позволяющие раскрывать отрицание сложных выражений названы в честь

шотландского математика и логика де Моргана Обратите внимание что при этом не просто ldquoобщееrdquo отрицание переходит на отдельные выражения но и операция ldquoИrdquo за-меняется на ldquoИЛИrdquo (и наоборот) Доказать законы де Моргана можно с помощью та-блиц истинности

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

A B Csdot sdot + A B Csdot sdot =(A A) B C B C+ sdot sdot = sdot Здесь мы сначала вынесли общий множитель двух слагаемых за скобки а затем примени-

ли закон исключения третьегоВ общем случае можно рекомендовать такую последовательность действий1 Заменить все ldquoнебазовыеrdquo операции (исключающее ИЛИ импликацию эквивалент-

ность и др) на их выражения через базовые операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo 2 Раскрыть отрицания сложных выражений по законам де Моргана так чтобы операции отрицания остались

только у отдельных переменных3 Используя вынесение общих множителей за скобки раскрытие скобок и другие законы алгебры логики упро-

стить выражение Пример

(A B)(A B)(A C)+ sdot + sdot + =(A B) A B (A C)+ sdot sdot sdot + =(A A B A) B (A C)sdot + sdot sdot sdot + == B A B (A C)sdot sdot sdot + = A B B (A C)sdot sdot sdot + = A B (A C)sdot sdot + = B A (A C)sdot sdot + = B Asdot

Здесь последовательно использованы закон де Моргана распределительный закон закон исключения третьего переместительный закон закон повторения снова переместительный закон и закон поглощения

Логические уравнения

Если приравнять два логических выражения мы получим уравнение Его решением будут значения переменных при которых уравнение превращается в тождество то есть значения левой и правой частей совпадают Например уравнение A B 1sdot = имеет единственное решение A B 1= = для остальных комбинаций значений переменных левая часть равна нулю В то же время уравнение A B 1+ = имеет три решения ( A 0= B 1= ) ( A 1= B 0= ) и A B 1= =

А де МорганИллюстрация с сайта

wwwyorkacuk

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 14: Inf 2010-12

14 ИНФорматИка 12 2010

Операции с константами и закон повторения легко проверяются по таблицам истинности операций ldquoИrdquo и ldquoИЛИrdquo Переместительный и сочетательный законы выглядят вполне привычно так же как и в математике Почти везде ldquoработаетrdquo аналогия с обычной алгеброй нужно только помнить что в логике 1 + 1 = 1 а не 2

Закон для ldquoИrdquo для ldquoИЛИrdquoдвойного отрицания A A=

исключения третьего A A 0sdot = A A 1+ =

операции с константами A 1 Asdot = A 0 0sdot = A 1 1+ = A 0 A+ =

повторения A A Asdot = A A A+ =

переместительный A B B Asdot = sdot A B B A+ = +

сочетательный A (B C) (A B) Csdot sdot = sdot sdot A (B C) (A B) C+ + = + +

распределительный A B C (A B)(A C)+ sdot = + sdot + A (B C) A B A Csdot + = sdot + sdot

поглощения A A B A+ sdot = A (A B) Asdot + =

законы де Моргана A B A Bsdot = + A B A Bsdot = +

Распределительный закон для ldquoИЛИrdquo mdash это обычное раскрытие скобок А вот для операции ldquoИrdquo мы видим не-знакомое выражение в математике это равенство неверно Доказательство можно начать с правой части раскрыв скобки

(A B)(A C) A A A C B A B C+ sdot + = sdot + sdot + sdot + sdot

Дальше используем закон повторения ( A A Asdot = ) и заметим что A A C A (1 C) A 1 A+ sdot = sdot + = sdot =

Аналогично доказываем что A B A A (1 B) A+ sdot = sdot + = таким образом(A B)(A C) A B C+ sdot + = + sdot

Равенство доказано Попутно мы доказали также и закон поглощения для операции ldquoИrdquo (для ldquoИЛИrdquo вы можете сделать это самостоятельно) Отметим что из распределительного закона следует полезная формула

A A B (A A)(A B) A B+ sdot = + sdot + = + Правила позволяющие раскрывать отрицание сложных выражений названы в честь

шотландского математика и логика де Моргана Обратите внимание что при этом не просто ldquoобщееrdquo отрицание переходит на отдельные выражения но и операция ldquoИrdquo за-меняется на ldquoИЛИrdquo (и наоборот) Доказать законы де Моргана можно с помощью та-блиц истинности

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

A B Csdot sdot + A B Csdot sdot =(A A) B C B C+ sdot sdot = sdot Здесь мы сначала вынесли общий множитель двух слагаемых за скобки а затем примени-

ли закон исключения третьегоВ общем случае можно рекомендовать такую последовательность действий1 Заменить все ldquoнебазовыеrdquo операции (исключающее ИЛИ импликацию эквивалент-

ность и др) на их выражения через базовые операции ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo 2 Раскрыть отрицания сложных выражений по законам де Моргана так чтобы операции отрицания остались

только у отдельных переменных3 Используя вынесение общих множителей за скобки раскрытие скобок и другие законы алгебры логики упро-

стить выражение Пример

(A B)(A B)(A C)+ sdot + sdot + =(A B) A B (A C)+ sdot sdot sdot + =(A A B A) B (A C)sdot + sdot sdot sdot + == B A B (A C)sdot sdot sdot + = A B B (A C)sdot sdot sdot + = A B (A C)sdot sdot + = B A (A C)sdot sdot + = B Asdot

Здесь последовательно использованы закон де Моргана распределительный закон закон исключения третьего переместительный закон закон повторения снова переместительный закон и закон поглощения

Логические уравнения

Если приравнять два логических выражения мы получим уравнение Его решением будут значения переменных при которых уравнение превращается в тождество то есть значения левой и правой частей совпадают Например уравнение A B 1sdot = имеет единственное решение A B 1= = для остальных комбинаций значений переменных левая часть равна нулю В то же время уравнение A B 1+ = имеет три решения ( A 0= B 1= ) ( A 1= B 0= ) и A B 1= =

А де МорганИллюстрация с сайта

wwwyorkacuk

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 15: Inf 2010-12

15 12 2010 ИНФорматИка 15

Пример 1 Требуется найти все решения уравнения

((B C) A) (A C D) 0+ sdot rarr sdot + = Вспоминаем что импликация равна нулю только тогда когда первое выражение равно 1 а второе mdash 0 Поэтому

исходное уравнение сразу разбивается на два(B C) A 1+ sdot = A C D 0sdot + =

Первое уравнение с помощью закона де Моргана можно преобразовать к виду B C A 1sdot sdot = откуда сразу следует что все три сомножителя должны быть равны 1 Это значит что A 1= B 0= и C 0= Кроме того из второго уравнения следует что D 0= Решение найдено причем оно единственное

Возможен другой вариант mdash упростить выражение Заменяя импликацию по формуле A B A Brarr = + по-лучаем

((B C) A) A C D 0+ sdot + sdot + = Используем закон де Моргана

B C A A C D 0+ + + sdot + =и закон поглощения

B C A D 0+ + + = Для того чтобы логическая сумма была равна нулю каждое слагаемое должно быть равно нулю поэтому A 1=

B C D 0= = = Есть и третий вариант mdash построить таблицу истинности выражения в левой части и найти все варианты при

которых оно равно 0 Однако таблица истинности выражения с четырьмя переменными содержит 24 = 16 строк поэтому такой подход достаточно трудоемок

Пример 2 Требуется найти все решения уравнения(A B) (B C D) 1+ rarr sdot sdot =

Преобразуем выражение раскрыв импликацию через ldquoНЕrdquo и ldquoИЛИrdquo и применив закон де Моргана

A B B C D A B B C D 1+ + sdot sdot = sdot + sdot sdot = Если логическая сумма равна 1 то хотя бы одно слагаемое равно 1 (или оба одновременно) Равенство A B 1sdot = верно при A 0= B 1= и любых C и D Поскольку есть всего 4 комбинации значений C и D урав-

нение A B 1sdot = имеет 4 решенияA B C D0 1 0 00 1 0 10 1 1 00 1 1 1

Второе уравнение B C D 1sdot sdot = дает B C D 1= = = при любом A то есть оно имеет два решенияA B C D0 1 1 11 1 1 1

Видим что первое из этих решений уже было получено раньше поэтому уравнение имеет всего пять разных решений Заметим что определить все повторяющиеся решения можно из уравнения (A B)(B C D) 1sdot sdot sdot sdot = которое имеет единственное решение A 0= B C D 1= = =

Пример 3 Требуется найти число решений уравненияA B C B C D 0sdot sdot + sdot sdot =

Здесь в отличие от предыдущих задач не нужно находить сами решения интересует только их количество Урав-нение распадается на два

A B C 0sdot sdot = и B C D 0sdot sdot = Каждое из них имеет достаточно много решений Можно поступить следующим образом сначала найти количе-

ство решений ldquoобратногоrdquo уравнения с единицей в правой частиA B C B C D 1sdot sdot + sdot sdot =

и затем вычесть его из 16 (общего количества комбинаций четырех переменных) Уравнение A B C 1sdot sdot = име-ет два решения A B C 1= = = и любое D (0 или 1) Второе уравнение B C D 1sdot sdot = тоже имеет два решения A mdash любое B C 0= = D 1= Среди этих четырех решений нет повторяющихся поэтому исходное уравнение имеет 16 mdash 4 = 12 решений

Обратите внимание что число решений логических уравнений в отличие от ldquoобычных уравненийrdquo всегда конечно Это связано с тем что каждая переменная может принимать только два значения (0 и 1) и число разных комбина-ций значений переменных конечно оно равно 2n где n mdash это количество переменных Поэтому уравнение с n пере-менными имеет не более 2n решений

повторяется

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 16: Inf 2010-12

16 ИНФорматИка 12 2010

Задачи

1 Упростите логические выраженияа) A B A B Bsdot sdot sdot + е) A B B A Bsdot + + sdotб) (A B)(A B)+ sdot + ж) (A B) C (C A B)+ sdot sdot + sdot

в) A A B A C+ sdot + sdot з) A C A B A C A Bsdot + sdot + sdot + sdot

г) A A B A C+ sdot + sdot и) A (B C B C) A (B C B C)sdot sdot + sdot + sdot sdot + sdot

д) A (A B C)sdot + +

(Ответ а mdash B б mdash A B B Asdot + sdot в mdash A г mdash A B C+ + д mdash A е mdash 1 ж mdash 0 з mdash 1 и mdash A)2 Упростите логические выражения

а) A (B C)sdot + е) A B C (A B C)+ sdot + + +

б) (A B) (A B) A B+ + + + sdot ж) (A B C)(A B) C+ + sdot sdot +

в) A (A B) A B+ + + sdot з) A (C B) (A B) C A Csdot + + + sdot + sdot

г) + +(A B C) и) (A B)(A B)(A B)+ sdot + sdot +

д) (A B) A B+ sdot sdot (Ответ а mdash A B Csdot sdot б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + ж mdash A B C+ + з mdash A Csdot и mdash A Bsdot )3 Упростите логические выражения

а) (A C) Crarr sdot г) (A (B C)rarr rarr

б) (A B) (A B) A Brarr + rarr + sdot д) (A B)(A B)rarr sdot rarr

в) A (A B) (A B)+ rarr + + е) A B C (A B C)+ sdot + rarr sdot(Ответ а mdash 0 б mdash A B+ в mdash 1 г mdash A B Csdot sdot д mdash 0 е mdash A B C+ + )4 Решите уравнения а) A B (B (C D)) 0+ + rarr + = г) (A C) B C A D 0rarr + sdot sdot + =

б) (A C) B A D 0rarr + sdot + = д) ((B C) A) ((A C) D) 0+ sdot rarr + + =

в) (A C) (B C D) 0+ rarr + + = е) (A C)(A C)(A (C B D)) 1rarr sdot rarr sdot rarr sdot sdot =(Ответ а mdash 0100 б mdash 1001 в mdash 0100 г mdash 1110 д mdash 1100 е mdash 0011)5 Сколько различных решений имеют уравнения а) A B C D 1sdot + sdot = д) (A B C) B C D 1+ + sdot sdot sdot =

б) (A B)(C D) 1+ sdot + = е) (A B C) (C D) 1sdot sdot rarr sdot =

в) (A B) (B C D) 0+ rarr sdot sdot = ж) (A B) C C D C 1rarr sdot + sdot sdot =

г) A B C D (E E) 0sdot sdot sdot sdot + = з) (A B C)(B C D) 0+ + sdot + + =(Ответ а mdash 3 б mdash 7 в mdash 10 г mdash 30 д mdash 1 е mdash 14 ж mdash 6 з mdash 4)

5 Синтез логических выражений

До этого момента мы считали что логическое выражение уже задано и нам надо чтоmdashто с ним сделать (построить таблицу истинности упростить и тп) Такие задачи называются задачами анализа (от греч αναλυσις mdash разложе-ние) mdash мы исследуем имеющееся выражение При проектировании различных логических устройств в том числе и узлов компьютеров приходится решать обратную задачу mdash строить логическое выражение по готовой таблице истинности которая описывает нужное правило обработки данных Эта задача называется задачей синтеза (от греч συνθεσις mdash совмещение)

A B X

0 0 1 bull A Bsdot

0 1 1 bull A Bsdot

1 0 01 1 1 bull A Bsdot

В качестве простейшего примера построим логическое выражение для операции импликации X A B= rarr Способ 1 В таблице истинности мы выделяем все строки где логическое выражение равно единице Тогда выра-

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

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 17: Inf 2010-12

17 12 2010 ИНФорматИка

Например выражение A Bsdot истинно только при A = 0 и B = 0 то есть только в первой строке таблицы Выражение A Bsdot истинно только во второй строке а A Bsdot mdash только в последней Существует простое пра-вило если в этой строке переменная равна нулю она входит в произведение с отрицанием а если равна 1 то без отрицания

Складывая выражения для всех отмеченных строк (кроме третьей где функция равна нулю) получа-ем X = A B A B A Bsdot + sdot + sdot Упрощаем это выражение

X = A (B B) A Bsdot + + sdot = A A B+ sdot = (A A)(A B)+ sdot + = A B+ Таким образом мы вывели формулу которая позволяет заменить импликацию через операции ldquoНЕrdquo и

ldquoИЛИrdquoСпособ 2 Если в таблице истинности нулей меньше чем единиц удобнее сначала найти формулу для

обратного выражения X а потом применить операцию ldquoНЕrdquo В данном случае выражение равно нулю в единственной строчке при A 1= и B 0= то есть X A B= sdot Теперь остается применить операцию ldquoНЕrdquo и за-кон де Моргана

X A B A B= sdot = + Рассмотрим более сложный пример когда выражение зависит от трех переменных В этом случае в таблице ис-

тинности будет 8 строкA B C X

0 0 0 1 bull A B Csdot sdot

0 0 1 1 bull A B Csdot sdot

0 1 0 1 bull A B Csdot sdot

0 1 1 1 bull A B Csdot sdot

1 0 0 0

1 0 1 1 bull A B Csdot sdot

1 1 0 0

1 1 1 1 bull A B Csdot sdot

Отметим все строки где X 1= и для каждой из них построим выражение истинное только для этой комбинации переменных (см таблицу) Теперь выполним логическое сложение

X = A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdot + A B Csdot sdotУпрощение этого выражения дает

X = A B (C C)sdot sdot + + A B (C C)sdot sdot + + A C (B B)sdot sdot + =

= A Bsdot + A Bsdot + A Csdot = A (B B) A Csdot + + sdot = A A C+ sdot =(A A)(A C)+ sdot + = A C+ Используя второй способ получаем

X = A B Csdot sdot + A B Csdot sdot = A C (B B)sdot sdot + = A Csdot Тогда X A C A C= sdot = + В данном случае второй способ оказался проще потому что в таблице истинности меньше

нулей чем единиц Способ 3 При небольшом количестве нулей можно использовать еще один метод Попробуем применить опера-

цию ldquoНЕrdquo к исходному выражению для X без предварительного упрощенияX = A B C A B Csdot sdot + sdot sdot

Применяя закон де Моргана получимX = (A B C)(A B C)sdot sdot sdot sdot sdot

Используя закон де Моргана еще два раза (для обеих скобок) находимX = (A B C)(A B C)+ + sdot + +

Заметим что выражение в каждой скобке ложно только для одной комбинации исходных данных при которых X 0= Таким образом для каждой строчки в таблице истинности где выражение равно 0 нужно построить логи-ческую сумму в которую переменные равные в этой строчке единице входят с инверсией а равные нулю mdash без инверсии Выражение для X mdash это произведение полученных сумм

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

X = (A B C)(A B C)+ + sdot + + = + + sdot = +(A C) B B A C Неудивительно что мы получили тот же ответ что и раньше

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 18: Inf 2010-12

18 ИНФорматИка 12 2010

Задачи

1 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-ды и сравните их Упростите полученные выражения

а) A B X б) A B X в) A B X г) A B X

0 0 0 0 0 1 0 0 0 0 0 00 1 1 0 1 0 0 1 1 0 1 01 0 0 1 0 1 1 0 0 1 0 11 1 1 1 1 1 1 1 0 1 1 0

(Ответ а mdash B б mdash A B+ в mdash A Bsdot г mdash A Bsdot )2 Постройте выражения для логических функций заданных таблицами истинности Используйте разные мето-

ды и сравните их Упростите полученные выражения

а) A B C X б) A B C X в) A B C X

0 0 0 0 0 0 0 1 0 0 0 10 0 1 1 0 0 1 0 0 0 1 10 1 0 1 0 1 0 0 0 1 0 10 1 1 1 0 1 1 0 0 1 1 01 0 0 0 1 0 0 1 1 0 0 01 0 1 0 1 0 1 0 1 0 1 01 1 0 1 1 1 0 1 1 1 0 11 1 1 0 1 1 1 1 1 1 1 0

(Ответ а mdash A C B Csdot + sdot б mdash A B B Csdot + sdot в mdash A B B Csdot + sdot )

6 Предикаты и кванторы

В предыдущих разделах мы видели как алгебра логики позволяет нам записывать высказывания в виде формул и делать выводы Однако с помощью алгебры логики невозможно доказать некоторые довольно простые утверждения Рассмотрим такие высказывания

ВселюдисмертныСократndashчеловек

Каждый из нас понимает что если оба эти высказывания истинны то Сократ тоже смертен Однако алгебра вы-сказываний не позволяет это доказать В таких случаях приходится использовать более сложный математический аппарат с которым мы познакомимся в этом параграфе

В начале этой главы было сказано что утверждение ldquoВ городе N живут более 2 миллионов человекrdquo нель-зя считать логическим высказыванием поскольку непонятно о каком городе идет речь В этом предложении содержится некоторое утверждение зависящее от N если вместо N подставить название города можно бу-дет определить истинно оно или ложно Такое утверждение зависящее от переменной называют логической функцией или предикатом

Предикат (от лат praedicatum mdash заявленное упомянутое сказанное) mdash это утверждение содержащее пере-менные

Предикаты часто обозначаются буквой P напримерP(N)=ВгородеNживутболее2миллионовчеловек

Если мы задаем конкретные значения переменных предикат превращается в логическое высказывание Напри-мер для предиката P(N) полученное высказывание будет истинно для N = ldquoМоскваrdquo и ложно для N = ldquoЯкутскrdquo

Предикат зависящий от одной переменной mdash это свойство Например только что рассмотренный предикат P(N) характеризует свойство города Вот еще примеры предикатов-свойств

Простое(х)=х mdash простоечислоСтудент(x)=х ndash студентСпит(х)=хвсегдаспитнауроке

Предикаты могут зависеть от нескольких переменных напримерБольше(xy)=xбольшеyЖивет(xy)=xживетвгородеyЛюбит(xy)=xлюбитy

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 19: Inf 2010-12

19 12 2010 ИНФорматИка

Это предикаты-отношения они определяют связь между двумя объектамиПредикаты нередко используются для того чтобы задать множество не перечисляя все его элементы Так мно-

жество положительных чисел может быть задано предикатом который принимает истинное значение для поло-жительных чисел и ложное для остальных P(x) (x 0)= gt Множество пар чисел сумма которых равна 1 задается предикатом P(xy) (x y 1)= + = который зависит от двух переменных

Существуют предикаты которые справедливы для всех допустимых значений переменных Например P(x) (x 0)2= ge определенный на множестве всех вещественных чисел В таком случае используют запись forallxP(x) это озна-чает ldquoпри любом x предикат P(x) справедливrdquo Знак ldquo forall rdquo mdash это буква ldquoАrdquo развернутая вверх ногами (от англ all mdash все) он обозначает ldquoлюбойrdquo ldquoвсякийrdquo ldquoдля любогоrdquo ldquoдля всехrdquo Символ ldquo forall rdquo называют квантором всеобщности

Квантор (от лат quantum mdash сколько) mdash это знак или выражение обозначающее количество

Выражения ldquoлюбойrdquo ldquoдля всехrdquo и тп также можно считать кванторами они равносильны знаку ldquo forall rdquo Кванторы широко применяются в математике Например для натуральных n

forall + + + =+

n 1 2 nn(n 1)

2

Часто используют еще один квантор mdash квантор существования exist (зеркальное отражение буквы E от англ exist mdash существовать) Знак ldquo exist rdquo означает ldquoсуществуетrdquo ldquoхотя бы одинrdquo Например если P(x) (x-5 0)= gt то можно записать existxP(x) что означает ldquoсуществует x такой что x-5 0gt rdquo Это уже высказывание а не предикат потому что можно сразу установить его истинность Запись forallxP(x) mdash это тоже высказывание но оно ложно потому что не-равенство x-5 0gt верно не для всех x

Логическое выражение может включать несколько кванторов Например фразу ldquoдля любого x существует y та-кой что x + y = 0rdquo можно записать как forall exist + =x y(x y 0) Это утверждение истинно (на множестве чисел) потому что для любого x существует (-x) число с обратным знаком Переставлять местами кванторы нельзя это меняет смысл выражения Например высказывание exist forall + =y x(x y 0) означает ldquoсуществует такое значение y что для любого x вы-полняется равенство x y 0+ = rdquo это ложное высказывание

Теперь давайте вернемся к Сократу точнее к двум высказываниям приведенным в начале параграфа Как запи-сать утверждение ldquoВсе люди смертныrdquo Можно сказать иначе ldquoесли x mdash человек то x смертенrdquo причем это верно для любого x Вспоминаем что связка ldquoеслиhellip тоrdquo записывается как импликация а выражение ldquoдля любого xrdquo mdash в виде квантора forall x Поэтому получаем

forall rarrx(P(x) Q(x))где P(x) = ldquox - человекrdquo Q(x)= ldquox - смертенrdquo Так как утверждение P(x) Q(x)rarr верно для любого х оно также верно при подстановке x = Сократ

P(Сократ)rarr Q(Сократ)=1Поскольку Сократ mdash человек P( Сократ)= 1 Поэтому с помощью таблицы истинности для импликации мы на-

ходим что Q(Сократ) = 1 то есть ldquoСократ смертенrdquoЕсли построить отрицание для высказывания с квантором forall или exist мы увидим что один квантор заменяет

другой Например отрицание высказывания forallxP(x) (ldquoневерно что для любого x выполняется P(x)rdquo) звучит ldquoсуще-ствует такой x для которого не выполняется P(x)rdquo и может быть записано в виде existxP(x) Здесь как и раньше черта сверху обозначает отрицание Таким образом

forallxP(x) = existxP(x)

Аналогично можно показать что exist = forallxP(x) xP(x)Где можно использовать язык предикатов Самая подходящая для этого область информатики mdash системы искусственного

интеллекта в которых моделируется человеческое мышление Многие из них строятся на языке логического программирова-ния Пролог в котором программа представляет собой набор данных и правила вывода новых результатов из этих данных

Задачи

1 Какие из следующих предложений являются предикатами (здесь x и y mdash вещественные числа)а) x y 5+ = д) x y 02 2+ ltб) exist + =x (x y 5) е) xработаетввузев) forall exist + =y x (x y 5) ж) forallx (xmdashстудент)г) sin x cos x 12 2+ = з) existx (xmdashучительy)

2 Задайте с помощью предикатов множества точек соответствующие заштрихованным областям на плоскости

а)

x

y 1

x

yб)

y = ndash x

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 20: Inf 2010-12

20 ИНФорматИка 12 2010

3 Поставьте в начале каждого предложения одно из слов ldquoвсеrdquo или ldquoне всеrdquoа) ldquo окуни mdash рыбыrdquo д) ldquo числа четныеrdquoб) ldquo рыбы умеют плаватьrdquo е) ldquo ломаные состоят из отрезковrdquoв) ldquo реки впадают в моряrdquo ж) ldquo прямоугольники mdash квадратыrdquoг) ldquo моря соленыеrdquo з) ldquo кошки mdash млекопитающиеrdquo4 Запишите с помощью кванторов следующие утвержденияа) ldquoСуществует x такой что x gt yrdquo б) ldquoНе существует x такой что x gt yrdquo в) ldquoДля любого x имеем x2 gt 1rdquoг) ldquoЛюбая река впадает в Каспийское мореrdquoд) ldquoСуществует река которая впадает в Каспийское мореrdquoе) ldquoДля любой реки существует море в которое она впадаетrdquoж) ldquoДля любого моря существует река которая в него впадаетrdquoз) ldquoСуществует река которая впадает во все моряrdquoи) ldquoСуществует море в которое впадают все рекиrdquo5 Запишите с помощью кванторов следующие утвержденияа) ldquoНекоторые школьники ходят в театрrdquoб) ldquoВсе кошки серыеrdquoв) ldquoВстречаются злые собакиrdquoг) ldquoВсе люди разныеrdquoд) ldquoЛюди ошибаютсяrdquoе) ldquoНикто не обращает на него вниманияrdquoж) ldquoНи одна фирма не обанкротиласьrdquoз) ldquoВсе лебеди mdash белые или черныеrdquo6 Запишите отрицание для следующих утвержденийа) exist =x (x 5)2 д) xработаетввузеб) exist + =x (x y 5) е) forallx (xmdashстудент)в) forall + =y (x y 5) ж) existx (xmdashучительy)г) forall exist + =y x (x y 5) з) exist forallx y (xmdashучительy)

7 Логические элементы компьютера

Простейшие элементы

В компьютерах все вычисления выполняются с помощью логических элементов mdash электронных схем выполняю-щих логические операции Обозначения простейших элементов приводятся в таблице (ГОСТ 2743-91) Заметьте что небольшой кружок на выходе (или на входе) обозначает операцию ldquoНЕrdquo (отрицание инверсию)

ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo ldquoИmdashНЕrdquo ldquoИЛИmdashНЕrdquo

Может показаться что для реализации сложных логических функций нужно много разных логических элементов Однако как мы видели в разд 5 любую логическую функцию можно представить с помощью операций ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo (такой набор элементов называется полным) Именно эта классическая ldquoтройкаrdquo используется в книгах по логике а также во всех языках программирования Тем не менее инженеры часто предпочитают строить логические схемы на основе элементов ldquoИЛИndashНЕrdquo Как показано в разд 0 эта функция (штрих Шеффера) позволяет реализо-вать ldquoНЕrdquo ldquoИrdquo и ldquoИЛИrdquo а значит и любую другую операцию

Если нужно составить схему по известному логическому выражению ее начинают строить с конца Находят опе-рацию которая будет выполняться последней и ставят на выходе соответствующий логический элемент Затем по-вторяют то же самое для сигналов поступающих на вход этого элемента В конце концов должны остаться только исходные сигналы mdash переменные в логическом выражении

ampX

Y1X

Y1X

YampX

YX x+YX XY X Ysdot X Y+

в)

x

y

1ndash1

г)

x

y

0 2

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 21: Inf 2010-12

21 12 2010 ИНФорматИка

Составим схему соответствующую выражению X A B A B C= sdot + sdot sdot Последняя операция mdash это логическое сложение поэтому на выходе схемы будет стоять элемент ldquoИЛИrdquo

1 X

Для того чтобы получить на первом входе A Bsdot нужно умножить A на B поэтому добавляем элемент ldquoИrdquo

Xamp 1

Чтобы получить A ставим элемент ldquoНЕrdquo

XampВ

1A

Аналогично разбираем вторую ветку которая поступает на второй вход элемента ldquoИЛИrdquo

Xamp

В

1A

amp

amp

С

В

А

Схема составлена ее входами являются исходные сигналы A B и C а выходом mdash X

Триггер

Слово триггер происходит от английского слова trigger mdash ldquoзащелкаrdquo или спусковой крючок3 Так называют элек-тронную схему которая может находиться только в двух состояниях (их можно обозначить как 0 и 1) и способна почти мгновенно переходить из одного состояния в другое Триггер изобрели независимо друг от друга МА Бонч-Бруевич и англичане УИкклз и ФДжордан в 1918 году

В компьютерах триггер используют для запоминания одного бита информации Соответственно для того чтобы запомнить 1 байт информации требуется 8 триггеров а для хранения 1 Кб mdash 8 middot 1024 = 8192 триггера

Триггеры бывают разных типов Самый распространенный mdash это RS-триггер Он имеет два входа которые обо-значаются как S (англ set mdash установить) и R (англ reset mdash сброс) и два выхода mdash Q и Q причем выходной сигнал Q является логическим отрицанием сигнала Q (если Q = 1 то Q 0= и наоборот) RS-триггер можно построить на двух элементах ldquoИndashНЕrdquo или на двух элементах ldquoИЛИndashНЕrdquo На следующем рисунке показаны условное обозначение RS-триггера внутреннее устройство триггера на элементах ldquoИЛИndashНЕrdquo и его таблица истинности

S R Q Q

0 0 Q Q хранение бита

0 1 0 1 сброс в 01 0 1 0 установка в 11 1 0 0 запрещено

Триггер использует так называемые обратные связи mdash сигналы с выходов схем ldquoИЛИndashНЕrdquo поступают на вход соседней схемы Именно это позволяет хранить информацию

Рассмотрим таблицу истинности триггера Начнем с варианта когда S = 0 и R = 1 Элемент ldquoИЛИndashНЕrdquo в нижней части схемы можно заменить на последовательное соединение элементов ldquoИЛИrdquo и ldquoНЕrdquo Тогда независимо от вто-рого входа на выходе ldquoИЛИrdquo будет 1 а на выходе ldquoНЕrdquo mdash ноль Это значит что Q = 0

1R=1

1 0 Q

3 В английском языке триггер называется flip-flop

S

R

QT

1

1

S

R

A Bsdot

A B Csdot sdot

A Bsdot

A B Csdot sdot

A BsdotA

A B Csdot sdot

A

B

C

A Bsdot

A Bsdot

A B Csdot sdot

Q

Q

Q

A

В

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 22: Inf 2010-12

22 ИНФорматИка 12 2010

Тогда на входе другого элемента ldquoИЛИndashНЕrdquo будут два нуля а на выходе Qmdash единица

10

0 1 QS=0

Поскольку основным выходом считается Q мы записали в триггер значение 0 Схема симметрична поэтому легко догадаться что при S = 1 и R = 0 мы запишем в триггер 1 (Q = 1)

Теперь рассмотрим случай когда S = 0 и R = 0 На выходе первого элемента ldquoИЛИrdquo будет сигнал Q + 0 = Q поэтому на выходе Q останется его предыдущее значение

1Q

QS=0

Q

Аналогично легко показать что на выходе Q тоже остается его предыдущее значение Это режим хранения бита Для случая S = 1 и R = 1 мы увидим что оба выхода становятся равны нулю mdash в этом нет смысла поэтому такой ва-риант запрещен

Для хранения многоразрядных данных триггеры объединяются в единый блок который называется реги-стром Регистры (от 8 до 64 бит) используются во всех процессорах для временного хранения промежуточных результатов

Над регистром как над единым целым можно производить ряд стандартных операций сбрасывать (обну-лять) заносить в него код и тд Часто регистры способны не просто хранить информацию но и обрабатывать ее Например существуют регистры-счетчики которые подсчитывают количество импульсов поступающих на вход

Триггеры применяются также в микросхемах быстродействующей оперативной памяти

Сумматор

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

A B P S0 0 0 00 1 0 11 0 0 11 1 1 0

Обозначим через A и B входы полусумматора а через P и S mdash выходы (перенос в следующий разряд и бит остаю-щийся в текущем разряде) Таблица истинности этого устройства показана на рисунке Легко увидеть что столбец P mdash это результат операции ldquoИrdquo а столбец S mdash результат ldquoисключающего ИЛИrdquo

P A B= sdot S A B A B A B= oplus = sdot + sdot Формулу для S можно также записать в таком виде

S A B A B (A B)(A B) (A B)(A B) (A B) P= sdot + sdot = + sdot + = + sdot sdot = + sdot что позволяет построить полусумматор используя всего 4 простейших элемента

A B C P S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

Слева показано условное обозначение полусумматора греческая буква sum здесь (и в математике) обозначает сумму

Полный одноразрядный сумматор учитывает также и третий бит mdash перенос из пред-ыдущего разряда C Сумматор имеет три входа и два выхода Таблица истинности и обо-значение сумматора показаны на рисунках

Логические функции для выходов сумматора вы можете найти самостоятельноСумматор можно построить с помощью двух полусумматоров и одного элемента ldquoИЛИrdquo

1

amp

A

B

ampS

P

P

sumS

P

sumS

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 23: Inf 2010-12

23 12 2010 ИНФорматИка

Сначала складываются биты B и C а затем к результату добавляется бит A Перенос на выходе сумматора появля-ется тогда когда любое из двух промежуточных сложений дает перенос

Для сложения многоразрядных чисел сумматоры объединяют в цепочку При этом выход P одного сумматора (перенос в следующий разряд) соединяется с входом C следующего На рисунке показано как складываются два трехразрядных разрядных числа X = 1102 и Y = 0112 Сумма Z = 10012 состоит из четырех бит поэтому на выходе последнего сумматора бит переноса будет равен 1

S

P

sumx1=0

y1=1

0

S

P

sumx2=1

y2=1

0

S

P

sumx3=1

y3=0

1 z4=1

z1=1 z2=0 z3=0

Сложение начинается с самого младшего разряда На вход первого сумматора подаются младшие биты исходных чисел x1 и y1 (см рисунок) а на третий вход mdash ноль (нет переноса из предыдущего разряда) Выход S первого сумма-тора mdash это младший бит результата z1 а его выход P (перенос) передается на вход второго сумматора и тд Выход P последнего из сумматоров представляет собой дополнительный разряд суммы то есть z4

Сумматор играет важную роль не только при сложении чисел но и при выполнении других арифметических дей-ствий Фактически является основой арифметического устройства современного компьютера

Контрольные вопросы

1 Что такое триггер Объясните его принцип действия2 Почему для RS-триггера комбинация входов S = 1 и R = 1 запрещена3 Чем отличается одноразрядный сумматор от полусумматора4 Как можно построить сумматор с помощью двух полусумматоров5 Постройте логические выражения для выходов сумматора и нарисуйте соответствующие им схемы6 Объясните как работает многоразрядный сумматор7 Что такое перенос Как он используется в многоразрядном сумматоре

Задачи

1 Используя логические элементы постройте схемы соответствующие логическим выражениям X A C B C1 = sdot + sdot X A B B C2 = sdot + sdot X A B B C3 = sdot + sdot

2 Соревнования по поднятию тяжестей судит бригада из трех человек один из них старший Лампочка ldquoВес взятrdquo должна зажигаться если проголосовали по крайней мере два судьи причем один из них mdash старший Предложите логическую схему которая решала бы эту задачу

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

4 В самолете есть три бака с горючим Бортовой компьютер получает сигналы от датчиков уровня в каждом баке если горючего в баке достаточно то сигнал равен 0 если горючее кончилось mdash 1 Когда горючее заканчивается по

S

P

sum

S

P

sum

1P

В

С

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 24: Inf 2010-12

24 ИНФорматИка 12 2010

крайней мере в двух баках должна загореться лампочка ldquoТревогаrdquo Предложите логическую схему которая решала бы эту задачу

5 В парламенте некоторой страны выбирают спикера из трех кандидатов Каждый парламентарий должен нажать одну и только одну из трех кнопок Если он проголосовал правильно (нажал ровно одну кнопку) на пульте должна загореться зеленая лампочка Предложите логическую схему которая решала бы эту задачу

6 Постройте RS-триггер на элементах ldquoИndashНЕrdquo и составьте его таблицу истинности7 Постройте таблицу истинности и логическую схему D-триггера который запоминает сигнал на входе D (англ

data mdash данные) при подаче логической единицы на вход C (англ clock mdash синхронизация) Для этого можно напри-мер немного изменить входную часть RS-триггера

D

C

Q

8 Логические задачи

Метод рассуждений

Задача 1 Среди трех приятелей (их зовут Сеня Вася и Миша) один всегда говорит правду второй гово-рит правду через раз а третий все время обманывает Как-то раз они впервые прогуляли урок информатики Директор школы вызвал их в свой кабинет для разговора Сеня сказал ldquoЯ всегда прогуливаю информатику Не верьте тому что скажет Васяrdquo Вася сказал ldquoЯ раньше не прогуливал этот предметrdquo Миша сказал ldquoВсе что говорит Сеня mdash правдаrdquo Директору стало все понятно Кто из них правдив кто лгун а кто говорит правду через раз

Для решения используем метод рассуждений Во-первых есть ldquoточнаяrdquo информация которая не подвергается сомнению все трое прогуляли урок информатики в первый раз

Запишем высказывания мальчиковСеня 1 Я всегда прогуливаю информатику 2 Вася сейчас совретВася 1 Я раньше не прогуливал информатикуМиша 1 Сеня говорит правдуИзвестно что один из них говорит правду всегда второй mdash через раз а третий все время лжет Отметим что если

у нас есть только одно высказывание ldquoполулжецаrdquo оно может быть как истинным так и ложнымСопоставив первое высказывание Сени и высказывание Васи с ldquoточнойrdquo информацией сразу определяем что тут

Сеня соврал а Вася сказал правду Это значит что второе высказывание Сени тоже неверно поэтому мальчик Сеня всегда лжет

Тогда один из оставшихся Вася или Миша правдив а второй говорит правду через раз Мишино высказывание неверно поскольку мы уже определили что Сеня лжет это значит что Миша не всегда говорит правду он mdash ldquoпо-лулжецrdquo Тогда получается что Вася правдив

Табличный метод

Задача 2 Перед началом турнира по шахматам болельщики высказали следующие предположения по поводу результатов

А) Максим победит Борис mdash второй Б) Борис mdash третий Коля mdash первый В) Максим mdash последний а первый mdash Дима Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих про-

гнозов Как распределились призовые места

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Запишем высказывания трех болельщиков в форме таблицы (заголовок строки обозначает место в турнирной таблице) Будем считать что каждое место занял ровно один участник

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 25: Inf 2010-12

25 12 2010 ИНФорматИка

Начнем ldquoраскручиватьrdquo эту таблицу с той строчки где больше всего информации в данном случае mdash с первой Предположим что Максим действительно занял первое место как и сказал болельщик ldquoArdquo В этом случае ldquoВrdquo ошиб-ся поставив на первое место Диму Тогда получается что второй прогноз болельщика ldquoВrdquo верен и Максим mdash по-следний

A Б В1 Максим Коля Дима2 Борис3 Борис4 Максим

Так как мы предполагали что Максим занял первое место получается противоречие Следовательно первый про-гноз ldquoАrdquo не сбылся Но тогда должен быть верен его второй прогноз и Борис занял второе место При этом он не мог занять еще и третье место поэтому первый прогноз болельщика ldquoБrdquo неверный а верен его второй прогноз Коля mdash первый

В этом случае Дима не может быть первым поэтому верен первый прогноз ldquoВrdquo Максим mdash последний Диме оста-лось единственное свободное третье место В результате места распределились так I mdash Коля II mdash Борис III mdash Дима и IV mdash Максим

Задача 3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Василий Семен Геннадий и Иван Известно что все они имеют разные профессии скрипач столяр охотник и врач Из-вестно что

(1) Столяр живет правее охотника(2) Врач живет левее охотника (3) Скрипач живет с краю(4) Скрипач живет рядом с врачом(5) Семен не скрипач и не живет рядом со скрипачом(6) Иван живет рядом с охотником(7) Василий живет правее врача(8) Василий живет через дом от ИванаОпределите кто где живетИз условий (1) и (2) следует что охотник живет не с краю потому что справа от него живет столяр а слева mdash врач

Скрипач по условию (3) живет с краю он может жить как слева так и справа от остальных

скрипач врач охотник столяр скрипач

Согласно условию (4) скрипач живет рядом с врачом поэтому он занимает крайний дом слева

1 2 3 4скрипач врач охотник столяр

Профессии жильцов определили остается разобраться с именами Из условия (5) ldquoСемен не скрипач и не живет рядом со скрипачомrdquo следует что Семен mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен Семен

Из условия (6) ldquoИван живет рядом с охотникомrdquo следует что он mdash врач или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Из условия (7) ldquoВасилий живет правее врачаrdquo определяем что Василий mdash охотник или столяр

1 2 3 4скрипач врач охотник столяр

Семен СеменИван Иван

Василий Василий

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 26: Inf 2010-12

26 ИНФорматИка 12 2010

Согласно условию (8) ldquoВасилий живет через дом от Иванаrdquo поэтому Иван mdash врач а Василий mdash столяр

1 2 3 4скрипач врач охотник столяр

Иван Семен Василий

Тогда сразу получается что Семен mdash охотник а Геннадий должен занять оставшееся свободное место он mdash скрипач

1 2 3 4скрипач врач охотник столяр

Геннадий Иван Семен Василий

Задача 3 Шесть приятелей Саша Петя Витя Дима Миша и Кирилл встретившись через 10 лет после окончания школы выяснили что двое из них живут в Москве двое mdash в Санкт-Петербурге а двое mdash в Перми Известно что

(1) Витя ездит в гости к родственникам в Москву и Санкт-Петербург(2) Петя старше Саши(3) Дима и Миша летом были в Перми в командировке(4) Кирилл и Саша закончили университет в Санкт-Петербурге и уехали в другие города(5) Самый молодой из них живет в Москве(6) Кирилл редко приезжает в Москву(7) Витя и Дима часто бывают в Санкт-Петербурге по работеОпределите кто где живетСоставим таблицу где каждая строка соответствует городу а столбец mdash человеку

Саша Петя Витя Дима Миша КириллМоскваСанкт-ПетербургПермь

Единица в таблице будет обозначать что человек живет в данном городе а ноль mdash что точно не живет По условию в каждом городе живут ровно 2 человека каждый живет только в одном городе Поэтому в каждой строке должно быть две единицы а в каждом столбце mdash одна

Из условия (1) следует что Витя живет в Перми

Саша Петя Витя Дима Миша КириллМосква 0Санкт-Петербург 0Пермь 1

Из (2) и (5) находим что Петя живет не в Москве Кроме того как следует из (6) Кирилл mdash тоже не москвич

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1

Согласно (3) Дима и Миша живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0Пермь 1 0 0

Из условия (4) делаем вывод что Кирилл и Саша живут не в Санкт-Петербурге отсюда сразу следует что Кирилл живет в Перми Двух пермяков мы уже определили поэтому Саша и Петя живут не в Перми

Саша Петя Витя Дима Миша КириллМосква 0 0 0Санкт-Петербург 0 0 0Пермь 0 0 1 0 0 1

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 27: Inf 2010-12

27 12 2010 ИНФорматИка

Далее находим что Саша mdash москвич а Петя живет в Санкт-Петербурге

Саша Петя Витя Дима Миша КириллМосква 1 0 0 0Санкт-Петербург 0 1 0 0Пермь 0 0 1 0 0 1

По условию (7) Витя и Дима mdash не петербуржцы поэтому в Петербурге живет Миша а Дима mdash в Москве

Саша Петя Витя Дима Миша КириллМосква 1 0 0 1 0 0Санкт-Петербург 0 1 0 0 1 0Пермь 0 0 1 0 0 1

Таким образом Саша и Дима живут в Москве Петя и Миша mdash в Санкт-Петербурге а Витя и Кирилл mdash в Перми

Использование алгебры логики

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

Задача 4 Следующие два высказывания истинны1 Неверно что если корабль A вышел в море то корабль C mdash нет2 В море вышел корабль B или корабль C но не оба вместеОпределить какие корабли вышли в мореВведем три высказывания A mdash корабль A вышел в море B mdash корабль B вышел в море C mdash корабль C вышел

в море Вспомним что связка ldquoесли hellip тоrdquo в логических выражениях заменяется импликацией поэтому фразу ldquoесли корабль A вышел в море то корабль C mdash нетrdquo можно записать как A C 1rarr = Но в условии сказано что это утверждение неверно поэтому

A C 0rarr = или A C 1rarr = Второе условие mdash это ldquoисключающее ИЛИrdquo то есть B C 1oplus = Оба условия истинны одновременно то есть их

логическое произведение (ldquoИrdquo) тоже истинно(A C)(B C) 1rarr sdot oplus =

Нам нужно решить это уравнение и найти неизвестные A B и C Для этого выразим импликацию и ldquoисключающее ИЛИrdquo через базовый набор логических операций (ldquoНЕrdquo ldquoИrdquo ldquoИЛИrdquo) а затем раскроем инверсию сложного выра-жения с помощью закона де Моргана

(A C)(B C) (A C)(B C B C) A C (B C B C) 1rarr sdot oplus = + sdot sdot + sdot = sdot sdot sdot + sdot = В последнем выражении раскроем скобки и учтем что C C 0sdot = и C C Csdot = Получим

A B C 1sdot sdot = Это уравнение имеет единственное решение A 1= B 0= и C 1= Это значит что в море вышли корабли

A и CЗадача 5 На вопрос ldquoКто из твоих учеников изучал логикуrdquo учитель ответил ldquoЕсли логику изучал Андрей то

изучал и Борис Однако неверно что если изучал Семен то изучал и Борисrdquo Кто же изучал логикуОбозначим буквами высказывания A mdash логику изучал Андрей B mdash логику изучал Борис и C mdash логику изучал Семен

Оба высказывания учителя можно записать в виде импликацийldquoЕсли логику изучал Андрей то изучал и Борисrdquo A B 1rarr =ldquoНеверно что если изучал Семен то изучал и Борисrdquo C B 0rarr =Дальше есть два варианта решения Во-первых можно поступить так же как и в предыдущей задаче применить

операцию ldquoНЕrdquo ко второму высказыванию и составить уравнение с помощью логического произведения

(A B)(C B) 1rarr sdot rarr = Теперь представляем импликацию через базовые операции и применяем закон де Моргана

(A B)(C B) (A B) C B A C B 1+ sdot + = + sdot sdot = sdot sdot = Это уравнение имеет единственное решение A 0= B 0= и C 1= Значит логику изучал только СеменМожно поступить иначе вспомнив что импликация ложна только в том случае когда первое высказыва-

ние истинно а второе ложно Поэтому из условия C B 0rarr = сразу следует что B 0= и C 1= Тогда первое условие A B A 0 1rarr = rarr = сразу дает A 0=

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 28: Inf 2010-12

28 ИНФорматИка 12 2010

Задачи

1 Три школьника Миша Коля и Сергей остававшиеся в классе на перемене были вызваны к директору по поводу разбитого в это время окна в кабинете На вопрос директора о том кто это сделал мальчики ответили следующее

Миша ldquoЯ не бил окно и Коля тожеhelliprdquoКоля ldquoМиша не разбивал окно это Сергей разбил футбольным мячомrdquoСергей ldquoЯ не делал этого стекло разбил Мишаrdquo Выяснилось что один из ребят сказал чистую правду второй в одной части заявления соврал а другое его выска-

зывание истинно а третий оба раза соврал Кто разбил стекло в классе(Ответ Миша)2 В финал соревнований по настольному теннису вышли Наташа Маша Люда и Рита Болельщики выска-

зали свои предположения о распределении мест в дальнейших состязаниях Один считает что первой будет Наташа а Маша будет второй Другой болельщик на второе место прочит Люду а Рита по его мнению займет четвертое место Третий считает что Рита займет третье место а Наташа будет второй Когда соревнования закончились оказалось что каждый из болельщиков был прав только в одном из своих прогнозов Как рас-пределились места

(Ответ I mdash Наташа II mdash Люда III mdash Рита IV mdash Маша)3 На одной улице стоят в ряд 4 дома в каждом из них живет по одному человеку Их зовут Алексей Егор

Виктор и Михаил Известно что все они имеют разные профессии рыбак пчеловод фермер и ветеринар Из-вестно что

(1) Фермер живет правее пчеловода(2) Рыбак живет правее фермера (3) Ветеринар живет рядом с рыбаком(4) Рыбак живет через дом от пчеловода(5) Алексей живет правее фермера(6) Виктор mdash не пчеловод(7) Егор живет рядом с рыбаком(8) Виктор живет правее АлексеяОпределите кто где живет(Ответ пчеловод Михаил фермер Егор рыбак Алексей ветеринар Виктор)4 Дочерей Василия Лоханкина зовут Даша Анфиса и Лариса У них разные профессии и они живут в разных го-

родах одна mdash в Ростове вторая mdash в Париже и третья mdash в Москве Известно что(1) Даша живет не в Париже а Лариса mdash не в Ростове(2) Парижанка mdash не актриса(3) В Ростове живет певица(4) Лариса mdash не балеринаОпределите где живет каждая из дочерей и чем занимается(Ответ Даша mdash певица Ростов Анфиса mdash балерина Париж Лариса mdash актриса Москва)5 В состав экспедиции входят Михаил Сергей и Виктор На обсуждении распределения обязанностей с руково-

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

(Ответ Виктор mdash командир Михаил mdash механик Сергей mdash радист)6 В ходе заседания суда выяснилось что(1) Если Аськин не виновен или Баськин виновен то виновен Сенькин(2) Если Аськин не виновен то Сенькин не виновенВиновен ли Аськин(Ответ виновен)7 Аськин Баськин и Васькин стали свидетелями ограбления банка Во время расследования Аськин сказал что

взломщики приехали на синей ldquoТойотеrdquo Баськин считает что это был красный ldquoBMWrdquo а Васькин утверждает что это был ldquoФорд-Фокусrdquo но не синий Выяснилось что каждый из них назвал неправильно либо марку либо цвет ма-шины На каком автомобиле приехали преступники

(Ответ красная ldquoТойотаrdquo)

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 29: Inf 2010-12

12 2010 ИНФорматИка 29

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 30: Inf 2010-12

ИНФорматИка 12 201030

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 31: Inf 2010-12

31 12 2010 ИНФорматИка 12 2010 ИНФорматИка 31

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo

Page 32: Inf 2010-12

copy ИНФОРМАТИКА 2010 Выходит два раза в месяц При перепечатке ссылка на ИНФОРМАТИКУ обязательна рукописи не возвращаютсяадрес редакции и издателя Киевская 24 Москва 121165 Тел 8 (499) 249-48-96отдел рекламы Тел 8 (499) 249-98-70Тел 8 (499) 249-31-38 249-33-86 Факс 8 (499) 249-31-38inf1septemberru http1septemberru

Гл редактор СЛ Островский

редакцияЕВ Андреева

ДМ Златопольский (редактор вкладки ldquoВ мир информатикиrdquo)

НП Медведева

корректор ЕЛ Володина

Дизайн и верстка НИ Пронская

Фото с сайта shutterstockcom

ИзДательскИй Дом laquoПервое сеНтябряraquo главный редактор ndash

ас соловейчик

Газеты ИзДательскоГо Дома

Первое сентябрягл ред mdash ЕВ Бирюкова

индекс подписки mdash 32024

английский язык гл ред mdash ЕВ Громушкина индекс подписки mdash 32025

библиотека в школегл ред mdash ОК Громова

индекс подписки mdash 33376

биология гл ред mdash НГ Иванова

индекс подписки mdash 32026

Географиягл ред mdash ОН Коротова

индекс подписки mdash 32027

Дошкольное образованиегл ред mdash МС Аромштам

индекс подписки mdash 33373

здоровье детей гл ред mdash НВ Семина

индекс подписки mdash 32033

Информатикагл ред mdash СЛ Островскийиндекс подписки mdash 32291

Искусство гл ред mdash МН Сартан

индекс подписки mdash 32584

Историягл ред mdash АЛ Савельев

индекс подписки mdash 32028

классное руководство и воспитание школьниковгл ред mdash ОМ Леонтьеваиндекс подписки mdash 19651

литература гл ред mdash СВ Волков

индекс подписки mdash 32029

математикагл ред mdash ЛО Рослова

индекс подпи с ки mdash 32030

Начальная школагл ред mdash МВ Соловейчикиндекс подписки mdash 32031

Немецкий языкгл ред mdash МД Бузоева

индекс подписки mdash 32292

русский языкгл ред mdash ЛА Гончар

индекс подписки mdash 32383

спорт в школегл ред mdash ОМ Леонтьеваиндекс подписки mdash 32384

Управление школойгл ред mdash ЯА Сартан

индекс подписки mdash 32652

Физика гл ред mdash НД Козлова

индекс подписки mdash 32032

Французский языкгл ред mdash ГА Чесновицкаяиндекс подписки mdash 33371

Химия гл ред mdash ОГ Блохина

индекс подписки mdash 32034

Школьный психологгл ред mdash ИВ Вачков

индекс подписки mdash 32898

Издательская подписка тел (499) 249-47-58 E-mail podpiska1septemberru

Индексы подпискикаталог ldquoроспечатьrdquo

32291 (инд) 32591 (орг) 32744 (комп)

каталог ldquoПочта россииrdquo 79006 (инд) 79574 (орг)

Учредитель ооо ldquoЧистые прудыrdquoЗарегистрировано в Министерстве РФ по делам печати ПИ 77 7230 от 12042001Отпечатано в ОАО ldquoЧеховский полиграфический комбинатrdquo ул Полиграфистов д 1 Московская область г Чехов 142300

Тираж 3500 экзСрок подписания в печать по графику 13052010Номер подписан 13052010Заказ Цена свободная

В июле в двух номерах ( 13 и 14) будет опубликован новый материал АА Дувано-ва посвященный языку программирова-ния JavaScript Материал построен в жанре заметок которые были написаны в течение 20092010 учебного года для студентов дис-танционного курса ldquoWeb-конструированиеrdquo Роботландского университета (httpwwwbotikru~robotru) Работа над заметка-ми была организована в виде ldquoкружкаrdquo В кружок приглашались те кто считал что ldquoзнакомrdquo с языком JavaScript хотел бы систематизировать и расширить свои знания а затем применить их на практи-ке для создания ldquoживыхrdquo интерактивных страниц соответствующих современным представлениям о пользовательском ком-пьютерном интерфейсе

Заметки не предназначены для освое-ния JavaScript ldquoс полного нуляrdquo хотя ви-димо могут быть использованы и для это-го mdash просто никто пока не пробовал В них не объясняется как записывать ветвление или цикл как работает оператор присваи-вания Предполагается что все это хорошо известно или интуитивно понятно И что чтение текстов вроде приведенного при-мера не вызывает никаких трудностей

if (d gt 0) x1 = (b+Mathsqrt(d))(2a) x2 = (b-Mathsqrt(d))(2a) mes = два корня else if (d == 0) x1 = -b(2a) mes = один кореньelse mes = нет корней

В материале будут рассмотрены более сложные (но базовые) вещи такие как функции массивы объекты обертки клас-сы конструкторы прототипы В них идет речь об объекте вызова функции о замы-каниях Разбираются конструкции вида asort(function(ab)return a-b)

и более сложные

var fID = (function(id0) var id=id0 return function()return id++ )(0)

Также в заметках рассматривается ра-бота с объектной моделью документа и библиотека jQuery

Содержание заметок состоит из трех частей Базовый JavaScript

o Заметка 1 Данные o Заметка 2 Строки o Заметка 3 Логические значения o Заметка 4 Объекты o Заметка 5 Переменныеo Заметка 6 Массивы o Заметка 7 Функции Часть 1 Общие вопросы o Заметка 8 Функции Часть 2 Замыкания o Заметка 9 Функции Часть 3 Конструкторы

Клиентский JavaScripto Заметка 10 Подключение JavaScript к гипертекстовой странице o Заметка 11 Объектная модель документа Ранняя упрощенная модель o Заметка 12 Управление CSS-свойствами на JavaScripto Заметка 13 Объектная модель документа DOM W3C o Заметка 14 Обработка событий

Библиотека jQueryo Заметка 15 Введение в jQuery

К номерам будет приложен диск с полной электронной поддержкой

Читайте в июльских номерах ldquoПродвинутый JavaScriptrdquo