aula 03 15 03 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Aula 03 – 15/03 PowerPoint Presentation
Download Presentation
Aula 03 – 15/03

Loading in 2 Seconds...

play fullscreen
1 / 29

Aula 03 – 15/03 - PowerPoint PPT Presentation


  • 91 Views
  • Uploaded on

Aula 03 – 15/03. Vetores Bidimensionais – Debug - Ponteiros – Listas Encadeadas Simples. Vetores Bidimensionais - Matrizes. Parecido com estrutura de vetores porem mais elaborada Estrutura que consiste de linhas e colunas que unidas damos o nome de células Semelhante a tabelas

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

Aula 03 – 15/03


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
aula 03 15 03

Aula 03 – 15/03

Vetores Bidimensionais – Debug - Ponteiros – Listas Encadeadas Simples

vetores bidimensionais matrizes
Vetores Bidimensionais - Matrizes
  • Parecido com estrutura de vetores porem mais elaborada
  • Estrutura que consiste de linhas e colunas que unidas damos o nome de células
  • Semelhante a tabelas
  • Primeiro índice representa a linha e o segundo a coluna.
declara es em delphi pascal
Declarações em Delphi/Pascal

Matriz estática

MatrizEstatica: array[0..1, 0..3] ofstring;

MatrizEstatica: array [0..1] ofarray[0..3] ofstring;

Matriz dinâmica

MatrizDinamica: arrayofarrayofstring;

SetLength( MatrizDinamica, 2, 3 ); // 2 linhas 3 colunas

slide5

Acesso aos valores da matriz

Matriz[1][4] // Acesso a linha 1 coluna 4

Matriz[2] // Acesso a todos os elementos linha 2

Percorrer os elementos de uma matriz

for Linha := Low(Matriz) toHigh(Matriz) do

begin

for Coluna := Low(Matriz[Linha]) toHigh(Matriz[Linha]) do

begin

ShowMessage( Matriz[Linha, Coluna] );

end;

end;

aplica o de matrizes
Aplicação de Matrizes
  • Manipulação de imagens – informação de cores de pixel
  • Rotinas de criptografia – cálculos
  • Sistemas de geolocalização – cálculo de coordenas
  • Desenvolvimento de jogos – lógica
  • Estrutura de tabelas em banco de dados - linhas(registros) colunas (campos)
listas encadeadas
Listas encadeadas

Listas encadeadas simples – Listas duplamente encadeadas – Listas Circulares

ponteiros
Ponteiros
  • Memória do computador e um grande vetor de bytes
  • Cada byte é uma unidade de memória conhecida como célula
  • Exemplo de uso de identificadores.
slide9

Ponteiros ou apontadores são tipos de dados utilizados para acessar endereços de memória.

  • Os ponteiros são a base para a alocação dinâmica de memória
  • O valor do ponteiro corresponde a uma posição na memória onde o dado(valor) esta armazenado.
  • Variável (qualquer que seja) e um conjunto de células de memória.
  • A variável é composta por nome, tipo, conteúdo e endereço
  • Cada variável ocupa uma quantidade de n de células

Integer = 4; Boolean = 1;

slide10

Utilizamos o ^ (circunflexo) antes do tipo de dado para declarar uma variável do tipo ponteiro

Ptr: ^Integer;

  • Utilizamos o ^ (circunflexo) depois da variável para acessar o valor do ponteiro.

Ptr^:=28;

ShowMessage( IntToStr( Ptr^));

slide11

Utilizamos o @ para obter o ponteiro de uma variável

Ptr: ^Integer;

Int: Inteiro;

Ptr:= @Int;

  • Ponteiros tipados que são muito comuns.

PInt: ^Integer;

PStr: ^string;

PPes: ^TPessoa;

slide12

Para alocar memória para um ponteiro utilizamos a função New(). Essa função aloca um ponteiro com base no tamanho do tipo de dados

TPessoa=record;

Nome: string;

end;

Pessoa:= ^TPessoa;

New(Pessoa);

Pessoa^.Nome:= ‘Fulano’;

ShowMessage(Pessoa^.Nome);

  • Para liberar a memoria alocada com a função New() utilizamos a função Dispose()

Dispose(Pessoa);

slide13

var

Numero: Integer;

Flag: Char;

