Вы находитесь на странице: 1из 30

Aula 3: Operadores e

expressões (continuação)

Prof. Éverton Santi


Última aula
• Variável, constante e constante simbólica
– maneiras simplificadas de utilizar a memória do
computador;
• Os tipos primitivos e suas variantes:
– int
– double
– float
– char
– void
– bool
Hoje...
• Como manipular a informação
que aprendemos a armazenar na
memória;
• O que acontece quando
misturarmos informações/dados
de diferentes tipos;
Operadores
A função do operador é transformar uma
informação/dado em uma nova informação
• Tipos de operadores:
– Matemáticos;
– Incremento e decremento;
– Lógicos e Relacionais;
– Bit a bit;
– sizeof
– Atribuição
Operadores aritméticos
Operador Ação
- Subtração
+ Adição
* Multiplicação
/ Divisão
% Módulo (resto) da
divisão inteira
Importantíssimo!
As operações são feitas
considerando a precisão dos
operandos.

SEMPRE NA MAIOR.
Incremento e decremento
Operador Ação
++ Soma 1 ao seu operando
-- Subtrai 1 do seu operando

++x;
é o mesmo que x = x + 1;
X++;

--x;
é o mesmo que x = x - 1;
x--;
Incremento e decremento
• Pré-fixado versus pós-fixado

++x; X++;

--x; x--;

pré pós
Pós-Fixado
Os programas abaixo são equivalentes.

int main(){ int main(){


int x = 3, y = 2, expr; int x = 3, y = 2, expr;
expr = x++ * y; expr = x * y;
cout << "x = " << x << endl; x = x + 1;
cout << "y = " << y << endl; cout << "x = " << x << endl;
cout << "expr = " << expr << endl; cout << "y = " << y << endl;
return 0; cout << "expr = " << expr << endl;
} return 0;
}
Pré-Fixado
Os programas abaixo são equivalentes.

int main(){ int main(){

int x = 3, y = 2, expr; int x = 3, y = 2, expr;

expr = ++x * y; x = x + 1;

cout << "x = " << x << endl; expr = x * y;

cout << "y = " << y << endl; cout << "x = " << x << endl;

cout << "expr = " << expr << endl; cout << "y = " << y << endl;

return 0; cout << "expr = " << expr << endl;

} return 0;
}
Hora da dúvida
E se mais de um operador estivesse
presente em uma atribuição, qual seria
executado primeiro?
Aí vem a tal da precedência!
Mais alta
++ --
*/%
+-
Mais baixa

Operadores de mesmo nível de precedência, isto


é, na mesma linha, são avaliados da esquerda
para a direita;
Dica:
• Use parênteses para forçar uma
ou mais operações a terem
precedência maior.
• Você também pode usar
parêntesis caso não tenha certeza
de qual operador tem maior
precedência;
Exemplo

x*y/z

x = 6; y=2; z = 4;
Operadores aritméticos de
atribuição

<variável> = <variável> <operador>


<expressão>;

é o mesmo que

<variável> <operador> = <expressão>;


exemplos
i = i + 10; i += 10;
x = x * (y + 1); x *= y + 1;
a = a – 120; a -= 120;
Operadores lógicos e relacionais

Relacional refere-se às relações entre


os valores.
Lógico refere-se a como essas
relações podem ser conectadas.
Operadores lógicos e relacionais
• São baseados na idéia de verdadeiro e
falso.
– VERDADEIRO = qualquer valor diferente de
zero
– FALSO = zero
• As expressões que usam operadores
relacionais ou lógicos devolvem zero
para falso e 1 para verdadeiro.
Relacionais
Operador Ação
> Maior que
>= Maior ou igual que
< Menor que
<= Menor ou igual que
== Igual
!= Diferente
Lógicos

Operador Ação
&& AND
|| OR
! NOT
Precedência dos operadores
lógicos e relacionais

• São menores em precedência


que os operadores aritméticos.

10 > 1 + 12

é avaliado como

10 > (1 + 12)
Precedência
Mais alta !
> >= < <=
== !=
&&
Mais baixa ||
Conversões
Quando operandos de tipos diferentes são
misturados em uma expressão, os valores
são convertidos no tipo do maior operando.

prioridade de double
conversão float
int
char
Conversão de tipos em expressões
Casting
Cast é uma conversão explícita de
tipo.

sintaxe

(tipo) expressão
exemplo
int x = 13;
float y = (float) x/2;
Conversão de tipos em atribuições

Regra: O valor do lado direito de


uma atribuição é convertido
no tipo do lado esquerdo.
• Quando se converte de:
– inteiros para caracteres
– inteiros longos para inteiros
– inteiros para inteiros curtos

perde-se a informação.
• Quando se faz conversão
envolvendo números em ponto
flutuante, pode-se perder precisão.
Exercício 1
• Construa a tabela verdade para o
operador lógico AND (&&), considerando
apenas a e b como proposições.
Exercício 2
• Construa a tabela verdade para o
operador lógico OR ( || ) considerando a e
b como proposições.
Exercício 3: Informe quais serão os valores
de saída do programa dado a seguir
#include <iostream>
using namespace std;
int main()
{
int a = 2, b = -1, c = 0;
float d = 0.5, e = 2.0;
int r1 = a+b && c;
int r2 = !(int)d;
int r3 = e++*a;
float r4 = c || a && --e * d;
float r5 = b/a;
float r6 = (float)b/a;
cout << "r1=" << r1 << " r2=" << r2 << " r3=" << r3 << endl;
cout << "r4=" << r4 << " r5=" << r5 << " r6=" << r6 << endl;
return 0;
}

Вам также может понравиться