Curso de C. Memória Dinâmica 17/05/ :33 1
|
|
- Ruy Amaro Álvaro
- 8 Há anos
- Visualizações:
Transcrição
1 Curso de C Memória Dinâmica 17/05/ :33 1
2 Memória Dinâmica Curso C - IC/UNICAMP Roteiro: Memória dinâmica Vetores dinâmicos Listas ligadas 17/05/2010 V. Moura, Daniel F. Ferber 2
3 Conceitos: memória dinâmica e estática Memória estática: Variáveis declaradas no no código Tamanho fixo Número limitado de de variáveis Programa Memória estática: int a; int b; 17/05/ :33 3
4 Conceitos: memória dinâmica e estática Memória estática: Variáveis declaradas no no código Tamanho fixo Número limitado de de variáveis Programa Memória estática: int a; int b; int *p; Memória dinâmica: Espaços adicionais de de memória Memória alocada/liberada quando necessário Memória dinâmica: 17/05/ :33 4
5 Conceitos Curso C - IC/UNICAMP Passo a passo no programa: Solicitar memória dinâmica Programa Memória estática: int a; int b; int *p; Memória dinâmica:??? 17/05/ :33 5
6 Conceitos Curso C - IC/UNICAMP Passo a passo no programa: Solicitar memória dinâmica Guardar apontador para espaço obtido Programa Memória estática: int a; int b; int *p; Memória dinâmica:??? 17/05/ :33 6
7 Conceitos Curso C - IC/UNICAMP Passo a passo no programa: Solicitar memória dinâmica Guardar apontador para espaço obtido Armazenar dados Qualquer conteúdo Programa Memória estática: int a; int b; int *p; Memória dinâmica: xyz 17/05/ :33 7
8 Conceitos Curso C - IC/UNICAMP Passo a passo no programa: Solicitar memória dinâmica Guardar apontador para espaço obtido Armazenar dados Qualquer conteúdo Liberar memória obtida Programa Memória estática: int a; int b; int *p; Memória dinâmica: xyz 17/05/ :33 8
9 Conceitos: obter memória Chamar função malloc Parâmetro: tamanho desejado, em bytes Resultado: apontador para espaço na na memória Programa Memória estática: int a; int b; int *p; Memória dinâmica: 17/05/ :33 9
10 Conceitos: obter memória Chamar função malloc Parâmetro: tamanho desejado, em bytes Resultado: apontador para espaço na na memória int *p; p = (int*)malloc(4); Programa Memória estática: int a; int b; int *p; Memória dinâmica:?? 17/05/ :33 10
11 Conceitos: obter memória Chamar função malloc Parâmetro: tamanho desejado, em bytes Resultado: apontador para espaço na na memória int *p; p = (int*)malloc(4); *p *p = 5; 5; printf("%d", *p); Programa Memória estática: int a; int b; int *p; Memória dinâmica: 5 17/05/ :33 11
12 Conceitos: liberar memória Chamar função free: Parâmetro: endereço já jáalocado Resultado: libera a área alocada int *p; p = (int*)malloc(4); *p *p = 5; 5; Programa Memória estática: int a; int b; int *p; Memória dinâmica: 5 17/05/ :33 12 TesteMalloc
13 Conceitos: liberar memória Chamar função free: Parâmetro: endereço já jáalocado Resultado: libera a área alocada int *p; p = (int*)malloc(4); *p *p = 5; 5; free(p); Programa Memória estática: int a; int b; int *p; Memória dinâmica: 5 17/05/ :33 13 TesteMalloc
14 Memória Dinâmica Vetor dinâmico 17/05/ :33 14
15 Função sizeof: sizeof(variavel) Vetor dinâmico Retorna quantidade de de memória ocupada pela variável sizeof(tipo) Curso C - IC/UNICAMP Retorna quantidade de de memória ocupada por uma variável com este tipo 17/05/ :33 15
16 Função sizeof: sizeof(variavel) Vetor dinâmico Retorna quantidade de de memória ocupada pela variável sizeof(tipo) Curso C - IC/UNICAMP Retorna quantidade de de memória ocupada por uma variável com este tipo int a; a; printf( %d, sizeof(int)); printf( %d, sizeof(a)); Saída: 17/05/ :33 16
17 Função sizeof: sizeof(variavel) Vetor dinâmico Retorna quantidade de de memória ocupada pela variável sizeof(tipo) Curso C - IC/UNICAMP Retorna quantidade de de memória ocupada por uma variável com este tipo int a; a; printf( %d, sizeof(int)); printf( %d, sizeof(a)); Saída: /05/ :33 17
18 Vetor dinâmico Curso C - IC/UNICAMP Passo a passo: Calcular tamanho do vetor com sizeof 17/05/ :33 18
19 Vetor dinâmico Curso C - IC/UNICAMP Passo a passo: Calcular tamanho do vetor com sizeof Reservar memória com malloc 17/05/ :33 19
20 Vetor dinâmico Curso C - IC/UNICAMP Passo a passo: Calcular tamanho do vetor com sizeof Reservar memória com malloc Acessar elementos com [ ] ou ponteiros 17/05/ :33 20
21 Vetor dinâmico Curso C - IC/UNICAMP Passo a passo: Calcular tamanho do vetor com sizeof Reservar memória com malloc Acessar elementos com [ ] ou ponteiros Liberar memória do vetor com free 17/05/ :33 21
22 Vetor dinâmico Curso C - IC/UNICAMP Exemplo: int *v; int tamanho; scanf( %d, &tamanho); v = (int*)malloc(sizeof(int)*tamanho); v[1] = v[2] + v[3]; *(v+1) = *(v+2) + *(v+3); free(v); Vetor01 17/05/ :33 22
23 Conceito: alterar tamanho de memória Chamar função realloc: Parâmetros: apontador para paraespaço antigo, tamanho desejado Resultado: apontador para para novo espaço Programa Memória estática: int a; int b; int *p; Memória dinâmica: 17/05/ :33 23
24 Conceito: alterar tamanho de memória Chamar função realloc: Parâmetros: apontador para paraespaço antigo, tamanho desejado Resultado: apontador para para novo espaço Programa Memória estática: int a; int b; int *p; int *p; p = (int*)malloc(4);... Memória dinâmica: 17/05/ :33 24
25 Conceito: alterar tamanho de memória Chamar função realloc: Parâmetros: apontador para paraespaço antigo, tamanho desejado Resultado: apontador para para novo espaço Programa Memória estática: int a; int b; int *p; int *p; p = (int*)malloc(4);... p = (int*)realloc(p, 8); Memória dinâmica: 17/05/ :33 25
26 Vetor dinâmico Curso C - IC/UNICAMP Exemplo: int *v; int tamanho, n_tamanho; scanf( %d, &tamanho); v=(int*)malloc(sizeof(int)*tamanho); scanf("%d", &n_tamanho); v=(int*)realloc(v,sizeof(int)*n_tamanho); free(v); Vetor02 17/05/ :33 26
27 Estrutura dinâmica Curso C - IC/UNICAMP Calcular tamanho da estrutura com sizeof 17/05/ :33 27
28 Estrutura dinâmica Curso C - IC/UNICAMP Calcular tamanho da estrutura com sizeof Reservar memória com malloc 17/05/ :33 28
29 Estrutura dinâmica Curso C - IC/UNICAMP Calcular tamanho da estrutura com sizeof Reservar memória com malloc Acessar membros da estrutura com - 17/05/ :33 29
30 Estrutura dinâmica Curso C - IC/UNICAMP Calcular tamanho da estrutura com sizeof Reservar memória com malloc Acessar membros da estrutura com - Liberar memória da estrutura com free 17/05/ :33 30
31 Estrutura dinâmica Curso C - IC/UNICAMP struct complexo { float real; float imaginario; } struct complexo *numero; numero = (struct complexo *) malloc(sizeof(struct complexo)); numero-real = 10.0; numero-imaginario = 5.0; free(numero); 17/05/ :33 NumComlexo 31
32 Apontadores Listas Ligadas 17/05/ :33 32
33 Idéia principal : Vetor: Listas Ligadas Um único grande bloco de memória Elementos consecutivos adjacentes Curso C - IC/UNICAMP 17/05/ :33 33
34 Idéia principal : Vetor: Um único grande bloco de de memória Elementos consecutivos adjacentes Lista ligada: Listas Ligadas Curso C - IC/UNICAMP Cada elemento em posição de de memória separada Posições desordenadas e não consecutivas dados dados dados 17/05/ :33 34
35 Idéia principal : Vetor: Um único grande bloco de de memória Elementos consecutivos adjacentes Lista ligada: Listas Ligadas Curso C - IC/UNICAMP Cada elemento em posição de de memória separada Posições desordenadas e não consecutivas Apontadores para indicar seqûëncia correta inicio_lista dados dados dados NULL 17/05/ :33 35
36 Listas Ligadas: declaração Nome da estrutura struct elemento { int valor; struct elemento *prox; } 17/05/ :33 36
37 Listas Ligadas: declaração struct elemento { int valor; struct elemento *prox; } Apontador para próximo elemento na seqüência Nome da estrutura 17/05/ :33 37
38 Listas Ligadas: declaração Nome da estrutura struct elemento { int valor; struct elemento *prox; } Apontador para próximo elemento na seqüência valor prox valor prox valor prox inicio_lista dados dados dados NULL 17/05/ :33 38
39 Listas Ligadas: percorrer inicio_lista dados dados dados NULL 17/05/ :33 39
40 Listas Ligadas: percorrer inicio_lista dados dados dados NULL struct elemento *atual; atual = inicio_lista; while (atual!= null) { printf(...,atual-valor); } atual = autal-proximo; 17/05/ :33 40
41 Listas Ligadas: inserir em lista vazia inicio_lista NULL NULL 17/05/ :33 41
42 Listas Ligadas: inserir em lista vazia inicio_lista NULL novo novo=(... *)malloc(sizeof(...)); 17/05/ :33 42
43 Listas Ligadas: inserir em lista vazia inicio_lista NULL NULL novo dados NULL novo=(... *)malloc(sizeof(...)); novo-valor =... ; novo-proximo = NULL; 17/05/ :33 43
44 Listas Ligadas: inserir em lista vazia inicio_lista NULL novo dados NULL novo=(... *)malloc(sizeof(...)); novo-valor =... ; novo-proximo = NULL; inicio_lista = novo; 17/05/ :33 44
45 Listas Ligadas: inserir no início, não vazia inicio_lista dados dados dados NULL novo novo=(... *)malloc(sizeof(...)); 17/05/ :33 45
46 Listas Ligadas: inserir no início, não vazia inicio_lista dados dados dados NULL novo dados novo=(... *)malloc(sizeof(...)); novo-valor =... ; 17/05/ :33 46
47 Listas Ligadas: inserir no início, não vazia inicio_lista dados dados dados NULL novo dados novo=(... *)malloc(sizeof(...)); novo-valor =... ; novo-proximo = inicio_lista; 17/05/ :33 47
48 Listas Ligadas: inserir no início, não vazia inicio_lista dados dados dados NULL novo dados novo=(... *)malloc(sizeof(...)); novo-valor =... ; novo-proximo = inicio_lista; inicio_lista = novo; 17/05/ :33 48
49 Listas Ligadas: inserir no fim inicio_lista dados dados dados NULL ultimo struct elemento *ultimo; ultimo = inicio_lista; 17/05/ :33 49
50 Listas Ligadas: inserir no fim inicio_lista dados dados dados NULL ultimo struct elemento *ultimo; ultimo = inicio_lista; while (ultimo-proximo!= null) { ultimo = ultimo-proximo; } 17/05/ :33 50
51 Listas Ligadas: inserir no fim inicio_lista dados dados dados NULL ultimo novo struct elemento *ultimo; ultimo = inicio_lista; while (ultimo-proximo!= null) { ultimo = ultimo-proximo; } novo=(... *)malloc(sizeof(...)); 17/05/ :33 51
52 Listas Ligadas: inserir no fim inicio_lista dados dados dados NULL ultimo novo dados NULL struct elemento *ultimo; ultimo = inicio_lista; while (ultimo-proximo!= null) { ultimo = ultimo-proximo; } novo=(... *)malloc(sizeof(...)); novo-valor =... ; novo-proximo = NULL; 17/05/ :33 52
53 Listas Ligadas: inserir no fim inicio_lista dados dados dados NULL ultimo novo dados NULL struct elemento *ultimo; ultimo = inicio_lista; while (ultimo-proximo!= null) { ultimo = ultimo-proximo; } novo=(... *)malloc(sizeof(...)); novo-valor =... ; novo-proximo = NULL; ultimo-proximo = novo; 17/05/ :33 53
54 Listas Ligadas: inserir no meio (ordenado) anterior inicio_lista dados dados dados dados NULL novo dados novo=(... *)malloc(sizeof(...)); novo-valor =... ; 17/05/ :33 54
55 Listas Ligadas: inserir no meio (ordenado) anterior anterior inicio_lista dados dados dados dados NULL novo dados novo=(... *)malloc(sizeof(...)); novo-valor =... ; // ordenada por valor struct elemento *anterior; anterior = inicio_lista; 17/05/ :33 55
56 Listas Ligadas: inserir no meio (ordenado) anterior anterior inicio_lista dados dados dados dados NULL novo dados novo=(... *)malloc(sizeof(...)); novo-valor =... ; // ordenada por valor struct elemento *anterior; anterior = inicio_lista; while ((anterior- proximo!= NULL) && (anterior-proximo-valor < novo-valor)) { anterior = anterior-proximo;} 17/05/ :33 56
57 Listas Ligadas: inserir no meio (ordenado) anterior anterior inicio_lista dados dados dados dados NULL novo dados NULL novo=(... *)malloc(sizeof(...)); novo-valor =... ; // ordenada por valor struct elemento *anterior; anterior = inicio_lista; while ((anterior- proximo!= NULL) && (anterior-proximo-valor < novo-valor)) { anterior = anterior-proximo;} novo-proximo = anterior-proximo; anterior-proximo = novo; 17/05/ :33 57
58 Listas Ligadas: remover do inicio (não vazia) inicio_lista dados dados dados NULL alvo alvo = inicio_lista; 17/05/ :33 58
59 Listas Ligadas: remover do inicio (não vazia) inicio_lista dados dados dados NULL alvo alvo = inicio_lista; inicio_lista = inicio_lista-proximo; // ou: inicio_lista = alvo-proximo; 17/05/ :33 59
60 Listas Ligadas: remover do inicio (não vazia) inicio_lista dados dados dados NULL alvo alvo = inicio_lista; inicio_lista = inicio_lista-proximo; // ou: inicio_lista = alvo-proximo; free(alvo); 17/05/ :33 60
61 Listas Ligadas: remover no meio ou fim inicio_lista dados dados dados NULL anterior alvo // anterior aponta para o elemento // imediatamente antes de alvo 17/05/ :33 61
62 Listas Ligadas: remover no meio ou fim inicio_lista dados dados dados NULL anterior alvo // anterior aponta para o elemento // imediatamente antes de alvo anterior-proximo = alvo-proximo; 17/05/ :33 62
63 Listas Ligadas: remover no meio ou fim inicio_lista dados dados dados NULL anterior alvo // anterior aponta para o elemento // imediatamente antes de alvo anterior-proximo = alvo-proximo; free(alvo); 17/05/ :33 63
64 Vantagens/Desvantagens: Vantagens: Listas Ligadas Fácil aumento/diminuição no no tamanho da da lista Reserva memória exatamente sob medida Permite mais de de um critério de de ordenação Curso C - IC/UNICAMP inicio_lista dados dados dados NULL 17/05/ :33 64
65 Vantagens/Desvantagens: Vantagens: Fácil aumento/diminuição no no tamanho da da lista Reserva memória exatamente sob medida Permite mais de de um critério de de ordenação Desvantagens: Listas Ligadas Curso C - IC/UNICAMP Para cada elemento, armazena um apontador Não é possível acessar diretamente um elemento inicio_lista dados dados dados NULL 17/05/ :33 65
66 Memória Dinâmica Vetor2Lista Vetor2ListaRec ConcatListas ConcatListasRec InverteLista InverteListaRec InverteListaNaMemoria Vetor2ListaOrd Vetor2ListaOrdRec OperaListasRec OperaComFilas Lista2ListaDupla Express2Arvore DicionarioBinario 17/05/ :33 66
Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica
Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros
Leia mais/*(Atenção: Em se tratando de uma lista estaticamente alocada, temos utilizado a estratégia de passa o tamanho máximo do vetor.)*/
========================TDA.H #include "info.h" #define TRUE 1 #define FALSE 0 #define INI_LISTA 1 #define OK 1; #define NOK -1; typedef struct nolista{ info dados; struct nolista *prox; struct nolista
Leia maisAlgoritmos e Estrutura de Dados. Prof. Tiago A. E. Ferreira
Algoritmos e Estrutura de Dados Aula 7 Estrutura de Dados: Listas Prof. Tiago A. E. Ferreira Introdução Um das formas mais usadas para se manter dados agrupados é a lista Lista de compras, itens de estoque,
Leia maisNúmeros positivos ordenados
Sumário Armazenamento de dados Vectores Vectores dinâmicos Listas Tipos de dados dinâmicos Declaração Uso Exemplos Armazenamento de dados Tamanho conhecido antes compilação Vectores BI vect[200] Tamanho
Leia maisMétodos Computacionais. Fila
Métodos Computacionais Fila Definição de Fila Fila é uma estrutura de dados dinâmica onde: Inserção de elementos se dá no final e a remoção no início O primeiro elemento que entra é o primeiro que sai
Leia maisSumário. Armazenamento de dados. Tipos de dados dinâmicos. Exemplos. Vectores Vectores dinâmicos Dados dinamicos. Declaração Uso 10-1
Sumário Armazenamento de dados Vectores Vectores dinâmicos Dados dinamicos Tipos de dados dinâmicos Declaração Uso Exemplos 10-1 Armazenamento de dados Tamanho conhecido antes compilação Vectores BI vect[200]
Leia maisEstruturas de Dados. Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos
Estruturas de Dados Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos Estruturas de Dados Programação de Computadores 1 de 26 Tipos Estruturados de Dados
Leia maisListas (Parte 2) Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br. BCC202 Aula 10 Algoritmos e Estruturas de Dados I
Listas (Parte 2) Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br BCC202 Aula 10 Algoritmos e Estruturas de Dados I Listas Encadeadas Características: Tamanho da lista não é pré-definido Cada elemento
Leia maisFundamentos de Programação
Fundamentos de Programação CP41F Conversão de tipos. Alocação dinâmica de memória. Recursão. Aula 16 Prof. Daniel Cavalcanti Jeronymo Universidade Tecnológica Federal do Paraná (UTFPR) Engenharia de Computação
Leia mais1/34 GESTÃO DINÂMICA DE MEMÓRIA
1/34 GESTÃO DINÂMICA DE MEMÓRIA Memória Estática 2/34 Memória Estática Exemplo #include main() { int V[300], N; do{ printf ( N =? ); scanf ( %d, &N); while ((N < 0) (N > 300); for (i = 0; i
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 Pilhas Filas Deques Pilhas,,f filas e deques Vimos que as listas lineares admitem inserção e eliminação
Leia maisProgramas operam sobre dados. Dados são relacionados e possuem estrutura. Como representar e manipular dados em um computador
Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar e manipular dados em um computador Para representar um baralho precisamos: Representar cartas: naipe e valor struct
Leia maisProgramação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre
Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 02 Fundamentos de Linguagens Sumário : Linguagem, alfabeto e gramática
Leia mais13. ALOCAÇÃO DINÂMICA DE MEMÓRIA
787878787878787878787878787878787878787878787878787878 13. ALOCAÇÃO DINÂMICA DE MEMÓRIA Sempre é necessário declarar o número de elementos do array. Mas e se ele for desconhecido? E se ele variar? Pode
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 14 Árvores Binárias Edirlei Soares de Lima Árvores Uma estrutura de dados do tipo árvore permite que dados sejam organizados de maneira hierárquica.
Leia maisIntrodução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores
Introdução à Programação Armazenamento de Grande Quantidade de Informação Usando Vetores Armazenando Grande Quantidade de Informação Como armazenar tanta informação? Vetores! 2 Tópicos da Aula Hoje, aprenderemos
Leia maisEstruturas de Dados Aula 15: Árvores 17/05/2011
Estruturas de Dados Aula 15: Árvores 17/05/2011 Fontes Bibliográficas Livros: Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 13; Projeto de Algoritmos (Nivio Ziviani): Capítulo
Leia maisIntrodução a Programação. Ponteiros e Vetores, Alocação Dinâmica
Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes
Leia maisTrabalho 3: Agenda de Tarefas
INF 1620 Estruturas de Dados Semestre 08.2 Trabalho 3: Agenda de Tarefas O objetivo deste trabalho é a implementação de um conjunto de funções para a manipulação de uma agenda de tarefas diárias, de forma
Leia maisLinguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.
Programação Estruturada Linguagem C Fundamentos da Linguagem Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.br Sumário Estrutura Básica Bibliotecas Básicas Tipos de Dados Básicos Variáveis/Declaração
Leia maisProgramação de Computadores I. Ponteiros
Ponteiros Prof. Edwar Saliba Júnior Outubro de 2012 Unidade 13 Ponteiros 1 Identificadores e Endereços Na linguagem C, uma declaração de variável faz associação entre um identificador e endereços de memória;
Leia maisFilas: conceitos e implementações
Estrutura de Dados I Filas: conceitos e implementações Cesar Rocha cesar@pontoweb.com.br 1 Objetivos Explorar os conceitos fundamentais acerca do uso de filas utilizando a linguagem C Organização e implementação,
Leia maisProf. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa
Prof. Yandre Maldonado - 1 PONTEIROS Prof. Yandre Maldonado e Gomes da Costa PONTEIROS Prof. Yandre Maldonado - 2 Ponteiro é uma variável que possui o endereço de outra variável; É um poderoso recurso
Leia mais1 Funções básicas de implementação de arquivos
1 Funções básicas de implementação de arquivos 1.1 Definindo registros Depois de um objeto do mundo real ter sido modelado, ou seja, após seus atributos importantes (e relevantes) terem sido identificados,
Leia maisPROGRAMAÇÃO II 3. FILA DINÂMICA
3. FILA DINÂMICA PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma fila é um tipo especial de lista na qual todas as inserções são feitas sempre depois do fim e as deleções no início. Por isso também recebe
Leia maisIFTO LÓGICA DE PROGRAMAÇÃO AULA 05
IFTO LÓGICA DE PROGRAMAÇÃO AULA 05 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia Elétrica / UnB http://lab.ifto.edu.br/~mcampos http://manoelcampos.com
Leia maisMétodos Computacionais. Árvores
Métodos Computacionais Árvores Árvores Vetores e Listas são ótimos para representar estrutura de dados lineares, mas não para modelar dados hierárquicos Exemplos de dados hierárquicos: sistema de arquivos
Leia maisAlgoritmos e Programação
Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Algoritmos e Programação Parte 05 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti
Leia maisstruct LISTA item quant
UNIVERSIDADE SÃO JUDAS TADEU ESTRUTURA DE DADOS - PROF. H. Senger IMPLEMENTAÇÃO DE LISTAS COM VETORES A implementação de listas utilizando vetores é simples. Existe apenas uma pequena questão, com relação
Leia maisFACULDADE DE TECNOLOGIA SENAC GOIÁS ADELTON HENRIQUE ABISHAI LEMES BORGES NETO HENRIQUE FERREIRA DA SILVA
FACULDADE DE TECNOLOGIA SENAC GOIÁS ADELTON HENRIQUE ABISHAI LEMES BORGES NETO HENRIQUE FERREIRA DA SILVA ESTRUTURA DE DADOS GOIANIA 2015/2 ADELTON HENRIQUE ABISHAI LEMES BORGES NETO HENRIQUE FERREIRA
Leia maisBUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES
BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES ALGORITMOS DE BUSCA EM LISTAS COM ALOCAÇÃO SEQÜENCIAL Busca em Listas Lineares A operação de busca é
Leia maisVariáveis e Comandos de Atribuição
BCC 201 - Introdução à Programação Variáveis e Comandos de Atribuição Guillermo Cámara-Chávez UFOP 1/47 Estrutura Básica de um programa C I < d i r e t i v a s do pré p r o c e s s a d o r > < d e c l
Leia maisLinguagem de Programação I
Linguagem de Programação I Curso de Sistemas de Informação Karla Donato Fook karladf@ifma.edu.br DESU / DAI 2016 Linguagem de Programação C 2 1 Linguagem de Programação C Os programas em C consistem em
Leia maisProgramação Computacional Aula 16: Alocação Dinâmica de Memória
Programação Computacional Aula 16: Alocação Dinâmica de Memória Profa. Madeleine Medrano madeleine@icte.uftm.edu.br Definição Sempre que escrevemos um programa, é preciso reservar espaço para as informações
Leia maisEstruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos
Estruturas de Dados Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Árvores Conceitos Árvores binárias Árvores binárias de pesquisa Árvores binárias balanceadas Árvores ESTRUTURAS
Leia maisTipos de Dado Abstrato: Listas, Filas e Pilhas
Tipos de Dado Abstrato: Listas, Filas e Pilhas Estruturas de Dados Prof. Vilson Heck Junior Introdução Tradicionalmente conhecidos como Tipos de Dado Abstrato, são algumas Estruturas de Dados básicas e
Leia maisINF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 10 Árvores Binárias (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Introdução Árvores binárias Representação em C Ordens de percurso em árvores binárias Altura de uma árvore
Leia maisAlocação dinâmica de memória
Alocação dinâmica de memória Jander Moreira 1 Primeiras palavras Na solução de problemas por meio algoritmos ou programas, é comum surgir a necessidade de manter todo o conjunto de dados a ser processado
Leia maisAlgoritmos e Estruturas de dados
Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 08 Busca em Vetor Edirlei Soares de Lima Busca em Vetor Problema: Entrada: vetor v com n elementos; elemento d a procurar; Saída: m se o elemento procurado
Leia maisÍndice. Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial
Índice i Índice Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial 1. A Estrutura Abstrata de Dados Lista... 1 1.1. Definição... 1 1.2. Implementação de Listas utilizando armazenamento
Leia maisCapítulo 6. Gerenciamento de Arquivos. 6.1 Arquivos 6.2 Diretórios 6.3 Implementação (6.3.1 a 6.3.6) 6.4 Exemplos
Capítulo 6 Gerenciamento de Arquivos 6.1 Arquivos 6.2 Diretórios 6.3 Implementação (6.3.1 a 6.3.6) 6.4 Exemplos 1 Armazenamento de longo prazo 1. Deve guardar grandes volumes de dados. 2. Informação armazenada
Leia maisHashing (Tabela de Dispersão)
Hashing (Tabela de Dispersão) Motivação! Os métodos de pesquisa vistos até agora buscam informações armazenadas com base na comparação de suas chaves.! Para obtermos algoritmos eficientes, armazenamos
Leia maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA
Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais
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 maisProf. Bruno Calegaro
Prof. Bruno Calegaro Fazendo o uso de chamadas de sistema, o usuário pode realizar operações de manipulação nos arquivos ou diretórios As operações de entrada e saída básicas são: create open read write
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 maisINF 1620 P2-01/11/03 Questão 1 Nome:
INF 1620 P2-01/11/03 Questão 1 Considere a implementação de uma lista encadeada para armazenar as notas dos alunos de uma turma dada pelo tipo abaixo: struct lista { char nome[81]; int mat; float p1, p2,
Leia maisUNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO
Curso: Engenharia de Computação e Ciência da Computação Data: 10/09/2013 Disciplina: Programação Estruturada Valor: 3,0 pontos Professor: Henrique Monteiro Cristovão Nota: Aluno: Prova resolvida 4ª Prova
Leia maisLinguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador
Linguagem C Tipos de Dados void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Funções void void pode ser usado em lugar de um tipo, para indicar a ausência de valor
Leia maisComputadores Digitais 2. Prof. Rodrigo de Souza Couto
Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Vetores e alocação dinâmica Vetores Alocação dinâmica Vetores locais e funções ATENÇÃO Esta apresentação
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 maisA Pilha. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria
Engenharia de CONTROLE e AUTOMAÇÃO A Pilha Aula 02 DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria beltrame@mail.ufsm.br 1/5
Leia maisMC102 Algoritmos e programação de computadores Aula 3: Variáveis
MC102 Algoritmos e programação de computadores Aula 3: Variáveis Variáveis Variáveis são locais onde armazenamos valores na memória. Toda variável é caracterizada por um nome, que a identifica em um programa,
Leia maisOrientação a Objetos. Conceitos Iniciais Introdução a Linguagem Java. Gil Eduardo de Andrade
Orientação a Objetos Conceitos Iniciais Introdução a Linguagem Java Gil Eduardo de Andrade Conceitos: Orientação a Objeto Introdução Abordagem típica no desenvolvimento de sistemas complexos; Consiste
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 maisAULA 16 - Sistema de Arquivos
AULA 16 - Sistema de Arquivos Arquivos podem ser vistos como recipientes que contêm dados ou como um grupo de registros correlatos. Os arquivos armazenam informações que serão utilizadas, em geral, por
Leia maisEAD Fila. - algumas operações realizam-se na frente/cabeça e outras na cauda da Fila
EAD Fila - os seus elementos são processados por ordem de chegada: - o primeiro elemento a entrar na Fila é o primeiro a sair - FIFO ( First In First Out ). - algumas operações realizam-se na frente/cabeça
Leia maisBusca em Memória. Secundária
UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Busca em Memória Secundária e Gomes da Costa yandre@din.uem.br 1 Busca de um item em uma massa de dados que não cabe na memória principal; Procura-se
Leia maisTabela ASCII de caracteres de controle
Caracteres Estruturas de Dados Aula 6: Cadeias de Caracteres 31/03/2010 Caracteres são representados internamente por códigos numéricos Tipo char (inteiro pequeno ) 1 byte (8 bits) 256 caracteres possíveis
Leia maisLISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados
LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS Listas Lineares Como visto anteriormente, as operações básicas para o nosso TAD Lista Linear são: FLVazia Vazia Retira Insere Imprime A implementação através de arrays
Leia maisPilhas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes
Pilhas Fabrício J. Barth BandTec - Faculdade de Tecnologia Bandeirantes Fevereiro de 2011 Tópicos Principais Introdução Interface do tipo pilha Exemplo de uso: verificação de expressões Implementação de
Leia maisAULA 6. Conceitos. Melhores momentos. Conceitos. Conceitos. Conceitos. Conceitos
Melhores momentos AULA Endereços: a memória é um vetor e o índice desse vetor onde está uma variável é o endereço da variável. Com o operador & obtemos o endereço de uma variável. Exemplos: &i é o endereço
Leia maisSOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum
SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Cronograma Introdução
Leia maisReinaldo Gomes Alocação Dinâmica
Algoritmos e Lógica de Programação Linguagem C Alocação Dinâmica i de Memória Reinaldo Gomes reinaldo@cefet-al.br Alocação Dinâmica Quando declaramos uma variável ou um arranjo, o compilador automaticamente
Leia maisLinguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação
Linguagem C: variáveis, operadores, entrada/saída Prof. Críston Algoritmos e Programação Linguagem C Linguagem de uso geral (qualquer tipo de aplicação) Uma das linguagens mais utilizadas Foi utilizada
Leia maisPIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS ALGORITMOS & ESTRUTURAS DE DADOS
PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS Disciplina de Nivelamento - 2000/1: ALGORITMOS & ESTRUTURAS DE DADOS Professor Responsável: Prof. Fernando Santos
Leia maisLINGUAGEM C: ALOCAÇÃO DINÂMICA
LINGUAGEM C: ALOCAÇÃO DINÂMICA Prof. André Backes DEFINIÇÃO Sempre que escrevemos um programa, é preciso reservar espaço para as informações que serão processadas. Para isso utilizamos as variáveis Uma
Leia maisLinguagem C: Árvores Binarias
Instituto de C Linguagem C: Árvores Binarias Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Tópicos Principais Introdução Árvores binárias Implementação
Leia maisPlano de Aula. if(condição) { bloco de comandos; } else { bloco de comandos2; }
Instituto Federal de Santa Catarina - Câmpus Chapecó Ensino Médio Integrado em Informática - Módulo IV Unidade Curricular: Programação Estruturada Professora: Lara Popov Zambiasi Bazzi Oberderfer Plano
Leia maisLinguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto
Linguagem C O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional UNIX. O C é derivado de uma outra linguagem: o B,
Leia mais2ª Lista de Exercícios
Universidade Federal de Minas Gerais Departamento de Ciência da Computação Algoritmos e Estruturas de Dados II (Turmas M, N, W, F) 1º Semestre de 2012 Profs. Camilo Oliveira, Gisele Pappa, Ítalo Cunha,
Leia maisP r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m - 2 0 1 3 P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:
Inteligência É a faculdade de criar objetos artificiais, especialmente ferramentas para fazer ferramentas. Henri Bergson. WHILE Além dos comandos if-else e switch, o controle de fluxo de um programa pode
Leia maisEstrutura de Dados Básica
Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 4: Tipos de Dados O objetivo desta aula é apresentar os tipos de dados manipulados pela linguagem C, tais como vetores e matrizes, bem como
Leia maisUniversidade de Brasília. Departamento de Ciência da Computação. Curso C: Estruturas. Prof. Ricardo Pezzuol Jacobi
Universidade de Brasília Departamento de Ciência da Computação Curso C: Estruturas Prof. Ricardo Pezzuol Jacobi rjacobi@cic.unb.br Estruturas Struct s o cole es de dados heterog neos agrupados em uma mesma
Leia maisEstruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C
Estruturas de Dados Revisão de Ponteiros 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 e Arranjos
Leia maisAlocação Estática e Dinâmica. Prof. M.Sc. Mariella Berger
Alocação Estática e Dinâmica Prof. M.Sc. Mariella Berger http://www.inf.ufes.br/~mberger mberger@inf.ufes.br mariellaberger@gmail.com Alocação Estática Estratégia de alocação de memória na qual toda a
Leia maisAlgoritmos e Programação _ Departamento de Informática
16 ARQUIVOS Um arquivo corresponde a um conjunto de informações (exemplo: uma estrutura de dados-registro), que pode ser armazenado em um dispositivo de memória permanente, exemplo disco rígido. As operações
Leia maisFundamentos de Programação
Fundamentos de Programação CP41F Aula 38 Prof. Daniel Cavalcanti Jeronymo Declaração de tipos (typedef). Tipos enumerados (enum). Registros (struct). Uniões (union). Universidade Tecnológica Federal do
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 C. Estrutura básica de um programa
LINGUAGEM C Estrutura básica de um programa Um programa em linguagem C é constituído por uma sequência de funções (módulos) que em conjunto irão permitir resolver o problema proposto. Estas funções contêm
Leia maisLinguagem C. Ponteiros. Alex Vidigal Bastos.
Linguagem C Ponteiros Alex Vidigal Bastos alexvbh@gmail.com Ponteiros Ponteiros são variáveis que contém endereços. Estas variáveis apontam para algum determinado endereço da memória. Em geral, o ponteiro
Leia maisFila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC 5710 - Estruturas de Dados - 2008
MAC 5710 - Estruturas de Dados - 2008 Fila de prioridade Fila de prioridade é uma estrutura de dado que mantém uma coleção de elementos, cada um com uma prioridade associada. Valem as operações seguintes.
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 06 Tipos Estruturados Edirlei Soares de Lima Dados Compostos Até agora somente utilizamos tipos de dados simples: char, int, float, double. Muitas vezes
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 05 Cadeias de Caracteres Edirlei Soares de Lima Caracteres Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência
Leia maishttp://www.dcc.ufmg.br/algoritmos/transparenc ias.php
Estruturas Aula 8: 10/09/2008 Listas de Informação (parte 2) TAD /* FLVazia(Lista). Faz Lista a lista (1) /* Insere(x, Input: Output: Pré-condição: Pós-condição: L L ficar L édefinida vazia */ Pós-condição:
Leia maisESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti
ESTRUTURAS DE DADOS I Notas de Aula 1 SUMÁRIO 1. INTRODUÇÃO... 2 1.1 Array (vetores)... 2 2. BUSCA DE ELEMENTOS... 3 2.1 Busca Seqüencial... 3 2.2 Busca Binária... 3 2.3 Busca Indexada... 3 2.4 Busca Hash...
Leia maisDepartamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010
Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010 Aluno: Matrícula: Turma: Instruções: 1) Escreva seu nome completo, matrícula e turma; 2) A prova deve ser completamente resolvida
Leia maisINF 1010 Estruturas de Dados Avançadas
INF 1010 Estruturas de Dados Avançadas Listas de Prioridades e Heaps 1 Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um
Leia maisEAD Árvore árvore binária
EAD Árvore árvore binária - Uma árvore binária é um conjunto finito de elementos (nodos) que pode ser vazio ou particionado em três subconjuntos: - raiz da árvore (elemento inicial, que é único); - subárvore
Leia maisINF1007: Programação 2. 2 Alocação Dinâmica. 17/02/2014 (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 2 Alocação Dinâmica 17/02/2014 (c) Dept. Informática - PUC-Rio 1 Tópicos Alocação dinâmica Vetores locais e funções 17/02/2014 (c) Dept. Informática - PUC-Rio 2 Alocação Dinâmica
Leia maisEstruturas de Dados. Profa. Juliana Pinheiro Campos
Estruturas de Dados Profa. Juliana Pinheiro Campos Vetores Forma mais simples de estruturar um conjunto de dados. Exemplo: int p[10]; // vetor de inteiros com 10 elementos Reserva de um espaço de memória
Leia maisProgramação de Computadores II
Programação de Computadores II 2019.1 Endereço e Ponteiro Endereço Ao colocarmos o símbolo & temos o endereço daquela variável. Ponteiro Ao colocarmos o símbolo * temos o valor da variável armazenada num
Leia maisEstruturas (Registros)
Estruturas (Registros) Agrupa conjunto de tipos de dados distintos sob um único nome string string inteiro inteiro inteiro float float Cadastro Pessoal Nome Endereço Telefone Idade Data de Nascimento Peso
Leia maisEstruturas de Dados I
UFES - Curso de verão 2011 Estruturas de Dados I Profa. Juliana Pinheiro Campos jupcampos@gmail.com Árvores binárias de busca (ou São árvores projetadas para dar suporte a operações de busca de forma eficiente.
Leia mais