\documentclass[bachelor, och, labwork]{SCWorks}
% параметр - тип обучения - одно из значений:
%    spec     - специальность
%    bachelor - бакалавриат (по умолчанию)
%    master   - магистратура
% параметр - форма обучения - одно из значений:
%    och   - очное (по умолчанию)
%    zaoch - заочное
% параметр - тип работы - одно из значений:
%    referat    - реферат
%    coursework - курсовая работа (по умолчанию)
%    diploma    - дипломная работа
%    pract      - отчет по практике
% параметр - включение шрифта
%    times    - включение шрифта Times New Roman (если установлен)
%               по умолчанию выключен

\usepackage{subfigure}
\usepackage{tikz,pgfplots}
\pgfplotsset{compat=1.5}
\usepackage{float}

%\usepackage{titlesec}
\setcounter{secnumdepth}{4}
%\titleformat{\paragraph}
%{\normalfont\normalsize}{\theparagraph}{1em}{}
%\titlespacing*{\paragraph}
%{35.5pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}

\titleformat{\paragraph}[block]
{\hspace{1.25cm}\normalfont}
{\theparagraph}{1ex}{}
\titlespacing{\paragraph}
{0cm}{2ex plus 1ex minus .2ex}{.4ex plus.2ex}

% --------------------------------------------------------------------------%


\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\graphicspath{ {./images/} }
\usepackage{tempora}

\usepackage[sort,compress]{cite}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{fancyvrb}
\usepackage{listings}
\usepackage{listingsutf8}
\usepackage{longtable}
\usepackage{array}
\usepackage[english,russian]{babel}

\usepackage[colorlinks=true]{hyperref}
\usepackage{url}


\newcommand{\eqdef}{\stackrel {\rm def}{=}}

\renewcommand\theFancyVerbLine{\small\arabic{FancyVerbLine}}

\newtheorem{lem}{Лемма}

\begin{document}

% Кафедра (в родительном падеже)
\chair{}

% Тема работы
\title{Ввод/вывод данных в файловую систему, Вариант 9}

% Курс
\course{2}

% Группа
\group{231}

% Факультет (в родительном падеже) (по умолчанию "факультета КНиИТ")
\department{факультета КНиИТ}

