
- •Оглавление
- •Введение
- •1. Рекомендации по изучению теоретического материала
- •1.1. Общие указания
- •1.2. Рекомендации по конкретным разделам курса
- •1.3. Методология обобщенного программирования
- •Почему не интерфейсы?
- •Вызов объекта
- •Реализация компараторов
- •Техника traits
- •2. Рекомендации по подготовке эссе, рефератов и докладов
- •2.1. Эссе: рекомендации по подготовке
- •2.2. Рефераты: рекомендации по подготовке
- •2.3. Доклады: рекомендации по подготовке
- •2.4. Моделирующие программы: рекомендации по разработке
- •3.2. Домашнее задание №2. Использование алгоритмов и контейнеров данных в прикладной задаче. Задачи домашнего задания
- •Задание
- •Требования к отчетности
- •Предлагаемые этапы выполнения задания
- •Теоретический материал, необходимый для выполнения домашнего задания
- •Функциональный и объектно-ориентированный подходы к программированию – краткое описание
- •Основы uml
- •Понятие агрегации в объектно-ориентированном программировании
- •Рекомендованные правила оформления исходных текстов
- •4.1. Правила выбора идентификаторов
- •4.2. Выравнивание исходных текстов Символ табуляции запрещён
- •Выравнивание блоков
- •Пробелы
- •Длинные операторы
- •4.3. Комментарии
- •Заключение
- •Литература
- •Кафедра компьютерной фотоники
1. Рекомендации по изучению теоретического материала
1.1. Общие указания
Теоретический материал содержится в:
Данных методических указаниях к самостоятельной работе студента и методических указаниях к лабораторным работам [1].
Учебно-методическом пособии по курсу [2].
Рекомендуемой литературе по курсу [3-5].
Методические указания к самостоятельной работе студента и лабораторным работам [1] содержат теоретический материал в минимальном объеме, необходимом для изучения перед выполнением конкретной лабораторной работы или домашнего задания.
Учебно-методическое пособие по курсу [2] содержит систематическое изложение необходимого теоретического материала. Значительная часть вопросов в нем изложена весьма кратко. Учебно-методическое пособие позволяет получить представление о рассматриваемых в курсе вопросах, но недостаточно для их глубокого изучения и широкого рассмотрения каждого раздела курса. В то же время учебно-методическое пособие написано с учетом уровня знаний, типичного для студентов, приступающих к изучению курса, поэтому его изучение часто будет хорошим началом перед изучение рекомендованной литературы по курсу.
Рекомендуемая литература по курсу [3-5] позволяет глубоко изучить рассматриваемые в ней вопросы. При этом каждый вопрос рассматривается во взаимосвязи с актуальными проблемами разработки современных вычислительных систем. Изучение рекомендованной литературы позволит студенту приобрести широкие знания во многих вопросах современной Computer science. В то же время многие издания, например [3], ориентированы прежде всего на профессиональных программистов. Это не мешает их использовать, но необходимо быть готовым к сложности текста и необходимости тщательно разбираться в нем.
Рекомендуется воспринимать прочитанную информацию максимально активно. Часто будет лучше, если Вы прочитаете меньше литературы, но потратите время на то, чтобы реализовать заинтересовавший Вас алгоритм, решить какую-либо интересную Вам задачу с помощью только что изученного стандартного алгоритма. В идеале, читая описание алгоритма, вы должны сразу же чувствовать, как Вы будете его реализовывать, какие при этом встретятся сложности, и какие его свойства надо бы проверить. Для того, чтобы выработать такое чутье, есть только один способ – чаще программировать.
1.2. Рекомендации по конкретным разделам курса
Алгоритмы сортировки и поиска подробно описаны в книгах [4, гл. 6-9], [5]. Информацию о конкретных алгоритмах сортировки часто легко найти в сети Интернет с помощью средств поиска и в электронной энциклопедии [6].
Структуры данных, на базе которых строятся контейнеры, описаны в работе [4, гл. 11-14]. 16-ая и 17-ая глава работы [3] также могут быть полезны для изучения контейнеров. Прежде всего они, так же как и глава 19, посвящены контейнерам, реализованным в библиотеке STL.
18-ая глава книги [3] описывает стандартные алгоритмы STL. Значительная часть информации по контейнерам и алгоритмам STL доступна также в MSDN [7].
Работа [3] также полезна для восстановления знания языка программирования C++.
1.3. Методология обобщенного программирования
Методология обобщенного программирования [3] была создана Александром Степановым, российско-американским ученым. Основная идея обобщенного программирования состоит в обобщении алгоритмов и классов, обеспечивающем возможность их применения для работы с различными типами данных. Методология обобщенного программирования – основа стандартной библиотеки шаблонов языка C++ (STL).
Рассматриваемые в данном курсе алгоритмы сортировки и поиска и контейнеры данных универсальны. Они могут быть применены для любых типов данных, предъявляя к ним лишь минимальные требования (например, реализация оператора < для сортировки или использования бинарных деревьев поиска). Поэтому мы хотим сделать их программную реализацию столь же универсальной. Именно в этом нам может помочь методология обобщенного программирования.