Выполнение расчетно-графических работ 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Выполнение расчетно-графических работ



Имени Иммануила Канта

 

Задания и методические указания для выполнения лабораторных работ студентами по дисциплине ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ

 

 

Калининград

 


Выполнение расчетно-графических работ

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

РГР выполняются студентом самостоятельно. Идентичность (устанавливается преподавателем) двух или более отчетов о РГР приводит к смене номеров вариантов для каждого студента и повторному выполнению расчетов, оформлению и рецензированию преподавателем.

 

Оформление расчетно-графических работ

РГР оформляются на стандартных листах писчей бумаги с использованием текстового редактора и печатаются на принтере, кегль шрифта Time New Roman – 14. Отчет о РГР подшивается в папку. Отчет о РГР начинается со стандартного титульного листа на котором указывается (сверху - вниз): учебное заведение, кафедра, название и номер РГР, автор, дата выполнения, проверяющий с указанием ученой степени, ученого звания, фамилии и имени, отчества, дата проверки, город, год.

После титульного листа следует содержание с указанием разделов и станиц.

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

Далее следует список использованной литературы.

Оформленные не аккуратно отчеты о РГР возвращаются на доработку.

Резолюция на титульном листе проверенной преподавателем РГР «Устранить замечания» требует от студента следующего: 1. Внимательно ознакомиться с замечаниями преподавателя, которые даны по тексту РГР; 2. Дать исправления в специальном разделе в конце РГР «Работа над замечаниями». В этом разделе отмеченное преподавателем место в тексте должно быть дано верно, без ошибок; 3. Листы с ошибками не удалять, текст РГР заново не перепечатывать; 4. Сдать РГР на повторную проверку.

Резолюция на титульном листе РГР «Обратите внимание на мои замечания» требует от студента следующего: 1. Внимательно ознакомиться с замечаниями преподавателя, которые даны по тексту РГР; 2. Дать исправления в специальном разделе в конце РГР «Работа над замечаниями». В этом разделе отмеченное преподавателем место в тексте должно быть дано верно, без ошибок; 3. Листы с ошибками не удалять, текст РГР заново не перепечатывать; 4. На повторную проверку РГР не сдавать.

 


 

Расчетно-графическая работа №1

Тема: «Системы счисления».

1 Теоретическая часть

1.1 Виды сигнала

Сигнал может быть дискретным и непрерывным (аналоговым).

Дискретный сигнал слагается из счетного множества (т.е. такого множества, элементы которого можно пересчитать) элементов (говорят – информационных элементов).

Например, дискретным является сигнал «кирпич». Он состоит из следующих двух элементов (это синтаксическая характеристика данного сигнала): красного кольца на белом фоне, красного прямоугольника внутри кольца.

Именно в виде дискретного сигнала представлена та информация, которую сейчас осваивает читатель. Можно выделить следующие ее элементы: разделы (например, «Теоретическая часть»), подразделы (например, «Виды сигнала»), абзацы, предложения, отдельные фразы, слова и отдельные знаки (буквы, цифры, знаки препинания и т.д.).

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

Набор самых «мелких» элементов дискретного сигнала называется алфавитом, а сам дискретный сигнал называют также сообщением.

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

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


 

1.2 Преобразования сигнала

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

Квантование по времени – замена непрерывной (по времени и по уровню) функции x(t) (рис. 4.1а) некоторым множеством непрерывных (по уровню) функций x(ti) (на рис. 1б i = {1,2,3,4}).

x x

x (t3) x (t3)

x (t2) x (t4) x (t2) x (t4)

x (t1) x (t1)

x (t)

t1 t2 t3 t4 t t1 t2 t3 t4 t

а) б)

Рис. 4.1. Иллюстрация к квантованию по времени:

а) аналоговый сигнал x (t) до квантования;

б) дискретный (по времени) сигнал x (t) – результат квантования.

 

Очевидно, дискретизация связана с потерей информации. В самом деле, дискретный сигнал на рис. 1б не показывает, как ведет себя исходный сигнал в моменты времени, например, между t3 и t4. Иначе говоря, дискретизация связана с некоторой погрешностью e, которая зависит от шага дискретизации Dt = ti – ti-1: при малых значениях шага дискретизации число точек замера высоко, и теряется мало информации; очевидно, картина обратная при больших шагах дискретизации. Погрешность дискретизации e в каждый момент времени t определяется по формуле:

e(t) = x (t) – v(t), (1.1)

где v(t) – функция восстановления, которая по дискретным значениям восстанавливает x (t).

Виды дискретизации различаются по регулярности отсчетов:

