Comandos de decisão Luis Otavio Alvares Adaptado de slides das Profas. Patrícia Jaques, Mônica Py e Deise Sacol 1 Operadores Relacionais Operador Exemplo Significado == x == y O conteúdo de x é igual ao de y? != x != y O conteúdo de x é diferente do de y? <= x <= y O conteúdo de x é menor ou igual ao de y? >= x >= y O conteúdo de x é maior ou igual ao de y? < x < y O conteúdo de x é menor que o de y? > x > y O conteúdo de x é maior que o de y? As expressões relacionais em C retornam : 1 se verdadeiro 0 se falso. 2 Operadores Lógicos • && (E lógico): retorna verdadeiro se ambos os operandos são verdadeiros e falso nos demais casos. Exemplo: if( a>2 && b<3). • || (OU lógico): retorna verdadeiro se pelo menos um dos operandos é verdadeiro, e falso se ambos são falsos. Exemplo: if( a>1 || b<2). • ! (NÃO lógico): usada com apenas um operando. Retorna verdadeiro se o operando é falso e vice-versa. Exemplo: if( !var ). 3 Operadores Lógicos Tabela E Tabela OU Tabela NÃO VeVV V ou V V Não V F VeFF V ou F V Não V F FeVF F ou V V FeFF F ou F F 4 Estrutura condicional simples • Comando if if (condição) comando; Exemplo em pseudo-código: SE a<menor ENTÃO menor=a; if (a<menor) menor=a; if (condição) { comando1; comando2; comando3; … } 5 if (a<menor) { menor=a; printf (“%d”, menor); } Estrutura condicional composta • Comando if...else if (condição) comando1; else comando2; Executa o comando1 se a condição for qualquer coisa diferente de zero (verdadeira), senão executa o comando2 Exemplo: if (condição) { comando1; comando2; } else { comando3; comando4; } 6 if (peso==peso_ideal) printf (“Voce esta’ em forma!”); else printf (“Melhor fazer dieta!”); em pseudo-código: se (peso= peso_ideal) entao exibir “Voce esta’ em forma!” senao exibir “Melhor fazer dieta!” Exemplo 1 1) Dados dois números inteiros A e B, some 100 ao maior número e imprima. #include <stdio.h> #include <stdlib.h> main(){ int A, B, soma; printf ("Digite o valor de A: "); scanf ("%d", &A); printf ("Digite o valor de B: "); scanf ("%d", &B); if (A>B) soma=A+100; else soma=B+100; printf ("O maior valor adicionado de 100 resulta em %d\n", soma); system("pause"); } 7 Exemplo 2 2) Escreva um algoritmo para determinar se uma pessoa é maior ou menor de idade. #include <stdio.h> #include <stdlib.h> main (){ int idade; printf ("Digite a idade da pessoa: "); scanf ("%d", &idade); if (idade>=18) printf ("Pessoa eh maior de idade.\n"); else printf ("Pessoa eh menor de idade.\n"); system("pause"); } 8 Lembretes importantes no uso do comando if A condição deve estar sempre entre parênteses. É possível usar mais de um comando no if, após a condição ou após o else, mas então os comandos devem estar entre chaves (constituindo-se em um bloco). É possível aninhar ifs, e então cada else vai corresponder ao if imediatamente anterior, se não houver blocos delimitados por chaves alterando isso. Exercícios 4) Faça um algoritmo que leia a quantidade comprada de um produto e o preço unitário deste produto. - Se o preço total a ser pago for inferior a R$ 100, então forneça um desconto de 5%. - Se o preço total a ser pago ficar entre 100 e 1000, então forneça um desconto de 5% e armazene um bônus de 5% sobre o valor total. - Se o preço total a ser pago for superior a 1000, então forneça um desconto de 10%, armazene um bônus de 7% sobre o valor total e o cliente será considerado como ‘Cliente Vip’. 10 #include <stdio.h> #include <stdlib.h> main(){ int qtdade; float preco, valorTotal, descontado, bonus; printf ("\nDigite a qtdade: "); scanf ("%d", &qtdade); printf ("\nDigite o preco unitario: "); scanf ("%f", &preco); valorTotal=qtdade*preco; if (valorTotal<100) descontado=valorTotal*0.95; else if (valorTotal>=100 && valorTotal<=1000) { descontado=valorTotal*0.95; bonus=valorTotal*0.05; } else if (valorTotal>1000) //poderia ser so’ else { descontado=valorTotal*0.90; bonus=valorTotal*0.07; printf ("\n Cliente vip!\n"); } printf ("\n Valor Total e’ %.2f\n", valorTotal); printf ("\n Valor com desconto e’ %.2f\n", descontado); printf ("\n Bonus e’ %.2f\n", bonus); system("pause"); } 11 Exercícios • Fazer lista de exercícios 12 Comando switch Uma variável é testada sucessivamente contra uma lista de constantes inteiras ou caracteres. Depois de encontrar uma coincidência, o comando ou o bloco de comandos é executado. Sintaxe: Switch(variável) { case constante1: sequência de comandos break; case constante2: sequência de comandos break; ….. default: sequência de comandos } O comando default é opcional Se nenhuma coincidencia for encontrada, o comando default será executado Exemplo de comando switch #include<stdio.h> #include<stdlib.h> main() { int numero; printf("digite o mes"); scanf ("%d",&numero); switch (numero){ case 1: printf ("Janeiro\n"); break; case 2: printf ("Fevereiro\n"); break; case 3: printf ("Marco\n"); break; case 4: printf ("Abril\n"); break; case 5: printf ("Maio\n"); break; case 6: printf ("Junho\n"); break; case 7: printf ("Julho\n"); break; case 8: printf ("Agosto\n"); break; case 9: printf ("Setembro\n"); break; case 10: printf ("Outubro\n"); break; case 11: printf ("Novembro\n"); break; case 12: printf ("Dezembro\n"); break; default: printf ("Mes invalido\n"); } system ("pause"); 14 }