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

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

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

Apresentações semelhantes


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

1 Aula 5 Tipos de Dados Universidade do Vale do Rio dos Sinos
< Página da Disciplina > <Endereço do Professor >

2 Sumário 1 – Introdução

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

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

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

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

7 Sumário 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

8 Sumário 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

9 Sumário 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

10 Sumário 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

11 Sumário 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)

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 Tipos de dados primitivos
1 – Introdução 2 – Tipos de dados primitivos - Tipos básicos - Primitivos + Construtores => Estruturados - Tipos de dados primitivos

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

15 Tipos de dados primitivos

16 Tipos de dados primitivos
Numéricos Primitivos Booleanos Caracterere

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

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

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

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

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

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

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

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

25 Tipos Strings de caracteres
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

26 Tipos Strings de caracteres
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)

27 Tipos ordinais definidos pelo usuário
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

28 Tipos ordinais definidos pelo usuário
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

29 Tipos Array 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

30 Tipos Array 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

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

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

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

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

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

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

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

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

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

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

41 Tipos Array 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

42 Tipos Array 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)

43 Tipos Array 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

44 Arrays associativos 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

45 Tipos Registro 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)

46 Tipos Registro 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)

47 Tipos Registro 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

48 Tipos União 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)

49 Tipos Conjunto 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

50 Tipos Ponteiro 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)

51 Tipos Ponteiro 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)

52 Tipos Ponteiro - Usos

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

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

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

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

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

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

59 Tipos Ponteiro - Usos - Operações com ponteiros
Poder de endereçamento direto (assembly) - 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 Gerenciamento de Heap

60 Tipos Ponteiro - Usos - Operações com ponteiros
Poder de endereçamento direto (assembly) - 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 Gerenciamento de Heap

61 Tipos Ponteiro - Usos - Operações com ponteiros
Poder de endereçamento direto (assembly) - 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) Gerenciamento de Heap

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

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 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 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 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 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 Exercícios Práticos: Estudo de caso Turbo Pascal
2 – Tamanho máximo de conjuntos (sets) - Qual é o tamanho máximo ?

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 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 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 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 Exercícios Práticos: Estudo de caso Turbo Pascal
3 – Diretivas de compilação:

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

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 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 "Aula 5 Tipos de Dados Universidade do Vale do Rio dos Sinos"

Apresentações semelhantes


Anúncios Google