O vídeo faz a representação de alguns algoritmos de ordenação usando algorítmos humanos servir de ilustração. Muito interessante! 🙂
Author Archive
Exemplo de Pilha – Estrutura de Dados
As pilhas são estruturas baseadas no princípio LIFO (last in, first out), na qual os dados que foram inseridos por último na pilha serão os primeiros a serem removidos. Existem duas funções que se aplicam a todas as pilhas: PUSH, que insere um dado no topo da pilha, e PULL, que remove o item no topo da pilha.
Neste artigo coloco um exemplo de aplicação de pilha. Trata-se de uma sacola de correspondências, onde deve se colocar um número limite para poder inserir, remover, retornar o ítem que está no topo etc. No exemplo utilizaremos o método POP, ao invés de PULL para remover um ítem do topo da pilha. Usaremos a biblioteca JOptionPane para ilustrar melhor o exemplo.
Você deve compilar o arquivo CartaApp para poder visualizar o exemplo funcionando.
Aqui vai a descrição do problema:
Faça um programa, em Java, que implemente as tarefas de um entregador de correspondências postais. Leve em consideração que as correspondências são empilhadas na sacola e devem ser entregues levando-se sempre em consideração a que encontra-se no topo. O programa deve permitir:
– Inserir correspondência na sacola (empilhar);
– Remover correspondência da sacola (desempilhar);
– Verificar se a sacola está cheia ou vazia;
– Verificar a próxima correspondência a ser entregue;
– Informar quantas correspondências existem na sacola.
A pilha deverá armazenar objetos com os dados de cada correspondência
Se preferir, baixe os arquivos aqui.
StackX.java
//StackX.java /** * Essa é a classe principal, onde temos todos os métodos para inserir, * remover, retornar os dados etc. */ class StackX { private int maxSize; // tamanho do array (vetor) private Carta[] stackArray; private int top; // topo da pilha //-------------------------------------------------------------- public StackX(int s) // construtor { maxSize = s; // define tamanho do array stackArray = new Carta[maxSize]; // cria array top = -1; // sem itens } //-------------------------------------------------------------- public void push(Carta stackAux) // coloca no topo da pilha { stackArray[++top] = stackAux; // incrementa topo, insere item } //-------------------------------------------------------------- public Carta pop() // tira item do topo da pilha { return stackArray[top--]; // acessa o item, decrementa o topo } //-------------------------------------------------------------- public Carta peek() // retorna o item do topo da pilha { return stackArray[top]; } //-------------------------------------------------------------- public boolean isEmpty() // retorna true se a pilha estiver vazia { return (top == -1); } //-------------------------------------------------------------- public boolean isFull() // retorna true se a pilha estiver cheia { return (top == maxSize-1); } public int getTop() { return top; } }
Carta.java
//Carta.java /** * Nessa classe estão todos os atributos do objeto */ public class Carta { private String nome; // nome do remetente private String logra; // nome do logradouro private int num; // numero do lugradourou public Carta(String nome,String logra,int num) { this.nome = nome; this.logra = logra; this.num = num; } public String displayCarta() { return ("Remetente: "+nome+ "\nLogradouro: "+logra+", "+num); } public String getNome() { return nome; } }
CartaApp.java
//CartaApp.java //Aplicação que deve ser compilada import javax.swing.JOptionPane; /** * Faça um programa, em Java, que implemente as tarefas de * um entregador de correspondências postais. Leve em * consideração que as correspondências são empilhadas na * sacola e devem ser entregues levando-se sempre em * consideração a que encontra-se no topo. O programa * deve permitir: * * - Inserir correspondência na sacola (empilhar); * - Remover correspondência da sacola (desempilhar); * - Verificar se a sacola está cheia ou vazia; * - Verificar a próxima correspondência a ser entregue; * - Informar quantas correspondências existem na sacola. * * A pilha deverá armazenar objetos com os dados de cada correspondência * * @author Tiago Passos - http://tiagopassos.com) * */ public class CartaApp { public static void main(String[] args) { StackX Pilha = new StackX(Integer.parseInt(JOptionPane .showInputDialog("Quantas cartas deseja colocar na sacola:"))); Carta temp; // Declara variavel temporaria int op = Integer.parseInt(JOptionPane.showInputDialog("MENU" + "\n1 - Inserir correspondência na sacola" + "\n2 - Remover correspondência da sacola" + "\n3 - Verificar se a sacola está cheia ou vazia" + "\n4 - Verificar a próxima correspondência a ser entregue" + "\n5 - Informar quantas correspondências existem na sacola" + "\n6 - Sair" + "\n\nDigite a opção desejada:")); while (op != 6){ if (op == 1) { // INSERE String nome = JOptionPane .showInputDialog("Digite o nome do remetente:"); String logra = JOptionPane .showInputDialog("Digite o nome do logradouro:"); int num = Integer.parseInt(JOptionPane .showInputDialog("Digite o numero:")); Carta cartaAux = new Carta(nome, logra, num); if (!Pilha.isFull()) { Pilha.push(cartaAux); JOptionPane.showMessageDialog(null, "Carta colocada na sacola"); } else { JOptionPane.showMessageDialog(null, "Desculpe. A sacola está cheia"); } } else if (op == 2) { // REMOVE CORRESPONDECIA DA SACOLA if (!Pilha.isEmpty()) { temp = Pilha.pop(); JOptionPane.showMessageDialog(null, "Carta removida:\n" + temp.displayCarta()); temp.displayCarta(); } else { JOptionPane.showMessageDialog(null, "A sacola está vazia"); } } else if (op == 3) { // REMOVE CORRESPONDECIA DA SACOLA if (Pilha.isEmpty()) { JOptionPane.showMessageDialog(null, "A sacola está vazia"); } else if (Pilha.isFull()) { JOptionPane.showMessageDialog(null, "A sacola está cheia"); } else { int qtd_cartas = Pilha.getTop(); qtd_cartas++; JOptionPane.showMessageDialog(null, "A sacola não está cheia nem vazia. " + "Possui " + qtd_cartas + " carta(s)"); } } else if (op == 4) { // VERIFICA A PROXIMA CARTA A SER ENTREGUE if (!Pilha.isEmpty()) { // VERIFICA SE A PILHA ESTA VAZIA temp = Pilha.peek(); JOptionPane.showMessageDialog(null, "Próxima carta a ser entregue:\n" + temp.displayCarta()); } else { JOptionPane.showMessageDialog(null, "Não foi cadastrada nenhuma carta"); } } else if (op == 5) { // INFORMA QUANTAS CARTAS EXISTEM NA SACOLA // getTop informa o ultimo indice inserido // A contagem começa de 0, por isso soma 1 int qtd_cartas = Pilha.getTop(); qtd_cartas++; JOptionPane.showMessageDialog(null, "Quantidade de cartas na sacola: " + qtd_cartas); } op = Integer .parseInt(JOptionPane .showInputDialog("MENU" + "\n1 - Inserir correspondência na sacola" + "\n2 - Remover correspondência da sacola" + "\n3 - Verificar se a sacola está cheia ou vazia" + "\n4 - Verificar a próxima correspondência a ser entregue" + "\n5 - Informar quantas correspondências existem na sacola" + "\n6 - Sair" + "\n\nDigite a opção desejada:")); } JOptionPane.showMessageDialog(null, "Você saiu do programa"); } }
Instalar Fontes do Windows no Ubuntu 10.04
Por um motivo ou outro você pode precisar usar uma fonte como Times New Roman ou Arial – talvez um trabalho acadêmico – e essas fontes não estão disponíveis originalmente no Ubuntu 10.04. Porém, com apenas um comando é possível instalá-las.
As fontes que vêm no pacote são:
- Andale Mono
- Arial Black
- Arial (Bold, Italic, Bold Italic)
- Comic Sans MS (Bold)
- Courier New (Bold, Italic, Bold Italic)
- Georgia (Bold, Italic, Bold Italic)
- Impact
- Times New Roman (Bold, Italic, Bold Italic)
- Trebuchet (Bold, Italic, Bold Italic)
- Verdana (Bold, Italic, Bold Italic)
- Webdings
Para instalar, abra o Terminal (Aplicativos -> Acessórios -> Terminal) e digite o seguinte:
sudo apt-get install msttcorefonts
Digite sua senha de root, e pronto!
PS: Talvez seja necessário deslogar e logar novamente para que as fontes estejam disponíveis para uso.
Configurar Vídeo no Lenovo G450 2949-79U com Linux Debian Lenny
Instalei o Debian Lenny (5.5) 64-bit no meu notebook Lenovo G450 2949-79U que possui placa de vídeo Intel Graphics Media Accelerator (GMA) 4500M e logo de cara tive um pequeno problema com a resolução: só carregava 1024 x 768, sendo que o monitor é widescreen de 14″. Impossível de usar.
Dei uma pesquisada e encontrei uma solução bem simples. Talvez sirva pra outros modelos de notebook que usem a placa de vídeo Intel GMA 4500M. Para resolver, faça o seguinte:
Abra o Terminal (Aplicações/Acessórios/Terminal). Digite su para entrar como root. Depois abra o arquivo xorg.conf com o seguinte comando:
gedit /etc/X11/xorg.conf
Edite a seguinte área do arquivo:
Section "Device" Identifier "Configured Video Device"
Para que fique da seguinte forma:
Section "Device" Identifier "Configured Video Device" Driver "intel"
Reinicie, e pronto!
PS: É recomendável fazer uma cópia do arquivo antes de salvar. Se der algum problema, você tem como recuperar! 🙂
O som dos algorítmos de ordenação
O som dos algorítmos de ordenação
Vídeo interessante que mostra uma representação sonora dos diferentes tipos de ordenação.
Fonte: http://eupodiatamatando.com/2010/08/19/som-da-ordenacao/
Mosaico dos sites mais acessados na internet
Incrível filme em stop-motion feito com o Nokia N8
O lançamento do aguardado Nokia N8 estava se aproximando e a gigante finlandesa, para promover sua chegada ao mercado, criou um belíssimo vídeo utilizando a técnica de stop-motion a partir da câmera do aparelho.
No vídeo, entitulado “Dot”, o Nokia N8 é transformado em um poderoso microscópio com o CellScope acoplado à câmera do aparelho para a filmagem. A bonequinha protagonista do vídeo mede apenas 9 mm.
Veja também o making of:
Fonte: http://www.tudocelular.com/Curiosidade/noticias/n23279/filme-stop-motion-nokia-n8.html
Passar uma string pela URL com PHP
As vezes você precisa passar uma frase com acentos, espaços e pontuação, mas não pode simplesmente colocar esses caracteres na URL, porque pode dar alguns erros em alguns navegadores (browsers).
No PHP existe uma função que faz essa conversão. Chama-se urlencode. E você pode usar dessa forma:
<?php echo urlencode("Este é o texto que você quer converter!"); ?>
Ele vai retornar o seguinte:
Este+%C3%A9+o+texto+que+voc%C3%AA+quer+converter%21
Dessa forma você pode passar a string pela URL sem problemas.
Se você precisar fazer o contrário (converter o texto codificado para o texto normal), você pode utilizar a função urldecode. Assim:
Acessando máquina rodando Windows com o Linux Ubuntu 9.04
No caso de você precisar copiar arquivos que estão em uma máquina rodando Windows (no caso foi utilizado o Windows 7, mas deve funcionar no XP e no Vista também), através do Ubuntu, os dois computadores devem estar na mesma faixa de IP. Por exemplo: um computador não pode ter IP 10.1.1.1 e outro 192.168.254.1. Mas você pode colocar 192.168.254.1 pra um e 192.168.254.2 pra outro.
Pra garantir que os dois se acessarem, modifique o IP. Se um tiver 192.168.254.1, é interessante que o outro tenha um IP como 192.168.254.2, ou 192.168.254.10 etc.
Se os dois não estiverem na mesma faixa, você pode modificar o IP do computador rodando Ubuntu da seguinte forma:
Abra o Terminal (Aplicativos / Acessórios / Terminal) e digite:
sudo ifconfig
eth0 = Primeira placa de rede
eth1 = Segunda placa de rede
wlan0 = Placa Wireless
Se você quizer modificar a eth0, digite o seguinte:
ifconfig eth0 down
Depois modifique o IP dela da seguinte forma:
ifconfig eth0 192.168.254.100 netmask 255.255.255.0 up
Se você não souber qual o ip da máquina que roda Windows, abra o prompt de comando (cmd) e digite ipcofig.
O endereço é o que está na linha “Endereço IPv4”.
Pra estar se as máquinas estão se enxergando, você pode dar tanto no Terminal do Linux, quanto no Prompt do Windows um ping na outra máquina. Ex.: ping 192.168.254.100
Pronto. Agora você pode acessar a máquina windows pelo ambiente gráfico do Ubuntu. Vá em Locais, Pasta Pessoal. Clique em Rede, Rede Windows, Escolha o grupo, e máquina deverá estar visível. Quando pedir uma senha, digite sua senha de usuário do Windows.
Tetris e Pacman humanos!
Uma câmera, 111 pessoas e muitas camisetas coloridas. O vídeo abaixo faz parte do projeto “Game Over” do artista Guillaume Reymond que transforma pessoas em pixels e personagens de jogos.
O projeto, com foco em games dos anos 1980, recria marcos do entretenimento eletrônico com vídeos feitos em stop motion.
Para produzir a filmagem abaixo, os participantes gravaram durante quatro horas seguidas em um cinema na Suíça.
Últimos comentários