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

x44-2016 группа

Юрий Литвинов

Студент TODO №1 №2 №3 №4 №5 №6 Тест 1 №7 №8 №9 Тест 2
54 1 2 3 4 5 1 2 3 4 1 2 1 2 1 2 1 2 1 1 2 Доклады 2 1 1
Алексей Гирин 1
Бахметьев Владимир 1
Долгополова Мария 2
Емельянова Ирина 24
Зайнуллин Егор
Ольга Пушина 24
Петрова Екатерина 1
Сушенцев Денис 1

Задачи

Тест 2. 19.05.17
  1. Реализовать обобщённый метод пузырьковой сортировки. Метод должен принимать массив значений произвольного типа и объект-компаратор, позволяющий их сравнивать. Результатом работы метода должен быть массив, отсортированный в соответствии с порядком, заданным объектом-компаратором.
    Реализовать несколько тестов для тестирования значений различных типов.

Домашняя работа 9. 05.05.17
Презентация с пары
Конспект пары
  1. Нарисовать на UML диаграмму классов для игры "реверси", с несколькими видами "ботов", которые могли бы играть вместо человека. Диаграмма должна быть довольно подробным проектом системы. Реализовывать этот проект не нужно. Желательно пользоваться средствами визуального моделирования наподобие Visual Paradigm (https://www.visual-paradigm.com/download/community.jsp) (вообще, их куча, есть даже браузерные), присылать скриншоты с диаграммой или исходники (файлы .vpp в случае Visual Paradigm)

Домашняя работа 8. 28.04.17
Презентация с пары
Код для ревью, пример 1
Код для ревью, пример 2
Код для ревью, пример 3
Код для ревью, пример 4, tree.cs
Код для ревью, пример 4, node.cs
Код для ревью, пример 4, nodeOperand.cs
Код для ревью, пример 4, nodeOperation.cs
  1. Доклады
    • Обзор технологии WPF --- Алексей Гирин
    • Обзор технологии ASP.NET MVC --- Екатерина Петрова
    • Рефлексия и атрибуты
    • Обзор платформы .NET Core
    • Continuous Integration, AppVeyor

    К 12 мая. По каждому докладу надо обзор основных возможностей + небольшое демо (маленькое работающее приложение или что-то вроде)

  2. Заревьюить код https://github.com/qreal/qreal/blob/master/qrgui/plugins/pluginManager/sdfRenderer.h, https://github.com/qreal/qreal/blob/master/qrgui/plugins/pluginManager/sdfRenderer.cpp, написать замечания и выложить их на гитхаб

Домашняя работа 7. 14.04.17
Презентация с пары
Конспект пары
  1. Переделать список и стек на основе списка на генерики. Сделать списку энумератор, и чтобы можно было по нему ходить foreach.

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

Тест 1. 07.04.17
  1. Посчитать количество нулевых элементов в списке. Список должен быть generic-ом, вместе со списком в метод подсчёта передаётся объект, который знает, что понимается под "нулевой" для конкретного типа элементов в списке. Например, объект, реализующий интерфейс с методом bool isNull(Object o);

Домашняя работа 6. 01.04.17
Презентация с пары
Конспект пары
  1. Написать калькулятор с пользовательским интерфейсом (по примеру стандартного виндового калькулятора)

  2. Сделать часы (приложение, показывающее текущее время). Здесь юнит-тесты можно не писать.

Домашняя работа 5. 24.03.17
Презентация с пары
Конспект пары
  1. Реализовать функции Map, Filter и Fold:

    • Map принимает список и функцию, преобразующую элемент списка. Возвращаться должен список, полученный применением переданной функции к каждому элементу переданного списка. Например, Map(new List<int>() {1, 2, 3}, x => x * 2) должен возвращать список [2; 4; 6].
    • Filter принимает список и функцию, возвращающую булевое значение по элементу списка. Возвращаться должен список, составленный из тех элементов переданного списка, для которых переданная функция вернула true.
    • Fold принимает список, начальное значение и функцию, которая берёт текущее накопленное значение и текущий элемент списка, и возвращает следующее накопленное значение. Сама Fold возвращает накопленное значение, получившееся после всего прохода списка. Например, Fold(new List<int>() {1, 2, 3}, 1, (acc, elem) => acc * elem) работала бы так: сначала в acc клался бы 1, потом умножался бы на 1, потом результат (1) умножался бы на 2, потом результат (2) умножался бы на 3, потом результат (6) возвращался бы в качестве ответа
  2. На базе класса, генерирующего события по нажатию на клавиши управления курсором (EventLoop с пары), реализовать программу, управляющую положением курсора в консоли. Например, по нажатию на стрелку влево курсор должен смещаться влево, если это возможно. Будут полезны свойства Console.CursorLeft и Console.CursorTop.

Домашняя работа 4. 17.03.17
Презентация с пары
Конспект пары
  1. Решить задачу о вычислении выражения по дереву разбора из прошлого семестра. Реализовать иерархию классов, описывающих дерево разбора, используя их, реализовать класс, вычисляющий значение выражения по дереву. Классы, представляющие операнды и операторы, должны сами уметь себя вычислять и печатать.

    Исходное условие:

    По дереву разбора арифметического выражения вычислить его значение. Дерево разбора хранится в файле в виде (<операция> <операнд1> <операнд2>), где <операнд1> и <операнд2> сами могут быть деревьями, либо числами. Например, выражение (1 + 1) * 2 представляется в виде (* (+ 1 1) 2). Должны поддерживаться операции +, -, *, / и целые числа в качестве аргументов. Требуется построить дерево в явном виде, распечатать его (не обязательно так же, как в файле), и посчитать значение выражения обходом дерева. Может быть полезна функция ungetc (если не '(', возвращаем символ в поток и читаем число fscanf-ом). Можно считать, что входной файл корректен. Пример - по входному файлу (* (+ 1 1) 2) может печататься ( * ( + 1 1 ) 2 ) и выводиться 4.

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

Домашняя работа 3. 11.03.17
Конспект пары
Презентация с пары
Пример проекта с юнит-тестами
Статья про XML Documentation
  1. Написать юнит-тесты к задаче 4 из предыдущего задания

  2. Модифицировать хеш-таблицу из задачи 3 предыдущей работы так, чтобы хеш-функцию можно было менять в зависимости от выбора пользователя, причём хеш-функцию должно быть можно передавать из использующего хеш-таблицу кода. Юнит-тесты и коментарии в формате XML Documentation обязательны.

Домашняя работа 2. 03.03.17
Презентация с пары
Конспект пары
  1. Написать стек в виде класса

  2. Написать список в виде класса

  3. Написать хеш-таблицу в виде класса с использованием класса-списка. Должно быть можно добавлять значение в хеш-таблицу, удалять и проверять на принадлежность

  4. Реализовать стековый калькулятор (класс, реализующий выполнение операций +, -, *, / над стеком чисел). Стек реализовать двумя способами (например, массивом или списком) в двух разных классах на основе одного интерфейса. Стековый калькулятор должен знать только про интерфейс

Домашняя работа 1. 17.02.17
Презентация с пары
Конспект пары
  1. Посчитать факториал

  2. Посчитать числа Фибоначчи

  3. Отсортировать массив какой-либо из сортировок

  4. Дан массив размерностью N x N, N - нечетное число. Вывести элементы массива при обходе его по спирали, начиная с центра

  5. Отсортировать столбцы матрицы по первым элементам

© 2014-2018 HwProj