paradigmas de linguagens de programação - tipos primitivos e compostos

24
Prof. Adriano Teixeira de Souza

Upload: adriano-teixeira-de-souza

Post on 04-Jun-2015

5.177 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

Prof. Adriano Teixeira de Souza

Page 2: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

Não podem ser decompostos em valores mais simples

Costumam ser definidos na implementação da LP

Prof. Adriano Teixeira de Souza

Page 3: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 4: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 5: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 6: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 7: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 8: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

Armazena um número fixo de dígitos decimais ◦ Existe, por exemplo, no Cobol e no Pascal

Prof. Adriano Teixeira de Souza

Page 9: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 10: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 11: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 12: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 13: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 14: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 15: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 16: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 17: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 18: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 19: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 20: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

Prof. Adriano Teixeira de Souza

Page 21: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 22: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 23: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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

Page 24: Paradigmas de Linguagens de Programação - Tipos primitivos e compostos

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