Tutorial sôbre Tabela de Decisões
Representação tabular da solução de um problema lógico
1
. O que é
Linguagem para representar a solução de um problema de lógica , na forma tabular, com objetivo de avaliar uma regra (combinação de condições) e determinar que ações executar, garantindo que não haja redundancias (ações iguais para regras iguais) nem contradições (ações diferentes para regras iguais).
Exemplo:
C1 Condição é verdade ?
C2 Condição é falsa ?
C3 Regra existe ?
C4 Ação é valida (não tem redundancia nem contradição) ?
S N - - condição é 1
S S - - condição é 0
S - S - associar regra a ação (nenhuma ou muitas)
S N S S ação é 1
S N S N ação é 0
Outro exemplo:
Profissional empreendedor consegue atender cliente?
Serviço é viável?
Serviço dentro do escopo do Projeto Apoie?
1 - - Profissional atende seu cliente, não precisa de auxílio
0 1 1 criar projeto com Profissional em parceria com Projeto Apoie
0 0 1 fazer proposta para viabilizar serviço
0 - 0 fora do escopo atual do Projeto Apoie
2
. Como funcionam as tabelas
O processo para avaliar se a lógica da solução de um problema esta correta, parte do problema resolvido ou seja as condições e ações para resolver um problema já foram obtidas. A partir dai o processo é o seguinte:
Avaliar se a condição é verdadeira => trasnformar a condição em 1
Avaliar se a condição é falsa => transformar a condição em zero
Avaliar se a regra existe => Para cada sequencia de zeros e uns associar a nenhuma, uma ou mais ações.
Se uma ação é valida (sem redundancia nem contradição) => transforma a ação em 1
Se uma ação é invalida => transforma a açao em 0
Para qualquer outra condição => terminar o processo
3
. Semantica
Se a combinação de determinadas condições é uma regra existente => certas ações devem ser realizadas.
SE regra existe => execute ação
=> - então
Condição - é um evento ou fato que influi nas ações a serem tomadas.
Regra - é uma sequência de símbolos, cada um relacionado a uma condição. O símbolo pode ser: {1, 0} para indicar o resultado da avaliação. É usado o símbolo "-" para indicar que a condição é irrelevante.
Ações - qualquer operação ou processo a ser executado
4
. Sintaxe
5
. Como ler as tabelas
. condição
.
.
v ----------> ação
6
. Como obter as condições e ações
No método classico - usado quando já existe um procedimeto pré definido.
Identificar as condições
Listar todas as condições, quando identificadas
As condições devem estar na sequencia das mais importante para menos importante
As condições devem ser sempre que possivel, independente ou mutamente exclusivas
Evitar condições negativas
Pode ser: pergunta, expressão lógica, expressão aritmética.
Identificar as ações
Listar na sequencia que elas aparecem.
As açoes devem ser declarações imperativas
Matriz de condições
Formar a matriz com todas as combinações possiveis
Combinação das regras
Combinar as regras simples de acordo com a tabela abaixo:
C1 Ações são identicas?
C2 Tôdas as condições a excessão de uma tem o mesmo valor?
C3 Condições com valores diferentes repete todos os valores para aquela condição?
S S S Pode ser combinado
S S N
S N S
S N N
N - - Não pode ser combinado
Verificação final da tabela
Quanto ao conteudo: o cheque deve garantir que as ações associadas as regras estão corretas.
Quanto a estrutura:
cheque aritimético: Toda tabela tem 2 elevado a n condições ou seja para 3 condições tem 2 elevado a 3 condições ou seja 8.
Desenvolvimento progressivo da regra - usado em entrevistas e tabelas grandes
Considere uma condição verdadeira
Considere as outras condições como a condição verdadeira até achar uma ação
Registre as condições e ações
Negue a ultima condição da sequencia
Volte ao passo 2 enquanto a tabela estiver incompleta
Ao terminar a tabela , faça um verificação aritmética ou bifurcação
7
. Como usar as tabelas
Na programação - Html com Javascript
<html>
<body>
<script type="text/javascript">
a=6;
b=5;
c=3;
//////// condições ///////////////////
condicao = ["a>4", "b==5", "c==4"];
//////// ações ///////////////////
fazer = ["a1", "a2", "a3", "a4"];
////////
regra=[
['01-10', 0, 1, 3],
['010-0', 1, 2, 3],
['01110', 1]];
/////////////////////////////
function AvaliarTabela(cond, regras, acoes){}
//////// avaliar condições ///////////////////
avaliado="";
for (var i=0; i < cond.length; i++) avaliado+= eval(cond[i]);
//////// comparar avaliado com regra, executar ações ///////////////////
for (regra in regras){
se cabe regras[0] for (=1;<.lenght;++) eval([]);}}
//////// executar ações ///////////////////
switch (avaliado) {
case 0: // 000
document.write("<b>Achei 0</b>");
break;
case 1: // 001
document.write("<b>Achei 1</b>");
break;
case 2: // 010
document.write("<b>Achei 2</b>");
break;
case 6: // 110
document.write("<b>Achei 6</b>");
break;
default:
document.write("<b>Resultado foi "+avaliado+"</b>");
}
//////// fim //////////////////
</script>
<p>Fim.</p>
</body>
</html>
Na tomada de decisão
Profissional empreendedor consegue atender cliente?
Serviço é viável?
Serviço dentro do escopo do Projeto Apoie?
1 - - Profissional atende seu cliente, não precisa de auxílio
0 1 1 criar projeto com Profissional em parceria com Projeto Apoie
0 0 1 fazer proposta para viabilizar serviço
0 - 0 fora do escopo atual do Projeto Apoie
link Arquivo origem:
WTutTabDecisao.xml
. referencia
Tutorial sôbre Tabela de Decisões {7}
O que é
Como funcionam as tabelas
Semantica
Sintaxe
Como ler as tabelas
Como obter as condições e ações
Como usar as tabelas
Índice Local {9}
Projeto Apoie {6}
Projeto Apoie
Projeto PAS Produzir + Aprender + Simplificar
Serviço Web
Relacionamentos entre Personagens
Base de Conhecimento {5}
Conhecimento
Dado
Informação consolidada
Página Pronta - site apoie.org
Pulo do Gato
Contato Projeto Apoie
Linguagem
{5}
Javascript {3}
Referências e Ferramentas
Sintaxe
Cheat Sheet
Erlang Quick Sort
LDC {2}
LDC
LDC - Sintaxe
Definição {9}
Erlang
Python 3.0
Ruby 1.9.1 - Sintaxe
Ruby 1.9.1 - Léxico
Shell
Lua
PHP
XML
Lazy BNF
If
Dojo {4}
Coding Dojo
Coding Dojo - Formatos
Soluções Coding Dojo {6}
Dojo #34: Expressão Aritmética
Dojo #33: Impedimento
Dojo #32: Sequência Numérica
Dojo #31: Tráfego
Dojo #29: Boliche
Dojo #28: Jogo da Vida
Dojo Rio
Qualidade {2}
5W {3}
5W2H
5W1H
5W2H - 5W1H - Modelo
PDCA
Componente {5}
Componente
ExibirLinguagem.htm
Gerar Páginas
Lista
Tabela de Decisões
Paletas {10}
Paleta - Mais utilizadas
Paleta - Apoie
Paleta - Apresentação e Componentes
Paleta - Diagramas
Paleta - Diagrama Sintático
Paleta - Dojo
Paleta - Logos
Paleta - Projetos
Paleta - Setas
Paleta - Tecnologia
Evento {4}
Pendência
Estados de Componentes
Scrum
Prioridade
Método {5}
Oficina
Serviço Web
Warnier/Orr Basics
Apresentar Problema Resolvido
Simples x Complexo
Imposto de Renda