С++, 422 гр., спец. СМ
“Программирование для решения вероятностных задач” и Практикум по СПП
Место и время проведения: среда, третья (ауд. …) и четверг, вторая (ауд. 2408) пары.
Преподаватель: Голяндина Нина Эдуардовна
(По созданию сайта на 2 паре по четвергам в сентябре занятия ведет Коробейников А.И.)
Задание на семестр состоит из трех частей.
Сайт¶
Для обучения в режиме on-line удобно использовать этот сайт: http://www.w3schools.com/.
Нам оттуда понадобится: HTML, XHTML, CSS, JavaScript, HTML DOM, DHTML. (Одно из достоинство XHTML в том, что он имеет строгие правила (согласно требованиям XML), а потому, в частности, допускает проверку валидности кода.)
Сайт удобен тем, что можно разбираться с примерами в режиме Try-it-yourself, когда перед вами два окошка, в одном текст примера, в другом результат.
HTML Editors¶
Нужно делать домашнюю страничку в текстовом (не WYSIWYG - What You See Is What You Get) редакторе. Хороший HTML-редактор имеет посветку ключевых слов, должен помогать форматировать текст, проверять его на соответствие стандарту и отсутствие ошибок (имеет встроенный валидатор TIDy). Удобно, когда можно теги не набирать вручную и атрибуты задавать через форму. Удобно, когда есть редактор таблицы стилей и редактор для отладки JavaScript. Но такого идеального бесплатного редактора, наверно, не найти.
Вот варианты:
Notepad++ - “выбор большинства”, установлен в компьютерных классах.
PSpad - редактор общего профиля, имеет встроенную валидацию, поддерживается.
HTML-Kit 292 - редактор со вставкой тегов через форму, имеет валидацию (чтобы tidy (проверка синтактиса) правильно воспринимала русские буквы, нужно в Preferences заменить кодировку Default на Raw), перестал быть бесплатным после 2002 года, поэтому версия 292 не поддерживается, но пока распространяется.
Aptana Studio - open source, среда для веб-разработки, основанная на Eclipse.
Примеры¶
Пара примеров
С фреймом - неправильный, но самый простой вариант.
С таблицей - вариант получше, но меню повторяется в каждом файле.
Немного JavaScript¶
Программа для поиска экстремума функции¶
Красивые примеры программ прошлых лет. Еще один
Комментарии к стилю программирования
Минимальные требования к программе с MFC
Примеры на combo-box и графику VS2010 Примеры на combo-box и графику VS2013
Список литературы с описанием методов поиска экстремумов
Задание по STL¶
STL - это Standard Template Library.
Задание: сделать класс для хранения табличных данных, для него реализовать чтение из файла с использование библиотеки iostream, включая stringstream. К объекту Данные применить разнообразные алгоритмы из STL, которые делают какие-то осмысленные статистические вещи, сбор статистики, упорядочивание, нахождение квантилей, … Нужно применить минимум 5 разных алгоритмов из STL, вызвав их не менее 10 раз. Использование функциональных объектов обязательно.
Список алгоритмов можно найти, например, здесь: http://ru.cppreference.com/w/cpp/algorithm
C++ advanced¶
Примерные темы¶
- Множественное наследование.
- RTTI, dynamic_cast
- Исключения
- string
- Потоки (Библиотека iostream)
- Шаблоны
- STL
Литература¶
Основная книга номер 3, английский вариант можно найти on-line на сайте автора.
- Бьерн Страуструп. Язык программирования
Сplusplus. - Эккель Б. Философия
Сplusplus. Введение в стандартныйСplusplus. - Эккель Б. Философия
Сplusplus. Практическое программирование.
Занятия по C++ advanced¶
- 24/09/2014. Множественное наследование. Виртуальный базовый класс. Приведение типа static_cast.
- 01/10/2014. Отступление про R-value reference &&, move, конструкторы и оператор= с перемещением. Namespace.
- 08/10/2014. Приведение типа const_cast (заодно про mutable, volatile), reinterpret_cast, dynamic_cast. RTTI (typeid, dynamic_cast), начало.
- 15/10/2014. RTTI (typeid, dynamic_cast): пример c shape. Vector с move и без move. Начало про исключения. (assert)
- 16/10/2014. Исключения (как выбрасывать, как ловить, переброска и пр.). Упражнение.
- 22/10/2014. set_terminate. Исключения в конструкторах, “голые” и “одетые” указатели, идиома RAII, unique_ptr, shared_ptr, weak_ptr. Стандартные классы исключений exception и пр.
- 29/10/2014. Строки string. Использование for(auto: a), свой класс, позволяющий это делать. Шаблоны: компиляция программы с шаблонами (инстанцирование шаблона), шаблон шаблонного класса вместе с определением функций. Пример шаблонного массива фиксированной длины (сами писали), способ реализации и требования к типу. Пример с “ленивым” массивом (holder).
- 05/11/2014. Использование ::. Шаблоны: компиляция программы с шаблонами (зависимые имена, инстанцирование шаблона). Параметр шаблона для задания области видимости, использование typename внутри шаблона, шаблон в качестве параметра шаблона (этого не было). Паттерны с traits (bear_corner).
- 06/11/2014. Приведение типов для шаблонных классов. Специализация шаблонов (пример Sortable). Паттерны с traits. Пример с разной функцией copy для Matrix. (Переопределение операций в шаблонных классах (пример box, шаблонное и нешаблонное) - только упомянула про проблему).
- 12/11/2014. Шаблоны: метапрограммирование на этапе компиляции (static assert для ошибок на этапе компиляции - не было. Шаблонная реализация быстрых операций с матрицами. Шаблонные функции, выведение параметров шаблона, специализация - не было). Потоковый ввод-вывод: общее устройство, флаги форматирования, форматированный вывод, манипуляторы. Cоздание своих манипуляторов. fstream (режимы открытия, ошибочные состояния, getline, get, копирование файлов: посимвольное, построковое, поблочное, через streambuf и rdbuf()).
- 19/11/2014. Потоковый ввод-вывод: stringstream (ostringstream, istringstream, чтение файла в массив строк). Домашнее задание - разбор файл с табличными данными. STL: обзор контейнеров с трудоемкостью операций. (Моделирование распределений в Cplusplus 11 - самостоятельно со ссылкой на wiki). STL: иерархия концепций итераторов. Общая структура алгоритмов STL (умение самостоятельно написать реализацию алгоритма на примере copy).
- 20/11/2014. STL: итераторы прямой и обратный, итераторы вставки, итераторы для потоков ввода-вывода. .
Занятия по C++ advanced прошлого года¶
- 06/11/2013. STL: иерархия концепций итераторов, итераторы прямой и обратный, итераторы вставки, итераторы для потоков ввода-вывода. Общая структура алгоритмов STL (умение самостоятельно написать реализацию алгоритма на примере copy и transform). Функциональные объекты, использование for_each для суммирования.
- 13/11/2013. Функциональные объекты (использование лямбда-функций). Модифицирующие и немодифицирующие алгоритмы. for_each vs transform. Функциональные объекты: стандартные функц.объекты из
. STL: читаем , алгоритмы типа replace (replace_if, replace_copy, replace_copy_if), find, transform, generate. - 13/11/2013. STL: алгоритмы типа inner_product (самост.реализация). STL: алгоритмы поиска, сортировки, манипуляций. Операции с множествами.
- 20/11/2013. STL: адаптеры стек, очередь, очередь с приоритетами; ассоциативные контейнеры set, multiset, map, multimap. Контейнеры bitset, valarray. Разное: limits, complex.
Материалы в виде архивов к занятиям в прошлые годы
- (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). Функциональные объекты, стандартные функц.объекты из
. Суммирование элементов контейнера с помощью 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.
Результаты посещений занятий¶
| 24.09 | 01.10 | 06.10 | 15,16.10 | 22.10 | 29.10 | 05.11 | 06.11 | 12.11 | 19,20.11 | зачет | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Абрамова | + | + | + | + | + | - | + | + | + | + | |||
| Бзикадзе | + | + | + | + | + | + | - | + | + | + | |||
| Ельник | + | + | + | + | + | + | + | + | + | + | |||
| Иванова Е. | + | + | + | + | + | + | + | + | + | + | |||
| Иванова П. | + | + | + | + | + | + | + | + | + | + | |||
| Корчемкин | + | + | - | - | - | - | - | - | - | - | |||
| Чёрный | + | + | + | + | + | + | + | + | + | + |