Sumário. Armazenamento de dados. Tipos de dados dinâmicos. Exemplos. Vectores Vectores dinâmicos Dados dinamicos. Declaração Uso 10-1



Documentos relacionados
Números positivos ordenados

Curso de C. Memória Dinâmica 17/05/ :33 1

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Introdução a POO. Introdução a Linguagem C++ e POO

Trabalho 3: Agenda de Tarefas

Estruturas de Dados. Alguns dados não costumam ser tão simples assim... Podem ser compostos por vários dados distintos

Fundamentos de Programação

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

Programas operam sobre dados. Dados são relacionados e possuem estrutura. Como representar e manipular dados em um computador

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

struct LISTA item quant

EAD Fila. - algumas operações realizam-se na frente/cabeça e outras na cauda da Fila

Busca. Pesquisa sequencial

/*(Atenção: Em se tratando de uma lista estaticamente alocada, temos utilizado a estratégia de passa o tamanho máximo do vetor.)*/

EAD Árvore árvore binária

Persistência de Dados

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

2ª Lista de Exercícios

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11

Estrutura de Dados Pilha (Stack)

Índice. Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial

Algoritmos e Programação _ Departamento de Informática

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

Estruturas de Dados Aula 15: Árvores 17/05/2011

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

Alocação dinâmica de memória

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza

Algoritmos e Estrutura de Dados. Prof. Tiago A. E. Ferreira

Filas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Algoritmos e Programação

Métodos Computacionais. Fila

INF 1007 Programação II

Algoritmos e Programação Estruturada

Enunciados de exercícios seleccionados de testes e exames P2 / EDa

Linguagem C: Árvores Binarias

PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS ALGORITMOS & ESTRUTURAS DE DADOS

Métodos Computacionais. Árvores

Algoritmos e Estruturas de Dados: Árvore Binária

INF 1007 Programação II

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

DAS5102 Fundamentos da Estrutura da Informação

INF 1007 Programação II

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais:

Estruturas de Dados I

Lista restrita onde as operações de inserção e retirada são feitas nas extremidades. Deque (fila de final duplo).

Introdução à Programação

Estruturas de Dados Aula 11: TAD Pilha 09/05/2011

Aula 3 Alocação Dinâmica

PROGRAMAÇÃO II 3. PILHA DINÂMICA

Primeiro Curso de Programação em C 3 a Edição

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

10. Listas Encadeadas

Introdução. A verificação de tipos pode ser estática e dinâmica

Programação: Tipos, Variáveis e Expressões

Programa ConsoleRPN. PUC-Rio CIV Sistemas Gráficos para Engenharia Luiz Fernando Martha & André Maués Brabo Pereira

Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II

Aula teórica: /6. Enunciado

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

13. ALOCAÇÃO DINÂMICA DE MEMÓRIA

Tipo de Dados em Linguagem C

Listas (Parte 2) Túlio Toffolo BCC202 Aula 10 Algoritmos e Estruturas de Dados I

7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS

Estruturas (Registros)

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

Árvores Binárias de Busca

ias.php

Algoritmos e Estruturas de dados

Figura 13.1: Um exemplo de árvore de diretório.

ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) (a) Seja um TAD definido por uma lista circular implementada em um vetor.

Pesquisa em Memória Primária. Prof. Jonas Potros

Programação Estruturada I

ALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

AULA 6. Conceitos. Melhores momentos. Conceitos. Conceitos. Conceitos. Conceitos

Algoritmos e Estruturas de Dados

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

Algoritmos e Estrutura de Dados II

Hashing (Tabela de Dispersão)

MC-102 Algoritmos e Programação de Computadores

Pesquisa Sequencial e Binária

Alocação Estática e Dinâmica. Prof. M.Sc. Mariella Berger

Estrutura de Dados Básica

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

PROGRAMAÇÃO II 3. FILA DINÂMICA

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

Capítulo 2: Introdução à Linguagem C

Manipulação de Arquivos

Transcrição:

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] Tamanho conhecido durante a execução Vectores dinâmicos BI * vect; Vect = (BI *) calloc (n, sizeof(bi)) 10-2

