Программирование

244-2015 группа

Тимофей Брыксин

Студент TODO №1 №2 №3 №4 №5 Тест 1 №6 №7 №8 Тест 2
1 2 1 2 3 1 2 1 2 1 2 3
Афлетунова Юлия
Жибарев Егор
Кириллов Илья
Краснорядцева Анастасия
Машарский Стас
Плотников Александр
Правдюков Сергей
Смирнов Денис
Чудов Александр

Задачи

Тест 2. 20.05.16
  1. Зачёт
Домашняя работа 8. 05.05.16
Сетевое программирование (презентация)
БД и СУБД (презентация)
  1. Реализовать два приложения, которые позволяют обмениваться друг с другом сообщениями (могут быть полезны стандартные примеры Qt Fortune Server Example и Fortune Client Example). Приложение server запускается и ждет входящих соединений на определенный порт, приложение client при запуске принимает номер порта сервера и соединяется с ним. Далее строки текста, вводимые в одном приложении, должны отображаться в другом. Графический интерфейс для приложений не обязателен.

  2. Реализовать приложение с графическим интерфейсом, отображающее последние цитаты с bash.im. В случае разбора главной страницы могут быть полезны классы QWebPage, QWebElement и другие из модуля QtWebKit; в случае получения цитат из RSS (http://bash.im/rss/) могут быть полезны классы QDomDocument, QDomElement и другие из модуля QtXml. Для каждой цитаты должны быть кнопки голосования с отправкой запросов на сайт. Внешний вид может быть, например, таким:<br><img src="http://i.imgur.com/N68lyXF.png">

Домашняя работа 7. 05.05.16
Отладка (конспект)
Отладка (презентация)
  1. Написать класс Bag, хранящий мультимножество (множество, в котором элементы могут повторяться). Класс должен быть асимптотически эффективным по времени и по памяти (например, использовать самобалансирующиеся деревья для внутреннего представления).

  2. Реализовать шаблонный класс Vector с методами (а где можно, операторами) сложения, вычитания, скалярного умножения и проверки на нулевой вектор. Вектор n-мерный. В классе должен быть реализован конструктор копирования.

  3. Разработать приложение, позволяющие пользователю играть с самим собой в крестики-нолики. На экранной форме должно быть девять кнопок, расположенных в три столбца и три строки. При первоначальном нажатии на любую из кнопок, на ней появляется знак «Х». При дальнейшем нажатии на другую кнопку, на ней появляется знак «O». Повторное нажатие на кнопку не должно менять ее знака. Программа должна быть реализована таким образом, чтобы была возможность в настройках приложения или константой в коде быстро поменять размер игрового поля (количество кнопок).

Домашняя работа 6. 05.05.16
Исключения (конспект)
  1. Напишите программу, которая демонстрирует, что все деструкторы объектов, созданных в блоке, вызываются прежде, чем в этом блоке сгенерируется исключение.

  2. На основе класса список из прошлой домашней работы реализовать класс UniqueList, который не содержит повторяющихся значений. Реализовать классы исключений, которые генерируются при попытке добавления в такой список уже существующего или при попытке удаления несуществующего элемента.

  3. Реализовать шаблонный класс умного указателя SharedPointer, реализованного подсчетом ссылок на выделенную память (аналог std::shared_ptr). Помимо прочего должен быть реализован конструктор копирования и оператор присваивания. Показать несколько примеров использования подобного класса.

Тест 1. 25.03.16
Домашняя работа 5. 24.03.16
Конспект про шаблоны
Презентация про шаблоны
Умные указатели
  1. Разработать и реализовать иерархию классов, описывающих дерево разбора арифметического выражения. Используя их, реализовать класс, вычисляющий значение выражения по дереву. Классы, представляющие операнды и операторы, должны сами уметь себя вычислять и печатать. Дерево разбора хранится в файле в виде (<операция> <операнд1> <операнд2>), где <операнд1> и <операнд2> сами могут быть деревьями, либо числами. Например, выражение (1 + 1) * 2 представляется в виде (* (+ 1 1) 2). Должны поддерживаться операции +, -, , / и целые числа в качестве аргументов. Требуется построить дерево в явном виде, распечатать его (не обязательно так же, как во входном файле) и посчитать значение выражения обходом дерева. Можно считать, что входной файл корректен. Пример — по входному файлу ( (+ 1 1) 2) может печататься ( * ( + 1 1 ) 2 ) и выводиться 4.

  2. Создать шаблонный класс, реализующий АТД "Множество", обладающий операциями добавления, удаления элемента, проверки на принадлежность множеству, пересечения и объединения множеств.

Домашняя работа 4. 06.03.16
Конспект
Презентация
  1. Реализовать класс для работы с хеш-таблицей (на списках). Общение с пользователем должно происходит в интерактивном режиме: добавить значение в хеш-таблицу, удалить значение из хеш-таблицы, поиск значения в хеш-таблице, показать статистику по хеш-таблице (общее число ячеек, load factor, число конфликтов, максимальная длина списка в конфликтных ячейках и т.п.), выбрать хеш-функцию для подсчета хеша (из заранее заданных в коде). Смена хэш-функции должна происходить во время работы программы, в класс используемая хеш-функция должна передаваться из клиентского кода.

  2. Написать тесты ко всем предыдущим домашним задачам (к классам, отвечающим за GUI, тесты можно не писать).

Домашняя работа 3. 26.02.16
Конспект
  1. Создать графическое приложение с двумя виджетами — слайдером и прогрессбаром. Сделать так, чтобы при передвижении слайдера значение прогрессбара изменялось соответствующе.

  2. Релизовать программу-калькулятор со <a href="http://i.imgur.com/y3VDvTQ.jpg">следующим графическим интерфейсом</a> (аргументы — QSpinBox, операция — QComboBox, значение — QLineEdit, при изменении значения аргумента или операции результат пересчитывается автоматически).

  3. Реализовать продвинутый кнопочный калькулятор по аналогии со <a href="https://upload.wikimedia.org/wikipedia/ru/d/d7/Calc-Standard.PNG">стандартными калькулятором Windows</a> или <a href="http://screenshots.ubuntu.com/screenshots/k/kcalc/9633_large.png">KCalc</a> (для решения задачи использовать классы QGridLayout и QSignalMapper, взаимное расположение виджетов может быть другим).

Домашняя работа 2. 20.02.16
ООП и C++, конспект
ООП и C++, презентация
SOLID
  1. Создать интерфейс сортировщика, принимающего массив элементов и выполняющего над ним сортировку. На его основе создать несколько классов, реализующих произвольные (разные) алгоритмы сортировки.

  2. Дан массив размерностью N x N, N - нечетное число. Вывести элементы массива при обходе его по спирали, начиная с центра. Для решения задачи разработать интерфейс Выводилка с методом вывести(), реализовать на его основе два класса, осуществляющих либо вывод на консоль либо в файл. Написать программу, которая по желанию пользователя выбирает реализацию Выводилки и выводит массив.

  3. Реализовать интерфейс ListsComparator для объектов классов LinkedList, сравнивающих 2 объекта по количеству элементов, содержащихся в списке. Реализовать на его основе класс SortedSet, представляющий АТД "Отсортированное множество".

Домашняя работа 1. 15.02.16
Конспект пары
Презентация
  1. Разработать интерфейс, представляющий структуру данных "связный список". Реализовать этот список двумя разными способами (односвязный/двусвязный, на массиве/на указателях и т.п.) на основе полученного интерфейса.

  2. Разработать интерфейс, представляющий структуру данных "стек". На его основе реализовать стек двумя разными способами. Реализовать стековый калькулятор для подсчета арифметических выражений.

© 2014-2018 HwProj