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



Pdf просмотр
страница1/3
Дата15.02.2017
Размер1.58 Mb.
Просмотров1190
Скачиваний1
  1   2   3

Профессор
Игорь Н. Бекман
КОМПЬЮТЕРЫ В ИНФОРМАТИКЕ

Курс лекций
Лекция 6. ЛОГИЧЕСКИЕ ОСНОВЫ КОМПЬЮТЕРОВ
Алгебра логики (алгебра высказываний) – раздел математической логики, изучающий строение
(форму, структуру) сложных логических высказываний и способы установления их истинности с помощью алгебраических методов. При этом под высказыванием (суждением) понимают повествовательное предложение, относительно которого можно сказать, истинно или ложно. Логика в информатике - это направления исследований и отрасли знания, где логика применяется в информатике и искусственном интеллекте.
В данной лекции мы рассмотрим основные аспекты алгебры логики, включая историю её развития, понятия, виды логических операций и таблиц истинности, логические формулы, а также законы алгебры логики. Заключительная часть лекции посвящена использованию алгебры логики в компьютерных науках.
1.
АЛГЕБРА ЛОГИКИ
1.1 Историческая справка
Алгебра логики возникла в середине ХIХ века в трудах английского математика Джорджа Буля. Её создание представляло собой попытку решать традиционные логические задачи алгебраическими методами.
Отцом алгебры логики по праву считается английский математик 19-го столетия Джорж Буль (1815-
1864). Именно он построил один из разделов формальной логики в виде некоторой «алгебры», аналогичной алгебре чисел, но не сводящейся к ней. Алгебра в широком смысле слова – наука об общих операциях, аналогичных сложению и умножению, которые могут выполняться не только с числами, но и над другими математическими объектами. Существуют алгебры натуральных чисел, многочленов, векторов, матриц, множеств и т.д.
Большой вклад в становление и развитие алгебры логики внесли Августус де Морган (1806-1871),
Уильям Стенли Джевонс (1835-1882), П.С. Порецкий (1846 – 1907), Чарлз Сандерс Пирс (1839-1914), А.А.
Марков (1903-1979), А.Н. Колмогоров (1903-1987) и др.
Долгое время алгебра логики была известна достаточно узкому классу специалистов. Прошло почти
100 лет со времени создания алгебры логики Дж. Булем, прежде чем в 1938 Клод Шеннон (1916-2001) показал, что алгебра логики применима для описания самых разнообразных процессов, в том числе функционирования релейно-контактных и электронно-ламповых схем.
Алгебра логики явилась математической основой теории электрических и электронных переключателей схем, используемых в ЭВМ. В компьютерных науках её предпочитают называть не алгеброй логики, а Булевой алгеброй - по имени её создателя.
Алгебра логики изучает свойства функций, у которых и аргументы, и значения принадлежат заданному двухэлементному множеству (например, {0,1}). Иногда вместо термина «алгебра логики» употребляют термин «двузначная логика».
Алгебра логики - предельно важная для цифровых компьютеров тема. И с точки зрения их устройства, схемотехники, и с точки зрения их функционирования и программирования поведения. Действительно, мало- мальски сложное действие невозможно без обратной связи, без анализа условий выполнения. Например,
«ЕСЛИ нам хочется пить, ТО мы пьём, ИНАЧЕ мы даже не думаем об этом». «ЕСЛИ компьютер не работает
И питание включено, ТО компьютер сгорел». «ЕСЛИ точка левее левой стороны квадрата ИЛИ правее правой, ТО точка расположена не в квадрате». «Ревёт ли зверь в лесу глухом, трубит ли рог, гремит ли
гром...». «Кошелёк или жизнь». Помимо манипуляций константами «да» и «нет» логические переменные могут являться результатом применения к числам операторов отношения (меньше, больше, равно и т.п.).
В компьютерах булевы переменные представляются (кодируются) битами (разрядами двоичной системы счисления), где 1 означает истину, а 0 - ложь. Манипуляции высказываниями и их комбинациями используются для получения некоего единственного результата, который можно использовать, например, для http://profbeckman.narod.ru/EVM
выбора той или иной последовательности действий. Поскольку логические переменные кодируются по тем же принципам, что и числа, символы и прочая информация, то можно комбинировать операции логики с операциями арифметики для реализации различных алгоритмов.
Таким образом, алгебра логики (другое название - Булева алгебра) - это область математики. Она оперирует величинами, которые могут принимать два значения (булевых значения). Эти два значения могут быть обозначены как угодно, лишь бы по-разному. Самые распространенные варианты:
0, 1
F, T
false, true
ложь, истина
Л, И
При применении булево й алгебр ы в вычислительной технике, булевы значения - это 0 и 1. Они представляют собой состояние ячейки памяти объёмом в 1 бит или наличие/отсутствие напряжения в электрической схеме. Алгебра логики позволяет строить сложные электронные узлы, элементы которых работают согласно этой математической теории. При применении булевой алгебры в логических построениях в математике, булевы значения - это «ложь» и «истина». Они определяют истинность или ложность некоторого высказывания. Под высказываниями понимаются математические формулы. При применении булевой алгебры в повседневных рассуждениях, булевы значения - это также «ложь» и «истина». Они представляют собой оценку истинности или ложности некоторого высказывания. Под высказываниями понимаются фразы, которые удовлетворяют строго определенному списку свойств.
Алгебра логики применяется: 1) для упрощения сложных логических формул и доказательств тождеств; 2) при решении логических задач; 3) в контактных схемах; 4) при доказательствах теорем; 5) в базах данных при составлении запросов.
1.2 Понятия формальной логики
Логика – наука о законах и формах мышления
Логика - наука, изучающая способы обоснования суждений, доказательства, мышления и логического вывода. В математической логике используются для этого методы алгебры или теории алгоритмов.
Алгебра логики (булева алгебра) - раздел математики, изучающий методы оперирования логическими (булевыми) переменными, принимающими только два значения - истина и ложь.

