Практикум на ЭВМ

171 группа

Станислав Сартасов

Студент TODO №1 №2 №3 №4 №5 №6 Тест 1
135 Снова фильтры Простая иерархия Случай в казино Дженерики Слабые ссылки Плагины (или Почти как у Bethesda) IoC UI P2P чат bash Теоретический зачёт
Kazancev Anton 8
Kuznetsov Ilya Alexandrovich
Алимов Павел 5
Бакаев Евгений 5
Бакирова Анна 11
Быков Давид 11
Иванов Кирилл 2
Костенников Данил 11
Кузнецов Дмитрий 10
Ли Цзэминь 11
Мзуги Илиас 11
Милосердова Любовь 9
Мирошников Владислав
Пелогейко Макар 9
Фролченко Михаил 11
Чернышев Лев 11
Шемякин Андрей 10

Задачи

Тест 1. 09.06.20
  1. Теоретический зачёт

    Сдать теоретический зачёт

Домашняя работа 6. 25.02.20
  1. bash

    bash – это одна из наиболее популярных командных оболочек под UNIX. Необходимо реализовать свою версию этой программы с урезанной функциональностью. Она должна поддерживать следующие команды:
    • echo – вывести на экран аргумент(-ы);
    • exit – выйти из интерпретатора;
    • pwd – вывести на экран текущий рабочий каталог (название и список файлов);
    • cat [FILENAME] – показать на экране содержимое файла
    • wc [FILENAME] – показать на экране количество строк, слов и байт в файле
    • Команда, не распознанная как одна из приведённых выше, приводит к попытке запуска механизмами операционной системы (вроде Process.Start() в .NET).
    Программа также должна поддерживать следующие возможности:
    • оператор $ - присваивание и использование локальных переменных сессии (например, $PATH, $a=4)
    • оператор | - конвейерная обработка команд. Результат выполнения одной команды становится входом для другой.

Домашняя работа 5. 25.02.20
  1. P2P чат

    Написать приложение для чата. Клиенты устанавливают связь друг с другом напрямую с помощью сокетов. При этом подключение третьего клиента к одному из двух других уже подключенных клиентов приводит к тому, что три клиента объединяются в единое информационное пространство, и сообщение от одного клиента видно всем остальным. Число подключающихся таким образом клиентов не ограничено. Предусмотреть в полном объёме сопутствующую обработку ошибок. Для сетевого взаимодействия использовать класс Socket (т.е. использование классов TcpClient, TcpListener и UdpClient запрещено). Допускается использование как консоли, так и графических технологий (вроде WinForms или WPF) для создания графического интерфейса. Для опроса сокета на получение сообщения можно использовать класс System.Threading.Timer или отдельный поток. Предусмотреть возможность выхода из программы и освобождение ресурсов.

Домашняя работа 4. 25.02.20
  1. UI

    Написать приложение, использующее две технологии пользовательского интерфейса (например, WinForms, WPF, JavaFX), которые на экранной форме строят алгебраическую кривую не ниже второго порядка из нескольких заранее определённых (оси координат и сама кривая). Как минимум у одной кривой порядка N коэффициенты как при XN, так и при YN должны быть ненулевыми. Список кривых отображается в комбобоксе. Реализовать возможность масштабирования показываемого изображения. Классы, реализующие связанную с кривыми математику, следует вынести в отдельную общую библиотеку. При использовании WPF отображение кривой должно использовать механизм привязки (binding).

Домашняя работа 3. 25.02.20
  1. Дженерики

    Написать с использованием дженериков класс, реализующий одну из перечисленных коллекций с возможностью добавления, удаления и поиска по ней. Возможно, в реализации потребуется сделать более, чем один класс. Коллекция к реализации определяется как 1 + остаток от деления суммы длин имени, фамилии и отчества на 4.

    • Двусвязный список;
    • Хэш-таблица;
    • Динамический массив;
    • Несбалансированное бинарное дерево поиска несбалансированное с числовым ключом.
  2. Слабые ссылки

    С помощью слабых ссылок реализовать коллекцию из предыдущей задачи, которая хранит объекты не менее задаваемого интервала времени, например, минуты. Интервал задаётся параметром конструктора. При необходимости предусмотреть освобождение ресурсов. Опустевшие элементы допустимо удалять из коллекции.

  3. Плагины (или Почти как у Bethesda)

    Реализовать программу, которая ищет по заданному пути библиотеки с плагинами, удовлетворяющими некоторому интерфейсу (определяется в отдельной библиотеке), загружает их и создаёт по одному экземпляру каждого класса, реализующего этот интерфейс.

  4. IoC

    Настроить IoC-контейнер по своему выбору, с его помощью инициализировать классы задачи 2-2 и запустить игру. Решение оформить в виде юнит-теста.

Домашняя работа 2. 25.02.20
  1. Простая иерархия

    Реализовать на выбор одну из иерархий объектов:

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

    б) Создать абстрактный класс "Мороженое" с некоторым набором набором характеристик на ваше усмотрение (тип (сливочное, фруктовый лёд), вкус, количество шариков (если применимо) и т.д.), а также методом или свойством позволяющим получить рецепт его приготовления на основе этих характеристик. Реализовать описание нескольких конкретных тортов.

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

  2. Случай в казино

    Реализовать одну из азартных игр. Игра к реализации определяется как 1 + остаток от деления суммы длин имени, фамилии и отчества на 3.

    1) Реализовать иерархию классов для игры в блэкджек с базовым вариантом правил и 8 замешанными колодами (https://en.wikipedia.org/wiki/Blackjack).

    2) Реализовать иерархию классов для игры в рулетку с 1 зеро и ставками на цвет, чётность, дюжину или конкретное число.

    3) Реализовать иерархию классов для игры в баккара, вариант punto banco (https://en.wikipedia.org/wiki/Baccarat_(card_game)).

    Написать для игры ботов, реализующих как минимум 2 разные стратегии на усмотрение автора и имеющих некоторую стартовую сумму денег. Проверить корректность работы юнит-тестами. С их же помощью показать, сколько в среднем денег остаётся у каждого бота после 400 ставок. К решению приложить диаграмму классов UML.

Домашняя работа 1. 25.02.20
  1. Снова фильтры

    Переписать консольное приложение по обработке изображений различными фильтрами на C#. В программе нельзя использовать классы из пространства имён System.Drawing.

    Написать к приложению юнит-тесты, проверяющие все фильтры, а также случай, когда пользователь ввёл что-то не то. Все данные для юнит-тестов должны быть включены в проект юнит-тестов. В юнит-тестах можно использовать пространство имён System.Drawing.

© 2014-2020 HwProj