Skip to content

SoldierID101/PTLab1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Лабораторная 1 по дисциплине "Технологии программирования"


Цель работы

  1. Освоить основы работы с системой контроля версий Git.
  2. Научиться использовать GitHub для хранения проектов.
  3. Освоить механизм автоматического тестирования и проверки стиля кода через GitHub Actions (CI/CD).
  4. Реализовать индивидуальное задание с использованием языка Python и модульного тестирования (pytest).

Постановка задачи

Базовый проект: система расчёта среднего рейтинга студентов по дисциплинам.
Данные студентов и их оценки хранятся в файлах. Поддерживаются различные форматы входных данных (txt, yaml).

Индивидуальный вариант №8:
Формат входного файла: YAML
Расчётная процедура: определить и вывести всех студентов, чей рейтинг попадает во вторую квартиль распределения.


Структура проекта

rating/
 ├── .github/workflows/github-actions-testing.yml   # CI/CD
 ├── data/
 │    ├── data.txt
 │    └── data.yaml
 ├── src/
 │    ├── CalcRating.py
 │    ├── DataReader.py
 │    ├── TextDataReader.py
 │    ├── YamlDataReader.py
 │    ├── QuartileCalculator.py
 │    ├── Types.py
 │    └── main.py
 ├── test/
 │    ├── test_CalcRating.py
 │    ├── test_TextDataReader.py
 │    ├── test_YamlDataReader.py
 │    ├── test_QuartileCalculator.py
 │    └── test_main.py
 ├── requirements.txt
 ├── .gitignore
 ├── LICENSE
 └── README.md

Используемые технологии

  1. Язык программирования: Python 3.10+
  2. Управление зависимостями: requirements.txt
  3. Модульное тестирование: pytest
  4. Проверка стиля кода: pycodestyle (PEP8)
  5. CI/CD: GitHub Actions

Инструкция по запуску

Установка зависимостей

pip install -r requirements.txt

Проверка стиля кода (PEP8)

pycodestyle src test

Запуск тестов

pytest test

Запуск программы

Для текстового формата:

python src/main.py -p data/data.txt

Для YAML-формата (вариант 8):

python src/main.py -p data/data.yaml --yaml

UML-диаграмма классов

classDiagram
    class DataReader {
      <<abstract>>
      +read(path: str) DataType
    }

    class TextDataReader {
      +read(path: str) DataType
    }

    class YamlDataReader {
      +read(path: str) DataType
    }

    class CalcRating {
      -data: DataType
      -rating: dict[str, float]
      +calc() dict[str, float]
    }

    class QuartileCalculator {
      -ratings: dict[str, float]
      +second_quartile_students() list[str]
    }

    DataReader <|-- TextDataReader
    DataReader <|-- YamlDataReader

    CalcRating ..> DataReader : использует данные
    QuartileCalculator ..> CalcRating : использует рейтинг

Loading

Выводы

В ходе выполнения лабораторной работы были освоены:

  1. Базовые команды Git и принципы работы с репозиторием на GitHub.
  2. Настройка CI/CD через GitHub Actions.
  3. Применение pytest для модульного тестирования.
  4. Контроль качества кода с помощью pycodestyle.
  5. Работа с различными форматами данных (txt, yaml).
  6. Реализация алгоритма для вычисления второй квартиль в распределении рейтингов студентов.

Проект успешно протестирован и соответствует требованиям.

About

Лабораторная 1 по дисциплине "Технологии программирования"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages