• Nenhum resultado encontrado

Tipos String de caracteres

N/A
N/A
Protected

Academic year: 2019

Share "Tipos String de caracteres"

Copied!
50
0
0

Texto

(1)

PARADIGMAS DE LINGUAGENS

Prof. Paulo Malcher

prcmalcher@gmail.com

https://sites.google.com/site/professorpaulomalcher/

(2)

Agenda

Introdução

Tipos de dados primitivos

Tipos String de caracteres

Tipos ordinais definidos pelo usuário

Tipos matriz (array)

Tipos registro

(3)

Introdução

Os programas de computador produzem

resultados manipulando dados.

(4)

Introdução

Um tipo de dado define uma coleção de dado

se um conjunto de operações pré-definidas

sobre esses dados.

(5)

Introdução

É importante que uma LP forneça uma coleção

a propriedade coleção apropriada de tipos de

dados.

Utilidade:

o Detecção de erros

o Modularização

(6)

Tipos de dados primitivos

Tipos de dados primitivos são aqueles não

definidos em termos de outros tipos.

Praticamente todas as LP oferecem um

conjunto de tipos de dados primitivos.

Usados com construções de tipo para fornecer

os tipos estruturados (abstratos). Os mais

comuns são:

o Tipos numéricos (Inteiros, Pontos-flutuantes, decimais).

o Tipos booleanos

(7)

Tipos de dados primitivos

Tipos numéricos

Inteiro:

o O tipo de dados primitivo numérico mais comum é o inteiro.

o Quase sempre um reflexo do hardware.

• Assim, seu mapeamento é trivial

o Muitos computadores suportam diversos tamanhos de inteiros.

• Em Ada

• SHORT INTEGER, INTEGER, LONG INTEGER

• Em Java

(8)

Tipos de dados primitivos

(9)

Tipos de dados primitivos

Tipos numéricos

Ponto-flutuante:

o Modelam os números reais mas as representações são apenas aproximações.

o Valores de ponto flutuante são representados como frações expoentes (máquinas mais antigas). Máquinas atuais usam o formato padrão IEEE Floating Point Standard 754.

o A maioria das LP‟s de fins científicos suportam pelo menos dois tipos de ponto flutuante:

float: é o tamanho padrão.Ocupa 4 bytes de memória.

double: fornecido para situações nas quais partes

(10)

Tipos de dados primitivos

Tipos numéricos

Ponto-flutuante (ou

vírgula-flutuante):

(11)

Tipos de dados primitivos

Tipos numéricos

Ponto-flutuante (ou

vírgula-flutuante):

o Os valores que podem ser representados pelo tipo ponto flutuante é definido em termos de precisão e faixa.

Precisão: exatidão da parte fracionária de um valor

(medida pela quantidade de bits).

Faixa: combinação da faixa de frações e, o mais

(12)

Tipos de dados primitivos

IEEE Padrão de Ponto Flutuante754 (a)Precisão simples

(13)

Tipos de dados primitivos

Tipos numéricos

Decimais:

o São armazenados usando códigos binários para os dígitos decimais.

o Representação BCD (Binary-Coded Decimal)

o São necessários pelo menos 4 bits para codificar um dígito decimal.

(14)

Tipos de dados primitivos

Tipos numéricos

Decimais:

o Para aplicações comerciais (formato moeda)

• Essencial para COBOL.

• C# oferece um tipo de dado decimal.

o Vantagem

• Precisão

o Desvantagens

• Faixa de valores restrita.

(15)

Tipos de dados primitivos

Tipos booleanos:

o Mais simples de todos.

o Sua faixa de valores tem somente dois elementos.

• Dois elementos, um para “true” e um para “false”.

• Um inteiro poderia ser utilizado para representá-lo, porém dificulta a legibilidade.

o Uma exceção popular é o C, no qual expressões numéricas podem ser usadas como condicionais. C não apresenta o tipo booleano.

(16)

Tipos de dados primitivos

Tipos caractere:

o Armazenados como codificações numéricas.

o Tradicionalmente, a codificação mais utilizada era o ASCII de 8bits.

• Faixa de valores entre 0 e 127 para codificar 128 caracteres diferentes.

• Se tornou inadequado (>computadores; >necessidade de comunicação)

o Uma alternativa, codificação de 16 bits: Unicode(UCS-2).

• Inclui caracteres da maioria das linguagens naturais

• Usado em Java

• C# e JavaScript também suportam Unicode

(17)

Tipos String de caracteres

Um tipo cadeia de caracteres (String) é aquele

cujos valores consistem em sequências de

caracteres.

Os dados das cadeias normalmente são

(18)

Tipos String de caracteres

Ada

o STRING é um tipo formado por elementos CHARACTER.

o Referência a subcadeias, concatenação, operadores relacionais e atribuição são operações oferecidas para os tipos STRING.

• NAME1(2:4)

(19)

Tipos String de caracteres

C e C++

o Vetores char para armazenar cadeias de caracteres.

o Biblioteca padrão (string.h)

o As cadeias de caracteres são finalizadas com um caractere especial nulo (zero).

