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

Министерство образования и науки российской федерации томский государственный университет Факультет прикладной математики и кибернетики утверждаю




Скачати 255.43 Kb.
НазваМинистерство образования и науки российской федерации томский государственный университет Факультет прикладной математики и кибернетики утверждаю
Дата конвертації28.12.2012
Розмір255.43 Kb.
ТипРабочая программа

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ


Томский государственный университет


Факультет прикладной математики и кибернетики


УТВЕРЖДАЮ

Декан факультета прикладной математики и кибернетики, профессор

_________А.М. Горцев


"1 "марта2011 г.


Рабочая программа дисциплины

«Методы программирования»


Направление подготовки: 010400 – Прикладная математика и информатика


Квалификация выпускника: Бакалавр


Форма обучения: очная


Томск

2011 г.

^ 1. Цели освоения дисциплины:


Целью курса является изучение основных алгоритмов работы с дискретными объектами, структур данных и методов их исследования.


^ 2. Место дисциплины в структуре ООП бакалавриата


Обязательный курс для студентов 2 года обучения, читается в 3 и 4 семестрах (вариативная часть профессионального цикла Б.3).

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

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


^ 3. Компетенции обучающегося, формируемые в результате освоения дисциплины


Способность владения навыками работы с компьютером как средством управления информацией (ОК-11); способность работать с информацией в глобальных компьютерных сетях (ОК-12); способность использовать в научной и познавательной деятельности, а также в социальной сфере профессиональные навыки работы с информационными и компьютерными технологиями (ОК-14); способность работы с информацией из различных источников, включая сетевые ресурсы сети Интернет, для решения профессиональных и социальных задач (ОК-15).

Способность приобретать новые научные и профессиональные знания, используя современные образовательные и информационные технологии (ПК-2); способность понимать и применять в исследовательской и прикладной деятельности современный математический аппарат (ПК-3); способность осуществлять целенаправленный поиск информации о новейших научных и технологических достижениях в сети Интернет и из других источников (ПК-6); способность решать задачи производственной и технологической деятельности на профессиональном уровне, включая: разработку алгоритмических и программных решений в области системного и прикладного программирования (ПК-9); способность применять в профессиональной деятельности современные языки программирования и языки баз данных, операционные системы, электронные библиотеки и пакеты программ, сетевые технологии (ПК-10).

В результате освоения дисциплины обучающийся должен:

• Знать: основные алгоритмы работы с дискретными объектами, структуры данных и методы их исследования.

• Уметь: применить алгоритмы при профессиональной разработке программ.

• Владеть: технологиями структурного программирования при создании программ обработки сложных структур данных.


^ 4. Структура и содержание дисциплины


Общая трудоемкость дисциплины составляет 7 зачетных единиц (252 часа).


4.1. Распределение часов курса по темам и видам работ



№№

п/п

^ Раздел дисциплины

Семестр

Неделя семестра

Виды учебной работы

(в часах)

Формы текущего контроля успеваемости

Форма промежуточной аттестации

Лекции

Практические занятия

Лабораторные работы

Самостоятельная работа

1.

^ Анализ алгоритмов

3



















1.1.

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

3

1-2

3







5

Тест

1.2.

Исследование сложности алгоритмов

3

2-3

3







5

Тест

1.3.

Структуры данных и методы разработки эффективных алгоритмов

3

4-5

4







5

Контрольная работа

2.

^ Алгоритмы сортировок

3



















2.1.

Задача сортировки

3

6-7

4




2

5

Тест

2.2.

Алгоритмы внутренней сортировки

3

8-10

6




10

5

Тест

2.3.

Порядковые статистики

3

11-13

6




10

5

Тест

2.4.

Внешняя сортировка

3

14-16

6




10

10

Зачет

3.

^ Алгоритмы поиска

4



















3.1.

Поиск в таблицах и массивах

4

1

2

2




4

Тест

3.2.

Хеширование

4

2-4

6

3

6

8

Тест

3.3.

Деревья поиска

4

5-7

6

3

6

8

Тест

3.4.

Поиск цепочек символов

4

8-9