Алгебра логики - раздел математической логики, в котором изучаются логические операции над высказываниями.
Высказывания могут быть истинными, ложными или содержащими истину и ложь в разных соотношениях.
Математическая логика (теоретическая логика, символическая логика) - раздел математики, изучающий доказательства и вопросы оснований математики.
Логическое высказывание - утверждение, которому всегда можно поставить в соответствие одно из двух логических значений ложь (0, ложно, false) или истина (1, истинно, true). Логическое высказывание принято обозначать заглавными латинскими буквами. Высказывательной формой называется логическое высказывание, в котором один из объектов заменён переменной. При подстановке вместо переменной какого-либо значения высказывательная форма превращается в высказывание.
Пример: A(x) = «В городе x идет дождь» A - высказывательная форма, x - объект.
Отрицание логического высказывания - логическое высказывание, принимающее значение «истинно», если исходное высказывание ложно, и наоборот.
Конъюнкция двух логических высказываний - логическое высказывание, истинное только тогда, когда они одновременно истинны.
Дизъюнкция двух логических высказываний - логическое высказывание, истинное только тогда, когда хотя бы одно из них истинно.
Импликация двух логических высказываний A и B - логическое высказывание, ложное только тогда, когда B ложно, а
A истинно.
Равносильность (эквивалентность) двух логических высказываний - логическое высказывание, истинное только тогда, когда они одновременно истинны или ложны.
Кванторное логическое высказывание с квантором всеобщности (
) - логическое высказывание, истинное только тогда, когда для каждого объекта x из заданной совокупности высказывание A(x) истинно.
Кванторное логическое высказывание с квантором существования (
) - логическое высказывание, истинное только тогда, когда в заданной совокупности существует объект x, такой, что высказывание A(x) истинно.
Высказывание (суждение)
– некоторое предложение, которое может быть истинно (верно) или ложно
Утверждение
– суждение, которое требуется доказать или опровергнуть
Рассуждение
– цепочка высказываний или утверждений, определенным образом связанных друг с другом http://profbeckman.narod.ru/EVM

