01 import java.io.*;
|
| Java2html |
Este é o blog de relacionamento com alunos de Fábio Nakano.
Desejo testar se esta mídia facilita a comunicação e aprendizado de conteúdo.
Gostaria que vocès dessem notas mais altas para posts que ajudaram mais a entender o assunto (e não por outro critério, por exemplo o melhor escrito ou o mais "bonito")
fabionakano at usp dot br
Prédio A1, segundo andar - Sala 204E
Caso precise do mapa do Campus:http://each.uspnet.usp.br/site/mapa.php
Siga-me por email preenchendo a caixa abaixo.
Mostrando postagens com marcador Representação. Mostrar todas as postagens
Mostrando postagens com marcador Representação. Mostrar todas as postagens
sexta-feira, 12 de junho de 2015
Ler arquivo texto com e sem definição do conjunto de caracteres
quarta-feira, 27 de maio de 2015
Array na memória
1 class TestaArray {
|
| Java2html |
Sobre memória
O hardware e instruções para gerenciamento de memória em processadores Intel Core pode ser visto no capítulo 3 do manual do processador:
http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.html
A forma como a memória física é usada por Windows e por Linux pode ser vista em:
http://blog.codinghorror.com/dude-wheres-my-4-gigabytes-of-ram/
http://duartes.org/gustavo/blog/post/motherboard-chipsets-memory-map/
(não encontrei referências no site da Microsoft ou do Linux... a maioria das referências que visitei concordam com as apresentadas)
Agora aumenta a importância do post para nós:
O sistema operacional gerencia a memória física (inclui RAM, HD, swap,...) e quando carrega o executável em memória para que seja executado, expõe aos programas um mapeamento da memória física (que é o espaço de endereçamento virtual):
http://stackoverflow.com/questions/2048007/linux-ia-32-memory-model
http://www.linuxjournal.com/article/4681
http://www.linuxjournal.com/article/6701?page=0,0
http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/
Em especial o exemplo relativo a figura abaixo é bastante ilustrativo do que explico sobre onde (no espaço de endereçamento virtual) ficam armazenados o programa, os literais e as variáveis (estáticas, tipos primitivos e objetos (tipos abstratos)) em aula.
http://static.duartes.org/img/blogPosts/mappingBinaryImage.png
Agora é totalmente nosso território!!!:
Em especial, quando criamos arrays com new e com referência atribuída a uma variável estática, a variável fica no "segmento" de dados e os elementos do array fica no heap.
No escopo de ACH2001 o interesse maior é com a alocação de variáveis (objetos) em memória, geralmente sem preocupação sobre sua localização exata ("segmento" de código, de dados, pilha (stack), heap,...). É suficiente considerar a memória um espaço de armazenamento com endereços.
Relembrando (o pouco que) sabemos sobre compiladores, os identificadores são necessários para facilitar o trabalho do programador. Compiladores substituem identificadores por (algum tipo de) endereço de memória, é suficiente para o programa operar corretamente. Assim, em representações de memória, o identificador é colocado como um rótulo dado a uma posição de memória.
http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.html
A forma como a memória física é usada por Windows e por Linux pode ser vista em:
http://blog.codinghorror.com/dude-wheres-my-4-gigabytes-of-ram/
http://duartes.org/gustavo/blog/post/motherboard-chipsets-memory-map/
(não encontrei referências no site da Microsoft ou do Linux... a maioria das referências que visitei concordam com as apresentadas)
Agora aumenta a importância do post para nós:
O sistema operacional gerencia a memória física (inclui RAM, HD, swap,...) e quando carrega o executável em memória para que seja executado, expõe aos programas um mapeamento da memória física (que é o espaço de endereçamento virtual):
http://stackoverflow.com/questions/2048007/linux-ia-32-memory-model
http://www.linuxjournal.com/article/4681
http://www.linuxjournal.com/article/6701?page=0,0
http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/
Em especial o exemplo relativo a figura abaixo é bastante ilustrativo do que explico sobre onde (no espaço de endereçamento virtual) ficam armazenados o programa, os literais e as variáveis (estáticas, tipos primitivos e objetos (tipos abstratos)) em aula.
http://static.duartes.org/img/blogPosts/mappingBinaryImage.png
Agora é totalmente nosso território!!!:
Em especial, quando criamos arrays com new e com referência atribuída a uma variável estática, a variável fica no "segmento" de dados e os elementos do array fica no heap.
No escopo de ACH2001 o interesse maior é com a alocação de variáveis (objetos) em memória, geralmente sem preocupação sobre sua localização exata ("segmento" de código, de dados, pilha (stack), heap,...). É suficiente considerar a memória um espaço de armazenamento com endereços.
Relembrando (o pouco que) sabemos sobre compiladores, os identificadores são necessários para facilitar o trabalho do programador. Compiladores substituem identificadores por (algum tipo de) endereço de memória, é suficiente para o programa operar corretamente. Assim, em representações de memória, o identificador é colocado como um rótulo dado a uma posição de memória.
quarta-feira, 18 de março de 2015
0.0.0.11.5.0.1 - Código do exemplo, gerado por ArgoUML
01 public class Mesa {
|
| Java2html indent by fold |
0.0.0.11.5.0 - Exemplo de classe
O diagrama para uma classe:
A classe é pública (+) chama-se Mesa.
Tem os atributos (+) públicos, todos de tipo int, com nomes altura, largura, profundidade, maxPeso e maxCarga.
Tem os métodos cabe, que recebe três argumentos de tipo int e retorna um boolean; suporta, que recebe um argumento de tipo boolean e retorna um boolean e um construtor (estereótipo <<create>>).
(o diagrama foi feito usando ArgoUML).
A classe é pública (+) chama-se Mesa.
Tem os atributos (+) públicos, todos de tipo int, com nomes altura, largura, profundidade, maxPeso e maxCarga.
Tem os métodos cabe, que recebe três argumentos de tipo int e retorna um boolean; suporta, que recebe um argumento de tipo boolean e retorna um boolean e um construtor (estereótipo <<create>>).
(o diagrama foi feito usando ArgoUML).
sexta-feira, 6 de março de 2015
0.0.0.17.1.2 - Bases Numéricas
A URL acessa um pdf que escrevi sobre bases numéricas.
https://drive.google.com/file/d/0B2aucTjhMlIVYlhWVE4tYjV1cWM/view?usp=sharing
Entendi que a necessidade surgiu de um argumento similar a:
"
Ok, sei que o computador chaveia sinais elétricos e que posso associar a passagem de corrente (ou existência de tensão ou a chave ligada) ao símbolo 1 (um) e a não passagem ao símbolo 0 (zero). Isto serve para representar um dígito binário (bit)*.
Também que as chaves podem ser miniaturizadas de forma que milhões caibam em um chip de poucos milímetros quadrados.
Também sei que dígitos podem ser enfileirados e que nos números a que estou acostumado, isso aumenta a quantidade de números que posso representar (escrever)
MAS qual a correspondência entre uma fileira de bits e o número a que estou acostumado?
"
a resposta curta: o número a que você está acostumado é fileira de dígitos na base decimal. A fileira de bits é um número na base binária. Falta entender como bases numéricas funcionam e como converter de uma para outra. É o que está no PDF.
*dígito é uma posição que pode conter um símbolo.
*Um dígito que pode conter um de dois símbolos é um dígito binário.
*Um dígito que pode conter um de dez símbolos é um dígito decimal.
*A convenção de representação de números decimais a que estamos acostumados diz que um dígito pode conter um dos símbolos do conjunto {0 1 2 3 4 5 6 7 8 9}
0.7 - Grafos
Este post é sobre a piada das árvores em computação crescerem de cima para baixo...
Relaciona-se aos temas "tipos abstratos de dados", "arrays" e "matrizes" do conteúdo de ACH2001. O conteúdo deste post será melhorado aos poucos.
Grafos são trincas G=(V,A,f) onde V é um conjunto de vértices ou nós (são os pontos da figura), A é um conjunto de arcos, ou arestas (são as linhas das figuras) cada extremidade da aresta incide em um único vértice, então arestas ligam dois vértices. f é uma função que informa como essa ligação é feita.
Passeio em um grafo é uma sequencia alternante de vértices e arestas iniciada e terminada em vértices.
Caminho em um grafo é uma sequencia alternante de vértices e arestas iniciada e terminada em vértices Sem repetição.
Circuito em um grafo é um caminho que inicia e termina no mesmo vértice.
Árvores são grafos acíclicos.
Qualquer vértice de uma árvore pode ser raiz (imagine que o grafo é um conjunto de bolas e que as arestas são fios ligando as bolas. Escolha qualquer bola, segure e levante-a - as outras sobem puxadas pelas arestas, no formato de árvore com raiz.
O que informa a necessidade de escolher um vértice como raiz e qual é ele é o uso que faremos da árvore.
Relaciona-se aos temas "tipos abstratos de dados", "arrays" e "matrizes" do conteúdo de ACH2001. O conteúdo deste post será melhorado aos poucos.
Grafos são trincas G=(V,A,f) onde V é um conjunto de vértices ou nós (são os pontos da figura), A é um conjunto de arcos, ou arestas (são as linhas das figuras) cada extremidade da aresta incide em um único vértice, então arestas ligam dois vértices. f é uma função que informa como essa ligação é feita.
Passeio em um grafo é uma sequencia alternante de vértices e arestas iniciada e terminada em vértices.
Caminho em um grafo é uma sequencia alternante de vértices e arestas iniciada e terminada em vértices Sem repetição.
Circuito em um grafo é um caminho que inicia e termina no mesmo vértice.
Árvores são grafos acíclicos.
Qualquer vértice de uma árvore pode ser raiz (imagine que o grafo é um conjunto de bolas e que as arestas são fios ligando as bolas. Escolha qualquer bola, segure e levante-a - as outras sobem puxadas pelas arestas, no formato de árvore com raiz.
O que informa a necessidade de escolher um vértice como raiz e qual é ele é o uso que faremos da árvore.
Assinar:
Postagens (Atom)




