Skip to content
Snippets Groups Projects
Commit e454bb0f authored by Walmes Marques Zeviani's avatar Walmes Marques Zeviani
Browse files

Adiciona aula de documentação de código.

parent 084eb431
No related branches found
No related tags found
No related merge requests found
%-----------------------------------------------------------------------
\documentclass[serif, professionalfont, usenames, dvipsnames]{beamer}
\usepackage[T1]{fontenc}
% ATTENTION: preamble.tex contains all style definitions.
\input{config/preamble.tex}
\bibliography{./config/refs}
<<include = FALSE>>=
source("config/setup.R")
@
%-----------------------------------------------------------------------
\title{Representação de algorítmos}
\subtitle{Fluxogramas e pseudo-código}
\date{\small{ \Sexpr{sprintf('Atualizado em %s', Sys.Date())}}}
%-----------------------------------------------------------------------
\begin{document}
{\setbeamertemplate{footline}{}
\frame{\titlepage} %--------------------------------------------------
}
\begin{frame}{}
{\large Justificativas}
\begin{itemize}
\item Documentar rotinas de forma independente de linguagem é
importante para comunicação entre programadores.
\item Também é funciona como uma ``planta-baixa'' para a
implementação, reduzindo muitos erros de programação.
\end{itemize}
\begin{flushright}
\textit{``If the map and the terrain disagree, trust the terrain.''}
\vspace{1ex}
-- Swiss Army Aphorism
\end{flushright}
{\large Objetivos}
\begin{itemize}
\item Conhecer a simbologia de fluxogramas para representação de
rotinas.
\item Conhecer o vocabulário de pseudo código ou portugol.
\item Exercitar a escrita e leitura com estas formas de representação.
\end{itemize}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{Simbologia de fluxogramas}
\begin{center}
\includegraphics[height=8cm]{../img/fluxograms.pdf}
\end{center}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}
\begin{minipage}[c]{0.25\linewidth}
\includegraphics[width=\linewidth]{../img/teofilo-fluxogramas.png}
\end{minipage}
\hspace{1ex}
\begin{minipage}[c]{0.7\linewidth}
\begin{flushleft}
SOUZA, T. M. \textbf{Fluxogramas, linguagem de programação basic e
aplicações}. 1 ed. Ligthouse
Editora. 2015.\\
\href{http://www.editoraufv.com.br/produto/1853470/fluxogramas-linguagem-de-programacao-basic-e-aplicacoes}{\btn{Comprar}}
\end{flushleft}
\end{minipage}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{Como entender fluxogramas}
\begin{center}
\includegraphics[height=7.5cm]{../img/understand-flowchart.png}
\end{center}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{Exemplos da aplicação de fluxogramas}
\begin{itemize}
\item
\url{http://www.inf.puc-rio.br/~inf1005/material/slides/backup/2010_2/tema02_algoritmos.pdf}
\item
\url{https://uomustansiriyah.edu.iq/media/lectures/5/5_2016_03_22!07_06_46_PM.pdf}
\item
\url{http://www2.ic.uff.br/~otton/graduacao/programacao/exemplos_pseudo_codigo.pdf}
\item
\url{http://producao.virtual.ufpb.br/books/edusantana/pseudocodigo-livro/livro/livro.chunked/ch02s04.html}
\end{itemize}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{Recursos para confecção de fluxogramas}
\mytwocolumns{0.49}{0.49}{
\begin{itemize}
\item \url{https://www.draw.io/}.
\item \url{https://cloud.smartdraw.com/}.
\item \url{https://www.lucidchart.com/}.
\item
\href{http://www.ioncannon.net/utilities/123/10-tips-for-creating-good-looking-diagrams-using-inkscape/}{Inkscape}.
\item
\href{http://www.texample.net/tikz/examples/tag/flowcharts/}{Tikz}.
\item
\href{http://dia-installer.de/shapes/Flowchart/index.html.en}{Dia}.
\item \href{https://www.graphviz.org/gallery/}{Graphviz}.
\item \href{http://www.flowgorithm.org/}{Flowgorithm}.
\end{itemize}
}{
\begin{itemize}
\item \url{https://code2flow.com/}.
\item \href{https://sourceforge.net/projects/edpcs/}{Edpcs}.
\item \href{https://pt.sharelatex.com/learn/algorithms}{\LaTeX}.
\end{itemize}
}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{Vantagens e desvantagens dos fluxogramas}
\begin{block}{Vantagens}
\begin{itemize}
\item Representação visual fácil de entender.
\item Útil para comunicação com pessoas sem experiência em
programação.
\item Útil para prototipar e reduzir tempo de escrita de código.
\end{itemize}
\end{block}
\begin{block}{Desvantagens}
\begin{itemize}
\item Não existe uma correspondência lógicas rígida com comandos de
linguagens.
\item Portanto não serve como meio de documentação precisa para
arquivamento (é complementar).
\end{itemize}
\end{block}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{Recordando sobre escrita de funções R}
\begin{itemize}
\item Dicas para nomes de função: ação $\rightarrow$ verbo.
\item Argumentos de função: parâmetro $\neq$ argumento.
\item Retorno da função: posição, conteúdo e impressão.
\item Comunicação com usuário (\href{http://adv-r.had.co.nz/Exceptions-Debugging.html}{\btn{Advanced R}}).
\begin{itemize}
\item Erros (\emph{erros}).
\item Avisos (\emph{warnings}).
\item Mensagens (\emph{messages}).
\end{itemize}
\item Tratamento de exceções.
\item Formas de chamar funções.
\item O uso de \texttt{...} em funções.
\end{itemize}
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}{Benchmarking, profiling e debbuging}
\begin{description}
\item[Benchmarking] é o processo de avaliar a performance de operações
específicas repetidamente.
\item[Profiling] é o processo de fazer o benchmark para cada instrução
de uma função/rotina.
\item[Debugging] é o processo de buscar e resolver erros. Técnicas de
debugging permitem avaliar a função passo a passo quando chamada.
\end{description}
\vfill
\myurl{https://bookdown.org/csgillespie/efficientR/}.
\end{frame}
%-----------------------------------------------------------------------
\begin{frame}[t, fragile, allowframebreaks]{Exemplo de aplicação}
{\large Benchmark}
<<>>=
library("microbenchmark")
df <- data.frame(v = 1:4, name = letters[1:4])
microbenchmark(df[3, 2], df[3, "name"], df$name[3])
@
\framebreak
{\large Profiling}
<<eval = FALSE>>=
library("profvis")
profvis({
x <- runif(10000000)
z <- rpois(10000000, lambda = 5)
x <- sort(x)
z <- sort(z)
mean(x)
mean(z)
median(x)
median(z)
})
@
\framebreak
{\large Debugging}
<<eval = FALSE>>=
baskara <- function(a, b, c) {
stopifnot(a != 0)
delta <- b^2 - 4 * a * c
if (delta >= 0) {
den <- 2 * a
sqrt_delta <- sqrt(delta)
x <- (-b + c(-1, 1) * sqrt_delta)/den
} else { x <- NULL }
return(x)
}
# Entra no modo de debug.
debug(fun = baskara)
# Chama a função.
baskara(a = -3, b = 1, c = 2)
# Sai do modo de debug.
undebug(fun = baskara)
@
\end{frame}
%-----------------------------------------------------------------------
{
\usebackgroundtemplate{\includegraphics[height=\paperheight, width=\paperwidth]{../img/looking-ahead.jpg}}
% \setbeamersize{text margin left=30mm}
\begin{frame}[b]{}
\hspace*{0.5\linewidth}
\begin{minipage}[t]{0.5\linewidth}
\hi{Próximo assunto}
\begin{itemize}
\item Programação funcional.
\item Família \texttt{*apply}.
\item Pacote \texttt{purrr}.
\end{itemize}
\hi{Semana que vem}
\begin{itemize}
\item Sabatina no Moodle.
\item Aula com outro professor (talvez).
\end{itemize}
\end{minipage}
\end{frame}
}
%-----------------------------------------------------------------------
\end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment