SlideShare una empresa de Scribd logo
1 de 24
ANHANGUERA – 2015.2
ESTRUTURA DE DADOS
AULA 04 – MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Prof. Thomás da Costa
thomascosta@aedu.com
ESTRUTURA DE DADOS – Prof. Thomás da Costa
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
ESTRUTURA DE DADOS – Prof. Thomás da Costa
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Matrizes
São vetores que possuem duas ou mais dimensões para armazenar valores.
Uma matriz de duas dimensões, possui um comportamento semelhante ao de
uma tabela com linhas e colunas.
O que é:
ESTRUTURA DE DADOS – Prof. Thomás da Costa
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Matrizes
Exemplo:
int valor[4][4] = {
{0, 0 ,0 ,0},
{0, 1 ,1 ,0},
{0, 1 ,1 ,0},
{0, 0 ,0 ,0}
};Declaração de uma matriz
ESTRUTURA DE DADOS – Prof. Thomás da Costa
#include <iostream>
using namespace std;
int main()
{
int valor[4][4] = {
{0, 0 ,0 ,0},
{0, 1 ,1 ,0},
{0, 1 ,1 ,0},
{0, 0 ,0 ,0}
};
for (int i=0;i<=3;i++)
{
for (int j=0;j<=3;j++)
{
cout << valor[i][j];
}
cout << endl;
}
}
Exemplo 1
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Matrizes
Podemos atribuir valores para uma posição de uma matriz utilizando
diretamente os seus índices.
Atribuição de Valor:
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
valor[0][2] = 22;
ESTRUTURA DE DADOS – Prof. Thomás da Costa
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Matrizes
• Sempre usar com sabedoria !!!
• Quanto maior o tamanho da matriz, maior a quantidade de memória
ocupada.
• A memória da matriz é de alocação estática.
• Podemos declarar qualquer tipo de matriz.
• Matrizes podem possuir várias dimensões, mas cuidado ao utilizar.
• Não se esqueça: computador tem memória limitada !!! 
• Para acessar as informações de uma matriz vamos precisar sempre de dois
índices.
Detalhes:
ESTRUTURA DE DADOS – Prof. Thomás da Costa
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Alocação de Memória
O que vamos aprender:
• Vamos conhecer dois tipos de alocação de memória:
• Estática
• Dinâmica
ESTRUTURA DE DADOS – Prof. Thomás da Costa
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Alocação de Memória
• Variáveis são alocadas na memória do computador.
• As variáveis declaradas pelos nossos programas, são alocadas de acordo
com seus tamanhos e tipos.
• Obviamente, cada variável tem um tamanho definido. Conforme a tabela
abaixo:
Detalhes:
Tipo Tamanho em Bytes Faixa Mínima
char 1 -127 a 127
int 4 -2.147.483.648 a 2.147.483.647
float 4 6 dígitos de precisão
double 8 15 dígitos de precisão
ESTRUTURA DE DADOS – Prof. Thomás da Costa
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Alocação de Memória
• Alocação estática é controlada pelo compilador.
• Não é possível alterar o espaço da alocação de memória.
• Na alocação estática, a área de memória ocupada por ela se mantém
constante durante toda a execução.
Estática:
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Alocando memória:
Para o nosso exemplo, vamos efetuar a alocação estática, simplesmente
declarando uma variável.
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Alocação Estática
int valor;
ESTRUTURA DE DADOS – Prof. Thomás da Costa
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Alocação de Memória
• Alocação dinâmica é controlada pelo desenvolvedor.
• A memória pode ser desalocada durante o decorrer do programa.
• O tamanho da alocação é sob demanda, ou seja, em tempo de execução.
• Vamos utilizar alocação dinâmica de memória principalmente com struct.
• Não se esqueça: um computador tem memória limitada. 
• Não se esqueça de desalocar a memória da variável quando não for mais
necessário o uso.
Dinâmica:
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Alocando memória:
Para o nosso exemplo, vamos efetuar a alocação dinâmica de memória utilizando a
palavra reservada new.
Efetuando a alocação de memória
alunos *novo_aluno = new alunos;
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Alocação Dinâmica
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Desalocando memória:
Para o nosso exemplo, vamos efetuar a desalocação dinâmica de memória
utilizando a palavra reservada delete.
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Alocação Dinâmica
Efetuando a desalocação de memória
delete lista_alunos;
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Lista Ligada Simples:
É uma lista de elementos ligados em sequência. Normalmente utilizamos
estruturas para representar lista ligadas.
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Listas
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Mais detalhes:
• São representados por estruturas.
• São estruturas dentro de estruturas encadeadas.
• A estrutura interna sempre é um ponteiro para outra estrutura.
• Sendo um ponteiro, indica o endereço da próxima estrutura.
• Vamos trabalhar com inserção no fim da lista encadeada.
• Utilizadas para armazenar valores na memória de fácil acesso.
Listas
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Como funciona:
Um elemento de uma lista, possui o endereço do próximo. O último elemento da
lista tem o valor NULL.
1 2 3
Elementos da lista ligada simples
Endereço de memória para o próximo elemento
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Listas
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Exemplo:
Próximo elemento da listastruct alunos
{
char nome[100];
int idade;
alunos *proximo;
} *lista_alunos;
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Listas
ESTRUTURA DE DADOS – Prof. Thomás da Costa
#include <iostream>
#include <strings.h>
#include <conio.h>
#include <limits>
using namespace std;
struct alunos
{
char nome[100];
int idade;
alunos *proximo;
} *lista_alunos;
void iniciar_lista();
void inserir_aluno();
void listar_alunos();
void menu();
void limpar_teclado();
...
Exemplo 2
ESTRUTURA DE DADOS – Prof. Thomás da Costa
...
int main()
{
int opcao = -1;
iniciar_lista();
while (opcao != 0)
{
menu();
cin >> opcao;
if (opcao == 1)
inserir_aluno();
else if (opcao == 2)
listar_alunos();
}
delete lista_alunos;
}
...
Exemplo 2
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Exemplo 2
Adicionando no final da lista
...
alunos *novo_aluno = new alunos;
cout << "Digite o nome do aluno:" << endl;
gets(novo_aluno->nome);
cout << "Digite a idade do aluno:" << endl;
cin >> novo_aluno->idade;
novo_aluno->proximo = NULL;
if (lista_alunos == NULL)
lista_alunos = novo_aluno;
else
{
alunos *p;
p = lista_alunos;
while (p->proximo != NULL)
p = p->proximo;
p->proximo = novo_aluno;
}
...
ESTRUTURA DE DADOS – Prof. Thomás da Costa
...
alunos *p;
p = lista_alunos;
if (p->proximo == NULL)
{
cout << "------------------------------------" << endl;
cout << "Nome do Aluno:" << p->nome << endl;
cout << "Idade do Aluno:" << p->idade << endl;
cout << "------------------------------------" << endl;
}
else
{
while (p != NULL)
{
cout << "------------------------------------" << endl;
cout << "Nome do Aluno:" << p->nome << endl;
cout << "Idade do Aluno:" << p->idade << endl;
cout << "------------------------------------" << endl;
p = p->proximo;
}
}
...
Exemplo 2
Percorrendo a lista ligada
ESTRUTURA DE DADOS – Prof. Thomás da Costa
• Matrizes são vetores com duas ou mais dimensões.
• Existem dois tipos de alocação de memória.
• Alocação Estática.
• Alocação Dinâmica.
• Variáveis possuem um tipo e um tamanho definido.
• Listas são representadas por estruturas.
• Listas são estruturas dentro de estruturas encadeadas.
• A estrutura interna sempre é um ponteiro para outra estrutura.
• Sendo um ponteiro, indica o endereço da próxima estrutura.
• Listas são utilizadas para armazenar valores na memória de fácil acesso.
MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
Resumo
Obrigado !!!
ANHANGUERA – 2015.2

Más contenido relacionado

La actualidad más candente

Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03thomasdacosta
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesLeinylson Fontinele
 
Explicando Estruturas/Registros no C#
Explicando Estruturas/Registros no C#Explicando Estruturas/Registros no C#
Explicando Estruturas/Registros no C#Denis Fernandes Gomes
 
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaEstrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaLeinylson Fontinele
 
Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)Leinylson Fontinele
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Ricardo Terra
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Leinylson Fontinele
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem CVê Rodrigues
 
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUACândido Sales Gomes
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacaotaniamaciel
 
Estruturas de Dados em C#
Estruturas de Dados em C#Estruturas de Dados em C#
Estruturas de Dados em C#Marcelo Charan
 
Conceitos inicias de banco de dados Mysql
Conceitos inicias de banco de dados MysqlConceitos inicias de banco de dados Mysql
Conceitos inicias de banco de dados Mysqlbinhoetec
 
A Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialA Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialFlávio Schuindt
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoVitor Silva
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonDiogo Gomes
 

La actualidad más candente (20)

Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
 
String
StringString
String
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e Funções
 
Explicando Estruturas/Registros no C#
Explicando Estruturas/Registros no C#Explicando Estruturas/Registros no C#
Explicando Estruturas/Registros no C#
 
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaEstrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
 
Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
Usar explicação
Usar explicaçãoUsar explicação
Usar explicação
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
 
