Porque sabemos que parar é morrer, nesta edição da Revista PROGRAMAR introduzimos várias alterações que achamos importantes para continuidade deste projecto. Das várias alterações introduzidas, a salta imediatamente à vista, mesmo ao leitor que ainda está somente a ler a página do editorial, é a mudança de design. Em qualquer tipo de publicação o design influencia o modo como vemos como lemos. Aqui temos que agradecer a todos quantos ajudaram a adaptar este novo design, mas especialmente ao Sérgio Alves por toda a parte da idealização e desenho do novo design.
Continuar a ler
Arquivo anual: 2010
LINQ: Implementação dos operadores TakeLast, TakeLastWhile, SkipLast e SkipLastWhile
Introdução
Há algum tempo necessitei de obter os últimos itens de uma sequência que satisfaziam um determinado critério e, olhando para os operadores disponíveis na classe Enumerable
, apercebi-me de que tal operador não existia.
A única forma de obter o resultado pretendido era inverter a ordem dos itens na sequência, obter os itens que satisfaziam o critério e inverter os itens da sequência resultante. Algo como isto:
Sequence
.Reverse()
.TakeWhile(criteria)
.Reverse();
BYACC
No artigo anterior adquirimos algumas noções sobre FLEX e vimos como implementar um scanner simples. Relembrando, o FLEX é um gerador de analisadores lexicais ou scanners, e o BYACC é um gerador de parsers. Usados em conjunto permitem escrever aplicações bastante sofisticadas, mas no nosso artigo limitamo-nos a considerar uma calculadora simples, servindo como exemplo introdutório. Agora que temos o scanner para a nossa calculadora escrito podemos começar a considerar o parser.
Introdução ao Entity Framework
Programação Funcional com Perl (parte I)
BackgroundWorkers – Implementação prática em Windows Presentation Foundation (WPF)
Neste artigo pretendo mostrar o que é o BackgroundWorker e vou exemplificar como se deve proceder à sua implementação usando a tecnologia WPF na versão .Net Framework 4.
Suponhamos:
Tenho um algoritmo complexo de Optimização Combinatória que irá ter como parâmetro de entrada um objecto do tipo World. Classe que define toda a estrutura de dados da minha aplicação e no final retorna o objecto World com as alterações realizadas pelo algoritmo.
Esta geração vai implicar que tenhamos pelo menos três passos:
- A partir do objecto World vamos criar a estrutura de dados do algoritmo;
- Gera-se o algoritmo a partir dos dados recebidos;
- Depois de gerar o algoritmo é preciso converter o resultado de forma a reflectir no World o resultado do algoritmo.