Académique Documents
Professionnel Documents
Culture Documents
Estruturas Bsicas
Aula Tpico 4
1
Problema 3
Exibir o maior
nmero inteiro que
pode ser
representado no
computador.
2
Qual o maior nmero inteiro?
Para o compilador GCC, nmeros inteiros so
representados usando-se 32 bits (4 bytes).
Como assim?
Com n bits, podemos representar 2n nmeros distintos,
sendo o maior nmero 2n 1. Exemplo: para n = 2,
temos 4 nmeros possveis, sendo 3 o maior nmero.
3
Complemento-de-2
Ateno!
Na representao em complemento-de-2 existe
sempre um valor negativo a mais.
0 +1 +2 +3 +4 +5 +6 +7
-8 -7 -6 -5 -4 -3 -2 -1
4
Menor inteiro
Assim, o menor valor inteiro representvel no
ser: -2147833647, mas sim -2147833648.
Como assim?
Com n bits, o menor nmero representvel
ser 2n-1. Exemplo: para n = 4, o menor
nmero representvel 23 = -8.
7
Modificadores de tipo
No programa p03.c so
atribudos os maiores
valores possveis s
variveis x e y.
8
Modificadores de tipo
9
Modificadores de tipo
Em seguida, os valores das variveis so
incrementados de 1.
O que acontece ento?
10
Avaliao de expresses aritmticas
Os operadores aritmticos disponveis na
linguagem C so:
Operador Operao
+ soma
- subtrao
* multiplicao
/ diviso
% resto da diviso
11
Converso implcita de tipo
Na avaliao de expresses aritmticas, estas
operaes so realizadas sempre entre operandos
de mesmo tipo.
12
Prioridade de execuo das operaes
Porque as operaes aritmticas devem ser feitas
entre operandos do mesmo tipo?
As representaes dos nmeros inteiros e dos nmeros
de ponto flutuante so diferentes.
Ou seja, embora 1 e 1.0 so valores iguais, eles
tem representaes diferentes no computador.
so totalmente diferentes!
16
Formatao de valores numricos
Alm de especificar o nmero de casas decimais,
um tag pode especificar o nmero total de
caracteres (incluindo o sinal e o ponto decimal).
18
Formatao de valores numricos
A formatao de valores pode ser feita tambm
para nmeros inteiros.
Exemplo:
19
Endereos de variveis
Uma varivel representa um nome simblico para
uma posio de memria.
20
Endereos de variveis
Note que o endereo de uma varivel um valor.
Logo, uma varivel pode armazenar um
endereo.
21
Endereos de variveis
Exemplo: suponha que y armazene o endereo
0022FF74 de uma posio de memria
representada pela varivel x. E ainda, que x
contenha o valor inteiro 3.
y 0022FF74 3 x
0022FF70 0022FF74
y 0022FF74 3 x
0022FF70 0022FF74
y 0022FF74 3 x
0022FF70 0022FF74
25
Endereos de variveis
26
Sistema hexadecimal
O Sistema Hexadecimal (base 16) o mais
usado para representar endereos de memria.
Exemplos:
(1267)16 = (0001 0010 0110 0111)2
Deve-se separar o nmero binrio em
blocos de 4 dgitos, da direita para a
(1010 0010)2 = (A2)16 esquerda:
0001 0100
(1 0100)2 = (14)16
29
Converso entre sistemas de numerao
Para converter um valor no sistema hexadecimal
para o correspondente valor no sistema decimal
e vice versa, o que devo fazer?
Exemplo:
(ABAFA)16 = (703226)10
(4711)10 = (1267)16
30
Operadores de incremento e decremento
Uma operao muito comum em programas de
computador incrementar de 1 o valor da
varivel.
Para fazer isso devemos:
1. Somar 1 ao valor atual da varivel;
2. Armazenar o resultado na prpria varivel.
x = x + 1
2 1
c = a++ + b; a = 6 b = 3 c = 8
c = ++a + b; a = 7 b = 3 c = 10
32
Operaes combinadas com a atribuio
As operaes de incremento (++) e decremento
(--) so exemplos de operaes combinadas
com a atribuio.
Operador Operao
<< deslocamento para a esquerda
>> deslocamento para a direita
& conjuno bit-a-bit (and)
| disjuno bit-a-bit (or)
^ disjuno exclusiva bit-a-bit (xor)
~ negao bit-a-bit (inverso)
34
Operaes bit-a-bit
Tabela-verdade para cada operador.
and (&) or (I)
y 0 1
y 0 1
x x
0 0 0 0 0 1
1 0 1 1 1 1
xor (^)
y 0 1
x
0 0 1
1 1 0
35
Operaes bit-a-bit
Hexadecimal Binrio
0FF0 0000 1111 1111 0000
FF00 1111 1111 0000 0000
0FF0 << 4 1111 1111 0000 0000 = FF00
0FF0 >> 4 0000 0000 1111 1111 = 00FF
0000 1111 1111 0000
0FF0 & FF00 1111 1111 0000 0000
0000 1111 0000 0000 = 0F00
0000 1111 1111 0000
0FF0 | FF00 1111 1111 0000 0000
1111 1111 1111 0000 = FFF0
0000 1111 1111 0000
0FF0 ^ FF00 1111 1111 0000 0000
1111 0000 1111 0000 = F0F0
0000 1111 1111 0000
~ 0FF0
1111 0000 0000 1111 = F00F
36
Operaes bit-a-bit
Exemplos:
int a = 0x0FF0;
int b = 0xFF00;
int c;
Sero exibidos:
37
Problema 5
Determine as razes da equao ax2 + bx + c = 0.
38
Processamento condicional
Todo programa na linguagem C inicia sua execuo na
primeira instruo da funo main.
40
Processamento condicional
Para executar um processamento condicional, um
programa precisa utilizar o comando if.
(a && x) Verdadeiro.
43
Operador condicional
O operador condicional na linguagem C tem a
seguinte sintaxe:
Exemplos:
(b != 0) ? a/b : 0
(peso <= 75) ? ok : deve emagrecer
44
Operador condicional
O operador condicional pode ser usado em
atribuies.
Exemplo:
float nota1 = 5.0, nota2 = 4.0;
46
Atribuio e teste de igualdade
Ateno!
Um erro comum em linguagem C usar o operador de
atribuio (=) em vez do operador relacional (==) em
condies que testam igualdade.
int fator = 3;
if (fator == 1) Imprime:
{ fator = 3
printf(O fator e' unitario\n); pois:
} (fator == 1) falso!
printf(fator = %d\n, fator)
int fator = 3;
if (fator = 1) Imprime:
{ O fator e' unitario
printf(O fator e' unitario\n); fator = 1
} pois:
printf(fator = %d\n, fator) (fator = 1) verdadeiro!
47