4

2

6

8

Контрольная работа

4.

^ Комбинаторные алгоритмы

4



















4.1.

Поиск решения в комбинаторных задачах

4

10-12

4

2

4

4

Тест

4.2.

Комбинаторные задачи на графах

4

13-14

4

2

4

4

Тест

4.3.

Эффективные алгоритмы на графах

4

15-16

4

2

4

4

Зачет




Итого







62

16

62

80

32



^ 4.2. Перечень разделов курса


1. Анализ алгоритмов.

1.1. Доказательство правильности алгоритмов. Вход и выход алгоритма. Пред- и постусловие. Математическая индукция. Инвариант. Эквивалентность алгоритмов. Поэтапное доказательство сложных алгоритмов.

1.2. Исследование сложности алгоритмов. Представление алгоритмов в командах компьютера и на языке высокого уровня. Временная и емкостная сложности алгоритма. Полиномиальные и экспоненциальные виды функций сложности. Исследование временной сложности в наихудшем и в среднем. Теоремы о рекуррентных соотношениях для сложности. Экспериментальное исследование сложности алгоритмов. Генерация случайных входных данных. Статистическая обработка результатов исследования сложности алгоритмов.

1.3. Структуры данных и методы разработки эффективных алгоритмов. Стеки, очереди, списки, их моделирование с помощью массивов. Представления множеств в виде массивов и списков. Графы и различные способы их представления. Прошитые списки. Выбор наиболее эффективных структур данных. Методы разработки эффективных алгоритмов: "разделяй и властвуй", "балансировка", "жадный метод", "динамическое программирование".

^ 2. Алгоритмы сортировок.

2.1. Задача сортировки. Дерево решений в задаче сортировки. Минимально возможная трудоемкость в наихудшем. Оптимальные алгоритмы. Инверсии. Перестановки.

2.2. Алгоритмы внутренней сортировки. Простейшие алгоритмы. Алгоритм Шелла. Быстрая сортировка Хоара, оценка его сложности в среднем. Пирамидальная сортировка. Сортировка слиянием. Цифровая сортировка. Цифровая сортировка строк.

2.3. Порядковые статистики. Задача определения k-го элемента. Алгоритм, основанный на быстрой сортировке, его сложность в среднем. Алгоритм, эффективный в наихудшем случае.

2.4. Внешняя сортировка. Особенности задачи сортировки информации на файлах. Сбалансированное слияние. Многофазная сортировка, ее анализ. Особенности практической реализации.

^ 3. Алгоритмы поиска.

3.1. Поиск в таблицах и массивах. Задача поиска. Поиск в неупорядоченном массиве. Минимально возможная трудоемкость в наихудшем. Дихотомический поиск в упорядоченном массиве. Таблица, как база данных. Иерархическая упорядоченность в таблице. Косвенная адресация. Поиск по нескольким ключам. Включающий поиск. Операции проекции и соединения таблиц, как обобщение поиска.

3.2. Хеширование. Задача хеширования. Хеш-функция. Хеш-таблица с областью переполнения, поиск, удаление элементов. Хеш-таблица с открытой адресацией, эффективность поиска в среднем. Применение хеш-таблиц в файлах.

3.3. Деревья поиска. Построение случайного дерева. Поиск в случайном дереве, его средняя трудоемкость. Идеально сбалансированные деревья. Удаление элементов из дерева. АВЛ-деревья. Фибоначчиевы деревья, их максимальная высота. Добавление и удаление в АВЛ-дереве. Деревья для задачи объединения множеств. В-деpевья, их применение для файлов. 2-3-деревья, их применение для словарей, сцепляемых очередей, очередей с приоритетами. Прошитые словари и очереди.

3.4. Поиск цепочек символов. Алфавит. Цепочка. Автоматные грамматики. Порождение цепочек. Задача распознавания. Конечный автомат (КА), его функционирование. Недетерминированный КА. Регулярные множества и выражения. Распознавание цепочек с помощью КА. Алгоритм распознавания по функции отказов. Алгоритм Бауэра-Мура. Распознавание множества цепочек.

