A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Aula 5 Tipos de Dados Universidade do Vale do Rio dos Sinos

Apresentações semelhantes


Apresentação em tema: "1 Aula 5 Tipos de Dados Universidade do Vale do Rio dos Sinos"— Transcrição da apresentação:

1 1 Aula 5 Tipos de Dados Universidade do Vale do Rio dos Sinos

2 2 Sumário 1 – Introdução

3 3 2 – Tipos de dados primitivos Sumário

4 4 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres Sumário

5 5 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário Sumário

6 6 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array Sumário

7 7 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array 6 – Arrays associativos Sumário

8 8 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array 6 – Arrays associativos 7 – Tipos Registro Sumário

9 9 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array 6 – Arrays associativos 7 – Tipos Registro 8 – Tipos União Sumário

10 10 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array 6 – Arrays associativos 7 – Tipos Registro 8 – Tipos União 9 – Tipos Conjunto Sumário

11 11 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array 6 – Arrays associativos 7 – Tipos Registro 8 – Tipos União 9 – Tipos Conjunto 10 – Tipos Ponteiro (referências) Sumário

12 12 Introdução 1 – Introdução - Relação Tipos x Espaço do Problema - Descritor (estático ou dinâmico) - Tabela de Símbolos

13 13 1 – Introdução 2 – Tipos de dados primitivos - Tipos básicos - Primitivos + Construtores => Estruturados - Tipos de dados primitivos Tipos de dados primitivos

14 14 1 – Introdução 2 – Tipos de dados primitivos - Tipos básicos - Primitivos + Construtores => Estruturados - Tipos de dados primitivos (esquema) Tipos de dados primitivos

15 15 Tipos de dados primitivos Primitivos

16 16 Tipos de dados primitivos Primitivos Numéricos Booleanos Caracterere

17 17 Tipos de dados primitivos Primitivos Numéricos Booleanos Caracterere Inteiros Ponto-flutuante Decimais

18 18 Tipos de dados primitivos Primitivos Numéricos Booleanos Caracterere Inteiros Ponto-flutuante Decimais – Grupo de bits com sinal - Signal magnitude - Complemento de dois

19 19 Tipos de dados primitivos Primitivos Numéricos Booleanos Caracterere Inteiros Ponto-flutuante – Frações e expoentes – Padronizado: IEEE Floating Point Standard 754 (1985) Decimais

20 20 Tipos de dados primitivos Primitivos Numéricos Booleanos Caracterere Inteiros Ponto-flutuante – Frações e expoentes – Padronizado: IEEE Floating Point Standard 754 (1985) Tanenbaum (1990) Organização Estruturada de Computadores Apêndice B (p. 448 – 454) Decimais

21 21 Tipos de dados primitivos Primitivos Numéricos Booleanos Caracterere Inteiros Ponto-flutuante Decimais – BCD (Binary Coded Decimal) – Pelo menos 4 bits para um decimal

22 22 Tipos de dados primitivos Primitivos Numéricos Booleanos Caracterere Inteiros Ponto-flutuante Decimais – Introduzidos por ALGOL 60 – Menor célula de memória (normalmente um byte)

23 23 – ASCII – Unicode (16 bites): Utilizada no Java Tipos de dados primitivos Primitivos Numéricos Booleanos Caracterere Inteiros Ponto-flutuante Decimais

24 24 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres - Strings como tipos primitivos? Tipos Strings de caracteres

25 25 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres - Strings como tipos primitivos? - Tamanho da string => Estático => Dinâmico Limitado => Dinâmico Tipos Strings de caracteres

26 26 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres - Strings como tipos primitivos? - Tamanho da string => Estático => Dinâmico Limitado => Dinâmico - Implementação (Pascal e C) Tipos Strings de caracteres

27 27 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário - Enumeração Constantes enumeradas na definição Tipos ordinais definidos pelo usuário

28 28 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário - Enumeração Constantes enumeradas na definição - Subfaixa Subseqüência de um ordinal Introduzidos pelo Pascal Herdam todas as operações do pai Implementação: Verificação de faixa Tipos ordinais definidos pelo usuário

29 29 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array - Referência a elementos: Nome e Seletor - Seletor estático ou dinâmico - Categorias: Onde e quando é alocado Tipos Array

30 30 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array - Referência a elementos: Nome e Seletor - Seletor estático ou dinâmico - Categorias ( esquema ): Onde e quando é alocado Tipos Array

31 31 Tipos Array: Categorias Categorias Estático Stack Dinâmico Heap Dinâmico Stack Dinâmico Fixo

32 32 Tipos Array: Categorias Categorias Estático Stack Dinâmico Heap Dinâmico Stack Dinâmico Fixo Código Dados Estáticos Heap Pilha

33 33 Tipos Array: Categorias Categorias Estático Stack Dinâmico Heap Dinâmico Stack Dinâmico Fixo Código Dados Estáticos Heap Pilha

34 34 Tipos Array: Categorias Categorias Estático Stack Dinâmico Heap Dinâmico Stack Dinâmico Fixo Código Dados Estáticos Heap Pilha

