935 resultados para Linguagem de programação funcional adaptativa


Relevância:

100.00% 100.00%

Publicador:

Resumo:

A linguagem de programação Java vem sendo uma das escolhidas para a implementação de aplicações compostas por objetos distribuídos. Estas aplicações caracterizam-se por possuir comportamento complexo e, portanto, são mais difíceis de depurar e refinar para obter melhores desempenhos. Considerando a necessidade do desenvolvimento de uma ferramenta de monitoração para o modelo de objetos distribuídos, que colete informações mais detalhadas sobre a execução da aplicação, é apresentado neste trabalho um ambiente de monitoração de aplicações distribuídas escritas em Java, o DOMonitor. Um dos objetivos do DOMonitor é obter o comportamento que a aplicação apresenta durante a execução, possibilitando a detecção de comportamentos equivocados e seu respectivo refinamento. O DOMonitor é voltado para aplicações compostas por objetos distribuídos e caracteriza-se por identificar principalmente: (i) o comportamento dinâmico das threads; (ii) a utilização dos métodos de sincronização; e (iii) a comunicação entre os entes distribuídos da aplicação. O DOMonitor está fundamentado em quatro premissas: (i) ser transparente para o usuário, não exigindo anotações no código fonte; (ii) apresentar uma organização modular, e por isto ser flexível e expansível; (iii) ser portável, não exigindo nenhuma alteração na Maquina Virtual Java; e (iv) operar de forma a garantir a ordem dos eventos previstos pelo programa. Os dados produzidos pelo DOMonitor podem ser utilizados com diversas finalidades tais como visualização da execução, escalonamento e como suporte à execução de aplicações móveis. Para comprovar esta versatilidade, foi proposta a integração do sistema a dois outros projetos, o Pajé e o ISAM. O projeto ISAM utilizará os dados monitorados para tomadas de decisão durante o curso da execução e o projeto Pajé permite a visualização gráfica das características dinâmicas de uma aplicação Java.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Nosso modelo de aprendizagem esta apoiado nas "velhas" idéias de Piaget e Rogers que, a nosso ver, estão presentes na proposta de Seymour Papert, que foi o ponto de partida para a construção do nosso modelo. Papert, seguidor de Piaget e criador da linguagem de programação LOGO, afirma que a motivação da criança nasce de sua necessidade em reconhecer o sucesso. Aplicar, em treinamento de executivos, , ideias extraídas das teorias de aprendizagem para crianças pode parecer estranho para alguns. Para nos, com a experiência de professor de cerca de 15. 000 alunos em 2 5 anos de magistério, nada vemos de estranho. Na verdade, nossa experiencia nos ensinou que quase todo adulto, no inicio de um processo de aprendizagem, comporta-se como uma criança. Pode também parecer estranho a alguns aplicar as "velhas", ideias de Piaget e Rogers num momento em que se fala tanto em MODERNIDADE . Uma analise mais cuidadosa vai mostrar que nada ha de estranho nesta proposta, pois MODERNIDADE e, essencialmente EDUCAÇÃO.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Nas últimas décadas, sistemas de suprimento de energia que utilizam recursos renováveis têm sido estudados e empregados como opção para o fornecimento de energia elétrica em comunidades isoladas em áreas remotas. Devido aos avanços da tecnologia fotovoltaica associada à diminuição de custos e maior conhecimento de seu desempenho, os sistemas fotovoltaicos apresentam-se como uma opção promissora. Neste trabalho apresenta-se o desenvolvimento de um programa computacional de dimensionamento e simulação de sistemas fotovoltaicos autônomos na linguagem de programação Visual Basic 5.0, chamado PVSize, capaz de propor, para uma certa configuração de sistema, o número de baterias e módulos com seu risco de déficit de energia. Este programa tem como finalidade facilitar a interação com o usuário, e poderá ser utilizado como uma ferramenta auxiliar no processo de escolha dos elementos do sistema e estabelecer a melhor configuração através de um acompanhamento anual com base horária dos parâmetros envolvidos. Estes elementos são caracterizados através da implementação de modelos matemáticos propostos por diferentes autores que descrevem o seu desempenho individual. A integração destes modelos através de uma metodologia apropriada levou ao desenvolvimento de um programa completo de dimensionamento e simulação de sistemas fotovoltaicos autônomos. O potencial energético solar é obtido a partir de informações das características climatológicas locais, utilizadas para gerar séries de dados de radiação a partir de modelos estatísticos O programa permite projetar sistemas de suprimento de energia elétrica que atenderão cargas comunitárias (iluminação pública e de escolas, bombeamento de água, refrigeração em centros de saúde, irrigação, telecomunicações, e mais) e cargas residenciais (iluminação, refrigeração, lazer, etc.) tornando-se uma ferramenta importante para o projeto de sistemas fotovoltaicos autônomos. A comparação dos valores obtidos através de PVSize e outros programas computacionais desenvolvidos por estabelecimentos conceituados na área apresentou uma ótima concordância. Desta forma fica demonstrada a adequação do PVSize para o dimensionamento e simulação de sistemas fotovoltaicos autônomos.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

