Commit aeb5a1042e9b13b8329ef97b617cd9d45084c1cc

Authored by David Deharbe
1 parent 81b2555d06
Exists in master

1a versao (falta relacionar o comando if com o modelo abastrato do computador)

Showing 1 changed file with 217 additions and 2 deletions Side-by-side Diff

slides/au03/aula03.tex View file @ aeb5a10
... ... @@ -10,12 +10,12 @@
10 10 % \usecolortheme{dove}
11 11 \usepackage{tikz}
12 12 \usetikzlibrary{positioning}
13   -\title{Aula 03}
  13 +\title{Assunto 03}
14 14 \author{David Déharbe \\
15 15 Universidade Federal do Rio Grande do Norte \\
16 16 Centro de Ciências Exatas e da Terra \\
17 17 Departamento de Informática e Matemáica Aplicada}
18   -\date{t.b.d.}
  18 +\date{23 de fevereiro de 2015}
19 19  
20 20 \newcounter{ProblemCtr}
21 21  
... ... @@ -91,6 +91,21 @@
91 91  
92 92 \begin{frame}
93 93  
  94 +\frametitle{Novidades.}
  95 +
  96 +\begin{itemize}
  97 +
  98 +\item Como \alert{imprimir texto}?
  99 +
  100 +\item O texto a imprimir depende de certas \alert{condições}: como testar
  101 + condições?
  102 +
  103 +\end{itemize}
  104 +
  105 +\end{frame}
  106 +
  107 +\begin{frame}
  108 +
