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

144 группа

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

Студент TODO №1 №2 №3 №4 №5 №6 №7 Тест 1 №8 №9 №10 Тест 2
45 1 2 3 4 5 1 2 3 4 1 2 1 2 1 2 1 2 1 2 1 Доклады 2 1 2 1 1
Афанасов Артем 26
Балашов Илья 1
Ивашева Валерия 2
Камкова Екатерина 2
Мендалиев Роман 1
Панфилёнок Дмитрий 1
Пиккио Полина 9
Пономарёв Егор 1
Хомяков Василий 2

Задачи

Тест 2. 22.05.18
  1. Реализовать алгоритм сжатия/разжатия, работающий по следующему принципу: есть массив байт, при сжатии последовательность повторяющихся байтов заменяется на два байта - число повторений, повторяющийся байт. При разжатии - наоборот.

Домашняя работа 11. 16.05.18
Визуальное моделирование, UML (презентация)
Визуальное моделирование, UML (конспект)
Домашняя работа 10. 08.05.18
Экосистема open source проектов (презентация)
  1. Настроить сборку на AppVeyor одной из предыдущих домашек. В качестве решения приложить ссылку на успешно собранный пуллреквест с appveyor.yml.

Домашняя работа 9. 24.04.18
Обзор библиотеки Unity
Обзор платформы .NET Core (презентация)
Обзор платформы .NET Core (конспект)
Тестирование пользовательского интерфейса, Coded UI и White
Yield return, ленивые вычисления
Обзор технологии Silverlight
  1. С помощью метода Filter из 5-го ДЗ (который, возможно, придётся слегка модифицировать) и yield return-ов реализовать метод, возвращающий бесконечную последовательность простых чисел. Сделать это проектом .NET Core, собрать и запустить из консоли, приложить лог работы с консолью.

  2. Сделать что-нибудь на Unity.

Домашняя работа 8. 10.04.18
Код для ревью, пример 1
Code Review (презентация)
Code Review (конспект)
Код для ревью, пример 2
Код для ревью, пример 3
Код для ревью, пример 4, tree.cs
Код для ревью, пример 4, node.cs
Код для ревью, пример 4, nodeOperand.cs
Код для ревью, пример 4, nodeOperation.cs
  1. Доклады
    • Обзор платформы .NET Core
    • Тестирование пользовательского интерфейса, Coded UI и White --- Егор Пономарёв
    • yield return, ленивые вычисления
    • Обзор библиотеки Unity --- Екатерина Камкова
    • Обзор технологии Silverlight

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

  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, написать замечания и выложить их к себе на гитхаб в виде текстового (или Markdown)-файла

Тест 1. 03.04.18
  1. Реализовать кодирование алгоритмом Move-To-Front строк английского алфавита. На вход программе подаётся строка, на выход — закодированная MTF последовательность чисел. Например, по строке banana должна выдаваться кодовая последовательность [1,1,13,1,1,1]. Обязательны комментарии и юнит-тесты.

Домашняя работа 7. 27.03.18
Контейнеры и генерики (презентация)
Контейнеры и генерики (конспект)
  1. Переделать список на генерики. Список должен реализовывать интерфейс System.Collections.Generic.IList, в том числе иметь энумератор, чтобы можно было по нему ходить foreach.

  2. Создать генерик-класс, реализующий АТД "Множество". Множество должно реализовывать интерфейс System.Collections.Generic.ISet.

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

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

Домашняя работа 5. 13.03.18
Событийно-ориентированное программирование (презентация)
Событийно-ориентированное программирование (конспект)
  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. 06.03.18
Исключения и обработка ошибок (презентация)
Исключения и обработка ошибок (конспект)
  1. Решить задачу о вычислении выражения по дереву разбора из прошлого семестра. Реализовать иерархию классов, описывающих дерево разбора, используя их, реализовать класс, вычисляющий значение выражения по дереву. Классы, представляющие операнды и операторы, должны сами уметь себя вычислять и печатать.

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

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

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

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

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

Домашняя работа 2. 20.02.18
ООП, ООП в C# (презентация)
ООП, ООП в C# (конспект)
  1. Написать стек в виде класса

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

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

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

Домашняя работа 1. 13.02.18
Введение, C# (конспект)
Введение, C# (презентация)
  1. Посчитать факториал

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

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

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

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

© 2014-2018 HwProj