Você está na página 1de 20

Programação I

AULAS TEÓRICAS
OPERADORES ARITMÉTICOS
2
 São usados para realizar operações aritméticas
 Em C usam-se os seguintes operadores:
Operador Operação Tipo Âmbito
+ Adição Binário int, float e double
- Subtracção (Sinal) Binário (Unário) int, float e double
* Multiplicação Binário int, float e double
/ Divisão Binário int, float e double
% Resto da Divisão Binário int
++ Incremento Unário int, float e double
-- Decremento Unário int, float e double
 Para números inteiros o operador / devolve um inteiro, sem a parte
decimal.
 Já para números reais (ponto flutuante) devolve outro número real.
Operadores Incremento e Decremento
3

Esses operadores são usados para incrementar ou


decrementar de uma unidade (N bytes) a variável
sobre a qual estão aplicados.
Eles podem ser pre-fixados ou pós-fixados.
Quando são pré-fixados primeiramente incrementam
(decrementam) o valor da variável de uma unidade
depois retornam o valor da variável já incrementada
(decrementada)
Quando são pós-fixados primeiramente retornam o
valor da variável e depois incrementam
(decrementam) o valor da variável.
Operadores Incremento e Decremento
4

Operação Acção Realizada Equivalente


num = x++; Atribui o valor actual de x a num e depois num = x + 1;
incrementa x de 1
num = ++x; Incrementa o valor de x e depois atribui o novo num = x + 1;
valor de x para num.
num = x--; Atribui o valor actual de x a num e depois num = x - 1;
decrementa x de 1
num = --x; Decrementa o valor de x e depois atribui o novo num = x - 1;
valor de x para num.
OPERADOR DE ATRIBUIÇÃO
5

Em C a operação de atribuição é realizada mediante


o uso do caractere ‘=’ (igual).
Para usá-lo recorre-se a seguinte sintaxe:
 variavel = valor;
Sendo que valor pode ser um valor de um tipo de
dado qualquer ou uma expressão.
O operador pega o valor que estiver a sua direita e
atribui o mesmo a variável a sua esquerda.
Ele também retorna o valor que ele atribui.
OPERADOR DE ATRIBUIÇÃO
6

Exemplo:
float media = (nota1 + nota2)/2; - Atribui a soma das
notas divididas
por 2 a variável média
int i = 0; - Atribui o valor 0 a variável i
int y= z = 5; - Atribui o valor 5 a variável z e
retorna o resultado da
atribuição a variável y
if(num=total) - Atribui a variável num o valor de
total e este valor é retornado
para o teste do if.
OPERADOR DE ATRIBUIÇÃO
7

Exercício
 Diga o resultado das variáveis x, y e z depois da seguinte
sequência de operações:
int x,y,z;
x=y=10;
z=++x;
x=-x;
y++;
x=x+y-(z--);
OPERADORES RELACIONAIS
8

Em C os operadores relacionais são usados para


efectuar comparações entre variáveis.
Os Operadores relacionais devolvem sempre
verdadeiro (1) ou falso (0)
Operador Operação Resultado
> Maior do que Verdadeiro ou Falso
>= Maior ou Igual Verdadeiro ou Falso
< Menor do que Verdadeiro ou Falso
<= Menor ou Igual Verdadeiro ou Falso
== Igual a Verdadeiro ou Falso
!= Diferente Verdadeiro ou Falso
OPERADORES LÓGICOS
9

Para efectuar testes com valores lógicos usam-se os


operadores lógicos
Em C existem os seguintes operadores lógicos
Operador Operação Resultado
&& AND (E) Verdadeiro ou Falso
|| OR (OU) Verdadeiro ou Falso
! NOT (NÃO) Verdadeiro ou Falso
Exemplo:
while((x<10)&&(x!=5)||(x>1))
soma = soma + x;
OPERADORES LÓGICOS BIT-a-BIT
10

 Para além dos operadores lógicos comuns o C dispõe de operadores bit-a-


bit para números.
 É necessário que os números estejam na base binária
 Estes operadores actuam em cada bit que compõe o número.
 Estes operadores são muitos usados em programação de baixo nível.
 São ainda usadas comummente em operações de mascaramento de uma
sequência de bits
 São aplicados aos tipos: char, int e long int
