resumodeaulaslp1-120404204313-phpapp02
27 pág.

resumodeaulaslp1-120404204313-phpapp02

Disciplina:Linguagens de Programação I252 materiais732 seguidores
Pré-visualização7 páginas
quase todo computador representa um lugar, convenciona um lugar, para que ele comece a

executar as instruções iniciais, um programa não tem acesso ao começo da memória.

Assim o 0 fica reservado para representar um valor especial. Dependendo da linguagem.

Em Pascal é o “nil”

Em C é o “NULL”

O ponteiro pode apontar um valor ou não.

 7

STRING

São a forma de representar texto. As strings são junções de caracteres.

Seqüência de caracteres, cadeia de caracteres, possuem a característica de representar caracteres uns ao lado dos

outros.

 Podem ser tipos primitivos (tipo que não pode ser acessado por partes) – independentes da forma de

representação.

Quando a string é primitiva vem acompanhada de algumas operações:

 Concatenar strings: junção de strings

 Encontrar uma substring – Pedro (outra string com valores ou caracteres da primeira string).

REPRESENTAÇÃO DE STRINGS

 Pascal

É feita em varias posições na memória, pegando caracteres consecutivos na memória.

2 0 i a b c d e f G

Tamanho Caracteres

Forma de representação que limita o tamanho, há sempre um tamanho máximo. E pode-se sempre estar

desperdiçando memória.

 Vantagem: a hora que quiser saber quantos caracteres há numa string, estará lá, na parte que cuida do

controle.

 Normalmente os compiladores usavam 2 bytes no controle.

 Desvantagem: não há como representar string com mais de 255 caracteres.

 C

Em C também há quantidades variáveis de strings, ao contrario de pascal, não há tamanho padrão. Em C deve-se

declarar o tamanho. Porém, um espaço razoável na memória será gasto.

0 i \0 B C e f G i O

Todos os espaços são usados para guardar informações, menos 1, que será um espaço especial, um sinal para indicar

o fim da seqüência.

 Vantagens: não há tamanhos máximos para as strings. Desde que haja posições suficientes.

 Desvantagens: necessário contar a quantidade de caracteres.

 8

 ANSI Strings

2 o i /0 a e g h e n

Tamanho Controle

Padronização: ao se representar strings, reserva-se uma parte para armazenar o tamanho e outra para indicar o

controle, o fim da string.

STRINGS DINÂMICAS

 Seus valores mudam ao decorrer da execução.

String x:= “alo”;

Na hora de mudar o valor, desmarca-se a região antiga, reserva-se uma nova região de memória e depois associa a

variável com a nova posição de memória. Desperdiça-se tempo porém, economiza-se memória.

INTERPOLAÇÃO DE STRINGS

 Inserir números ou variáveis no meio de Strings. Concatenação.

Writeln (‘o resultado é: ‘, result);

Printf(“O resultado é: %d’, result);

Insere a String a partir de outra coisa

CASAMENTO DE PADRÕES

 Expressão regular que define um formato, strings que seguem regras de formação.

 Substitui uma string por uma série de operações separadas.

 Um único comando verifica se a String segue tal expressão.

BIBLIOTECA DE PROGRAMAÇÃO

 Conjunto de partes de programa, pedaços, desenvolvidos previamente e que agora poderá ser usado no seu

próprio programa.

ENUMERADOS

 Aumentam a legibilidade

 Repetição de constantes simbólicas.

Parece com uma string, ou com um identificador, porém não é associado a tais coisas. É usado pelo compilador, de

modo que uma tabela será construída automaticamente e usada pelo programa. Temos legibilidade sem

complicação.

reais 0

copos 1

Utilizar 1 nome para

representar coisas distintas.

Rosa, cor, e rosa, flor.

 9

SUBFAIXAS

 Aumentam a legibilidade (tornam os limites explícitos)

 Podem ajudar na detecção de erros;

 Conjunto limitado de outro tipo, tipo que existe uma ordem entre os elementos.

Ex: tipos numéricos: [1,2,3,4,5,6] Alguns vem antes e outros depois.

 Facilidade: não é necessário ficar verificando constantemente se aqueles valores não estão em sequencia.

