paradigmas de linguagens de programação - tipos primitivos e compostos
Post on 04-Jun-2015
5.177 Views
Preview:
TRANSCRIPT
Prof. Adriano Teixeira de Souza
Não podem ser decompostos em valores mais simples
Costumam ser definidos na implementação da LP
Prof. Adriano Teixeira de Souza
Corresponde a um intervalo do conjunto dos números inteiros
Há vários tipos inteiros numa mesma LP ◦ Normalmente, intervalos são definidos na
implementação do compilador
Em JAVA, o intervalo de cada tipo inteiro é estabelecido na definição da própria LP
Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
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
Armazenados como códigos numéricos ◦ Tabelas ASCII e UNICODE
Java oferece o tipo char
Em C, o tipo primitivo char é classificado como um tipo inteiro
char d;
d = 'a' + 3;
…
while (*p) *q++ = *p++;
Prof. Adriano Teixeira de Souza
Tipo mais simples ◦ Possui apenas dois valores
C não possui o tipo de dado booleano, mas qualquer expressão numérica pode ser usada como condicional
Valores ¹ zero => verdadeiro
Valores = zero => Þfalso
◦ Abordagem de C pode provocar erros if (c += 1) x = 10;
JAVA inclui o tipo de dado boolean
Prof. Adriano Teixeira de Souza
Por que a linguagem de programação C, umas das mais usadas da história, não implementa o tipo booleano?
Prof. Adriano Teixeira de Souza
Armazena um número fixo de dígitos decimais ◦ Existe, por exemplo, no Cobol e no Pascal
Prof. Adriano Teixeira de Souza
O tipo primitivo ponto flutuante modela os números reais
LPs normalmente incluem dois tipos de ponto flutuante: float e double
Prof. Adriano Teixeira de Souza
O numero xx,yyyy . Onde xx é a parte inteira e yyyy é a parte fracionaria (que pode assumir um número infinito)
Os computadores não podem representar números reais da forma acima.
Os computadores adotam método de representação de números reais chamado notação científica
O número 52,258 é representado na notação científica como 0,52258 X 10^2
Prof. Adriano Teixeira de Souza
C e C++ e Java permitem que o programador defina novos tipos primitivos através da enumeração de identificadores dos valores do novo tipo ◦ enum mes_letivo {mar, abr, mai, jun, ago, set, out, nov }; ◦ enum mes_letivo m1, m2;
Possuem correspondência direta com intervalos de tipos inteiros e podem ser usados para indexar vetores e para contadores de repetições
Aumentam a legibilidade e confiabilidade do código
Prof. Adriano Teixeira de Souza
Em PASCAL e ADA, também é possível definir tipos intervalo de inteiros
◦ type meses = 1 .. 12;
Tipos intervalos herdam as operações dos inteiros
Prof. Adriano Teixeira de Souza
Tipos compostos são aqueles que podem ser criados a partir de tipos mais simples ◦ registros, vetores, listas, arquivos
Permitem Operações ◦ Ex.: Produtocartesiano, união e conjunto de
potências
Possuem Cardinalidade ◦ Número de valores distintos que fazem parte do
tipo
Prof. Adriano Teixeira de Souza
Podem ser implementados em Pascal, C, C++ e JAVA
É 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
Prof. Adriano Teixeira de Souza
Também são conhecidos como matrizes.
Em linguagens que não possuem o conceito de matrizes, como JAVA, vetores multidimensionais são obtidos com o uso de vetores unidimensionais cujos elementos são outros vetores
◦ int [ ] [ ] a = new int [5] [ ];
O mesmo efeito pode ser obtido em C com o uso de ponteiros para ponteiros
Prof. Adriano Teixeira de Souza
Valores correspondem a uma seqüência de caracteres
Não existe consenso sobre como devem ser tratadas
Podem ser consideradas tipos primitivos, mapeamentos finitos ou tipo recursivo lista
Prof. Adriano Teixeira de Souza
Os objetos String encapsulam seqüências de caracteres de 16-bits (representação Unicode).
Podemos criar objetos String de várias formas. Veja alguns exemplos:
◦ String s = “Meu texto”; //mais usual
◦ String s = new String(“Meu texto”);
◦ char [] c = {'M', 'e', 'u', ' ', 't', 'e', 'x', 't', 'o'};
◦ String s = new String(c);
Prof. Adriano Teixeira de Souza
length() ◦ Ex: System.out.println(“Hello”.length()); // imprime 5
O operador + é usado para concatenar strings. ◦ Ex: String str = “Java é ” + “segura.”;
charAt(1) – retorna o caracter na posição 1 ('a')
equals(“Java é segura.”) - retorna true
equalsIgnoreCase(“java é segura”) - retorna true
indexOf('J') – retorna 0
lastIndexOf('a') – retorna 12
substring(0, 4) – retorna 'Java'
Prof. Adriano Teixeira de Souza
Uma instância da classe StringBuffer representa uma String que pode ser facilmente alterada.
O tamanho e conteúdo da seqüencia da StringBuffer pode ser alterada por alguns métodos.
Veja o exemplo: ◦ StringBuffer sb = new StringBuffer(); ◦ StringBuffer sb = new StringBuffer(“Meu texto”); ◦ sb.append(“!!!”); // Meu texto!!! ◦ sb.insert(0, “Esse é o “); // Esse é o Meu texto!!!
Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
Todo tipo primitivo no Java possui uma classe correspondente chamada de classe wrapper.
A classe wrapper ou empacotadora simplesmente encapsula um valor primitivo dentro de um objeto.
Prof. Adriano Teixeira de Souza
Classes Wrappers possuem métodos públicos disponíveis na subclasse Object, devemos dar um maior destaque para os métodos equals(Object) e toString, o primeiro é utilizado para comparações enquanto que o segundo permite que o conteúdo de um objeto seja representado em formato de texto.
Classes derivadas da subclasse Number possuem vários métodos para devolverem um tipo primitivo, tais como: byteValue(), shortValue(), intValue(), longValue(), doubleValue(), floatValue().
Alem disso a as classes derivadas de Number possuem também o método comparareTo(Object) que faz comparações entre objetos wrapper
Prof. Adriano Teixeira de Souza
Tipo primitivo Classe Wrapper Subclasse
Lógico boolean Boolean Object
Caractere char Caracter
Inteiro
byte Byte
Number
short Short
int Integer
long Long
Ponto flutuante float Float
double Double
Prof. Adriano Teixeira de Souza
Tipos primitivos são bem rápidos
Consomem pouca memória
Além de permitirem operações mais complexas
São bastantes eficientes em laços e expressões
Prof. Adriano Teixeira de Souza
top related