1) равномерная дискретизация, когда Dt постоянно;

2) неравномерная дискретизация, когда Dt переменно, причем этот вид, в свою очередь, делится на подвиды:

- адаптивную, когда Dt меняется автоматически в зависимости от текущего изменения сигнала. Это позволяет увеличивать шаг дискретизации, когда изменения сигнала x (t) незначительны, и уменьшать – в противном случае;

- программируемую, когда Dt изменяется оператором или в соответствии с заранее выставленными условиями, например, в фиксированные моменты времени.

Квантование по уровню - преобразование непрерывных (по уровню) сигналов x (ti) в моменты отсчета ti в дискретные. В результате непрерывное множество значений сигнала x (ti) в диапазоне от xmin до xmax преобразуется в дискретное множество значений xk уровней квантования (рис. 4.2). Шаг квантования D x определяется по формуле:

D x = xj – xj-1.

Можно сказать, что квантование по уровню – это измерение сигнала. В самом деле, по рис. 4.2б видно, что сигнал x (t1) составляет 0 уровней квантования (k = 0), а сигнал x (t4) – 2 уровня квантования (k = 2).

x (t) x (t)

x 2
x (t3) x max x (t3)

x min
x 1
x (t2) x (t4) x (t2) x (t4)

x (t1) x (t1)

t1 t2 t3 t4 t t1 t2 t3 t4 t

а) б)

Рис. 4.2. Иллюстрация к квантованию по уровню:

а) аналоговые по уровню (но дискретные по времени) сигналы x (ti) до квантования;

б) квантованные по уровню сигналы x (ti).

 

При квантовании по уровню не всегда сигнал x (ti) совпадает с уровнем квантования (см. сигнал x (t2) на рис. 4.2б). В таком случае поступают одним из следующих способов:

1) x (ti) отождествляют с ближайшим значением (в нашем примере – с x 2);

2) x (ti) отождествляют с ближайшим меньшим (или большим) значением. Тогда при отождествлении с ближайшим большим значением сигнал x (t2) отождествится с x 2 независимо от того, насколько близко он к этому уровню квантования находится. При отождествлении с ближайшим меньшим значением сигнал x (t2) отождествится с x 1 также независимо от того, насколько близко он к этому уровню квантования находится.

Очевидно, и при квантовании по уровню возникает погрешность квантования e(x k):

e(x k) = x (ti) - x k. (1.2)

Погрешность квантования по уровню тем меньше, чем меньше шаг квантования.

Виды квантования по уровню:

1) равномерное, когда диапазон изменения сигнала разбивается на m одинаковых частей. Тогда, зная размер шага квантования, для представления x k достаточно знать число k.

2) неравномерное, когда диапазон изменения сигнала разбивается на m различных частей.

 

1.3 Системы счисления

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

Примером позиционной формы записи чисел является та, которой мы пользуемся (так называемая арабская форма чисел). Так, в числах 123 и 321 значения цифры 3, например, определяются ее положением в числе: в первом случае она обозначает три единицы (т.е. просто три), а во втором – три сотни (т.е. триста).

 

 

Тогда полное число получается по формуле:

(1.3)

где l – количество разрядов числа,

i – порядковый номер разряда,

m – основание системы счисления,

ai – множитель, принимающий любые целочисленные значения от 0 до m -1, и соответствующий цифре в i -й позиции числа.

Например, для десятичного (m = 10) числа 345 его полное значение рассчитывается по формуле:

3*102 + 4*101 + 5*100 = 345.

Римские числа являются примером полупозиционной системы образования числа: так, в числах IX и XI знак I обозначает в обоих случаях единицу (признак непозиционной системы), но будучи расположенным слева от знака X (обозначающего десять), вычитается из десяти, а при расположении справа – прибавляется к десяти. В первом случае полное значение числа равно 9, во втором – 11.

В современной информатике используются в основном три системы счисления (все – позиционные): двоичная, шестнадцатеричная и десятичная.

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

Шестнадцатеричная система счисления используется для кодирования дискретного сигнала, потребителем которого является хорошо подготовленный пользователь – специалист в области информатики. В такой форме представляется содержимое любого файла, затребованное через интегрированные оболочки операционной системы, например, средствами Norton Commander в случае MS DOS. Используемые знаки для представления числа – десятичные цифры от 0 до 9 и буквы латинского алфавита – A, B, C, D, E, F.

Десятичная система счисления используется для кодирования дискретного сигнала, потребителем которого является так называемый конечный пользователь – неспециалист в области информатики (очевидно, что и любой человек может выступать в роли такого потребителя). Используемые знаки для представления числа – цифры от 0 до 9.

