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

144 группа

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

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

Задачи

Домашняя работа 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. Реализовать программу с пользовательским интерфейсом: на форме есть кнопка и индикатор прогресса, при нажатии на кнопку индикатор прогресса должен начать заполняться (сам увеличивая своё значение через равные промежутки времени), после того, как он достигнет 100%, должна появиться кнопка, позволяющая закрыть форму.

Домашняя работа 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