Умозаключение
– логическая операция, в результате которой из одного или нескольких данных суждений получается
(выводится) новое суждение
Логическое выражение
– запись или устное утверждение, в которое, наряду с постоянными, обязательно входят переменные величины (объекты). В зависимости от значений этих переменных логическое выражение может принимать одно из двух возможных значений: ИСТИНА (логическая 1) или ЛОЖЬ (логический 0)
Сложное логическое выражение
– логическое выражение, составленное из одного или нескольких простых (или сложных) логических выражений, связанных с помощью логических операций.
Слово логика означает совокупность правил, которым подчиняется процесс мышления. Сам термин
«логика» происходит от древнегреческого logos, означающего «слово, мысль, понятие, рассуждение, закон».
Формальная логика - наука о формах и законах мышления. Законы логики отражают в сознании человека свойства, связи и отношения объектов окружающего мира. Логика как наука позволяет строить формальные модели окружающего мира, отвлекаясь от содержательной стороны. Основными формами мышления являются понятия, суждения и умозаключения.
Понятие - форма мышления, которая выделяет существенные признаки предмета или класса предметов, отличающие его от других. Например, компьютер, человек, ученики.
Суждения - это форма мышления, в которой утверждается или отрицается связь между предметом и его признаком, отношения между предметами или факт существования предмета и которая может быть либо истинной, либо ложной. Языковой формой выражения суждения является повествовательное предложение.
Вопросительные и побудительные предложения суждениями не являются. Суждения рассматриваются не с точки зрения их смысла и содержания, а только с точки зрения их истинности или ложности. Истинным будет суждение, в котором связь понятий правильно отражает свойства и отношения реальных объектов.
«Дважды два равно четырём» - истинное суждение, а вот «Процессор предназначен для печати» - ложное.
Суждения могут быть простыми и сложными. «Весна наступила, и грачи прилетели» - сложное суждение, состоящее из двух простых. Простые суждения (высказывания) выражают связь двух понятий. Сложные - состоят из нескольких простых суждений.
Умозаключение - приём мышления, позволяющий на основе одного или нескольких суждений-посылок получить новое суждение (знание или вывод). Примерами умозаключений являются доказательства теорем в геометрии. Посылками умозаключения по правилам формальной логики могут быть только истинные суждения. Тогда и умозаключение будет истинным. Иначе можно прийти к ложному умозаключению.
Исследования в алгебре логики тесно связаны с изучением высказывания (хотя высказывание – предмет изучения формальной логики). С помощью высказывания мы устанавливаем свойства, взаимосвязи между объектами. Высказывание истинно, если оно адекватно отображает эту связь, в противном случае оно ложно.
Математическая логика изучает вопросы применения математических методов для решения логических задач и построения логических схем, которые лежат в основе работы любого компьютера.
Суждения в математической логике называют высказываниями или логическими выражениями. Подобно тому, как для описания действий над переменными был разработан раздел математики алгебр а, так и для обработки логических выражений в математической логике была создана алгебра высказываний, или алгебра
логики.
Таким образом, алгебра логики - раздел математической логики, в котором изучаются логические операции над высказываниями. Высказывания могут быть истинными и ложными.
Логика высказываний послужила основным математическим инструментом при создании компьютеров. Она легко преобразуется в битовую логику: истинность высказывания обозначается одним битом (0 - ЛОЖЬ, 1 - ИСТИНА); тогда операция ¬ приобретает смысл вычитания из единицы; ∨ - немодульного сложения; & (или ∧) - умножения; ↔ - равенства; ⊕ - в буквальном смысле сложения по модулю 2 (исключающее Или - XOR);  - непревосходства суммы над 1 (то есть AB = (A + B) <= 1).
Впоследствии булева алгебра была обобщена от логики высказываний путём введения характерных для логики высказываний аксиом. Это позволило рассматривать, например, логику кубитов, тройственную логику (когда есть три варианта истинности высказывания: «истина», «ложь» и «не определено») и др.
1.3
Логические операции и таблицы истинности
Булевы величины (или булевы константы) - два заранее выбранных разных символа.
По традиции применяются символы 0 и 1. Так будем поступать и мы. Но надо понимать, что формулы булевой алгебры будут работать независимо от того, как обозначить булевы величины и какой смысл им придать. Например, в электронике это может быть наличие или отсутствие потенциала в +5 вольт в определенной точке схемы, при доказательстве математической теоремы - суждения «истинно» и «ложно», а в экспертной системе - ответы «да» и «нет». http://profbeckman.narod.ru/EVM

