Buscar

Expressões_em_C (2013)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

L
i
n
g
u
a
g
e
m
 
C
L
i
n
g
u
a
g
e
m
 
C
Linguagem C
>> Operadores e Expressões
Instituto Federal de Educação, Ciência e 
Tecnologia do Amazonas 
Campus Manaus - Distrito Industrial (CMDI)
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados
L
i
n
g
u
a
g
e
m
 
C
>> Operadores e Expressões
Prof. Isaac Benjamim Benchimol
ibench@ifam.edu.br
1
L
i
n
g
u
a
g
e
m
 
C
Ementa
• Introdução
• Operadores e Expressões
• Funções de E/S
• Estruturas de Controle
• Vetores e Matrizes
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 2
• Vetores e Matrizes
• Strings
• Ponteiros
• Funções
• Estruturas
• Alocação Dinâmica de Memória
• Arquivos
L
i
n
g
u
a
g
e
m
 
C
Operadores
• Operador de Atribuição
• Em C o operador de atribuição é o sinal de igual “=”. 
• É erro comum em programadores iniciantes confundir 
o “=” com o operador relacional de igualdade “==”.
• Exemplos:
a = 1;
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 3
a = 1;
delta = b * b – 4 * a * c;
i = j;
• O operando esquerdo deve ser um identificador de 
variável, isto é, não pode ser uma constante ou 
expressão. São atribuições inválidas:
1 = a; // constante!
b + 1 = a; // expressão!
L
i
n
g
u
a
g
e
m
 
C
Conversões de tipos
• Se os dois operandos de uma atribuição não são do 
mesmo tipo, o valor da expressão ou operador da direita 
será convertido para o tipo do identificador da esquerda.
• Exemplo 1:
int i; 
float r;
i = 5; // valor de i: 5
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 4
i = 5; // valor de i: 5
r = i; // valor de r: 5.0
• Exemplo 2:
int i;
float r = 654.321;
i = r; // i será truncado para 654
L
i
n
g
u
a
g
e
m
 
C
Conversões de tipos
• Pode-se dizer que as conversões potencialmente perigo-
sas (onde há possibilidade de perda de informação) são:
char � int � float � double
• Observe que o compilador C ao encontrar esta operação 
não gera nenhum aviso de atenção para o programador. 
Assim este detalhe pode gerar um erro de programação 
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 5
Assim este detalhe pode gerar um erro de programação 
(bug) que passe desapercebido ao programador 
inexperiente. É possível dizer que a linguagem C possui 
tipos ”macios” (soft types) pois a operação com variáveis 
de tipos diferentes é perfeitamente possível. Esta 
característica do C se contrapõe a algumas linguagens em 
que isto não é possível. Estas linguagens possuem tipos 
“duros” (hard types).
L
i
n
g
u
a
g
e
m
 
C
Operadores
• Atribuição Múltipla
É possível atribuir um valor a muitas variáveis em 
uma única instrução.
int i, j, k;
double max, min;
i = j = k = 1;
max = min = 0.0;
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 6
max = min = 0.0;
• Operadores Aritméticos
Operador Operação
+ adição
- subtração
* multiplicação
/ divisão
% módulo (resto da divisão inteira)
L
i
n
g
u
a
g
e
m
 
C
Conversão de tipo (casting)
• O operador cast permite forçar uma expressão a 
ser de determinado tipo:
int num;
float valor = 13.0;
num = valor % 2; // inválido
num =(int) valor % 2; // válido
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 7
A conversão de tipo é usada para que o dado 
armazenado em valor fosse transformado no 
tipo int assim a operação módulo pode ser 
efetuada.
• Regra geral de conversão de tipos:
char � int � float � double
L
i
n
g
u
a
g
e
m
 
C
Incremento/Decremento
Utilizados para incrementar e/ou decrementar em uma 
unidade o valor de uma variável. Eles podem ser 
utilizados antes (prefixo) ou após (posfixo) a variável, 
dando resultados ligeiramente diferentes. 
Ex.: 
Y = X ++; “Y recebe o valor de X e depois X é incrementado”
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 8
Y = X ++; “Y recebe o valor de X e depois X é incrementado”
Y = X --; “Y recebe o valor de X e depois X é decrementado”
Y = ++ X; “X é incrementado e depois Y recebe o valor de X”
Y = -- X; “X é decrementado e depois Y recebe o valor de X”
L
i
n
g
u
a
g
e
m
 
