Baixe o app para aproveitar ainda mais
Prévia do material em texto
Disciplina: Linguagem de Programação I Aula 4: if.../ if...else/ if... else if... / switch - Qual escolher? Apresentação Nesta aula, iremos estudar a estrutura do if e a do switch. Tenha certeza de que elas trarão muitas contribuições para nossos programas. Em todos os exercícios que fizemos nas aulas anteriores, precisávamos acreditar que o usuário havia digitado o que havíamos pedido, mas sabemos que a responsabilidade é do programador que, ao construir um código, deverá tentar proteger ao máximo a entrada de dados via teclado. Não estamos dizendo que, ao final da aula de hoje, nossos programas estarão protegidos, da melhor forma possível, mas conseguiremos pelo menos parcialmente. Além disso, nossos programas poderão testar o que desejamos e verificaremos que a estrutura do if... else permeia nossas ações na maioria das vezes. Objetivos Reconhecer os operadores relacionais e lógicos; Comparar os comandos de tomada de decisão simples e composta (if ... / if ... else); Identificar os ifs encadeados; Avaliar a estrutura do switch; Identificar os casos nos quais a seleção de múltipla escolha (switch) pode ser aplicada; Estabelecer pequenos programas e outro que funcione através de um menu, mas sem repetição. If... else Começaremos nossa aula aprendendo sobre o comando: if... else Esse é o comando que testa uma condição e dependendo do resultado, o fluxo do programa seguirá caminhos diferentes. Também conhecido como estrutura de decisão, seleção ou condicional. Existem três tipos de comandos if... else, são eles: if simples Nesse tipo, após a realização do teste, só será executado o bloco de comandos se o resultado for verdadeiro. Nesse caso, o else não estará presente porque nada será executado. Veja a sintaxe: if (teste) { ... } Vejamos um exemplo rápido: Uma grande empresa abriu um concurso onde se inscreveram mais de 100.000 pessoas para 100 vagas. Segundo o edital, o resultado tem que ser publicado em um jornal de grande circulação em todos os estados que foram disponibilizadas vagas. E o que não deverá ser usado como nome de variável? Não. Só serão publicadas as inscrições dos aprovados logo, não precisa de else. Concordamos que será pouco usado, mas no momento certo, será fundamental. Procure não criar um hábito de colocar else{}. if composto Nesse tipo, após a execução do teste, tanto será executado um bloco de comandos se o resultado for verdadeiro quanto será executado outro bloco de comandos se o resultado for falso. Essa é a sintaxe geral da estrutura. Veja a sintaxe: if (teste) { ... } else { ... } ifs encadeados Nesse tipo, após a realização do teste, será executado um bloco de comandos se o resultado for verdadeiro, caso não seja, outro teste será feito até que todas as possibilidades de respostas sejam contempladas. Se o último else não estiver presente, o que não é aconselhável, nada acontecerá para a situação não atendida pelos testes. Veja a sintaxe: if (teste) { ... } else if (teste){ ... } else { ... } As chaves só são obrigatórias se mais de um comando tiver que ser executado, mas nada impede que você as coloque para melhor visibilidade. Teste O teste é uma expressão relacional que compara os valores dos seus operandos. A expressão relacional é formada, obrigatoriamente, por um operador relacional e dois operandos. A Unidade Aritmética e Lógica testa essa expressão e retorna 1 (ou qualquer número diferente de zero) ou 0. Operadores relacionais Os operadores relacionais são nossos conhecidos da Matemática, mas alguns têm uma apresentação um pouco diferente. Operadores relacionais Significado Matemática C Exemplos – C Maior > > 2*8 > 4 Menos < < 2 < 9 Igual = == 3 == 7-4 Maior ou igual ≥ >= 9 >= 5 Menor ou igual ≤ <= 4 <=1 0 Diferente ≠ != 8 != 5 Operadores lógicos Em algumas ocasiões, precisaremos negar um teste ou fazer mais de um para que uma condição seja considerada verdadeira e, nesses casos, teremos usar os operadores lógicos. Os operadores lógicos também são conhecidos da Matemática e tudo que aprendemos sobre eles servirá agora, mas vamos relembrá-los. Operadores lógicos Significado Matemática C Exemplos – C Conjunção (e) ^ && N >= 100 && n <=2 00 Disjunção (ou) V || N < 100 || n> 200 Negação (não) ¬ ! !p Atenção Quando você unir expressões relacionais com operadores lógicos (&& ou ||), não se esqueça de que as expressões precisam estar completas. Os parênteses podem não ser obrigatórios, mas você poderá usá-los sem nenhum prejuízo. Entretanto, se você precisar priorizar uma operação, tem que usar parênteses. Quando você usar só operadores &&, para que a saída seja verdadeira, todos os testes deverão ser verdadeiros. Quando você usar só operadores ||, para que a saída seja verdadeira, é necessário somente que um teste seja verdadeiro. Exemplo Exemplo 1 Nesse exemplo, espera-se que todos os testes sejam verdadeiros para que o estagiário seja aceito. if(idade >= 18 && período >=3 && CR>= 8) Exemplo 2 Nesse exemplo, espera-se que 1 das 4 opções seja digitada para considerar uma resposta correta. if(sexo == ‘f’ || sexo == ‘F’ || sexo == ‘M’ || sexo == ‘m’) Atividade 1 - Construa um programa que deixe entrar com a matrícula de um funcionário e a nota que conseguiu na avaliação anual. Se a nota for maior ou igual a 8 então a matrícula do funcionário deverá ser exibida. 2 - Construa um programa que deixe entrar com o ano e exiba se ele é ou não bissexto. Tabela verdade Observe que: • Na negação (“Não”) da proposição “E" é a proposição “S”, de maneira que se “E" é verdade então “S" é falsa, e vice-versa. Não E S V F F V • Na conjunção “e” é verdadeira se e somente se os operandos são verdadeiros. e E1 E2 S V V V V F F F V F F F F • A disjunção “ou” é falsa se, e somente se ambos os operandos forem falsos. ou E1 E2 S V V V V F V F V V F F F Função abs Ao usar operadores lógicos, fique atento para não se esquecer de um operando como mostrado no programa: #include <stdio.h> #include <stdlib.h> int main () { int num; printf(“\n1o numero: “); scanf(“%d”, &num); if( abs(num) >= 100 &&<=9 99) printf(“\nTem\n”); else printf(“\nTem\n”); system(“pause>NULL”); } Para testar se um número tem, ou não, 3 algarismos, inclusive se for digitado um número negativo, usamos a função abs . Sendo assim, esse programa apresentará o seguinte erro: syntax error before '<=' token. Ao ler a mensagem de erro, percebemos que uma das expressões (<= 999) não estava completa, visto que faltava a variável. Após a inclusão, tudo funcionará perfeitamente. Atenção Para fixar, vamos destacar: 1 If (abs(num) >= 100 && <= 999) Proibido If(abs(num) >= 100 && abs(num) <+ 999) Permitido Ordenando Normalmente, chega um momento em que precisamos saber como ordenar de forma crescente ou decrescente. Quando aprendermos vetores, veremos alguns métodos simples para conseguirmos ordenar. Entretanto, vamos explicar um método simples que é razoável a até 5 elementos. Costumamos chamá-lo de ordenação através de uma combinação dois a dois com troca quando necessário. É um nome grande, mas é simples. Saiba mais Antes de continuar seus estudos, aprenda a ordenar através de um passo a passo <galeria/aula4/anexo/a04_doc1.pdf> . Estrutura switch... case A estrutura switch... case é conhecida como uma alternativa de múltiplas escolhas, isto é, quando precisarmos usar if... else if.... Todavia, ela só pode ser usada quando a variável, ou expressão que a controla, for do tipo int ou char de um caracter e somenteum valor puder ser colocado em cada case. Isso precisa ficar claro porque, em algumas linguagens, podemos colocar intervalos e usar operadores relacionais. Quando o conteúdo da variável, ou resultado da expressão é comparado com os valores presentes em casa case, o fluxo começa no ponto onde foi encontrado o valor igual. Em algumas linguagens, o término da execução dos comandos de um caso força a saída da estrutura, mas isso não acontece na linguagem C. Para resolver esse problema, fazemos uso do comando break; no final de cada caso. Vale ressaltar que o default não é obrigatório, mas serve para exibir alguma mensagem no caso do valor não ser igual a nenhum dos rótulos. Em alguns momentos, poderemos não fazer uso do break; porque nos interessa. Você verá um exemplo mais adiante. Usaremos a nomenclatura mais comum ao apresentar a sintaxe dessa estrutura que é ideal para programas que funcionam através de um menu. switch (expressão) { case rotulo_1: bloco_1; break; case rotulo_2: bloco_2; break; case rotulo_3: bloco_3; break; case rotulo_4: bloco_4; break; <default : bloco_c;> } Um dos exemplos clássicos é o dos meses, mas vamos apresentar o dos trimestres, inicialmente, para provar que, algumas vezes, não usaremos o break;. Faça o teste. #include <stdio.h> Int main() { int mes; printf(“\nDigite um número que corresponda a um mês: “); scanf(“%d”, &mes); switch(mes) { case 1: case 2: case 3: printf(“\nPrimeiro trimestre\n”); break; case 4: case 5: case 6: printf(“\nSegundo trimestre\n”); break; case 7: case 8: case 9: printf(“\nTerceiro trimestre\n”); break; case 10: case 11: case 12: printf(“\nQuarto trimestre\n”); break; default: printf(“\nNão corresponde a um mês\n”); } system(“pause>NULL”); } Veja a saída: O próximo exemplo é um programa que executa uma operação, dependendo da escolha do usuário. Nesse exemplo, incluímos a biblioteca math.h, tendo em vista as funções usadas. #include <stdio.h> #include <math.h> Int main() { int op; float a; scanf(“%f”, &a); printf(“\nDigite Opção: 1 eleva ao cubo, 2 logaritmo na base 2, 3 raiz quadrada\n“); scanf(“%d”, &op); switch(op) { case 1: printf(“\Eleva ao cubo: %.2f”, pow(a,3)); break; case 2: printf(“\Logaritmo na base 2: %.2f”, log(a)/log(2)); break; case 3: printf(“\nRaiz quadrada: %.2f”, sqrt(a)); break; default: printf(“\nNão pediu nada”); } system(“pause>NULL”); } Veja a saída: Saiba mais Se você desejar saber o passo a passo para construir um programa que funcione através de um menu, leia o passo a passo para Menu <galeria/aula4/anexo/a04_doc2.pdf> . Atividade 3 - Construa um programa que deixe entrar 3 números e exiba o menor. 4 - Construa um programa que entre com 2 números e exiba o maior ou a mensagem Iguais com o número ao lado. Notas Função abs A função abs é o conceito de módulo da Matemática, isto é, retorna o número sem sinal. Como estamos testando números negativos, ela teve que ser usada para simplificar a expressão do if. Referências DA MATTA, Roberto. Uma introdução à antropologia social. Rio de Janeiro: Rocco, 1993. DURHAM, Eunice. “Apresentação”. In: MALINOWSKI, Bronislaw. Argonautas do pacífico ocidental: um relato do empreendimento e da aventura dos nativos nos arquipélagos de Nova Guiné Melanésia. São Paulo: Abril Cultura, 1978. LAPLANTINE, François. Aprender antropologia. São Paulo: Brasiliense, 2006. 1 MALINOWSKI, Bronislaw. Argonautas do pacífico ocidental: um relato do empreendimento e da aventura dos nativos nos arquipélagos de Nova Guiné Melanésia. São Paulo: Abril Cultura, 1978. KUPER, Adam. Antropólogos e Antropologia. Rio de Janeiro: Francisco Alves, 1978. VELHO, Gilberto. “Observando o familiar”. In: NUNES, Edson de Oliveira. A aventura sociológica. Rio de Janeiro: Zahar, 1978. Próximos Passos Operadores relacionais e lógicos; Comandos de tomada de decisão simples e composta (if .../ if ... else) e casos de ifs encadeados; Estrutura do switch e casos nos quais a seleção de múltipla escolha (switch) pode ser aplicada; Desenvolvimento de pequenos programas; Desenvolvimento de um programa que funcione através de um menu, mas sem repetição. Explore mais O if... else completa o conjunto dos 4 comandos que consideramos fundamentais para a programação, portanto, leia com muita atenção essa aula e pesquise na internet exemplos e exercícios para praticar. Constatamos que os programas ficaram maiores e mais complexos. Procure fazer todas as listas para que possa chegar às estruturas de repetição, dominado esses poucos, mas importantes comandos/funções. Exercite com a lista de exercícios <galeria/aula4/anexo/a04_doc3.pdf> que separamos para você.
Compartilhar