Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • v.2016
2 results

02-docum-codigo.Rnw

Blame
  • 02-docum-codigo.Rnw 7.79 KiB
    %-----------------------------------------------------------------------
    
    \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}