pearson education slide 1. pearson education slide 2 capítulo 2 criado por frederick h. colclough,...
TRANSCRIPT
Pearson Education Slide 1
Pearson Education Slide 2
Capítulo 2
Criado por Frederick H. Colclough, Colorado Technical University
Fluxo de Controle
Pearson Education Slide 3
Objetivos do Estudo Expressões Booleanas
Construindo, Avaliando e Regras de Precedência
Estruturas de Controle if-else switch if-else aninhado
Loops While, do-while e for Loops aninhados
Pearson Education Slide 4
Expressões Booleanas Operadores Lógicos
Operador lógico AND (&&)
Operador lógico OR (||)
Painel 2.1 página 30
Pearson Education Slide 5
Avaliando Expressões Booleanas Tipo bool
Retorna true ou false true, false são constantes predefinidas
Tabelas da verdade Painel 2.2 no próximo slide
Pearson Education Slide 6
Avaliando Expressões Booleanas(cont.)
Painel 2.2 página 31
Pearson Education Slide 7
Precedência dos OperadoresPainel 2.3 páginas 32-33
Pearson Education Slide 8
Precedência dos Operadores (cont.)
Painel 2.3páginas 32-33
Pearson Education Slide 9
Exemplos de Precedência Aritmética antes da lógica
x + 1 > 2 || x + 1 < -3 significa:(x + 1) > 2 || (x + 1) < -3
Avaliação curto-circuito (x >= 0) && (y > 1) Cuidado com operadores de incremento!
(x > 1) && (y++)
Inteiros como valores booleanos Todos os valores não-zero true Zero false
Pearson Education Slide 10
Estruturas de Controle Comandos if-else
Escolhe entre dois comandos alternativosbaseado no valor de uma expressão booleana
Exemplo:if (horas > 40)
pagamentoBruto = taxa*40 + 1.5*taxa*(horas-40);else
pagamentoBruto = taxa*horas;
Pearson Education Slide 11
Sintaxe do comando if-else Sintaxe Formal:
if (<expressao_booleana>)<Sim_comando>
else<nao_comando>
Note que cada alternativa tem somente UMcomando!
Para ter múlitplos comandos encerre-os entre chaves { } comando composto
Pearson Education Slide 12
Comando composto/bloco Somente ‘tenha’ um comando por ramificação Deve ser usado um comando composto
{ } para múltiplos Também chamado de ‘bloco’ de comandos
Cada bloco deveria ter um ‘bloco de comandos’
Mesmo se contiver somente um comando Melhora a legibilidade
Pearson Education Slide 13
Comando composto em Ação Note o alinhamento neste exemplo:
if (meusPontos > seusPontos){
cout << “Eu ganhei!\n”;aposta = aposta + 100;
}else{
cout << “Queria que esses pontos fossem de
golfe.\n”;aposta = 0;
}
Pearson Education Slide 14
Armadilhas Comuns Operador ‘=‘ vs. operator ‘==‘ Um significa ‘atribuição’ (=) O outro significa ‘igualdade’ (==)
MUITO diferente em C++! Exemplo:
if (x = 12) Note o operador utilizado! Faca_Alguma_Coisaelse
Faca_Outra_Coisa
Pearson Education Slide 15
O else opcional A cláusula else é opcional
Se em uma ramificação falsa (else), você querque ‘nada’ aconteça, pode omitir o ‘else’
Exemplo:if (vendas >= minimo)
salario = salario + bonus;cout << “salario = R$” << salario;
Nota: Não fazer nada para a condição falsa,assim não existe a cláusula else!
Execução continua no comando cout
Pearson Education Slide 16
Comandos Aninhados Comandos if-else contém comandos
menores Comandos simples ou compostos (vimos até agora) Podem também conter qualquer comando,
incluindo outro comando if-else! Exemplo:
if (velocidade > 55)if (velocidade > 80)
cout << “Você está relmente corrento!”;
elsecout << “Você está corrento.”;
Note o alinhamento adequado!
Pearson Education Slide 17
if-else de seleções múltiplas Não é novo,
simplesmente um alinhamento diferente
Evite aninhamentos ‘excessivos’
Sintaxe:
Painel página 39
Pearson Education Slide 18
Exemplo de if-else de seleções múltiplas
Painel página 39
Pearson Education Slide 19
O comando switch Um novo comando para controle de
múlti-plas ramificações
Utiliza uma expressão de controle a qual
retorna um tipo bool (true or false) Sintaxe:
Painel da página 40 no próximo slide
Pearson Education Slide 20
Sintaxe do comando switch
Painel página 40
Pearson Education Slide 21
O comando switch em Ação
Painel
página 41
Pearson Education Slide 22
switch: múltiplos case A execução ‘continua’ até break
switch fornece um ‘ponto de entrada’ Exemplo:
case ‘A’:case ‘a’:
cout << “Excelente: você tirou ‘A’!\n”;
break;case ‘B’:case ‘b’:
cout << “bom: você tirou um ‘B’!\n”;break;
Note que múltiplos cases fornecem a mesma ‘entrada’
Pearson Education Slide 23
Armadilhas/Dicas Esquecendo o break;
Nenhum erro será emitido pelo compilador A execução simplesmente ‘segue através’
de outros cases até break;
Grande utilidade: MENUS Fornece uma visão esclarecedora Mostra efetivamente a estrutura do menu Cada ramificação pode se uma opção do menu
Pearson Education Slide 24
Exemplo de Menu com switch Comando switch ‘perfeito’ para menus:
switch (resposta){
case ‘1’:// Executa a opção 1 do menu break;
case ‘2’:// Executa a opção 2 do menubreak;
case 3’:// Executa a opção 3 do menu break;
default:cout << “Favor digitar uma resposta
válida.”;}
Pearson Education Slide 25
Operador Condicional Também chamado de ‘Operador Ternário’
Permite inserir um condicional em uma expressão Essencialmente um operador if-else
‘abreviado’ Exemplo:
if (n1 > n2)max = n1;
elsemax = n2;
Pode ser escrito:max = (n1 > n2) ? N1 : n2;
‘?’ e ‘:’ juntos formam um operador ‘ternário’
Pearson Education Slide 26
Loops 3 Tipos de loops em C++:
while Mais flexível Sem ‘restrições’
do-while Menos flexível Sempre executa o corpo de loop pelo menos uma
vez
for Loop natural de ‘contagem’
Pearson Education Slide 27
Sintaxe dos Loops while
Painel página 43
Pearson Education Slide 28
Exemplo de Loop while
Considere:count = 0; // Inicializaçãowhile (count < 3) // Condição do Loop {
cout << “Hi “; // Corpo de Loopcount++; // Expressão de
atualização}
Quantas vezes o corpo de loop é executado?
Pearson Education Slide 29
Sintaxe dos Loops whilePainel página 44
Pearson Education Slide 30
Exemplo de Loop do-while count = 0; // Inicialização
do {
cout << “Oi “; // Corpo de Loop count++; // Expressão de atualização
} while (count < 3); // Condição do Loop Quantas vezes o corpo de loop é executado? Loops do-while sempre executam o corpo de
loop pelo menos uma vez!
Pearson Education Slide 31
while vs. do-while Muito parecidos, mas…
Uma diferença importante: A questão é ‘QUANDO’ a expressão booleana é verificada while: Verifica ‘ANTES’ que o corpo seja executado do-while: Verifica ‘DEPOIS’ que o corpo foi
executado
‘Fora isso’, eles são essencialmenteidênticos!
while é mais comum, devido ao fato dede ser mais ‘flexível’’
Pearson Education Slide 32
OPERADOR VÍRGULA Avalia uma lista de expressões e fornece
o valor da última expressão. Mais freqüentemente usado em um loop for Exemplo:
resultado = (primeiro = 2, segundo = primeiro + 1); resultado recebe o valor 3 segundo recebe o valor 3
Não há garantia de que a expressão
será avaliada na ordem correta
Pearson Education Slide 33
Sintaxe do Loop for
for (Acao_De_Inicializacao; Expressao_Booleana; Acao_De_Atualizacao)
Corpo_Do_Comando
Como if-else, Corpo_Do_Comando pode ser
um bloco de comando Muito mais clássico
Pearson Education Slide 34
Exemplo do Loop for for (contador=0; contador<3; contador++)
{cout << “Olá “; // Corpo de loop
} Quantas vezes o corpo de loop é executado? Inicialização, Condição e Atualização estão
‘embutidos’ dentro da estrutura do loop for Um loop natural para ‘contagem’
Pearson Education Slide 35
Loop A expressão de condição do loop pode
serQUALQUER expressão booleana
Exemplos: while (contador<3 && feito!=0)
{// Faça algo
} for (indice=0;indice<10 && entrada!=-99)
{// Faça algo
}
Pearson Education Slide 36
Armadilhas: Colocar ; no lugar errado
Veja o ; (ponto-e-virgula) no lugar errado Exemplo:
while (resposta != 0) ;{
cout << “Entre valor: “;cin >> resposta;
} Observe o ‘;’ depois da condição while!
Resultado: UM LOOP INFINITO!
Pearson Education Slide 37
Armadilhas: Loops Infinitos Condição do Loop deve tornar-se falsa em
alguma iteração do loop Se isso não ocorrer loop infinito. Exemplo:
while (1){
cout << “Olá “;}
Um loop perfeitamente legal em C++ sempre infinito! Loops infinitos podem ser desejáveis
Ex.: ‘programa de reservas de passagens aéreas’
Pearson Education Slide 38
COMANDOS break e continue Fluxo de controle
Lembre-se como os loops fornecem ‘elegância’ e um fluxo limpo de controle e saída
Em RARAS instâncias, pode-se alterar o fluxo break;
Força a saída do loop imediatamente. continue;
Pula o resto do corpo de loop Este comando viola o fluxo natural
Somente usado quando absolutamente necessário!
Pearson Education Slide 39
Loops Aninhados Lembre-se : QUAISQUER comandos C++
válidos podem estar dentro do corpo de loop Isso inclui comandos adicionais de loop!
Chamados ‘Loops Aninhados’ Requerem cuidado no alinhamento:
for (externo=0; externo<5; externo++) for (interno=7; interno>2; interno--)
cout << externo << interno; Nenhuma { } uma vez que cada corpo é um comando Um bom estilo recomenda o uso de { }
Pearson Education Slide 40
Sumário 1 Expressões booleanas
Parecidas com a Aritmética resultados em true or false
Estruturas de controle em C++ if-else e switch Comando switch: notável para menus
Comandos de loop em C++ while do-while for
Pearson Education Slide 41
Sumário 2 Loops do-while
sempre executam seu corpo de loop pelo menos uma vez!
Loop for Um loop natural para ‘contagem’
Loops podem ser interrompidos mais cedo
comando break comando continue Uso restrito por razão de estilo