Delphi Core: Parser de expressões lógico-matemáticas

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Neste artigo veremos a criação de um parser para criação de um editor de fórmulas e boas práticas de desenvolvimento.

 Esse artigo faz parte da revista Clube Delphi Magazine edição 104. Clique aqui para ler todos os artigos desta edição

Delphi Core

Parser de expressões lógico-matemáticas

Veja como construir um editor de fórmulas no Delphi

 

 

Neste artigo veremos

·         Criação de um parser para criação de um editor de fórmulas;

·         Boas práticas de desenvolvimento.

Qual a finalidade?

·         Criar um editor de fórmulas para evitar que o usuário torne-se escravo do programador.

Quais situações utilizam esses recursos?

·         Em qualquer sistema que faz uso de fórmulas matemáticas, tais como cálculos de impostos, fretes, pedágios ou mesmo notas de um aluno;

 

Resumo do DevMan

         Certamente o que um desenvolvedor menos gosta de fazer em um sistema é dar manutenção nele. Isso por uma série de fatores, tais como: custos envolvidos, horas de programação, atrasos em outras tarefas, alocação de recursos que poderiam estar trabalhando em outras tasks e etc.

         A grande maioria dos sistemas é constituída de telas de cadastro, relatórios e regras de negócio. Dependendo do ramo de atividade, um sistema pode funcionar com pequenas fórmulas que fazem parte das regras de negócio, ou seja, os resultados de uma conta ou fórmula podem determinar o fluxo de uma aplicação. Dar manutenção nisso pode ser trabalhoso e oneroso para a empresa e os profissionais envolvidos.

         Por que não então, desenvolver um editor de fórmulas para que o próprio usuário monte suas regras de negócios? Claro que esse é um tema bastante complexo, mas conseguiremos ver como montar tal editor.

 

Uma das qualidades que um sistema de informação deve ter é a flexibilidade em permitir ao usuário customizar o sistema de acordo com as regras de negócios da empresa. Esse conceito também, às vezes chamado de parametrização, possibilita que se o domínio de aplicação se altera, o usuário não necessita chamar o desenvolvedor para alterar as regras no sistema, ele mesmo pode fazer essas alterações no próprio software. Isso é uma boa prática de desenvolvimento de sistemas de informação.

Em sistemas com regras baseadas em fórmulas, uma maneira de implementar esse recurso é por meio de parsers de expressão para funções lógico-matemáticas. Esses parsers analisam, validam e executam expressões matemáticas e lógicas que utilizam-se de parâmetros vindos do sistema de informação e operadores relacionais, lógicos e matemáticos.

Podem ser utilizados, nesses parsers, os operadores relacionais (comparação), lógicos, fatoriais, atribuição de valores, parâmetros definidos pelo usuário e funções lógicas além de variáveis definidas pelo desenvolvedor.

Na prática, podemos utilizar esse recurso criando em nossos sistemas interfaces em que o usuário monta fórmulas de cálculo para regras de domínio de uma aplicação. Por exemplo, para cálculo de salários de um funcionário em um sistema de folha de pagamento, definição das regras de média e aprovação em sistemas de gestão escolar e cálculo de geração de valores de pagamento em sistemas financeiros.

Para demonstrar a utilização desse recurso em sistemas de informação, vamos criar nesse artigo uma aplicação para definição, por parte do usuário, de fórmulas de cálculo de nota final e resultado em um sistema de gestão escolar. Para tanto iremos criar uma interface em que o usuário possa definir os parâmetros que formam a nota e a situação final das disciplinas, suas fórmulas de cálculo e validar essas expressões.

Componente TExpressionParser

Para implementar a aplicação iremos utilizar o componente freeware TExpressionParser que é um parser flexível de expressões para funções lógico-matemáticas. Na Tabela 1 são mostrados os operadores que podem ser utilizados nas expressões. E na Tabela 2 são mostradas as funções que podem ser utilizadas nas expressões.

 

Tipo de Operação

Operadores

Operações matemáticas

+ - * / ^ div mod

Comparações relacionais (também para strings)

> < <> = <= >=

Operações lógicas

and or xor not

Fatoriais

!

Percentagem

%

Atribuição a variáveis

:=

Tabela 1. Operadores do componente TExpressionParser

 

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?