Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: Operadores relacionais e lógicos estruturas condicionais If... Else Switch Prof. Renato Pimentel 1 Operações relacionais Operações lógicas 2 Prof. Renato Pimentel 1
Operadores relacionais em C Operadores relacionais: comparação entre valores, constantes, variáveis ou expressões aritméticas. São operadores binários (2 operandos: 1 à esquerda e outro à direita). Retorno: 0 quando falso ou 1 quando verdadeiro. Operador Exemplo Definição > x > y Retorna 1 se x for maior que y, 0 caso contrário. < x < y Retorna 1 se x for menor que y, 0 caso contrário. >= X >= y Retorna 1 se x for maior ou igual a y, 0 c. c. <= X <= y Retorna 1 se x for menor ou igual a y, 0 c. c. == x == y Retorna 1 se x for igual a y, 0 c. c.!= x!= y Retorna 1 se x for diferente de y, 0 c. c. 3 Importante: = e == Operador de atribuição = é totalmente diferente do operador relacional de igualdade ==. 4 Prof. Renato Pimentel 2
Importante: = e == Operador de atribuição = é totalmente diferente do operador relacional de igualdade ==. Por que sempre se entra no bloco da condição? Ao fazer Nota = 60 (Nota recebe 60), estamos atribuindo um valor inteiro e diferente de zero à variável nota. Como em C os valores lógicos são números inteiros, assume-se que a condição retornou verdadeira (60 é diferente de zero, valor associado a falso). 5 Operadores lógicos em C Operadores lógicos: operam sobre valores lógicos. Retorno: 0 para verdadeiro ou 1 para falso. 3 Operadores: && (E lógico) (OU lógico)! (NÃO lógico) operador unário (único operando à direita). Operador Exemplo Definição && (c>='0' && c<='9') AND (E) (a==5 a==0) OR (OU)!!continuar NOT (NÃO): negação lógica. 6 Prof. Renato Pimentel 3
Operadores lógicos em C Tabela verdade em linguagem C: a b a && b a b!a!b 1 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 1 1 7 Estruturas condicionais If If Else Switch 8 Prof. Renato Pimentel 4
Estruturas condicionais Também chamadas de estruturas de condição ou estruturas de seleção. Possibilita a escolha de uma ação ou um grupo de ações a serem executadas quando determinadas condições são ou não satisfeitas. Condição Geralmente dada em termos de uma ou combinações de: operações relacionais; operações lógicas. 9 Condição em C Pode ser definida em termos de: Operadores matemáticos: +,, *, /, % Operadores relacionais: >, <, >=, <=, == (igual),!= (diferente) Operadores lógicos: && (e), (ou),! (não) Exemplos: x é maior ou igual a y? x >= y x-5 é diferente de y+3? x 5!= y + 3 x é maior que y e menor que z? (x > y) && (x < z) 10 Prof. Renato Pimentel 5
Condição em C Condição: operação relacional ou lógica. Considerada falsa se possui valor 0; Considerada verdadeira se possui valor 1 ou diferente de 0. Expressões equivalentes Se uma variável é diferente de zero, ela própria retorna um valor que é considerado verdadeiro pelo computador: (num!= 0) (num) Se uma variável possui valor zero, sua negação é considerada verdadeiro pelo computador: (num == 0) (!num) 11 Comando if Estrutura condicional simples: comando if: if (condição) comando; Estrutura condicional Mais de um comando: usar chaves {}: if (condição) { } sequência de comandos; Estrutura condicional 12 Prof. Renato Pimentel 6
Comando if Comando if:...... if (condição) { sequência de comandos; }... condição F... V Comando(s) 13 Comando if: exemplo 14 Prof. Renato Pimentel 7
Comando if: exemplo Em C, condição deve vir entre parênteses! 15 Comando if: exemplo Início Falso Verdadeiro Fim 16 Prof. Renato Pimentel 8
Comando if: exemplo 17 Comando if: exemplo Uso das chaves é obrigatório quando há mais de uma instrução no bloco de instruções 18 Prof. Renato Pimentel 9
Comando if Observações: Não se usa ponto e vírgula (;) após o comando if: compilador entende que comando if terminou, e executa o comando seguinte sempre (como se estivesse fora do if); Pode-se usar as chaves {} para delimitar sequência de comandos: As chaves devem ser usadas quando sequência tem mais de um comando; Quando única instrução, uso é facultativo: chaves podem ser omitidas. 19 Comando else Comando else complementa o comando if, tratando a situação em que a condição de teste é falsa. Neste caso, temos uma estrutura condicional composta. 20 Prof. Renato Pimentel 10
Comando else Forma geral do comando else: if (condição) { primeira sequência de instruções; } else { segunda sequência de instruções; } 21 Comando else... if (condição) {... primeira sequência } de instruções; V condição F else { segunda sequência Comando(s) Comando(s) de instruções; }...... 22 Prof. Renato Pimentel 11
Comando else: exemplo 23 Comando else: exemplo Início Verdadeiro Falso Fim 24 Prof. Renato Pimentel 12
Comando else Observações: Não existe condição para o comando else: comando é simplesmente complemento do if, quando condição do último é falsa. Errado: else (num!= 10) Não existe else isolado, sem if correspondente. A exemplo do que ocorre para if, não se usa ponto e vírgula (;) após o comando else. Errado: else; Uso de chaves {} segue as mesmas regras vistas para o if. 25 Comando else Observação: se instruções do comando if forem executadas em um programa, então instruções de seu else não serão executadas. Portanto, não faz sentido usar um único par de chaves para definir os dois conjuntos: 26 Prof. Renato Pimentel 13
Aninhamento de if if aninhado: if definido dentro de bloco de instruções de outro if (ou else) mais externo: 27 Aninhamento de if No slide anterior, o programa começa a testar as condições iniciando pela condição 1. Se o resultado for diferente de zero, então bloco de comandos associado a ela é executado. Assim, a condição 2 será testada, se, e somente se, condição 1 for verdadeira. Esse processo se repete para cada if que o programa encontrar dentro do bloco de comando que for executado. 28 Prof. Renato Pimentel 14
Aninhamento de if Útil quando se tem mais do que dois caminhos para seguir dentro de um programa. Exemplo: um comando if é suficiente para testar se um valor é maior que outro ou não. Porém, não pode testar se número é maior, menor, ou igual ao outro. Veja exemplo a seguir. 29 Aninhamento de if: exemplo 30 Prof. Renato Pimentel 15
Aninhamento de if: exemplo V F V F 31 Aninhamento de if Cuidado: É preciso saber a qual if acima no programa o comando else está relacionado: Esta relação não é definida pelo alinhamento no arquivo.c; else é associado ao primeiro if antes dele dentro de um bloco de comandos: 32 Prof. Renato Pimentel 16
Aninhamento de if Cuidado: É preciso saber a qual if acima no programa o comando else está relacionado: Esta relação não é definida pelo alinhamento no arquivo.c; else é associado ao primeiro if antes dele dentro de um bloco de comandos: 33 Aninhamento de if Cuidado: É preciso saber a qual if acima no programa o comando else está relacionado: Esta relação não é definida pelo alinhamento no arquivo.c; else é associado ao primeiro if antes dele dentro de um bloco de comandos: Novo bloco de comando definido pelas chaves 34 Prof. Renato Pimentel 17
Aninhamento de if Cuidado: Para cada if existe um único else. 35 Operador? Operador ternário?: simplificação do if-else, quando apenas uma instrução faz parte do if e apenas uma do else. Tipicamente usado para atribuição. Sintaxe: condição? expressão1 : expressão2 Condição é avaliada: Se verdadeira, expressão1 será o resultado do comando; Se falsa, expressão2 será o resultado. 37 Prof. Renato Pimentel 18
Operador? Exemplo: imprimir maior valor 38 Operador? Exemplo: imprimir maior valor 39 Prof. Renato Pimentel 19
Comando switch Comando de seleção múltipla; Assemelha-se ao aninhamento de if-else-if.. 40 Comando switch Mais limitado que if-else: Comando if-else pode testar expressões relacionais ou lógicas; Comando switch somente pode testar se variável do tipo int ou char é igual a um certo valor constante. switch é indicado para testar uma variável em relação a diversos valores preestabelecidos. Uso de chaves {} dentro de cada case não é necessário. 41 Prof. Renato Pimentel 20
Comando switch: exemplo 42 Comando switch Comando default: Comando opcional, e sua sequência de comandos somente é executada se o valor da variável testada pelo comando switch não for igual a nenhum dos valores do comando case. 43 Prof. Renato Pimentel 21
Comando switch Comando break: Faz com que o switch seja interrompido assim que uma das sequências de comandos seja executada. Não é essencial. Se após a execução da declaração não houver um break, o programa executará o conteúdo dentro dos cases subsequentes. Isto pode ser útil em algumas situações, mas tenha cuidado! 44 Comando switch: exemplo sem break Exemplo: qual a saída do programa a seguir? 45 Prof. Renato Pimentel 22
Exercícios 1. Escreva um programa que lê um número inteiro. O programa deverá dizer se tal número é par ou ímpar. 2. Faça um programa que leia dois números inteiros e mostre o maior deles. Se, por acaso, os dois números forem iguais, imprima a mensagem Números iguais. 3. Faça um programa que receba três números, e mostre o maior. 46 Exercícios 4. Faça um programa que receba a idade de um nadador e mostre sua categoria, conforme tabela a seguir: Categoria Idade infantil 5 a 7 juvenil 8 a 10 adolescente 11 a 15 adulto 16 a 30 sênior Acima de 30 47 Prof. Renato Pimentel 23
Exercícios 5. Escreva um programa que mostre o menu de opções a seguir, receba a opção do usuário e os demais dados necessários para executar cada operação. Menu de opções 1. Somar dois números inteiros 2. Extrair a raiz quadrada de um número real Digite a opção desejada 48 Exercícios 6. Escreva um programa que receba um número de 1 a 12 e mostre qual o mês correspondente, escrevendo o nome do mês por extenso. 7. Escreva um programa que resolva a equação de segundo grau, sendo que o valor a deve ser diferente de zero. Caso não exista raiz real, o programa deve retornar uma mensagem dizendo tal fato. Lembre-se: a raiz quadrada de uma variável x em linguagem C é dada por srqt(x). 49 Prof. Renato Pimentel 24