Achamos que um algoritmo resolve 2 tipos de problema:
* sequencial
* lógico

A parte sequencial é bastante estudada em AFD - Autômato Finito Determinístico - exemplo: http://apoie.org/DojoExpressaoAritmetica.htm#5

Uma das formas de tratarmos a parte lógica é através de Tabela de Decisões - exemplo: http://www.apoie.org/Ldc.htm#4

O problema central no desenvolvimento de algoritmo é a falta de conhecimento de AFD e Tabela de Decisões.