Buscar

03-Estruturas

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 24 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 24 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 24 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

1
Profa. Dra. Ieda Hidalgo
E-mail: iedahidalgo@ft.unicamp.br
Estruturas e 
Estruturas Encadeadas
2
Há cinco tipos de dados simples que estão
predefinidos no compilador:
Com eles, podemos definir tipos complexos
que possibilitam agrupar um conjunto de
variáveis sob um único nome.
� Chart
� Int
� Float
� Double
� Void
Dados Simples x Dados Complexos
3
Tipos de Dados Complexos
A linguagem C++ oferece 4 meios de
criar novos tipos de dados:
1. Matrizes
2. Estruturas
3. Uniões
4. Classes 
(enum e typedef)
4
Estruturas x Matrizes
Matrizes são tipos de variáveis que agrupam
dados similares. Seus itens de dados são
chamados elementos.
Estruturas são tipos de variáveis que
agrupam dados geralmente desiguais. Seus
itens de dados são chamados membros.
5
Estruturas x Classes (1/2)
Em geral, os programadores C++, criam:
� Estruturas para agrupar itens de
dados. Elas têm membros públicos
por default.
� Classes para agrupar itens de dados e
funções. Elas têm membros privados
por default.
6
Estruturas x Classes (2/2)
No entanto, em C++ você pode usar
estruturas exatamente como usa classes
7
Definindo Estrutura
Usando a palavra struct podemos definir um
novo tipo de dado que agrupa um conjunto de
variáveis sob um mesmo nome.
struct aluno // (palavra chave + nome do tipo)
{
int matricula; // 1o membro
float media; // 2o membro
};
O tamanho de uma estrutura é igual ou maior
que a soma dos tamanhos dos seus membros.
8
Declarando uma Variável 
do Tipo Definido
Após ter sido definido o tipo aluno podemos
declarar uma variável desse tipo. A declaração
de variáveis de tipos definidos pelo usuário é
similar a declaração de variáveis de tipos
simples.
aluno ana; // nome do tipo + nome da variável
A declaração da variável ana do tipo aluno
reserva espaço de memória suficiente para
armazenar todos os membros da estrutura.
9
Acessando Membros da Estrutura
Podemos acessar um membro da variável de tipo
definido pelo usuário por meio do operador "." A
linguagem C++ trata os membros de uma
estrutura como quaisquer outras variáveis
simples.
ana.matricula = 10; // atribui o valor 10 à variável
ana.matricula é uma variável do tipo int e pode
seu usada em todo lugar onde possamos utilizar
uma variável int.
10
Combinando Declarações
Podemos combinar a definição da estrutura e a
declaração da variável do tipo definido em uma
única instrução.
struct // não é necessário o nome do tipo
{
int matricula; 
float media; 
} ana; // declaração da variável é aqui
Isso torna a escrita mais compacta, entretanto
menos clara e flexível.
11
Declarando Diversas Variáveis
Diversas variáveis podem ser declaradas de
uma única vez separadas por vírgulas:
struct // não é necessário o nome do tipo
{
int matricula; 
float media; 
} ana, pedro, jose; // declaração de diversas variáveis
12
Inicializando Estruturas
A inicialização de estruturas é semelhante à
inicialização de uma matriz.
struct data
{
int dia;
char mes[10];
int ano;
};
data natal = {25, "Dezembro", 2009}; 
// declara e inicializa a variável natal do tipo data 
Os valores a serem atribuídos aos seus membros
devem ser colocados na ordem em que foram
definidos, separados por vírgulas e entre chaves.
13
Atribuições entre Estruturas
Uma variável estrutura pode ser atribuída a outra
variável do mesmo tipo por meio de uma
atribuição simples.
data festa; // declara a variável festa do tipo data
andre = natal; // atribui os valores de natal para andre
Dessa forma, todos os valores dos membros da
estrutura estão realmente sendo atribuídos de
uma única vez aos membros correspondentes da
outra estrutura.
No caso de matrizes a atribuição deve ser feita
elemento a elemento.
14
Estruturas Encadeadas
Podemos definir estruturas cujos membros são
outras estruturas.
struct data
{
int dia;
char mes[10];
int ano;
};
struct venda
{
int pecas;
float preco;
data dia_venda;
};
Um membro da estrutura venda chamado dia-
venda é do tipo da estrutura data.
15
Acessando Membros de 
Estruturas Encadeadas
// declara uma variável chamada “A” do tipo “venda”
venda A; 
// acessa o membro “mês” do membro “dia_venda” da 
variável “A”
A.dia_venda.mes; 
16
Inicializando 
Estruturas Encadeadas
// peça, preço, dia, mês, ano
venda A = {20, 110.0, {7, "Novembro", 2009}}; 
17
Passando Membros de
uma Estrutura para Funções
Por Valor:
void listavenda(venda X) 
{
...
}
listavenda(A.preco); 
Por Referência:
void listavenda(venda &X) 
{
...
}
listavenda(A.preco); 
18
Passando Estruturas 
para Funções
Por Valor:
void listavenda(venda X)
{
...
}
listavenda(A);
Por Referência:
void listavenda(venda &X) 
{
...
}
listavenda(A);
19
Funções que 
Retornam uma Estrutura
C++ permite que as funções retornem uma
estrutura completa. Nesse caso, a função deve
ser do tipo da estrutura, pois ela retorna uma
variável desse tipo.
venda novavenda()
{
venda A;
...
return (A);
}
20
Matrizes de Estruturas
Podemos criar uma matriz de estruturas onde
cada elemento da matriz representa, por
exemplo, uma venda.
venda vendas[50];
// para acessar um membro
vendas[n].preco;
21
Uniões
A palavra-chave union, assim como struct, agrupa
um número de diferentes variáveis sob um único
nome. A sintaxe de ambas é idêntica.
Uma struct aloca um espaço diferente de memória
para cada membro.
Uma union utiliza um mesmo espaço de memória
para os diferentes membros.
Quando você declara uma variável de um tipo
union, automaticamente é alocado espaço de
memória suficiente para conter o seu maior
membro. Uniões são usadas para poupar
memória.
22
Tipo de Dados Enumerados
São usados quando conhecemos o conjunto de
valores que uma variável pode assumir.
A variável deste tipo é sempre int. Portanto,
qualquer operação possível com inteiros é
permitida com eles.
A palavra-chave enum enumera a lista de nomes
significativos, dando-lhes números em sequência
(como por exemplo: 0, 1, 2, etc).
A vantagem é que esse tipo torna mais clara e
simples a escrita do programa, pois utilizamos
nomes no lugar dos números.
23
Exemplos
A palavra enum enumera nomes significativos a 
partir do:
zero (default)
enum chave {OFF, ON};
primeiro valor fornecido 
enum mes {Jan=1, Fev, Mar, Abr, Mai, Jun};
conforme especificado
enum direcao {norte=50, sul=60, leste=70, 
oeste=80};
24
Typedef
Usando a palavra-chave typedef é possível definir
novos nomes aos tipos de dados existentes.
Isso ajuda a tornar programas dependentes da
máquina um pouco mais portáveis, pois para cada
tipo de dado, apenas os comandos typedef teriam
de ser mudados quando você compilar o programa
em um novo ambiente.
Sintaxe: typedef tipo novonome;
Exemplo: typedef float balance;
// esse comando diz ao compilador para
reconhecer balance como outro nome para float.

Outros materiais