• 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

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

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

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