3. cas
Sumario
1 Sumario
2 Introduc~ao
3 Dados Compostos Heterog^eneos
O Problema
A Soluc~ao
Objetos em Java
Exerccio
4 Alocac~ao de Memoria
Alocac~ao Din^amica de Memoria
5 Refer^encias Bibliogra
6. cas
Sumario
1 Sumario
2 Introduc~ao
3 Dados Compostos Heterog^eneos
O Problema
A Soluc~ao
Objetos em Java
Exerccio
4 Alocac~ao de Memoria
Alocac~ao Din^amica de Memoria
5 Refer^encias Bibliogra
10. nic~ao um computador e uma maquina capaz de trabalhar
com uma grande quantidade de informac~oes em um tempo
reduzido. Para que esse trabalho seja realizado as informac~oes
envolvidas devem ser organizadas, para ent~ao poderem ser
manipuladas e utilizadas de forma conveniente.
Objetivo das Estruturas
O objetivo maior das estruturas de dados e prover diferentes
formas para organizar as informac~oes utilizadas por um programa
de computador. Esse objetivo e circundado por tecnicas de
manipulac~ao aplicadas as informac~oes organizadas, de forma a
utiliza-las para a resoluc~ao de problemas diversos.
(Alexandre Savaris, 2006)
4 / 22
12. cas
Representac~ao de Dados
Um computador e um dispositivo eletr^onico e, por isso, e
composto por circuitos eletricos. A aus^encia ou presenca de tens~ao
eletrica, em cada circuito, representa um valor para de bit: 0 (na
aus^encia de tens~ao) ou 1 (na presenca de tens~ao).
O bit, por sua vez, e o menor dado que pode ser representado por
um computador e, quando arranjado com outros bit, comp~oem
bytes, ou ainda conjuntos de bytes, que representam dados. Este
arranjo e determinado por uma estrutura, ent~ao: Estrutura de
Dados.
5 / 22
14. cas
Representac~ao de Dados
Um computador e um dispositivo eletr^onico e, por isso, e
composto por circuitos eletricos. A aus^encia ou presenca de tens~ao
eletrica, em cada circuito, representa um valor para de bit: 0 (na
aus^encia de tens~ao) ou 1 (na presenca de tens~ao).
O bit, por sua vez, e o menor dado que pode ser representado por
um computador e, quando arranjado com outros bit, comp~oem
bytes, ou ainda conjuntos de bytes, que representam dados. Este
arranjo e determinado por uma estrutura, ent~ao: Estrutura de
Dados.
5 / 22
16. cas
Variaveis
As estruturas de dados mais simples s~ao as variaveis. Cada variavel
armazena um unico dado, referente a qualquer coisas do tipo de
dado determinado. Mas e se precisarmos armazenar conjuntos de
dados que s~ao de tipos diferentes, mas que s~ao relacionados a
mesma coisa?
Toda variavel possu um tipo de dado primitivo, que determina a
sua estrutura. Esta estrutura limita o dado armazenado quanto ao
seu valor. Por exemplo, um tipo de dado numerico n~ao e adequado
para armazenar texto, ou vice-versa. Ainda, um mesmo tipo de
dado numerico e capaz de armazenar valores numericos exclusivos
de um determinado intervalo.
6 / 22
18. cas
Variaveis
As estruturas de dados mais simples s~ao as variaveis. Cada variavel
armazena um unico dado, referente a qualquer coisas do tipo de
dado determinado. Mas e se precisarmos armazenar conjuntos de
dados que s~ao de tipos diferentes, mas que s~ao relacionados a
mesma coisa?
Toda variavel possu um tipo de dado primitivo, que determina a
sua estrutura. Esta estrutura limita o dado armazenado quanto ao
seu valor. Por exemplo, um tipo de dado numerico n~ao e adequado
para armazenar texto, ou vice-versa. Ainda, um mesmo tipo de
dado numerico e capaz de armazenar valores numericos exclusivos
de um determinado intervalo.
6 / 22
20. cas
Sumario
1 Sumario
2 Introduc~ao
3 Dados Compostos Heterog^eneos
O Problema
A Soluc~ao
Objetos em Java
Exerccio
4 Alocac~ao de Memoria
Alocac~ao Din^amica de Memoria
5 Refer^encias Bibliogra
23. cas
Dados Compostos Heterog^eneos
Muitas Variaveis
Se pensarmos em uma pessoa, ela pode ser descrita com diversos
dados, por exemplo: Nome, Idade, Endereco, CPF, ... Ent~ao,
utilizando variaveis, precisaramos declarar diversas variaveis para
cada pessoa que gostaramos de armazenar, obtendo um enorme
numero de variaveis. Uma forma de resolver esta multipla alocac~ao
de variaveis e chamado de Dados Compostos Heterog^eneos,
Registros ou, ainda, Estruturas.
Dados Compostos Heterog^eneos
Estruturar e/ou Agrupar, de forma organizada, os dados que s~ao
relacionados a mesma tarefa ou elemento.
8 / 22
25. cas
Dados Compostos Heterog^eneos
Muitas Variaveis
Se pensarmos em uma pessoa, ela pode ser descrita com diversos
dados, por exemplo: Nome, Idade, Endereco, CPF, ... Ent~ao,
utilizando variaveis, precisaramos declarar diversas variaveis para
cada pessoa que gostaramos de armazenar, obtendo um enorme
numero de variaveis. Uma forma de resolver esta multipla alocac~ao
de variaveis e chamado de Dados Compostos Heterog^eneos,
Registros ou, ainda, Estruturas.
Dados Compostos Heterog^eneos
Estruturar e/ou Agrupar, de forma organizada, os dados que s~ao
relacionados a mesma tarefa ou elemento.
8 / 22
31. cas
Criando uma Classe class em Java
Como visto em slide anterior, uma class pode ser composta de
varios campos de diferentes tipos de dados;
A criac~ao desta class e feita em novo arquivo, dentro de um
package e fora de qualquer outra class;
Apos a declarac~ao class, devemos colocar um bloco f g;
Dentro do bloco f g, devemos declarar os elementos que ir~ao
compor a estrutura. A declarac~ao de cada elemento deve ser
antecedida pela palavra: public.
11 / 22
33. cas
Criando uma Classe class em Java
Como visto em slide anterior, uma class pode ser composta de
varios campos de diferentes tipos de dados;
A criac~ao desta class e feita em novo arquivo, dentro de um
package e fora de qualquer outra class;
Apos a declarac~ao class, devemos colocar um bloco f g;
Dentro do bloco f g, devemos declarar os elementos que ir~ao
compor a estrutura. A declarac~ao de cada elemento deve ser
antecedida pela palavra: public.
11 / 22
35. cas
Criando uma Classe class em Java
Como visto em slide anterior, uma class pode ser composta de
varios campos de diferentes tipos de dados;
A criac~ao desta class e feita em novo arquivo, dentro de um
package e fora de qualquer outra class;
Apos a declarac~ao class, devemos colocar um bloco f g;
Dentro do bloco f g, devemos declarar os elementos que ir~ao
compor a estrutura. A declarac~ao de cada elemento deve ser
antecedida pela palavra: public.
11 / 22
37. cas
Criando uma Classe class em Java
Como visto em slide anterior, uma class pode ser composta de
varios campos de diferentes tipos de dados;
A criac~ao desta class e feita em novo arquivo, dentro de um
package e fora de qualquer outra class;
Apos a declarac~ao class, devemos colocar um bloco f g;
Dentro do bloco f g, devemos declarar os elementos que ir~ao
compor a estrutura. A declarac~ao de cada elemento deve ser
antecedida pela palavra: public.
11 / 22
38. 1 package MeuPrograma ;
2 class Pessoa { // Declarac~ao da classe Pessoa
3 public String Nome ; // Atributo Nome
4 public int Idade ; // Atributo Idade
5 public String Endereco ; // Atributo Endereco
6 public long CPF ; // Atributo CPF
7 }
8 public class Programa {
9 public static void main ( String [] args ) {
10 Pessoa p1 = new Pessoa ();
11 p1. Nome = Fulano de Tal ;
12 p1. Idade = 20;
13 p1. Endereco = Rua XYZ , 12;
14 p1.CPF = 1234567890;
15 }
16 }
Criac~ao e Inicializac~ao de class em Java
41. cac~ao que obtemos ao usar a class
Pessoa, que criamos anteriormente, e apresentada ao utilizarmos
um array para armazenar um determinado numero de objetos
Pessoa.
Arrays e outras Estruturas de Dados, que ser~ao estudadas, passam
a ter capacidade de armazenar elementos mais complexos, assim
como uma Pessoa, que e composta por diversos dados diferentes.
1 // Array de 10 Pessoas
2 Pessoa [] pes = new Pessoa [10];
3 pes [0] = new Pessoa ();
4 pes [0]. Nome = Fulano de Tal;
5 pes [0]. Idade = 20;
6 pes [1] = new Pessoa ();
7 pes [1]. Nome = Ciclano de Tal ;
8 pes [1]. Idade = 51;
9 String texto = pes [0]. Nome ;
10 int nro = pes [1]. Idade ;
13 / 22
44. cac~ao que obtemos ao usar a class
Pessoa, que criamos anteriormente, e apresentada ao utilizarmos
um array para armazenar um determinado numero de objetos
Pessoa.
Arrays e outras Estruturas de Dados, que ser~ao estudadas, passam
a ter capacidade de armazenar elementos mais complexos, assim
como uma Pessoa, que e composta por diversos dados diferentes.
1 // Array de 10 Pessoas
2 Pessoa [] pes = new Pessoa [10];
3 pes [0] = new Pessoa ();
4 pes [0]. Nome = Fulano de Tal;
5 pes [0]. Idade = 20;
6 pes [1] = new Pessoa ();
7 pes [1]. Nome = Ciclano de Tal ;
8 pes [1]. Idade = 51;
9 String texto = pes [0]. Nome ;
10 int nro = pes [1]. Idade ;
13 / 22
46. cas
Exerccio 01
Primeira Etapa
Faca um novo projeto para Console em Java;
Crie uma class chamada Contato, contendo os atributos:
String Nome; long Telefone; String Email;
Segunda Etapa
Dentro da func~ao main declare um array (de tamanho 10) do tipo
Contato; e
Crie uma aplicac~ao com um Menu(funcional) contendo:
1 - Cadastrar Contatos
2 - Listar Contatos
3 - Sair
O Menu devera ser exibido ate a escolha da opc~ao Sair.
14 / 22
48. cas
Exerccio 01
Primeira Etapa
Faca um novo projeto para Console em Java;
Crie uma class chamada Contato, contendo os atributos:
String Nome; long Telefone; String Email;
Segunda Etapa
Dentro da func~ao main declare um array (de tamanho 10) do tipo
Contato; e
Crie uma aplicac~ao com um Menu(funcional) contendo:
1 - Cadastrar Contatos
2 - Listar Contatos
3 - Sair
O Menu devera ser exibido ate a escolha da opc~ao Sair.
14 / 22
50. cas
Sumario
1 Sumario
2 Introduc~ao
3 Dados Compostos Heterog^eneos
O Problema
A Soluc~ao
Objetos em Java
Exerccio
4 Alocac~ao de Memoria
Alocac~ao Din^amica de Memoria
5 Refer^encias Bibliogra
53. cas
Alocac~ao de Memoria
Estatico
Ate agora, aprendemos a alocar memoria atraves da declarac~ao de
variaveis e arrays. Vimos estrategias para resolver alguns
problemas pontuais, tais como:
Gerenciar um alto numero de variaveis (atraves de arrays);
De
54. nir uma class para associar dados heterog^eneos;
O que falta?
Mas e se precisarmos alocar memoria sob demanda?
Por exemplo, imagine o exerccio feito anteriormente, onde criamos
um array para armazenar 5 Contatos. O que aconteceria no caso
do usuario precisar cadastrar um sexto Contato?
16 / 22
56. cas
Alocac~ao de Memoria
Estatico
Ate agora, aprendemos a alocar memoria atraves da declarac~ao de
variaveis e arrays. Vimos estrategias para resolver alguns
problemas pontuais, tais como:
Gerenciar um alto numero de variaveis (atraves de arrays);
De
57. nir uma class para associar dados heterog^eneos;
O que falta?
Mas e se precisarmos alocar memoria sob demanda?
Por exemplo, imagine o exerccio feito anteriormente, onde criamos
um array para armazenar 5 Contatos. O que aconteceria no caso
do usuario precisar cadastrar um sexto Contato?
16 / 22
59. cas
O Comando new
Em varias situac~oes nos utilizamos o comando new, geralmente
sem entender qual era sua real func~ao;
1 Pessoa [] pes = new Pessoa [10];
A partir de agora, devemos estudar melhor este comando, mas
acima de tudo, entender os conceitos que est~ao por tras do seu
funcionamento;
Devemos lembrar que este tipo de func~ao existe em todas as
linguagens de programac~ao, algumas vezes como mesmo nome,
outras vezes com nomes diferentes, mas com a mesma aplicac~ao;
17 / 22
61. cas
O Comando new
Em varias situac~oes nos utilizamos o comando new, geralmente
sem entender qual era sua real func~ao;
1 Pessoa [] pes = new Pessoa [10];
A partir de agora, devemos estudar melhor este comando, mas
acima de tudo, entender os conceitos que est~ao por tras do seu
funcionamento;
Devemos lembrar que este tipo de func~ao existe em todas as
linguagens de programac~ao, algumas vezes como mesmo nome,
outras vezes com nomes diferentes, mas com a mesma aplicac~ao;
17 / 22
63. cas
Uso do Comando new
O comando new e utilizado para alocar memoria:
1 int [] pes = new int [10];
No exemplo acima, solicitamos ao Sistema Operacional que d^e ao
nosso programa, espaco su
64. ciente para armazenar 10 numeros
inteiros, ou seja: 32bits 10 = 40bytes.
Antes de armazenar qualquer dado, precisamos ter um espaco na
memoria devidamente alocado. Isto e feito com o comando new.
As excec~oes
65. cam por conta das Variaveis de tipos de dados
primitivos, que dispensam o uso deste comando, mas que fazem a
alocac~ao de espaco na memoria no momento em que as
declaramos.
Segue exemplo de uso com tamanho informado pelo usuario.
18 / 22
67. cas
Uso do Comando new
O comando new e utilizado para alocar memoria:
1 int [] pes = new int [10];
No exemplo acima, solicitamos ao Sistema Operacional que d^e ao
nosso programa, espaco su
68. ciente para armazenar 10 numeros
inteiros, ou seja: 32bits 10 = 40bytes.
Antes de armazenar qualquer dado, precisamos ter um espaco na
memoria devidamente alocado. Isto e feito com o comando new.
As excec~oes
69. cam por conta das Variaveis de tipos de dados
primitivos, que dispensam o uso deste comando, mas que fazem a
alocac~ao de espaco na memoria no momento em que as
declaramos.
Segue exemplo de uso com tamanho informado pelo usuario.
18 / 22
70. 1 package MeuPrograma ;
2 import java . util . Scanner ;
3 public class Programa {
4 public static void main ( String [] args ) {
5 Scanner entrada = new Scanner ( System .in);
6 int tamanho ;
7 String [] nomes ;
8 System . out. println ( Tamanho do array : );
9 tamanho = entrada . nextInt ();
10 nomes = new String [ tamanho ];
11 for ( int x = 0; x tamanho ; x ++) {
12 System .out. print ( Nome nro + x + : );
13 nomes [x] = entrada . nextLine ();
14 }
15 System . out. println (Os + tamanho + nomes s~ao:);
16 for ( int x = 0; x tamanho ; x ++)
17 {
18 System .out. println ( nomes [x]);
19 }
20 }
21 }
Usando new para alocar um array em Java
74. cas
Sumario
1 Sumario
2 Introduc~ao
3 Dados Compostos Heterog^eneos
O Problema
A Soluc~ao
Objetos em Java
Exerccio
4 Alocac~ao de Memoria
Alocac~ao Din^amica de Memoria
5 Refer^encias Bibliogra
78. cas
Basicas
GOODRICH, M. T.; TAMASSIA, R.; Estruturas de dados e
algoritmos em Java. 4a Edic~ao. Porto Alegre, 2006
ZIVIANI, N.; Programac~ao de algoritmos com implementac~oes
em Java e C++. 1a Edic~ao. Cengage Learning, 2006
Complementares
CORMEN, T. H.; LEISERSON, C. E., et al.; Algoritmos -
Teoria e Pratica. 4a Edic~ao. S~ao Paulo: Elsevier, 2009
PREISS, B. R.; Estrutura de Dados e Algoritmos. S~ao Paulo:
Elsevier, 2001
22 / 22