A utilização de reações nucleares ressonantes estreitas em baixas energias é uma ferramenta importante para a determinação de distribuições de elementos leves em filmes finos com resolução em profundidade subnanométrica. O objetivo do trabalho descrito ao longo da presente dissertação é aprimorar os métodos utilizados para a aquisição e interpretação das curvas experimentais. A obtenção das curvas experimentais consiste na detecção dos produtos das reações nucleares em função da energia das partículas incidentes, fazendo necessária variar a energia das partículas do feixe em passos discretos no intervalo desejado. Neste trabalho implementou-se um sistema automático para o controle e incremento da energia do feixe e monitoramento dos produtos das reações nucleares. Esse sistema de varredura automático de energia, além de aumentar consideravelmente a velocidade da medida, aumenta a qualidade das curvas experimentais obtidas. Para a interpretação das curvas de excitação experimentais, foi implementado um programa em linguagem de programação C, baseado na teoria estocástica, que permite simular numericamente as curvas de excitação. Para demonstrar a sua funcionalidade o método desenvolvido foi aplicado para verificar a estabilidade termodinâmica de filmes dielétricos ultrafinos depositados sobre silício, que foram posteriormente nitretados por plasma.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Este trabalho relata as atividades de estudo, projeto e implementação de uma aplicação distribuída que explora mecanismos básicos empregados em comunicação de grupo. O estudo é focado no desenvolvimento e uso dos conceitos de sincronismo virtual e em resultados aplicáveis para tolerância a falhas. O objetivo deste trabalho é o de demonstrar as repercussões práticas das principais características do modelo de sincronismo virtual no suporte à tolerância a falhas. São preceitos básicos os conceitos e primitivas de sistemas distribuídos utilizando troca de mensagens, bem como as alternativas de programação embasadas no conceito de grupos. O resultado final corresponde a um sistema Cliente/Servidor, desenvolvido em Java RMI, para simular um sistema distribuído com visões de grupo atualizadas em função da ocorrência de eventos significativos na composição dos grupos (sincronismo virtual). O sistema apresenta tratamento a falhas para o colapso (crash) de processos, inclusive do servidor (coordenador do grupo), e permite a consulta a dados armazenados em diferentes servidores. Foi projetado e implementado em um ambiente Windows NT, com protocolo TCP/IP. O resultado final corresponde a um conjunto de classes que pode ser utilizado para o controle da composição de grupos (membership). O aplicativo desenvolvido neste trabalho disponibiliza seis serviços, que são: inclusão de novos membros no grupo, onde as visões de todos os membros são atualizadas já com a identificação do novo membro; envio de mensagens em multicast aos membros participantes do grupo; envio de mensagens em unicast para um membro específico do grupo; permite a saída voluntária de membros do grupo, fazendo a atualização da visão a todos os membros do grupo; monitoramento de defeitos; e visualização dos membros participantes do grupo. Um destaque deve ser dado ao tratamento da suspeita de defeito do coordenador do grupo: se o mesmo sofrer um colapso, o membro mais antigo ativo é designado como o novo coordenador, e todos os membros do grupo são atualizados sobre a situação atual quanto à coordenação do grupo.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Uma etapa fundamental no desenvolvimento de sistemas tolerantes a falhas é a fase de validação, onde é verificado se o sistema está reagindo de maneira correta à ocorrência de falhas. Uma das técnicas usadas para validar experimentalmente um sistema é injeção de falhas. O recente uso de sistemas largamente distribuídos para execução dos mais diversos tipos de aplicações, faz com que novas técnicas para validação de mecanismos de tolerância a falhas sejam desenvolvidas considerando este novo cenário. Injeção de falhas no sistema de comunicação do nodo é uma técnica tradicional para a validação de aplicações distribuídas, para forçar a ativação dos mecanismos de detecção e recuperação de erros relacionados à troca de mensagens. A condução de experimentos com injetores de comunicação tradicionais é feita pelo uso do injetor em uma máquina do sistema distribuído. Se o cenário desejado é de múltiplas falhas, o injetor deve ser instanciado independentemente nas n máquinas que as falhas serão injetadas. O controle de cada injetor é individual, o que dificulta a realização do experimento. Esta dificuldade aumenta significativamente se o cenário for um sistema distribuído de larga escala. Outro problema a considerar é a ausência de ferramentas apropriadas para a emulação de determinados cenários de falhas. Em aplicações distribuídas de larga escala, um tipo comum de falha é o particionamento de rede. Não há ferramentas que permitam diretamente a validação ou a verificação do processo de defeito de aplicações distribuídas quando ocorre um particionamento de rede Este trabalho apresenta o estudo de uma abordagem para injeção de falhas que permita o teste de atributos de dependabilidade de aplicações distribuídas de pequena e larga escala implementadas em Java. A abordagem considera a não obrigatoriedade da alteração do código da aplicação sob teste; a emulação de um cenário de falhas múltiplas que ocorrem em diferentes nodos, permitindo o controle centralizado do experimento; a validação de aplicações que executem em sistemas distribuídos de larga escala e consideram um modelo de falhas realista deste tipo de ambiente, incluindo particionamentos de rede. A viabilidade da abordagem proposta é mostrada através do desenvolvimento do protótipo chamado FIONA (Fault Injector Oriented to Network Applications), o qual atualmente injeta falhas em aplicações desenvolvidas sob o protocolo UDP.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Esta dissertação apresenta duas implementações de algoritmos para gerência dinâmica de memória em software, as quais foram desenvolvidas utilizando como alvo uma plataforma embarcada Java. Uma vez que a plataforma utilizada pertence a uma metodologia para geração semi-automática de hardware e software para sistemas embarcados, os dois algoritmos implementados foram projetados para serem integrados ao contexto desta mesma metodologia. Como forma de estabelecer comparações detalhadas entre as duas implementações desenvolvidas, foram realizadas diversas estimativas em desempenho, uso de memória, potência e energia para cada implementação, utilizando para isto duas versões existentes da plataforma adotada. Através da análise dos resultados obtidos, observou-se que um dos algoritmos desenvolvidos obteve um desempenho melhor para realização da gerência dinâmica da memória. Em contrapartida, o outro algoritmo possui características de projeto que possibilitam sua utilização com aplicações de tempo-real. De um modo geral, os custos adicionais resultantes da utilização do algoritmo de tempo-real, em relação ao outro algoritmo também implementado, são de aproximadamente 2% para a potência média dissipada, 16% para o número de ciclos executados, 18% para a energia consumida e 10% sobre a quantidade de total memória utilizada. Isto mostra que o custo extra necessário para utilização do algoritmo de tempo real é razoavelmente baixo se comparado aos benefícios proporcionados pela sua utilização. Como impactos finais produzidos por este trabalho, obteve-se um acréscimo de 35% sobre o número total de instruções suportadas pela arquitetura utilizada. Adicionalmente, 12% das instruções que já existiam no conjunto desta arquitetura foram modificadas para se adaptarem aos novos mecanismos implementados. Com isto, o conjunto atual da arquitetura passa a corresponder a 44% do total de instruções existentes na arquitetura da máquina virtual Java. Por último, além das estimativas desenvolvidas, foram também realizadas algumas sugestões para melhoria global dos algoritmos implementados. Em síntese, alguns pontos cobertos por estas sugestões incluem: a migração de elementos do processamento do escopo dinâmico para o estático, o desenvolvimento de mecanismos escaláveis para compactação de memória em tempo-real, a integração de escalonadores ao processo de gerência de memória e a extensão do processo de geração semi-automática de software e hardware para sistemas embarcados.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Sistemas produtivos industriais podem combinar, em células de manufatura, diferentes características de automação de processos permitindo interfaceamento e possibilitando a flexibilização e otimização da manufatura. Nos processos de fabricação, as dificuldades para a execução de processos de usinagem convencional ou mesmo através de comando numérico, quando se dispõe de máquinas adequadas para a fabricação de peças de geometrias complexas, podem limitar a criatividade, bem como dificultar o desenvolvimento do processo produtivo de forma otimizada. As dificuldades encontradas vão desde fixação das peças, necessidades de dispositivos especiais, restrições nos volumes de trabalho de máquinas CNC e mesmo a geração de trajetórias complexas para máquinas com limitações de eixos. Este trabalho propõe uma metodologia alternativa para usinagem, especialmente fresamento, com desenvolvimento de um algoritmo capaz de, através da utilização de recursos de sistemas CAD/CAM, traduzir arquivos gráficos para uma linguagem de programação utilizada em robôs. Na aplicação utilizam-se recursos dos sistemas CAD/CAM para gerar, numa primeira etapa, o código de programação para máquinas-ferramenta de comando numérico e posterior adaptação, para aplicação em sistemas robóticos. Informações de caminhos de ferramenta para usinagem em máquinas CNC são convertidos, através de uma interface computacional, em trajetórias a serem seguidas por uma ferramenta guiada por um manipulador de robô industrial. Os parâmetros de processo são também adequados as restrições dos sistemas robotizados. A viabilidade do sistema proposto é confirmada através de testes realizados em modelos de superfícies complexas, onde o objetivo do referido trabalho foi alcançado.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Mandelbrot (1971) demonstrou a importância de considerar dependências de longo prazo na precificação de ativos - o método tradicional para mensurá-las, encontrado em Hurst (1951), faz uso da estatística R/S. Paralelamente a isso, Box e Jenkins (1976; edição original de 1970) apresentaram sua famosa metodologia para determinação da ordem dos parâmetros de modelos desenvolvidos no contexto de processos com memória de curto prazo, conhecidos por ARIMA (acrônimo do inglês Autoregressive Integrated Moving Average). Estimulados pela percepção de que um modelo que pretenda representar fielmente o processo gerador de dados deva explicar tanto a dinâmica de curto prazo quanto a de longo prazo, Granger e Joyeux (1980) e Hosking (1981) introduziram os modelos ARFIMA (de onde o F adicionado vem de Fractionally), uma generalização da classe ARIMA, nos quais a dependência de longo prazo estimada é relacionada ao valor do parâmetro de integração. Pode-se dizer que a partir de então processos com alto grau de persistência passaram a atrair cada vez mais o interesse de pesquisadores, o que resultou no desenvolvimento de outros métodos para estimá-la, porém sem que algum tenha se sobressaído claramente – e é neste ponto que o presente trabalho se insere. Por meio de simulações, buscou-se: (1) classificar diversos estimadores quanto a sua precisão, o que nos obrigou a; (2) determinar parametrizações razoáveis desses, entendidas aqui como aquelas que minimizam o viés, o erro quadrático médio e o desvio-padrão. Após rever a literatura sobre o tema, abordar estes pontos se mostrou necessário para o objetivo principal: elaborar estratégias de negociação baseadas em projeções feitas a partir da caracterização de dependências em dados intradiários, minuto a minuto, de ações e índices de ações. Foram analisadas as séries de retornos da ação Petrobras PN e do Índice Bovespa, com dados de 01/04/2013 a 31/03/2014. Os softwares usados foram o S-Plus e o R.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Versão com menu acessível para leitores de tela e vídeo com audiodescrição.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

O professor apresenta o que é um framework através de dois exemplos de frameworks .NET e Java Runtime Environment (Java Virtual Machine - JVM). Também ilustra como é a estrutura dos dois frameworks .NET e JRE.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

O professor faz apresentação das linguagens de programação C++ e Java. Ilustra o que são linguagens de programação e faz uma comparação entre as duas linguagens, mostrando o que cada uma disponibiliza para o desenvolvimento dos projetos.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

O professor apresenta as funcionalidades e estrutura da linguagem de programação C++. Ilustra o que é a linguagem C++, apresenta como é a estrutura de um código da linguagem e quais são os recursos que a linguagem disponibiliza.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

O professor apresenta as funcionalidades e estrutura de Orientação a Objeto. Ilustra como surgiu orientação a objeto, o que ela representa nas linguagens de programação e as estruturas de uma linguagem de programação orientada a objeto.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

O professor apresenta a proteção e integridade dos dados dentro dos códigos de programação, ilustrando como esta é estruturada dentro do código e o motivo de proteger os dados contidos nos códigos.