\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[brazilian]{babel}
\usepackage{hyperref}
\usepackage{lipsum}
\usepackage{geometry}
\usepackage[skip=5pt plus1pt, indent=20pt]{parskip}
\usepackage{amsthm,amssymb,amsmath}
\newtheorem*{theorem}{Theorem}
\newcommand{\NN}{\mathbb{N}}
\newcommand{\ZZ}{\mathbb{Z}}
\newcommand{\RR}{\mathbb{R}}
\newcommand{\QQ}{\mathbb{Q}}
\newcommand{\CC}{\mathbb{C}}
\geometry{margin=2.5cm}
\title{\textbf{Trabalho Prático X}}
\author{\textbf{[Nome completo]}}
\date{\parbox{\linewidth}{\centering%
Universidade Federal de Minas Gerais (UFMG)\endgraf
Belo Horizonte - MG - Brasil\endgraf\bigskip
\href{mailto:email@ufmg.br}{email@ufmg.br}}}
\begin{document}
\maketitle
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Introdução}
\par Esta meta-documentação tem como objetivo apresentar diretrizes a serem seguidas na escrita da documentação dos Trabalhos Práticos da disciplina de Estruturas de Dados. Na introdução, sugere-se que sejam apresentadas as seguintes informações.
\begin{itemize}
\item Informações gerais sobre o problema a ser tratado (“Esta documentação lida com o problema ...”);
\item Os objetivos do trabalho (“Esta documentação tem como objetivo ...”).
\item O que foi implementado, de maneira sucinta (“Para resolver o problema citado, foi seguida uma abordagem ...”);
\end{itemize}
\par Nesta seção, não faça “mistério” com o conteúdo da documentação. Uma boa introdução deve ter como premissa apresentar, de maneira sucinta, todo o conteúdo do documento.
\par Ao final da introdução, procure apresentar como a documentação está organizada (“A seção 2 trata de ..., já na seção 3 é apresentado ...”).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Implementação}
\par Esta seção deve apresentar todas as decisões tomadas para a resolução do problema proposto. São partes essenciais a serem explanadas nessa seção:
\subsection{Detalhes}
\begin{itemize}
\item Como o seu codigo está organizado;
\item Quais estruturas de dados foram utilizadas na sua implementação, bem como os detalhes a elas relacionados que julgar relevantes;
\item Explicar sucintamente o funcionamento do programa principal e das principais funções e procedimentos implementados;
\item Informar a configuração que você utilizou para testar o seu programa. A configuração apresentada deve conter, obrigatoriamente:
\begin{itemize}
\item Sistema Operacional do seu computador;
\item Linguagem de programação implementada;
\item Compilador utilizado;
\item Dados do seu processador e quantidade de memoria RAM; ´
\end{itemize}
Evite utilizar nessa seção:
\item Print screens ou até mesmo uma transcrição do seu código. Lembre-se: o seu código foi entregue (ao menos deveria ter sido) junto com a documentação.
\item Replica-lo na documentação e uma repetição desnecessária.
\item Explicar a sua implementação e decisões de projeto a nível de linhas de código
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Instruções de Compilação e execução}
\par Nesta seção, seja sucinto. Apresente apenas o passo-a-passo de como acessar o seu diretório e quais os passos que devem ser seguidos para que o avaliador do seu trabalho consiga executar o seu programa. Um possível “roteiro” a se seguir é:
\begin{itemize}
\item Acesse o diretório...;
\item Utilizando um terminal, execute o arquivo [ nome do arquivo ] utilizando o seguinte comando: $<$ descrever o comando $>$;
\item Com esse comando, deve acontecer tal evento ...;
\item Proceda dessa maneira ...;
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Análise de Complexidade}
\par Nesta seção, apresenta a análise de complexidade de \underline{tempo} e \underline{espaço} para as funções e procedimentos apresentados na seção 2. Novamente: a análise deve ser feita para a complexidade de \underline{tempo} \textbf{E} \underline{espaço}. É muito comum que os alunos façam apenas a análise da complexidade de tempo e “esqueçam” da análise de espaço, o que acarreta em decréscimos na avaliação do trabalho. É muito importante também apresentar as análises considerando o seu programa como um todo, discutindo a complexidade em um âmbito geral.
\par\underline{Não é necessário} realizar uma análise de complexidade linha por linha. Novamente, procure realizar a análise a nível de funções e procedimentos. Caso uma função ou procedimento seja composta (fazendo chamadas) a outras funções, lembre-se de considerar a complexidade também dessas funções, fazendo uma análise conjunta.
\par Um exemplo de análise para uma função qualquer é apresentada a seguir:
\par\textbf{função f1 - complexidade de tempo:} essa função realiza operações constantes, em tempo $O(1)$. Além disso, há dois laços aninhados que iteram por toda a entrada de tamanho n. Dessa forma, a complexidade assintótica de tempo dessa função é $\Theta(n^2)$.
\par\textbf{função f1 - complexidade de espaço:} essa função realiza todas as operações considerando estruturas auxiliares unitárias $O(1)$ e o vetor de entrada de tamanho n, que é passado como parâmetro da função. Assim, a complexidade assintótica de espaço dessa função é $\Theta(n)$.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Seções adicionais}
\par Dependendo da especificação do trabalaho prático, podem haver seções adicionais a serem descritas na sua documentação, como por exemplo, experimentações comparativas entre algoritmos. Para esses casos, procure seguir as orientações descritas na especificação do trabalho.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Conclusão}
\par Por fim, na conclusão, retome de maneira sucinta o problema tratado e a sua abordagem para resolvê-lo (“Este trabalho lidou com o problema ..., na qual a abordagem utilizada para sua resolução foi ...”).
\par Apresente as principais contribuições e considerações com relação a solução que voce propôs. (“Com a solução adotada, pode-se verificar que ...”).
\par Informe quais os principais ganhos que voce obteve como aluno da disciplina (“Por meio da resolução desse trabalho, foi possível praticar os conceitos relacionados a ...”). E muito importante também que você apresente as principais dificuldades encontradas durante o seu desenvolvimento (“Durante a implementação da solução para o problema, houveram importantes desafios a serem superados, por exemplo ... ”).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{References}
\par Chaimowicz, L. and Prates, R. (2020). Slides virtuais da disciplina de estruturas de dados.
\par Disponibilizado via moodle. Departamento de Ciência da Computação. Universidade Federal de Minas Gerais. Belo Horizonte.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Some LaTeX Commands}
Here are some example sentences using LaTeX commands:\\
If $a\equiv 2\pmod{3}$, then $a^2\equiv 1\pmod 3$.\\
If $x$ and $y$ are positive real numbers, the arithmetic mean is $\dfrac{x+y}{2}$ and the geometric mean is $\sqrt{xy}$.\\https://www.overleaf.com/project/63128be7c2748ed8fac8c8ad
The union of two sets is $A\cup B$ and the intersection of two sets is $A\cap B$.\\
Let $(x,y)\in A\times B$.\\
Let $f:\mathbb{R}\to\mathbb{R}$ be defined by $f(x)=x^{2019}$.\\
In set-builder notation, the set of all odd integers is $\{2k+1\mid k\in\mathbb{Z}\}$.\\
Suppose that
\[1+3+5+\cdots+(2k-1) = k^2.\]
Note that if $a=2k$, then
\begin{align*}
a^2+3a+5 &= (2k)^2+3(2k)+5 \\
&= 4k^2+6k+4+1 \\
&= 2(2k^2+3k+2)+1.
\end{align*}
If $g\circ f$ is surjective, then $g$ is surjective.\\
Note that $\NN\subseteq \ZZ\subseteq \QQ\subseteq\RR\subseteq\CC$.
\begin{theorem}
Replace this text with the theorem statement.
\end{theorem}
\begin{proof}
Write your proof here.
\end{proof}
\end{document}