From e454bb0f02d16ba7e5d61c76d2b5219d65e323df Mon Sep 17 00:00:00 2001
From: Walmes Zeviani <walmes@ufpr.br>
Date: Wed, 1 Aug 2018 18:54:12 -0300
Subject: [PATCH] =?UTF-8?q?Adiciona=20aula=20de=20documenta=C3=A7=C3=A3o?=
 =?UTF-8?q?=20de=20c=C3=B3digo.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 slides/02-docum-codigo.Rnw | 279 +++++++++++++++++++++++++++++++++++++
 1 file changed, 279 insertions(+)
 create mode 100644 slides/02-docum-codigo.Rnw

diff --git a/slides/02-docum-codigo.Rnw b/slides/02-docum-codigo.Rnw
new file mode 100644
index 0000000..0aa091a
--- /dev/null
+++ b/slides/02-docum-codigo.Rnw
@@ -0,0 +1,279 @@
+%-----------------------------------------------------------------------
+
+\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}
-- 
GitLab