Ponteiros em Pascal. Variáveis ponteiros são aquelas que. Declaração em Pascal: var ptint: ^integer; {ponteiro para uma variável inteira } real} 1
|
|
- Ana Luísa Morais Carreiro
- 5 Há anos
- Visualizações:
Transcrição
1 Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal: var ptint: ^integer; {ponteiro para uma variável inteira } ptreal: ^real; {ponteiro para uma variável real} 1
2 Operador unário que retorna o endereço de uma variável program soma; var S,A,B:integer; PtS,PtA,PtB : ^integer; begin readln(a,b); PtA PtB PtS PtS^ := PtA^ + PtB^; writeln('resultado: ',PtS^); end. 2
3 Alocação de memória program soma; var S,A,B: integer; PtS,PtA,PtB: ^integer; begin A := 2; B := 3; PtA PtB PtS PtS^ := PtA^ + PtB^; Writeln('Resultado: ',PtS^); end. A PtA B PtB PtS S 3
4 Alocação de memória program soma; var S,A,B: integer; PtS,PtA,PtB: ^integer; begin A := 2; B := 3; PtA PtB PtS PtS^ := PtA^ + PtB^; Writeln('Resultado: ',PtS^); end. PtA A 2 B PtB PtS S 4
5 Alocação de memória program soma; var S,A,B: integer; PtS,PtA,PtB: ^integer; begin A := 2; B := 3; PtA PtB PtS PtS^ := PtA^ + PtB^; Writeln('Resultado: ',PtS^); end. PtA PtB A 2 B 3 PtS S 5
6 Alocação de memória program soma; var S,A,B: integer; PtS,PtA,PtB: ^integer; begin A := 2; B := 3; PtA PtB PtS PtS^ := PtA^ + PtB^; Writeln('Resultado: ',PtS^); end. PtA PtB A 2 B 3 PtS S 6
7 Alocação de memória program soma; var S,A,B: integer; PtS,PtA,PtB: ^integer; begin A := 2; B := 3; PtA PtB PtS PtS^ := PtA^ + PtB^; Writeln('Resultado: ',PtS^); end. PtA PtB A 2 B 3 PtS S 7
8 Alocação de memória program soma; var S,A,B: integer; PtS,PtA,PtB: ^integer; begin A := 2; B := 3; PtA PtB PtS PtS^ := PtA^ + PtB^; Writeln('Resultado: ',PtS^); end. PtA PtB A 2 B 3 PtS S 8
9 Alocação de memória program soma; var S,A,B: integer; PtS,PtA,PtB: ^integer; begin A := 2; B := 3; PtA PtB PtS PtS^ := PtA^ + PtB^; Writeln('Resultado: ',PtS^); end. PtA PtB A 2 B 3 PtS S 5 9
10 program soma; var S,A,B: integer; PtS,PtA,PtB: ^integer; begin A := 2; B := 3; PtA PtB PtS PtS^ := PtA^ + PtB^; Writeln('Resultado: ',PtS^); end. 5 Alocação de memória PtA PtB A 2 B 3 PtS S 5 10
11 procedure New( ) Cria dinamicamente (em tempo de execução) uma nova variável e faz uma variável ponteiro apontar para ela. type Str18 = string[18]; var P: ^Str18; begin New(P); P^ := 'Bom dia!'; Writeln (P^) Dispose(P); end. 11
12 Alocação de memória type Str18 = string[18]; var P: ^Str18; begin New(P); P^ := 'Bom dia!'; Writeln (P^) Dispose(P); end. P 12
13 Alocação de memória type Str18 = string[18]; var P: ^Str18; begin New(P); P^ := 'Bom dia!'; Writeln (P^) Dispose(P); end. P 13
14 Alocação de memória type Str18 = string[18]; var P: ^Str18; begin New(P); P^ := 'Bom dia!'; Writeln (P^) Dispose(P); end. P Bom Dia! 14
15 Bom Dia! Alocação de memória type Str18 = string[18]; var P: ^Str18; begin New(P); P^ := 'Bom dia!'; Writeln (P^) Dispose(P); end. P Bom Dia! 15
16 Alocação de memória type Str18 = string[18]; var P: ^Str18; begin New(P); P^ := 'Bom dia!'; Writeln (P^) Dispose(P); end. P OBS: a procedure Dispose libera uma variável criada dinamicamente, para que o SO possa reutilizar o espaço de memória correspondente. 16
17 Um ponteiro recebendo o valor de um outro Um ponteiro recebe o valor de um outro através do comando de atribuição Ex: q:= p; Quando isso acontece, ele passa a apontar para o mesmo objeto que o outro aponta 17
18 Alocação de memória var p,q,r: ^integer; begin new(p); p^ := 5; new(q); q:= p; r := p; {ou q} writeln(p^);{ou q^ ou r^ } dispose(q);{ou p ou r } : p q r 18
19 Alocação de memória var p,q,r: ^integer; begin new(p); p^ := 5; new(q); q:= p; r := p; {ou q} writeln(p^);{ou q^ ou r^ } dispose(q);{ou p ou r } : p q r 19
20 Alocação de memória var p,q,r: ^integer; begin new(p); p^ := 5; new(q); q:= p; r := p; {ou q} writeln(p^);{ou q^ ou r^ } dispose(q);{ou p ou r } : p q r 5 20
21 Alocação de memória var p,q,r: ^integer; begin new(p); p^ := 5; new(q); q:= p; r := p; {ou q} writeln(p^);{ou q^ ou r^ } dispose(q);{ou p ou r } : p q r 5 21
22 Alocação de memória var p,q,r: ^integer; begin new(p); p^ := 5; new(q); q:= p; r := p; {ou q} writeln(p^);{ou q^ ou r^ } dispose(q);{ou p ou r } : p q r 5 22
23 Alocação de memória var p,q,r: ^integer; begin new(p); p^ := 5; new(q); q:= p; r := p; {ou q} writeln(p^);{ou q^ ou r^ } dispose(q);{ou p ou r } : p q r 5 23
24 var p,q,r: ^integer; begin new(p); p^ := 5; new(q); q:= p; r := p; {ou q} writeln(p^);{ou q^ ou r^ } dispose(q);{ou p ou r } : 5 Alocação de memória p q r 5 24
25 Alocação de memória var p,q,r: ^integer; begin new(p); p^ := 5; new(q); q:= p; r := p; {ou q} writeln(p^);{ou q^ ou r^ } dispose(q);{ou p ou r } : p q r 25
26 Alocação de memória ATENÇÃO: observe que a partir de q:=p;, perdeu-se o acesso à variável criada com var new(q) p,q,r: Portanto, ^integer; o manuseio de ponteiros begin exige cuidado! new(p); p^ := 5; new(q); q:= p; r := p; {ou q} writeln(p^);{ou q^ ou r^ } dispose(q);{ou p ou r } : p q r 26
27 Listas lineares Em várias situações em programação temos que lidar com listas de elementos cujo tamanho exato é desconhecido. Estratégias: Empregar um agregado homogêneo (array) superdimensionado N-1 N Empregar seqüências de células (nós) que contêm dois elementos: um valor e um ponteiro para o próximo nó. p / 27
28 Quando adotar uma ou outra solução? Agregado homogêneo: quando pudermos determinar com segurança o tamanho máximo. Listas encadeada: - quando for difícil estimar o tamanho máximo com segurança; e/ou - quando se desejar maior agilidade nas inclusões ou exclusões de novos elementos. 28
29 Lista: uma estrutura recursiva: Ex: definição de uma lista de inteiros: Lista vazia; Um inteiro seguido de uma lista de inteiros. Lista vazia / p Um inteiro seguido de uma lista de inteiros p / 29
30 Lista: uma estrutura recursiva: Ex: definição de uma lista de inteiros: O ponteiro contido no Lista vazia; primeiro nó aponta para a lista formada Um inteiro seguido pelos demais uma nóslista de inteiros. Lista vazia / p Um inteiro seguido de uma lista de inteiros p / 30
31 Lista: uma estrutura recursiva: Ex: definição de uma lista de inteiros: OBS: para se ter acesso aos elementos da Lista lista vazia; é necessário que haja sempre uma variável apontando para a cabeça da Um inteiro seguido lista de uma lista de inteiros. Lista vazia / p Um inteiro seguido de uma lista de inteiros p / 31
32 Lista: uma estrutura recursiva: Ex: definição de uma lista de inteiros: a partir de cada nó, pode-se ter Lista vazia; acesso ao seguinte. Um Assim, inteiro pode-se seguido percorrer de uma a lista toda. de inteiros. Lista vazia / p Um inteiro seguido de uma lista de inteiros p / 32
33 Lista: uma estrutura recursiva: Ex: definição de uma lista de inteiros: Quando a lista estiver vazia o ponteiro que Lista vazia; deveria apontar o primeiro elemento, Um inteiro guarda seguido o valor de uma nil ( lista / ). de inteiros. Lista vazia / p Um inteiro seguido de uma lista de inteiros p / 33
34 Definição (recursiva) de um nó: type tdado = integer; { ou real, char, etc.} tptno = ^tno; tno = record Dado:tDado; Prox :tptno; end; var p,q: tptno; 34
35 Definição (recursiva) de um nó: type tdado = integer; { ou real, char, etc.} tptno = ^tno; tno = record Dado:tDado; Prox :tptno; end; var p,q: tptno; 35
36 Semanticamente, uma definição semelhante seria type tdado = integer; { ou real, char, etc.} tno = record Dado:tDado; Prox :^tno; end; var p,q: tptno; Contudo, as regras de Pascal exigem a definição na forma anteriormente exposta. 36
37 Definição OBS: no início (recursiva) da execução de um do nó: programa só há ponteiros (p,q) para nós. Estes poderão, dinamicamente, ser empregados tdado = integer; { ou real, char, etc.} para se construir uma lista. type tptno = ^tno; tno = record Dado:tDado; Prox :tptno; end; var p,q: tptno; 37
38 Exemplo de uso: criação de uma lista com dois elementos: var p,q: tptno; begin new(p); p^.dado := 7; new(q); q^.dado := 3; p^.prox := q; q^.prox := nil; : p^.dado acesso ao acesso ao objeto apontado campo por p específico 38
39 Exemplo de uso: criação de uma lista com dois elementos: var p,q: tptno; begin new(p); p^.dado := 7; new(q); q^.dado := 3; p^.prox := q; q^.prox := nil; : p^.prox acesso ao acesso ao objeto apontado campo por p específico 39
40 Alocação de memória var p,q: tptno; begin new(p); p^.dado := 7; new(q); q^.dado := 3; p^.prox := q; q^.prox := nil; : p q 40
41 Alocação de memória var p,q: tptno; begin new(p); p^.dado := 7; new(q); q^.dado := 3; p^.prox := q; q^.prox := nil; : p q 41
42 Alocação de memória var p,q: tptno; begin new(p); p^.dado := 7; new(q); q^.dado := 3; p^.prox := q; q^.prox := nil; : p 7 q 42
43 Alocação de memória var p,q: tptno; begin new(p); p^.dado := 7; new(q); q^.dado := 3; p^.prox := q; q^.prox := nil; : p 7 q 43
44 Alocação de memória var p,q: tptno; begin new(p); p^.dado := 7; new(q); q^.dado := 3; p^.prox := q; q^.prox := nil; : p 7 q 3 44
45 Alocação de memória var p,q: tptno; begin new(p); p^.dado := 7; new(q); q^.dado := 3; p^.prox := q; q^.prox := nil; : p 7 q 3 45
46 Alocação de memória var p,q: tptno; begin new(p); p^.dado := 7; new(q); q^.dado := 3; p^.prox := q; q^.prox := nil; : p 7 q 3 / 46
47 Exemplo 2: dada a lista abaixo, inserir um novo nó entre os dois existentes e armazenar nele o valor 2. : new(q); q^.dado := 2; q^.prox := p^.prox; p^.prox := q; q := nil; : p 7 q 3 / 47
48 Alocação de memória : new(q); q^.dado := 2; q^.prox := p^.prox; p^.prox := q; q := nil; : p q 7 3 / 48
49 Alocação de memória : new(q); q^.dado := 2; q^.prox := p^.prox; p^.prox := q; q := nil; : p q 7 3 / 49
50 Alocação de memória : new(q); q^.dado := 2; q^.prox := p^.prox; p^.prox := q; q := nil; : p 2 q 7 3 / 50
51 Alocação de memória : new(q); q^.dado := 2; q^.prox := p^.prox; p^.prox := q; q := nil; : p 2 q 7 3 / 51
52 Alocação de memória : new(q); q^.dado := 2; q^.prox := p^.prox; p^.prox := q; q := nil; : p 2 q 7 3 / 52
53 Alocação de memória : new(q); q^.dado := 2; q^.prox := p^.prox; p^.prox := q; q := nil; : p 2 q / 7 3 / 53
54 Alocação de memória OBS: por conveniência, representamos : esquematicamente os nós lado a lado. new(q); Entretanto, as suas localização no heap q^.dado podem := 2; ser bastante dispersas q^.prox := p^.prox; p^.prox := q; q := nil; : p q / / 54
55 Representação esquemática ideal p q p q / 3 / 7 2 h e a p Uma possível disposição. física. 55
56 Dúvidas freqüentes: 1) sempre que precisar de um ponteiro, preciso criá-lo, com new? 56
57 Dúvidas freqüentes: 1) sempre que precisar de um ponteiro, preciso criá-lo, com new? Não. >> o simples fato de se declarar o ponteiro (variável global, local ou parâmetro) faz com que o sistema aloque memória para ele. 57
58 Dúvidas freqüentes: 1) sempre que precisar de um ponteiro, preciso criá-lo, com new? Não. >> o simples fato de se declarar o ponteiro (variável global, local ou parâmetro) faz com que o sistema aloque memória para ele. >> new() deve ser usado para criar um objeto (sem identificação) para o qual o ponteiro usado como argumento apontará. 58
59 Dúvidas freqüentes: 1) sempre que precisar de um ponteiro, preciso criá-lo, com new? Não. >> o simples fato de se declarar o ponteiro (variável global, local ou parâmetro) faz com que o sistema aloque memória para ele. >> new() deve ser usado para criar um objeto (sem identificação) para o qual o ponteiro usado como argumento apontará. >> o tipo do objeto criado dependerá do tipo de ponteiro. 59
60 Dúvidas freqüentes: Caso seja executado o código abaixo, p. ex new(q); q := p; {apontar para o primeiro elemento da lista} p q 7 3 / 60
61 Dúvidas freqüentes: Caso seja executado o código abaixo, p. ex new(q); q := p; {apontar para o primeiro elemento da lista} a) criou-se um elemento, fazendo-se q apontar para ele. p q 7 3 / 61
62 Dúvidas freqüentes: Caso seja executado o código abaixo, p. ex new(q); q := p; {apontar para o primeiro elemento da lista} a) criou-se um elemento, fazendo-se q apontar para ele. b) perdeu-se esse elemento p q 7 3 / 62
63 Dúvidas freqüentes: 2) ao encerrar um módulo, devo desalocar os ponteiros, empregando dispose? 63
64 Dúvidas freqüentes: 2) ao encerrar um módulo, devo desalocar os ponteiros, empregando dispose? Não. >> no encerramento do módulo, todas as variáveis locais e parâmetros (inclusive ponteiros) são desalocados automaticamente. 64
65 Dúvidas freqüentes: 2) ao encerrar um módulo, devo desalocar os ponteiros, empregando dispose? Não. >> no encerramento do módulo, todas as variáveis locais e parâmetros (inclusive ponteiros) são desalocados automaticamente. >> ao se utilizar dispose(r), é o objeto referenciado por r que será excluído. Não o ponteiro em si. 65
66 Dúvidas freqüentes: 3) quando se cria um objeto (comando new) empregando-se um ponteiro, só se pode empregar aquele ponteiro para desalocar aquele objeto? 66
67 Dúvidas freqüentes: 3) quando se cria um objeto (comando new) empregando-se um ponteiro, só se pode empregar aquele ponteiro para desalocar aquele objeto? Não. >> o nó não pertence ao ponteiro que foi empregado na sua criação. 67
68 Dúvidas freqüentes: 3) quando se cria um objeto (comando new) empregando-se um ponteiro, só se pode empregar aquele ponteiro para desalocar aquele objeto? Não. >> o nó não pertence ao ponteiro que foi empregado na sua criação. >> qualquer ponteiro que esteja apontando para certo objeto pode ser usado para a sua desalocação. 68
69 Dúvidas freqüentes: 4) ao empregar-se uma variável local (ponteiro) para alocar um objeto, esse objeto será também local, desaparecendo portanto após a execução daquele módulo? 69
70 Dúvidas freqüentes: 4) ao empregar-se uma variável local (ponteiro) para alocar um objeto, esse objeto será também local, desaparecendo portanto após a execução daquele módulo? Não. >> o objeto criado é alocado na área de memória denominada heap (área própria para alocação dinâmica). 70
71 Dúvidas freqüentes: 4) ao empregar-se uma variável local (ponteiro) para alocar um objeto, esse objeto será também local, desaparecendo portanto após a execução daquele módulo? Não. >> o objeto criado é alocado na área de memória denominada heap (área própria para alocação dinâmica). >> variáveis de heap não são nem globais nem locais. 71
72 Dúvidas freqüentes: Atente bem: Variáveis globais: seu tempo de vida é o intervalo de tempo de execução do programa. 72
73 Dúvidas freqüentes: Atente bem: Variáveis globais: seu tempo de vida é o intervalo de tempo de execução do programa. Variáveis locais: seu tempo de vida é o intervalo de execução do módulo onde foram declaradas. 73
74 Dúvidas freqüentes: Atente bem: Variáveis globais: seu tempo de vida é o intervalo de tempo de execução do programa. Variáveis locais: seu tempo de vida é o intervalo de execução do módulo onde foram declaradas. Variáveis de heap: seu tempo de vida é arbitrário, dependendo de uma criação (new) e da posterior desalocação. 74
75 Manuseio de listas encadeadas Para tratar de forma genérica todas as possíveis manipulações de uma lista encadeada, é definido um conjunto de rotinas. Exemplos: inserir/excluir um elemento no início inserir /excluir um elemento no final inserir /excluir um elemento na enésima posição calcular a soma dos elementos 75
76 Exemplo: inserir elemento V no final Duas situações a se considerar: Lista vazia Lista não vazia / p p / 76
77 Para lista vazia: Alocação de memória : p V 5 77
78 Para lista vazia: Alocação de memória V : 5? criar novo nó p 78
79 Para lista vazia: Alocação de memória : new(p); p V 5 79
80 Para lista vazia: Alocação de memória : new(p); p V 5 80
81 Para lista vazia: Alocação de memória V : 5 new(p);? guardar o valor de V p 81
82 Para lista vazia: Alocação de memória : new(p); p^.dado:=v; p V 5 82
83 Para lista vazia: Alocação de memória : new(p); p^.dado:=v; p V
84 Para lista vazia: Alocação de memória : new(p); p^.dado:=v;? caracterizar último nó p V
85 Para lista vazia: Alocação de memória : new(p); p^.dado:=v; p^.prox:=nil; p V
86 Para lista vazia: Alocação de memória : new(p); p^.dado:=v; p^.prox:=nil; p V 5 5 / 86
87 Para lista não vazia: p / 87
88 Para lista não vazia: p q / Condição facilitadora: fazer com que um ponteiro auxiliar aponte para o último nó 88
89 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; p q r V / 89
90 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; p q r V / 90
91 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; p q r V / 91
92 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; p q r V / 92
93 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; p q r V / 93
94 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; p q r V / 94
95 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox;? p q r V 5 criar novo nó / 95
96 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; new(r); p q r V / 96
97 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; new(r); p q r V / 97
98 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; new(r);? p q r V 5 guardar o valor de V / 98
99 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; new(r); r^.dado:=v; p q r V / 99
100 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; new(r); r^.dado:=v; p q r V / 5 100
101 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; new(r); r^.dado:=v;? p q V 5 r caracterizar último nó / 5 101
102 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; new(r); r^.dado:=v; r^prox:=nil; p q r V / 5 102
103 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; new(r); r^.dado:=v; r^.prox:=nil; p q r V / 5 / 103
104 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; new(r); r^.dado:=v; r^.prox:=nil;? p q r V 5 ligar nós / 5 / 104
105 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; new(r); r^.dado:=v; r^.prox:=nil; q^.prox:=r; p q r V / 5 / 105
106 Alocação de memória : q:= p; while q^.prox <> nil do q:=q^.prox; new(r); r^.dado:=v; r^.prox:=nil; q^.prox:=r; p q V 5 r / 106
107 Juntando as duas situações {lista vazia} new(p); p^.dado:=v; p^.prox:=nil; {lista não vazia} while q^.prox <> nil do q:=q^.prox; new(r); r^.dado:=v; r^.prox:=nil; q^.prox:=r; 107
108 Juntando as duas situações {lista vazia} new(p); p^.dado:=v; p^.prox:=nil; observe as semelhanças {lista não vazia} while q^.prox <> nil do q:=q^.prox; new(r); r^.dado:=v; r^.prox:=nil; q^.prox:=r; 108
109 Juntando as duas situações {lista vazia} new(p); p^.dado:=v; p^.prox:=nil; observe as semelhanças {lista não vazia} while q^.prox <> nil do q:=q^.prox; new(r); r^.dado:=v; r^.prox:=nil; q^.prox:=r; 109
110 Juntando as duas situações {lista vazia} new(p); p^.dado:=v; p^.prox:=nil; observe as semelhanças {lista não vazia} while q^.prox <> nil do q:=q^.prox; new(r); r^.dado:=v; r^.prox:=nil; q^.prox:=r; 110
111 Juntando as duas situações procedure InsereNo(var p: tptno; V : tdado); var q,r: tptno; begin end; Como existe a possibilidade de p mudar seu conteúdo, ele é passado por referência. 111
112 Juntando as duas situações procedure InsereNo(var p: tptno; V : tdado); var q,r: tptno; begin new(r); r^.dado:=v; r^.prox:=nil; if p = nil then p:= r else begin q:= p; while q^.prox <> nil do q:=q^.prox; q^.prox:=r; end; end; 112
113 Listas duplamente encadeadas Nas listas duplamente encadeadas, os nós são ligados, não só aos posteriores, mas também aos anteriores p / / 113
114 Listas duplamente encadeadas Nas listas duplamente encadeadas, os nós são ligados, não só aos posteriores, mas também aos anteriores Portanto, a estrutura do nó deve possuir 2 ponteiros p / / 114
115 Listas duplamente encadeadas Nas listas duplamente encadeadas, os nós são ligados, não só aos posteriores, mas também aos anteriores Portanto, a estrutura do nó deve possuir 2 ponteiros não há nó anterior / p / 115
116 Listas duplamente encadeadas Nas listas duplamente encadeadas, os nós são ligados, não só aos posteriores, mas também aos anteriores Portanto, a estrutura do nó deve possuir 2 ponteiros não há nó anterior / p não há nó posterior... / 116
117 Listas duplamente encadeadas Estrutura: tdado = integer; { ou real, char, etc.} tptno = ^tno; tno = record Esq: tptno Dado: tdado; Dir: tptno; end; var p,q: tptno; p / / 117
118 Listas duplamente encadeadas Operações: Partindo-se das operações com listas de encadeamento simples, basta fazer alguns ajustes. p é necessário considerar que há dois ponteiros / / 118
119 Considere a rotina de inserção no final para encadeamento simples: procedure InsereNoFinal(var p:tptno; V: tdado); var q,r: tptno; begin new(r); r^.dado:=v; r^.prox:=nil; if p = nil then p:= r else begin q:= p; while q^.prox <> nil do q:=q^.prox; q^.prox:=r; end; end; 119
120 ajustes necessários: procedure InsereNoFinal(var p:tptno; V: tdado); var q,r: tptno; begin new(r); r^.dado:=v; r^.dir:=nil; if p = nil then begin p:= r; r^.esq:= nil; end; else begin q:= p; while q^.dir <> nil do q:=q^.dir; q^.dir:=r; r^.esq := q; end; end; 120
121 Exercícios (encadeamento simples e duplo): Construir módulos que façam as seguintes operações: 1- Inserir no início da lista; 2- Excluir o primeiro elemento; 3- Excluir o último elemento; 4- Inserir na enésima posição; 5- Excluir o enésimo nó; 6- Fornecer o tamanho da lista 7- Fornecer a soma dos elementos da lista. 121
122 Orientações 1- Sempre pla neje antes de codi fi car. a) faça um esquema visual do problema! -> use lápis e borracha, pois os ponteiros são dinâmicos 122
123 Orientações 1- Sempre pla neje antes de codi fi car. a) faça um esquema visual do problema! -> use lápis e borracha, pois os ponteiros são dinâmicos b) atenção especial à list a de parâme tros : quais são os parâmetros necessários, seus tipos, mecanismo de passagem (valor ou referência); 123
124 Orientações c) procure identificar co ndiçõe s fa ci li tadoras para a solução de um problema. Por exemplo, para excluir o enésimo nó, será necessário um ponteiro auxiliar apontando para ele. p q / 124
125 Orientações c) procure identificar co ndiçõe s fa ci li tadoras para a solução de um problema. Por exemplo, para excluir o enésimo nó, mas isso será necessário um ponteiro auxiliar será apontando para ele. suficiente?? p q / 125
126 Orientações Não. No processo de exclusão, p. ex., do nó que guarda o valor 8, será necessário encadear o anterior com o sucessor p q / 126
127 Orientações Portanto a condição facilitadora pede também um ponteiro para o nó anterior p r q / 127
128 Orientações Portanto a condição facilitadora pede também um ponteiro para o nó anterior Agora ficou simples p r q / 128
129 Orientações a identificação da condição facilitadora permite a divisão do problema em duas etapas, reduzindo-se a complexidade 129
130 Orientações 2 - Primeiramente, procure a solução para o caso mais geral. Depois considere as situações especiais 130
131 Orientações 2 - Primeiramente, procure a solução para o caso mais geral. Depois considere as situações especiais Ex: Inserir na enésima posição: raciocinar para lista não vazia e inserção no meio da lista. Depois considerar - e se a lista estiver vazia? - e se a posição for a primeira (ou a última)? Quando a solução geral não funcionar para esses casos, inserir o tratamento especial. 131
Tipos de Dados Dinâmicos
Tipos de Dados Dinâmicos Manipular uma lista de nomes de alunos: como? Tipo de dados Registo com: nome notas de trabalhos assiduidade nota final Representação para a Lista???? MP II, 2006/2007 p.1/20 Hipótese
Leia maisPonteiro e lista dinâmica
UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Prof. Yandre Maldonado - 2 Ponteiro é uma variável que
Leia maisAlocação Dinâmica e Apontadores. Cláudio E. C. Campelo
Alocação Dinâmica e Apontadores Cláudio E. C. Campelo http://claudiocampelo.com Alocação Estática x Dinâmica Linguagens de programação como Pascal, C e C++ permitem dois tipos de alocação de memória: estática
Leia maisProgramação II. Aula 1
Programação II Aula 1 Ponteiros Variáveis Variáveis estáticas Variáveis dinâmicas Podem ser criadas e destruídas durante a execução de um programa. Declaração -> Indireta Vinculação -> Por meio de ponteiros
Leia maisTexto retirado e adaptado da apostila Curso de Linguagem Pascal, disponível no site (autor: desconhecido).
Texto retirado e adaptado da apostila Curso de Linguagem Pascal, disponível no site http://www.portaldaprogramacao.com (autor: desconhecido). Leitura indicada: Notas de Aula de Algoritmos e Programação
Leia maisSumário. 1.1 Variáveis Globais e Locais Passagem de Parâmetro (por valor por referência) 1
Sumário Sobre as Autoras ix Introdução xi 1 Sub-rotinas 1 1.1 Variáveis Globais e Locais 1 1.2 Passagem de Parâmetro (por valor por referência) 1 2 Vetores e Matrizes 7 2.1 Vetores 7 2.2 Matrizes 8 2.2.1
Leia maisEstrutura de Dados Polinómio
Estrutura de Dados Polinómio Estrutura de Dados: representação computacional + algorimos especializados Estrutura de Dados Polinómio P n (x) = nx a i x i i=0 Logo, Polinómio tem uma estrutura recorrente:
Leia maisVariáveis. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe
Variáveis alberto@ufs.br de Programação Departamento de Computação Universidade Federal de Sergipe Variáveis Uma vez que o programador tenha entendido o uso de variáveis, ele entendeu a essência da programação.
Leia maisProf. Walteno Martins Parreira Júnior
Licenciatura em Computação Algoritmos e Estrutura de Dados LISTAS LINEARES Prof. Walteno Martins Parreira Júnior www.waltenomartins.com.br waltenomartins@iftm.edu.br 2016 SUMÁRIO 1 - LISTAS LINEARES...
Leia maisProfessora Jeane Melo
Professora Jeane Melo Roteiro Lista Encadeada Alocação: Estática x Dinâmica O que são Ponteiros? Ponteiros Variáveis que Armazenam Endereços de Memória Mas, toda variável não é armazenada na memória? Ponteiros
Leia maisEstrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1
Estrutura de Dados Introdução a Ponteiros Prof. Gerson Borges Estrutura de Dados I 1 Sumário è Explicação da importância do planejamento de ensino; è Métodos e técnicas que iremos trabalhar durante o semestre;
Leia maisListas Lineares Duplamente Encadeada (LLDE)
Listas Lineares Duplamente Encadeada (LLDE) Nas listas com descritores vistas anteriormente a operação de remoção do último nó apresenta a necessidade de percorrer os nós seqüencialmente, a partir do primeiro
Leia maisLista com descritor (continuação)
Lista com descritor (continuação) Rotina para remover o eiro elemento de uma LLSECD: char removeiniciollsecd(tdescritor *l, TInfo val) { p = l->; l->=p->prox; if (l->==1) Rotina para remover o último nó
Leia maisLista Encadeada (Linked List)
Lista Encadeada (Linked List) As listas ou listas encadeadas são a estrutura de dados mais simples concebível excetuando-se naturalmente os arrays. Listas encadeadas nada mais são que uma seqüência de
Leia maisÁrvores Binárias de Pesquisa (ABP) INF01203 Estruturas de Dados. Operações. Árvores Binárias de Pesquisa (ABP) Caminhamento Central à Esquerda
Árvores Binárias de Pesquisa (ABP) INF03 Estruturas de Dados Árvores Binárias de Pesquisa apresentam uma relação de ordem entre os nodos ordem é definida por um campo denominado chave esq chave inf dir
Leia maisProf. Franklin Ramalho
PLP - Armazenamento (Parte I) Prof. Franklin Ramalho Universidade Federal de Campina Grande - UFCG Agenda - Variáveis Primitivas - Variáveis Compostas - Modelo de Armazenamento - Ciclo de vida de variáveis
Leia maisPONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco
PONTEIROS E LISTAS Kalinka Regina Lucas Jaquie Castelo Branco kalinka@icmc.usp.br ALOCAÇÃO DINÂMICA DE MEMÓRIA Pode-se assumir que as variáveis declaradas na cláusula variável do pseudo-código do algoritmo
Leia maisPascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string
Pascal -Cabeçalho do programa Áreas do programa -Área de declarações -Corpo do programa - label - const - type - var - procedure - function - integer - real - byte - boolean - char - string Program
Leia mais1: unit ArvAVL; 2: { Unit que implementa uma arvore AVL } 3: interface 4: 5: type 6: Tipo_da_Chave = longint; 7: Tipo_do_Dado = record 8: Chave :
1: unit ArvAVL; 2: { Unit que implementa uma arvore AVL } 3: interface 4: 5: type 6: Tipo_da_Chave = longint; 7: Tipo_do_Dado = record 8: Chave : Tipo_da_Chave; 9: Nome : string; 10: { Outras informacoes
Leia maisANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa
ANHANGUERA 2015.2 ESTRUTURA DE DADOS AULA 04 Prof. Thomás da Costa thomascosta@aedu.com O que é: Matrizes São vetores que possuem duas ou mais dimensões para armazenar valores. Uma matriz de duas dimensões,
Leia maisLista Ligada Linear - Retirar elemento
Lista Ligada Linear - Retirar elemento Pretende-se retirar o elemento com valor h da lista: Para isso é necessário modificar o valor do ponteiro para a caixa anterior à do elemento a ser retirado da lista:
Leia maisFERRAMENTAS BÁSICAS DA PROGRAMAÇÃO
FERRAMENTAS BÁSICAS DA PROGRAMAÇÃO VARIÁVEIS E O COMANDO DE ATRIBUIÇÃO O computador possui uma área específica de armazenamento denominada de memória. O computador possui uma área específica de armazenamento
Leia maisEstruturas de Dados I
Estruturas de Dados I Rodrigo Porfírio da Silva Sacchi rodrigosacchi@ufgd.edu.br 3410-2075 Aula 6: Listas Encadeadas e Alocação Dinâmica Listas Encadeadas e Alocação Dinâmica Alocação Seqüencial versus
Leia maisAnálise Semântica e Tratamento de Erros Dependentes de Contexto
Análise Semântica e Tratamento de Erros Dependentes de Contexto O componente Semântico de uma LP Tarefas da Análise Semântica Implementação da Tabelas de Símbolos Ações Semânticas em Compiladores Dirigidos
Leia maisTipos Abstratos de Dados. Estrutura de Dados
Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:
Leia maisListas: nós de cabeçalho, listas não homogêneas, listas generalizadas
Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas SCC-502 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Lista com nó de cabeçalho Nó de cabeçalho Header, sentinela, etc.
Leia maisAlocação e Gerência de Memória: APONTADORES
Processamento Usuário Alocação e Gerência de Memória: APONTADORES Fonte ompilador Objeto Linkeditor Módulo arga Tempo de compilação Tempo de arga arregador Memória Tempo de Execução Memória Principal:
Leia maisEstrutura de dados 1. Ponteiros
Estrutura de dados 1 Ponteiros Ponteiros Um ponteiro é um endereço de memória O valor de um ponteiro indica onde uma variável está armazenada Um ponteiro proporciona um modo de acesso a uma variável sem
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação
Leia maisO AMBIENTE DE PROGRAMAÇÃO VISUAL -PLANO DE ENSINO. Prof. Angelo Augusto Frozza, M.Sc.
O AMBIENTE DE PROGRAMAÇÃO VISUAL -PLANO DE ENSINO Prof. Angelo Augusto Frozza, M.Sc. ROTEIRO 1. A linguagem de programação Object Pascal a) Palavras reservadas b) Tipos de dados, variáveis e constantes
Leia maisListas Lineares. continuando...
Listas Lineares continuando... 1 Listas! relembrando: listas lineares agrupa informações referentes aum conjunto de elementos que, de alguma forma, se relacionam entre si! Uma lista linear ou está vazia,
Leia maisREVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos
REVISÃO DE C Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Ponteiros Alocação dinâmica de memória Recursão INSTITUTO DE COMPUTAÇÃO - UFF 2 PONTEIROS PONTEIROS C permite o armazenamento
Leia maisAgregado Homogêneo e Heterogêneo
Universidade Estadual de Maringá - UEM Centro de Tecnologia - CTC Departamento de Informática - DIN Fundamentos da Computação Agregado Homogêneo e Heterogêneo Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado
Leia maisAula 10 Alocação Dinâmica de Memória Listas Encadeadas. prof Leticia Winkler
Aula 10 Alocação Dinâmica de Memória Listas Encadeadas prof Leticia Winkler 1 Prof. Leticia Winkler 2 Alocação de Memória Reservar na memória (principal), o espaço para guardar a informação através da
Leia maisPonteiros. Introdução
Ponteiros Introdução Conceito Um PONTEIRO ou APONTADOR é uma variável usada para armazenar um endereço de memória. Normalmente, o endereço armazenado em um PONTEIRO é a posição de uma outra variável na
Leia maisO que é uma variável?
Escopo, Ligação e Ambiente de Execução mleal@inf.puc-rio.br 1 O que é uma variável? Uma variável pode ser definida como uma tupla r nome é um string usado para
Leia mais8. ÁRVORES ÁRVORES Niv 1 Niv 2 Niv 3 Niv 4. Até Introdução
8. ÁRVORES Até... 8.1 Introdução ÁRVORES Formas de Armazenamento: Árvores Estáticas: Type Tipo_Árvore = Array[1..Max] of Tipo_Dado; Por exemplo : árvore de grau 3. P 5 7 9 0 3 8 2 5 2 5 7 9 0 3-1 -1 8
Leia maisIntrodução à Ciência da Computação
Introdução à Ciência da Computação Variáveis Conceitos Básicos Variáveis x Constantes a = x + 5 a, x e 5 são variáveis ou constantes? Variáveis As variáveis são recipientes de valores É um espaço reservado
Leia maisTeoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.
Teoria da Computação e Algoritmos Introdução à Linguagem Pascal 1 Estrutura de um programa INÍCIO FIM. PROGRAM END.
Leia maisListas - Outras. Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações
Listas - Outras Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações 5 e 7/10/2010 Listas Circulares Encadeadas Dinâmicas Se o nó next do último nó apontar para o primeiro, teremos
Leia maisLista de Exercícios sobre Listas Implementadas por Encadeamento
Lista de Exercícios sobre Listas Implementadas por Encadeamento 1) Se você tem de escolher entre uma representação por lista encadeada ou uma representação usando posições contíguas de memória para um
Leia maisUNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio;
UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio; e-mail: sandra@icmc.usp.br Lista de Exercícios Árvores, Árvores Binárias, Árvores
Leia maisPonteiros. Introdução e Alocação Dinâmica
Ponteiros Introdução e Alocação Dinâmica Conceito Um PONTEIRO ou APONTADOR é uma variável usada para armazenar um endereço de memória. Normalmente, o endereço armazenado em um PONTEIRO é a posição de uma
Leia maisProgramação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto
Programação I Ponteiros e alocação dinâmica de memória Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Ponteiros O ponteiro é um tipo de dado como int, char ou float; Variáveis
Leia maisSumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?
Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros
Leia maisSintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)
Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Não-terminais são nomes mnemônicos colocados entre parênteses angulares. Vocabulário terminal formado por
Leia maisUnidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri
Unidade VI Técnicas de Teste de Software Profa. Dra. Sandra Fabbri Os requisitos de teste são extraídos de uma implementação em particular Teste dos detalhes procedimentais A maioria dos critérios dessa
Leia mais11a. Aula Ponteiros e Vetores
11a. Aula Ponteiros e Vetores 2013.2 2 É um tipo de variável com uma ressalva...... armazena apenasendereçode memória (ou null) Se eu tiver o endereço da casa de Francisca, eu poderei visitá-la e lhe fazer
Leia maisTipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares)
Tipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares) 1. Refaça todos os itens do exercício 1 da Lista de Exercícios anterior (Listas
Leia maisLinguagem e Técnicas em Programação. Gilson de Souza Carvalho
Gilson de Souza Carvalho gaucho.gilson@hotmail.com 3.1.3 Condições compostas Linguagem e Técnicas em Programação As condições que vimos até agora sempre foram únicas. Entretanto, conforme aumenta a complexidade
Leia maisLista de Exercícios 04
Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM Disciplina: BCC202 - Estruturas de Dados I Professor: Túlio Toffolo (www.decom.ufop.br/toffolo)
Leia maisSCC Algoritmos e Estruturas de Dados I
SCC 202 - Algoritmos e Estruturas de Dados I Lista 4 de Exercícios (Listas Generalizadas, Listas Cruzadas) 1. Sobre listas generalizadas, responda os seguintes itens: (a) Quais suas vantagens? (b) Quais
Leia maisAgregado Homogêneo e Heterogêneo. Agregado Homogêneo. Agregado Homogêneo 28/11/2015
8//0 Universidade Estadual de Maringá - UEM Centro de Tecnologia - CTC Departamento de Informática - DIN Fundamentos da Computação e Heterogêneo Prof. Yandre Maldonado - Prof. Yandre Maldonado e Gomes
Leia maisEstrutura de Dados Listas
Universidade Federal da Paraíba Centro de Informática Departamento de Informática Estrutura de Dados Listas 1 Tiago Maritan tiago@ci.ufpb.br Conteúdos Abordados O Conceito de Listas Listas com Representação
Leia mais- UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática
Programação 1I Prof. Osório Listas simplesmente encadeadas Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática Programação II Disciplina:
Leia maisCompiladores. Gerência de Memória
Compiladores Gerência de Memória Cristiano Lehrer, M.Sc. Atividades do Compilador Arquivo de origem Arquivo de destino Análise Otimização Geração de Código Intermediário Geração de Código Final Síntese
Leia maisCAP. VI ANÁLISE SEMÂNTICA
CAP. VI ANÁLISE SEMÂNTICA VI.1 Introdução Semântica SIGNIFICADO, SENTIDO LÓGICO, COERÊNCIA,... Diferença entre SINTAXE e SEMÂNTICA Sintaxe : descreve as estruturas de uma linguagem; Semântica : descreve
Leia maisComputadores Digitais 2. Prof. Rodrigo de Souza Couto
Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Tópicos Listas Encadeadas Introdução às listas encadeadas Manipulação de elementos Implementações recursivas Listas
Leia maisx=0; y=x+1; x=&y+2; x 1000 y 1004
Variáveis Conceitos São alocadas em memória; Elas ocupam uma quantidade de btes que depende do tipo da variável; Esses btes são alocados de forma contígua na memória; O valor de uma variável corresponde
Leia maisINF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 8 Listas Encadeadas (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Motivação Listas encadeadas Implementações recursivas Listas de tipos estruturados (c) Dept. Informática
Leia maisBCC Introdu c ao ` a Programa c ao I Ponteiros Guillermo C amara-ch avez UFOP 1/54
BCC 201 - Introdução à Programação I Ponteiros Guillermo Cámara-Chávez UFOP 1/54 Ponteiros... I i n t main ( ) { i n t x ; x = 10 cout
Leia maisFACCAT Sistemas de Informação. Estruturas de Dados
FACCAT Sistemas de Informação Estruturas de Dados Aula 1 http://professores.faccat.br/azambuja (Estrutura de Dados) Definição de variáveis Podemos imaginar uma variável como o local onde se pode colocar
Leia maisEstrutura de Dados. Aula 07 Alocação Dinâmica
Estrutura de Dados Aula 07 Alocação Dinâmica 2 ALOCAÇÃO DINÂMICA Existem três modos de reservar espaço de memória para o armazenamento de informações: 1ª - através do uso de variáveis globais (e estáticas).
Leia maisBCC Introdu c ao ` a Programa c ao I Ponteiros Guillermo C amara-ch avez UFOP 1/61
BCC 201 - Introdução à Programação I Ponteiros Guillermo Cámara-Chávez UFOP 1/61 Ponteiros... I i n t main ( ) { i n t x ; x = 10 p r i n t f ( " Conteudo de x: %d \n", x ) ; p r i n t f ( " Endereco de
Leia maisPonteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ
Ponteiros em C Adriano Joaquim de Oliveira Cruz 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Resumo da Seção Introdução Declaração Incrementando e Decrementando
Leia maisAlocação Dinâmica de Memória
Alocação Dinâmica de Memória Elerson R. S. Santos elerson@dcc.ufmg.br Algoritmos e Estruturas de DCC UFMG Variáveis Uma variável representa um nome simbólico para uma posição de memória. Cada posição de
Leia maisListas: nós de cabeçalho, listas não homogêneas, listas generalizadas. SCC-502 Algoritmos e Estruturas de Dados I
Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas SCC-502 Algoritmos e Estruturas de Dados I Lista com nó de cabeçalho Nó de cabeçalho Header, sentinela, etc. Para que? Sentinela Beth
Leia maisTipos. O Conceito de Tipo
Tipos mleal@inf.puc-rio.br 1 O Conceito de Tipo LPs geralmente permitem a organização de dados em diferentes categorias através do conceito de tipo. Um tipo é definido a partir de um conjunto de valores
Leia maisLinguagens de Programação
Linguagens de Programação Paradigma Imperativo Matheus Hafner Tiago Xavier CET 087 - Conceitos de Linguagens de Programação (CLP) 10 de novembro de 2011 Sumário 1 Introdução 2 Paradigma imperativo Modelo
Leia maisAlocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)
Alocação de Memória Linguagem de Programação Estruturada 1 Alocação dinâmica e ponteiros Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Sumario Introdução Alocação Estática
Leia maisCES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra
CES-11 Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Revisão Tipos escalares primitivos Tipos constituídos de uma linguagem Ponteiros Alocação estática versus
Leia maisAula 14 Listas Duplamente Encadeadas. prof Leticia Winkler
Aula 14 Listas Duplamente Encadeadas prof Leticia Winkler 1 Lista Duplamente Encadeada É um tipo de lista encadeada que pode ser vazia (NULL) ou que pode ter um ou mais nós, sendo que cada nó possui dois
Leia maisLinguagem C Ponteiros
Linguagem C Ponteiros Instituto Federal de Educação, Ciência e Tecnologia do Triângulo Mineiro Prof. Edwar Saliba Júnior Janeiro de 2018 Unidade 14 Linguagem C - Ponteiros 1/24 Identificadores e Endereços
Leia maisEstrutura de Dados. Ricardo José Cabeça de Souza Parte 9
Estrutura de Dados Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Parte 9 VETOR Ao declararmos um vetor, reservamos um espaço contíguo de memória para armazenar seus elementos Vetor não é uma estrutura
Leia maisALGORITMOS E ESTRUTURAS DE DADOS CES-11
ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Revisão CES-11 Tipos escalares primitivos Tipos constituídos
Leia maisConstrução de Algoritmos II Aula 04
exatasfepi.com.br Construção de Algoritmos II Aula 04 André Luís Duarte Porque mil anos são aos teus olhos como o dia de ontem que passou, e como a vigília da noite. Salmos 90:4 Arquivos Declaração de
Leia maisMódulo 10 Listas Encadeadas
Estruturas de Dados Módulo 10 Listas Encadeadas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus
Leia maisProgramação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Organização e Gerenciamento de Memória 1 AULA PASSADA - vetores ou arrays Declaração de um vetor (array) em C: tipo nome[tamanho];
Leia maisProgramação Estruturada Prof. Rodrigo Hausen Ponteiros e Passagem de Parâmetros
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Ponteiros e Passagem de Parâmetros 1 AULA PASSADA - ponteiros Uma declaração tal como: tipo *nome; Declara um ponteiro: referência
Leia maisIntrodução a Programação. Listas Encadeadas
Introdução a Programação Listas Encadeadas Tópicos da Aula Hoje aprenderemos que existem, além de vetores, estruturas de dados dinâmicas que podem armazenar coleções de dados Estruturas Dinâmicas e Vetores
Leia maisEstruturas de Dados Básicas
Estruturas de Dados Básicas Última alteração: 30 de Agosto de 2010 Slides elaborados por Charles Ornelas Almeida, Israel Guerra e Nivio Ziviani Projeto de Algoritmos Cap.3 Estruturas de Dados Básicas 1
Leia maisx=0; y=x+1; x=&y+2; x 1000 y 1004
Variáveis Conceitos São alocadas em memória; Elas ocupam uma quantidade de btes que depende do tipo da variável; Esses btes são alocados de forma contígua na memória; O valor de uma variável corresponde
Leia mais1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18
ÍNDICE MÓDULO 1 INTRODUÇÃO À ALGORITMIA 11 1.1 PROGRAMAS E ALGORITMOS 12 Fases da programação 12 Algoritmos e algoritmia 13 Algoritmos em linguagem informal, pseudocódigo e fluxogramas 14 Símbolos utilizados
Leia maisSumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)
Algoritmos e Programação Informática II Ciência da Computação Prof. Dr. Leandro Alves Neves Aula 10 1 Sumário Estruturas de Controle de Fluxo q Repetição Enquanto (Teste no início) Repeat (Teste no final)
Leia maisALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória
ALGORITMOS E ESRUTRA DE DADOS I Ponteiros Passagem por Valor e Referência Alocação de Memória 2 Agenda Ponteiros Conceitos gerais O que é Ponteiro? Declaração de Ponteiros Operadores para Ponteiros Exemplos
Leia maisLinguagem C: Ponteiros. Prof. Tiago Alves de Oliveira
Linguagem C: Ponteiros 1 Sumário Ponteiros; Variáveis ponteiros; Operadores de ponteiros; Expressões com ponteiros; Atribuição de ponteiros; Aritmética de ponteiros; Comparação de ponteiros; Ponteiros
Leia maisAULA 04. Ocupação Circular Listas com Descritor
AULA 04 Ocupação Circular Listas com Descritor Ocupação Circular Ocupação circular Final da LL Início da LL X 1 2 3 4 5 6 7 8 9 10 11 12 13 Ocupação circular utilizando parte do arranjo Final da LL Início
Leia maisProgramação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Vetores vs Estruturas Dinâmicas Vetores (arrays): Ocupa um espaço contíguo de memória Permite acesso randômico
Leia maisUNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática
Programação 1 Prof. Osório Aula 09 Pag.: 1 UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática PROGRAMAÇÃO I AULA 09 Disciplina: Linguagem
Leia maisExercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal
Exercício Crie uma função que recebe o número de dias até um determinado evento e calcula e retorna o equivalente em meses, semanas e dias, sem usar vetor ou o conceito de vetor. Considerar que todos os
Leia maisLinguagem de programação: Pascal
Aula 04 Linguagem de programação: Pascal Prof. Tecgº Flávio Murilo 26/03/2013 1 Pascal Introdução Pascal é uma linguagem de programação estruturada, criada em 1970 pelo suíço Niklaus Wirth, dando este
Leia maisLINGUAGEM C: PONTEIROS
LINGUAGEM C: PONTEIROS Prof. André Backes DEFINIÇÃO Variável É um espaço reservado de memória usado para guardar um valor que pode ser modificado pelo programa; Ponteiro É um espaço reservado de memória
Leia maisLinguagem C: Ponteiros. Prof. Leonardo Barreto Campos 1
Linguagem C: Ponteiros Prof. Leonardo Barreto Campos 1 Sumário Ponteiros; Variáveis ponteiros; Operadores de ponteiros; Expressões com ponteiros; Atribuição de ponteiros; Aritmética de ponteiros; Comparação
Leia maisLinguagem Pascal. Prof. Jonatas Bastos Site:
Linguagem Pascal Prof. Jonatas Bastos Email: jonatasfbastos@gmail.com Site: http://jonatasfbastos.wordpress.com/ 1 Linguagem Pascal Foi desenvolvida pelo prof. Niklaus Wirth como uma linguagem simples
Leia mais= = = = = = = = = = = = = = = =
Página 1 de 7 A Linguagem PASCAL = = = = = = = = = = = = = = = = 1) ALFABETO: são os símbolos (ié, caracteres ) permitidos na linguagem. São as letras (maiúsculas e minúsculas), os algarismos (ou dígitos)
Leia maisLinguagem de Programação
Linguagem de Programação Aula 9 Tipos Estruturados (Parte 2) Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Técnico em Informática Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno
Leia maisUniversidade de São Paulo
Universidade de São Paulo Instituto de Ciências Matemáticas e Computação SCE5763 - Tipos e Estrutura de Dados - Luis Gustavo Nonato 2 a Lista de Exercícios 1. Seja A um array de inteiros. Escreva algoritmos
Leia maisAula 11 Pilha Dinâmica. prof Leticia Winkler
Aula 11 Pilha Dinâmica prof Leticia Winkler 1 Pilha Dinâmica (Dynamic Stack) Pilha implementada através de uma lista linear encadeada. É uma lista linear encadeada em que as operações de inserção e retirada
Leia maisCapítulo V : Um Tipo Estruturado de Dados: o array
Capítulo V : A Linguagem Pascal Um Tipo Estruturado de Dados: o array 1 _ Capítulo V : Um Tipo Estruturado de Dados: o array Ex1: Vector, Variável com um índice, Tabela unidimensional. var x : array [0..7]
Leia maisProgramando o Computador com PascaL: um ambiente para Auto-Aprendizagem.
Programando o Computador com PascaL: um ambiente para Auto-Aprendizagem. Resolução dos desafios propostos no Capítulo 8 Resolução do Desafio 8.1 Resolução do Desafio 8.2 Fórmulas usadas na planilha: Para
Leia mais