• Ex: char *str = “apples”;

(20)

Tipos String de caracteres

Opções de tamanho da cadeia

o String de Tamanho Estático: Tamanho especificado na declaração. “Stringscheias”, caso uma string mais curta for atribuída, os caracteres vazios são definidos como brancos (espaços).

• Linguagens: FORTRAN 90, COBOL, Pascal e Ada.

o String de Tamanho Dinâmico Limitado: Possuem tamanhos variáveis até um máximo declarado e fixo estabelecido pela definição da variável. Tais variáveis podem armazenar qualquer número de caracteres entre zero e o máximo.

(21)

Tipos String de caracteres

Opções de tamanho da cadeia

(22)

Tipos String de caracteres

Operações típicas:

o Atribuição e cópia.

o Comparação (=, >, etc.)

o Concatenação

(23)

Tipos ordinais definidos pelo usuário

Um tipo ordinal é aquele cuja faixa de valores

possíveis pode ser associada ao conjunto dos

números inteiros positivos. Podem ser:

o Tipos Enumeração

o Tipos Subfaixa

Exemplos de tipos primitivos ordinais em Java:

o integer

o char

(24)

Tipos ordinais definidos pelo usuário

Tipos Enumeração

o São aqueles em que todos os valores possíveis, os quais se tornam constantes simbólicas e são enumerados na definição.

• Exemplo Ada: type DIAS is (Seg, Ter, Qua, Qui, Sex, Sab, Dom)

• Exemplo C#: enumdias {seg, ter, qua, qui, sex, sab, dom};

(25)

Tipos ordinais definidos pelo usuário

Tipos Enumeração

o Linguagens C e Pascal incluem enumeração

o Ex:

• Enumcolors {vermelho, azul, verde, amarelo, preto}

• Colors MinhaCor = vermelho

Como o tipo colors armazena internamente 0, 1, 2.. Para as cores

Caso ocorre-se:

• MinhaCor++ ou MinhaCor+1

(26)

Tipos ordinais definidos pelo usuário

Tipos Enumeração

o

Vantagens

• Legibilidade:

• Valores nomeados são facilmente reconhecidos, enquanto os codificados não.

• Confiabilidade:

• Nenhuma operação aritmética é permitida.

(27)

Tipos ordinais definidos pelo usuário

Tipos Subfaixa

o

Um

tipo

subfaixa

(subrange)

é

uma

subsequência contígua de um ordinal.

• Por exemplo,10..14 é uma subfaixa do tipo inteiro → incluídos em Pascal e Ada.

o

enumeração

enumdias {seg, ter, qua, qui, sex, sab, dom};

o

subfaixa

(28)

Tipos ordinais definidos pelo

usuário

Tipos Subfaixa

o Todas as operações para o tipo pai também são definidas para o subtipo, exceto atribuição fora da faixa de valores.

o Ex:

DIA1:DIAS;

DIA2:DIASSEMANA; ...

DIA2:=DIA1;

(29)

Tipos matriz (array)

Uma matriz é um agregado homogêneo de

elementos de dados

o Cada elemento é identificado por sua posição em relação ao primeiro.

(30)

Tipos matriz (array)

Matrizes e índices

o Elementos são referenciados através do nome do agregado mais subscritos (ou índices).

o Se todos os índices em uma referência forem constantes, o seletor será estático; caso contrário, será dinâmico.

o Mapeamento finito

• nome_da_matriz(lista_de_valores_indice)

(31)

Tipos matriz (array)

Matrizes e índices

o Sintaxe de referência mais ou menos universal: ao nome da matriz segue-se a lista de índices entre parênteses ou colchetes.

o Problema com parênteses (também usados em listas de parâmetros)

o Exemplo FORTRAN:

• SOMA = SOMA + B(I)

(32)

Tipos matriz (array)

Matrizes e índices

o Dois tipos distintos são envolvidos em tipo de matriz: o do elemento e o do subscrito.

o As primeiras linguagens de programação não especificavam que as faixas de subscrito deveriam ser implicitamente verificadas.

o O C, o C++ e o FORTRAN não especificam a verificação de faixa de subscritos.

(33)

Tipos matriz (array)

Vinculações de subscrito

o Vinculação do tipo do subscrito: normalmente estática.

o Vinculação das faixas de valor de subscrito: às vezes dinâmica.

o Em algumas linguagens, o limite inferior da faixa de subscrito é implícito.

• No C, no C++ e no Java, o limite inferior é fixado em zero (0).

(34)

Tipos matriz (array)

Inicialização de matrizes

o No FORTRAN 77, todo o armazenamento de dados é alocado estaticamente.

o Assim, é permitida a inicialização no momento de execução usando-se a instrução DATA.

o Por exemplo:

(35)

Tipos matriz (array)

Inicialização de matrizes

o O ANSI C, o C++ e o Java também permitem inicialização de suas matrizes

o Exemplo:

int lista[] = {4, 5, 7, 83};

(36)

Tipos matriz (array)

Inicialização de matrizes

o As cadeias de caracteres no C e no C++ são implementadas como vetores de char.

