Перейти к содержанию

422 гр., спец. СМ. С++

“Программирование для решения вероятностных задач”
Место и время проведения: четверг, третья пара, ауд. 2410
Преподаватель: Звонарев Никита Константинович

Критерий получения зачёта

  1. “Большая” программа (оптимизация функций), и в графическом, и в консольном исполнении
  2. Плюсики за все домашки
  3. Плюсики за посещения пар (сданный тест/вопрос за пропуск)

Программа для поиска экстремума функции

09.10.23 – Обновил слайды!

Слайды с 1 пары

Слайды со 2 пары

Слайды с 3 пары

Задание на семестр <- здесь дано старое задание в полном виде. Нас интересует п. 2.

Красивые примеры программ прошлых лет. Еще один

Комментарии к стилю программирования

Минимальные требования к программе с MFC

Примеры на combo-box и графику VS2010 Примеры на combo-box и графику VS2013

Список литературы с описанием методов поиска экстремумов

Добавляется очень хорошая книга Nocedal, Jorge, Wright, S. Numerical Optimization.

C++ advanced

Примерные темы

  • Шаблоны
  • Исключения
  • STL
  • Немного Qt
  • Современный (насколько?) стандарт: ranges, типобезопасные юнионы (std::variant) и std::optional мэйби?
  • ???

Литература

Основная книга номер 3, ее можно найти онлайн.

  1. Бьерн Страуструп. Язык программирования C++.
  2. Эккель Б. Философия C++. Введение в стандартный C++.
  3. Эккель Б. Философия C++. Практическое программирование.

Занятия по C++ advanced

2023 год ([x] — x пар потрачено на тему)

  - 05/10/2023 [1]. Множественное наследование. Виртуальный базовый класс. «Виртуальный конструктор». [Слайды](../../assets/study/fall2020/multiple_inheritance.pdf)
  - 12/10/2023 [1]. RTTI (''typeid'', ''dynamic_cast''), приведение типов в стиле C++. Исключения: начало. [Слайды](../../assets/study/fall2020/multiple_inheritance.pdf)
  - 19/10/2023 [0.5]. Исключения: семантика, исключения в конструкторе, stack unwinding, ''set_terminate'', ''noexcept'', стандартные исключения. [Слайды](../../assets/study/fall2020/exceptions.pdf)
  - 26/10/2023 [1]. Умные указатели: самодельные и стандартные. Напоминание про move semantics. [Слайды](../../assets/study/fall2020/exceptions.pdf)
  - 02/11/2023 [1]. Введение в шаблоны, конкретизация шаблонов, специализация шаблонов.
  - 09/11/2023 [2]. Паттерны с traits и policy, policy через SFINAE, type_traits. Метапрограммирование, вычисления на этапе компиляции через шаблоны/constexpr (C++ 11 и C++ 14). [Материалы к вычислениям на этапе компиляции](../../assets/study/fall2022/metaprog_print.pdf). Решение задач метапрограммирования на С++≤11.
  - 16/11/2023 [0.75]. STL: общая структура, обзор контейнеров с трудоемкостью операций.
  - 23/11/2023 [1]. Иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки. Итераторы для потоков ввода-вывода. Разбор примеров с итераторами. Алгоритм copy и умение его написать, основные алгоритмы из STL.  Для самостоятельного изучения: I/O в C++, манипуляторы, режимы открытия, stringstream. [Обещанные материалы к лекции](../../assets/study/fall2018/io_4_students.zip). Анонс домашки про чтение csv файла.
  - 30/11/2023 [1]. Обзор алгоритмов STL. Встроенные функторы, std::bind. Лямбды, лямбды как замыкания.
  - 07/12/2023 [1]. Немного про Qt. Примеры на set, map, анонс задания про словарь. [Обновленная PDF про Qt](../../assets/study/fall2022/qt.pdf)

Материалы в виде архивов к занятиям в прошлые годы (+прошлогодняя программа)

2022 год ([x] — x пар потрачено на тему)

  - 22/09/2022 [1]. Множественное наследование. Виртуальный базовый класс. «Виртуальный конструктор». [Слайды](../../assets/study/fall2020/multiple_inheritance.pdf)
  - 29/09/2022 [1]. RTTI (''typeid'', ''dynamic_cast''), приведение типов в стиле C++. Исключения: начало. [Слайды](../../assets/study/fall2020/multiple_inheritance.pdf)
  - 06/10/2022 [1]. Исключения: семантика, исключения в конструкторе, stack unwinding, ''set_terminate'', ''noexcept'', стандартные исключения. [Слайды](../../assets/study/fall2020/exceptions.pdf)
  - 13/10/2022 [0.5]. Умные указатели: самодельные и стандартные. Напоминание про move semantics. [Слайды](../../assets/study/fall2020/exceptions.pdf)
  - 20/10/2022 [1]. Введение в шаблоны, конкретизация шаблонов, специализация шаблонов.
  - 27/10/2022 [1]. Паттерны с traits и policy, policy через SFINAE, type_traits. Метапрограммирование, вычисления на этапе компиляции через шаблоны/constexpr (C++ 11 и C++ 14). [Материалы к вычислениям на этапе компиляции](../../assets/study/fall2022/metaprog_print.pdf).
  - 03/11/2022 [1]. Решение задач метапрограммирования на С++≤11.
  - 10/11/2022 [0.75]. STL: общая структура, обзор контейнеров с трудоемкостью операций.
  - 17/11/2022 [1]. Иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки. Итераторы для потоков ввода-вывода. Разбор примеров с итераторами. Алгоритм copy и умение его написать, основные алгоритмы из STL.
  - 24/11/2022 [1]. Обзор алгоритмов STL. Встроенные функторы, std::bind. Анонс домашки про чтение csv файла. Для самостоятельного изучения: I/O в C++, манипуляторы, режимы открытия, stringstream. [Обещанные материалы к лекции](../../assets/study/fall2018/io_4_students.zip)
  - 01/12/2022 [1]. Немного про Qt. Лямбды, лямбды как замыкания. Примеры на set, map, анонс задания про словарь. [Материалы лекции](../../assets/study/fall2020/qt_lambda_setmap.zip) [Обновленная PDF про Qt](../../assets/study/fall2022/qt.pdf)
  - 08/12/2022 [1]. Немного про QtCreator. Misc: bitset, valarray, complex, numeric_limits...