Булевы переменные - переменные, которые могут принимать булевы значения.
Для того, чтобы некоторую величину можно было обозначать булевой переменной, должны выполняться следующие ограничения: 1) Величина должна принимать два возможных состояния, но не более того. 2) В любой момент времени величина не может принимать оба состояния одновременно. 3) В любой момент времени величина не может принимать ни одного состояния. 4) Если рассматриваются несколько таких величин, то допускается, чтобы каждая из них принимала одно из двух состояний независимо. 5) Не допускается применять одну пару состояний для одной величины, а для другой - другую.
Эти 5 правил определяют ситуации, в которых алгебра логики может быть применена.
Пример 1. Пусть речь идет о цехе автомобильного завода, где сушатся только что покрашенные автомобили и мы хотим применить алгебру логики, рассуждая об автомобилях в этом цеху. Мы можем применить алгебру логики к цвету автомобилей, если все они либо зелёные, либо красные.
По правилу 1, если в цехе есть помимо красных и зелёных еще и жёлтые автомобили, то мы не можем применить алгебру логики, деля их на красные и зелёные. Потому, что кроме двух значений красный и зелёный" появляется третье: жёлтый. Можно выйти из затруднения, рассмотрев автомобили зелёные и незелёные (т. е. всех остальных цветов). По правилу 2, если в цехе есть красные автомобили в зелёную полоску или зелёные в красный горошек, то мы не можем применить алгебру логики, деля их на красные и зелёные. Потому, что о некоторых автомобилях можно будет сказать, что он и красный, и зелёный одновременно. Можно выйти из затруднения, если договориться считать красными автомобили, которые сначала покрывают красной краской. По правилу 3, если в цехе есть помимо красных или зеленых вовсе некрашеные автомобили, то мы не можем применить алгебру логики деля их на красные и зелёные. Потому, что о некрашеных автомобилях еще нельзя сказать, что они красные или зеленые. Можно выйти из этого затруднения, если считать красными те автомобили, которые запланировано покрасить в красный цвет, а зелёными те, которые запланировано покрасить в зелёный. По правилу 4, если в цехе не все автомобили одновременно зелёные или красные, это не помешает применению алгебры логики к цвету автомобилей. С другой стороны, если в цехе всегда только красные автомобили или только зелёные, то нет смысла заводить столько переменных, сколько автомобилей. Достаточно одной переменной для всех автомобилей сразу. По правилу 5, если в цехе есть только зелёные и красные автомобили, и все они - либо сломаны, либо исправны, то мы все равно не можем смешивать в одних и тех же формулах переменные, обозначающие цвет автомобилей, и их исправность. Из этого затруднения можно выйти, если рассматривать не цвет и исправность самих автомобилей, а истинность или ложность правильно составленных фраз насчет цвета и исправности.
Итак, каждому автомобилю будет соответствовать две булевы переменные: автомобиль зелёный и автомобиль исправный. Каждая переменная может принимать два значения истина или ложь.
Правила 1, 2, 3 и 5 должны обязательно выполняться все. Если не выполняется хотя бы одно из них, алгебра логики не применима. Правило 4 поясняет одну ситуацию, когда могут возникнуть сомнения насчет применения алгебры логики. Примеры демонстрируют следующие практические факты: 1) алгебра логики может быть применена не всегда, а лишь с соблюдением определенных ограничений. 2) если алгебра логики не может быть применена одним способом, то часто можно обнаружить другой способ - совсем рядом.
Достаточно немного изменить условия. В этом нет ничего необычного или сомнительного - так работает вся математика. Нужно просто проявлять с одной стороны внимательность, а с другой - изобретательность.
Например, в арифметике нельзя суммировать гайки и яблоки по количеству, но зато их можно суммировать по весу. Эта ситуация очень похожа на ту, когда нельзя применить булеву алгебру к цвету и исправности, но можно применить к фразам о цвете и исправности.
Булева алгебра весьма распространена. Принцип работы большинства компьютеров основан на ней.
Большинство формул математики могут быть только истинными или ложными, так что булева алгебра применима и почти ко всей математике. Оказывается, что и в обыденной речи алгебра логики вполне применима, хотя не везде и не всегда. Таким образом, булева алгебра полезна, но не претендует на сверхуниверсальность. Это - инструмент, который может оказаться удобен для решения определенных задач, для других - неудобен, а для третьих - вообще неприменим.
1.3.1 Логическое выражение
Логическое выражение - это символическая запись, состоящая из логических величин (констант или переменных), объединенных логическими операциями (связками). В булевой алгебре простым высказываниям ставятся в соответствие логические переменные, значение которых равно 1, если высказывание истинно, и 0, если высказывание ложно. Обозначаются логические переменные буквами латинского алфавита. Существуют разные варианты обозначения истинности и ложности переменных:
Истина
И
True
T
1
Ложь
Л
False
F
0
Связки «НЕ», «И», «ИЛИ» заменяются логическими операциями инверсия, конъюнкция, дизъюнкция. Это основные логические операции, при помощи которых можно записать любое логическое выражение. http://profbeckman.narod.ru/EVM