^ 4. Комбинаторные алгоритмы.

4.1. Поиск решения в комбинаторных задачах. Перебор вариантов. Бэктрекинг, общий алгоритм. Генерация цепочек символов по грамматике. Оптимизационные задачи. Метод ветвей и границ для решения оптимизационных задач. Задача коммивояжера. Оценки трудоемкости. Приближенные решения задачи коммивояжера. Жадный алгоритм ближайшего города и локальная оптимизация, оценки качества решения. Приближенное решение задачи коммивояжера с помощью минимального остова.

4.2. Комбинаторные задачи на графах. Минимальная раскраска графа, переборный алгоритм. Приближенные алгоритмы раскраски графа, основанные на понятии соцветных веpшин. Раскраска методом ветвей и границ. Гамильтонов цикл. Поиск клик в графе. Узельное покрытие.

4.3. Эффективные алгоритмы на графах. Эйлеров путь в графе. Остовное дерево наименьшей стоимости, алгоритмы Прима и Крускала. Поиск в глубину в неориентированном графе. Выделение компонент связности. Двусвязные компоненты. Сильно связные компоненты. Нахождение кратчайших путей во взвешенном графе, алгоритмы Флойда и Дейкстры. Транзитивное замыкание, алгоритм Воршалла.


^ 4.3. Лабораторный практикум на ЭВМ


Лабораторные работы выполняются по ИНДИВИДУАЛЬНЫМ ЗАДАНИЯМ:

1. Сортировка Шелла.

2. Быстрая сортировка Хоара. Рекурсивный вариант.

3. Быстрая сортировка Хоара. Улучшенный вариант с одним рекурсивным вызовом.

4. Пирамидальная сортировка. Рекурсивный вариант.

5. Пирамидальная сортировка. Нерекурсивный вариант.

6. Цифровая сортировка однобайтовых чисел.

7. Цифровая сортировка строк одинаковой длины.

8. Цифровая сортировка строк различной длины.

9. Сортировка слиянием. Рекурсивный вариант.

10. Сортировка слиянием. Нерекурсивный вариант.

11. Вычисление k-го элемента методом Хоара.

12. Внешняя сортировка сбалансированным двухпутевым слиянием.

13. Внешняя многофазная сортировка двухпутевым слиянием.

14. Дихотомический поиск одного элемента массива.

15. Дихотомический поиск всех одинаковых элементов.

16. Хеширование с открытой адресацией. Вставка, поиск элементов.

17. Хеширование, метод цепочек. Вставка, поиск элементов.

18. Хеширование, метод цепочек. Вставка, поиск, удаление элементов.

19. Построение случайного дерева, поиск в дереве.

20. Построение случайного дерева, поиск, удаление вершин в дереве.

21. Построение выровненного дерева, поиск в дереве.

22. Построение выровненного дерева, поиск, удаление вершин в дереве.

^ 23. Построение АВЛ-дерева, добавление вершин.

24. Построение АВЛ-дерева, добавление и удаление вершин.

25. Построение АВЛ-дерева, поиск минимального и максимального элемента.

26. Построение прошитого АВЛ-дерева, поиск соседнего элемента.

^ 27. Построение 2-3-дерева, добавление вершин.

28. Построение 2-3-дерева, добавление и удаление вершин.

29. Построение 2-3-дерева, поиск минимального и максимального элемента.

30. Построение прошитого 2-3-дерева, поиск соседнего элемента.

^ 31. Иерархическая сортировка таблицы.

32. Независимая сортировка ссылками таблицы по двум ключам.

33. Хеширование для независимого поиска в таблице по двум ключам. Добавление и поиск.

^ 34. Хеширование для независимого поиска в таблице по двум ключам. Добавление, поиск и удаление.

35. Вычисление проекции таблицы с помощью иерархической сортировки.

^ 36. Вычисление проекции таблицы с помощью предварительной независимой сортировки по двум ключам.

37. Вычисление проекции таблицы с помощью хеширования.

^ 38. Вычисление соединения двух таблиц по одному ключу. Таблицы отсортированы по этому ключу.

