<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_2016%2F2017%2F167-1</id>
	<title>Основы и методология программирования 2016/2017/167-1 - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_2016%2F2017%2F167-1"/>
	<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_2016/2017/167-1&amp;action=history"/>
	<updated>2026-06-07T04:05:39Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wikicshse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_2016/2017/167-1&amp;diff=1532&amp;oldid=prev</id>
		<title>imported&gt;Aumnov: /* 07.12 */</title>
		<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D0%B8_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_2016/2017/167-1&amp;diff=1532&amp;oldid=prev"/>
		<updated>2017-03-14T22:51:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;07.12&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Общая информация ==&lt;br /&gt;
&lt;br /&gt;
Время для консультаций (по предварительной договоренности):&lt;br /&gt;
* Среда 13:30 - 16:00.&lt;br /&gt;
* Четверг 12:30 - 13:30, 15:00 - 16:00.&lt;br /&gt;
аудитория 623&lt;br /&gt;
&lt;br /&gt;
Почта: alexeyum@gmail.com&lt;br /&gt;
&lt;br /&gt;
== Семинары ==&lt;br /&gt;
&lt;br /&gt;
Код программ мы пишем в соответствии со [http://wiki.cs.hse.ru/%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BD%D1%8F%D1%82%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%BA%D1%83%D1%80%D1%81%D1%83_%D0%9E%D0%B8%D0%9C%D0%9F/C%2B%2B_check стилем]&lt;br /&gt;
&lt;br /&gt;
=== 02.11 ===&lt;br /&gt;
&lt;br /&gt;
* [http://linuxcommand.org/index.php Туториал для работы с терминалом linux]&lt;br /&gt;
* [http://overthewire.org/wargames/bandit/bandit0.html Освоение терминала в игровой форме] (более подробно, чем нужно на курсе)&lt;br /&gt;
* [https://official.contest.yandex.ru/contest/3153/standings/ Контест на первые темы по C++]&lt;br /&gt;
&lt;br /&gt;
=== 05.11 - 11.11 ===&lt;br /&gt;
&lt;br /&gt;
Вот несколько часто используемых ситуаций при работе с программами&lt;br /&gt;
&lt;br /&gt;
* Компиляция с сохранением результата в заданный файл&lt;br /&gt;
$ clang++ mycode.cpp -o myoutput&lt;br /&gt;
&lt;br /&gt;
* Компиляция для стандарта C++11&lt;br /&gt;
$ clang++ mycode.cpp -std=c++11&lt;br /&gt;
&lt;br /&gt;
* Компиляция с оптимизацией&lt;br /&gt;
$ clang++ mycode.cpp -O3&lt;br /&gt;
&lt;br /&gt;
* Компиляция с сохранением информации для отладчика&lt;br /&gt;
$ clang++ mycode.cpp -g&lt;br /&gt;
&lt;br /&gt;
* Запускаем отладчик, потом в нем ставим брейкпоинт и запускаем программу&lt;br /&gt;
&lt;br /&gt;
$ gdb ./a.out&lt;br /&gt;
&lt;br /&gt;
&amp;gt; break 42&lt;br /&gt;
&lt;br /&gt;
&amp;gt; run&lt;br /&gt;
&lt;br /&gt;
* Перенаправляем вывод (stdout/cout) в output.txt, лог ошибок (stderr/cerr) в errorlog.txt и читаем ввод (stdin/cin) из input.txt&lt;br /&gt;
&lt;br /&gt;
$ ./a.out &amp;lt; input.txt &amp;gt; output.txt 2&amp;gt; errorlog.txt&lt;br /&gt;
&lt;br /&gt;
* Перенаправляем один из потоков &amp;quot;в корзину&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ ./a.out &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
=== 23.11 ===&lt;br /&gt;
&lt;br /&gt;
Страница с интерфейсами итераторов: http://www.cplusplus.com/reference/iterator/&lt;br /&gt;
&lt;br /&gt;
=== 25.11 ===&lt;br /&gt;
&lt;br /&gt;
До следующего семинара нужно отправить задачи I, P в Anytask (см. инструкцию на главной), иначе оценка за эти задачи будет 0. По результатам ревью оценка может быть снижена в зависимости от качества кода и скорости исправлений (штраф может быть до 25 баллов). В дальнейшем дедлайн отправки будет совпадать с дедлайном для контеста.&lt;br /&gt;
&lt;br /&gt;
Запуск программы с санитайзером valgrind:&lt;br /&gt;
&lt;br /&gt;
$ g++ main.cpp -g&lt;br /&gt;
&lt;br /&gt;
$ valgrind ./a.out&lt;br /&gt;
&lt;br /&gt;
=== 30.11 ===&lt;br /&gt;
&lt;br /&gt;
Стандартный срок исправлений ревью - 4 дня, пожалуйста следите за своими задачами (а лучше сделать себе уведомление на почту).&lt;br /&gt;
&lt;br /&gt;
=== 07.12 ===&lt;br /&gt;
&lt;br /&gt;
В AnyTask появились задачи из 4 и 5 контестов, их нужно туда отправить не позднее 09.12.&lt;br /&gt;
&lt;br /&gt;
=== 15.03 ===&lt;br /&gt;
&lt;br /&gt;
Задачи для подготовки к к/р:&lt;br /&gt;
&lt;br /&gt;
1. Переиндексацией массива будем называть следующую процедуру. Пусть есть массив&lt;br /&gt;
a[1], ... a[n] и набор индексов i[1], ... i[m]. Переиндексированный массив будет&lt;br /&gt;
состоять из элементов (b[1], ... b[m]) = (a[i[1]], ..., a[i[m]]). Напишите программу,&lt;br /&gt;
которая будет по индексу элемента в новом массиве определять его индекс в старом&lt;br /&gt;
массиве. Программа должна считывать с клавиатуры число n, индексы для переиндексации,&lt;br /&gt;
а также индекс нового элемента. Пользовательский ввод может быть некорректным, но&lt;br /&gt;
обрабатывать его нужно с помощью исключений: используйте vector.at() вместо vector.[]&lt;br /&gt;
и перехватывайте его исключения.&lt;br /&gt;
&lt;br /&gt;
2. Напишите иерархию классов для компьютерной игры (по мотивам одного из предыдущих&lt;br /&gt;
семинаров) и реализуйте для них функцию загрузки и функцию вывод информации на экран. &lt;br /&gt;
Вам нужно:&lt;br /&gt;
* Сделать иерархию из 3-х классов (родитель и два потомка).&lt;br /&gt;
* Определить в базовом классе функции загрузки и функции вывода данных на экран.&lt;br /&gt;
* Переопределить их по-разному в классах-наследниках.&lt;br /&gt;
* Сделать в одном из классов поле с опциональной инициализацией: при одних параметрах загрузки это поле создается, а при других - нет (не должен вызываться даже конструктор по умолчанию).&lt;br /&gt;
* Сделать функцию, которая загружает из файла набор объектов в вектор.&lt;br /&gt;
* Сделать функцию, которая получает вектор указателей на объекты и выводит информацию о всех на экран.&lt;/div&gt;</summary>
		<author><name>imported&gt;Aumnov</name></author>
	</entry>
</feed>