algoritmo
Algoritmo é a relação entre entrada e saída do programa, é o rascunho do programa, o projeto. E um projeto antes de colocar a mão na massa é indispensável. Enquanto a implementação é a função dos pedreiros, o algoritmo é a função dos engenheiros. Se os engenheiros não existissem, acho que os pedreiros não iam conseguir fazer as casas e os prédios que eles constroem hoje em dia.
O algoritmo sempre existe, mesmo que apenas no seu pensamento. A primeira coisa que você pensa quando quer fazer uma aplicação (a não ser que você seja louco) é: o que é a aplicação? O que ela vai fazer? E se você sair implementando uma coisa complexa, você vai se decepcionar depois demorando mais do que o tempo de fazer a implementação só para limpar o código! Por isso, representar algoritmos complexos é essencial.
E mais… Mesmo se você tivesse tempo infinito, memória infinita, etc. e tal (não tivesse necessidade de limpar o código), você vai precisar de um algoritmo para provar que o seu programa funciona, para se organizar e para estudar a sua lógica. Se você não planejar um algoritmo para o caso acima, qualquer funcionalidade que você queira adicionar no meio, por falta de projeto e organização, vai demorar bem mais tempo. Por isso, algoritmo não é uma perda de tempo antes da programação, mas a programação é que se torna uma perda de tempo quando não teve um algoritmo.
O raciocínio lógico e o algoritmo que o expresse independem de linguagem de programação que se deseja aprender. Essa será apenas a ferramenta que implementará o raciocínio transformando-o em um programa de computador. A lógica não é absoluta, ou seja, haverá sempre várias alternativas possíveis para atingir o mesmo resultado. Mas chegar ao mesmo resultado não quer dizer que o programa esteja perfeito. Mesmo que ele rode, deixar o algoritmo o mais enxuto possível e escolher a melhor lógica possível faz toda a diferença O objetivo principal da lógica de programação é