29
Programação II Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto [email protected]

Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto [email protected]

Embed Size (px)

Citation preview

Page 1: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Programação IIProgramação IIEstruturas, uniões e enumerações

Ricardo de Sousa [email protected]

Page 2: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Tipo Estrutura: Tipo Estrutura: MotivaçãoMotivaçãoManipulação de dados

compostos ou estruturados

Exemplos: ◦ponto no espaço

bidimensional representado por duas

coordenadas (x e y), mas tratado como um único objeto (ou tipo)

◦ dados associados a aluno: aluno representado pelo seu

nome, número de matrícula, endereço, etc ..., estruturados em um único objeto (ou tipo)

Page 3: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Tipo Estrutura: Tipo Estrutura: declaração e usodeclaração e usoTipo de dado com campos

compostos de tipos mais simplesElementos acessados através do

operador de acesso “ponto” (.)

Page 4: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Tipo Estrutura: Tipo Estrutura: declaração e usodeclaração e uso

Page 5: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Tipo Estrutura: Tipo Estrutura: ExemploExemplo

Page 6: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Ponteiro de estruturasPonteiro de estruturasAcesso ao valor de um campo x

de uma variável estrutura p: p.xAcesso ao valor de um campo x

de uma variável ponteiro pp: pp->x

Acesso ao endereço do campo x de uma variável ponteiro pp: &(pp->x)

Page 7: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Ponteiro de estruturasPonteiro de estruturas

Page 8: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Ponteiro de estruturasPonteiro de estruturas

Page 9: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Passagem de estruturas Passagem de estruturas por valor para funçõespor valor para funçõesAnáloga à passagem de variáveis

simplesFunção recebe toda a estrutura

como parâmetro:◦função acessa a cópia da estrutura

na pilha◦função não altera os valores dos

campos da estrutura original◦operação pode ser uma custosa se a

estrutura for muito grande

Page 10: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Passagem de estruturas Passagem de estruturas por valor para funçõespor valor para funções

Page 11: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Estruturas como valor de Estruturas como valor de retornoretorno

Page 12: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Passagem de estruturas Passagem de estruturas por referência para por referência para funçãofunçãoApenas o ponteiro da estrutura é

passado, mesmo que não seja necessário alterar os valores dos campos dentro da função.

Page 13: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Definição de Novos Definição de Novos TiposTipostypedef

◦Permite criar nomes de tipos.◦Útil para abreviar nomes de tipos e

para tratar tipos complexos.

Page 14: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Definição de Novos TiposDefinição de Novos TiposDefinição de nomes de tipos para as

estruturas.◦ struct ponto representa uma estrutura

com 2 campos do tipo float◦ Ponto representa a estrutura ponto◦ PPonto representa o tipo ponteiro para a

estrutura ponto

Page 15: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Aninhamento de Aninhamento de EstruturasEstruturasCampos de uma estrutura podem

ser outras estruturas. Exemplo:◦Definição de Círculo usando Ponto

Page 16: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Aninhamento de Aninhamento de EstruturasEstruturas

Page 17: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Aninhamento de Aninhamento de EstruturasEstruturas

Page 18: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Vetores de EstruturasVetores de EstruturasExemplo: função para calcular o

centro geométrico de conjunto de pontos◦entrada: vetor de estruturas definindo

o conjunto de pontos◦saída: centro geométrico, dado por:

Page 19: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Vetores de EstruturasVetores de Estruturas

Page 20: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Vetores de Ponteiros para Vetores de Ponteiros para EstruturasEstruturasExemplo: tabela com dados de

alunos, organizada em um vetor.◦Dados de cada aluno:

matrícula: número inteiro nome: cadeia com até 80 caracteres endereço: cadeia com até 120 caracteres telefone: cadeia com até 20 caracteres

Page 21: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Vetores de Ponteiros para Vetores de Ponteiros para EstruturasEstruturas

Page 22: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Tipo UniãoTipo Uniãounion

◦Localização de memória compartilhada por diferentes variáveis, que podem ser de tipos diferentes.

◦Uniões usadas para armazenar valores heterogêneos em um mesmo espaço de memória.

Page 23: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Tipo UniãoTipo União

Page 24: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Tipo UniãoTipo UniãoAcesso aos campos:

◦Operador ponto (.) para acessar os campos diretamente

◦Operador seta (->) para acessar os campos através de ponteiro

Page 25: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Tipo UniãoTipo União

Page 26: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Tipo UniãoTipo UniãoArmazenamento:

◦Apenasum único elemento de uma união pode estar armazenado num determinado instante.

◦A atribuição a um campo da união sobrescreve o valor anteriormente atribuído a qualquer outro campo

Page 27: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Tipo EnumeraçãoTipo Enumeraçãoenum

◦Declara uma enumeração, ou seja, um conjunto de constantes inteiras com nomes que especifica os valores legais que uma variável daquele tipo pode ter.

◦Oferece uma forma mais elegante de organizar valores constantes.

Page 28: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

Tipo EnumeraçãoTipo EnumeraçãoExemplo – tipo Booleano:

Page 29: Programação II Estruturas, uniões e enumerações Ricardo de Sousa Britto nephlinvocals@yahoo.com.br

ResumoResumo