Содержание
Требования к CLI для курсовой работы весеннего семестра
Для возможности проведения защиты курсовой работы весеннего необходимо пройти предварительную проверку на moodle: ссылка на модуль
Базовые сведения про cli можно прочитать здесь: Требования к курсовым (весенний семестр)
Если сборка курсовой работы реализована через системы автоматизации, то программа с курсовой работы должна называться cw
!
Оси координат и начало отсчёта
Началом оси координат является верхний левый угол. Ось X расположена по горизонтали и растёт вправо. Ось Y расположена по вертикали и растёт вниз
Обязательные флаги
–input
,-i
: Задаёт имя входного изображения. При необходимости (если требуется по заданию), флаг может принимать несколько аргументов. Если флаг отсутствует, то предполагается, что имя входного изображения передаётся последним аргументом–output
,-o
: Задаёт имя выходного изображения. При необходимости (если требуется по заданию), флаг может принимать несколько аргументов–info
: Печатает информацию об изображении и завершает работу–help
,-h
: Выводит справку. ВАЖНО: первой строкой при запуске программы нужно выводить информацию о варианте курсовой работе и об авторе программы в строго определенном формате:Course work for option <V>, created by <Name> <Surname>
. Где V – вариант курсовой и Имя и Фамилия, как указано в репозитории группы. Данное предложение должно быть строго первым предложением в выводе программы и является отдельной строкой (заканчивается знаком ‘\n’). Например:Course work for option 3.2, created by Ivan Ivanov.
Обработка ошибок
В случае ошибки и невозможности выполнить функцию по какой-либо причине, нужно вывести строку с ошибкой и завершить работу программы с кодом возврата из диапазона: [40-49]
Обработка ошибок при некорректных аргументах у флагов:
- Если флаг отвечает за цвет и передано некорректное значение (например
500.0.10
), то необходимо остановить выполнение и завершить работу с ошибкой - Если флаг отвечает за координаты для рисования (например, для рисования линии) и координаты находится вне границ изображения, то необходимо продолжить обработку так, как если бы можно было выходить за рамки изображения. Пример: допустим на вход подано изображение размером
100×100
пикселей, начало отрезка0.0
, а конец отрезка200.200
. В таком случае должна быть нарисована диагональ. Если же начало отрезка было150.130
, то на изображении ничего не должно быть нарисовано, так как линия проходить за границами обрабатываемого изображения - Если флаг отвечает за координаты для области и координаты находится вне границ изображения, то необходимо продолжить обработку до максимально/минимально возможного значения координат
- Если были введены аргументы для флага, который не принимает аргументов или введены лишние аргументы, то
- Завершить работу с ошибкой
- Вывести пользователю сообщение, что данные аргументы будут проигнорированы. Например,
Аргументы 'best_arg' и 'another_best_arg' проигнорирован, так как флаг '–info' не принимает аргументов
- Если введён аргумент, который не соответствует ожидаемому шаблону, то необходимо завершить работу с ошибкой
- Если введён некорректный флаг или не хватает флагов для задания параметров, то необходимо завершить работу с ошибкой
- Если имена входного и выходного файлов совпадают, то необходимо завершить работу с ошибкой
Необязательные дополнения к курсовой работе
Описанные в данной секции дополнения являются не обязательными, получить желаемую оценку можно без них.
GUI
Рядовые пользователи очень плохо умеют пользоваться терминалом, поэтому для их удобства зачастую реализуют графический интерфейс. В программе по обработке изображений такое напрашивается само собой (иначе убийца photoshop'а будет выглядеть не солидно). Подробнее про требования к GUI: Требования к курсовым (весенний семестр)
Документация
В любом хорошем проекте должна быть документация. Документация означает, что для каждой функции, структуры (и классов для C++) есть адекватное описание. Фразы в духе «Данная структура содержит данные для изображения»
или «Функция обработки изображения»
являются плохим описанием.
- Для функций дополнительно расписаны аргументы (описание, назначение, возможные значения)
- Для структур (и классов в C++) дополнительно расписаны все поля
Документацию можно написать сразу в коде, обратите вниммание на Doxygen
Создание .so библиотеки
Зачастую код пишется не в формате отдельной программы, а в формате библиотеки, чтобы вашими наработками могли воспользоваться в другом проекте другие разработчики. Поэтому можно разделить курсовую на две части:
- Библиотека формата
.so
, которая содержит только функции для работы с изображениями: открытие и сохранение изображения, обработка изображений, … - Главная часть, которая содержит в себе только main с CLI (и опционально GUI) обработкой и вызовом функций из разработанной библиотеки
ВАЖНО: Не нужно по умолчанию выполнять установку библиотеки в систему, сделайте для этого отдельную цель, например make install