Как уже упоминалось, алгебра логики - раздел математики, изучающий высказывания, рассматриваемые со стороны их логических значений (истинности или ложности) и логических операций над ними. Логическое высказывание - любoе повествовательное пpедлoжение, в oтнoшении кoтopoгo мoжно oднoзначнo сказать, истиннo oнo или лoжнo.
Алгебра логики изучает строение (форму, структуру) сложных логических высказываний и способы установления их истинности с помощью алгебраических методов.
Так, например, предложение «6 - четное число» следует считать высказыванием, так как оно истинное.
Предложение «Рим - столица Франции» тоже высказывание, так как оно ложное.
Разумеется, не всякое предложение является логическим высказыванием. Высказываниями не являются, например, предложения «ученик десятого класса» и «информатика - интересный предмет». Первое предложение ничего не утверждает об ученике, а второе использует слишком неопределённое понятие
«интересный предмет». Вопросительные и восклицательные предложения также не являются высказываниями, поскольку говорить об их истинности или ложности не имеет смысла. Предложения типа «в
городе A более миллиона жителей», «у него голубые глаза» не являются высказываниями, так как для выяснения их истинности или ложности нужны дополнительные сведения: о каком конкретно городе или человеке идет речь. Такие предложения называются высказывательными формами.
Высказывательная форма - повествовательное предложение, которое прямо или косвенно содержит хотя бы одну переменную и становится высказыванием, когда все переменные замещаются своими значениями.
Алгебра логики рассматривает любое высказывание только с одной точки зрения - является ли оно истинным или ложным. Заметим, что зачастую трудно установить истинность высказывания. Так, например, высказывание «площадь поверхности Индийского океана равна 75 млн кв. км» в одной ситуации можно посчитать ложным, а в другой - истинным. Ложным - так как указанное значение неточное и вообще не является постоянным. Истинным - если рассматривать его как некоторое приближение, приемлемое на практике.
Употребляемые в обычной речи слова и словосочетания «не», «и», «или», «если... , то», «тогда и
только тогда» и другие позволяют из уже заданных высказываний строить новые высказывания. Такие слова и словосочетания называются
логическими связками.
Bысказывания, образованные из других высказываний с помощью логических связок, называются
составными.
Высказывания, не являющиеся составными, называются
элементарными.
Так, например, из элементарных высказываний «Петров – врач»,
«Петров - шахматист» при помощи связки «и» можно получить составное высказывание «Петров - врач и
шахматист», понимаемое как «Петров - врач, хорошо играющий в шахматы». При помощи связки «или» из этих же высказываний можно получить составное высказывание «Петров — врач или шахматист», понимаемое в алгебре логики как «Петров или врач, или шахматист, или и врач и шахматист
одновременно».
Истинность или ложность получаемых таким образом составных высказываний зависит от истинности или ложности элементарных высказываний.
Чтобы обращаться к логическим высказываниям, им назначают имена. Пусть через А обозначено высказывание «Тимур поедет летом на море», а через В - высказывание «Тимур летом отправится в горы».
Тогда составное высказывание «Тимур летом побывает и на море, и в горах» можно кратко записать как А и
В. Здесь «и» - логическая связка, А, В - логические переменные, которые могут принимать только два значения – «истина» или «ложь», обозначаемые, соответственно, «1» и «0».
Каждая логическая связка рассматривается как операция над логическими высказываниями и имеет свое название и обозначение.
1.3.2 Элементарные булевы функции
Двоичной, булевой функцией от набора двоичных переменных называется функция, результатом которой могут быть только значения 0 и 1. Любую булеву функцию можно задать с помощью таблицы, в которой всем возможным наборам значений двоичных переменных сопоставлены соответствующие им значения функции. Такая таблица называется таблицей истинности, поскольку она определяет истинность или ложность сложного высказывания в зависимости от истинности или ложности составляющих высказываний.
Для функций одной переменной может существовать всего четыре различные булевы функции g
1
, g
2
,
g
3
и g
4
, представленные в следующей таблице:
x g
1
g
2
g
3
g
4
0 0 0 1 1 1 0 1 0 1 http://profbeckman.narod.ru/EVM