39. Вычисление соединения двух таблиц по одному ключу. Имеется сортировка ссылками таблиц по этому ключу.

40. Вычисление соединения двух таблиц по одному ключу. Имеются хеш-таблицы со ссылками по этому ключу.

41. Детерминированный автомат для грамматики, задаваемой таблицей.

42. Недетерминированный автомат для грамматики, задаваемой списком правил.

43. Простейший алгоритм распознавания подцепочки.

44. Алгоритм распознавания подцепочки, вычисляющий функцию отказов.

45. Алгоритм Бауэра-Мура распознавания подцепочки.

46. Поиск в лабиринте. Рекурсивный вариант.

47. Поиск в лабиринте. Нерекурсивный вариант.

48. Бэктрекинг для какой-либо головоломки.Рекурсивный вариант.

49. Алгоритм порождения всех цепочек автоматной грамматики.

50. Алгоритм порождения всех цепочек КС-грамматики.

51. Задача коммивояжера. Полный перебор, рекурсивный вариант.

52. Задача коммивояжера. Алгоритм ближайшего соседа.

53. Задача коммивояжера. Алгоритм ближайшего города.

54. Задача коммивояжера. Алгоритм, основанный на построении остовного дерева наименьшей стоимости.

55. Минимальная раскраска графа переборным алгоритмом с отсечениями.

56. Минимальная раскраска транзитивно-ориентированного графа.

57. Приближенная раскраска графа методом склеивания соцветных вершин.

58. Поиск гамильтонового цикла переборным алгоритмом.

59. Нахождение наибольшей максимальной клики переборным алгоритмом с отсечениями.

60. Вычисление эйлерова цикла в графе.

61. Остовное дерево наименьшей стоимости, алгоритм Прима.

62. Остовное дерево наименьшей стоимости, алгоритм Крускала.

63. Остовное дерево наименьшей стоимости, алгоритм Крускала с алгоритмом быстрого объединения множеств (сжатие путей).

64. Остовное дерево наименьшей стоимости c предварительным построением пирамиды для весов ребер.

65. Поиск в глубину, выделение компонент связности графа. Рекурсивный вариант.

66. Поиск в глубину, выделение компонент связности графа. Нерекурсивный вариант.

67. Поиск в глубину, выделение компонент сильной связности графа. Рекурсивный вариант.

68. Поиск в глубину, выделение компонент сильной связности графа. Нерекурсивный вариант.

69. Нахождение всех кратчайших путей в графе.

70. Нахождение кратчайшего пути из одной вершины в графе. Алгоритм Дейкстры.

71. Транзитивное замыкание, алгоритм Воршалла.

72. Транзитивное замыкание, алгоритм Воршалла с использованием битовых операций.

73. Построение кода Хаффмана для символов конкретного текста.

74. Кодирование и декодирование текста заданным неравномерным кодом.


^ 4.4. Практические занятия


  1. Алгоритмы поиска.

  2. Поиск в таблицах и массивах.

  3. Хеширование.

  4. Деревья поиска.

  5. Поиск цепочек символов.

  6. Комбинаторные алгоритмы.

  7. Поиск решения в комбинаторных задачах.

  8. Комбинаторные задачи на графах.

  9. Эффективные алгоритмы на графах.


^ 4.5. Курсовой проект (курсовая работа)


Курсовой проект не предусмотрен.


5. Образовательные технологии


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

Удельный вес занятий, проводимых в интерактивных формах, составляет не менее 40% аудиторных занятий. Занятия лекционного типа для соответствующих групп студентов составляют не более 40% аудиторных занятий.


6. Учебно-методическое обеспечение самостоятельной работы студентов. Оценочные средства для текущего контроля успеваемости, промежуточной аттестации по итогам освоения дисциплины


Все необходимое учебно-методическое обеспечение по дисциплине представлено в печатном или электронном виде в библиотеке ТГУ, а также в электронном виде в сети Интернет на сайте кафедры программирования или ИДО ТГУ.

В качестве текущего контроля успеваемости в конце каждой темы проводиться электронное тестирование по материалам темы. В середине семестра (10 неделя) проводится письменная контрольная работа.

