\documentclass{article}
\usepackage[brazil]{babel}
\usepackage[latin1]{inputenc}

\begin{document}

\title{Exemplos de Questões que Poderiam Cair na P2}

\maketitle

\begin{enumerate}
\item (1.0 ponto) Qual a relação entre o número de chamadas das funções
    \texttt{expr}, \texttt{termo} e \texttt{fator}, na calculadora recursiva
    descendente?

\item (3.5 pontos) Escreva um programa (curto) que tenha um ``bug'' tal
    que ele tenha um comportamento diferente cada vez que for rodado.
    Justifique.

  De quantos modos você consegue imaginar que isso pode ser feito?


\item (3.0 pontos) Escreva uma expressão regular para cada uma das
    seguintes condições:
    \begin{enumerate}
    \item Reconheça cadeias que tenha todas as vogais pelo menos uma vez
      e em ordem.
    \item Reconheça cadeias cujas vogais estejam em ordem.
    \item Reconheça exatamente 100 cadeias diferentes.
    \item Reconheça 101 cadeias diferentes.
    \end{enumerate}

\item (2.0 Pontos) Explique quais alterações você faria na calculadora recursiva para
  implementar os operadores >> e << (\emph{bit-shift-right} e
  \emph{bit-shift-left}) com precedência maior que qualquer outro operador.

\item (3.0 pontos) Escreva um programa em \texttt{awk} que lê um arquivo da
    entrada padrão e gera uma tabela de todas as palavras de comprimento
    maior do que 3 caracteres, onde cada linha contém a palavra na
    primeira posição, seguida por um `\texttt{:}' seguido pelos números das
    linhas onde a palavra
    ocorre. Por palavra entenda uma seqüência de \textbf{letras}\\
    % seleção  .5 
    % coleta   .5 
    % saida    .75
    % sintaxe  .75
    Depois, responda as perguntas abaixo:
    \begin{enumerate}
    \item As linhas aparecerão em ordem?     % .75
    \item As palavras aparecerão em ordem?   % .75
    \end{enumerate}
    Não se esqueça de justificar as suas respostas. 
  
\item (2.0 pontos) Escreva uma especificação em \texttt{flex} para um
    filtro que copia um texto, com a diferença que todos os números
    contidos na entrada são apresentados na saída divididos por $1000$.
    É importante a organização do código.\footnote{Atenção: na primeira
      prova o filtro era em `C'}
    % seleção       .5
    % formato       .5
    % código em C  1.0 

  
\item (1.0 ponto) Por que existe a preocupação em se `esconder' a
    estrutura de dados e a implementação das funções dentro de módulos
    de programa?
\end{enumerate}

Bom estudo!

\end{document}
