Title: Programa
1Programação II Estruturas de Dados
- NGUESSAN.DESIRE_at_POLI.USP.BR
2Tipos de Dados
- Alem dos tipos primitivos podemos agrupar sob um
único nome um conjunto de tipos de dados não
similares - Este agrupamento significa definir uma nova
estrutura conhecida também como registro (prog
antiga). - Definir um tipo de dados significa informar ao
compilador seu - Nome
- Tamanho e
- Forma como deve ser armazenado e recuperado da
memória
3Tipos de Dados
- A definição de uma estrutura não cria nenhuma
variável, somente informa ao computador as
características de um novo tipo de dados - Não há nenhuma reserva de memória
- struct indica que um novo tipo de dados está
sendo definido - O nome do novo tipo é struct ltetiquetagt
4Tipos de Dados
- Sintaxe
- struct ltetiquetagt
- // membros
-
5Tipos de Dados
- Exemplo
- struct aluno
- // membros
- int mat
- float nota3
- float media
-
Désiré NGuessan
6Tipos de Dados
- Declarando uma variável do tipo Definido
- struct aluno A
- Declara uma variável do nome A do tipo struct
aluno - Esta declaração reserva espaço de memória
suficiente para armazenar todos os membros da
estrutura -
Désiré NGuessan
7Tipos de Dados
- Combinando declarações
- struct aluno
- int mat
- float nota3
- float media
- jose // cria uma variavel jose do tipo aluno
Désiré NGuessan
8Tipos de Dados
-
- Novo nome para os tipos existentes typedef
- O comando typedef não produz um novo tipo, cria
apenas novo nome ou sinônimo para o tipo
existente - Sintaxe
- typedef lttipo Existentegt Sinônimo
Désiré NGuessan
9Tipos de Dados
- Exemplos
- typedef char BYTE // cria o sinônimo BYTE
- typedef int INTEIRO// cria o sinônimo INTEIRO
- typedef struct aluno ALUNO// cria sinônimo
ALUNO
Désiré NGuessan
10Tipos de Dados
- Acessando os Membros da estrutura
- Uma vez criada a variável estrutura, seus membros
podem ser acessados por meio do operador ponto - Exemplo
- ALUNO A
- A.mat 456
-
Désiré NGuessan
11Tipos de Dados
- Ponteiro para estruturas
- Da mesma forma que podemos declarar variável do
tipo estrutura - struct aluno A
- Podemos também declarar variável do tipo
ponteiro para estrutura - struct aluno A
-
Désiré NGuessan
12Tipos de Dados
- Acessando os Membros da estrutura do tipo
ponteiro - Podemos acessar os membros da estrutura
indiretamente por meio do seu ponteiro - Exemplo
- (A).mat 456
- ou
- A-gtmat 456
-
Désiré NGuessan
13Tipos de Dados
- Criar uma estrutura para armazenar dados de um
aluno ? -
Désiré NGuessan
14Tipos de Dados
include ltstdio.hgt include ltstdlib.hgt / Cria
uma estrutura para armazenar dados de um aluno
/ struct aluno int nmat float
nota3 float media
Désiré NGuessan
15Tipos de Dados
int main(int argc, char argv) struct aluno
A // declara uma variavel de tipo struct Aluno
A.nmat 456 A.nota0 7.6 A.nota1
5.2 A.nota2 8.3 A.media (A.nota0
A.nota1A.nota2)/3 printf("Matricula d
Media .2f\n", A.nmat, A.media)
system("PAUSE") return 0
Désiré NGuessan
16Tipos de Dados
Usando typedef com struct struct aluno
int nmat float nota3 float
media typedef struct aluno
Aluno Aluno Jose // declara uma variavel do
tipo aluno
Désiré NGuessan
17Tipos de Dados
Usando typedef com struct typedef struct // não
é informada a etiqueta int nmat
float nota3 float media aluno
aluno Jose // declara uma variavel do tipo
aluno
Désiré NGuessan
18Tipos de Dados
Passagem de Estruturas para Funções void imprime
(struct aluno A) printf(media .2f,
A.media) void imprime (struct aluno
A) printf(media .2f, A-gtmedia)
Désiré NGuessan
19Tipos de Dados
Passagem de Estruturas para Funções int main
(void) struct aluno A imprime(A)
Désiré NGuessan
20Tipos de Dados
Alocação dinâmica de estruturas int main (void)
struct Aluno A A (struct Aluno)
malloc (sizeof(struct Aluno ))
Désiré NGuessan
21Tipos de Dados
Inicializando Estruturas struct Data
int dia char mes10 int ano
natal 25, dezembro,2009 ,
aniversario 29, março, 1996
Désiré NGuessan