C
Operadores Relacionais
• As expressões compostas com operadores 
relacionais comparam dois valores e 
retornam 0 em caso de expressões falsas e 
1 se forem verdadeiras.
Operador Operação
< Menor que
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 9
< Menor que
> Maior que
< = Menor que ou igual a
> = Maior que ou igual a
= = Igual a
! = Diferente de
L
i
n
g
u
a
g
e
m
 
C
Operadores Lógicos
• Os operadores lógicos comparam duas expressões e 
retornam o valor 0 (falso) ou 1 (verdadeiro). 
Operador Operação
&& AND (E)
|| OR (OU)
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 10
! NOT (NÃO)
• O operador unário ! tem maior precedência, seguido 
do operador E lógico. O operador OU lógico tem a 
menor precedência dentre os operadores lógicos. 
L
i
n
g
u
a
g
e
m
 
C
Operadores Bit a Bit
• Os operadores de bit só podem ser 
utilizados com valores do tipo 
caracter ou inteiro. 
Operador Operação
<<
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 11
<< Deslocamento à esquerda 
>> Deslocamento à direita 
& E bit a bit 
| OU bit a bit 
^ XOU bit a bit 
~ Não bit a bit (complemento de um)
L
i
n
g
u
a
g
e
m
 
C
Operadores Bit a Bit
Ex.: a = 15 0 0 0 0 1 1 1 1
a << 1 0 0 0 1 1 1 1 0
a >> 3 0 0 0 0 0 0 1 1
Ex.: a = 15 0 0 0 0 1 1 1 1
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 12
Ex.: a = 15 0 0 0 0 1 1 1 1
b = 56 0 0 1 1 1 0 0 0
a & b 0 0 0 0 1 0 0 0
a | b 0 0 1 1 1 1 1 1
a ^ b 0 0 1 1 0 1 1 1
L
i
n
g
u
a
g
e
m
 
C
Operador Condicional (Ternário)
• O operador condicional (ou ternário) consiste de um 
ponto de interrogação (?) e um dois pontos (:) 
usados juntos e requer três operandos.
resultado = modo > 0 ? 1 : 0; 
V
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 13
resultado = modo > 0 ? 1 : 0; 
a variável resultado receberá valor 1 se modo for 
maior que 0, caso contrário receberá 0.
F
L
i
n
g
u
a
g
e
m
 
C
Expressões Reduzidas
Expressão normal Expressão reduzida
soma = soma + cont; soma += cont;
d = d – 3; d-= 3;
y = y * (z+1); y*= z+1;
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 14
y = y* (z+1); y*= z+1;
i = i / j; i/= j;
a = a & b; a &= b;
a = a << 3; a <<= 3;
L
i
n
g
u
a
g
e
m
 
C
Precedência dos Operadores
Maior ( ) [ ] ->
! ~ ++ -- - (tipo) * & sizeof
* / %
+ -
<< >>
< <= > >=
== !=
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 15
== !=
&
^
|
&&
||
?:
= += -= *= /= etc.
Menor ,
L
i
n
g
u
a
g
e
m
 
C
Problemas
1. Escreva quatro instruções diferentes em C, cada uma subtraindo 
1 da variável n.
2. Escreva um bloco de código C que tem o mesmo efeito da 
instrução
n = 100 + m++;
sem utilizar o operador de pós-incremento 
3. Escreva um bloco de código C que tem o mesmo efeito da 
instrução
L
i
n
g
u
a
g
e
m
 
C
IFAM Treinamento em Desenvolvimento de Aplicativos para Sistemas Embarcados 16
instrução
n = 100 + ++m;
sem utilizar o operador de pré-incremento 
4. Escreva uma instrução única em C que subtraia de z a soma de 
x e y e depois some y.
5. Se m=5 e n=2, quais serão os valores de m e n após cada uma 
das expressões: 
a. m *= n++;
b. m += --n;
M1
Slide 16
M1 Respostas:
1. n = n +1;
 n -= 1;
 --n;
 n--;
2. n = 100 + m;
 ++m;
3. ++m;
 n = 100 + m;
4. z -= (x + y++);
5. 
 a. m=10 e n=3
 b. m=6 e n=1
MSHOME, 28-Apr-06

Outros materiais