ALOCAÇÃO DINÂMICA DE MEMÓRIA

Slides:



Advertisements
Apresentações semelhantes
Listas Encadeadas Circulares Listas Duplamente Encadeadas
Advertisements

Listas Encadeadas Circulares Listas Duplamente Encadeadas
Prof. José Fernando Rodrigues Júnior Pacotes Material original: Profa. Elaine Parros Machado de Sousa SCC Bancos de Dados e Suas Aplicações.
Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha.
PROGRESSÃO ARITMÉTICA P.A.
Prof. Celso Gramática Prof. Celso
Introdução a Resolução Numérica de Equações Diferenciais Ordinárias
FORTRAN 90 Denise Yumi Takamura.
Estruturas de Dados para projeto de SGBD. Estruturas de dados analisadas Estruturas de nível Esparso Denso Combinadas Arvore B+ Tabela de hash.
Vetores Variável Composta Homogênea Unidimensional
Vetores (2) Continuação.
Sintaxe de Fortran 25/abril/2006. Comandos Fortran PROGRAM PRINT READ STOP END.
Modularização de Código. Modularizar código Construção do algoritmo em um módulo único (Início...Fim/ Program... End) Único arquivo.
Estrutura de repetição 18/set. Uso Foi construído o problema de ler notas de um aluno e fazer média. E para 5 alunos ????
Utilização do montador Daedalus
Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)
Teste Estrutural de Software
Criptografia Quântica : Um Estudo
Análise e Solução de Problemas
(Como implementar multiplicação e divisão uma vez só :-)
Algoritmos Genéticos - Capítulo 10 Desvantagens da Representação Binária Prof. Ricardo Linden.
Profa. Graziela Santos de Araújo Algoritmos e Programação II, 2010
Introdução A fim de preparar a geração de código, deve-se relacionar o fonte estático do programa às ações em tempo de execução. Durante a execução, o.
Geração de Código Cap. 8. Introdução Fase final para um compilador Entrada é uma representação intermediária do código fonte e a saída é um programa para.
1 Oi BlackBerry. 2 Índice 1Configurando o seu aparelho BlackBerry 2Formatando o seu aparelho BlackBerry 3Solicitando senha de ativação empresarial 4Indicador.
Campus de Sorocaba UNIVERSIDADE ESTADUAL PAULISTA Recursos Computacionais Antonio Martins.
Agregado Homogêneo e Heterogêneo
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo III Comandos de Controle.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo VII Variáveis Indexadas Numéricas.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo XI Encadeamento de Estruturas por Ponteiros.
Capítulo IX – Ponteiros 9.1 – Introdução 9.2 – Relação entre ponteiros e variáveis indexadas 9.3 – Alocação dinâmica de memória 9.4 – Variáveis indexadas,
Exemplo: ordenação de uma lista pelo Selection-Sort:
ESTA TELA, QUANDO ESTA CARREGANDO O ARQUIVO, NÃO GOSTARIA QUE APARECESSE ESSES EFEITOS PARECIDO COM ESTRELINHA...GOSTARIA QUE A TELA FOSSE DA SEGUINTE.
TA 733 A – Operações Unitárias II
Tema I TEMA DE DISCUSSÃO I Prof. Dr. Marcio Lobo Netto 1 o. Período / 2004 Escola Politécnica da USP MBA EPUSP em Gestão e Engenharia do Produto EP018.
Curso Técnico em Informática La Salle - Canoas
LA SALLE Curso Técnico em Informática
5W1H.
EEL170 COMPUTAÇÃO I Antonio Cláudio Gómez de Sousa 5a série de slides Versão 26/04/2012.
EEL170 COMPUTAÇÃO I Antonio Cláudio Gómez de Sousa 1a série de slides versão 19/03/2012.
8.EQUAÇÕES DIFERENCIAIS ORDINÁRIAS Parte 5
Resolução de Sistemas Lineares- Parte 1
Organização de Sistemas de Computadores
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Listas Lineares.
Listas Encadeadas.
Recursividade Estrutura de Dados.
Contrato Pedagógico Economia e Gestão Financeira – 2 SIN A/ 06 Este contrato visa a estabelecer regras claras para utilização entre o 2SINA/ 06.
Marco Antonio Montebello Júnior
Introdução à Probabilidade
Otimização Aplicada ao Dimensionamento e Operação de Reservatórios
Curso de Programação em C++ Universidade Federal do Ceará Departamento de Engenharia Estrutural e Construção Civil Prof: Evandro Parente Junior Monitor:
Curso de Programação em C++
Curso de Programação em C++ Universidade Federal do Ceará Departamento de Engenharia Estrutural e Construção Civil Prof: Evandro Parente Junior Monitor:
Baseado no documento do Prof. Ronaldo Martins da Costa
LINGUAGENS DE PROGRAMAÇÃO
Baseado no documento do Prof. Ronaldo Martins da Costa
Baseado no documento do Prof. Ronaldo Martins da Costa
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Programação Concorrente com Thread Java
Comunicação CLP através do Driver OPC
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
8. Uma Função de duas Variáveis Aleatórias
Exercícios de revisão.
ArrayList e Genéricos Profs. PROG2 - UNISINOS.
Transcrição da apresentação:

ALOCAÇÃO DINÂMICA DE MEMÓRIA PASCAL ALOCAÇÃO DINÂMICA DE MEMÓRIA

Alocação Estática de Memória Definimos exatamente as variáveis necessárias para resolver um problema Usada quando conhecemos a quantidade e a dimensão das variáveis necessárias Ex.: Var Nr1, nr2, nr3: integer; // variáveis tipo inteiro Temperaturas: array[1..24] of integer; // variável estruturada homogênea do tipo inteiro com uma dimensão e 24 elementos

Alocação Dinâmica de Memória Permite criar variáveis dinamicamente, em tempo de execução, a medida em que forem necessárias Usada quando não sabemos a quantidade ou a dimensão das variáveis que necessitamos para resolver um problema Em Pascal, C e C++ a alocação dinâmica de memória é implementada via pointer

Pointer Um pointer é uma variável que aponta para uma outra variável, esta última criada em tempo de execução Isto permite definir, durante a execução de um programa, quantas variáveis de um tipo de pointer serão criadas, e a dimensão dessas variáveis O pointer tem um tipo: ele só pode apontar para variáveis de seu tipo Pode-se imaginar o pointer como contendo um endereço de uma variável

Exemplo de alocação estática Var Nr1, nr2, nr3: integer; nr1 Todas do tipo inteiro nr2 nr3

Exemplo de alocação dinâmica Var Var1, var2: ^integer var1 Podem apontar para variáveis do tipo inteiro var2

nr1, nr2: inteiro // variável estática Var1, var2: ^inteiro // pointer Begin ... nr1 nr2 var1 var2 nr1  15 15 nr2  nr1 15 new (var1) var1^  25 nr2  var1^ 25 25

Lista encadeada por pointer início nó Encadeamento

Exemplo: agenda por pointer Algoritmo agendaPointer (* agenda em pointer com inclusão no início *) Tipo tcontato = ^rcontato (* pointer *) Rcontato = registro nome fone proximo: tcontato (* recursão *) fim Var Primeiro, novo, atual, ultimo: tcontato

Primeiro  nil // para inicializar com nulo Inicio Primeiro  nil // para inicializar com nulo ............. // repetição e menu com opções Procedimento incluirContatoInicio (* procedimento para incluir contato no inicio *) inicio New (novo) // alocação dinâmica de memória Leia (novo^.nome, novo^.fone) (* orientar e testar *) Novo^.proximo  nil Se primeiro = nil Então primeiro  novo // primeira inclusão Senão // demais inclusões Novo^.proximo  primeiro Primeiro  novo fim

Exemplo de agenda Primeiro contato: zé fone 45 Segundo contato: rui fone 80 Terceiro contato: lui fone 10 primeiro Ze 45 primeiro Rui 80 Ze 45 primeiro Lui 10 Rui 80 Ze 45

Procedimento listarContatos (* procedimento para listar os contatos *) Inicio Atual  primeiro Enquanto atual <> nil faça Escreva(atual^.nome, atual^.fone) Atual  atual^.proximo fim

procedimento incluirContatoFim (* procedimento para incluir contato no fim – inclusão mantendo a ordem cronológica *) new (novo) // alocação dinâmica de memória leia (novo^.nome, novo^.fone) // orientar e testar novo^.proximo  nil se primeiro = nil então primeiro  novo // primeira inclusão Ultimo  novo senão // demais inclusões ultimo^.proximo  novo ultimo  novo fim

Exemplo de agenda Primeiro contato: zé fone 45 Segundo contato: rui fone 80 Terceiro contato: lui fone 10 ultimo primeiro Ze 45 ultimo primeiro Ze 45 Rui 80 ultimo primeiro Ze 45 Rui 80 Lui 10

Novo exemplo linear Agenda que permita manter os nomes e telefones de contatos em ordem alfabética em uma lista circular O contato atual deve ser apresentado na tela Opções: Incluir novo contato – este passa a ser o atual Excluir o contato atual – atual será o próximo Alterar o telefone do contato atual Apresentar o próximo – será o atual Apresentar o anterior – será o atual Consultar um contato pelo nome - será o atual Listar todos os contatos – mantido o atual

Exemplo não linear Agenda que permita manter os nomes e telefones de contatos em ordem alfabética em uma árvore binária Opções: Incluir novo contato Alterar o telefone de um contato Consultar um contato pelo nome Listar todos os contatos em ordem alfabética