Armazenamento de dados E se comprimento variar? E se quisermos inserir ordenado? E se quisermos remover? E se o vector estiver cheio? Complexo com vectores dinâmicos Solução 10-3

Números positivos ordenados 0 0 0 0 0 0 0 0 0 0 Inserir 10 10-4

Números positivos ordenados 10 0 0 0 0 0 0 0 0 0 Inserir 12 10-5

Números positivos ordenados 10 12 0 0 0 0 0 0 0 0 Inserir 5 10-6

Números positivos ordenados 10 0 12 0 0 0 0 0 0 0 Inserir 5 10-7

Números positivos ordenados 0 10 12 0 0 0 0 0 0 0 Inserir 5 10-8

Números positivos ordenados 5 10 12 0 0 0 0 0 0 0 Inserir 11 10-9

Números positivos ordenados 5 10 0 12 0 0 0 0 0 0 Inserir 11 10-10

Números positivos ordenados 5 10 11 12 0 0 0 0 0 0 10-11

Números positivos ordenados 3 5 7 8 10 11 12 14 25 37 E se estiver cheio? Se criado com calloc Redimensionamento do vector Senão 10-12

Memória Dinâmica Variáveis locais Existentes apenas dentro de uma função Acessíveis a partir dessa função Memória dinâmica Dados existem Entre criação e destruição Acessíveis por várias funções Evita sobredimensão dos vectores 10-13

sizeof Retorna o número de bytes ocupados por uma variável dum tipo sizeof(char) 1 sizeof(int) 4 sizeof(char *) 4 sizeof(int *) 4 sizeof(bi *) 4 sizeof(bi) muitos 10-14

Números positivos ordenados base 10 novo Inserir 10 10-15

Números positivos ordenados aux base 10 12 novo Inserir 12 10-16

Números positivos ordenados aux base 10 12 novo 5 Inserir 5 10-17

Números positivos ordenados aux base 10 12 novo 5 Inserir 11 11 10-18

Números positivos ordenados aux base 10 12 novo 5 Fim 11 10-19

Declaração O tipo (estrutura) inclui Campo com os dados Campo com referência para outra estrutura (do mesmo tipo) struct dim_st{ } tipodados x; struct dim_st *seg; typedef struct dim_st dinamic; typedef struct dim_st{ tipodados x; struct dim_st *seg; }dinamic; 10-20

Declaração Declaração inválida linha 3: ainda não sabemos o que é dinamic 1. typedef struct dim_st{ 2. tipodados x; 3. dinamic *seg; 4. }dinamic; 10-21

Criação Uma caixinha para cada valor Função malloc Semelhante ao calloc Mas só cria uma estrutura Novo = (tipo *) malloc (sizeof(tipo)); Pode retornar NULL se houver erro if (Novo == NULL) 10-22

Pilha Fila Lista 6 23 67 99 NULL Qual a diferença? Estrutura (typedef): nenhuma :) Funções (código): quase toda 10-23

/abstractos Operações Cria_nova Insere Remove Procura (só a lista) Cimo (só pilha) Primeiro (só fila) 10-24

Decisões O que é uma XXXX vazia Onde termina uma XXXX terminador Qual a ordem das setas Como se insere No início? No fim? No meio? Ordenado crescente Ordenado decrescente 10-25

Pilha Usos Arrumar coisas :) Calculador RPN Inverter ordem de coisas Operação Inserir No cimo Retirar O último a entrar 10-26

Pilha Inserir Inserir(p1, 12) Onde? p1 6 6 6 6 NULL 12 12?? 10-27

Fila Inserir Inserir(p1, 12) Onde? p1 6 6 6 6 NULL 12 12?? 10-28

Lista Inserir Inserir(p1, 12) Onde? p1 8 10 16 17 NULL 4 12?? 10-29

Gestão de memória Os blocos criados (calloc ou malloc) Devem ser sempre acessíveis Se não acessíveis são lixo Devem ser destruídos com o free char * ptr; ptr = (char *) malloc(sizeof(char));... free(ptr); 10-30