Соответствие между первыми несколькими натуральными числами всех трех систем счисления представлено в табл. 4.1.

 

Таблица 4.1

Десятичная система Двоичная система Шестнадцатеричная система
     
     
     
     
     
     
     
     
     
     
    A
    B
    C
    D
    E
    F
     

 

Для различения систем счисления, в которых представлены числа, в обозначение двоичных и шестнадцатеричных чисел вводят дополнительные реквизиты:

- для двоичных чисел – нижний индекс справа от числа в виде цифры 2 или букв В или b (binary – двоичный), либо знак B или b справа от числа. Например, 102 = 10b = 10B = 10B = 10b;

- для шестнадцатеричных чисел - нижний индекс справа от числа в виде числа 16 или букв H или h (hexadecimal – шестнадцатеричный), либо знак H или h справа от числа. Например, 3AB16 = 3ABH = 3ABh = 3ABH = 3ABh.

Для перевода чисел из одной системы счисления в другую существуют определенные правила.

 

1.4 Правила перевода чисел из одной системы счисления в другую

Правила перевода различаются в зависимости от формата числа – целое или правильная дробь (дробь, знаменатель которой больше числителя (например, 1/2, 5/6 и т.д.)). Для вещественных чисел используется комбинация правил перевода для целого числа и правильной дроби.

Правила сложения

Пример 16. Сложить двоичные числа 11012 и 110112.

Запишем слагаемые в столбик и пронумеруем разряды, присвоив младшему разряду номер 1:

номера разрядов: 5 4 3 2 1

+ 1 1 0 12

1 1 0 1 12

Процесс образования результата по разрядам описан ниже:

а) разряд 1 формируется следующим образом: 12 + 12 = 102; 0 остается в разряде 1, 1 переносится во второй разряд;

б) разряд 2 формируется следующим образом: 02 + 12 + 12 = 102, где вторая 12 – единица переноса; 0 остается в разряде 2, 1 переносится в третий разряд;

в) третий разряд формируется следующим образом: 12 + 02 + 12 = 102, где вторая 12 – единица переноса; 0 остается в разряде 3, 1 переносится в разряд 4;

г) четвертый разряд формируется следующим образом: 12 + 12 + 12 = 112, где третья 12 – единица переноса; 1 остается в разряде 4, 1 переносится в пятый разряд;

д) пятый разряд формируется следующим образом: 12 + 12 = 102; где вторая 12 – единица переноса; 0 остается в разряде 5, 1 переносится в шестой разряд.

Таким образом:

+ 1 1 0 12

1 1 0 1 12

10 1 0 0 02.

Проверим результат. Для этого определим полные значения слагаемых и результата:

11012 = 1*23 +1*22 + 0*21 + 1*20 = 8 + 4 + 1 = 13;

110112 = 1*24 + 1*23 + 0*22 + 1*21 + 1*20 = 16 + 8 + 2 + 1 = 27;

1010002 = 1*25 + 0*24 + 1*23 + 0*22 + 0*21 + 0*20 = 32 + 8 = 40.

Поскольку 13 + 27 = 40, двоичное сложение выполнено верно.

Пример 17. Сложить шестнадцатеричные числа 1С16 и 7В16.

Запишем слагаемые в столбик и пронумеруем разряды, присвоив младшему разряду номер 1:

номера разрядов: 2 1

+ 1 С16

7 В16

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

а) разряд 1 формируется следующим образом: С16 + В16 = 12 + 11 = 23 = 1716; 7 остается в разряде 1; 1 переносится в разряд 2;

б) разряд 2 формируется следующим образом: 116 + 716 + 116 = 916, где вторая 116 – единица переноса.

 

Таким образом:

+ 1 С16

7 В16

9 716.

Проверим результат. Для этого определим полные значения слагаемых и результата:

16 = 1*161 + 12*160 = 16 + 12 = 28;

16 = 7*161 + 11*160 = 112 + 11 = 123;

9716 = 9*161 + 7*160 = 144 + 7 = 151.

Поскольку 28 + 123 = 151, сложение выполнено верно.

 

Правила вычитания

Вычесть из двоичного числа 1012 двоичное число 112.

Запишем алгебраические слагаемые в столбик в порядке «уменьшаемое – вычитаемое» и пронумеруем разряды, присвоив младшему разряду номер 1:

номера разрядов: 3 2 1

- 1 0 12

1 12

Процесс образования результата по разрядам описан ниже:

а) разряд 1 формируется следующим образом: 12 – 12 = 02;

