Pearson Education Slide 1. Pearson Education Slide 2 Capítulo 2 Criado por Frederick H. Colclough,...

41
Pearson Education Slide 1

Transcript of Pearson Education Slide 1. Pearson Education Slide 2 Capítulo 2 Criado por Frederick H. Colclough,...

Page 1: 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 1

Page 2: 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 2

Capítulo 2

Criado por Frederick H. Colclough, Colorado Technical University

Fluxo de Controle

Page 3: 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

Page 4: 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 4

Expressões Booleanas Operadores Lógicos

Operador lógico AND (&&)

Operador lógico OR (||)

Painel 2.1 página 30

Page 5: 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 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

Page 6: 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 6

Avaliando Expressões Booleanas(cont.)

Painel 2.2 página 31

Page 7: 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 7

Precedência dos OperadoresPainel 2.3 páginas 32-33

Page 8: 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 8

Precedência dos Operadores (cont.)

Painel 2.3páginas 32-33

Page 9: 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 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

Page 10: 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 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;

Page 11: 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 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

Page 12: 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 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

Page 13: 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 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;

}

Page 14: 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 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

Page 15: 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 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

Page 16: 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 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!

Page 17: 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 17

if-else de seleções múltiplas Não é novo,

simplesmente um alinhamento diferente

Evite aninhamentos ‘excessivos’

Sintaxe:

Painel página 39

Page 18: 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 18

Exemplo de if-else de seleções múltiplas

Painel página 39

Page 19: 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 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

Page 20: 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 20

Sintaxe do comando switch

Painel página 40

Page 21: 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 21

O comando switch em Ação

Painel

página 41

Page 22: 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 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’

Page 23: 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 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

Page 24: 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 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.”;}

Page 25: 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 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’

Page 26: 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 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’

Page 27: 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 27

Sintaxe dos Loops while

Painel página 43

Page 28: 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 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?

Page 29: 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 29

Sintaxe dos Loops whilePainel página 44

Page 30: 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 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!

Page 31: 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 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’’

Page 32: 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 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

Page 33: 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 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

Page 34: 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 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’

Page 35: 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 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

}

Page 36: 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 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!

Page 37: 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 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’

Page 38: 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 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!

Page 39: 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 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 { }

Page 40: 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 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

Page 41: 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 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