Основы программирования
ПрогаЛаба 0
BabySteps
Нулевая лаба, необязательная. Четыре маленькие задачи на C++, чтобы освоить CMake, тесты, Pull Request и чтение отчётов CI.
Моисеенко Артём Ярославовичдо 10 баллов
Дедлайн
пятница, 1 января
до 23:59
Через 84 дняДедлайн мягкий: сдать можно и позже, но лучше не тянуть
Войти, чтобы записаться на сдачуЗадание
Набор из четырёх маленьких задач на C++, чтобы освоить сборку через CMake, запуск тестов и работу с Pull Request и CI. Лаба необязательная, но дальше весь курс устроен так же, поэтому пройти её стоит.
Репозиторий
У каждого свой: организация
is-itmo-c-26, репозиторий babysteps-<ваш GitHub-логин>. Условия задач лежат в нём в <задача>/README.md.Задачи (по возрастанию сложности)
- Hello World (
hello_world/). ФункцияPrintHelloWorldпечатает вstd::coutстрокуHello worldи перевод строки. Набор тестовHelloWorldSuite. - Parse CLA (
parse_cla/). ФункцияParseCLA(int argc, char** argv)разбирает три аргумента: режимaddилиsubtractи два целых числа. При успехе печатает<режим> <число> <число>уже разобранными (007становится7,-0становится0), при любой ошибке печатаетInvalid arguments. Набор тестовParseCLASuite. - Sum (
sum/). Код уже написан, но часть тестовSumSuiteпадает. Нужно по отчёту CI и логам найти упавший тест, понять, что он проверяет, и починитьsum/bin/main.cpp. Сумма двухint32_tс насыщением: при переполнении вверх результат2147483647, вниз-2147483648. - Calculator (
calculator/). ФункцияCalculate(const char* lhs, const char* op, const char* rhs)вычисляет выражение из трёх аргументов. Операторы+ - * /, деление целочисленное с округлением к нулю (-7 / 2даёт-3). Ошибки:Invalid operator,Invalid number,Division by zero, проверяются строго в этом порядке. Набор тестовCalculatorSuite.
Сборка и запуск
В корне репозитория:
cmake -B build
cmake --build build./build/hello_world
./build/parse_cla add 1 2
./build/sum 2 3
./build/calculator 2 + 3Все тесты:
ctest -V --test-dir buildТолько один набор, например SumSuite:
ctest -R SumSuite -V --test-dir buildСовет
Пока решены не все задачи, часть тестов в CI и локально будет падать. Это нормально, смотрите на набор той задачи, над которой работаете.
Требования
- Код каждой задачи только в
<задача>/bin/main.cpp. Тесты вtests/менять нельзя. - Формат вывода является частью условия: ровно одна строка, без лишних пробелов, символов и сообщений.
- Parse CLA: числа разбирать самостоятельно. Запрещены
std::stoi,std::atoi,std::strtol,std::from_charsи подобные, а также заголовки<string>и<vector>. - Calculator: готовые функции разбора разрешены, но сначала прочитайте, как они ведут себя на некорректном вводе. Нужно отличать
0от «это не число». - Сборка без предупреждений в CI: он собирает проект и гоняет все тесты.
Как сдавать
- Создайте ветку
deadline_0отmainв своём репозитории. - Решайте задачи в этой ветке, коммитьте небольшими логичными порциями.
- Откройте Pull Request из
deadline_0вmain. - Дождитесь отчёта CI в комментарии к PR (📊 Report Card): в таблице Test matrix видно, сколько тестов каждого набора прошло.
- Если что-то упало, откройте логи джоба во вкладке Actions или по ссылке Details у проверки, найдите имя упавшего теста и ожидаемое значение.

Комментарии0
Пока никто ничего не написал.
Войдите, чтобы оставить комментарий