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

6.157 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
6.157
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
144
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

  1. 1. Prof. Adriano Teixeira de Souza
  2. 2.  Não podem ser decompostos em valores mais simples Costumam ser definidos na implementação da LP Prof. Adriano Teixeira de Souza
  3. 3.  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
  4. 4. Tipo Tamanho Intervalo (bits) Início Fimbyte 8 -128 127short 16 -32768 32767 int 32 -2.147.483.648 2.147.483.647long 64 -9223372036854775808 9223372036854775807 Prof. Adriano Teixeira de Souza
  5. 5.  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
  6. 6.  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
  7. 7.  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
  8. 8.  Armazena um número fixo de dígitos decimais ◦ Existe, por exemplo, no Cobol e no Pascal Prof. Adriano Teixeira de Souza
  9. 9.  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
  10. 10.  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
  11. 11.  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
  12. 12.  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
  13. 13.  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
  14. 14.  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
  15. 15.  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
  16. 16.  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
  17. 17.  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
  18. 18.  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
  19. 19.  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
  20. 20. Prof. Adriano Teixeira de Souza
  21. 21.  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
  22. 22.  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
  23. 23. Tipo primitivo Classe Wrapper SubclasseLógico boolean Boolean ObjectCaractere char Caracter byte Byte short ShortInteiro int Integer Number long Long float FloatPonto flutuante double Double Prof. Adriano Teixeira de Souza
  24. 24.  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

×