Идеальный отчет по программированию: листинги кода по ГОСТ
Требования нормоконтроля к исходному коду
В отчетах по программированию, вычислительной математике и системному администрированию листинг программы является главным доказательством работоспособности выполненного задания. ГОСТ 7.32-2017 листинги отдельно не регулирует, поэтому правила задает методичка кафедры, а для программной документации — ГОСТ 19.401-78 «Текст программы». Типичные требования методичек:
- Код оформляется моноширинным шрифтом (Courier New, Consolas) меньшего кегля (10–12 пт при основном тексте 14 пт).
- Каждый листинг должен иметь порядковый номер и содержательное название: например, «Листинг 1.1 — Функция быстрой сортировки массива».
- Длинные фрагменты кода (свыше 1–2 страниц) обязательно выносятся в приложения диплома или курсовой работы, а в основном тексте отчета остаются только ключевые функции и алгоритмы.
Отчет по лабораторной программирование шаблон: структура документа
Классический отчет по лабораторной программирование шаблон содержит следующие обязательные разделы:
- Титульный лист (кафедра, дисциплина, вариант, ФИО студента и преподавателя).
- Цель работы и техническое задание.
- Описание архитектуры и алгоритма решения (с блок-схемой).
- Ключевые листинги программного кода.
- Скриншоты работы программы по ГОСТ и тестовые наборы данных.
- Выводы по проделанной работе.
Оформление листингов в отчете: пакет listings и кириллица
Правильное оформление листингов в отчете
настраивается через пакет listings в преамбуле 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:
\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 и загрузите в файлы проекта:
% Вставка всего файла с кодом (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 с настройками выше.
Практические советы
Русские комментарии в listings
Параметр extendedchars=true сам по себе кириллицу в коде не чинит. Русские
комментарии оформляйте через escapeinside, как в примере выше, или подключите
таблицу literate из статьи о русском языке в листингах кода.
Слово «Листинг» в заголовке
Чтобы заменить английское слово «Listing» на русское по ГОСТ, добавьте строчку:
\renewcommand{\lstlistingname}{Листинг}.