Buscar

02 Operadores

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

1
Profa. Maria Aparecida Reis
Profa. Daniela Resende Silva
Prof. Rafael Godoi Orbolato
Operadores
1
O que é uma expressão em C
Uma expressão é um arranjo válido de variáveis, constantes e operadores					
Em C, cada expressão é avaliada para um valor de um dado tipo de dado
Exemplo: 
 		Expressão: 9 + 5 
		Valor: 14
		Tipo: inteiro
2
Operadores podem ser do tipo: 
Binário: 	envolve 2 operandos
Ex: 2 + 3
Unário:	envolve 1 operando
Ex: -3
3
Exemplo de operadores em C
Operador		Descrição
 ( )			Chamada de Função
 +			Positivo
 -			Negativo
 *			Multiplicação
 / 			Divisão
 %			Modulo (resto da divisão)
 +			Adição
 -			Subtração
 = 			Atribuição	
4
Alguns operadores em C
- (subtração)
+ (soma)
4
%
/
* (multiplicação)
3
& (endereço de)
* (de referência)
- (unário)
--
++
~
!
2
.*
->*
.
->
[]
()
1
Operadores
Precedência
5
Algumas definições:
A Precedência determina qual operador será aplicado primeiro numa expressão que possua vários operadores
Associatividade da esquerda para direita significa que numa expressão com dois ou mais operadores com a mesma prioridade, o operador mais a esquerda é aplicado primeiro
Ex: Os operadores * , / , % , + , - 
			9 - 5 - 1  ( 9 - 5 ) - 1  4 - 1  3
6
Exemplo de uma expressão
			7 * 10 - 5 % 3 * 4 + 9
			(7 * 10) - 5 % 3 * 4 + 9
			 70 - 5 % 3 * 4 + 9
				70 - (5 % 3) * 4 + 9
				 70 - 2 * 4 + 9
				 70 - ( 2 * 4 ) + 9
				 70 - 8 + 9		
				 ( 70 - 8 ) + 9
			 	 62 + 9
						 71
7
Uso dos parênteses
Parênteses podem ser usados para mudar o ordem/prioridade usual dos operadores
As partes dentro de ( ) serão avaliadas primeiro
Por exemplo: (7 * (10 - 5) % 3) * 4 + 9
		 ( 7 * 5 % 3 ) * 4 + 9
			 ( 35 % 3 ) * 4 + 9
				 2 * 4 + 9
						 8 + 9
							 17
8
Operador Divisão
O resultado de uma operação de divisão depende do tipo dos operandos
Se um ou dois operandos forem do tipo real (float), o resultado da divisão é também real. Caso contrário o resultado será inteiro
Exemplos:
		11 / 4 	resulta em	2	
		11.0 / 4.0 	resulta em	2.75
		11 / 4.0		resulta em 	2.75
OBS O operador de divisão é “overloaded”, isto é, o mesmo operador é utilizado para dois tipos diferentes de divisão: inteira e real
9
Operador Módulo
O operador módulo % pode ser usado somente com operandos inteiros e sempre produz um resultado do tipo inteiro 
O resultado é o resto de uma divisão inteira
Ex: 
5 % 4	 resulta em	1
9 % 4	 resulta em 	1
6 % 4	 resulta em 	2
10
Operador Incremento (++)
int idade;
idade = 8;
idade++; 
8
idade
9
idade
int idade;
idade = 8;
++idade; 
8
idade
9
idade
int idade;
idade = 8;
idade=idade+1; 
8
idade
9
idade
11
Operador Decremento (--)
int idade;
idade = 8;
idade--; 
8
idade
7
idade
int idade;
idade = 8;
--idade; 
8
idade
7
idade
int idade;
idade = 8;
idade=idade-1; 
8
idade
7
idade
12
Qual a diferença da forma pré e pós fixa dos operadores -- e ++ ?
Quando os operadores de decremento e incremento são usados sozinhos numa linha de comando, a forma pré e pós fixas são idênticas
Entretanto, quando os operadores -- e ++ são usados numa expressão com outros operadores, o resultado das formas pré e pós fixas podem ser diferentes
13
In/Decremento nas formas Pré e Pós Fixa
int alpha ;
int num ;
num = 13;
alpha = ++num * 3;
13
num
?
alpha
14
num
14
num
42
alpha
int alpha ;
int num ;
num = 13;
alpha = num++ * 3;
13
num
?
alpha
13
num
14
num
39
alpha
?
alpha
?
alpha
Primeiro incrementa e depois realiza a multiplicação
Primeiro realiza a multiplicação e depois incrementa
14
Tipo de dado Boolean (bool)
Em C não temos o tipo de dado bool. Em C, o valor zero representa falso e qualquer valor diferente de zero representa verdadeiro
Ex.
...
int booleano;
booleano = 0;
... (booleano) ... //equivalente a false.
booleano = 1;
... (booleano) ... //equivalente a true. (poderia ser 1000).
...
15
Expressões Lógicas
São expressões compostas por:
 Expressões aritméticas seguidas de operadores relacionais, 
Valores ou variáveis lógicas seguidas de operadores lógicos
 Expressões Lógicas, quando avaliadas, retornam verdadeiro (true) ou falso (false)
