Skip to main content
25 março 2022
Follow Us

Sabemos realmente o que é um algoritmo?!

São termos cada vez mais populares no quotidiano de cada um, mas sabe realmente o que é um algoritmo e do que precisa para ser processado?

Começarei esse artigo com a seguinte afirmação:

Todos (sim, realmente todos 🤯) os problemas podem ser resolvidos de maneira simples: com algoritmos modelados e lógica.

Primeiramente, irei introduzir um pilar da forma de raciocínio que possibilitou todo o avanço tecnológico que temos atualmente, o Pensamento Computacional:

  •      Decomposição

Picture20.png

Consiste em dividir problemas complexos em partes menores e mais fáceis de resolver. Por exemplo: se tentar construir um prédio de 20 andares de uma vez só, poderia parecer impossível, correto? Mas se tijolo a tijolo construir o primeiro andar, e depois de vários pequenos passos evoluir para o segundo, até chegar ao vigésimo, seria um problema com uma solução mais visível (ora, exatamente como acontece na prática 😲).

É exatamente assim que ocorre com grandes problemas computacionais e algoritmos complexos como o caso do Google e Facebook, que possuem “infinitas” linhas de código, mas que foram construídos passo a passo.

O que é um Algoritmo?

Na disciplina de lógica, há uma regra para prova de teoremas denominada Generalização Universal na qual deduzimos algo para depois criarmos uma regra. Poderíamos passar dias a discutir sobre este artifício, mas tentarei aplicá-la nesse artigo de forma simples. Vejamos o seguinte algoritmo:

Preparação de bacalhau com natas.

Ingredientes

Preparação

Batata 500g

1-Pré-cozinhar o Bacalhau a 200 graus

Bacalhau 400g

2-Corte as batatas

Azeite 100ml

3-Cozinhar o bacalhau num tacho

Natas 250ml

4-Juntar as batatas e acrescentar as natas

E teremos como resultado uma saborosa refeição 😋 (e talvez um peso maior na balança) …

Generalizando a preparação de bacalhau com natas, podemos inferir que um Algoritmo é uma sequência de instruções bem definidas utilizada para resolver problemas. Em resumo: vai receber algo, depois modificar ou realizar um trabalho com o que recebeu, e por fim, devolver uma saída.

Algumas analogias importantes:

  1. Recebe um ou mais (inputs) entradas, na nossa linguagem 😯

Essas entradas não são mais do que os dados que nosso algoritmo vai receber do mundo exterior. No nosso exemplo, os ingredientes (batata, bacalhau, azeite e natas).Picture18.png

  1.  Irá realizar uma sequência de passos: poderá alterar as nossas entradas (inputs), modificá-las, agrupar ou separar dependendo do contexto. Ou seja, seguir uma sequência bem definida de ações. No nosso exemplo, a preparação (1-Pré-aqueça o bacalhau, 2-Corte as batatas, 3-Cozinhar o bacalhau num tacho e 4-Juntar as batatas e acrescentar as natas).
  1. Irá realizar uma sequência de passos: poderá alterar as nossas entradas (inputs), modificá-las, agrupar ou separar dependendo do contexto. Ou seja, seguir uma sequência bem definida de ações. No nosso exemplo, a preparação (1- Pré-aqueça o bacalhau, 2-  Corte as batatas, 3- Cozinhar o bacalhau num tacho e 4- Juntar as batatas e acrescentar as natas).
  1. Por fim, o nosso algoritmo irá produzir uma saída (output). É o que finalmente se pretende, ou seja, a nossa solução final. No nosso exemplo, é finalmente o bacalhau com natas pronto para ser saboreado 😋

Picture17.png

O que são testes lógicos?

No mundo real, utilizamos testes lógicos intermitentemente, mas na maioria das vezes de forma inconsciente. Utilizando a nossa preparação de bacalhau com natas novamente, faço-lhe as seguintes perguntas:

- E se não tivéssemos forno para pré-aquecer o bacalhau, como manda o passo 1?

- E se as batatas já estivessem sido cortadas, seria necessário cortá-las novamente como sugere o passo 2?

De maneira geral, testes lógicos são uma (ou mais) pergunta(s) que fazemos e esperamos como resultado apenas dois valores específicos: Verdadeiro ou Falso. Depois desses resultados, normalmente, tomamos uma decisão específica ou um caminho alternativo.
Picture19.png

Ao fazermos a pergunta “Temos forno para pré-aquecer o bacalhau?”, teremos dois resultados possíveis, verdadeiro ou falso. Agora, é importante notarmos que dependendo do nosso resultado, tomaríamos uma decisão diferente para a continuação do nosso algoritmo.

Vamos supor que se a nossa resposta fosse verdadeira (temos o forno), então o nosso próximo passo seria obviamente começar o pré-aquecimento. De maneira análoga, se a resposta fosse falsa (ou seja, não possuímos o forno), o nosso caminho seria ramificado para a compra de um, já que em hipótese alguma poderíamos ficar sem jantar o nosso querido bacalhau com natas 😊.

Dito isto, os testes lógicos são primordiais para ultrapassarmos nossos obstáculos. Visto que no mundo real temos diversas variáveis que irão determinar qual o caminho que devemos seguir para obtermos o resultado esperado.

Para finalizar, revisitarei a afirmação que fizemos ao começar o artigo: Ao dividirmos o nosso problema (por mais complexo que seja) em uma sequência de instruções mais simples (Algoritmo), e se aliarmos com Testes Lógicos bem estruturados, a solução poderá ser entregue nas nossas mãos. 

Agradeço pela atenção até aqui, até o próximo artigo.

Tiago.

Tiago Figueredo

Assine a nossa newsletter e receba o nosso conteúdo diretamente no seu email