Buscar

linguagem de programacao e estrutura de dados 100 video 11 ate 20

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 56 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 56 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 56 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Aula 11 - Diferença básica entre lista simplesmente encadeada da 
lista duplamente encadeada.
Mestranda em Metodologias
para o Ensino de Linguagens e
suas Tecnologias
Nodo = register of (INFO : string;
PROX : pointer;);
Ref
Luis
Claudio
Paulo
João
Rogério
José 
Solução para eliminar essa limitação:
incorporar ao nodo um segundo apontador que 
identificará qual o nodo antecessor
Nodo = register of (INFO : string; PROX : pointer;);
Nodo = register of 
(INFO : string;
ANT : pointer;
PROX : pointer;);
Operação de inserção à direita: 
FelipeY
Amanda
Ref
Paula Fernando
Ref
Amanda Paula Felipe Fernando
aloc P;
P.INFO := Y;
se REF= 
então REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.PROX := REF.PROX;
P.ANT := REF; 
REF.PROX := P;
se P.PROX # 
então P.PROX.ANT := P;
fim se;
fim se;
Amanda Paula Fernando
Ref
aloc P;
P.INFO := Y;
se REF= 
então REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.PROX := REF.PROX;
P.ANT := REF; 
REF.PROX := P;
se P.PROX # 
então P.PROX.ANT := P;
fim se;
fim se;
Amanda Paula Fernando
Ref
P
aloc P;
P.INFO := Y;
se REF= 
então REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.PROX := REF.PROX;
P.ANT := REF; 
REF.PROX := P;
se P.PROX # 
então P.PROX.ANT := P;
fim se;
fim se;
Amanda Paula Fernando
Ref
P
Felipe
aloc P;
P.INFO := Y;
se REF= 
então REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.PROX := REF.PROX;
P.ANT := REF; 
REF.PROX := P;
se P.PROX # 
então P.PROX.ANT := P;
fim se;
fim se;
Amanda Paula Fernando
Ref
P
Felipe
aloc P;
P.INFO := Y;
se REF= 
então REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.PROX := REF.PROX;
P.ANT := REF; 
REF.PROX := P;
se P.PROX # 
então P.PROX.ANT := P;
fim se;
fim se;
Amanda Paula Fernando
Ref
P
Felipe
aloc P;
P.INFO := Y;
se REF= 
então REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.PROX := REF.PROX;
P.ANT := REF; 
REF.PROX := P;
se P.PROX # 
então P.PROX.ANT := P;
fim se;
fim se;
Amanda Paula Fernando
Ref
P
Felipe
aloc P;
P.INFO := Y;
se REF= 
então REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.PROX := REF.PROX;
P.ANT := REF; 
REF.PROX := P;
se P.PROX # 
então P.PROX.ANT := P;
fim se;
fim se;
Amanda Paula Fernando
Ref
P
Felipe
Aula 12 – Inclusão à direita
Mestranda em Metodologias
para o Ensino de Linguagens e
suas Tecnologias
aloc P;
P.INFO := Y;
se REF= 
então REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.PROX := REF.PROX;
P.ANT := REF; 
REF.PROX := P;
se P.PROX # 
então P.PROX.ANT := P;
fim se;
fim se;
Amanda Paula
Ref
aloc P;
P.INFO := Y;
se REF= 
então REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.PROX := REF.PROX;
P.ANT := REF; 
REF.PROX := P;
se P.PROX # 
então P.PROX.ANT := P;
fim se;
fim se;
Amanda Paula
Ref
P
aloc P;
P.INFO := Y;
se REF= 
então REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.PROX := REF.PROX;
P.ANT := REF; 
REF.PROX := P;
se P.PROX # 
então P.PROX.ANT := P;
fim se;
fim se;
Amanda Paula
Ref
P
Felipe
aloc P;
P.INFO := Y;
se REF= 
então REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.PROX := REF.PROX;
P.ANT := REF; 
REF.PROX := P;
se P.PROX # 
então P.PROX.ANT := P;
fim se;
fim se;
Amanda Paula
Ref
P
Felipe
aloc P;
P.INFO := Y;
se REF= 
então REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.PROX := REF.PROX;
P.ANT := REF; 
REF.PROX := P;
se P.PROX # 
então P.PROX.ANT := P;
fim se;
fim se;
Amanda Paula
Ref
P
Felipe
aloc P;
P.INFO := Y;
se REF= 
então REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.PROX := REF.PROX;
P.ANT := REF; 
REF.PROX := P;
se P.PROX # 
então P.PROX.ANT := P;
fim se;
fim se;
Amanda Paula
Ref
P
Felipe
Inserção à direita: 
aloc P;
P.INFO := Y;
se REF=  então
REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.PROX := REF.PROX;
P.ANT := REF; 
REF.PROX := P;
se P.PROX # 
então P.PROX.ANT := P;
fim se;
fim se;
aloc P;
P.INFO := Y;
se REF=  então REF:= P;
P.ANT := ;
P.PROX := ;
senão
P.ANT := REF.ANT;
P.PROX := REF; 
REF.ANT := P;
se P.ANT # 
então
P.ANT.PROX := P;
fim se;
fim se;
Inserção à equerda: 
Aula 13 – Exclusão à direita
Mestranda em Metodologias
para o Ensino de Linguagens e
suas Tecnologias
Operação de exclusão à direita: 
Ref
PaulaYRef
Amanda Paula Fernando
Amanda Fernando
Ref
Amanda Paula Fernando
Y Paula
P
se (REF= ) ou (REF.PROX= ) 
então UNDERFLOW ;
senão P := REF.PROX;
Y := P.INFO;
REF.PROX := P.PROX;
se REF.PROX # 
então REF.PROX.ANT := REF;
fim se;
lib P;
fim se;
Operação de exclusão à direita: 
Yd  LISTA
Yd  LISTA
Ref
Amanda Fernando
Y Fernando
P
Operação de exclusão à direita: 
se (REF= ) ou (REF.PROX= ) 
então UNDERFLOW ;
senão P := REF.PROX;
Y := P.INFO;
REF.PROX := P.PROX;
se REF.PROX # 
então REF.PROX.ANT := REF;
fim se;
lib P;
fim se;
Aula 14 – Ponteiros em C#
Especialista em Engenharia de Software com UML
Variáveis : endereçam uma posição de memória 
que contem um determinado valor dependendo do 
seu tipo. Ex: (char, int, float, double, string...)
Ponteiros: são variáveis cujo conteúdo é um 
endereço de memória. 
Assim, um ponteiro endereça uma posição na
memória ou o endereço de memória;
Neste endereço de memória pode-se chegar
definitivamente ao valor ou ao seu conteúdo;
Para declararmos um ponteiro, basta utilizar
o operador *(asterisco) antes do nome da
variável.
Exemplo: int *p;
Ponteiros são tipados, ou seja, devem ser 
classificados em um tipo e somente podem
apontar para variáveis deste mesmo tipo.
Para trabalharmos com ponteiros a linguagem
C# disponibiliza os seguintes operadores:
& - Fornece o endereço de memória onde está
armazenado uma variável. Lê-se “o endereço
de”.
* - Valor armazenado na variável referenciada
por um ponteiro. Lê-se “o valor apontado por”.
Ponteiros: são variáveis cujo conteúdo é um 
endereço de memória. 
Assim, um ponteiro endereça uma posição de 
memória ou endereço de memória;
Neste endereço de memória pode-se chegar
definitivamente ao valor ou ao seu conteúdo;
Aula 15 – Ponteiros em C# - Exemplo 1
Especialista em Engenharia de Software com UML
void macedo ()
{
int num,valor;
int *p;
num=55;
p=# /* Pega o endereço de memória de num */
valor=*p; /* Valor é igualado a num de uma maneira indireta */
C.WL (valor);
C.WL ("Endereço para onde o ponteiro aponta: " + p);
C.WL ("Valor da variável apontada: " + *p);
}
Aula 16 – Ponteiros em C# - Exemplo 1 - Continuação
Especialista em Engenharia de Software com UML
void macedo ()
{
int num,valor;
int *p;
num=55;
p=# /* Pega o endereço de memória de num */
valor=*p; /* Valor é igualado a num de uma maneira indireta */
C.WL (valor);
C.WL ("Endereço para onde o ponteiro aponta: " + p);
C.WL ("Valor da variável apontada: " + *p);
}
Aula 17 – Ponteiros em C# - Exemplo 2
Especialista em Engenharia de Software com UML
Igualando ponteiros:
int *p1, *p2;
p1=p2;
Repare que estamos fazendo com que p1 apontepara 
o mesmo lugar que p2.
A variável apontada por p1 terá o mesmo conteúdo 
da variável apontada por p2
*p1=*p2;
void macedo ()
{
int num,*p1, *p2;
num=55;
p1=# /* Pega o endereco de num */
p2=p1; /*p2 passa a apontar para o mesmo endereço apontado por p1 */
C.WL("Conteúdo de p1: " + p1);
C.WL("Valor apontado por p1: " + *p1);
C.WL("Conteúdo de p2: " + p2);
C.WL("Valor apontado por p2: " + *p2);
}
Aula 18 – Ponteiros em C# - Exemplo 2 - Continuação
Especialista em Engenharia de Software com UML
void macedo ()
{
int num,*p1, *p2;
num=55;
p1=# /* Pega o endereco de num */
p2=p1; /*p2 passa a apontar para o mesmo endereço apontado por p1 */
C.WL("Conteúdo de p1: " + p1);
C.WL("Valor apontado por p1: " + *p1);
C.WL("Conteúdo de p2: " + p2);
C.WL("Valor apontado por p2: " + *p2);
}
Aula 19 – Ponteiros em C# - Exemplo 3
Especialista em Engenharia de Software com UML
Incremento/Decremento:
Apontar para o próximo valor do mesmo tipo para o 
qual o ponteiro aponta:
long *aPtr, a=5;
aPtr=&a;
aPtr++;
Qual será o valor endereçado por aPtr++ ??
Se aPtr é long, como o long ocupa 4 
bytes, aPtr irá apontar para o endereço 
0x00000104;
Este é o principal motivo que nos obriga 
a definir um tipo para um ponteiro!!!
void macedo ()
{
int num;
int *p;
num=55;
p=#
C.WL("Conteúdo de p: " + p );
C.WL("Valor apontado por p: " + *p );
C.WL("Conteúdo de p incrementado: " + (++p));
C.WL("Val. apontado por p incrementado:"+*p);
}
Aula 20 – Ponteiros em C# - Exemplo 3 - Continuação
Especialista em Engenharia de Software com UML
void macedo ()
{
int num;
int *p;
num=55;
p=#
C.WL("Conteúdo de p: " + p );
C.WL("Valor apontado por p: " + *p );
C.WL("Conteúdo de p incrementado: " + (++p));
C.WL("Val. apontado por p incrementado:"+*p);
}

Outros materiais