Основы и методология программирования 2016/2017/168-2

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск

Общая информация

Репозиторий с кодом с семинаров: https://github.com/akashin/HSE_CPP_Seminars

Почта: kashin.andrej@gmail.com

Семинары

02.11.2016

Linux

How to install Linux?

Useful Unix tools:

  • Navigation: ls, cd,
  • Work with file system: cp, mv, rm
  • Work with files: cat, head, tail, sort, uniq, wc
  • Interaction between programs: pipes, redirection, <, >, >>, stdin, stdout, stderr
  • Text editors and IDEs: vim, Atom, CLion

Get C++ compiler:

  • OSX: brew install homebrew/versions/llvm38
  • Ubuntu: sudo apt-get install clang-3.8

Copiling code:

  • Compilers: clang++, g++
  • Useful flags: -Wall -Wextra -Wconvertion

Running code:

  • ./a.out < input.txt

Installing cpplint:

Zsh

Замена стандартного интерпретатора Bash, гибкий в настройке, поддерживает много полезных плагинов

Vim
Сайты для изучения UNIX инструментов

C++

Ссылка на контест: https://official.contest.yandex.ru/contest/3154/problems/

C++ books


03.11.2016

Материалы семинара: https://github.com/akashin/HSE_CPP_Seminars/tree/master/03.11.2016

Fun facts


09.11.2016

Материалы семинара: https://github.com/akashin/HSE_CPP_Seminars/tree/master/09.11.2016

23.11.2016

Разбор контрольной: https://github.com/akashin/HSE_CPP_Seminars/tree/master/Quiz/17.11.2016/1

На семинаре мы реализовали:

  • rotate
  • merge
  • partitiion

Бонусное задание: почитать как работает stable_partition без дополнительной памяти.

Бонусное задание: придумать как имитировать erase для priority_queue используя unordered_set.

30.11.2016

Материалы семинара: https://github.com/akashin/HSE_CPP_Seminars/tree/master/30.11.2016

1.12.2016

Контрольная.

Решения первого варианта: https://github.com/akashin/HSE_CPP_Seminars/tree/master/Quiz/01.12.2016/2

7.12.2016

Материалы семинара: https://github.com/akashin/HSE_CPP_Seminars/tree/master/07.12.2016

  • Обсудили задачи со второй контрольной
  • Полезный инструмент для работы с построчным считыванием, std::stringstream: http://doc.bccnsoft.com/docs/cppreference_en/cppsstream/all.html
  • Пример того, как обойти проблему одновременного применения cin и getline: http://stackoverflow.com/a/164694
  • Решили задачу про декодирование UTF-8
  • Поговорили про переопределение операторов внутри класса vs снаружи класса
  • Написали класс Bitset с методами set/get/count

Бонус:

  • Реализовать оператор [] для Bitset'а
  • Посчитать количество единичных бит в числе с помощью арифметических операций, число которых пропорционально количеству единичных бит

14.12.2016

  • Обсудили стандартные ошибки на ревью и критерии зачета.

Список наиболее частых ошибок: https://github.com/akashin/HSE_CPP_Seminars/blob/master/Review.md

  • Обсудили задачу по реализации dense Полинома из домашнего задания и реализовали большинство методов (кроме /, %, &, gcd).