94 109 \frametitle{Imprimindo textos.}
95 110  
96 111 \texttt{printf("S$\backslash$n");}
... ... @@ -130,6 +145,206 @@
130 145 \pause
131 146 \alert{(esses comandos devem estar em um programa.)}
132 147  
  148 +\end{frame}
  149 +
  150 +\begin{frame}
  151 +
  152 + \frametitle{Condições}
  153 +
  154 + O algoritmo é:
  155 + \begin{itemize}
  156 + \item Se a esfera é grande o suficiente, então imprimir \texttt{S};
  157 + \item senão, imprimir \texttt{N}.
  158 + \end{itemize}
  159 +
  160 + \pause
  161 + Qual o equivalente ao ``se ... então ... senão ...'' em C?
  162 +
  163 + \begin{itemize}
  164 + \item \alert{\texttt{if (...) ... else ...}} \pause
  165 + \item \alert{\texttt{if (} ``condição'' \texttt{)} ``comando'' \texttt{else} ``outro comando''} \pause
  166 + \item Exemplo
  167 +
  168 + \begin{tabular}{l}
  169 + \texttt{int idade;} \\
  170 + \texttt{scanf("\%i", \&idade);} \\
  171 + \texttt{if (idade < 18)} \\
  172 + \quad \texttt{printf("menor");} \\
  173 + \texttt{else} \\
  174 + \quad \texttt{printf("maior");}
  175 + \end{tabular}
  176 + \end{itemize}
  177 +
  178 +\end{frame}
  179 +
  180 +\begin{frame}
  181 +
  182 + \frametitle{Exemplo}
  183 +
  184 + \begin{tabular}{l}
  185 + \texttt{\#include <stdio.h>} \\
  186 + \texttt{int main(void) \{} \\
  187 + \quad \texttt{int idade;} \\
  188 + \quad \texttt{scanf("\%i", \&idade);} \\
  189 + \quad \texttt{if (idade < 18)} \\
  190 + \quad \quad \texttt{printf("menor$\backslash$n");} \\
  191 + \quad \texttt{else} \\
  192 + \quad \quad \texttt{printf("maior$\backslash$n");} \\
  193 + \quad \texttt{return 0;}\\
  194 + \texttt{\}}
  195 + \end{tabular}
  196 + \begin{itemize}
  197 + \item lê um inteiro, armazena na variável \texttt{idade};
  198 + \item testa se o valor armazenado for menor que 18
  199 + \begin{itemize}
  200 + \item se o teste for positivo, imprime \texttt{menor};
  201 + \item se o teste for negativo, imprime \texttt{maior}.
  202 + \end{itemize}
  203 + \end{itemize}
  204 +
  205 +\end{frame}
  206 +
  207 +\begin{frame}
  208 +
  209 + \frametitle{Observações}
  210 +
  211 + \begin{itemize}
  212 +
  213 + \item A condição deve ser entre parênteses:
  214 +
  215 + \texttt{if (idade < 18)}
  216 +
  217 + \item Para executar mais de um comando sujeito a uma condição, deve
  218 + se juntar eles em um \alert{bloco} com um par de chaves:
  219 +
  220 + \begin{tabular}{l}
  221 + \texttt{if (idade < 18)} \\
  222 + \quad \alert{\texttt{\{}} \\
  223 + \quad \quad \alert{\texttt{printf("menor$\backslash$n");}} \\
  224 + \quad \quad \alert{\texttt{printf("maior em \%i ano(s).$\backslash$n", 18 - idade)}} \\
  225 +
  226 + \quad \alert{\texttt{\}}} \\
  227 + \texttt{else} \\
  228 + \quad \texttt{printf("maior$\backslash$n");} \\
  229 + \end{tabular}
  230 +
  231 + \item Também pode se juntar vários comandos em um bloco após o \texttt{else}.
  232 +
  233 + \end{itemize}
  234 +\end{frame}
  235 +
  236 +\begin{frame}
  237 +
  238 + \frametitle{Observações}
  239 +
  240 + \begin{itemize}
  241 + \item A parte \texttt{else} é opcional
  242 +
  243 + \item Exemplo:
  244 +
  245 + \begin{tabular}{l}
  246 + \texttt{int num;} \\
  247 + \texttt{scanf("\%i", \& num);} \\
  248 + \texttt{if (num < 0)} \\
  249 + \quad \texttt{num = - num;} \\
  250 + \texttt{printf("valor absoluto: \%i$\backslash$n", num);}
  251 + \end{tabular}
  252 +
  253 + \end{itemize}
  254 +
  255 +\end{frame}
  256 +
  257 +\begin{frame}
  258 +
  259 + \frametitle{Observações}
  260 +
  261 + \begin{itemize}
  262 +
  263 + \item Todas as combinações de comandos condicionais são autorizadas.
  264 +
  265 + \item \only<1>{Aninhamento de condicionais
  266 +
  267 + \begin{tabular}{l}
  268 + \texttt{if (x < 0)} \\
  269 + \quad \texttt{\{} \\
  270 + \quad \quad \texttt{if (y < 0)} \\
  271 + \quad \quad \quad \texttt{printf("sudoeste$\backslash$n");} \\
  272 + \quad \quad \texttt{else} \\
  273 + \quad \quad \quad \texttt{printf("noroeste$\backslash$n");} \\
  274 + \quad \texttt{\}} \\
  275 + \texttt{else} \\
  276 + \quad \texttt{\{} \\
  277 + \quad \quad \texttt{if (y < 0)} \\
  278 + \quad \quad \quad \texttt{printf("sudeste$\backslash$n");} \\
  279 + \quad \quad \texttt{else} \\
  280 + \quad \quad \quad \texttt{printf("nordeste$\backslash$n");} \\
  281 + \quad \texttt{\}}
  282 + \end{tabular}
  283 + }
  284 + \pause
  285 +
  286 + \only<2>{Encadeamento de condicionais
  287 +
  288 + \begin{tabular}{l}
  289 + \texttt{if (media >= 7)} \\
  290 + \quad \texttt{printf("aprovado$\backslash$n");} \\
  291 + \texttt{else if (media >= 3)} \\
  292 + \quad \texttt{printf("em recuperacao$\backslash$n");} \\
  293 + \texttt{else} \\
  294 + \quad \texttt{printf("reprovado$\backslash$n");} \\
  295 + \end{tabular}
  296 +
  297 + }
  298 +
  299 + \end{itemize}
  300 +
  301 +\end{frame}
  302 +
  303 +\begin{frame}
  304 +
  305 + \frametitle{Condições e operadores relacionais}
  306 +
  307 + Alguns dos operadores possíveis para testar condições são os seguintes:
  308 + \begin{itemize}
  309 + \item igualdade \alert{\texttt{==}}
  310 + \item diferença \alert{\texttt{!=}}
  311 + \item menor estritamente \alert{\texttt{<}}
  312 + \item menor ou igual \alert{\texttt{<=}}
  313 + \item maior estritamente \alert{\texttt{>}}
  314 + \item maior ou igual \alert{\texttt{>=}}
  315 + \end{itemize}
  316 + \pause
  317 +
  318 + \alert{atenção:}
  319 + \begin{itemize}
  320 +
  321 + \item Todos esses operadores são binários (tem dois operandos)
  322 +
  323 + \item É correto escrever, em notação matemática: $3 \le n < 7$.
  324 +
  325 + \item A tradução desta condição para C não é \texttt{3 <= b < 7}!
  326 +
  327 + \end{itemize}
  328 +\end{frame}
  329 +
  330 +\begin{frame}
  331 +
  332 +\frametitle{Resumo}
  333 +
  334 +\begin{itemize}
  335 +
  336 +\item Entrada: impressão de texto
  337 +\item Prato principal: o comando condicional \texttt{if}
  338 +\item Acompanhamento: os operadores relacionais.
  339 +\item Sobremesa: resolver os problemas seguintes da OBI
  340 +\begin{itemize}
  341 +\item Júnior, 2012, fase 1, Campeonato
  342 +\item Júnior, 2012, fase 2, Receita de bolo
  343 +\item Nível 1, 2014, fase 1, Triângulo
  344 +\item Nível 1, 2013, fase 1, Corrida
  345 +\item Júnior, 2013, fase 1, Capital
  346 +\end{itemize}
  347 +\end{itemize}
133 348 \end{frame}
134 349  
135 350 \end{document}