Listas: conceito e estáticas
Listas:  conceito e estáticasListas:  conceito e estáticas
Listas: conceito e estáticas
 
Apostila aed
Apostila aedApostila aed
Apostila aed
 
Extendendo o Amavisd New
Extendendo o Amavisd NewExtendendo o Amavisd New
Extendendo o Amavisd New
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
 
Estruturas de Dados em C#
Estruturas de Dados em C#Estruturas de Dados em C#
Estruturas de Dados em C#
 
Conceitos inicias de banco de dados Mysql
Conceitos inicias de banco de dados MysqlConceitos inicias de banco de dados Mysql
Conceitos inicias de banco de dados Mysql
 
A Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialA Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicial
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
 

Destacado

Alocação Dinâmica em Linguagem C
Alocação Dinâmica em Linguagem CAlocação Dinâmica em Linguagem C
Alocação Dinâmica em Linguagem CGlécio Rodrigues
 
(ED1) Tópico 01 - Conceitos Básicos
(ED1) Tópico 01 - Conceitos Básicos(ED1) Tópico 01 - Conceitos Básicos
(ED1) Tópico 01 - Conceitos BásicosFabricio Narcizo
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dadosNegoTux Jean
 
Internet das Coisas com Java e Things API
Internet das Coisas com Java e Things APIInternet das Coisas com Java e Things API
Internet das Coisas com Java e Things APIGlobalcode
 
Enterprise JavaBeans simples e descomplicado, na prática
Enterprise JavaBeans simples e descomplicado, na práticaEnterprise JavaBeans simples e descomplicado, na prática
Enterprise JavaBeans simples e descomplicado, na práticaGlobalcode
 
Palestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao JavafxPalestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao Javafxalfredofurtado
 
Campus Party 2014 - Internet das Coisas com coisas reais
Campus Party 2014 - Internet das Coisas com coisas reaisCampus Party 2014 - Internet das Coisas com coisas reais
Campus Party 2014 - Internet das Coisas com coisas reaisGlobalcode
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem PráticaEder Magalhães
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01thomasdacosta
 
JavaFx - Guia Prático
JavaFx - Guia PráticoJavaFx - Guia Prático
JavaFx - Guia Práticodanielfc
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXjesuinoPower
 
Internet das Coisas com Coisas Reais: Java , Things API, Raspberry PI e Toys!
Internet das Coisas com Coisas Reais:  Java , Things API, Raspberry PI e Toys!Internet das Coisas com Coisas Reais:  Java , Things API, Raspberry PI e Toys!
Internet das Coisas com Coisas Reais: Java , Things API, Raspberry PI e Toys!Globalcode
 
INTERIOR DO COMPUTADOR
INTERIOR DO COMPUTADORINTERIOR DO COMPUTADOR
INTERIOR DO COMPUTADORelectricgirl
 

Destacado (20)

Função malloc
Função mallocFunção malloc
Função malloc
 
Alocação Dinâmica em Linguagem C
Alocação Dinâmica em Linguagem CAlocação Dinâmica em Linguagem C
Alocação Dinâmica em Linguagem C
 
Pged 02
Pged 02Pged 02
Pged 02
 
(ED1) Tópico 01 - Conceitos Básicos
(ED1) Tópico 01 - Conceitos Básicos(ED1) Tópico 01 - Conceitos Básicos
(ED1) Tópico 01 - Conceitos Básicos
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Pilha e Fila Estática
Pilha e Fila EstáticaPilha e Fila Estática
Pilha e Fila Estática
 
Javafx Introdução
Javafx IntroduçãoJavafx Introdução
Javafx Introdução
 
Internet das Coisas com Java e Things API
Internet das Coisas com Java e Things APIInternet das Coisas com Java e Things API
Internet das Coisas com Java e Things API
 
Java persintence api
Java persintence apiJava persintence api
Java persintence api
 
Enterprise JavaBeans simples e descomplicado, na prática
Enterprise JavaBeans simples e descomplicado, na práticaEnterprise JavaBeans simples e descomplicado, na prática
Enterprise JavaBeans simples e descomplicado, na prática
 
Palestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao JavafxPalestra Sepai Alfredofurtado Introducao Ao Javafx
Palestra Sepai Alfredofurtado Introducao Ao Javafx
 
Ria e Java FX
Ria e Java FXRia e Java FX
Ria e Java FX
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Campus Party 2014 - Internet das Coisas com coisas reais
Campus Party 2014 - Internet das Coisas com coisas reaisCampus Party 2014 - Internet das Coisas com coisas reais
Campus Party 2014 - Internet das Coisas com coisas reais
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem Prática
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01
 
JavaFx - Guia Prático
JavaFx - Guia PráticoJavaFx - Guia Prático
JavaFx - Guia Prático
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFX
 
Internet das Coisas com Coisas Reais: Java , Things API, Raspberry PI e Toys!
Internet das Coisas com Coisas Reais:  Java , Things API, Raspberry PI e Toys!Internet das Coisas com Coisas Reais:  Java , Things API, Raspberry PI e Toys!
Internet das Coisas com Coisas Reais: Java , Things API, Raspberry PI e Toys!
 
INTERIOR DO COMPUTADOR
INTERIOR DO COMPUTADORINTERIOR DO COMPUTADOR
INTERIOR DO COMPUTADOR
 

Similar a Matrizes, Listas e Alocação Dinâmica

Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06thomasdacosta
 
Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03thomasdacosta
 
BD I - Aula 15 B - Criacao de tabelas
BD I - Aula 15 B - Criacao de tabelasBD I - Aula 15 B - Criacao de tabelas
BD I - Aula 15 B - Criacao de tabelasRodrigo Kiyoshi Saito
 
Lógica de programação em ppt
Lógica de programação em pptLógica de programação em ppt
Lógica de programação em pptAndrei Bastos
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dadosgjpbg
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2Leandro Lopes
 
Fundamentos de SQL - Parte 2 de 8
Fundamentos de SQL - Parte 2 de 8Fundamentos de SQL - Parte 2 de 8
Fundamentos de SQL - Parte 2 de 8Emiliano Barbosa
 
Aula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrõesAula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrõesDalton Martins
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Emiliano Barbosa
 
Apresentação cassandra
Apresentação cassandraApresentação cassandra
Apresentação cassandraRichiely Paiva
 
aula5 - Manipulação de Strings.pdf
aula5 -  Manipulação de Strings.pdfaula5 -  Manipulação de Strings.pdf
aula5 - Manipulação de Strings.pdfDionatasSantos2
 
Ordenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesOrdenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesMauricio Volkweis Astiazara
 
Estruturas de dados e técnicas de programação
Estruturas de dados e técnicas de programaçãoEstruturas de dados e técnicas de programação
Estruturas de dados e técnicas de programaçãoEverson Wolf
 
Net Coders Ladies - Introdução a Banco de Dados
Net Coders Ladies - Introdução a Banco de Dados Net Coders Ladies - Introdução a Banco de Dados
Net Coders Ladies - Introdução a Banco de Dados Aline Lavorato
 

Similar a Matrizes, Listas e Alocação Dinâmica (20)

Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06
 
Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03
 
BD I - Aula 15 B - Criacao de tabelas
BD I - Aula 15 B - Criacao de tabelasBD I - Aula 15 B - Criacao de tabelas
BD I - Aula 15 B - Criacao de tabelas
 
Python 02
Python 02Python 02
Python 02
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Lógica de programação em ppt
Lógica de programação em pptLógica de programação em ppt
Lógica de programação em ppt
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2
 
Fundamentos de SQL - Parte 2 de 8
Fundamentos de SQL - Parte 2 de 8Fundamentos de SQL - Parte 2 de 8
Fundamentos de SQL - Parte 2 de 8
 
Aula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrõesAula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrões
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8
 
Apresentação cassandra
Apresentação cassandraApresentação cassandra
Apresentação cassandra
 
aula5 - Manipulação de Strings.pdf
aula5 -  Manipulação de Strings.pdfaula5 -  Manipulação de Strings.pdf
aula5 - Manipulação de Strings.pdf
 
R tutorial-de-bolso
R tutorial-de-bolsoR tutorial-de-bolso
R tutorial-de-bolso
 
Pesquisa ppi 2
Pesquisa ppi 2Pesquisa ppi 2
Pesquisa ppi 2
 
Estruturas
EstruturasEstruturas
Estruturas
 
Ordenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesOrdenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de Chaves
 
Estruturas de dados e técnicas de programação
Estruturas de dados e técnicas de programaçãoEstruturas de dados e técnicas de programação
Estruturas de dados e técnicas de programação
 
Ed1
Ed1Ed1
Ed1
 
Net Coders Ladies - Introdução a Banco de Dados
Net Coders Ladies - Introdução a Banco de Dados Net Coders Ladies - Introdução a Banco de Dados
Net Coders Ladies - Introdução a Banco de Dados
 

Más de thomasdacosta

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produçãothomasdacosta
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01thomasdacosta
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02thomasdacosta
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03thomasdacosta
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01thomasdacosta
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06thomasdacosta
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05thomasdacosta
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completothomasdacosta
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07thomasdacosta
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06thomasdacosta
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04thomasdacosta
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05thomasdacosta
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05thomasdacosta
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Javathomasdacosta
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04thomasdacosta
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03thomasdacosta
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04thomasdacosta
 

Más de thomasdacosta (20)

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completo
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04
 

Matrizes, Listas e Alocação Dinâmica

  • 1. ANHANGUERA – 2015.2 ESTRUTURA DE DADOS AULA 04 – MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Prof. Thomás da Costa thomascosta@aedu.com
  • 2. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
  • 3. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Matrizes São vetores que possuem duas ou mais dimensões para armazenar valores. Uma matriz de duas dimensões, possui um comportamento semelhante ao de uma tabela com linhas e colunas. O que é:
  • 4. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Matrizes Exemplo: int valor[4][4] = { {0, 0 ,0 ,0}, {0, 1 ,1 ,0}, {0, 1 ,1 ,0}, {0, 0 ,0 ,0} };Declaração de uma matriz
  • 5. ESTRUTURA DE DADOS – Prof. Thomás da Costa #include <iostream> using namespace std; int main() { int valor[4][4] = { {0, 0 ,0 ,0}, {0, 1 ,1 ,0}, {0, 1 ,1 ,0}, {0, 0 ,0 ,0} }; for (int i=0;i<=3;i++) { for (int j=0;j<=3;j++) { cout << valor[i][j]; } cout << endl; } } Exemplo 1
  • 6. ESTRUTURA DE DADOS – Prof. Thomás da Costa Matrizes Podemos atribuir valores para uma posição de uma matriz utilizando diretamente os seus índices. Atribuição de Valor: MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA valor[0][2] = 22;
  • 7. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Matrizes • Sempre usar com sabedoria !!! • Quanto maior o tamanho da matriz, maior a quantidade de memória ocupada. • A memória da matriz é de alocação estática. • Podemos declarar qualquer tipo de matriz. • Matrizes podem possuir várias dimensões, mas cuidado ao utilizar. • Não se esqueça: computador tem memória limitada !!!  • Para acessar as informações de uma matriz vamos precisar sempre de dois índices. Detalhes:
  • 8. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Alocação de Memória O que vamos aprender: • Vamos conhecer dois tipos de alocação de memória: • Estática • Dinâmica
  • 9. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Alocação de Memória • Variáveis são alocadas na memória do computador. • As variáveis declaradas pelos nossos programas, são alocadas de acordo com seus tamanhos e tipos. • Obviamente, cada variável tem um tamanho definido. Conforme a tabela abaixo: Detalhes: Tipo Tamanho em Bytes Faixa Mínima char 1 -127 a 127 int 4 -2.147.483.648 a 2.147.483.647 float 4 6 dígitos de precisão double 8 15 dígitos de precisão
  • 10. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Alocação de Memória • Alocação estática é controlada pelo compilador. • Não é possível alterar o espaço da alocação de memória. • Na alocação estática, a área de memória ocupada por ela se mantém constante durante toda a execução. Estática:
  • 11. ESTRUTURA DE DADOS – Prof. Thomás da Costa Alocando memória: Para o nosso exemplo, vamos efetuar a alocação estática, simplesmente declarando uma variável. MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Alocação Estática int valor;
  • 12. ESTRUTURA DE DADOS – Prof. Thomás da Costa MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Alocação de Memória • Alocação dinâmica é controlada pelo desenvolvedor. • A memória pode ser desalocada durante o decorrer do programa. • O tamanho da alocação é sob demanda, ou seja, em tempo de execução. • Vamos utilizar alocação dinâmica de memória principalmente com struct. • Não se esqueça: um computador tem memória limitada.  • Não se esqueça de desalocar a memória da variável quando não for mais necessário o uso. Dinâmica:
  • 13. ESTRUTURA DE DADOS – Prof. Thomás da Costa Alocando memória: Para o nosso exemplo, vamos efetuar a alocação dinâmica de memória utilizando a palavra reservada new. Efetuando a alocação de memória alunos *novo_aluno = new alunos; MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Alocação Dinâmica
  • 14. ESTRUTURA DE DADOS – Prof. Thomás da Costa Desalocando memória: Para o nosso exemplo, vamos efetuar a desalocação dinâmica de memória utilizando a palavra reservada delete. MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Alocação Dinâmica Efetuando a desalocação de memória delete lista_alunos;
  • 15. ESTRUTURA DE DADOS – Prof. Thomás da Costa Lista Ligada Simples: É uma lista de elementos ligados em sequência. Normalmente utilizamos estruturas para representar lista ligadas. MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Listas
  • 16. ESTRUTURA DE DADOS – Prof. Thomás da Costa Mais detalhes: • São representados por estruturas. • São estruturas dentro de estruturas encadeadas. • A estrutura interna sempre é um ponteiro para outra estrutura. • Sendo um ponteiro, indica o endereço da próxima estrutura. • Vamos trabalhar com inserção no fim da lista encadeada. • Utilizadas para armazenar valores na memória de fácil acesso. Listas MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA
  • 17. ESTRUTURA DE DADOS – Prof. Thomás da Costa Como funciona: Um elemento de uma lista, possui o endereço do próximo. O último elemento da lista tem o valor NULL. 1 2 3 Elementos da lista ligada simples Endereço de memória para o próximo elemento MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Listas
  • 18. ESTRUTURA DE DADOS – Prof. Thomás da Costa Exemplo: Próximo elemento da listastruct alunos { char nome[100]; int idade; alunos *proximo; } *lista_alunos; MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Listas
  • 19. ESTRUTURA DE DADOS – Prof. Thomás da Costa #include <iostream> #include <strings.h> #include <conio.h> #include <limits> using namespace std; struct alunos { char nome[100]; int idade; alunos *proximo; } *lista_alunos; void iniciar_lista(); void inserir_aluno(); void listar_alunos(); void menu(); void limpar_teclado(); ... Exemplo 2
  • 20. ESTRUTURA DE DADOS – Prof. Thomás da Costa ... int main() { int opcao = -1; iniciar_lista(); while (opcao != 0) { menu(); cin >> opcao; if (opcao == 1) inserir_aluno(); else if (opcao == 2) listar_alunos(); } delete lista_alunos; } ... Exemplo 2
  • 21. ESTRUTURA DE DADOS – Prof. Thomás da Costa Exemplo 2 Adicionando no final da lista ... alunos *novo_aluno = new alunos; cout << "Digite o nome do aluno:" << endl; gets(novo_aluno->nome); cout << "Digite a idade do aluno:" << endl; cin >> novo_aluno->idade; novo_aluno->proximo = NULL; if (lista_alunos == NULL) lista_alunos = novo_aluno; else { alunos *p; p = lista_alunos; while (p->proximo != NULL) p = p->proximo; p->proximo = novo_aluno; } ...
  • 22. ESTRUTURA DE DADOS – Prof. Thomás da Costa ... alunos *p; p = lista_alunos; if (p->proximo == NULL) { cout << "------------------------------------" << endl; cout << "Nome do Aluno:" << p->nome << endl; cout << "Idade do Aluno:" << p->idade << endl; cout << "------------------------------------" << endl; } else { while (p != NULL) { cout << "------------------------------------" << endl; cout << "Nome do Aluno:" << p->nome << endl; cout << "Idade do Aluno:" << p->idade << endl; cout << "------------------------------------" << endl; p = p->proximo; } } ... Exemplo 2 Percorrendo a lista ligada
  • 23. ESTRUTURA DE DADOS – Prof. Thomás da Costa • Matrizes são vetores com duas ou mais dimensões. • Existem dois tipos de alocação de memória. • Alocação Estática. • Alocação Dinâmica. • Variáveis possuem um tipo e um tamanho definido. • Listas são representadas por estruturas. • Listas são estruturas dentro de estruturas encadeadas. • A estrutura interna sempre é um ponteiro para outra estrutura. • Sendo um ponteiro, indica o endereço da próxima estrutura. • Listas são utilizadas para armazenar valores na memória de fácil acesso. MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA Resumo