В конце 3 и 4 семестров сдается зачет.


^ 6.1. Примерный перечень вопросов к экзамену:


1. Сортировка Шелла.

2. Быстрая сортировка Хоара. Рекурсивный вариант.

3. Быстрая сортировка Хоара. Улучшенный вариант с одним рекурсивным вызовом.

4. Пирамидальная сортировка. Рекурсивный вариант.

5. Пирамидальная сортировка. Нерекурсивный вариант.

6. Цифровая сортировка однобайтовых чисел.

7. Цифровая сортировка строк одинаковой длины.

8. Цифровая сортировка строк различной длины.

9. Сортировка слиянием. Рекурсивный вариант.

10. Сортировка слиянием. Нерекурсивный вариант.

11. Вычисление k-го элемента методом Хоара.

12. Внешняя сортировка сбалансированным двухпутевым слиянием.

13. Внешняя многофазная сортировка двухпутевым слиянием.

14. Дихотомический поиск одного элемента массива.

15. Дихотомический поиск всех одинаковых элементов.

16. Хеширование с открытой адресацией. Вставка, поиск элементов.

17. Хеширование, метод цепочек. Вставка, поиск элементов.

18. Хеширование, метод цепочек. Вставка, поиск, удаление элементов.

19. Построение случайного дерева, поиск в дереве.

20. Построение случайного дерева, поиск, удаление вершин в дереве.

21. Построение выровненного дерева, поиск в дереве.

22. Построение выровненного дерева, поиск, удаление вершин в дереве.

23. Построение АВЛ-дерева, добавление вершин.

24. Построение АВЛ-дерева, добавление и удаление вершин.

25. Построение АВЛ-дерева, поиск минимального и максимального элемента.

26. Построение прошитого АВЛ-дерева, поиск соседнего элемента.

27. Построение 2-3-дерева, добавление вершин.

28. Построение 2-3-дерева, добавление и удаление вершин.

29. Построение 2-3-дерева, поиск минимального и максимального элемента.

30. Построение прошитого 2-3-дерева, поиск соседнего элемента.

31. Иерархическая сортировка таблицы.

32. Независимая сортировка ссылками таблицы по двум ключам.

33. Хеширование для независимого поиска в таблице по двум ключам. Добавление и поиск.

34. Хеширование для независимого поиска в таблице по двум ключам. Добавление, поиск и удаление.

35. Вычисление проекции таблицы с помощью иерархической сортировки.

36. Вычисление проекции таблицы с помощью предварительной независимой сортировки по двум ключам.

37. Вычисление проекции таблицы с помощью хеширования.

38. Вычисление соединения двух таблиц по одному ключу. Таблицы отсортированы по этому ключу.

39. Вычисление соединения двух таблиц по одному ключу. Имеется сортировка ссылками таблиц по этому ключу.

40. Вычисление соединения двух таблиц по одному ключу. Имеются хеш-таблицы со ссылками по этому ключу.

41. Детерминированный автомат для грамматики, задаваемой таблицей.

42. Недетерминированный автомат для грамматики, задаваемой списком правил.

43. Простейший алгоритм распознавания подцепочки.

44. Алгоритм распознавания подцепочки, вычисляющий функцию отказов.

45. Алгоритм Бауэра-Мура распознавания подцепочки.

46. Поиск в лабиринте. Рекурсивный вариант.

47. Поиск в лабиринте. Нерекурсивный вариант.

48. Бэктрекинг для какой-либо головоломки.Рекурсивный вариант.

49. Алгоритм порождения всех цепочек автоматной грамматики.

50. Алгоритм порождения всех цепочек КС-грамматики.

51. Задача коммивояжера. Полный перебор, рекурсивный вариант.

52. Задача коммивояжера. Алгоритм ближайшего соседа.

53. Задача коммивояжера. Алгоритм ближайшего города.

54. Задача коммивояжера. Алгоритм, основанный на построении остовного дерева наименьшей стоимости.

55. Минимальная раскраска графа переборным алгоритмом с отсечениями.