% Специальность/направление код - наименование
%\napravlenie{09.03.04 "--- Программная инженерия}
%\napravlenie{010500 "--- Математическое обеспечение и администрирование информационных систем}
%\napravlenie{230100 "--- Информатика и вычислительная техника}
%\napravlenie{231000 "--- Программная инженерия}
\napravlenie{10.05.01 "--- Компьютерная безопасность}

% Для студентки. Для работы студента следующая команда не нужна.
% \studenttitle{Студентки}

% Фамилия, имя, отчество в родительном падеже
\author{Гущина Андрея Юрьевича}

% Заведующий кафедрой
% \chtitle{} % степень, звание
% \chname{}

%Научный руководитель (для реферата преподаватель проверяющий работу)
\satitle{ассистент} %должность, степень, звание
\saname{А.~А.~Трунов}

% Руководитель практики от организации (только для практики,
% для остальных типов работ не используется)
% \patitle{к.ф.-м.н.}
% \paname{С.~В.~Миронов}

% Семестр (только для практики, для остальных
% типов работ не используется)
%\term{8}

% Наименование практики (только для практики, для остальных
% типов работ не используется)
%\practtype{преддипломная}

% Продолжительность практики (количество недель) (только для практики,
% для остальных типов работ не используется)
%\duration{4}

% Даты начала и окончания практики (только для практики, для остальных
% типов работ не используется)
%\practStart{30.04.2019}
%\practFinish{27.05.2019}

% Год выполнения отчета
\date{2020}

\maketitle

% Включение нумерации рисунков, формул и таблиц по разделам
% (по умолчанию - нумерация сквозная)
% (допускается оба вида нумерации)
% \secNumbering


% \tableofcontents

% Раздел "Обозначения и сокращения". Может отсутствовать в работе


% Раздел "Определения". Может отсутствовать в работе
%\definitions

% Раздел "Определения, обозначения и сокращения". Может отсутствовать в работе.
% Если присутствует, то заменяет собой разделы "Обозначения и сокращения" и "Определения"
% \defabbr

\section{Лабораторная работа \#8}

\subsection{Задание}
Создать файл, куда записать n целых чисел. Массив создать из
исходного файла. Внести в него числа, расположенные в файле между
минимальным и максимальным элементами. 

Виртуальный прибор должен формировать исходный файл,
выполнять задание и сохранять результат в новом файле

\subsection{Ход работы}

\begin{figure}[H]
    \centering
    \includegraphics[width=0.9\textwidth]{program.png}
    \caption{Блок-диаграмма программы}
\end{figure}

Для заполнения исходного файла я генерирую в цикле $n$ случайных чисел
и записываю их в файл.
\begin{figure}[H]
    \centering
    \includegraphics[width=0.6\textwidth]{generation.png}
    \caption{Заполнение исходного файла}
\end{figure}

Для считывания массива из файла я использую цикл, в котором используется
блок <<Scan From String>> для считывания числа по одному из строки.
Результатами этого блока являются оставшаяся строка после отсканированного
значения и само отсканированное значение. Отсканированные значения я передаю
в туннель из блока цикла. 

\begin{figure}[H]
    \centering
    \includegraphics[width=0.6\textwidth]{loop.png}
    \caption{Блок-диаграмма цикла, считывающего массив из файла}
\end{figure}

При этом в <<Tunnel mode>> необходимо указать
<<Indexing>>, чтобы в результате получился массив из всех значений (по
стандарту возвращается последнее значение, вычисленное в цикле).

\begin{figure}[H]
    \centering
    \includegraphics[width=0.8\textwidth]{indexing.png}
    \caption{Режим <<Indexing>> для туннеля}
\end{figure}

Для получения результата я использую блок <<Max \& Min>> для массивов
из которого беру индексы минимального и максимального элементов.
Пусть индекс минимального значения --- $i_{min}$, а
индекс максимального значения --- $i_{max}$.
Индекс начала искомого массива --- это $\min (i_{min}, i_{max}) + 1$.
Длина искомого массива --- это $|i_{min} - i_{max}| - 1$.

Чтобы получить искомый массив, можно применить блок <<Array subset>>,
к исходному массиву, указав значения index и length.

\begin{figure}[H]
    \centering
    \includegraphics[width=0.8\textwidth]{subset.png}
    \caption{Алгоритм получения результата}
\end{figure}

Для вывода массива я использовал блок <<Array to Spreadsheet string>>.
В качестве формата я указал ``\%d'', в качестве разделителя указал
запятую и применил к искомому массиву. В результате получилась строка,
состящая из элементов массива, разделённых запятыми. 
Её записываем в указанный файл.

\begin{figure}[H]
    \centering
    \includegraphics[width=0.8\textwidth]{print.png}
    \caption{Вывод массива}
\end{figure}

\subsection{Тесты}

\begin{figure}[H]
    \centering
    \includegraphics[width=0.4\textwidth]{template.png}
    \caption{Лицевая панель виртуального прибора}
\end{figure}

\begin{figure}[H]
    \centering
    \includegraphics[width=0.7\textwidth]{test1.png}
    \caption{Тест 1}
\end{figure}

\begin{figure}[H]
    \centering
    \includegraphics[width=0.7\textwidth]{test2.png}
    \caption{Тест 2}
\end{figure}

\begin{figure}[H]
    \centering
    \includegraphics[width=0.7\textwidth]{test3.png}
    \caption{Тест 3}
\end{figure}

\begin{figure}[H]
    \centering
    \includegraphics[width=0.7\textwidth]{test4.png}
    \caption{Тест 4}
\end{figure}

\begin{figure}[H]
    \centering
    \includegraphics[width=0.7\textwidth]{test5.png}
    \caption{Тест 5}
\end{figure}

\end{document}