16
Operadores Relacionais
São os operadores utilizados para comparar duas expressões. Operadores relacionais testam a relação entre dois valores
> Maior que
< Menor que
>= Maior que ou igual
<= Menor que ou igual
== Igual
!= Diferente
Cuidado! É comum confundir o operador = de atribuição com o operador == de comparação
17
Exemplo de Operadores Relacionais
18
Operadores Relacionais
O programador deve ter cuidado quando estiver comparando tipos distintos de dados
Se o programador comparar tipos distintos de dados (como int e float), uma conversão implícita acontecerá na variável bool
int umaVarInteira = 5;
float umaVarFloat = 5.5;
bool resultado;
...
...
resultado = umaVarInteira >= umaVarFloat;
A variável umaVarInteira será convertida para float antes da comparação
19
Operadores Relacionais
Observe o valor retornado pelas seguintes comparações:
(‘0’ < ‘9’)  true
(0 < 9)  true
(‘0’ < 9)  false
Qual o motivo para que esta última comparação seja false?
20
Mais Exemplos de Operadores Relacionais
int x, y ;
x = 4;
y = 6;
	EXPRESSÃO	 VALOR
	x < y		 true
	x + 2 < y		 false
	x != y		 true
	x + 3 >= y		 true
	y == x		 false
	y == x+2		 true
	y = x + 3		 7 (true)	
21
Operadores Lógicos
São 3 os operadores Lógicos: 
2 binários 
E (&&)
OU (||)
1 unário
Negação (!)
22
Resumo dos Operadores Relacionais e Lógicos
6 Operadores Relacionais
< 	 <= > >= 	== != 
3 Operadores Lógicos
!		&&		||
23
Precedência dos Operadores Lógicos e Relacionais
24
Exemplo
O programa abaixo está correto? Ele imprimirá ou não a mensagem “O Ar está saudável”?
int qualidadeDoAr ;
qualidadeDoAr = 35 ;
if (50 < qualidadeDoAr < 80)
 printf (“O Ar está saudável“);
(50 < qualidadeDoAr < 80) equivale a
((50 < qualidadeDoAr) < 80)
(false < 80)
(0 < 80)
true
25
Correção do Programa anterior
int qualidadeDoAr ;
qualidadeDoAr = 35 ;
if ((50 < qualidadeDoAr) && (qualidadeDoAr < 80))
	printf (“O Ar está saudável“);
26
Avaliação Preguiçosa
C faz avaliação preguiçosa de expressões lógicas
Isto significa que uma expressão lógica é avaliada da esquerda para a direita. A avaliação termina assim que o valor da expressão pode ser determinado
27
Avaliação Preguiçosa
int idade; float altura;
idade = 25;
altura = 1.80;
		EXPRESSÃO			
(idade > 50) && (altura > 1.75)
 false	
				
	A avaliação da expressão termina ao avaliar (idade > 50) pois o operador && requer que ambos operandos sejam verdadeiro. Se um deles é falso, então o resultado de && também será falso e não se faz necessário avaliar (altura > 1.75)
28
Avaliação Preguiçosa
int idade; float altura;
idade = 25;
altura = 1.80;
		EXPRESSÃO 			
(altura > 1.75) || (idade > 40)
 true	
				
	A avaliação da expressão termina ao avaliar (altura > 1.75) pois o operador || requer que pelo menos um dos operandos seja verdadeiro. Neste caso, como um deles já é verdadeiro, não há necessidade de continuar a avaliação da expressão
29
Benefícios da Avaliação Preguiçosa
A primeira parte de uma expressão lógica/Booleana pode ser avaliada primeiramente para “prevenir” erros de avaliação de um operador/operando não muito seguro
O programa não perde tempo de execução avaliando parte complexa de uma expressão quando o resultado já é conhecido
30
Exemplo
int numero;
float x;
(0 != numero) && ( x < 1 / numero)
	Esta primeira parte é avaliada primeiro
 Graças à Avaliação Preguiçosa, o lado direito da expressão não será executado quando o número for zero, evitando assim erro de execução causado por divisão por zero
31
	Declaração
int idade = 9;
Expressão
	
Resultado
	(idade > 9)
	false
	(idade < 9)
	false
	(idade >= 9)
	true
	(idade <= 9)
	true
	
	Operador
	Descrição 
	Associatividade 
	Maior Prioridade
	::
()
	Resolução de escopo
Chamada de função
	Esquerda p/ Direita
	Unários
	!, +, -
	Negação, sinal pos e neg
	Direita p/ Esquerda
	Multiplicativo
	* / %
	Multi/Divisão/Resto
	Esquerda p/ Direita
	Aditivo
	+ -
	Soma e Subtração binária
	Esquerda p/ Direita
	Entrada/Saída
	>> <<
	Extração / Inserção
	Esquerda p/ Direita
	Relacional
	< > 
<= >=
	Menor/Maior 
Menor/Maior ou igual 
	Esquerda p/ Direita
	Igualdade
	== !=
	Igual, Diferente
	Esquerda p/ Direita
	E
	&&
	E lógico
	Esquerda p/ Direita
	OU
	¦¦
	OU lógico
	Esquerda p/ Direita
	Atribuição
	=
	Atribuição de expressão
	Direita p/ Esquerda

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais