02 alocacao de_memoria

176 visualizações

Publicada em

Alocação de Memória

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
176
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

02 alocacao de_memoria

  1. 1. Estrutura de Dados Introduc~ao e Alocac~ao de Memoria Vilson Heck Junior Instituto Federal de Santa Catarina 2014
  2. 2. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  3. 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
  4. 4. cas 2 / 22
  5. 5. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  6. 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
  7. 7. cas 3 / 22
  8. 8. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  9. 9. cas Introduc~ao as Estruturas de Dados Computac~ao x Dados Por de
  10. 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
  11. 11. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  12. 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
  13. 13. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  14. 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
  15. 15. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  16. 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
  17. 17. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  18. 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
  19. 19. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  20. 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
  21. 21. cas 7 / 22
  22. 22. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  23. 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
  24. 24. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  25. 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
  26. 26. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  27. 27. cas O Problema: Numerosas Variaveis 9 / 22
  28. 28. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  29. 29. cas A Soluc~ao: Dados Compostos Heterog^eneos - Objetos 10 / 22
  30. 30. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  31. 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
  32. 32. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  33. 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
  34. 34. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  35. 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
  36. 36. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  37. 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. 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
  39. 39. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  40. 40. cas Aplicac~ao em Array Um bom exemplo de simpli
  41. 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
  42. 42. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  43. 43. cas Aplicac~ao em Array Um bom exemplo de simpli
  44. 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
  45. 45. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  46. 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
  47. 47. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  48. 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
  49. 49. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  50. 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
  51. 51. cas 15 / 22
  52. 52. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  53. 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. 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
  55. 55. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  56. 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. 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
  58. 58. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  59. 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
  60. 60. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  61. 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
  62. 62. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  63. 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. 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. 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
  66. 66. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  67. 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. 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. 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. 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
  71. 71. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  72. 72. cas A Memoria A Memoria Continua material sobre a memoria e a alocac~ao de memoria. 20 / 22
  73. 73. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  74. 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
  75. 75. cas 21 / 22
  76. 76. Sumario Introduc~ao Dados Compostos Heterog^eneos Alocac~ao de Memoria Refer^encias Bibliogra
  77. 77. cas Refer^encias Bibliogra
  78. 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

×