35 35 Tipos Array: Categorias Categorias Estático Stack Dinâmico Heap Dinâmico Stack Dinâmico Fixo Código Dados Estáticos Heap Pilha

36 36 Tipos Array: Categorias Categorias Estático Stack Dinâmico Heap Dinâmico Stack Dinâmico Fixo Código Dados Estáticos Heap Pilha

37 37 Tipos Array: Categorias Categorias Estático Stack Dinâmico Heap Dinâmico Stack Dinâmico Fixo Código Dados Estáticos Heap Pilha – Tudo estático – Altamente eficiente

38 38 Tipos Array: Categorias Categorias Estático Stack Dinâmico Heap Dinâmico Stack Dinâmico Fixo Código Dados Estáticos Heap Pilha – Faixas de índice estáticas – Alocação durante execução

39 39 Tipos Array: Categorias Categorias Estático Stack Dinâmico Heap Dinâmico Stack Dinâmico Fixo Código Dados Estáticos Heap Pilha – Faixas de índices dinâmicas – Não são alteradas durante execução – Alocação durante execução

40 40 Tipos Array: Categorias Categorias Estático Stack Dinâmico Heap Dinâmico Stack Dinâmico Fixo Código Dados Estáticos Heap Pilha – Faixas de índices dinâmica – – Alocação durante execução – Faixas de índices dinâmicas – Podem ser alteradas na execução – Alocação durante execução – Resumo: Tudo dinâmico

41 41 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array - Referência a elementos: Nome e Seletor - Seletor estático ou dinâmico - Categorias Tipos Array

42 42 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array - Referência a elementos: Nome e Seletor - Seletor estático ou dinâmico - Categorias - Operações com Arrays (array é uma unidade) Tipos Array

43 43 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array - Referência a elementos: Nome e Seletor - Seletor estático ou dinâmico - Categorias - Operações com Arrays (array é uma unidade) - Implementação: Alocação: Linha ou Coluna Acesso: Função de acesso Tipos Array

44 44 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array 6 – Arrays associativos - Hash como suporte à associatividade - Registradores associativos Arrays associativos

45 45 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array 6 – Arrays associativos 7 – Tipos Registro - Referências: Amplamente Qualificada Elípticas (with do Pascal) Tipos Registro

46 46 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array 6 – Arrays associativos 7 – Tipos Registro - Referências: Amplamente Qualificada Elípticas (with do Pascal) - Operações com registros ( comparação, atribuição, etc ) Tipos Registro

47 47 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array 6 – Arrays associativos 7 – Tipos Registro - Referências: Amplamente Qualificada Elípticas (with do Pascal) - Operações com registros ( comparação, atribuição, etc ) - Implementação: Campos diferentes Tipos Registro

48 48 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array 6 – Arrays associativos 7 – Tipos Registro 8 – Tipos União - Verificação de tipos é sempre dinâmica (tag) - Registros variantes em Pascal - Verificação: Trocar tag sem trocar variante - Elimina a tipificação forte ( Pascal, Fortran, etc ) Tipos União

49 49 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array 6 – Arrays associativos 7 – Tipos Registro 8 – Tipos União 9 – Tipos Conjunto - Coleções não ordenadas de tipos ordinais - Modelagem de conjuntos matemáticos - Implementação: Strings de bits indicando elementos Tipos Conjunto

50 50 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array 6 – Arrays associativos 7 – Tipos Registro 8 – Tipos União 9 – Tipos Conjunto 10 – Tipos Ponteiro (referências) Tipos Ponteiro

51 51 1 – Introdução 2 – Tipos de dados primitivos 3 – Tipos Strings de caracteres 4 – Tipos ordinais definidos pelo usuário 5 – Tipos Array 6 – Arrays associativos 7 – Tipos Registro 8 – Tipos União 9 – Tipos Conjunto 10 – Tipos Ponteiro (referências) Tipos Ponteiro

52 52 Tipos Ponteiro - Usos

53 53 Tipos Ponteiro - Usos Poder de endereçamento direto (assembly) Gerenciamento de Heap

54 54 Tipos Ponteiro - Usos Poder de endereçamento direto (assembly) Gerenciamento de Heap Código Dados Estáticos Heap Pilha

55 55 Tipos Ponteiro - Usos - Operações com ponteiros Poder de endereçamento direto (assembly) Gerenciamento de Heap

56 56 Tipos Ponteiro - Usos - Operações com ponteiros - Aritmética de ponteiros Poder de endereçamento direto (assembly) Gerenciamento de Heap

57 57 Tipos Ponteiro - Usos - Operações com ponteiros - Aritmética de ponteiros - Ponteiros oscilantes Poder de endereçamento direto (assembly) Gerenciamento de Heap

58 58 Tipos Ponteiro - Usos - Operações com ponteiros - Aritmética de ponteiros - Ponteiros oscilantes - Vazamento de memória Poder de endereçamento direto (assembly) Gerenciamento de Heap