б) разряд 2 формируется следующим образом: поскольку 0 < 1 и непосредственное вычитание невозможно, занимаем для уменьшаемого единицу в старшем разряде 3. Тогда разряд 2 рассчитывается как 102 – 12 = 12;

в) третий разряд формируется следующим образом: поскольку единица была занята в предыдущем шаге, в разряде остался 0.

Таким образом:

- 1 0 12

1 12

1 02.

Проверим результат. Для этого определим полные значения слагаемых и результата. По табл. 4.1 имеем:

1012 = 5; 112 = 3; 102 = 2.

Поскольку 5 – 3 = 2, вычитание выполнено верно.

Пример 19. Вычесть из шестнадцатеричного числа 9716 шестнадцатеричное число 7В16.

Запишем алгебраические слагаемые в столбик в порядке «уменьшаемое – вычитаемое» и пронумеруем разряды, присвоив младшему разряду номер 1:

 

номера разрядов: 2 1

- 9 716

7 В16

Процесс образования результата по разрядам описан ниже:

а) разряд 1 формируется следующим образом: поскольку 716 < В16 и непосредственное вычитание невозможно, занимаем для уменьшаемого единицу в старшем разряде 2. Тогда 1716 – В16 = 23 – 11 = 12 = С16;

б) разряд 2 формируется следующим образом: поскольку единица была занята в предыдущем шаге, разряд 2 уменьшаемого стал равным 816. Тогда разряд 2 рассчитывается как 816 – 716 = 116.

Таким образом:

- 9 716

7 В16

1 С16.

Для проверки результата используем данные из примера 17.

 

Правила умножения

Пример 20. Умножить двоичное число 1012 на двоичное число 112.

Запишем множители в столбик и пронумеруем разряды, присвоив младшему разряду номер 1:

номера разрядов: 3 2 1

* 1 0 12

1 12

Процесс образования результата по шагам умножения множимого на каждый разряд множителя с последующим сложением показан ниже:

а) умножение множимого на разряд 1 множителя дает результат: 1012 * 12 = 1012;

б) умножение множимого на разряд 2 множителя дает результат: 1012 * 102 = 10102. Здесь значение разряда 2 множителя сформировано по принципам формирования значения числа в позиционных системах счисления;

в) для получения окончательного результата складываем результаты предыдущих шагов: 1012 + 10102 = 11112.

Для проверки результата найдем полное значение сомножителей и произведения (см. табл. 4.1):

1012 = 5; 112 = 3; 11112 = 15.

Поскольку 5 * 3 = 15, умножение выполнено верно: 1012 * 112 = 11112.

Пример 21. Умножить шестнадцатеричное число 1С16 на шестнадцатеричное число 7В16.

Запишем множители в столбик и пронумеруем разряды, присвоив младшему разряду номер 1:

номера разрядов: 2 1

* 1 С16

7 В16

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

а) умножение множимого на разряд 1 множителя дает результат: 1С16 * В16 = 28 * 11 = 308 = 13416;

б) умножение множимого на разряд 2 множителя дает результат: 1С16 * 7016 = 28 * 112 = 3136 = С4016. Здесь значение разряда 2 множителя сформировано по принципам формирования значения числа в позиционных системах счисления;

в) для получения окончательного результата складываем результаты предыдущих шагов: 13416 + С4016 = D7416.

Для проверки результата найдем полное значение сомножителей и произведения, воспользовавшись результатами примера 17 и правилами формирования полного значения числа:

16 = 28; 7В16 = 123;

D7416 = 13*162 + 7*161 + 4*160 = 3444.

Поскольку 28 * 123 = 3444, умножение выполнено верно: 1С16 * 7В16 = D7416.

Правила деления

Рассмотрим правила деления только для двоичных чисел, поскольку деление шестнадцатеричных чисел проще выполнять, переведя их предварительно в десятичную систему счисления.

Пример 22. Разделить двоичное число 11112 на двоичное число 112.

Решение задачи представим схемой:

-11112 112

112 1012

-0112

112

02

Для проверки правильности результата воспользуемся данными из примера 20. Они показывают, что деление выполнено верно: 11112 / 112 = 1012.

 

2 Задание

Выполнить подробные (как в примерах теоретической части; если применяются формулы, то указать какие с полным их описанием) переводы и арифметические действия над числами, выбранными в соответствии с вариантом задания:

1) Перевод целого числа A из десятичной системы счисления – в двоичную и шестнадцатеричную.

2) Перевод целых чисел B и С из двоичной и шестнадцатеричной систем счисления соответственно – в десятичную.

3) Перевод целого числа B из двоичной системы счисления в шестнадцатеричную.

