• Nenhum resultado encontrado

Aula06-Operadores

N/A
N/A
Protected

Academic year: 2021

Share "Aula06-Operadores"

Copied!
9
0
0

Texto

(1)

Microcontroladores

Prof. Eng. Derig Almeida Vidal

Mestre em Computação Aplicada, Engenheiro de Produção e Tecnólogo em Automática

Aula 06

Operadores

Prof. Derig Almeida Vidal, MsC

Sumário

• Operadores • Atribuição • Aritméticos • Relacionais • Lógicos Booleanos • Lógicos bit a bit • Outros operadores

Expressões numéricas e de string

(caracteres)

• Representação de dados:

– Números Decimais: Não podem começar por ‘ 0 ’ (zero)

• Ex: 123; 2; 14534; 3.14; ...

– Números Octais: Devem começar por ‘ 0 ’ (zero)

• Exemplos: 045; 09;...

– Números Binários: Devem iniciar por ‘ 0b ‘

• Ex: 0b10101010

– Números Hexadecimais: Devem iniciar por ‘ 0x ‘

• Ex: 0x32; 0xA9; ...

– String de 1 caractere: Entre Apóstrofos ‘ ‘

• Ex: ‘z’; ‘A’; ....

– String de vários caracteres: Entre aspas “ “

• Ex: “teste de escrita”

Operadores

• A linguagem C possui uma grande quantidade de operadores.

• Pode-se classificar os operadores da linguagem C em sete categorias principais:

– Atribuição; – Aritméticos; – Relacionais; – Lógicos;

– Lógicos bit a bit; – Dentre outros;

(2)

Prof. Derig Almeida Vidal, MsC

Operadores

Prof. Derig Almeida Vidal, MsC

Atribuição

• O operador de atribuição “=” é utilizado para atribuir um determinado valor a uma variável. • Ex:

x = 10; y = x;

Aritméticos

• 5.0 / 2.0 = 2,5 em uma divisão real; • 5 / 2 = 2 em uma divisão inteira; • 5 % 2 = 1 é o resto da divisão;

Operador Ação

+ Adição

- Subtração ou menos unário * Multiplicação

/ Divisão

% Resto de divisão inteira ++ Incremento

Aritméticos - Incremento e decremento

int a,b=10;

a = b++; // o valor de a é 10 e de b é 11; • Ou seja, atribui o valor de b para a e incrementa b;

int a,b=10;

a = b--; // o valor de a é 10 e de b é 9;

(3)

Prof. Derig Almeida Vidal, MsC

Aritméticos - Incremento e decremento

int a,b=10;

a = ++b; // o valor de a é 11 e de b é 11; • Ou seja, incrementa b e atribui o valor de b para a;

int a,b=10;

a = --b; // o valor de a é 9 e de também é 9; • Ou seja, decrementa b e atribui o valor de b para a; • OBS: não é possível utilizar operadores de incremento ou

decremento com variáveis ou tipos de dados complexos, tais como os tipos ponto flutuante.

Prof. Derig Almeida Vidal, MsC

Relacionais

Operador Ação > Maior que >= Maior ou igual a < Menor que <= Menor ou igual a == Igual a != Diferente de

Lógicos Booleanos

• São de suma importância na construção de testes condicionais;

• Através destes podemos relacionar diversas condições diferentes em um mesmo teste lógico;

Operador Ação

&& AND (E)

|| OR (OU) ! NOT (NÃO)

Lógicos Booleanos

int x,y; x = 10; if (x>5 && x<20) y = x;

• Neste caso y só receberá x se x for maior do que 5

e menor do que 20;

int x,y; x = 0; if (!x) y = x;

(4)

Prof. Derig Almeida Vidal, MsC

Lógicos bit a bit

• São utilizados para realizar operações lógicas entre elementos ou variáveis;

• Podem resultar em um valor da mesma magnitude dos elementos operados.

Operador Ação

& AND (E)

| OR (OU)

^ XOR (OU exclusivo) ~ NOT (complemento de um) >> Deslocamento a direita << Deslocamento a esquerda

Prof. Derig Almeida Vidal, MsC

Operador & (AND)

int x,y; x = 100; y = x & 15; 100 decimal = 01100100 015 decimal = 00001111 Resultado = 00000100 Ou seja 4 em decimal

Operador & (AND)

• Ele é uma excelente forma de desligar um ou mais bits de uma determinada variável, já que o bit 0 em um dos operandos fará com que o respectivo bit de resultado seja também igual a zero.

#byte portb = 6

portb = portb & 0b11100000;

Operador | (OR)

int x,y; x = 0x20; y = x | 0x04; 0x20 = 00100000 0x04 = 00000100 Resultado = 00100100 Ou seja o resultado 0x24

(5)

Prof. Derig Almeida Vidal, MsC

Operador | (OR)

• Ele é uma excelente forma de ligar um ou mais bits de uma determinada variável, já que o bit 1 em um dos operandos fará com que o respectivo bit do resultado seja também igual a um.

#byte portb = 6

portb = portb | 0b11100000;

Prof. Derig Almeida Vidal, MsC

Operador ^ (XOR)

int x,y; x = 100; y = x ^ 99; 100 decimal = 01100100 099 decimal = 01100011 Resultado = 00000111 Ou seja 7 em decimal.

Sempre que os bits forem iguais nos dois operandos o resultado será 0, se diferentes 1;