59 59 Tipos Ponteiro - Usos - Operações com ponteiros - Aritmética de ponteiros - Ponteiros oscilantes - Vazamento de memória - Variável de referência Ponteiro constante inicializado Sem aritmética Poder de endereçamento direto (assembly) Gerenciamento de Heap

60 60 Tipos Ponteiro - Usos - Operações com ponteiros - Aritmética de ponteiros - Ponteiros oscilantes - Vazamento de memória - Variável de referência Ponteiro constante inicializado Sem aritmética - Java: Não possibilita ponteiros oscilante Poder de endereçamento direto (assembly) Gerenciamento de Heap

61 61 Tipos Ponteiro - Usos - Operações com ponteiros - Aritmética de ponteiros - Ponteiros oscilantes - Vazamento de memória - Variável de referência Ponteiro constante inicializado Sem aritmética - Java: Não possibilita ponteiros oscilante - Implementação (2 ou 4 bytes): - Soluções para ponteiros oscilantes - Gerenciamento do Heap (Garbage Collection) Poder de endereçamento direto (assembly) Gerenciamento de Heap

62 62 Exercícios Práticos: Estudo de caso Turbo Pascal 1 – Strings em Pascal

63 63 Exercícios Práticos: Estudo de caso Turbo Pascal 1 – Strings em Pascal - Tamanho da String? => Estático ? => Dinâmico Limitado ? => Dinâmico ?

64 64 Exercícios Práticos: Estudo de caso Turbo Pascal 1 – Strings em Pascal - Tamanho da String? - Como é controlado o tamanho? => Estático ? => Dinâmico Limitado ? => Dinâmico ?

65 65 Exercícios Práticos: Estudo de caso Turbo Pascal 1 – Strings em Pascal - Tamanho da String? - Como é controlado o tamanho? => Estático ? => Dinâmico Limitado ? => Dinâmico ? program teste; var x : string[10]; begin x := teste; x[0] := 3; write(x); end.

66 66 Exercícios Práticos: Estudo de caso Turbo Pascal 1 – Strings em Pascal - Tamanho da String? - Como é controlado o tamanho? => Estático ? => Dinâmico Limitado ? => Dinâmico ? program teste; var x : string[10]; begin x := teste; x[0] := 3; write(x); end.

67 67 Exercícios Práticos: Estudo de caso Turbo Pascal 1 – Strings em Pascal - Tamanho da String? - Como é controlado o tamanho? => Estático ? => Dinâmico Limitado ? => Dinâmico ? program teste; var x : string[10]; begin x := teste; x[0] := chr(3); write(x); end.

68 68 Exercícios Práticos: Estudo de caso Turbo Pascal 2 – Tamanho máximo de conjuntos (sets) - Qual é o tamanho máximo ?

69 69 Exercícios Práticos: Estudo de caso Turbo Pascal 2 – Tamanho máximo de conjuntos (sets) - Qual é o tamanho máximo ? program teste; type dias = (seg,ter,quar,quin,sex,sab,dom); conj_dias = set of dias; conj_bytes = set of bytes; conj_int = set of integer;

70 70 Exercícios Práticos: Estudo de caso Turbo Pascal 2 – Tamanho máximo de conjuntos (sets) - Qual é o tamanho máximo ? program teste; type dias = (seg,ter,quar,quin,sex,sab,dom); conj_dias = set of dias; conj_bytes = set of bytes; conj_int = set of integer; Acima do limite

71 71 Exercícios Práticos: Estudo de caso Turbo Pascal 2 – Tamanho máximo de conjuntos (sets) - Qual é o tamanho máximo ? program teste; type dias = (seg,ter,quar,quin,sex,sab,dom); conj_dias = set of dias; conj_bytes = set of bytes; var var_conj : conj_dias; begin if seg in var_conj then write(Esta no conjunto) else write(Não esta no conjunto);; end.

72 72 Exercícios Práticos: Estudo de caso Turbo Pascal 2 – Tamanho máximo de conjuntos (sets) - Qual é o tamanho máximo ? program teste; type dias = (seg,ter,quar,quin,sex,sab,dom); conj_dias = set of dias; conj_bytes = set of bytes; var var_conj : conj_dias; begin var_conj := [seg]; if seg in var_conj then write(Esta no conjunto) else write(Não esta no conjunto);; end.

73 73 Exercícios Práticos: Estudo de caso Turbo Pascal 3 – Diretivas de compilação:

74 74 Exercícios Práticos: Estudo de caso Turbo Pascal 3 – Diretivas de compilação: - Dimensionamento de memória: Diretiva $M

75 75 Exercícios Práticos: Estudo de caso Turbo Pascal 3 – Diretivas de compilação: - Dimensionamento de memória: Diretiva $M - Verificação de faixas: Diretiva $R

76 76 Exercícios Práticos: Estudo de caso Turbo Pascal 3 – Diretivas de compilação: - Dimensionamento de memória: Diretiva $M - Verificação de faixas: Diretiva $R - Curto-circuito em expressões booleadas $B


Carregar ppt "1 Aula 5 Tipos de Dados Universidade do Vale do Rio dos Sinos"

Apresentações semelhantes


Anúncios Google