4) Перевод целого числа C из шестнадцатеричной системы счисления в двоичную.

5) Перевод правильной дроби (1/A+0.68) (округление до 4-ого знака) из десятичной системы счисления – в двоичную и шестнадцатеричную. Перевод выполнить до четырех значащих цифр после запятой.

6) Перевод правильных дробей D и E из двоичной и шестнадцатеричной систем счисления соответственно – в десятичную.

7) Перевод правильной дроби D из двоичной системы счисления в шестнадцатеричную.

8) Перевод правильной дроби E из шестнадцатеричной системы счисления в двоичную.

9) Перевод из десятичной системы счисления в шестнадцатеричную числа, целая часть которого равна (A+A), а дробная − 3*A. Перевод выполнить до четырех значащих цифр после запятой.

10) Сложить двоичные числа B и 110(B). Проверить результат.

11) Сложить шестнадцатеричные числа C и 7(C). Проверить результат.

12) Вычесть из двоичного числа (B)1110двоичное число B. Проверить результат.

13) Вычесть из шестнадцатеричного числа (C)987шестнадцатеричное число C. Проверить результат.

14) Умножить двоичное число B на двоичное число 110(B). Проверить результат.

15) Умножить шестнадцатеричное число C на шестнадцатеричное число 7(C). Проверить результат.

 

3 Содержание отчета

1) Сформулировать задание в соответствие с вариантом (подробно).

2) Выполнить подробно все переводы, арифметические действия над числами и проверки, описанные в задании, выделяя каждый отдельно.


 

4 Варианты задания

 

Номер варианта A B C D E
        0,1010011 0,110A
      1F 0,1110010 0,1FA
      2E 0,1010101 0,2EB
      3D 0,1100110 0,3DC
      4C 0,1111111 0,4CD
      5B 0,1011100 0,5BE
      6A 0,1000001 0,6AF
      8F 0,1011110 0,8F10
      9E 0,1000011 0,9E1
      10D 0,1110000 0,10D2
      11C 0,1101101 0,11C3
      12B 0,1010000 0,12B4
      13A 0,1001111 0,13A5
      14F 0,1010000 0,14F6
      15E 0,1100101 0,15E7
      16D 0,1101010 0,16D8
      17C 0,1101111 0,17C9

5 Список литературы

1. Гашков С.Б. Системы счисления и их применение.— М.: МЦНМО, 2004. г.

2. Топоркова О.М. Информатика: Учебн. пособ. – Калининград: КГТУ, 2001.

3. Фомин С.В. Системы счисления. — М.: Наука, 1987 г.


 

Список литературы

1. Афанасьев В.В. Теория вероятностей в вопросах и задачах: http://cito-web.yspu.org/link1/metod/theory/theory.html

2. Топоркова О.М. Информатика: Учебн. пособ. – Калининград: КГТУ, 2001.

3. Яглом А. М., Яглом И. М. Вероятность и информация. — М.: «Наука», 1973.


Правила выполнения НАМ.

Прежде всего, задается некоторое входное слово Р. Где именно оно записано – не важно, в НАМ этот вопрос не оговаривается.

Работа НАМ сводится к выполнению последовательности шагов. На каждом шаге входящие в НАМ формулы подстановки просматриваются сверху вниз и выбирается первая из формул, применимых к входному слову Р, т.е. самая верхняя из тех, левая часть которых входит в Р. Далее выполняется подстановка согласно найденной формуле. Получается новое слово Р′.

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

РР′Р′′ → …

Следует обратить особое внимание на тот факт, что на каждом шаге формулы в НАМ всегда просматриваются начиная с самой первой.

Необходимые уточнения:

1. Если на очередном шаге была применена обычная формула (α→β), то работа НАМ продолжается.

2. Если же на очередном шаге была применена заключительная формула (α β), то после её применения работа НАМ прекращается. То слово, которое получилось в этот момент, и есть выходное слово, т.е. результат применения НАМ к входному слову.

3. Если на очередном шаге к текущему слову неприменима ни одна формула, то и в этом случае работа НАМ прекращается, а выходным словом считается текущее слово.

Таким образом, НАМ останавливается по двум причинам: либо была применена заключительная формула, либо ни одна из формул не подошла. То и другое считается «хорошим» окончанием работы НАМ. В обоих случаях говорят, что НАМ применuм к входному слову.

Однако может случиться и так, что НАМ никогда не остановится; это происходит, когда на каждом шаге есть применимая формула и эта формула обычная. Тогда говорят, что НАМ неприменим к входному слову. В этом случае ни о каком результате нет и речи.



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 124; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.197.212 (0.172 с.)