Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

02 alocacao de_memoria

Alocação de Memória

  • Loggen Sie sich ein, um Kommentare anzuzeigen.

  • Gehören Sie zu den Ersten, denen das gefällt!

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

×