Anterior Proxima

Gerenciamento de Área de Alocação Dinâmica (Listas Encadeadas)

Implementação de um sistema de gerenciamento de trechos livres e ocupados de uma área de alocação dinâmica de memória. A área de alocação será chamada de buffer. O buffer será formado por N slots. Cada slot tem um índice, que varia de 0 a N - 1. Inicialmente o buffer será considerado vazio. O programa receberá solicitações de operações sobre o buffer, como solicitações para alocar um conjunto de slots (contíguos), desalocar os slots alocados em uma solicitação o anterior ou solicitar informações sobre área de alocação. O índice do slot onde uma área alocada ou livre inicia será chamado o índice inicial daquela área. O tamanho N do buffer (numero de slots) deverá ser uma constante no programa. Inicialmente deve-se atribuir o valor 20 a esta constante. Posteriormente, no entanto, o valor desta constante poderá ser alterado. Para a implementação deste exercício, deve-se utilizar listas implementadas com apontadores. Os formatos de entrada e saída do programa estão indicados nas seções a seguir. O programa deve ler da entrada padrão e escrever na saída padrão. Segue no anexo informações de como usar o código e o programa.

Por: Danilo Azevedo


Resolução de problemas por meio de buscas - Labirinto (Inteligência Artificial)

Inteligência Artificial - Problema do Labirinto: - Descrição do problema: Um agente caminha por um labirinto até encontrar o ponto de saída. O ambiente do labirinto é um espaço de quadros, sua representação pode ser um vetor ou matriz. Ex.: M(10x10). O ambiente é identificado com espaço livre, ou bloqueado. O problema trata-se de: - Buscar caminhos; - Planejar ações de trajetórias; - Realizar movimentação ou navegação.

Por: Danilo Azevedo


Hashing Linear

O código é uma implementação de um arquivo estruturado como uma tabela hash que usa o método Hashing Linear. O programa deve representar os seguintes parâmetros como constantes: 1. N: número de páginas inicial; 2. REGISTROS_POR_PAGINA: número de registros por página no disco. O programa deve permitir que os valores destas constantes sejam alterados (para qualquer valor maior ou igual a 1). Os valores iniciais destas variáveis devem ser: N = 2 e REGIST ROS_P OR_P AGINA = 3. Todas as páginas terão o mesmo número de registros. Cada registro será composto por um valor inteiro positivo (chave), outro valor inteiro positivo (idade) e por uma cadeia de caracteres (nome). As funções de hashing a serem utilizadas (por nível) são: h.nivel(chave) = chave mod (N x 2^nivel) Como usar o programa: Para começar a inserção entre com a letra "i" e na linha seguinte uma chave (um número maior que 0), na linha seguinte um nome e depois uma idade. Para consultar ou remover registros entre: - Consultar - "c" e na linha seguinte a chave. - Remover - "r" e na linha seguinte a chave. Para imprimir a estrutura da tabela Hash entre com a letra "p" Para encerrar o programa entre com a letra "e". Para executar o código utilize o arquivo "principal.py" para execução/compilação.

Por: Danilo Azevedo


Hashing com Árvore Binária

O código é uma implementação de um arquivo estruturado como uma tabela hash em que o método de resolução de colisão utiliza Árvore Binária. Para melhor entendimento do código, busque conceito sobre manipulação de arquivos com "hashing". Como usar o programa: O código foi feito para suportar uma estrutura hash com 11 arquivos, no código você pode alterar o tamanho da estrutura, se alterar coloque sempre números primos (7, 11, 13, 17, 19, 23...). Primeiro execute o código com nome "Main.py", e depois disso siga as instruções abaixo. Para começar a inserção entre com a letra "i" e na linha seguinte uma chave (um número maior que 0), na linha seguinte um nome e na linha seguinte uma idade. Para consultar ou remover registros entre: - consultar - "c", na linha seguinte a chave. - remover - "r", na linha seguinte a chave. Para imprimir a estrutura da tabela Hash entre com a letra "p". Para encerrar o programa tecle a letra "e".

Por: Danilo Azevedo


Árvore B

Implementação de uma árvore B. Conforme definição, cada nó da árvore conterá, com exceção da raiz, no mínimo "d" registros e no máximo "2d" registros, onde "d" é a ordem da árvore. O código trata-se da adaptação de alguns exemplos de livros de estrutura de dados e organização de arquivos. Para começar a inserção entre com a letra "i" e na linha seguinte uma chave (um número maior que 0), na linha seguinte um nome e na linha seguinte uma idade. Para consultar ou remover registros entre: - consultar - "c", na linha seguinte a chave. - remover - "r", na linha seguinte a chave. Para imprimir a estrutura entre com a letra "p" ou "o".

Por: Danilo Azevedo


LISCH e EISCH - Método de resolução de colisão

O código é uma implementação de um arquivo estruturado como uma tabela hash em que o método de resolução de colisão utilizado é ou o LISCH (Late Insertion Standard Coalesced Hashing) ou o EISCH (Early Insertion Standard Coalesced Hashing). Para iniciar o programa entre com a letra "e" - EISCH ou "l" - LISCH. Para começar a inserção entre com a letra "i" e na linha seguinte uma chave (um número maior que 0), na linha seguinte um nome e na linha seguinte uma idade. Para consultar ou remover registros entre: - consultar - "c", na linha seguinte a chave. - remover - "r", na linha seguinte a chave. Para imprimir a estrutura da tabela Hash entre com a letra "p". Para encerrar o programa letra "e".

Por: Danilo Azevedo


plasadd

insere nomes de aplicativos a uma lista, que vai ser executada po outro script que esta em vias de desenvolvimento ;)

Por: Reinaldo Marques de Lima


Cronômetro e/ou agendador de tarefas em Java

Era para ser apenas um marcador de tempo, mas fui acrescentando outras funções até que virou isso, rs. Funções: - Cronômetro com contagem no formato HH:MM:SS; - Função de pause e stop; - Conta de forma crescente (de 00:00:00 até o tempo configurado), decrescente (do tempo configurado até 00:00:00) ou infinito (de 00:00:00 até que se clique em "Pause" ou "Stop"); - Atalhos para valores pré-configurados de 0h30, 1h00, 1h30, 2h00 ou 2h30; - Notificação personalizada ao encerrar a contagem (opções de exibir mensagem ou executar um comando/script); - Botão de minimizar para a área de notificação (System Tray). Observações: - O ícone da área de notificação possui um aspecto ruim no Linux em função do próprio Java, no Windows ele possui a aparência correta; - O arquivo em anexo possui, além do código fonte, o arquivo .jar executável.

Por: Leandro Nkz



Anterior Proxima