diff --git a/slides/01-revis-program.Rnw b/slides/01-revis-program.Rnw
index d3429d6add7e2dd96cccddf87ebcfbeb84ec7e6e..1a1218d488782214b6feb81ea873acc9d4646aba 100644
--- a/slides/01-revis-program.Rnw
+++ b/slides/01-revis-program.Rnw
@@ -46,7 +46,7 @@ source("config/setup.R")
 \end{frame}
 
 %-----------------------------------------------------------------------
-\begin{frame}[fragile, allowframebreaks]{Estruturas de controle}
+\begin{frame}[t, fragile, allowframebreaks]{Estruturas de controle}
 
   \begin{minipage}[t]{0.55\linewidth}
 
@@ -118,6 +118,12 @@ source("config/setup.R")
       <statments if FALSE and FALSE>
   }
   @
+
+    \begin{itemize}
+    \item O R não tem o contrutor \texttt{elif}.
+    \item Quando o código tem uma linha, não precisa de \texttt{\{\}}.
+    \end{itemize}
+
   \end{minipage}
 
   \framebreak %------------------------------
@@ -148,10 +154,13 @@ source("config/setup.R")
   @
 
   \begin{itemize}
+  \item O loop é executado enquanto a condição for \texttt{TRUE}.
   \item \texttt{break} e \texttt{next} podem ser usados.
   \item Cuidado com loops sem condições de parada (loops infinitos).
   \end{itemize}
 
+  \framebreak %------------------------------
+
   \begin{block}{Pergunta}
     \begin{enumerate}
     \item Quando usar \texttt{for} e \texttt{while}?
@@ -163,8 +172,200 @@ source("config/setup.R")
 
   {\large Laço de repetição com condional (repeat)}
 
+  <<eval = FALSE>>=
+  repeat {
+      <statments before 1st condition>
+      if (<1st condition>) break
+      <statments before 2nd condition>
+      if (<2nd condition>) break
+      <statments after 2nd condition>
+  }
+  @
+
+  \begin{itemize}
+  \item O loop é executado enquanto as condiçõs forem \texttt{TRUE}.
+  \item \texttt{break} e \texttt{next} podem ser usados.
+  \item As condições podem ser várias e estar em diferentes posições
+    dentro do código.
+  \end{itemize}
+
+  \framebreak %------------------------------
+
+  \begin{block}{Pergunta}
+    \begin{enumerate}
+    \item Quando usar \texttt{while} e \texttt{repeat}?
+    \item Qual dos dois é mais geral?
+    \end{enumerate}
+  \end{block}
+
+  \framebreak %------------------------------
+
   {\large Estrutura de casos (switch)}
 
+  <<eval = FALSE>>=
+  switch(<element>,
+         <value_1> = {
+             <statments 1st condition>
+         },
+         <value_2>= {
+             <statments 2nd condition>
+         },
+         {
+             <statments last condition>
+         })
+  @
+
+  \begin{itemize}
+  \item \texttt{switch()} pode representar estruturas de \texttt{if else
+      if} planas.
+  \item A condição é sempre a de igualdade.
+  \item Geralmente \texttt{switch()} é usado para igualdade de valor de
+    \emph{strings}.
+  \end{itemize}
+
+\end{frame}
+
+%-----------------------------------------------------------------------
+\begin{frame}[t, fragile, allowframebreaks]{Alguns problemas}
+
+  Qual o resultado desse código?
+
+  <<eval = FALSE>>=
+  x <- 7
+  if (x > 3) {
+      print("3")
+      if (x < 5) {
+          print("5")
+          if (x == 7) {
+              print("7")
+          }
+      }
+  }
+  @
+
+  \framebreak
+
+  Quais números são exibidos com a execução?
+
+  <<eval = FALSE>>=
+  i <- 3
+  while (i >= 0) {
+      print(i)
+      i <- i - 1
+  }
+  @
+
+  \framebreak
+
+  Quais números são exibidos com a execução?
+
+  <<eval = FALSE>>=
+  i <- 5
+  while (TRUE) {
+      print(i)
+      i <- i - 1
+      if (i <= 2) {
+          break
+      }
+  }
+  @
+
+  Como ficaria se fosse usado \texttt{repeat}.
+
+  \framebreak
+
+  Qual o valor de \texttt{j}?
+
+  <<eval = FALSE>>=
+  j <- 0
+  for (i in 1:10) {
+      if (j %% 3 == 0) {
+          j <- 1
+      }
+      j <- i
+  }
+  @
+
 \end{frame}
 
+%-----------------------------------------------------------------------
+\begin{frame}[t, fragile, allowframebreaks]{Funções}
+
+  {\large Protótipo da função}
+
+  <<eval = FALSE>>=
+  <funname> <- function(<arg_1>, <arg_2>, <arg_n>) {
+      <statments>
+      return(<values>)
+  }
+
+  <funname>(<arg_1> = <value_1>, <arg_2> = <value_2> , <arg_n> = <value_n>)
+  @
+
+  \framebreak
+
+  \begin{minipage}[t]{0.47\linewidth}
+
+  {\large Exemplo: fórmula de Báskara}
+
+  \begin{equation*}
+    x = \dfrac{-b \pm \sqrt{b^2 - 4 a c}}{2 a}
+  \end{equation*}
+
+  \end{minipage}
+  \hspace{1em}
+  \begin{minipage}[t]{0.47\linewidth}
+  <<results = "hold">>=
+  baskara <- function(a, b, c) {
+      stopifnot(a != 0)
+      delta <- b^2 - 4 * a * c
+      if (delta > 0) {
+          den <- 2 * a
+          sqrt_delta <- sqrt(delta)
+          x1 <- (-b - sqrt_delta)/den
+          x2 <- (-b + sqrt_delta)/den
+          return(c(x1, x2))
+      } else {
+          return(NULL)
+      }
+  }
+
+  baskara(-3, 2, 1)
+  # baskara(3, 2, 1)
+  # baskara(0, 2, 1)
+  @
+  \end{minipage}
+
+\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 Representação de código.
+      \item Práticas de implementação.
+      \item Programação funcional.
+      \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}