Prioriza esse formalismo matemático na formulação das soluções para os problemas computacionais propostos. A idéia é pensar no algoritmo como sendo uma grande e única função formada por uma combinação de várias outras pequenas funções, cada uma resolvendo uma pequena parte do problema.
Uma boa prática para elaboração do algoritmo de solução de um problema e posterior codificação desse algoritmo em uma linguagem de programação é:
Ao seguir os passos 1, 2 e 3, estaremos redigindo a função principal no topo das anotações e seguindo para "baixo" escrevendo as sub-funções necessárias.
Entretanto, ao codificarmos de fato essas funções, precisamos inverter essa ordem, uma vez que o compilador precisa conhecer de antemão todas as funções que por ventura sejam demandadas por outras mais à frente no código.
Por isso, faz sentido considerar que elaboramos o algoritmo "DE CIMA PARA BAIXO" e o código "DE BAIXO PARA CIMA".
[EXEMPLO] Crie um programa que calcule a soma das áreas de duas figuras geométricas distintas: um retângulo e uma elipse.
Algoritmo visual
Algoritmo em pseudocódigo
"DE CIMA PARA BAIXO"
resultado
a1
a2
Subproblemas são gerados...
, , ,
... e resolvidos:
, , , são pré-deifinidos ou fornecidos pelo usuário
Programa em Javascript
"DE BAIXO PARA CIMA"
... resultado = fsoma(a1,a2)
... const a1 = fareaRet(l1,l2) const a2 = fareaEli(r1,r2) resultado = fsoma(a1,a2)
... const l1 = 6.1 //ou fornecido pelo usuário const l2 = 4.4 //ou fornecido pelo usuário const r1 = 3.0 //ou fornecido pelo usuário const r2 = 5.3 //ou fornecido pelo usuário const a1 = fareaRet(l1,l2) const a2 = fareaEli(r1,r2) resultado = fsoma(a1,a2)
function fareaEli(x, y) { const pi = 3.1415 return pi*x*y } function fareaRet(x, y) { return x*y } function fsoma(x, y) { return x + y } const l1 = 6.1 //ou fornecido pelo usuário const l2 = 4.4 //ou fornecido pelo usuário const r1 = 3.0 //ou fornecido pelo usuário const r2 = 5.3 //ou fornecido pelo usuário const a1 = fareaRet(l1,l2) const a2 = fareaEli(r1,r2) resultado = fsoma(a1,a2) console.log(resultado)