Содержание
422 гр., спец. СМ. С++
«Программирование для решения вероятностных задач»
Место и время проведения: четверг, третья пара, ауд. 3381
Преподаватель: Звонарев Никита
Критерий получения зачёта
- «Большая» программа (оптимизация функций), и в графическом, и в консольном исполнении
- Плюсики за все домашки
- Плюсики за посещения пар (сданный тест/вопрос за пропуск)
Программа для поиска экстремума функции
Задание на семестр ← здесь дано старое задание в полном виде. Нас интересует п. 2.
Красивые примеры программ прошлых лет. Еще один
Комментарии к стилю программирования
Минимальные требования к программе с MFC
Примеры на combo-box и графику VS2010 Примеры на combo-box и графику VS2013
Список литературы с описанием методов поиска экстремумов
Добавляется очень хорошая книга Nocedal, Jorge, Wright, S. Numerical Optimization.
C++ advanced
Примерные темы
- Шаблоны
- Исключения
- STL
- Современный (насколько?) стандарт
- Немного Qt
- Многопоточность?
- ???
Литература
Основная книга номер 3, английский вариант можно найти on-line на сайте автора.
- Бьерн Страуструп. Язык программирования
C++
. - Эккель Б. Философия
C++
. Введение в стандартныйC++
. - Эккель Б. Философия
C++
. Практическое программирование.
Занятия по C++ advanced
2021 год ([x] — x пар потрачено на тему)
- 23/09/2021 [1]. Множественное наследование. Виртуальный базовый класс. «Виртуальный конструктор». Слайды
- 30/09/2021 [1]. RTTI (
typeid
,dynamic_cast
), приведение типов в стиле C++. Исключения: начало. Слайды - 07/10/2021 [1]. Исключения: семантика, исключения в конструкторе, stack unwinding,
set_terminate
,noexcept
, стандартные исключения, «голые» и «одетые» указатели. Слайды - 14/10/2021 [0.75]. Move semantics, умные указатели, RAII. RAII
- 21/10/2021 [1]. Введение в шаблоны, конкретизация шаблонов, специализация шаблонов.
- 28/10/2021 [1]. Паттерны с traits и policy, policy через SFINAE, type_traits. Метапрограммирование, вычисления на этапе компиляции через шаблоны/constexpr (C++ 11 и C++ 14).
- 11/11/2021 [1]. Решение задач метапрограммирования на С++≤11.
- 18/11/2021 [1]. STL: общая структура, обзор контейнеров с трудоемкостью операций. Иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки. Алгоритм copy и умение его написать.
- 25/11/2021 [1]. Итераторы для потоков ввода-вывода. Разбор примеров с итераторами. Обзор алгоритмов STL. Встроенные функторы, std::bind. Для самостоятельного изучения: I/O в C++, манипуляторы, режимы открытия, stringstream. Обещанные материалы к лекции
- 02/12/2021 [1]. Немного про Qt. Лямбды, лямбды как замыкания. Примеры на set, map, анонс задания про словарь. Материалы лекции
- 09/12/2021 [1]. Misc: bitset, valarray, complex, numeric_limits.
Материалы в виде архивов к занятиям в прошлые годы (+прошлогодняя программа)
2020 год ([x] — x пар потрачено на тему)
- 24/09/2020 [1]. Множественное наследование. Виртуальный базовый класс. «Виртуальный конструктор». Слайды
- 15/10/2020 [0.75]. Введение в шаблоны, конкретизация шаблонов, специализация шаблонов.
- 22/10/2020 [1]. Паттерны с traits и policy, policy через SFINAE, type_traits. Метапрограммирование, вычисления на этапе компиляции через шаблоны/constexpr (C++ 11 и C++ 14).
- 29/10/2020 [1]. Решение задач метапрограммирования на С++≤11.
- 05/11/2020 [1]. I/O в C++. Манипуляторы, режимы открытия, stringstream. STL: общая структура, обзор контейнеров с трудоемкостью операций (без итераторов). Материалы к лекции .
- 12/11/2020 [1.5]. Иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки. Итераторы для потоков ввода-вывода. Алгоритм copy и умение его написать. Общая структура алгоритмов STL. Встроенные функторы, std::bind. Примеры на алгоритмы Примеры на функциональные объекты
- 19/11/2020 [1]. Немного про Qt. Лямбды, лямбды как замыкания. Примеры на set, map, анонс задания про словарь. Материалы лекции
- 26/11/2020 [1]. Misc: bitset, valarray, complex, numeric_limits.
—-
Совсем старые годы (материалы от НЭ):
- (08/09/2010). Множественное наследование. Виртуальный базовый класс. «Виртуальные конструкторы».
- (16/09/2009). RTTI (typeid, dynamic_cast), вспомнили static_cast, const_cast, reinterpret_cast. Вспомнили assert. Исключения - начало.
- (23/09/2009). Исключения (как выбрасывать, как ловить), исключения в конструкторах, «голые» указатели, set_unexpected, set_terminate, auto_ptr.
- (25/09/2013). cleanup, «голые» указатели, auto_ptr, unique_ptr, shared_ptr, weak_ptr.
- (30/09/2009). Окончание темы про исключения («одетые» указатели, стандартные классы исключений). Строки (string). Шаблоны - начало.
- (07/10/2009). Шаблоны: компиляция программы с шаблонами (зависимые имена, инстанцирование (конкретизация) шаблона), параметр шаблона для задания области видимости, использование typename внутри шаблона, шаблон в качестве параметра шаблона, специализация шаблонов.
- (14/10/2009 09/10/201316/10/2013). Шаблоны: специализация шаблонов, паттерны с traits (идея с использованием typedef для задания разным типам одинаковых псевдонимов) и policy, псевдорекурсия при наследовании от шаблонного класса без типо-зависимых элементов, метапрограммирование на этапе компиляции, функции-друзья шаблонные/нешаблонные.
- (21/10/2009). Немного о vector из STL: size, capacity, reserve и пр. Потоковый ввод-вывод: общее устройство, флаги форматирования, форматированный вывод, манипуляторы.
- (28/10/2009). Потоковый ввод-вывод: создание своих манипуляторов, fstream (режимы открытия, ошибочные состояния, getline, get, копирование файлов: посимвольное, построковое, поблочное, через streambuf и rdbuf()), stringstream (в частности, разбор строки на слова). Домашнее задание - разбор файл с табличными данными.
- (11/11/2009 13/11/2013). STL: общая структура, обзор контейнеров с трудоемкостью операций, иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки, итераторы для потоков ввода-вывода. Общая структура алгоритмов STL (умение самостоятельно написать реализацию алгоритма на примере copy и transform).
- (18/11/2009). STL: продолжение про алгоритмы на примере replace, replace_if, replace_copy, replace_copy_if. Также - алгоритм типа remove (принцип неудаления элементов после remove, разница между last и end). Функциональные объекты, стандартные функц.объекты из <functional>. Суммирование элементов контейнера с помощью for_each. Алгоритмы работы с числовыми последовательностями (accumulate, inner_product, partial_sum), алгоритмы для работы с множествами (объединение, пересечение и пр.)
- (25/11/2009 20/11/2013). STL: адаптеры стек, очередь, очередь с приоритетами; ассоциативные контейнеры set, multiset, map, multimap. Алгоритмы перестановки, поиска, сортировки и пр.: из книги Эккеля manipulations.cpp, SearchReplace.cpp, Nstring.h
- (02/12/2009). STL: Алгоритмы сравнения, бин.поиска, сортировки, удаления и пр. Контейнеры bitset, valarray. Разное: limits, complex.
Результаты посещения занятий
23.09 | 30.09 | 07.10 | 14.10 | 21.10 | 28.10 | 11.11 | 18.11 | 25.11 | 02.12 | 09.12 | 16.12 (???) | 23.12 (???) | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1. Сенов Михаил | + | + | + | - | + | + | + | - | - | - | - | ||
2. Логинов Андрей | + | + | + | + | + | + | + | + | + | + | + | ||
3. Айнабеков Захар | + | + | + | + | + | + | + | + | + | + | + | ||
4. Дядичкин Михаил | + | + | + | + | + | +. | + | + | + | + | + | ||
5. Григорьев Дмитрий | + | + | + | + | + | + | + | + | + | + | + | ||
6. Веселова Влада | + | + | + | - | + | - | - | - | - | - | - | ||
7. Глушков Игорь | + | + | + | + | + | + | + | +. | +. | + | + |
Результаты сдачи заданий и домашек
Варианты задания:
- Покоординатный спуск
- Градиентный спуск (производные аналитически)
- Градиентный спуск (производные численно)
- Сопряженные градиенты Fletcher-Reeves
- Сопряженные градиенты Polak-Ribiere
- Ньютон (поиск по направлению, производные аналитически)
- Ньютон (поиск по направлению, производные численно)
- Nelder-Mead (метод деформируемого многогранника)
Вариант | Консольная опт. 1 (14 окт.) | Консольная опт. 2 (18 ноя.) | Графическая опт. | Домашка (I/O) (2 дек.) | Домашка (словарь) | Зачёт | |
---|---|---|---|---|---|---|---|
1. Сенов Михаил | 4 | + | + | + | + | + | + |
2. Логинов Андрей | 8 | + | + | + | |||
3. Айнабеков Захар | 6 | + | + | + | |||
4. Дядичкин Михаил | 7 | + | + | ||||
5. Григорьев Дмитрий | 5 | + | + | + | |||
6. Веселова Влада | 3 | ||||||
7. Глушков Игорь | 2 | + |