Август, 21

Знаменатель

(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Проекты | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация (English)

Лабораторная работа 6. Проект на Python

Цель: освоение инструментария для языка программирования Python.

В рамках проекта необходимо реализовать приложение по навигации робота на языке программирования Python. Приложение состоит из двух модулей: модуль построения лабиринта и модуль движения робота в лабиринте. Модуль построения лабиринта должен в замкнутом пространстве (прямоугольной комнате из клеток) заданного размера выполнить расстановку перегородок (стен). Модуль построения лабиринта не должен предоставлять доступ ко всему лабиринту, а только сообщать о перегородках заданной клетки. Модуль движения робота путем опроса смежных ячеек (клеток) построить маршрут из точки А в точку Б или сообщить что маршрута нет.

Примечания:

  1. Для кодирования перегородок рекомендуется использовать битовое представление числа: 0 - в ячейке нет стен, 1 - стена внизу (0001b), 2 - стена слева (0010b), 4 - стена вверху (0100b), 8 - стена справа (1000b). Тогда для ячейки с перегородками справа и слева модуль построения лабиринта сообщит код 10 (1010b).
  2. Рекомендуется на каждом шаге маршрута робота сохранять альтернативы для возврата из тупика.
  3. Тема проекта может быть изменена по согласованию с преподавателем.

Необходимо выполнить следующий перечень задач:
  1. Создать проект на gitlab.
  2. Отключить доступ к защищенной ветке main (Настройки -> Репозиторий -> Защищенные ветки -> Разрешено отправлять и сливать -> No one).
  3. Обсуждение (issue) -> запрос на слияние 1 -> реализовать код модулей.
  4. Обсуждение (issue) -> запрос на слияние 2 -> подготовить план модульного тестирования.
  5. Обсуждение (issue) -> запрос на слияние 3 -> настроить ci/cd со следующими заданиями (jobs):
    1. "unit_tests": запуск модульных тестов с помощью библиотек pytest/unittest;
    2. "lint": запуск статического тестирования с помощью библиотеки pylint (запускается после успешных модульных тестов);
    3. "scube": отправка кода на сервер статического анализа sqube.cs.petrsu.ru (запускается после успешных модульных тестов);
    4. "pages": публикация отчета о покрытии кода тестами (запускается после успешных модульных тестов).
  6. Обсуждение (issue) -> запрос на слияние 4 -> реализовать код тестов.
  7. Обсуждение (issue) -> запрос на слияние 5 -> исправить найденные ошибки, добавить бэйджи в README.md.
  8. Проверить:
    • Наличие кода модуля и тестов в репозитории;
    • Наличие всех задач и их выполнение в правильной последовательности;
    • Наличие бейджей с результатами сборки, покрытия кода тестами и метрик Sonarqube;
    • Наличие отчета о покрытии кода тестами;
    • Наличие данных в sqube.cs.petrsu.ru.
  9. Сдать лабораторную работу преподавателю и ответить на вопросы.

Дополнительная литература