Ptr: ^Integer;

uso pratico de ponteiros
Uso pratico de ponteiros
  • Usado com a API do Windows onde vários métodos tem como parâmetros ponteiros de memória.
  • No desenvolvimento de componentes para o Delphi.
  • Integrações com DLLs.
  • Utilizado por componentes do Delphi(TList, TCLientDataSet. etc).
  • No Delphi as referências a classes são ponteiros.
  • Recursos de RTTI.
pr tica download do projeto displaypointers
Práticadownload do projeto DisplayPointers
  • Declarar uma variável string e acessar o seu valor através de ponteiros
  • Uso Debug
  • Declara uma variável do tipo record e acessar através de ponteiros
listas encadeadas1
Listas encadeadas
  • É uma lista com agrupamento de itens conhecidos como nós(blocos de memória)
  • Os nós possuem um tipo de variável especial chamada ponteiro.
  • O ponteiros apontam para o próximo item do agrupamento
  • Os nós possuem dois campos: O Dado(valor) e o Ponteiro(posição de memória do próximo nó)
slide17

A listas deve ser identificada pelo primeiro nó(cabeça) e a partir desse nó os outros itens podem ser visitados até o final da lista

  • Os vetores sequencias eram acessados pelo índice pois estavam alocados sequencialmente na memória.
  • As listas encadeadas possuem seus itens em posições NÃO sequencias na memória o que justifica o uso de ponteiros.
  • Observe que os ponteiros intercalam cada nó com o seu vizinho de modo a criar uma lista em memória
  • O final da lista encadeada é identificada pelo valor nildo ponteiro.
estrutura de um n
Estrutura de um nó

PApontador= ^TItem;

TItem= record

Valor: string;

Proximo: PApontador;

end;

incluindo itens na lista
Incluindo itens na lista

PrimeiroNo: PApontador;

...

...

var

NoAuxiliar: PApontador;

begin

New( NoAuxiliar); // alocando espaço na memória

NoAuxiliar.Proximo:=PrimeiroNo;

NoAuxiliar.Valor:= InputBox('', 'Digite uma string', '');

PrimeiroNo:= NoAuxiliar;

end;

excluir item na lista parte 1
Excluir item na lista – Parte 1

var

NoAuxiliar, NoASerExcluido,NoAnterior: PApontador;

begin

if(PrimeiroNo.Proximo= nil) or(PrimeiroNo.Valor= ValorASerExcluido) then

begin

NoAuxiliar:= PrimeiroNo;

PrimeiroNo:= PrimeiroNo.Proximo;

Dispose( NoAuxiliar );

endelse

continua

excluir item na lista parte 2
Excluir item na lista – Parte 2

begin

NoAuxiliar:= PrimeiroNo;

while( NoAuxiliar.Proximo <> nil) do

begin

if( NoAuxiliar.Proximo.Valor = ValorASerExcluido) then

begin

NoAnterior:= NoAuxiliar; // pega o item anterio

NoASerExcluido := NoAuxiliar.Proximo

NoAnterior.Proximo:= NoASerExcluido.Proximo;

Exit();

end;

NoAuxiliar:= NoAuxiliar.Proximo;

percorrer itens na lista
Percorrer itens na lista

var

NoAuxiliar: PApontador;

begin

NoAuxiliar:= PrimeiroNo;

while( NoAuxiliar<> nil) do

begin

ShowMessage( NoAuxiliar.Valor );

NoAuxiliar:= NoAuxiliar.Proximo;

end;

end;

liberar n s alocados
Liberar nós alocados

var

NoAuxiliar: PApontador;

begin

NoAuxiliar:= PrimeiroNo;

while( NoAuxiliar <> nil) do

begin

Dispose( NoAuxiliar);

NoAuxiliar:= NoAuxiliar.Proximo;

end;

observa es
Observações
  • Para identificar o final de uma lista encadeada simples verificamos se o ponteiro tem o valor nil
  • Sempre quanto efetuarmos operações de inclusão ou exclusão de nós devemos nos certificar de que o ponteiro do nó esteja sendo preenchido corretamente
pr tica download do
Práticadownload do
  • Mostrar os exemplos implementados no programa DisplayPointers
exerc cios
Exercícios

Download : aula03 – exercícios