Em pascal há o índice de subfaixa e é indicado no início de uma declaração de vetor:

Array [1..10] of integer;

Tipo de dados: classificação dos dados nos programas. Os compiladores usam essa classificação para realizar

checagens.

Estrutura de Dados: não há como serem declaradas.

 10

VETORES

 Valores em posições consecutivas

É vetor:

X X x x x

Não é vetor:

X x x

São posições na memória, há coisas relacionadas antes e depois das posições.

x x x X ... ... 15

 Há dificuldade para mudar o tamanho.

Deve se procurar outro lugar na memória em que caibam outros elementos que se deseja

 Acesso em tempo constante.

O tempo que se demora em saber se o 1º ou qualquer outro elemento são iguais:

 Dada uma posição, faz-se uma conta e assim a conta se refere à posição de memória onde se localiza o

elemento desejado, o tempo da conta é a mesma, igual, constante para todos os elementos.

 Homogêneo

Os elementos devem ser do mesmo tipo. Índices organizados

Os ponteiros guardam as referencias, as “contas” para as obtenções do elementos que estão em determinada

posição. Demora um pouco mais, porém o tempo continua sendo constante para todos os elementos.

-Operador [] ou ()

Dependem da linguagem. A questão da declaração e uso dos operadores dependem da linguagem porque cada

linguagem possui um paradigma próprio.

A linguagem pode querer enfatizar coisas importantes para a mesma:

 - Tipo do índice

 -O valor mínimo do índice

 -A validação do índice

Algumas vezes há a checagem, depende da linguagem, ou pode ser característica do compilador, ou algumas vezes o

compilador não obedece à regra.

 11

ALOCAÇÃO ESTÁTICA OU DINÂMICA

Estática: pré-definida

Dinâmica: definida na hora da compilação. Primeiro guarda os valores e depois se define o tamanho do vetor.

VETORES ASSOCIATIVOS (HASHES)

Em Perl é hash, em Lua é table, em Python é lista.

 São estruturas chave-valor.

 Podem ser usados como vetores, listas ou registros.

 Implementados por arvores ou funções hash.

Nota [“João”]

 Tabela Hash

33 22 30 26

Traduzir para a forma que o hardware consiga trabalhar.

 Função hash: pega-se uma quantidade indeterminada de bytes para determinar, pega-se por partes, faz-se

um conta misturando as partes de forma que saia sempre um número de tamanho fixo.

Associa qualquer quantidade de informação numa quantidade fixa.

Nota [hash(“João”)]

A conta gera um índice referente ao nome.

ÁRVORE

Estrutura de dados em que há pedaços diferentes localizados em lugares diferentes na memória.

 Fácil inserir e remover elementos, porém ao acessar torna-se mais lenta.

REGISTRO

Informação heterogênea para representar muitas coisas. É um tipo de vetor associativo

 Associa diferentes tipos comuns. Aglomerado de informações assim como no vetor, só que diferente deste,

acumula tipos diferentes.

Aluno

Nome

Nº de matricula

Nota

Data TipoEixo = X|Y|Z|Eixo FloatFloatFloat

Em Sublinhado = são as chamadas “Tags”

 12

TIPO LISTA

É um aglomerado de valores assim como o vetor

São chamados de tipos fundamentais.

 A diferença para o vetor é que a lista é espalhada pela memória, seus itens são encontrados e/ou

organizados por ponteiros.

TIPO UNIDADE

 Tipo que só pode representar um valor.

Com 1 bit só se representa 2 valores, 0 ou 1.

A unidade pode ser representada com 0 bits, não se precisa de memória para guardar o tipo unidade.

Void > Tipo que não precisa de armazenamento, é tratado de maneira especial pelo compilador.

 Os compiladores também definem tipos.

 Há bibliotecas que já são importadas pelo compilador.

 O tipo pode estar na linguagem, no compilador, na biblioteca ou em alguma parte do programa.

 13

Vinculações

 Nome -> (escopo)

 Tipo

 Armazenamento (endereço) -> “Tempo de vida”, que a variável consegue guardar o valor.

 Valor

Costuma-se pensar na variável