C++ Lite 2021

Материал из CSC Wiki
Перейти к:навигация, поиск

Лекции

Преподаватели

Лектор: Илья Макаров

Контакты:

  • ilmaksad[at]gmail.com
  • Telegram: sadads1337

Ассистент: Александр Смаль

Контакты:

  • avsmal[at]gmail.com
  • Telegram: avsmal

Рабочая программа

  • Лекция 1: Введение.

Слайды

  • Лекция 2: Переменные, ссылки, С++ массивы.

Слайды

  • Лекция 3: Классы и структуры данных.

Слайды

  • Лекция 4: Работа с динамической памятью.

Слайды

  • Лекция 5: Наследование.

Слайды

  • Лекция 6: Перегрузка операторов.

Слайды

  • Лекция 7: Шаблоны.

Слайды

  • Лекция 8: Perfect forwarding. Контейнеры.

Слайды

  • Лекция 9: Итераторы. Исключения.

Слайды

  • Лекция 10: Многопоточное программирование.

Слайды

  • Лекция 11: TBD.

TBD

  • Лекция 12: TBD.

TBD

Онлайн-ресуры

Полезные книги

  • Б. Страуструп "Язык программирования С++"
  • С. Майерс "Эффективный и современный С++"
  • N. M. Josuttis "C++17 - The Complete Guide"
  • Д. Грегор "Шаблоны C++. Справочник разработчика"
  • А. Александреску "Современное проектирование на С++: Обобщенное программирование и прикладные шаблоны проектирования"

Практика

Таблица с результатами: тык

Полезные ссылки

Домашние задания

Общие замечания:

1. Операции над матрицами.

Текст задания

Тесты

Чтобы запустить smoke test потребуется POSIX-совместимый shell с awk (или gawk):

  • В GNU/Linux это практически любой shell.
  • В Windows можно поставить Cygwin, или отдельно bash и gawk из проекта Gnu Win32 (http://gnuwin32.sourceforge.net/), работу скрипта в Windows я не тестировал, прошу сообщать о проблемах, если они возникнут.
  • В MacOS скрипт должен работать также, как в GNU/Linux, но это не протестировано.

Если ставить или разбираться совсем не охота, то можно посмотреть на текст smoke_test.sh и прочитать там примеры запуска решения и ожидаемые результаты.


Для запуска smoke test в GNU/Linux:

  • Соберите ваше решение. Определите расположение исполняемого файла, пусть это будет /home/user/ha1/matrices.
  • Распакуйте прилагаемый архив.
  • Перейдите в директорию, внутри которой находятся распакованные файлы.
  • Установите права на запуск для файла smoke_test.sh. Команда: chmod +x smoke_test.sh
  • Запустите smoke_test.sh, указав в качестве первого аргумента путь до выполняемого файла вашего решения: ./smoke_test.sh /home/user/ha1/matrices
  • В smoke_test.sh проверяется как запуск с корректными аргументами, так и с некорректными. При этом в случае ошибок проверяется, что код выхода программы ненулевой и какая-то ошибка выведена в поток ошибок, в соответствии с условиями задачи.
  • Если вы используете GNU/Linux, рекомендуется установить Valgrind, и включить его использование в скрипте, раскомментировав специально отмеченную строку в smoke_test.sh.

2. Фильтр Гаусса

Текст задания

blur.zip

Чтобы запустить генерацию изображений потребуется python3 и библиотека opencv2.

Запускать генерацию тестовых изображений можно:

  • с помощью bash-скрипта, который находится в корне директории blur;
  • напрямую с помощью интерпретатора python3.

Для сравнения изображений удобно:

  • использовать любой графический редактор, который позволяет вычислить попиксельную разницу между изображениями (например, GIMP);
  • или специализированными библиотеками/консольными утилитами (например, ImageMagick).

Перед тем как сдавать вашу работу убедитесь, что:

  • Корректно читаете файлы и обрабатываете ошибки в случае их отсутствия.
  • Ваш код компилируется с максимальным уровнем предупреждений (W4 для компилятора MSVC и -Wall -Wextra -Werror -pedantic для GCC/Clang/Apple-Clang).
  • В вашем коде отсутствуют утечки памяти. Для проверки можно воспользоваться leak/memory санитайзером (флаг -fsanitize=leak/memory для GCC/Clang).
  • Вы следуете всем рекомендациям, которые описаны в тексте домашней работы.

3. TBD

TBD