Baixe o app para aproveitar ainda mais
Prévia do material em texto
Estruturas de Controle Alternativa DCC 119 – Algoritmos Na aula de hoje... 2 • Operadores relacionais e lógicos • Alternativa simples • Alternativa dupla • Alternativa múltipla escolha Operadores relacionais e lógicos 3 • Na linguagem C, não existe o tipo de dados booleano (verdadeiro ou falso). • O valor zero é interpretado como falso e qualquer valor diferente de zero é considerado verdadeiro. • Assim, se o resultado de uma comparação for falso, produz-se o valor 0, caso contrário, produz-se o valor 1. Operadores relacionais 4 • Os operadores relacionais em C são: < menor que > maior que <= menor ou igual que >= maior ou igual que == igual a != diferente de • Estes operadores comparam dois valores. • O resultado produzido por um operador relacional é verdadeiro ou falso. Operadores relacionais 5 Se .... qual o resultado de... ? idade=17 idade < 18 nota1=95 nota1 >= 60 a=1,b=2,c=1 (b*b-4*a*c) > 0 x=-4,y=2 abs(x) >= abs(y) n1=7 n1%2 != 0 denominador=1 denominador != 0 hora=10,fimExp=18 hora == fimExp sexo='F' sexo == 'F' Operadores lógicos 6 • Os operadores lógicos combinam expressões lógicas (ou booleanas). • Operadores: && operador binário E (AND) || operador binário OU (OR) ! operador unário de NEGAÇÃO (NOT) • Expressões compostas por && ou || são avaliadas da esquerda para a direita. • A avaliação termina assim que o resultado for conhecido. Operadores lógicos 7 Se .... qual o resultado de... ? idade=17 idade >= 18 && idade < 60 idade < 18 || idade >= 60 nota=95,faltas=5 nota >= 60 && faltas < 7 nota < 60 || faltas >= 7 a=1,b=2,c=1 (b*b-4*a*c) > 0 && a != 0 x=-4 abs(x) > 1 && abs(x) <=2 idade=18,sexo='F' idade == 18 && sexo == 'M' idade != 18 || sexo == 'F' Operadores lógicos 8 Se .... qual o resultado de... ? n1=7,impar=(n1%2) !impar idade=17 meia=(idade < 18 || idade >= 60) !meia nota=95,faltas=5 ri=(faltas > 7) aprovado=(nota >= 60 && !ri) !aprovado idade=18,sexo='F' alistar=(idade == 18 && sexo == 'M') !alistar Operadores lógicos 9 • Esses operadores são normalmente utilizados para tomada de decisões. • Podem ser utilizados para atribuir valores a variáveis. • Exemplo: int a,b,c; int duasRaizesReais; int umaRaizReal; scanf("%d%d%d",&a,&b,&c); duasRaizesReais = (b*b-4*a*c) > 0; umaRaizReal = (b*b-4*a*c) == 0; Operadores relacionais e lógicos 10 Tabela Verdade para operadores lógicos. a b a && b a || b V V V V V F F V F V F V F F F F a ! a V F F V Operadores relacionais e lógicos 11 Uma expressão com o operador E é FALSA se ao menos um operando é FALSO. a b a && b a || b V V V V V F F V F V F V F F F F a ! a V F F V Operadores relacionais e lógicos 12 Uma expressão com OU é VERDADEIRA se ao menos um operando é VERDADEIRO. a b a && b a || b V V V V V F F V F V F V F F F F a ! a V F F V Operadores relacionais e lógicos 13 Operadores relacionais têm exatamente dois operandos. ERRADO CORRETO 0 <= numero < 10 0 <= numero && numero < 10 a == b == c a == b && b == c Operadores relacionais e lógicos 14 Operadores lógicos podem ser combinados, mas, ao combinar E e OU na mesma expressão, é recomendável usar parênteses. idade <= 12 || idade >= 60 || estudante idade > 12 && idade < 60 && !estudante (timeA < timeB && timeA < timeC) || timeA == 0 Exercícios 15 Diferencie o significado das expressões ocupado1 = (diaSemana == 2 || diaSemana == 5) && (hora >= 14 && hora < 16) ocupado2 = diaSemana == 2 || (diaSemana == 5 && (hora >= 14 && hora < 16)) ocupado3 = (diaSemana == 2 || (diaSemana == 5 && hora >= 14)) && hora < 16 ocupado4 = ((diaSemana == 2 || diaSemana == 5) && hora >= 14) && hora < 16 DESAFIO: Elabore uma expressão que indique que você está ocupado nas 2as até às 16h, nas 5as o dia inteiro e nos outros dias após às 14h. Alternativa • Utilizada quando a execução de uma ação depender de uma inspeção ou teste de uma condição (expressão lógica). • Pode ser: • Alternativa Simples • Alternativa Dupla • Alternativa Múltipla Escolha 16 Alternativa simples: Sintaxe 17 if ( condição ) { comandos; } Alternativa simples: Exemplo 1 18 int valor1, valor2, maximo; scanf ("%d%d", &valor1, &valor2); maximo = valor1; if (valor2 > maximo) { maximo = valor2; } printf ("\nMAIOR = %d", maximo); Alternativa simples: Exemplo 2 19 int diaPagamento; float multaAtraso, total; multaAtraso = 5.0; scanf ("%d%f", &diaPagamento, &total); if (diaPagamento > 5) { total = total + multaAtraso; printf ("Multa por atraso: %f", multaAtraso); } printf ("\nTotal: %f", total); Alternativa simples: Exemplo 3 20 int quantidade; float precoUnitario, preco; scanf ("%d%f", &quantidade, &precoUnitario); preco = quantidade * precoUnitario; if (quantidade > 10 && precoUnitario > 50.0 ) { preco = preco * 0.85; printf ("Ganhou um desconto de 15%%!\n"); } printf ("\nPreco final: %f", preco); Alternativa dupla: Sintaxe 21 if (condicao) { comandos1; } else { comando2; } Alternativa simples: Exemplo 1 22 int valor1, valor2, maximo; scanf ("%d%d", &valor1, &valor2); maximo = valor1; if (valor2 > maximo) { maximo = valor2; } printf ("\nMAIOR = %d", maximo); Alternativa dupla: Exemplo 1 23 int valor1, valor2, maximo; scanf ("%d%d", &valor1, &valor2); if (valor1 > valor2) { maximo = valor1; } else { maximo = valor2; } printf ("\nMAIOR = %d", maximo); Alternativa dupla: Exemplo 2 24 int quantidade; float precoUnitario, preco; scanf ("%d%f", &quantidade, &precoUnitario); preco = quantidade * precoUnitario; if (quantidade > 10 && precoUnitario > 50.0 ) { preco = preco * 0.85; printf ("Ganhou um desconto de 15%%!\n"); } else { preco = preco * 0.95; printf ("Toda a loja com 5%% de desconto!\n"); } printf ("\nPreco final: %f", preco); Problema exemplo Construir um algoritmo para ler os coeficientes A, B e C de uma equação do segundo grau e se: • Delta for negativo: imprimir a mensagem “Não há solução real”. • Delta for maior ou igual a zero: calcular e imprimir as raízes da equação. 25 Resolução – Passo 1/5 Enunciado está entendido? • Para resolver o problema é necessário saber a equação de 2º grau. Esta equação tem a seguinte forma: onde 26 Resolução – Passo 2/5 Quais variáveis serão necessárias? • a, b, c e delta serão as variáveis reais que comporão a fórmula da equação acima. • Serão necessárias mais duas variáveis reais x1 e x2 que serão as raízes da equação. 27 Resolução – Passo 3/5 Como resolver o problema proposto? 1. Criar as variáveis do programa 2. Ler o valor das variáveis 3. Calcular o valor do delta 4. Se delta maior ou igual a zero: 1. Calcula o valor das raízes reais 2. Imprime o valor das raízes reais 5. Senão 1. Avisa o usuário que não há raízes reais 28 Resolução – Passo 3/5 Como resolver o problema proposto? 1. Criar as variáveis do programa 2. Ler o valor das variáveis 3. Calcular o valor do delta 4. Se delta maior ou igual a zero: 1. Calcula o valor das raízes reais 2. Imprime o valor das raízes reais 5. Senão 1. Avisa o usuário que não há raízesreais 29 if (condicao) { comandos1; } else { comando2; } Resolução – Passo 4/5 30 #include <stdio.h> #include <math.h> int main() { float a, b, c, delta, x1, x2; printf("Digite os coeficientes da equacao (A B C): "); scanf("%f %f %f", &a, &b, &c); delta = (b*b - 4*a*c); if (delta >= 0) { x1 = (-b + sqrt(delta)) / (2*a); x2 = (-b - sqrt(delta)) / (2*a); printf("Raizes da equacao: %f, %f", x1, x2); } else { printf ("Nao existem raizes reais"); } return 0; } Resolução – Passo 5/5 Testar o algoritmo Por exemplo, faça o teste de mesa para a seguinte entrada • A = 1 • B = 5 • C = 4 Saída esperada: -1 e -4. 31 32 TESTE DE MESA 1 #include <stdio.h> 2 #include <math.h> 3 int main() 4 { 5 float a, b, c, delta, x1, x2; 6 printf("Digite os coeficientes (A B C): "); 7 scanf("%f %f %f", &a, &b, &c); 8 delta = (b*b - 4*a*c); 9 10 if (delta >= 0) 11 { 12 x1 = (-b + sqrt(delta)) / (2*a); 13 x2 = (-b - sqrt(delta)) / (2*a); 14 printf("Raizes: %f, %f", x1, x2); 15 } 16 else 17 { 18 printf ("Nao existem raizes reais"); 19 } 20 return 0; 21 } linha a b c delta x1 x2 5 ? ? ? ? ? ? 33 TESTE DE MESA Digite os coeficientes (A B C): 1 5 4 1 #include <stdio.h> 2 #include <math.h> 3 int main() 4 { 5 float a, b, c, delta, x1, x2; 6 printf("Digite os coeficientes (A B C): "); 7 scanf("%f %f %f", &a, &b, &c); 8 delta = (b*b - 4*a*c); 9 10 if (delta >= 0) 11 { 12 x1 = (-b + sqrt(delta)) / (2*a); 13 x2 = (-b - sqrt(delta)) / (2*a); 14 printf("Raizes: %f, %f", x1, x2); 15 } 16 else 17 { 18 printf ("Nao existem raizes reais"); 19 } 20 return 0; 21 } linha a b c delta x1 x2 5 ? ? ? ? ? ? 7 1 5 4 ? ? ? 34 TESTE DE MESA 1 #include <stdio.h> 2 #include <math.h> 3 int main() 4 { 5 float a, b, c, delta, x1, x2; 6 printf("Digite os coeficientes (A B C): "); 7 scanf("%f %f %f", &a, &b, &c); 8 delta = (b*b - 4*a*c); 9 10 if (delta >= 0) 11 { 12 x1 = (-b + sqrt(delta)) / (2*a); 13 x2 = (-b - sqrt(delta)) / (2*a); 14 printf("Raizes: %f, %f", x1, x2); 15 } 16 else 17 { 18 printf ("Nao existem raizes reais"); 19 } 20 return 0; 21 } linha a b c delta x1 x2 5 ? ? ? ? ? ? 7 1 5 4 ? ? ? 8 1 5 4 9 ? ? Digite os coeficientes (A B C): 1 5 4 35 TESTE DE MESA 1 #include <stdio.h> 2 #include <math.h> 3 int main() 4 { 5 float a, b, c, delta, x1, x2; 6 printf("Digite os coeficientes (A B C): "); 7 scanf("%f %f %f", &a, &b, &c); 8 delta = (b*b - 4*a*c); 9 10 if (delta >= 0) 11 { 12 x1 = (-b + sqrt(delta)) / (2*a); 13 x2 = (-b - sqrt(delta)) / (2*a); 14 printf("Raizes: %f, %f", x1, x2); 15 } 16 else 17 { 18 printf ("Nao existem raizes reais"); 19 } 20 return 0; 21 } linha a b c delta x1 x2 5 ? ? ? ? ? ? 7 1 5 4 ? ? ? 8 1 5 4 9 ? ? 10 1 5 4 9 ? ? Digite os coeficientes (A B C): 1 5 4 36 TESTE DE MESA 1 #include <stdio.h> 2 #include <math.h> 3 int main() 4 { 5 float a, b, c, delta, x1, x2; 6 printf("Digite os coeficientes (A B C): "); 7 scanf("%f %f %f", &a, &b, &c); 8 delta = (b*b - 4*a*c); 9 10 if (delta >= 0) 11 { 12 x1 = (-b + sqrt(delta)) / (2*a); 13 x2 = (-b - sqrt(delta)) / (2*a); 14 printf("Raizes: %f, %f", x1, x2); 15 } 16 else 17 { 18 printf ("Nao existem raizes reais"); 19 } 20 return 0; 21 } linha a b c delta x1 x2 5 ? ? ? ? ? ? 7 1 5 4 ? ? ? 8 1 5 4 9 ? ? 10 1 5 4 9 ? ? 12 1 5 4 9 -1 ? Digite os coeficientes (A B C): 1 5 4 37 TESTE DE MESA 1 #include <stdio.h> 2 #include <math.h> 3 int main() 4 { 5 float a, b, c, delta, x1, x2; 6 printf("Digite os coeficientes (A B C): "); 7 scanf("%f %f %f", &a, &b, &c); 8 delta = (b*b - 4*a*c); 9 10 if (delta >= 0) 11 { 12 x1 = (-b + sqrt(delta)) / (2*a); 13 x2 = (-b - sqrt(delta)) / (2*a); 14 printf("Raizes: %f, %f", x1, x2); 15 } 16 else 17 { 18 printf ("Nao existem raizes reais"); 19 } 20 return 0; 21 } linha a b c delta x1 x2 5 ? ? ? ? ? ? 7 1 5 4 ? ? ? 8 1 5 4 9 ? ? 10 1 5 4 9 ? ? 12 1 5 4 9 -1 ? 13 1 5 4 9 -1 -4 Digite os coeficientes (A B C): 1 5 4 38 TESTE DE MESA 1 #include <stdio.h> 2 #include <math.h> 3 int main() 4 { 5 float a, b, c, delta, x1, x2; 6 printf("Digite os coeficientes (A B C): "); 7 scanf("%f %f %f", &a, &b, &c); 8 delta = (b*b - 4*a*c); 9 10 if (delta >= 0) 11 { 12 x1 = (-b + sqrt(delta)) / (2*a); 13 x2 = (-b - sqrt(delta)) / (2*a); 14 printf("Raizes: %f, %f", x1, x2); 15 } 16 else 17 { 18 printf ("Nao existem raizes reais"); 19 } 20 return 0; 21 } linha a b c delta x1 x2 5 ? ? ? ? ? ? 7 1 5 4 ? ? ? 8 1 5 4 9 ? ? 10 1 5 4 9 ? ? 12 1 5 4 9 -1 ? 13 1 5 4 9 -1 -4 14 1 5 4 9 -1 -4 Digite os coeficientes (A B C): 1 5 4 Raizes: -1.0 -4.0 39 TESTE DE MESA 1 #include <stdio.h> 2 #include <math.h> 3 int main() 4 { 5 float a, b, c, delta, x1, x2; 6 printf("Digite os coeficientes (A B C): "); 7 scanf("%f %f %f", &a, &b, &c); 8 delta = (b*b - 4*a*c); 9 10 if (delta >= 0) 11 { 12 x1 = (-b + sqrt(delta)) / (2*a); 13 x2 = (-b - sqrt(delta)) / (2*a); 14 printf("Raizes: %f, %f", x1, x2); 15 } 16 else 17 { 18 printf ("Nao existem raizes reais"); 19 } 20 return 0; 21 } linha a b c delta x1 x2 5 ? ? ? ? ? ? 7 1 5 4 ? ? ? 8 1 5 4 9 ? ? 10 1 5 4 9 ? ? 12 1 5 4 9 -1 ? 13 1 5 4 9 -1 -4 14 1 5 4 9 -1 -4 20 1 5 4 9 -1 -4 Digite os coeficientes (A B C): 1 5 4 Raizes: -1.0 -4.0 Resolução – Procedimento 40 void equacao2grau(float a, float b, float c) { float delta, x1, x2; delta = (b*b - 4*a*c); if (delta >= 0) { x1 = (-b + sqrt(delta)) / (2*a); x2 = (-b - sqrt(delta)) / (2*a); printf("Raizes da equacao: %f, %f", x1, x2); } else { printf ("Nao existem raizes reais"); } } • Exemplo de implementação do problema como um procedimento. Alternativas aninhadas • As vezes pode ser preciso usar estruturas de alternativa aninhadas 41 if (condicao) { comandos1; if (outraCondicao) { comandos2; } } else { comandos3; } Alternativas aninhadas • Ou ainda usar o comando else if: 42 if (condicao) { comandos1; } else if (condicao2) { comandos2; } else if (condicao3) { comandos3; } else { comandos4; } Exemplo • Determinar se um número inteiro é zero, negativo ou positivo. 43 #include <stdio.h> int main() { int num; printf("Digite um numero inteiro: "); scanf("%d",&num); if(num == 0) printf("Valor zero"); else { if(num > 0) printf("Valor positivo"); else printf("Valor negativo"); } return 0; } Se if ou else tem apenas um único comando no bloco de comandos, as chaves podem ser omitidas. Exemplo • Determinar se um número inteiro é zero, negativo ou positivo. 44 #include <stdio.h> int main() { int num; printf("Digite um numero inteiro: "); scanf("%d",&num); if(num == 0) printf("Valor zero"); else if(num > 0) printf("Valor positivo");else printf("Valor negativo"); } return 0; } Mas é recomendável usar sempre as chaves para não cometer erros. Importância da identação 45 #include <stdio.h> int main() { int a, b, c; printf("Digite três numeros inteiros: "); scanf("%d%d%d",&a,&b,&c); if(a < b && a < c) { printf("O primeiro valor é menor"); } else { if(b < c) { printf("O segundo valor é menor"); } else { printf("O terceiro valor é menor"); } } return 0; } Importância da identação 46 #include <stdio.h> int main() { int a, b, c; printf("Digite três numeros inteiros: "); scanf("%d%d%d",&a,&b,&c); if(a < b && a < c) { printf("O primeiro valor é menor"); } else { if(b < c) { printf("O segundo valor é menor"); } else { printf("O terceiro valor é menor"); } } return 0; } Exercício • Qual é a saída do programa? 47 int main() { int a = 2, b = 3, c = 4; if ((a<3) && ((b !=3) || (c == 4))) printf("saida 1"); if ((c ==3) || (b ==4)) printf("saida 2"); if ((a < 3) && (b > 4)) printf("saida 3"); else if (a == 2) if (b==5) printf("saida 4"); else printf("saida 5"); else printf("saida 6"); return 0; } Exercício • Qual é a saída do programa: 48 int main() { int a = 2, b = 3, c = 4; if ((a<3) && ((b !=3) || (c == 4))) printf("saida 1"); if ((c ==3) || (b ==4)) printf("saida 2"); if ((a < 3) && (b > 4)) printf("saida 3"); else if (a == 2) if (b==5) printf("saida 4"); else printf("saida 5"); else printf("saida 6"); return 0; } Lembre-se, a indentação do código facilita o seu desenvolvimento e a leitura do código. Exercícios 1) Ler dois números inteiros e informar se o primeiro valor lido é maior, menor ou igual ao segundo. 2) Ler um número inteiro e informar se ele é divisível por 2. 3) Altere o algoritmo anterior para que seja informado se o número é divisível por 2 e por 3 simultaneamente. 4) Altere o algoritmo anterior para que seja informado se o número é divisível por 2 e por 3, mas que não seja divisível por 5. 49 Exercícios 5) Fazer um algoritmo para ler dois números e um dos símbolos das operações: +, -, * e /. Imprimir o resultado da operação efetuada sobre os números lidos. 6) Desenvolver um algoritmo para ler o valor inteiro da idade de uma pessoa e imprimir uma das mensagens: se idade < 13: Criança, se 13 ≤ idade < 20: Adolescente, se 20 ≤ idade < 60: Adulto e se idade ≥ 60: Idoso. 50 Alternativa com múltipla escolha São úteis quando: • Há um grande número de alternativas; • Todas as alternativas dependem da avaliação de uma mesma expressão (na maioria das vezes, dependem do valor de uma única variável); • O resultado da expressão (ou a variável da condição) é do tipo int ou char 51 Alternativa múltipla escolha: Sintaxe 52 switch (expressão) { case Valor1: Comandos1; break; case Valor2: Comandos2; break; ... case ValorN: ComandosN; break; default: Comandos; } switch (expressão) { case Valor1: Comandos1; break; case Valor2: Comandos2; break; ... case ValorN: ComandosN; break; default: Comandos; } Alternativa múltipla escolha: Sintaxe 53 Expressão única que pode assumir diversos valores. switch (expressão) { case Valor1: Comandos1; break; case Valor2: Comandos2; break; ... case ValorN: ComandosN; break; default: Comandos; } Alternativa múltipla escolha: Sintaxe 54 Cada valor que a expressão pode assumir. switch (expressão) { case Valor1: Comandos1; break; case Valor2: Comandos2; break; ... case ValorN: ComandosN; break; default: Comandos; } Alternativa múltipla escolha: Sintaxe 55 Comandos que devem ser executados em cada caso. switch (expressão) { case Valor1: Comandos1; break; case Valor2: Comandos2; break; ... case ValorN: ComandosN; break; default: Comandos; } Alternativa múltipla escolha: Sintaxe 56 O comando break encerra a sequência de comandos do case e sai do switch. switch (expressão) { case Valor1: Comandos1; break; case Valor2: Comandos2; break; ... case ValorN: ComandosN; break; default: Comandos; } Alternativa múltipla escolha: Sintaxe 57 A ausência do comando break faz com que os comandos dos casos seguintes sejam executados até o próximo break ou fim do switch. switch (expressão) { case Valor1: Comandos1; break; case Valor2: Comandos2; break; ... case ValorN: ComandosN; break; default: Comandos; } Alternativa múltipla escolha: Sintaxe 58 O comando default permite que uma sequência de comandos seja executada se o valor da expressão for diferente de todos os casos especificados. Exemplo 59 #include <stdio.h> int main() { int epoca; printf("Digite o numero do trimestre:"); scanf("%d", &epoca); switch (epoca) { case 1: printf("verao"); break; case 2: printf ("outono"); break; case 3: printf ("inverno"); break; case 4: printf ("primavera"); break; default: printf("Trimestre invalido"); } return 0; } Exemplo 60 #include <stdio.h> int main() { int mes; printf("Digite o numero do mes:"); scanf("%d", &mes); switch (mes) { case 1: case 2: case 3: printf("verao"); break; case 4: case 5: case 6: printf ("outono"); break; case 7: case 8: case 9: printf ("inverno"); break; case 10: case 11: case 12: printf ("primavera"); break; default: printf("Mes invalido"); } return 0; } Exercícios 7) Desenvolver um algoritmo para ler o número do dia da semana e imprimir o seu respectivo nome por extenso. Considerar o número 1 como domingo, 2 para segunda etc. Caso o dia da semana não exista (menor do que 1 ou maior do que 7), exibir a mensagem “Dia da semana inválido". 61 Exercícios 8) Elaborar um algoritmo para ler o código de um produto e informar a sua origem: a) Código do produto entre 1 e 20: Europa b) Código do produto entre 21 e 40: Ásia c) Código do produto entre 41 e 60: América d) Código do produto entre 61 e 80: África e) Código do produto maior que 80: Paraguai 62 Exercícios 9) Para auxiliar os vendedores de uma loja na orientação aos clientes sobre as diversas formas de pagamento, desenvolver um algoritmo para: 63 a) Imprimir o seguinte menu: b) Ler o código da opção de pagamento. Forma de pagamento: - À vista. - Cheque para trinta dias. - Em duas vezes. - Em três vezes. - Em quatro vezes. - A partir de cinco vezes. Entre com sua opção: Exercícios c) Imprimir uma das mensagens de acordo com a opção lida: 64 Opção = 1: Desconto de 20% Opção = 2, 3 ou 4: Mesmo preço a vista Opção = 5: Juros de 3% ao mês Opção = 6: Juros de 5% ao mês Opção <1 ou opção >6: Opção inválida Estruturas de Controle Alternativa DCC 120 – Laboratório de Programação Comando Condicional - if • O comando if é uma estrutura de decisão que decide se uma sequência de comandos será ou não executada. Sua sintaxe é: • Ou 66 if (expressão) { sequencia de comandos; } if (expressão) unico comando; Comando Condicional - if • A expressão sempre será avaliada, e o resultado lógico (verdadeiro ou falso), na linguagem C corresponde a • FALSO: o valor zero (==0) • VERDADEIRO: os demais(!=0) 67 if (expressão) { sequencia de comandos; } if - Exemplos • Programa para determinar o maior de dois números fornecidos pelo usuário. 68 int main() { int a, b, maior; scanf ("%d%d", &a, &b); maior = a; if (b > maior) { maior = b; } printf ("\nMAIOR = %d", maior); return 0; } Condicional: if-else • O comando if pode decidir entre duas sequências de comandos qual vai ser a executada e tem a seguinte sintaxe: 69 if (expressão) { // caso a expressão retorne verdadeiro sequencia de comandos; } else { // caso a expresão retorne falso sequencia de comandos; } if-else • Exemplo: Verificar se um número é par. • Obs.: No exemplo acima não são utilizadas chaves no if e no else pois há apenas um comando a ser executado. Em casos como esse pode-se ou não utilizar as chaves. 70 #include <stdio.h> int main() { int x; printf("Digite o numero: "); scanf("%d", &x); if (x % 2 == 0) printf("%d e' par \n", x); else printf("%d e' impar \n", x); return 0; } if else , if , ... 71 if (condição1) { comandos if1; if (condição2) { comandos if2; } else { comandos else2; } } else { comandos else1; if (condição3) { comandos if3; } } Comando switch • Utilizado quando uma determinada variável pode ser igual a diferentes valores que se deseja avaliar • Sintaxe: 72 switch (variavel) { case constante1: comandos; break; case constante2: comandos; break; default: comandos; } 73 Comando switch - Exemplo int main() { int epoca; printf("Digite o trimestre do ano em que estamos: "); scanf("%d",&epoca); switch (epoca) { case 1: printf("verao"); break; case 2: printf("outono"); break; case 3: printf("inverno"); break; case 4: printf("primavera"); break; default: printf("periodo invalido"); } return 0; } Exercícios Para cada exercício: Leia atentamente o enunciado até que o problema seja completamente entendido; Enumere os passos necessários para a solução do problema; “Traduza” os passos listados para a linguagem de programação C; Compile e corrija eventuais erros de sintaxe; Teste seu programa com diferentes entradas. 74 Exercícios 1. Faça um programa para ler dois número inteiros, faça a divisão do primeiro pelo segundo (se o segundo for diferente de zero). 2. Faça um programa para ler dois números reais e verificar se ambos são maiores que zero. Caso positivo, informar “Valores são válidos”. Caso contrário, informar “Valores inválidos”. 75 Exercícios 3. Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um programa que calcule seu peso ideal, utilizando as seguintes fórmulas: para homens: (72.7*h)-58 para mulheres: (62.1*h)-44.7 4. Faça um programa que leia 3 comprimentos (x,y e z) e responda se eles formam um triângulo, ou seja, se x < y + z e y < x + z e z < x + y. 76 Exercícios 5. Fazer um algoritmo para ler dois números e um dos símbolos das operações: +, -, * e /. Imprimir o resultado da operação efetuada sobre os números lidos. 6. Faça um programa para ler um caracter e imprimir as seguintes mensagens, segundo o caso: “Sinal de menor” “Sinal de maior” “Sinal de igual” “Outro caracter” 77 Exercícios 7. Elabore um programa que, dada a idade de um nadador, classifique-o em uma das seguintes categorias: • infantil A = 5 – 7 anos • infantil B = 8 – 10 anos • juvenil A = 11 – 13 anos • juvenil B = 14 – 17 anos • adulto = 18 – 30 anos • sênior = maiores de 30 anos 78
Compartilhar