Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouNicolas Sardinha Alterado mais de 10 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.