Operador ~ (NOT)

int x,y; long a,b; x = 1; a = 1; y = ~ x; b = ~ a; 1 decimal (x) = 00000001 Resultado (y) = 11111110 1 decimal (a) = 0000000000000001 Resultado (b) = 1111111111111110

Operador de deslocamento <<

int x,y; x = 10; y = x << 2; 10 decimal (x) = 00001010 << 00010100 << Resultado (y) = 00101000

(6)

Prof. Derig Almeida Vidal, MsC

Operador de deslocamento >>

int x,y; x = 10; y = x >> 1; 10 decimal (x) = 00001010 << Resultado (y) = 00000101

OBS: os comandos de deslocamento não são válidos para dados complexos (float).

Prof. Derig Almeida Vidal, MsC

Outros operadores

Operador Ação

? Operador ternário condicional , Separador de expressões . Separador de estruturas -> Ponteiro de elemento de estrutura (tipo) Operador de modelagem de dado sizeof Retorna o tamanho da variável

Operador ?

• É utilizado para substituir uma expressão condicional baseada no comando if e tem esse nome devido ao fato de ser composto sempre por três expressões. Sua forma geral é:

Variável = Expressão1? Expressão2: Expressão3;

• O que significa: avalie expressão 1 e se ela for verdadeira, atribua a Variável a Expressão2; caso contrário atribua a Expressão3;

Operador ?

int x,y;

x = 5;

y = x==2 ? 10 : x+3;

Desta forma, x terá seu valor igual a 8.

Caso x fosse igual a 2 o seu valor seria

10.

(7)

Prof. Derig Almeida Vidal, MsC

Operador vírgula

• É utilizado para enfileirar duas ou mais expressões. • A forma geral de utilização deste operador é:

Variável = (Expressão1, Expressão2 [,Expressão3]); • Ex:

y = (x=0, x+5);

• A variável x assume o valor zero e em seguida, y irá assumir o valor de x mais 5, ou seja, ao final da avaliação da expressão, y = 5;

Prof. Derig Almeida Vidal, MsC

Operador vírgula

• Ex2:

z = (x = 0, y = 5, x - 2);

• O compilador gera o código para cada expressão individualmente, terminando por gerar o último código: z = x – 2;

Operador sizeof

• É utilizado para retornar a quantidade de memória utilizada por uma determinada variável ou um determinado tipo de dado.

• Forma geral:

sizeof variável

sizeof (tipo de dado)

• É utilizado para permitir ao programador controlar a ocupação de memória pelo programa, auxiliando assim na portabilidade do programa.

Associação de operadores

Operador Equivalência Descrição

a *= b a = a * b Multiplicação a /= b a = a / b Divisão a %= b a = a % b Resto a += b a = a + b Adição a -= b a = a - b Subtração a <<= b a = a << b Desloc esquerda a >>= b a = a >> b Desloc direita a &= b a = a & b E a ^= b a = a ^ b OU exclusivo a |= b a = a | b OU

(8)

Prof. Derig Almeida Vidal, MsC

Procedência

dos

operadores

Ordem Operador Maior () [] ->

. ++ -- ! & * ~ (tipo) sizeof * / % + -<< >> < <= >= > == != & ^ | && || ? = += -= *= /= Menor ,

Prof. Derig Almeida Vidal, MsC

Exercícios

1. Qual é a diferença entre o operador = e ==? 2. Qual é o resultado da expressão (10 && 5)? 3. Qual é o resultado da expressão (10 | 5)? 4. Como é avaliada a expressão (x = (10+5) < 20)? 5. Qual é o valor de “x” ao término do programa

apresentado em seguida? int x,y; y = 256; y += 1; x = y >> 1;

Exercícios

6. Qual é o resultado da expressão (10 % 3 + 1)? 7. Qual é o valor de “y” ao término do programa

seguinte? long int x; int y,z; z = 100; y = 10; x = z * y + z && 1; y = (int) x;

Exercícios

8. Qual é o valor armazenado nas variáveis “y” e “z” no programa seguinte? long int x; int y,z; x = 0x1234; y = x; z = x>>8;

(9)

Prof. Derig Almeida Vidal, MsC

Bibliografia

• PEREIRA, Fábio. Microcontroladores PIC:

Referências

Documentos relacionados

Podem treinar tropas (fornecidas pelo cliente) ou levá-las para combate. Geralmente, organizam-se de forma ad-hoc, que respondem a solicitações de Estados; 2)

O termo extrusão do núcleo pulposo aguda e não compressiva (Enpanc) é usado aqui, pois descreve as principais características da doença e ajuda a

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Relatou sobre o registro do condomínio e explicou que só não foram transferidas para esse condomínio as partes comuns que ainda estão afetadas.. Ruas, áreas

Se você apresentar qualquer tipo de irritação ocular ou qualquer novo problema nos olhos, como vermelhidão dos olhos ou inchaço das pálpebras, entre em contato com seu

Sede da Secretaria de Fazenda do Distrito Federal Normas Complementares Não identificadas.. • Planejar e reportar aos gestores das agências de atendimento sobre manutenções

Consiste na concessão de repasse financeiro fixo e mensal, com valor estabelecido anualmente, através do edital(mãe), ao estudante, para custear as despesas com transporte

...uma organização de áreas especializadas baseada em frames em que um frame dinâmico orientado para o processo fornece as bases conceituais para a localização