Skip to content

Hummel009/System-Programming

Repository files navigation

Code Smells Maintainability Rating Security Rating Bugs Vulnerabilities Duplicated Lines (%) Reliability Rating Quality Gate Status Technical Debt Lines of Code

Мои лабораторные работы для BSUIR/БГУИР (белорусский государственный университет информатики и радиоэлектроники).

Предмет - SP/СП (системное программирование).

Условия

Лабораторная работа 1

Изучение событийной архитектуры Windows-приложений, механизмы обработки сообщений, механизмы перерисовки окна.

  • Разработать программу, позволяющую передвигать с помощью клавиатуры и мыши спрайт (или геометрическую фигуру) внутри рабочей области окна.
  • Обеспечить работу колёсика мыши (движение по вертикали, если shift – по горизонтали).
  • Придать спрайту движение с отскоком от границ окна.
  • Задействовать хотя бы одну горячую клавишу (ctrl + ) с использованием таблиц акселерации.

Лабораторная работа 2

Изучение вывода текста и шрифтов.

  • Разработать программу, которая вписывает в окно текстовую таблицу N строк на M столбцов таким образом, что все столбцы таблицы равномерно распределяются по ширине окна, а высота строк таблицы подбирается таким образом, чтобы вместить текст каждой ячейки.
  • При изменении размеров окна таблица пересчитывается и перерисовывается.
  • Вписать текст в окружность так, чтобы он выглядел, как на печати.

Лабораторная работа 3

Изучение создания использования динамических загружаемых библиотек DLL.

  • Разработать программу, которая выполняет Runtime импорт DLL и вызывает её функцию.
  • Разработать программу, которая выполняет Loadtime импорт DLL и вызывает её функцию.
  • Разработать DLL с функцией поиска заданной строки по всей виртуальной памяти и замены этой строки на другую.
  • Разработать программу, которая внедряет DLL в заданный процесс и вызывает её функцию.

Лабораторная работа 4

Изучение работы с реестром. Разработать программу, которая демонстрирует следующий функционал:

  • Создание ключа, открытие ключа, закрытие ключа, удаление ключа, замена содержимого ключа.
  • Вывод флагов ключа.
  • Отслеживание изменения ключа.

Лабораторная работа 5

Изучение, создание и использование потоков и механизмов синхронизации.

  • Разработать очередь заданий, в которой несколько потоков могут вставлять элементы атомарно.
  • Разработать обработчик этой очереди, который извлекает из неё задания и раздаёт заданному количеству потоков.
  • Разработать программу, которая использует очередь заданий и обработчик очереди для сортировки строк в .txt файле:
    • Входной поток читает файл в память, нарезает его на части и создаёт несколько заданий на сортировку по числу сортирующих потоков.
    • Входной поток помещает их в очередь заданий.
    • Сортирующие потоки извлекают задание, сортируют свои части файла, отдают результаты выходному потоку.
    • Выходной поток ждёт все сортирующие части и мержит их методом сортирующего слияния.

Курсовая работа

Тема - "Устройство для записи и визуализации звука". Проект состоит из двух отдельных программ, одна вызывает другую через графический интерфейс и передаёт в неё параметры. Запись звука идёт через WinAPI, визуализация отрисовывается на JavaFX. Обе части работы реализованы на языке Kotlin, но одна из них (запись звука) с технологией компиляции Native.