Из таблицы следует, что функции g
1
и g
4
не зависят от аргумента и являются соответственно константами 0 и 1, а функция g
2
повторяет значение аргумента, т.е. g
2
=x. Функция g
3
называется отрицанием или инверсией переменной x и обозначается как not(x).
Для функций двух переменных может существовать 16 (и только 16) различных функций. Таблица истинности этих функций следующая:
x
1
x
2
F
0
F
1
F
2
F
3
F
4
F
5
F
6
F
7
F
8
F
9
F
10
F
11
F
12
F
13
F
14
F
15
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
В число этих функций входят 6 вырожденных функций (константы: F
0
=0 и F
15
=1; переменные: F
3
=x
1
и
F
5
=x
2
; инверсии: F
12
=not x
1
и F
10
=not x
2
). Остальные функции с их обозначениями приведены ниже:
Функция
Название
Выражение через конъюнкцию, дизъюнкцию и отрицание
Читается как
F
1
конъюнкция
x
1
and x
2
x
1
и x
2
F
7
дизъюнкция
x
1
or x
2
x
1
или x
2
F
6
сложение по модулю 2 (x
1
and not x
2
) or (not x
1
and x
2
) x
1
неравнозначно x
2
F
8
функция Пирса
not x
1
and not x
2
ни x
1
, ни x
2
F
9
эквивалентность
(not x
1
and not x
2
) or (x
1
and x
2
) x
1
равнозначно x
2
F
11
импликация
x
1
or not x
2
если x
2
, то x
1
F
14
штрих Шеффера
not x
1
or not x
2
неверно, что x
1
и x
2
F
2
запрет по x
2
x
1
and not x
2
неверно, что если x
1
, то x
2
F
4
запрет по x
1
not x
1
and x
2
неверно, что если x
2
, то x
1
F
13
импликация
not x
1
or x
2
если x
1
, то x
2
(x
1
-> x
2
)
Обратите внимание! Несмотря на экзотические названия, это просто набор всех возможных функций (функция - это однозначное отображение, преобразование набора аргументов из области определения в значение из области значений). Натуральный ряд бесконечен и для натуральных переменных возможно бесконечное множество функций, включающих функции сложения, вычитания, умножения и т.п. В логике переменные имеют всего два возможных значения, поэтому количество различных функций ограничено и здесь они перечислены все.
Для записи штриха Шеффера «» в выражениях обычно используется апостроф (x
1
'x
2
), а для сложения по модулю 2 - слово xor (от eXslusive OR, "исключающее или", читается «ксор»). В ассемблерах конъюнкция, дизъюнкция и отрицание обычно записываются соответствующими английскими словами (and, or, not). В языках же высокого уровня эти функции могут обозначаться как словами (Паскаль), так и специальными знаками (в C использованы знаки «&», «|» и «
»). Иногда по аналогии с теорией множеств конъюнкция называется пересечением, а по аналогии с арифметикой в формулах используется знак умножения «*». Для дизъюнкции же используется знак сложения «+». И действительно - если вспомнить, как ведёт себя нуль в операциях умножения и сложения, а потом посмотреть на таблицы истинности конъюнкции и дизъюнкции, то можно найти много общего.
В языках программирования приоритет конъюнкции обычно выше, чем приоритет дизъюнкции, и в выражении (x
1
or x
2

and x
3
) подразумевается, что (x
2
and x
3
) будет выполнено первым.


Поделитесь с Вашими друзьями:
  1   2   3


База данных защищена авторским правом ©nethash.ru 2017
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал