Buscar

aula4_Valores_e_Tipo_de_dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 63 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 63 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 63 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Paradigmas de Linguagem
Valores e Tipos de Dados
UFPB – Campus IV
Prof. Ana Liz
Prof Wagner Emanoel Cota
2
Conceituação
 Área antes conhecida como processamento de 
dados
o Grandes massas de dados: 
odados geográficos, 
odados de catálogos telefônicos de cidades, 
odados de censo demográfico, 
o imagens de satélite 
o cadastro de consumidores 
o Interesse econômico
3
Conceituação
Valor
o qualquer entidade que existe durante um 
processamento
o tudo que pode ser avaliado, armazenado, 
incorporado numa estrutura de dados, passado 
como argumento para um procedimento ou 
função, retornado como resultado de funções
Ex: 3 2.5 'a' “Ana” 0x1F 026
Conceituação
Tipo
o Conjunto cujos valores exibem comportamento 
uniforme nas operações associadas com o tipo
{true, 25, 'b', “azul” } não corresponde a um tipo
{ true, false } corresponde a um tipo
4
Conceituação - Tipo 
Um valor é de um determinado tipo significa 
que esse valor pertence ao conjunto de 
valores definido por aquele tipo. 
Uma expressão é de um determinado tipo 
significa que o resultado dessa expressão é 
um valor pertencente ao conjunto definido 
por aquele tipo.
5
6
Tipos Primitivos
Não podem ser decompostos em valores mais simples
o a partir deles todos os demais tipos podem ser construídos
Costumam ser definidos na implementação da LP
o Sofrem influência direta do hardware
o Exemplo em C: o tipo int normalmente corresponde ao
intervalo que pode ser representado :
o 16 bits: o tipo int varia de –32.768 a +32.767.
o 32 bits: o tipo int varia de –2.147.483.648 a
+2.147.483.647
Tipos Primitivos
A escolha dos tipos primitivos da LP revela a 
área de aplicação pretendida para a LP. 
Exemplo: 
o COBOL (processamento comercial)
o Tipos primitivos strings de comprimento fixo e 
números de ponto fixo 
o FORTRAN (computação numérica)
o Tipos primitivos números reais com precisão variada
7
TIPO INTEIRO
Valores e Tipos de Dados Linguagens de Programação 8
9
Tipo Inteiro
Corresponde a um intervalo do conjunto dos
números inteiros
Há vários tipos inteiros numa mesma LP
o Em C, intervalos são definidos na implementação
do compilador
o Qual a vantagem?
Em JAVA o intervalo de cada tipo inteiro é
estabelecido na definição da própria LP
Tipo inteiro em C
10
11
Tipos Inteiros em JAVA
Tipo Tamanho
(bits)
Intervalo
Início Fim
byte 8 -128 127
short 16 -32768 32767
int 32 -2.147.483.648 2.147.483.647
long 64 -9223372036854775808 9223372036854775807
TIPO CARACTER
Valores e Tipos de Dados Linguagens de Programação 12
Tipo Caracter
Valores caracteres são armazenados como 
códigos numéricos. 
LPs fornecem um tipo primitivo cujos 
valores correspondem aos símbolos de uma 
tabela padrão de caracteres 
o Ex: PASCAL e MODULA 2, Java, C
Valores e Tipos de Dados Linguagens de Programação 13
14
Tipo Caracter
Armazenados como códigos numéricos
o Tabelas EBCDIC, ASCII e UNICODE
o ASCII
oValores de 0..127, armazenados em 8 bits, para
codificar 128 caracteres diferentes
o UNICODE
o16 bits para armazenar caracteres da maioria das
linguagens naturais existentes no mundo
o Engloba a tabela ASCII
o Java adota UNICODE
Tabela ASCII
Linguagens de Programação 15
Tabela ASCII
16
Tabela ASCII - Extensão
17
18
Tipo Caractere
Curiosidade:
Em C, o tipo primitivo char é classificado como um 
tipo inteiro
char d;
d = 'a' + 3;
o Exemplo de ortogonalidade.
O código atribui o valor inteiro 
100 a variável d (corresponde a 
soma de 3 com o código 
numérico ASCII da letra 
minúscula ‘a’)
TIPO BOOLEANO
Valores e Tipos de Dados Linguagens de Programação 19
20
Tipo Booleano
Tipo mais simples
o Possui apenas dois valores
Usados como resultados de:
o Expressões condicionais
o Variáveis identificadoras de estado (flag)
 JAVA inclui o tipo de dado boolean
 Geralmente armazenados em um byte.
21
Tipo Booleano
C não possui o tipo de dado booleano
o Qualquer expressão numérica pode ser usada como
condicional
Valores  zero verdadeiro
Valores = zero falso
 Exemplo em C:
...
if (c += 1) x = 10;
….
TIPO DECIMAL
Valores e Tipos de Dados Linguagens de Programação 22
23
Tipo Decimal
Armazena um número fixo de dígitos decimais
o Aplicações comerciais 
o Armazenar precisamente valores decimais)
o Exemplos: COBOL e ADA
o Garante que as operações sobre seus valores são 
sempre precisas 
Representação BCD (Binary Coded Decimal)
TIPO PONTO FLUTUANTE
24
25
Tipo Ponto Flutuante
Modela os números reais
o Não possuem representação binária direta
o Notação que combina representações binárias de frações 
e expoentes.
LPs normalmente incluem dois tipos de ponto 
flutuante: float e double
expoente fração
expoente fração
Padrão IEEE 754 - Precisão Simples
bit de sinal 8 bits 23 bits
bit de sinal 11 bits 52 bits
Padrão IEEE 754 - Precisão Dupla
26
Tipo Ponto Flutuante
Java possui tipos float e double
TIPO ENUMERADO
Valores e Tipos de Dados Linguagens de Programação 27
28
Tipo Enumerado
Permitem definir novos tipos primitivos através da
enumeração de identificadores dos valores do novo
tipo
Exemplos: PASCAL, ADA, C e C++
enum mes_letivo { mar, abr, mai, jun, ago, set, out, nov };
enum mes_letivo m1, m2;
Tipo Enumerado
29Fonte: http://pt.wikibooks.org/wiki/Programar_em_C/Enumera%C3%A7%C3%A3o
http://pt.wikibooks.org/wiki/Programar_em_C
30
h
tt
p
:/
/p
t.
w
ik
ib
o
o
k
s.
o
rg
/w
ik
i/
P
ro
g
ra
m
ar
_
em
_
C
/E
n
u
m
er
a%
C
3
%
A
7
%
C
3
%
A
3
o
http://pt.wikibooks.org/wiki/Programar_em_C
31
Tipo Enumerado
 Possuem correspondência direta com intervalos de tipos
inteiros
 Usados para indexar vetores e para contadores de repetições
 Aumentam a legibilidade e confiabilidade do código
 Java não inclui o tipo enumerado de C e C++
32
Tipo Intervalo de Inteiros
Em PASCAL e ADA é possível definir tipos
intervalo de inteiros
type meses = 1 .. 12;
Tipos intervalos herdam as operações dos
inteiros
Exemplo de ortogonalidade
Tipo Intervalo em Pascal
Pode-se ter intervalos de qualquer tipo 
padrão do Pascal, exceto real:
VAR v : 0..100; 
x : 'a'..'d'; 
y : '5'..'9'; 
33
limite_inferior..limite_superior
TIPOS COMPOSTOS
34
35
Tipos Compostos
Podem ser criados a partir de tipos mais simples
registros, vetores, listas, arquivos
Entendidos em termos dos conceitos
produto cartesiano, uniões, mapeamentos, conjuntos
potência e tipos recursivos
Cardinalidade
número de valores distintos que fazem parte do tipo
36
Produto Cartesiano
 São produtos cartesiano os registros de PASCAL, MODULA 2, 
ADA e COBOL e as estruturas de C
struct nome {
char primeiro [20];
char meio [10];
char sobrenome [20];
}
struct empregado {
struct nome nfunc;
float salario;
} emp;
para acessar o campo meio
em C, é necessário usar:
emp.nfunc.meio
VETORES
37
38
Mapeamentos Finitos
O conjunto domínio é finito
Vetores e matrizes
Elementos dos vetores são acessados através de
indexação
O conjunto índice deve ser finito e discreto
a z d r s … f h w o
1 2 3 4 5 … 47 48 49 50
Vetores
As notações comuns utilizadas para 
indexação são parênteses ( ) e colchetes [ ]
o Questões de legibilidade
A maior parte das LPs restringe o conjunto 
índice a um intervalo dos inteiros
o Limite inferior 0: C, C++ e JAVA
o Limite inferior 1: Lua, 
39
Vetores
Em geral, o erro devido ao uso de índice inexistente só 
pode ser verificado em tempo de execução
Realizam verificação dinâmica de índices
o PASCAL, MODULA-2, ADA e JAVA
o Vantagem: aumenta a confiabilidade 
o Desvantagem: reduz a eficiência de execução pois acessoao vetor 
requer teste do índice
o Agravo quando o acesso ocorre dentro de uma repetição
40
Vetores
Não realizam verificação dinâmica de índices
o C, C++ e FORTRAN
o Vantagem: aumenta eficiência 
o Desvantagem: reduz confiabilidade
Exemplo de código em C:
41
42
Categorias de Vetores
Categoria 
de Vetor
Tamanho Tempo de 
Definição
Alocação Local de 
Alocação
Exemplos
Estáticos Fixo Compilação Estática Base FORTRAN 
77
Semi-
Estáticos
Fixo Compilação Dinâmica Pilha PASCAL, C, 
MODULA 2
Semi-
Dinâmicos
Fixo Execução Dinâmica Pilha ALGOL 68, 
ADA, C
Dinâmicos Variável Execução Dinâmica Monte APL, PERL
43
Categorias de Vetores
Categoria 
de Vetor
Tamanho Tempo de 
Definição
Alocação Local de 
Alocação
Exemplos
Estáticos Fixo Compilação Estática Base FORTRAN 
77
Semi-
Estáticos
Fixo Compilação Dinâmica Pilha PASCAL, C, 
MODULA 2
Semi-
Dinâmicos
Fixo Execução Dinâmica Pilha ALGOL 68, 
ADA, C
Dinâmicos Variável Execução Dinâmica Monte APL, PERL
• Alocados no início do programa em posição fixa da memória (base).
• Permanecem alocada durante toda execução 
•Vantagem: eficiência de execução, pois não requerem alocação e 
desalocação de memória
•Desvantagem: consomem mais memória do que é necessário, pois 
vetores usados apenas em regiões do programa ficam alocados 
durante toda a execução
44
Categorias de Vetores
Categoria 
de Vetor
Tamanho Tempo de 
Definição
Alocação Local de 
Alocação
Exemplos
Estáticos Fixo Compilação Estática Base FORTRAN 
77
Semi-
Estáticos
Fixo Compilação Dinâmica Pilha PASCAL, C, 
MODULA 2
Semi-
Dinâmicos
Fixo Execução Dinâmica Pilha ALGOL 68, 
ADA, C
Dinâmicos Variável Execução Dinâmica Monte APL, PERL
• Alocados na pilha sempre que o bloco onde estão declarados 
começa a ser executado. 
• Vantagem: economia de memória pois só alocam o vetor na região 
do programa onde são necessários. 
• Desvantagem: redução da eficiência de execução.
45
Categorias de Vetores
Categoria 
de Vetor
Tamanho Tempo de 
Definição
Alocação Local de 
Alocação
Exemplos
Estáticos Fixo Compilação Estática Base FORTRAN 
77
Semi-
Estáticos
Fixo Compilação Dinâmica Pilha PASCAL, C, 
MODULA 2
Semi-
Dinâmicos
Fixo Execução Dinâmica Pilha ALGOL 68, 
ADA, C
Dinâmicos Variável Execução Dinâmica Monte APL, PERL
• Alocados na pilha
• Tamanho do vetor só é conhecido no momento da alocação. 
• Vantagem: flexibilidade - programador não necessita definir tamanho 
máximo para o vetor.
•Exemplo em ADA: 
46
Categorias de Vetores
Categoria 
de Vetor
Tamanho Tempo de 
Definição
Alocação Local de 
Alocação
Exemplos
Estáticos Fixo Compilação Estática Base FORTRAN 
77
Semi-
Estáticos
Fixo Compilação Dinâmica Pilha PASCAL, C, 
MODULA 2
Semi-
Dinâmicos
Fixo Execução Dinâmica Pilha ALGOL 68, 
ADA, C
Dinâmicos Variável Execução Dinâmica Heap APL, PERL
• Alocados em qualquer ponto da execução do programa na região de 
heap do programa
• Tamanho do vetor pode ser modificado durante a execução. 
• Exemplo em APL:
47
Categorias de Vetores
Estáticos (C)
void f () {
static int x[10];
}
Semi-Estáticos (C)
void f () {
int x[10];
}
Semidinâmicos
(Padrão ISO - 1999)
void f (int n) {
int x[n];
}
Dinâmicos (APL)
A  (2 3 4)
A  (2 3 4 15 )
48
Vetores semi-Dinâmicos
 Necessário alocar nova memória e copiar conteúdo quando vetor
aumenta de tamanho
 É encargo do programador controlar alocação e cópia. Em C e C++, o
programador deve controlar desalocação também. Isso torna a
programação mais complexa e suscetível a erros
Vetor semi-dinâmico em Java
Em java
Valores e Tipos de Dados Linguagens de Programação 49
LISTAS
50
Listas em prolog
É uma seqüência ordenada de uma quantidade 
qualquer de elementos
Ex: [pam, liz, pat, ana, tom, bob, jim]
Existem dois tipos de listas:
1. Listas vazias - representada por [ ] 
2. Listas não vazias
oCabeça - corresponde ao primeiro elemento da lista
oCauda - corresponde aos elementos restantes da lista
51
Listas
 Exemplo: [a | b, c] = [a, b, c].
Pode-se especificar que um elemento de uma 
lista é também uma lista:
Hobbies1 = [futebol,computador]. 
Hobbies2 = [ler,dormir]. 
Lista = [ana, Hobbies1,tom,Hobbies2].
52
TIPO PONTEIRO
53
54
Tipos Ponteiros
Ponteiro é um conceito de baixo nível relacionado
com a arquitetura dos computadores
O conjunto de valores de um tipo ponteiro são os
endereços de memória e o valor nil
Ponteiros
Ponteiro é uma variável que guarda o endereço 
de uma outra variável
 Exemplo em C: int *pa;
Há dois operadores unitários utilizados:
o Operador *: retorna o valor da variável que está 
localizada no ponteiro
o Operador &: retorna o endereço de memória que 
está localizado o valor da variável contida no 
ponteiro
55
Ponteiro do tipo inteiro
Ponteiros
Para atribuir um valor para o ponteiro é 
necessário referencia o valor da variável que se 
encontra no ponteiro utilizando o operador *
*px = 20;
o Atribui-se o valor 20 para a variável que está contida 
no ponteiro
56
Ponteiros – Exemplo em C
void main( ){
int x, y;
int *px;
int *py;
x= 1;
y=2;
px = &x;
py = &y;
printf(“Endereço do ponteiro 
px: %u “,px);
printf(“Endereço da variavel 
contida no ponteiro px: 
%u“,&px);
printf(“Valor da variável 
contida no ponteiro px: %d 
“,*px);}
57
Ponteiros px e py apontam para os 
endereços de memória das variáveis x e y
Ponteiros – Exemplo em C
void main( ){
int x, y;
int *px;
int *py;
x= 1;
y=2;
px = &x;
py=&y;
printf(“Endereço do ponteiro 
px: %u “,px);
printf(“Endereço da variavel 
contida no ponteiro px: 
%u“,&px);
printf(“Valor da variável 
contida no ponteiro px: %d 
“,*px);}
58
Saída do programa: 
Endereço do ponteiro px: 1387098
Endereço da variável contida no ponteiro px: 1387090
Valor da variável contida no ponteiro px: 1
Ponteiros – Exemplo em C
Abstração do ponteiro
59
13870901387098
1387090 1
...
...
...
1
*px
Ponteiro
Linguagens que não possuem ponteiros 
devem incluir sistema de gerenciamento 
de memória 
o Para controlar o espaço utilizado e liberar o 
espaço que não usado
60
61
Tipo String
 Valores correspondem a uma seqüência de caracteres
 Não existe consenso sobre como devem ser tratadas
o Tipos primitivos em PERL, SNOBOL e ML
o Vetores de caracteres em C e Pascal
o JAVA considera strings como uma classe da biblioteca padrão com as
suas próprias operações
 Três formas comuns de implementação
o Estática
o Semi-Estática
o Dinâmica
62
Hierarquia de Tipos
Tipos
Primitivos Compostos
Booleanos
Inteiros
Caracteres
Decimais
Ponto Flutuantes
Enumerados
Intervalos
Uniões
StringsRecursivos
Mapeamentos
Conjuntos Potência
Produtos Cartesianos
Ponteiros
Livres Disjuntas
Finitos Funções
Referências
 VAREJÃO, Flávio Miguel. Linguagens de programação java, C 
e C++ e outras: conceitos e técnicas. Rio de Janeiro: Elsevier, 
2004.
 Wikibook de C. Diponível em: 
http://pt.wikibooks.org/wiki/Programar_em_C/Ponteiros. 
Acesso em: 28 abr 2014.
63
http://pt.wikibooks.org/wiki/Programar_em_C/Ponteiros

Outros materiais