56. Минимальная раскраска транзитивно-ориентированного графа.

57. Приближенная раскраска графа методом склеивания соцветных вершин.

58. Поиск гамильтонового цикла переборным алгоритмом.

59. Нахождение наибольшей максимальной клики переборным алгоритмом с отсечениями.

60. Вычисление эйлерова цикла в графе.

61. Остовное дерево наименьшей стоимости, алгоритм Прима.

62. Остовное дерево наименьшей стоимости, алгоритм Крускала.

63. Остовное дерево наименьшей стоимости, алгоритм Крускала с алгоритмом быстрого объединения множеств (сжатие путей).

64. Остовное дерево наименьшей стоимости c предварительным построением пирамиды для весов ребер.

65. Поиск в глубину, выделение компонент связности графа. Рекурсивный вариант.

66. Поиск в глубину, выделение компонент связности графа. Нерекурсивный вариант.

67. Поиск в глубину, выделение компонент сильной связности графа. Рекурсивный вариант.

68. Поиск в глубину, выделение компонент сильной связности графа. Нерекурсивный вариант.

69. Нахождение всех кратчайших путей в графе.

70. Нахождение кратчайшего пути из одной вершины в графе. Алгоритм Дейкстры.

71. Транзитивное замыкание, алгоритм Воршалла.

72. Транзитивное замыкание, алгоритм Воршалла с использованием битовых операций.

73. Построение кода Хаффмана для символов конкретного текста.

74. Кодирование и декодирование текста заданным неравномерным кодом.


^ 7. Учебно-методическое и информационное обеспечение дисциплины


а) Основная литература:

  1. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир,1979.

  2. Вирт Н. Алгоритмы + структуры данных = программы. М.: Мир, 1985.

  3. Дейкстра Э. Дисциплина программирования. М.: Мир, 1978, 275 c.

  4. Ершов А.П. Теоретическое программирование.

  5. Дэвис Д., Барбер Д., Прайс У., Соломонидес С. Вычислительные сети и сетевые протоколы. М.:Мир, 1982.

  6. Кнут Д. Искусство программирования для ЭВМ. Т. 2. Получисленные алгоритмы. М.: Мир, 1977.

  7. Кнут Д. Искусство программирования для ЭВМ. Т. 3. Сортировка и поиск. М.: Мир, 1978.


б) Дополнительная литература:

  1. Галлагер Р. Теория информации и надежная связь. М.: Советское радио, 1974.

  2. Гудман С., Хидетмиеми С. Введение в разработку и анализ алгоритмов. М.: Мир, 1981, 368 с.

  3. Кристофидес Н. Теория графов. Алгоритмический подход. М.: Мир, 1978.

  4. Рейнгольд Э., Нивергельд Ю., Део Н. Комбинаторные алгоритмы. Теория и практика. М.: Мир,1980, 476 с.



^ 8. Материально-техническое обеспечение дисциплины


8.1. Требования к аудиториям (помещениям, местам) для проведения занятий

Стандартно оборудованные лекционные аудитории. Для проведения лабораторных занятий – компьютерные классы. А также аудитории для проведения интерактивных лекций: видеопроектор, экран настенный, др. оборудование.


^ 8.2. Требования к специализированному оборудованию

Рабочие места преподавателя и студентов должны быть оснащены оборудованием не ниже: Pentium |||-800/ОЗУ-256 Мб / Video-32 Мб / HDD 80 Гб / СD-ROM – 48x / Network adapter – 10/100/ Мбс / SVGA – 15”.


^ 8.3. Требования к специализированному программному обеспечению

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


Программа составлена в соответствии с требованиями ФГОС ВПО с учетом рекомендаций и ПрООП ВПО по направлению подготовки 010400 – Прикладная математика и информатика


Автор: к.т.н., доцент С.А. Останин.

Рецензент: д.т.н., профессор А.Ю. Матросова.


Программа одобрена на заседании Ученого совета ФПМК

от «24» февраля 2011 г., протокол № 282.








Схожі:




База даних захищена авторським правом ©lib.exdat.com
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації