- •1. Роль вычислительной техники в решении прикладных задач.
- •2. Задачи, особенности и основные инструменты прикладного программирования
- •3.Языки программирования: классификация, особенности, критерии выбора.
- •4. Архитектура прикладных информационных систем.
- •5. Процедурная и объектно-ориентированная декомпозиция.
- •6. Основные принципы объектно-ориентированного программирования: абстрагирование, инкапсуляция, наследование, полиморфизм, модульность, сохраняемость, параллелизм.
- •7. Объекты и типы объектов. Атрибуты объектов и типы атрибутов. Методы объектов.
- •9. Директивы препроцессора: #include, #define, #error, #pragma, операции # и ##
- •11. Компиляция программы и сборка исполняемого модуля.
- •12. Размещение программы и данных в памяти.
- •13. Структура исполняемого модуля.
- •14. Переменные: объявление, определение, инициализация
- •15. Переменные: значение, указатель, ссылка.
- •16.Время жизни и области видимости переменных.
- •19. Составные типы данных.
- •20. Встроенные массивы: размещение в памяти, доступ к элементам. Размещение массива в памяти
- •Элементы массива
- •22. Условные конструкции выбора if/else , select.
- •23. Конструкции циклов for, while, do/ while; операторы break и continue.
- •24. Логические операции.
- •25. Функции: объявление, определение, передача аргументов по ссылке и по значению; входные и выходные параметры, возвращаемое значение, инструкция return.
- •26. Перегрузка функций.
- •27. Библиотека стандартного потокового ввода/вывода. Форматированный ввод/вывод. Файловые потоки, потоки в памяти.
- •28. Обработка строк, класс string.
- •29. Классы. Инкапсуляция. Сокрытие данных и видимость членов класса. Идиома «pimpl».
- •30. Конструктор класса. Конструктор с параметрами и конструктор по умолчанию. Конструкторкопирования.Операторприсваивания.Деструктор.
- •31.Наследование и полиморфизм классов: виртуальные функции.
- •32.Абстрактные базовыеклассы.
- •33.Множественное наследование.
- •34.Перегрузка операторов.
- •35.Объекты-владельцы. «Интеллектуальные» указатели.
- •36. Объекты-владельцы с частной копией ресурса.
- •37. Объекты-владельцы с совместным владением ресурсом.
- •38. Приведениетипов. Операторыstatic_cast, reinterpret_cast, dynamic_cast.
- •39. Константные и не-константные переменные. Оператор const_cast.
- •40. Шаблоны функций и шаблоны классов.
- •41. КонтейнерыстандартнойбиблиотекиStl.
- •42. Итераторы контейнеров.
- •43. Динамический массив на примере контейнера vector.
- •44. Связный список на примере контейнера list.
- •45. Контейнер deque библиотеки stl.
- •46. Ассоциативные контейнеры: map, multimap, set, multiset.
- •47. Стандартные алгоритмы: алгоритм sort; объекты-функции.
- •48. Взаимодействие прикладных программ с базами данных. Протокол odbc.
- •49. Оконный интерфейс. Организация графического оконного интерфейса при помощи оконных сообщений в ос Windows.
- •50. Работа с объектами графического интерфейса gdi.Кисти и перья; контекст устройства вывода («devicecontext»)
44. Связный список на примере контейнера list.
Двусвязный список, элементы которого хранятся в произвольных кусках памяти, в отличие от контейнера vector, где элементы хранятся в непрерывной области памяти. Поиск перебором медленнее, чем у вектора из-за большего времени доступа к элементу. Доступ по индексу за . В любом месте контейнера вставка и удаление производятся очень быстро — за .
45. Контейнер deque библиотеки stl.
Контейнер похож на vector, но с возможностью быстрой вставки и удаления элементов на обоих концах за . Реализован в виде двусвязанного списка линейных массивов. С другой стороны, в отличие от vector, дек не гарантирует расположение всех своих элементов в непрерывном участке памяти, что делает невозможным безопасное использование арифметики указателей для доступа к элементам контейнера.
46. Ассоциативные контейнеры: map, multimap, set, multiset.
map Упорядоченный ассоциативный массив пар элементов, состоящих из ключей и соответствующих им значений. Ключи должны быть уникальны. Порядок следования элементов определяется ключами. При этом тип ключа должен реализовывать оператор сравнения operator<, либо требуется предоставить функцию-компаратор.
multimap То же что и map, но позволяет хранить несколько одинаковых ключей.
set Упорядоченное множество уникальных элементов. При вставке/удалении элементов множества итераторы, указывающие на элементы этого множества, не становятся недействительными. Обеспечивает стандартные операции над множествами типа объединения, пересечения, вычитания. Тип элементов множества должен реализовывать оператор сравнения operator< или требуется предоставить функцию-компаратор. Реализован на основе самобалансирующего дерева двоичного поиска.
multiset То же что и set, но позволяет хранить повторяющиеся элементы.
47. Стандартные алгоритмы: алгоритм sort; объекты-функции.
Std::sort это алгоритм сортировки, один из представителей семейства алгоритмов stl. Как понятно из его названия, std::sort занимается сортировкой данных. Кстати, std::sort часто (или почти всегда?) опережает по скорости стандартную функцию sort(). Вообще, в STL очень много полезных алгоритмов и sort – один из наиболее часто используемых. Давайте рассмотрим на примере std::sort() использование алгоритмов STL и разберём, где именно и как именно надо использовать алгоритмы, а так же как мы можем модифицировать их поведение с помощью функторов.
Алгоритм std::sort
Как и большинство алгоритмов STL, sortопределён в двух формах:
template<class RandomAccessIterator>
void sort ( RandomAccessIterator first, RandomAccessIterator last );
template<class RandomAccessIterator, class Compare>
void sort ( RandomAccessIterator first, RandomAccessIterator last,
Comparecomp );
Первая форма алгоритма использует дефолтный функтор сравнения, а вторая позволяет задать его самостоятельно.
Объекты-функции — этoклaссы, в кoтoрыхoпределенaперегрузкaoперaтoрaвызoвa с пoмoщьюoperator (). Есть нескoлькooпределенныхзaрaнееoбъектoв-функций, тaкихкaкless(), greater(), plus(), minus(), multiplies() и divides (). Вoзмoжнo, нaибoлеечaстoиспoльзуетсяoбъект-функция less () oпределяющaя, меньше ли oдинoбъектдругoгo. Объекты-функции мoгут применяться нa месте укaзaтелейнa функции в aлгoритмaх STL. В сaмoмoбщем смысле aдaптерпреoбрaзуетoдин элемент в другoй. Существуют aдaптерыкoнтейнерa, aдaптерыитерaтoрa и aдaптеры функции. Нaпример, к кoнтейнернымoтнoситсяaдaптерqueue, кoтoрыйприспoсaбливaеткoнтейнертипadeque для испoльзoвaнияегoкaкстaндaртнoйoчереди. Адaптерыупрoщaютoбрaбoткурядaслoжныхситуaций. Некoтoрые из aлгoритмoв и кoнтейнерoвиспoльзуютспециaльный тип функции, именуемый предикaтoм. Есть две рaзнoвиднoстипредикaтoв: унaрные и бинaрные. Унaрныйпредикaтпринимaетoдинaргумент, a бинaрный — двaaргументa. Эти функции вoзврaщaютрезультaтtrue/ false, нoуслoвия, при кoтoрыхoнивoзврaщaютtrue или false, oпределяютсявaми. Некoтoрыеaлгoритмы применяют специaльный тип бинaрнoгoпредикaтa, кoтoрыйсрaвнивaетдвaэлементa. Эти функции срaвнениявoзврaщaютtrue, если их первый aргумент меньше втoрoгo. Двa других элементa, испoльзуемых в библиoтеке STL, — связывaтели и oтрицaтели. Связывaтельсвязывaетaргумент с oбъектoм-функцией. В библиoтеке STL oпределеныдвaсвязывaтеля: bind2nd() и bindisto. Отрицaтельвoзврaщaетдoпoлнениепредикaтa. Существуют двaoтрицaтеля: notio и not2 (). Кaксвязывaтели, тaк и oтрицaтелиувеличивaютгибкoсть и универсaльнoстьбиблиoтеки STL.
