18. Проверочная работа#

Проверочная работа для учащихся представляет собой экзамен. Он охватывает пройденные темы. Экзамен длится 90 минут. Необходимо написать программу на Си. Техническое задание на программу будет предоставлено за 24 часа до экзамена. Техническое задание будет один на всех.

Требования к результату#

В результате выполнения задания в файловой системе должен появиться архив с именем ~/<your-last-name>/exam.tgz, где <your-last-name> – фамилия учащегося. Содержимое архива размещается в каталоге exam и состоит из файлов:

  • файл main.c с исходными кодами и основной функцией main;

  • файл со сценарием сборки build-gcc.sh;

  • файлы с тестовыми сценариями и исходными данными к тестам;

В техническом задании перечислены названия тестов и список содержащихся в них команд. Далее вместо <name> подставляется имя теста. Для каждого теста создайте сценарий test-<name>.sh. В тесте вызываются команды, вывод которых перенаправляется в файл output-<name>.txt

your-last-name
  ├─> main.c
  ├─> build-gcc.sh
  ├─> test-version.sh
  ├─> test-help.sh
  └─> test-cutline.sh

Проверка результата#

Учащийся распаковывает архив, переходит в каталог exam и создает в нем подкаталог output. Содержимое архива копируется в output. Запускаются сборочный и тестовые сценарии и анализируются выходные файлы на предмет соответствия требованиям технического задания.

Оценка результата#

Оценки:

  • удовлетворительно, получить хотя бы запускаемый файл;

  • хорошо, завершить успешно два и более тестов;

  • отлично, собрать программу без предупреждений (warning’ов), завершить успешно все тесты и соответствовать пунктам технического задания.

Примеры технических заданий#

enumerate, утилита нумерования строк#

Написать программу на языке программирования Си. Программа называется enumerate. Программа принимает из командной строки имена файлов и выводит их содержимое на экран, нумеруя каждую строку. Нумерация сквозная и начинается с 1.

Программа поддерживает следующие опции:

  • -h, --help выводит следующее сообщение на экран:

Usage: enumerate [-h | --help] [-v | --version] ...
    Display the contents of line-numbered files.

Options:
    -h, --help 
        display this help and exit
    -v, --version
        output version information and exit
  • -v, --version выводит номер версии, в нашем случае 0.0.1.

Список тестов:

  • version запускает команды enumerate -v и enumerate --version.

  • help запускает команды enumerate -h и enumerate --help.

  • mix запускает команды enumerate -h -v и enumerate -v -h; должна отработать первая опция в списке.

  • enumerate запускает команды enumerate test-*.sh и enumerate output-*.txt.

cutline, утилита отсекания строк#

Написать программу на языке программирования Си. Программа называется cutline. Программа принимает из командной строки имена файлов и выводит строки, отсекая до 30 символов.

Программа поддерживает следующие опции:

  • -h, --help выводит следующее сообщение на экран:

Usage: enumerate [-h | --help] [-v | --version] ...
    Cut lines to 30 characters.

Options:
    -h, --help 
        display this help and exit
    -v, --version
        output version information and exit
  • -v, --version выводит номер версии, в нашем случае 0.0.1.

Список тестов:

  • version запускает последовательно команды cutline -v и cutline --version.

  • help запускает последовательно команды cutline -h и cutline --help.

  • cutline запускает последовательно команды cutline test-*.sh и cutline output-*.txt.