Você está na página 1de 20

Tipos de dados

Alunos: Fbio Carvalho - Marco Tlio - Adriano - Sandra - David Nunes


Sumrio
Tipos de dados - Registro
Tipos de dados - Unio
Tipos de dados - Conjunto
Tipos de dados - Ponteiro
Tipos de dados - Registro
Um registro uma coleo de variveis, possivelmente de tipos diferentes.
Cada uma dessas variveis um campo de registro. Na linguagem C, registros
so conhecidos como structs (abreviatura de structures).
Ex1: Definio e manipulao de structs.
O exemplo abaixo declara um registro x com trs campos inteiros:
struct {
int dia, ms, ano;
}x;
Tipos de dados - Registro
uma boa ideia dar um nome a estrutura, abaixo utilizaremos o nome dma
como exemplo.
struct dma {
int dia, ms, ano;
}x;
struct dma x; /*um registro x do tipo dma*/
struct dma y; /*um registro y do tipo dma*/
Tipos de dados - Registro
Utilizando o operador (.) para atribuir valores aos campos do registro:
x.dia = 31;
x.ms = 12;
x.ano = 2014;
Como declaramos dma tambm como y, possvel criar outra estutura no
caso, Y, recebendo tambm os dados dia, ms e ano.
y.dia = 18;
y.ms = 10;
y.ano = 2014;
Tipos de dados - Unio
Unio so parecidas com estruturas, mas h uma diferena fundamental:
Nas unies, todos os elementos ocupam o mesmo espao de memria. Por
isso, s possvel acessar um elemento por vez, j que uma mudana em um
elemento causara mudana em todos os outros. A definio e a declarao de
unies igual das estruturas, trocando a palavra struct por union.
Os membros de uma unio podem ser de qualquer tipos de dado.
Apenas um membro e, portanto, um tipo de dado, pode ser referenciado a
cada vez.
Tipos de dados - Unio
Uma unio declarada com a palavra-chave union no mesmo formato de
uma estrutura:
union numero {
int x;
char y;
};
A declarao acima indica que nmero do tipo union com os membros
int x e char y.
Tipos de dados - Unio
Vantagens
Economia de espao j que guardam-se vrias variveis no mesmo
espao.
Proporcionam flexibilidade de programao.
Tipos de dados - Conjuntos
Um tipo conjunto (set) aquele cujas variveis podem armazenar colees
no-ordenadas de valores distintos de algum tipo ordinal chamado de seu tipo
bsico.
Diagrama sinttico para o tipo conjunto:
--> set of --> tipo bsico -->
Tipos de dados - Conjuntos
O exemplo seguinte mostra a definio de um conjunto e algumas de suas
variveis:
type cores = (vermelho, azul, verde, amarelo, laranja, branco, preto);
conjcores = set of cores;
var conj1, conj2 : conjcores;
Valores constantes podem ser atribudos s variveis conj1 e conj2, como em:
conj1 := [vermelho, azul, verde, amarelo, branco];
conj2 := [preto, azul];
Tipos de dados - Conjuntos
De maneira geral, conjuntos so usados para simplificar e para abreviar
expresses booleanas OR compostas. Por exemplo:
if (ch = a) or (ch = e) or (ch = i) or (ch = o) or (ch = u)
pode ser substituda por:
if ch in [ a , e , i , o , u ] ...
Tipos de dados - Conjuntos
Normalmente, os conjuntos so armazenados como cadeias de bits na memria.
Por exemplo, se um conjunto tiver o tipo bsico ordinal [ a .. p ], as variveis
deste conjunto podero usar os primeiros 16 bits de uma palavra de mquina,
com o bit 1 representando um elemento presente, e o bit 0 representando um
elemento ausente.
Usando tal esquema, o valor do conjunto:
[ a , c , h , o ]
seria representado como:
101000010000010
Tipos de dados - Ponteiro
Um ponteiro ( ou apontador) um tipo especial de varivel destinado a
armazenar endereos. Todo ponteiro pode ter o valor NULL que um
endereo invlido.
Se um ponteiro p armazena o endereo de uma varivel i, podemos dizer p
aponta para i ou p o endereo de i. Se um ponteiro p tem o valor diferente
de NULL ento *p o valor do objeto apontado por p.
int i = 888; // i recebe o valor 888
int *p; //Declarao do ponteiro p
p = &i; //Onde p aponta para i
888
i *p

888
Tipos de dados - Ponteiro
A declarao para um ponteiro parecida com aquela que estamos habituados
a fazer para variveis comuns, exceto que o nome do ponteiro deve ser
prefixado com um asterisco. Considere:
int main (){
int *pnumero1;
int* pnumero2;
/* O ponteiro pode ser declarado igualmente aos dois modelos cima *\
return 0;
}
Tipos de dados - Ponteiro
J sabemos que ponteiros so utilizados para armazenar endereos em
memria dos nossos dados. Ento, como fazemos para obter o endereo de
memria correspondentes aos dados armazenados em uma varivel? Simples,
usamos o operador address-of (&). Observe o exemplo:
int main (){
int num = 10;
int * pnum;
pnum = # /*Aponta para o valor de num na memria que equivale a 10*\
return 0;
}
Tipos de dados - Ponteiro
H vrios tipos de ponteiros: ponteiros para caracteres, ponteiros para inteiros,
ponteiros para registros, ponteiros para ponteiros para inteiros etc. No exemplo
a seguir utilizaremos o ponteiro p para um inteiro. Atravs da declarao:
Exemplo 1:
int x, i = 888;
int *p;
p = &i;
x = *p + 999;
Rastreio
X
i
*p

888

888
888

999
1887
Tipos de dados - Ponteiro
Exemplo 2:
int main()
{
int num = 10;
int* pnum;

pnum = #

cout << "Valor da varivel num: " << number <<endl
<< "Enredeo da varivel pnum: " << pnumber <<endl
<< "Valor da varivel pnum: " << pnumber << endl
<< "Valor do ponetiro pnum: " << *pnumber << endl;


return 0;
}
Tipos de dados - Ponteiro
Exemplo 2: Resultado na tela

Dvidas
Fim
FIM

Você também pode gostar