SkillsTecnológicas
Menu
Conteúdo da trilha

Conteúdo 2 de 6

O que são algoritmos

Conheça as propriedades de um algoritmo e aprenda a descrever soluções sem depender de código.

Publicado em 9 de setembro de 202614 min de leituraSkills Tecnológicas

Formas geométricas passam por passos desenhados a lápis e chegam ordenadas ao resultado

Algoritmo é uma sequência de passos para resolver um problema

Um algoritmo é um conjunto de instruções definidas e ordenadas que recebe uma entrada, executa uma transformação e produz um resultado. Ele descreve como sair de uma situação inicial e chegar ao objetivo, sem precisar estar escrito em uma linguagem de programação.

Uma receita, uma rota e um manual podem lembrar algoritmos porque apresentam etapas. Mas, na computação, as instruções precisam ser precisas o bastante para que cada passo possa ser executado e seu resultado conferido.

Entrada passa por passos ordenados, produz uma saída e segue para verificação
Entrada, passos, saída e teste formam um modelo útil para analisar um algoritmo.

Qual é a relação entre algoritmo e lógica de programação

Na aula sobre o que é lógica de programação, vimos que a lógica organiza dados, regras e decisões. O algoritmo é uma maneira concreta de registrar essa solução como uma sequência executável.

Primeiro você compreende o problema e constrói o raciocínio. Depois descreve os passos em linguagem natural, pseudocódigo, fluxograma ou código. Um programa pode reunir muitos algoritmos, e o mesmo algoritmo pode ter implementações em linguagens diferentes.

Quais são as partes de um algoritmo

Considere um algoritmo que calcula o troco de uma compra:

  • problema: descobrir quanto deve ser devolvido;
  • entrada: valor pago e preço da compra;
  • processamento: subtrair o preço do valor pago;
  • saída: valor do troco;
  • condição: o pagamento precisa ser suficiente.

Em pseudocódigo:

receba preço
receba pagamento

se pagamento >= preço
  troco = pagamento - preço
  informe troco
senão
  informe "Pagamento insuficiente"

O algoritmo não depende de uma linguagem, mas depende de regras claras. Ainda precisamos definir, por exemplo, como representar centavos e o que fazer com valores negativos. O contexto determina quais casos precisam ser tratados.

Características de um bom algoritmo

Não basta listar ações. Para uma tarefa finita, um algoritmo precisa apresentar algumas propriedades práticas:

  • Passos definidos: cada instrução tem significado compreensível e não depende de adivinhação.
  • Ordem coerente: uma etapa usa apenas dados que já existem naquele momento.
  • Entradas e saídas conhecidas: sabemos o que será recebido e qual resultado se espera.
  • Término: a sequência alcança um ponto final para as entradas previstas.
  • Correção: o resultado corresponde à especificação do problema.
  • Aplicabilidade: as operações podem ser realizadas no ambiente escolhido.

“Bom” também depende do objetivo. Entre dois algoritmos corretos, um pode ser mais simples de compreender, usar menos memória ou chegar ao resultado mais rapidamente.

Algoritmo ligado aos critérios de correção, clareza, término e eficiência
Correção vem primeiro; clareza e eficiência ajudam a escolher entre soluções corretas.

O mesmo problema pode ter algoritmos diferentes

Imagine uma lista ordenada com os valores 2, 5, 8, 12, 19 e a tarefa de encontrar o número 19.

Uma busca sequencial começa no primeiro item e compara um por um até encontrar o valor. Ela funciona mesmo quando a lista não está ordenada.

Uma busca binária compara o item central e descarta a metade em que o valor não pode estar. Ela reduz o espaço de busca rapidamente, mas exige que a coleção esteja ordenada.

Comparação entre busca sequencial, que examina cinco valores, e busca binária, que elimina partes de uma lista ordenada
Os dois caminhos encontram 19, mas possuem requisitos e quantidades de comparações diferentes.

Esse exemplo mostra duas ideias importantes: existir mais de uma solução não significa que todas sejam equivalentes; e um algoritmo mais eficiente pode exigir uma condição adicional. A busca binária não deve ser aplicada diretamente a uma lista desordenada.

Correção e eficiência são perguntas diferentes

A primeira pergunta é: o algoritmo entrega o resultado correto para as entradas previstas? Só depois faz sentido perguntar quanto tempo ou memória ele consome.

No exemplo anterior, ambas as buscas são corretas quando seus requisitos são respeitados. Conforme a lista cresce, porém, a diferença no número de comparações pode se tornar relevante. Essa análise será aprofundada mais adiante na trilha; neste momento, basta entender que correção e desempenho não são sinônimos.

Um algoritmo rápido que produz uma resposta errada não resolve o problema. Um algoritmo correto também pode precisar de melhorias se consumir recursos incompatíveis com o cenário real.

Algoritmos não existem apenas na programação

Algoritmos aparecem em mecanismos de busca, sistemas de navegação, compactação de arquivos, recomendações, ordenação de dados e inúmeras outras atividades. Também podemos usar o pensamento algorítmico para descrever processos fora do computador.

Isso não significa que toda lista seja automaticamente um algoritmo. “Organize os documentos” é um objetivo, não uma sequência. Para torná-lo executável, é preciso definir o critério de ordenação, como comparar os itens, o que fazer com empates e quando a tarefa termina.

Erros comuns ao descrever algoritmos

Confundir objetivo com instrução

“Encontrar o menor preço” diz o que queremos, mas não como fazer. Um algoritmo precisa indicar como percorrer os preços, guardar o menor valor encontrado e produzir a resposta.

Omitir condições importantes

No cálculo do troco, ignorar pagamento insuficiente cria um resultado sem sentido. Casos inválidos e limites fazem parte do problema.

Depender de conhecimento implícito

Termos como “depois faça normalmente” funcionam em conversas humanas, mas não definem uma operação verificável.

Avaliar apenas um exemplo

Um teste que funciona não prova que todos funcionarão. Use casos comuns, fronteiras e entradas inválidas para procurar falhas.

Pratique: encontre o maior valor

Descreva um algoritmo que recebe uma lista não vazia de números e informa o maior valor. Faça isso sem escolher uma linguagem.

Defina a entrada e a saída; explique como o valor de referência é escolhido; percorra os demais itens; atualize a referência quando encontrar um número maior; e teste com 4, 9, 2, 9, 1. Depois teste uma lista com apenas um item e outra contendo somente números negativos.

Se outra pessoa consegue seguir suas instruções e obter o resultado esperado, a descrição está suficientemente clara para uma primeira implementação.

O que você deve guardar

Algoritmo é uma sequência definida de passos que transforma entradas em uma saída para resolver um problema. Ele pode ser representado sem código, deve ser validado quanto à correção e pode ser comparado com outras soluções em clareza e eficiência.

Veja a organização completa no catálogo da trilha de Lógica de Programação. O próximo conteúdo conecta esses fundamentos a decomposição, reconhecimento de padrões e abstração por meio do pensamento computacional.

Referências