Идеальный отчет по программированию: листинги кода по ГОСТ

Требования нормоконтроля к исходному коду

В отчетах по программированию, вычислительной математике и системному администрированию листинг программы является главным доказательством работоспособности выполненного задания. ГОСТ 7.32-2017 листинги отдельно не регулирует, поэтому правила задает методичка кафедры, а для программной документации — ГОСТ 19.401-78 «Текст программы». Типичные требования методичек:

  • Код оформляется моноширинным шрифтом (Courier New, Consolas) меньшего кегля (10–12 пт при основном тексте 14 пт).
  • Каждый листинг должен иметь порядковый номер и содержательное название: например, «Листинг 1.1 — Функция быстрой сортировки массива».
  • Длинные фрагменты кода (свыше 1–2 страниц) обязательно выносятся в приложения диплома или курсовой работы, а в основном тексте отчета остаются только ключевые функции и алгоритмы.

Отчет по лабораторной программирование шаблон: структура документа

Классический отчет по лабораторной программирование шаблон содержит следующие обязательные разделы:

  1. Титульный лист (кафедра, дисциплина, вариант, ФИО студента и преподавателя).
  2. Цель работы и техническое задание.
  3. Описание архитектуры и алгоритма решения (с блок-схемой).
  4. Ключевые листинги программного кода.
  5. Скриншоты работы программы по ГОСТ и тестовые наборы данных.
  6. Выводы по проделанной работе.

Оформление листингов в отчете: пакет listings и кириллица

Правильное оформление листингов в отчете настраивается через пакет listings в преамбуле LaTeX документа:

LaTeX
\usepackage{listings}
\usepackage{xcolor}
\usepackage{caption}

\lstset{
    basicstyle=\ttfamily\small,       % Моноширинный шрифт меньшего кегля
    numbers=left,                     % Нумерация строк слева
    numberstyle=\tiny\color{gray},     % Стиль номеров строк
    stepnumber=1,
    numbersep=8pt,
    frame=single,                     % Тонкая рамка вокруг листинга
    tabsize=4,
    breaklines=true,                  % Автоматический перенос длинных строк
    keywordstyle=\color{blue}\bfseries,
    commentstyle=\color{teal}\itshape,
    stringstyle=\color{red},
    escapeinside={(*@}{@*)},          % Русский текст внутри кода
    captionpos=t                      % Подпись над листингом, как в методичках
}
\renewcommand{\lstlistingname}{Листинг}
\captionsetup[lstlisting]{labelsep=endash,singlelinecheck=false}

В тексте программы фрагмент вставляется через окружение lstlisting:

LaTeX
\begin{lstlisting}[language=Python, caption={Функция вычисления факториала}]
def factorial(n: int) -> int:
    # (*@\textit{Вычисление факториала числа n}@*)
    if n <= 1:
        return 1
    return n * factorial(n - 1)
\end{lstlisting}

В pdfLaTeX пакет listings не понимает кириллицу внутри кода: русская строка или docstring без настройки ломает сборку. Поэтому русский комментарий выше обернут в разделители (*@ … @*) из параметра escapeinside — такой текст набирает уже LaTeX. Если русского текста в коде много, подключите таблицу literate из статьи о русском языке в листингах кода.

Импорт кода напрямую из файлов программ

Вместо копирования кода вручную через буфер обмена гораздо надежнее подключать файлы проекта напрямую через команду \lstinputlisting. Файлы .cpp и .py загрузить можно. Если удобнее один формат для листинга, сохраните код как .txt и загрузите в файлы проекта:

LaTeX
% Вставка всего файла с кодом (main.cpp сохранен как main.txt)
\lstinputlisting[language=C++, caption={Главный модуль main.cpp}]{src/main.txt}

% Вставка только диапазона строк с 15 по 45
\lstinputlisting[language=C++, firstline=15, lastline=45, caption={Алгоритм Дейкстры}]{src/graph.txt}

При таком подходе изменения в коде попадают в отчет при очередной сборке — достаточно заменить файл.

Современная альтернатива: пакет minted

Если требуется подсветка синтаксиса полиграфического уровня, используют пакет minted на базе библиотеки Pygments. Он подсвечивает сотни языков (Rust, Go, Kotlin, Swift, SQL) и нормально работает с русскими комментариями.

Но minted запускает внешнюю программу (Python с Pygments) и требует флага -shell-escape, поэтому работает только при локальной сборке. В Labkeeper серверная сборка запрещает внешние программы, и minted не собирается: онлайн используйте listings с настройками выше.

Практические советы

1

Русские комментарии в listings

Параметр extendedchars=true сам по себе кириллицу в коде не чинит. Русские комментарии оформляйте через escapeinside, как в примере выше, или подключите таблицу literate из статьи о русском языке в листингах кода.

2

Слово «Листинг» в заголовке

Чтобы заменить английское слово «Listing» на русское по ГОСТ, добавьте строчку: \renewcommand{\lstlistingname}{Листинг}.

Попробуйте прямо сейчас

Сдавайте лабораторные с первого раза в Labkeeper

Онлайн-редактор LaTeX: листинги кода через пакет listings с нумерацией строк, подписью «Листинг» и PDF после нажатия «Выполнить».

Другие статьи