o Exemplo:

• char nome[] = “freddie”;

o O vetor terá oito elementos

(37)

Tipos matriz (array)

Inicialização de matrizes

o Vetores de cadeias no C e no C++ também podem ser inicializados com literais de cadeira (vetor de ponteiros para caracteres).

o Exemplo:

• char *nomes[] = {“Bob”, “Jake”, “Darcie”};

o As literais são consideradas ponteiros para os caracteres.

(38)

Tipos matriz (array)

Inicialização de matrizes

o A Ada fornece dois mecanismos para inicializar matrizes na instrução de declaração

o Primeiro mecanismo (exemplo):

• LISTA: array (1..5) of INTEGER := (1, 3, 5, 7, 9);

o Segundo mecanismo (exemplo):

• GRUPO: array (1..5) of INTEGER := (1 => 3, 3 => 4, others => 0);

(39)

Tipos registro

Definições de registros

o Um registro é um agregado possivelmente heterogêneo de elementos de dados.

o Cada elemento possui um nome.

o Exemplo: informações sobre um estudante

• Nome

• Número do estudante

(40)

Tipos registro

Definições de registros

o Os elementos (ou campos) do registro são referenciados utilizando-se seus identificadores.

o Considere a forma COBOL de uma declaração de registro:

01 REGISTRO-EMPREGADO.

02 NOME-EMPREGADO.

05 PRIMEIRO PICTURE IS X(20). 05 MEIO PICTURE IS X(10).

(41)

Tipos registro

Definições de registros

o O Pascal e a Ada usam uma sintaxe diferente para os registros.

o Considere a seguinte declaração Ada:

REGISTRO_EMPREGADO: record

NOME_EMPREGADO:

record

PRIMEIRO: STRING (1..20); MEIO: STRING (1..10);

ULTIMO: STRING (1..20); end record;

(42)

Tipos registro

Referências a campos do registro

o As referências aos campos individuais são sintaticamente especificadas por diversos métodos diferentes.

o As referências a campos do COBOL têm a forma:

• Nome_do_campo OF nome_do_registro_1 OF ... OF nome_do_registro_n

• MEIO OF NOME-EMPREGADO OF

(43)

Tipos registro

Referências a campos do registro

o A referência ao campo MEIO da Ada tem a forma a seguir (notação de pontos)

• REGISTRO_EMPREGADO.NOME_EMPREGADO.M

(44)

Tipos ponteiro

Definição

o Um tipo ponteiro é aquele em que as variáveis têm uma faixa de valores que consiste em endereços de memória e um valor especial, o nil.

o Os ponteiros, ao contrário das matrizes e dos registros, não são tipos estruturados (* no C e no C++, access na Ada e ^ no Pascal).

(45)

Tipos ponteiro

Operações com ponteiros

o Atribuição

(46)

Tipos ponteiro

Ponteiros em C e C++

o Operação de desreferenciamento (*)

o Endereço de uma variável (&)

o Exemplo:

int *ptr;

int cont, init; ...

(47)

Tipos ponteiro

Ponteiros em C e C++

o Ponteiros podem receber o valor de endereço de qualquer objeto do tipo de domínio correto e a constante zero, usada para nil.

o A aritmética de ponteiros também é possível, embora restrita.

(48)

Tipos ponteiro

Ponteiros em C e C++

o Os nomes de vetores sem subscritos sempre se referem ao endereço do primeiro elemento.

o Exemplo:

int list[10]; int *ptr;

(49)

Tipos ponteiro

Ponteiros em C e C++

o Podemos concluir que:

o *(ptr + 1) equivale a list[1]

o *(ptr + indice) equivale a list[indice]

(50)

referência

• SEBESTA, R. W. Conceitos de Linguagens de

Referências

Documentos relacionados

 Não guarde dúvidas, pergunte a sua professora, ela está à disposição (mande mensagem quando precisar). Lembre-se de tirar um tempinho para ler. A pastinha com as

A seleção portuguesa feminina de andebol de sub-20 perdeu hoje 21-20 com a Hungria, na terceira jornada do Grupo C do Mundial da categoria, a decorrer em Koprivnica, na

Para tal, constou de pesquisa de natureza aplicada à 4 sujeitos, os quais foram selecionados devido às suas condições de paraplegia Os dados coletados foram analisados de

INDICADORES AMBIENTAIS ESSENCIAIS: UMA ANÁLISE DA SUA UTILIZAÇÃO NOS RELATÓRIOS DE SUSTENTABILIDADE DAS EMPRESAS DO SETOR DE ENERGIA ELÉTRICA SUL AMERICANO, ELABORADOS

A aplicação de parafina em raízes de mandioca tem sido eficiente para prolongar o seu período de conservação.. Este efeito é atribuído à diminuição da permeabilidade ao

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Analysis of relief and toponymy of the landscape based on the interpretation of the military topographic survey: Altimetry, Hypsometry, Hydrography, Slopes, Solar orientation,

servidores, software, equipamento de rede, etc, clientes da IaaS essencialmente alugam estes recursos como um serviço terceirizado completo...