From aeb5a1042e9b13b8329ef97b617cd9d45084c1cc Mon Sep 17 00:00:00 2001 From: David Deharbe Date: Tue, 24 Feb 2015 19:50:06 -0300 Subject: [PATCH] 1a versao (falta relacionar o comando if com o modelo abastrato do computador) --- slides/au03/aula03.tex | 219 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 217 insertions(+), 2 deletions(-) diff --git a/slides/au03/aula03.tex b/slides/au03/aula03.tex index bb211e0..e9d5753 100644 --- a/slides/au03/aula03.tex +++ b/slides/au03/aula03.tex @@ -10,12 +10,12 @@ % \usecolortheme{dove} \usepackage{tikz} \usetikzlibrary{positioning} -\title{Aula 03} +\title{Assunto 03} \author{David Déharbe \\ Universidade Federal do Rio Grande do Norte \\ Centro de Ciências Exatas e da Terra \\ Departamento de Informática e Matemáica Aplicada} -\date{t.b.d.} +\date{23 de fevereiro de 2015} \newcounter{ProblemCtr} @@ -91,6 +91,21 @@ destino. \begin{frame} +\frametitle{Novidades.} + +\begin{itemize} + +\item Como \alert{imprimir texto}? + +\item O texto a imprimir depende de certas \alert{condições}: como testar + condições? + +\end{itemize} + +\end{frame} + +\begin{frame} + \frametitle{Imprimindo textos.} \texttt{printf("S$\backslash$n");} @@ -132,4 +147,204 @@ $\Longrightarrow$ \begin{tabular}[t]{l}\texttt{Este eh um texto bastante extenso \end{frame} +\begin{frame} + + \frametitle{Condições} + + O algoritmo é: + \begin{itemize} + \item Se a esfera é grande o suficiente, então imprimir \texttt{S}; + \item senão, imprimir \texttt{N}. + \end{itemize} + + \pause + Qual o equivalente ao ``se ... então ... senão ...'' em C? + + \begin{itemize} + \item \alert{\texttt{if (...) ... else ...}} \pause + \item \alert{\texttt{if (} ``condição'' \texttt{)} ``comando'' \texttt{else} ``outro comando''} \pause + \item Exemplo + + \begin{tabular}{l} + \texttt{int idade;} \\ + \texttt{scanf("\%i", \&idade);} \\ + \texttt{if (idade < 18)} \\ + \quad \texttt{printf("menor");} \\ + \texttt{else} \\ + \quad \texttt{printf("maior");} + \end{tabular} + \end{itemize} + +\end{frame} + +\begin{frame} + + \frametitle{Exemplo} + + \begin{tabular}{l} + \texttt{\#include } \\ + \texttt{int main(void) \{} \\ + \quad \texttt{int idade;} \\ + \quad \texttt{scanf("\%i", \&idade);} \\ + \quad \texttt{if (idade < 18)} \\ + \quad \quad \texttt{printf("menor$\backslash$n");} \\ + \quad \texttt{else} \\ + \quad \quad \texttt{printf("maior$\backslash$n");} \\ + \quad \texttt{return 0;}\\ + \texttt{\}} + \end{tabular} + \begin{itemize} + \item lê um inteiro, armazena na variável \texttt{idade}; + \item testa se o valor armazenado for menor que 18 + \begin{itemize} + \item se o teste for positivo, imprime \texttt{menor}; + \item se o teste for negativo, imprime \texttt{maior}. + \end{itemize} + \end{itemize} + +\end{frame} + +\begin{frame} + + \frametitle{Observações} + + \begin{itemize} + + \item A condição deve ser entre parênteses: + + \texttt{if (idade < 18)} + + \item Para executar mais de um comando sujeito a uma condição, deve + se juntar eles em um \alert{bloco} com um par de chaves: + + \begin{tabular}{l} + \texttt{if (idade < 18)} \\ + \quad \alert{\texttt{\{}} \\ + \quad \quad \alert{\texttt{printf("menor$\backslash$n");}} \\ + \quad \quad \alert{\texttt{printf("maior em \%i ano(s).$\backslash$n", 18 - idade)}} \\ + + \quad \alert{\texttt{\}}} \\ + \texttt{else} \\ + \quad \texttt{printf("maior$\backslash$n");} \\ + \end{tabular} + + \item Também pode se juntar vários comandos em um bloco após o \texttt{else}. + + \end{itemize} +\end{frame} + +\begin{frame} + + \frametitle{Observações} + + \begin{itemize} + \item A parte \texttt{else} é opcional + + \item Exemplo: + + \begin{tabular}{l} + \texttt{int num;} \\ + \texttt{scanf("\%i", \& num);} \\ + \texttt{if (num < 0)} \\ + \quad \texttt{num = - num;} \\ + \texttt{printf("valor absoluto: \%i$\backslash$n", num);} + \end{tabular} + + \end{itemize} + +\end{frame} + +\begin{frame} + + \frametitle{Observações} + + \begin{itemize} + + \item Todas as combinações de comandos condicionais são autorizadas. + + \item \only<1>{Aninhamento de condicionais + + \begin{tabular}{l} + \texttt{if (x < 0)} \\ + \quad \texttt{\{} \\ + \quad \quad \texttt{if (y < 0)} \\ + \quad \quad \quad \texttt{printf("sudoeste$\backslash$n");} \\ + \quad \quad \texttt{else} \\ + \quad \quad \quad \texttt{printf("noroeste$\backslash$n");} \\ + \quad \texttt{\}} \\ + \texttt{else} \\ + \quad \texttt{\{} \\ + \quad \quad \texttt{if (y < 0)} \\ + \quad \quad \quad \texttt{printf("sudeste$\backslash$n");} \\ + \quad \quad \texttt{else} \\ + \quad \quad \quad \texttt{printf("nordeste$\backslash$n");} \\ + \quad \texttt{\}} + \end{tabular} + } + \pause + + \only<2>{Encadeamento de condicionais + + \begin{tabular}{l} + \texttt{if (media >= 7)} \\ + \quad \texttt{printf("aprovado$\backslash$n");} \\ + \texttt{else if (media >= 3)} \\ + \quad \texttt{printf("em recuperacao$\backslash$n");} \\ + \texttt{else} \\ + \quad \texttt{printf("reprovado$\backslash$n");} \\ + \end{tabular} + + } + + \end{itemize} + +\end{frame} + +\begin{frame} + + \frametitle{Condições e operadores relacionais} + + Alguns dos operadores possíveis para testar condições são os seguintes: + \begin{itemize} + \item igualdade \alert{\texttt{==}} + \item diferença \alert{\texttt{!=}} + \item menor estritamente \alert{\texttt{<}} + \item menor ou igual \alert{\texttt{<=}} + \item maior estritamente \alert{\texttt{>}} + \item maior ou igual \alert{\texttt{>=}} + \end{itemize} + \pause + + \alert{atenção:} + \begin{itemize} + + \item Todos esses operadores são binários (tem dois operandos) + + \item É correto escrever, em notação matemática: $3 \le n < 7$. + + \item A tradução desta condição para C não é \texttt{3 <= b < 7}! + + \end{itemize} +\end{frame} + +\begin{frame} + +\frametitle{Resumo} + +\begin{itemize} + +\item Entrada: impressão de texto +\item Prato principal: o comando condicional \texttt{if} +\item Acompanhamento: os operadores relacionais. +\item Sobremesa: resolver os problemas seguintes da OBI +\begin{itemize} +\item Júnior, 2012, fase 1, Campeonato +\item Júnior, 2012, fase 2, Receita de bolo +\item Nível 1, 2014, fase 1, Triângulo +\item Nível 1, 2013, fase 1, Corrida +\item Júnior, 2013, fase 1, Capital +\end{itemize} +\end{itemize} +\end{frame} + \end{document} -- 2.1.4