Совсем старые годы (материалы от НЭ):

  1. (08/09/2010). Множественное наследование. Виртуальный базовый класс. “Виртуальные конструкторы”.
  2. (16/09/2009). RTTI (typeid, dynamic_cast), вспомнили static_cast, const_cast, reinterpret_cast. Вспомнили assert. Исключения - начало.
  3. (23/09/2009). Исключения (как выбрасывать, как ловить), исключения в конструкторах, “голые” указатели, set_unexpected, set_terminate, auto_ptr.
  4. (25/09/2013). cleanup, “голые” указатели, auto_ptr, unique_ptr, shared_ptr, weak_ptr.
  5. (30/09/2009). Окончание темы про исключения (“одетые” указатели, стандартные классы исключений). Строки (string). Шаблоны - начало.
  6. (07/10/2009). Шаблоны: компиляция программы с шаблонами (зависимые имена, инстанцирование (конкретизация) шаблона), параметр шаблона для задания области видимости, использование typename внутри шаблона, шаблон в качестве параметра шаблона, специализация шаблонов.
  7. (14/10/2009 09/10/201316/10/2013). Шаблоны: специализация шаблонов, паттерны с traits (идея с использованием typedef для задания разным типам одинаковых псевдонимов) и policy, псевдорекурсия при наследовании от шаблонного класса без типо-зависимых элементов, метапрограммирование на этапе компиляции, функции-друзья шаблонные/нешаблонные.
  8. (21/10/2009). Немного о vector из STL: size, capacity, reserve и пр. Потоковый ввод-вывод: общее устройство, флаги форматирования, форматированный вывод, манипуляторы.
  9. (28/10/2009). Потоковый ввод-вывод: создание своих манипуляторов, fstream (режимы открытия, ошибочные состояния, getline, get, копирование файлов: посимвольное, построковое, поблочное, через streambuf и rdbuf()), stringstream (в частности, разбор строки на слова). Домашнее задание - разбор файл с табличными данными.
  10. (11/11/2009 13/11/2013). STL: общая структура, обзор контейнеров с трудоемкостью операций, иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки, итераторы для потоков ввода-вывода. Общая структура алгоритмов STL (умение самостоятельно написать реализацию алгоритма на примере copy и transform).
  11. (18/11/2009). STL: продолжение про алгоритмы на примере replace, replace_if, replace_copy, replace_copy_if. Также - алгоритм типа remove (принцип неудаления элементов после remove, разница между last и end). Функциональные объекты, стандартные функц.объекты из . Суммирование элементов контейнера с помощью for_each. Алгоритмы работы с числовыми последовательностями (accumulate, inner_product, partial_sum), алгоритмы для работы с множествами (объединение, пересечение и пр.)
  12. (25/11/2009 20/11/2013). STL: адаптеры стек, очередь, очередь с приоритетами; ассоциативные контейнеры set, multiset, map, multimap. Алгоритмы перестановки, поиска, сортировки и пр.: из книги Эккеля manipulations.cpp, SearchReplace.cpp, Nstring.h
  13. (02/12/2009). STL: Алгоритмы сравнения, бин.поиска, сортировки, удаления и пр. Контейнеры bitset, valarray. Разное: limits, complex.

Результаты посещения занятий

05.10 12.10 19.10 26.10 02.11 09.11 16.11 23.11 30.11 07.12 14.12 21.12 (???)
1. Арина Филатова + + + + + + + + + +
2. Яна Салова + + + + + + + + + +
3. Дарья Булгакова + + + + + + + + + +
4. Михаил Олейник + + + + + + + + + +
5. Егор Потешкин + + + + + + + + + +
6. Никита Хромов + + + + + + + + + +
7. Яков Подлеснов + + + + + + + + + +
8. Михаил Киселев + + + + + + + + + +

Результаты сдачи заданий и домашек

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

  1. Покоординатный спуск
  2. Градиентный спуск (производные аналитически)
  3. Градиентный спуск (производные численно)
  4. Сопряженные градиенты Fletcher-Reeves
  5. Сопряженные градиенты Polak-Ribiere
  6. Ньютон (поиск по направлению, производные численно)
  7. Ньютон (backtracking, производные численно)
  8. Nelder-Mead (метод деформируемого многогранника)
Вариант Консольная опт. 1 (19 окт.) Консольная опт. 2 (16 ноя.) Графическая опт. Домашка (I/O) Домашка (словарь) Зачёт
1. Арина Филатова 7 + + +
2. Яна Салова 2 + + +
3. Дарья Булгакова 1 + + + + + +
4. Михаил Олейник 5 + + + + + +
5. Егор Потешкин 6 + + + + + +
6. Никита Хромов 4 + + + + + +
7. Яков Подлеснов 3 + + + + + +
8. Михаил Киселев 8 + + + + + +