1 of 40

Tipos de dados definidos pelo usuário

Programação para Engenharia

Prof. Dr. Alysson F. Milanez

alysson.milanez@maisunifacisa.com.br

2 of 40

O que veremos?

Tipos de dados definidos pelo usuário

2

3 of 40

Tipos de dados definidos pelo usuário

3

4 of 40

Tipos de dados definidos pelo usuário

C tem cinco formas de definir tipos de dados pelo usuário

4

5 of 40

Tipos de dados definidos pelo usuário

Estrutura: agrupamento de variáveis sob um nome e é chamado de tipo de dado agregado

5

6 of 40

Tipos de dados definidos pelo usuário

Campo de bit: variação da estrutura que permite o fácil acesso aos bits dentro de uma palavra

6

7 of 40

Tipos de dados definidos pelo usuário

União: permite que a mesma porção da memória seja definida por dois ou mais tipos diferentes de variáveis

7

8 of 40

Tipos de dados definidos pelo usuário

Enumeração: lista de símbolos

8

9 of 40

Tipos de dados definidos pelo usuário

O último tipo definido pelo usuário é criado com o typedef e define um novo nome para um tipo existente

9

10 of 40

Estruturas

10

11 of 40

Tipos de dados definidos pelo usuário: Estrutura

Maneira conveniente de agrupar informações

11

12 of 40

Tipos de dados definidos pelo usuário: Estrutura

Maneira conveniente de agrupar informações

Uma definição de estrutura forma um modelo que pode ser usado para criar variáveis de estrutura

12

13 of 40

Tipos de dados definidos pelo usuário: Estrutura

As variáveis que compreendem a estrutura são os membros/elementos/campos da estrutura

13

14 of 40

Tipos de dados definidos pelo usuário: Estrutura

struct identificador{

tipo variavel1;

tipo variavel2;

};

14

15 of 40

Campos de bits

15

16 of 40

Tipos de dados definidos pelo usuário: Campos de bits

C possui um método intrínseco para acessar um único bit dentro de um byte

16

17 of 40

Tipos de dados definidos pelo usuário: Campos de bits

Benefícios:

  • Caso o armazenamento seja limitado, podemos armazenar diversas variáveis num único byte

17

18 of 40

Tipos de dados definidos pelo usuário: Campos de bits

Benefícios:

  • Caso o armazenamento seja limitado, podemos armazenar diversas variáveis num único byte
  • Alguns dispositivos transmitem informações codificadas nos bits

18

19 of 40

Tipos de dados definidos pelo usuário: Campos de bits

Benefícios:

  • Caso o armazenamento seja limitado, podemos armazenar diversas variáveis num único byte
  • Alguns dispositivos transmitem informações codificadas nos bits
  • Criptografia precisa acessar os bits individualmente

19

20 of 40

Tipos de dados definidos pelo usuário: Campos de bits

Para acesso aos bits, C usa um método baseado na estrutura. Um campo de bits é apenas um tipo de elemento de estrutura que define o comprimento do campo

20

21 of 40

Tipos de dados definidos pelo usuário: Campos de bits

struct identificador{

tipo variavel1 : comprimento;

tipo variavel2 : comprimento;

};

21

22 of 40

União

22

23 of 40

Tipos de dados definidos pelo usuário: União

Uma union é uma posição de memória que é compartilhada por duas ou mais variáveis diferentes, em geral de tipos diferentes, em momentos diferentes

23

24 of 40

Tipos de dados definidos pelo usuário: União

A definição é semelhante à de uma estrutura:

union identificador{

tipo nome_da_variavel1;

tipo nome_da_variavel2;

...

};

24

25 of 40

Tipos de dados definidos pelo usuário: União

Union pode ajudar na portabilidade do código: o compilador não perde o tamanho real das variáveis que fazem parte da união

25

26 of 40

Enumeração

26

27 of 40

Tipos de dados definidos pelo usuário: Enumeração

Extensão da linguagem adicionada no padrão ANSI. É um conjunto de constantes inteiras que especifica todos os valores legais que uma variável pode ter

27

28 of 40

Tipos de dados definidos pelo usuário: Enumeração

Forma geral:

enum identificador{lista de enumeração};

28

29 of 40

Portabilidade com sizeof

29

30 of 40

Portabilidade com sizeof

O operador sizeof é útil onde estruturas ou uniões são usadas

O tamanho de uma estrutura tem de ser pelo menos a soma dos tamanhos dos seus componentes. Desse modo, podemos usar sizeof sempre que desejarmos saber o tamanho de uma estrutura

30

31 of 40

Portabilidade com sizeof

Como sizeof é avaliado em tempo de compilação, ele é muito importante para as unions, já que o tamanho de uma union é sempre igual ao tamanho do seu maior componente

31

32 of 40

typedef

32

33 of 40

Tipos de dados definidos pelo usuário: typedef

typedef permite que definamos novos nomes para os tipos de dados. Não estamos criando uma nova classe de dados, apenas dando um novo nome

33

34 of 40

Tipos de dados definidos pelo usuário: typedef

Forma geral:

typedef tipo novoNome;

Pode auxiliar como documentação dos tipos sendo usados

34

35 of 40

Tipos de dados definidos pelo usuário: typedef

typedef pode ser usada para simplificar a declaração de variáveis estrutura, union ou de enumeração

35

36 of 40

Exercícios

36

37 of 40

Exercícios

  1. Escreva uma estrutura com os campos: altura, peso, idade.

37

38 of 40

Referências

38

39 of 40

Referências

SCHILDT, Herbert; MAYER, Roberto Carlos. C completo e total. 2006.

Capítulos 3 e 7.

39

40 of 40

Tipos de dados definidos pelo usuário

Programação para Engenharia

Prof. Dr. Alysson F. Milanez

alysson.milanez@maisunifacisa.com.br