Baixe o app para aproveitar ainda mais
Prévia do material em texto
Estrutura Condicional Composta e Aninhamento de Comandos Cap. 3 do Livro Base Professor: Humberto Nigri hnigri@gmail.com Algoritmos 1o Sem 2012 HNigri - ATP 2 PRECEDÊNCIA DOS OPERADORES Unários - Menos unário ++ Inc. pré-fixado -- Decr pré-fixado ! Lógico NÃO Aritméticos * Multiplicação / Divisão % Módulo + Soma - Subtração Relacionais < <= Menor (ou igual) > >= Maior (ou igual) == Igual != Diferente Lógicos && E lógico || OU lógico 1o Sem 2012 HNigri - ATP 3 EXERCÍCIOS SOBRE OPERADORES ! Qual o valor das expressões? a) 1 > 2 b) !( 1> 2) c) 3 == 2 d) ! (-5) e) ‘j’ != ‘j’ f) ‘j’ != ‘j’ + 2 g) 0 < X < 100 1o Sem 2012 HNigri - ATP 4 EXERCÍCIOS SOBRE OPERADORES ! Indique o valor de cada uma das expressões int i = 1, j = 2, k = 3, n = 2; float x = 3.3, y = 4.4; a) i < j + 3 b) 2 * i - 7 <= j - 8 c)-x + y >= 2.0 * y d) x == y e) x != y f) i + j + k == -2 * -k g) !( n-j) h) !n -j I) !x * !x j) i && j && k 1o Sem 2012 HNigri - ATP 5 Comandos Condicionais ! Os comandos condicionais compostos são os if’s que possuem else’s ! Permitem se tomar dois caminhos diferentes em um programa ! Porém, um programa real exige muitas decisões e normalmente têm uma centena ou mais de caminhos possíveis ! Isso se consegue com o aninhamento de comandos 1o Sem 2012 HNigri - ATP 6 Aninhamento de Comandos Condicionais ! É quando se coloca um comando if dentro de outro comando if ... (pode ??) Exemplo if (expressao1) if (expressao2) comando1; else comando2; else if (expressao3) comando3; else comando4; cmd1 exp1 exp2 exp3 cmd2 cmd3 cmd4 1o Sem 2012 HNigri - ATP 7 Aninhamento Comandos Condicionais - Exemplo int numero; cout << “Entre com um numero: “; cin >> numero; if (numero < 0) cout << “número menor que zero”; else if (numero < 10) cout << “ número ≥ 0 e < 10”; else if (numero < 100) cout << “número ≥ 10 e < 100”; else cout << “número ≥ 100”; ! Observação: seguindo os princípios da endentação o código acima deveria ficar assim ... 1o Sem 2012 HNigri - ATP 8 Exemplo de aninhamento – Qual ficou melhor ? int numero; cout << “Entre com um numero: “; cin >> numero; if (numero < 0) cout << “número menor que zero”; else if (numero < 10) cout << “ número ≥ 0 e < 10”; else if (numero < 100) cout << “número ≥ 10 e < 100”; else cout << “número ≥ 100”; 1o Sem 2012 HNigri - ATP 9 Aninhamento - CUIDADO ! ! Como o compilador decide de qual if o else pertence? Pela endentação ?? if (n > 0) if (a > b) z = a; else z = b; Quando a atribuição z = b será executada ? 1o Sem 2012 HNigri - ATP 10 ! O else é sempre associado ao if mais interno (mais próximo) Note a diferença: if (n > 0) { if (a > b) z = a; } else z = b; Aninhamento - CUIDADO ! 1o Sem 2012 HNigri - ATP 11 Exemplo de uma aplicação com vários if’s ! A partir da nota final de um aluno deve-se calcular o seu conceito, segundo a tabela abaixo: ! Nota de 10 a 8 (inclusive) - Conceito ‘A’ ! Nota menor que 8 e até 7 - Conceito ‘B’ ! Nota menor que 7 e até 6 - Conceito ‘C’ ! Nota menor que 6 e até 5 - Conceito ‘D’ ! Nota menor que 5 e até 0 - Conceito ‘E’ 1o Sem 2012 HNigri - ATP 12 Exemplo de uma aplicação com vários if’s Portugol inicio declare notaf numerico; leia notaf; se notaf >= 8 E notaf <= 10 então escreva “Conceito A”; se notaf >= 7 E notaf < 8 então escreva “Conceito B”; se notaf >= 6 E notaf < 7 então escreva “Conceito C”; se notaf >= 5 E notaf < 6 então escreva “Conceito D”; se notaf >= 0 E notaf < 5 então escreva “Conceito E”; fim. C void main() { float notaf; cin >> notaf; if (notaf >= 8 && notaf <= 10) cout << “Conceito A”; if (notaf >= 7 && notaf < 8) cout << “Conceito B”; if (notaf >= 6 && notaf < 7) cout << “Conceito C”; if (notaf >= 5 && notaf < 6) cout << “Conceito D”; if (notaf >= 0 && notaf < 5 ) cout << “Conceito E”; } Podemos melhorar esse código ??? 1o Sem 2012 HNigri - ATP 13 Primeira otimização: usar os else’s Portugol inicio declare notaf numerico; leia notaf; se notaf >= 8 E notaf <= 10 então escreva “Conceito A” senão se notaf >= 7 E notaf < 8 então escreva “Conceito B” senão se notaf >= 6 E notaf < 7 então escreva “Conceito C” senão se notaf >= 5 E notaf < 6 então escreva “Conceito D” senão se notaf >= 0 E notaf < 5 então escreva “Conceito E”; fim. C void main() { float notaf; cin >> notaf; if (notaf >= 8 && notaf <= 10) cout << “Conceito A”; else if (notaf >= 7 && notaf < 8) cout << “Conceito B”; else if (notaf >= 6 && notaf < 7) cout << “Conceito C”; else if (notaf >= 5 && notaf < 6) cout << “Conceito D”; else if (notaf >= 0 && notaf < 5 ) cout << “Conceito E”; } Podemos melhorar esse código ??? 1o Sem 2012 HNigri - ATP 14 Segunda otimização: reduzindo os testes Suponha que a notaf nunca é > 10 nem < 0 ... Portugol inicio declare notaf numerico; leia notaf; se notaf >= 8 então escreva “Conceito A” senão se notaf >= 7 então escreva “Conceito B” senão se notaf >= 6 então escreva “Conceito C” senão se notaf >= 5 então escreva “Conceito D” senão escreva “Conceito E”; fim. C void main() { float notaf; cin >> notaf; if (notaf >= 8) cout << “Conceito A”; else if (notaf >= 7) cout << “Conceito B”; else if (notaf >= 6) cout << “Conceito C”; else if (notaf >= 5) cout << “Conceito D”; else cout << “Conceito E”; } 1o Sem 2012 HNigri - ATP 15 Vamos ver fazer esse juntos ... 1. Fazer um programa que deverá ler três notas de um aluno, calcula a média aritmética destas notas e imprimir a nota final seguida do resultado dado pela tabela abaixo ! De 0 a 3 (exclusive) – Reprovado ! De 3 a 7 (exclusive) - Exame especial ! De 7 a 10 (inclusive) - Aprovado 1o Sem 2012 HNigri - ATP 16 Exercícios 1. Faça um programa que leia três valores inteiros e informe se estes podem formar um triangulo qualquer. OBS: em um triangulo vale a regra que um lado sempre deve ser menor que a soma dos outros dois lados, para todos os lados deste. 2. Faça um programa que leia dois números inteiros e mostre qual número é o maior ou a mensagem “os números são iguais”. 3. Faça um programa que receba três números inteiros indicando o dia, mês e ano de uma data e imprima a data com o nome do mês por extenso. Exemplo: para os números: 10 3 2007 imprimir: 10 de março de 2007
Compartilhar