Operador Operação Resultado
& AND (E) Verdadeiro ou Falso
| OR (OU) Verdadeiro ou Falso
~ NOT (NÃO) Verdadeiro ou Falso
^ XOR (OU EXCLUSIVO Verdadeiro ou Falso
>> Deslocamento a Direita Desloca n Bits à Direita
<< Deslocamento a Esquerda Desloca n Bits à Esquerda
OPERADORES LÓGICOS BIT-a-BIT
11

 Os operadores de deslocamento, >> e << movem todos os bits de


uma variável para a direita ou para a esquerda, respectivamente
 A forma geral de deslocamento à direita é:
 variável >> N, sendo que N é o número de posições de bits a
deslocar
 A forma geral de deslocamento à esquerda é:
 variável << N, sendo que N é o número de posições de bits a
deslocar
 Conforme os bits são deslocados para uma extremidade, zeros
são colocados na outra;

 Nota: cada deslocamento à esquerda multiplica por 2 e à direita


corresponde a dividir por 2
OPERADORES LÓGICOS BIT-a-BIT
12

 Exemplo de deslocamento a esquerda e direita


EXPRESSÕES
13

 Uma expressão é constituída por uma combinação de


variáveis, constantes e operadores e operandos.

 A execução de uma expressão depende da ordem de


precedências das operações presentes nela, isto é, com base
na tabela de precedências da linguagem C
Abreviatura de Expressões
14

Algumas expressões em C podem ser abreviadas.


Em geral são expressões que estão envolvidas em
operações aritméticas.
Operação Equivalente
soma += j; soma = soma + j;
v += 5; v = v + 5;
aux -= x; aux = aux - x;
z -= 10; z = z - 10;
num %=2; num = num%2;
n1 *=n2; n1 = n1 * n2;
Tabela de Precedências em C
Prioridade Operador Associatividade
0 ( ), [ ], ->, .15 Esquerda para Direita
1 ++, --, &, !, *, ~, (cast), sizeof Direita para Esquerda
2 *, /, % Esquerda para Direita
3 +, - Esquerda para Direita
4 <<, >> Esquerda para Direita
5 <, <=, >, >= Esquerda para Direita
6 ==, != Esquerda para Direita
7 & Esquerda para Direita
8 ^ Esquerda para Direita
9 | Esquerda para Direita
10 && Esquerda para Direita
11 || Esquerda para Direita
12 ?: Direita para Esquerda
13 =, +=, -=, *=, /=, %= Direita para Esquerda
14 , Esquerda para Direita
Conversão de Tipos de Dados (cast)
16
 O cast é a operação que permite a conversão de um dado de um tipo
para outro.
 Em C a conversão de tipos de dados pode ser feitos de forma:
 Implícita
 Quando constantes e variáveis de tipos diferentes são misturadas em
uma expressão, elas são convertidas para o mesmo tipo (baseia-se no
tamanho ocupado, em bytes).
 Todos os char e short int são convertidos para int
 Todos os float são convertidos para double

 Para pares de operandos de tipos diferentes:


 se um deles é long double, o outro é convertido para long
double;
 se um deles é double o outro é convertido para double;
 se um é long o outro é convertido para long;
 se um é unsigned o outro é convertido para unsigned
Conversão de Tipos de Dados (cast)
17

 Explícita (cast)
 Neste caso a operação é feita usando a sintaxe:
(tipo_dados) variavel;
 Esta operação força a conversão do valor actual da variável para o
seu equivalente no novo tipo de dados indicados por tipo_dados
 É da responsabilidade do programador qualquer perca de precisão
que possa resultar da conversão (Atenção!!!)
Conversão de Tipos de Dados (cast)
18

 Explícita (cast)
 Ao efectuar-se a conversão entre variáveis de diferentes tipos de
dados, processa-se a redução da parte alta dos bits que compõe o
número em causa até atingir o tamanho final desejado.
 Isto é, parte dos bits mais significativos são ignorados.
Exemplo:
 int 0000101000010011 2579
 char
00010011 19
Conversão de tipos em atribuição
19

A tabela seguinte resume as possíveis conversões


explícitas e suas consequências
Exercícios
20

1) Escolha a opção que inclui a) int v = 0, x = 1, y = 2, z = 3;


somente nomes válidos para b) v += x+y;
variáveis na linguagem C c) x *= y = z + 1;
a) If, a_b_2, H789, _yes d) z %= v + v + v;
b) j, int, obs, A5 e) v += x += y += 2;
c) 9xy, a36, x*y, --j 3) Diga se é verdadeira ou falsa a
d) 2_ou_1, \fim, *h, j operação lógica abaixo:
e) Nenhuma das opções 1) (-5 || 0)&&(3 >= 2)&&(1 != 0)||(3 < 0)
anteriores
2) Qual o valor das variáveis v, x, y e z
após a execução do seguinte trecho
de código

Você também pode gostar