• Nenhum resultado encontrado

Aula10-Operadores

N/A
N/A
Protected

Academic year: 2021

Share "Aula10-Operadores"

Copied!
10
0
0

Texto

(1)

IFCE – Campus Cedro

Mecatrônica Microcontroladores

Prof. Eng. Derig Almeida Vidal

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

Aula 10

Operadores

Prof. Derig Almeida Vidal IFCE - Cedro

Sumário

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

Prof. Derig Almeida Vidal IFCE - Cedro

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;

Prof. Derig Almeida Vidal IFCE - Cedro

Atribuição

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

x = 10; y = x;

(2)

Prof. Derig Almeida Vidal IFCE - Cedro

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

-- Decremento

Prof. Derig Almeida Vidal IFCE - Cedro

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;

• Ou seja, atribui o valor de b para a e decrementa b;

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.

Relacionais

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

(3)

Prof. Derig Almeida Vidal IFCE - Cedro

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)

Prof. Derig Almeida Vidal IFCE - Cedro

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;

• Neste caso y receberá x, pois !x é verdadeiro (1);

Prof. Derig Almeida Vidal IFCE - Cedro

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 IFCE - Cedro

Operador & (AND)

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

(4)

Prof. Derig Almeida Vidal IFCE - Cedro

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;

Prof. Derig Almeida Vidal IFCE - Cedro

Operador | (OR)

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

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;

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;

(5)

Prof. Derig Almeida Vidal IFCE - Cedro

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

Prof. Derig Almeida Vidal IFCE - Cedro

Operador de deslocamento <<

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

Prof. Derig Almeida Vidal IFCE - Cedro

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 IFCE - Cedro

Memória

• Também são chamados de operadores de

ponteiros, são elementos de grande importância na linguagem C. São considerados os pilares dela, pois permitem o acesso direto a qualquer endereço de memória do sistema.

Operador Ação

& Endereço do operando

(6)

Prof. Derig Almeida Vidal IFCE - Cedro

Operador &

• É um operador utilizado para retornar o endereço de memória do seu operando. Por exemplo:

endereco_a = &a;

• A variável endereco_a conterá o endereço em que está armazenada a variável a;

Prof. Derig Almeida Vidal IFCE - Cedro

Operador *

• É um operador unário para retornar o conteúdo da posição de memória endereçada pelo operando que o segue. Por exemplo:

a = *endereco_a;

• O valor armazenado no local apontado pela variável endereco_a é atribuído à variável a;

Exemplo com ponteiros

#include <16f628a.h> #use delay(clock=4000000)

#fuses HS,NOWDT,PUT,NOBROWNOUT,NOMCLR,NOLVP #use rs232(baud=2400, xmit=PIN_B2, rcv=PIN_B1)

int *endereco,x,y; void main() {

x = 12;

endereco = &x; y = *endereco;

printf(“valor x= %d – endereco de x = %lx – valor y= %d”,x,endereco,y);

}

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

(7)

Prof. Derig Almeida Vidal IFCE - Cedro

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;

Prof. Derig Almeida Vidal IFCE - Cedro

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.

Prof. Derig Almeida Vidal IFCE - Cedro

Exemplo com o operador ?

#include <16f628a.h> #use delay(clock=4000000) #fuses HS,NOWDT,PUT,NOBROWNOUT,NOMCLR,NOLVP #byte porta = 5 #byte portb = 6 int liga_led(void){

porta = porta | 1; // ativa o pino 0 da porta a }

int desliga_led(void) {

porta = porta & 254; // desliga o pino 0 da porta a }

main() {

while (true) (portb & 1) ? liga_led() : desliga_led(); }

Prof. Derig Almeida Vidal IFCE - Cedro

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;

(8)

Prof. Derig Almeida Vidal IFCE - Cedro

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;

Prof. Derig Almeida Vidal IFCE - Cedro

Operador modelagem de tipo

• Operador unário destinado especificamente a forçar a conversão do operando especificado em um tipo de dado determinado. O que é chamado de

typecasting.

• Forma geral:

(tipo) variável

• O conteúdo da variável não é alterado pelo operador, ao invés disso, aloca-se uma região de RAM para o armazenamento temporário do valor modificado.

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

(9)

Prof. Derig Almeida Vidal IFCE - Cedro

Procedência

dos

operadores

Ordem Operador Maior () [] ->

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

Prof. Derig Almeida Vidal IFCE - Cedro

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;

Prof. Derig Almeida Vidal IFCE - Cedro

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;

Prof. Derig Almeida Vidal IFCE - Cedro

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;

(10)

Prof. Derig Almeida Vidal IFCE - Cedro

Bibliografia

• PEREIRA, Fábio. Microcontroladores PIC:

Referências

Documentos relacionados

In the present study, the decreasing of the number of egg masses associated to the increase in the number of eggs laid/snail and the number of eggs/egg mass, clearly reflect an

O SPDH sendo uma ferramenta para o desenvolvimento sustentável e tendo como eixo dessa transição o equilíbrio sócio-ecológico, tem como fundamento: a manutenção dos

A formação continuada não é uma prática nova. Ela foi criada há muito tempo servindo de base para a orientação e preparação dos professores e sua prática

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

O balcão de atendiment março ■ Informações sobre os t leves Tipos de veículos Motonetas até 125 cc veículos especiais de pequeno porte carros Veículos leves de 2

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

A amostra nº 1 é a própria laje estrutural de entre piso das câmaras de emissão e recepção do ruído de impacto, sem revestimento, e tem a finalidade de servir como