Notebook exibindo código em um ambiente de desenvolvimento
Antes do código existe uma sequência de decisões: o algoritmo. Crédito da foto.
Compartilhe este conteúdo

Um algoritmo é uma sequência definida de passos para transformar uma entrada em um resultado. Na programação, ele representa a lógica da solução antes de essa lógica ser escrita em C#, Python, Java ou outra linguagem. Por isso, aprender algoritmos não é decorar comandos: é aprender a decompor problemas, decidir o que precisa acontecer e organizar essas decisões em uma ordem que possa ser executada.

Algoritmo é uma solução organizada

Imagine um sistema que precisa calcular a média de duas notas. Antes de pensar em sintaxe, podemos descrever a solução: receber a primeira nota, receber a segunda, somar as duas, dividir o resultado por dois e mostrar a média. Essa sequência já é um algoritmo.

Ideia central: código é uma forma de expressar um algoritmo para o computador. A linguagem muda; a lógica pode continuar a mesma.

Nem toda lista de instruções é útil. Os passos precisam ser claros o bastante para que, dadas as condições previstas, seja possível executá-los sem adivinhar o que o autor quis dizer. Também é importante que o procedimento tenha um objetivo e termine para as entradas às quais se aplica.

Entrada, processamento e saída

Uma maneira simples de começar a analisar problemas é separar três elementos. Entrada é o dado recebido. Processamento é o trabalho realizado com esse dado. Saída é o resultado produzido.

ProblemaEntradaProcessamentoSaída
Calcular médiaDuas notasSomar e dividir por 2Média
Verificar maioridadeIdadeComparar com 18Maior ou menor de idade
Calcular totalPreço e quantidadeMultiplicarValor total

Essa divisão não resolve todo problema, mas obriga o estudante a identificar o que realmente entra no sistema e o que precisa sair dele.

Sequência, decisão e repetição

Muitos algoritmos podem ser entendidos pela combinação de três estruturas. Na sequência, uma ação acontece depois da outra. Na decisão, o caminho depende de uma condição. Na repetição, um conjunto de passos é executado várias vezes.

Por exemplo, um sistema de caixa pode receber o valor da compra, verificar se existe desconto e repetir a leitura dos produtos até o operador encerrar a venda. O problema real combina sequência, decisão e repetição.

Quando você já domina a lógica da repetição, pode avançar para o artigo sobre estrutura FOR em C#.

Como representar um algoritmo

Antes de escrever código, o algoritmo pode ser explicado em linguagem natural, pseudocódigo ou fluxograma. O pseudocódigo é útil porque mantém a atenção na lógica sem exigir todos os detalhes de uma linguagem de programação.

INÍCIO
  leia nota1
  leia nota2
  media ← (nota1 + nota2) / 2

  se media >= 7 então
    escreva "Aprovado"
  senão
    escreva "Reprovado"
  fim-se
FIM

Depois que a solução está clara, ela pode ser traduzida para uma linguagem. Em C#, por exemplo, será necessário escolher tipos de dados, receber valores, usar operadores e escrever uma estrutura condicional. Esses detalhes pertencem à implementação; a decisão de comparar a média com sete já pertence ao algoritmo.

O que torna um algoritmo bom?

Dois algoritmos podem produzir a mesma resposta e ainda assim ter qualidades diferentes. Para problemas pequenos, essa diferença pode ser imperceptível. Em grandes volumes de dados, a quantidade de operações e de memória necessária passa a importar.

A análise de algoritmos estuda como o custo cresce quando a entrada aumenta. Em vez de medir apenas segundos em uma máquina específica, costuma-se observar o crescimento do trabalho. Um procedimento que verifica cada item de uma lista tende a crescer de forma diferente de outro que consegue descartar grandes partes da busca a cada passo.

Eficiência, porém, não é o único critério. Um algoritmo também precisa estar correto para as entradas previstas, ser compreensível e lidar com situações importantes do problema. Otimizar uma solução incorreta não a transforma em uma boa solução.

Um exemplo de raciocínio antes do código

Problema: uma loja quer informar se um produto precisa ser reposto quando o estoque ficar abaixo de cinco unidades.

  1. Identifique a entrada: quantidade atual.
  2. Defina a regra: comparar a quantidade com 5.
  3. Defina os resultados possíveis: “repor” ou “estoque suficiente”.
  4. Teste mentalmente valores como 0, 4, 5 e 20.
  5. Só então traduza a solução para a linguagem escolhida.

O teste com valores de fronteira é importante. Se a regra diz “abaixo de cinco”, quatro deve solicitar reposição, mas cinco não. Essa pequena diferença muda o operador de comparação no programa.

Algoritmo não é a mesma coisa que programa

O algoritmo descreve a estratégia de solução. O programa é a implementação executável dessa estratégia em determinada linguagem e ambiente. Um mesmo algoritmo de média pode ser implementado em C#, JavaScript ou Python. Cada versão terá sintaxe diferente, mas poderá preservar os mesmos passos lógicos.

Também não é correto pensar que algoritmos existem apenas em programação. Ordenação, busca, roteamento de redes, compressão, criptografia, recomendação de conteúdo e processamento de imagens dependem de algoritmos. O que muda é a complexidade do problema e das técnicas usadas.

Exercício de raciocínio

Sem escrever código, descreva um algoritmo para receber o preço de um produto e a quantidade comprada. Se o total for maior que R$ 100, aplique 10% de desconto. Identifique entrada, processamento, decisão e saída. Depois teste seu algoritmo com compras de R$ 80, R$ 100 e R$ 120.

Perguntas frequentes

Preciso saber matemática avançada para aprender algoritmos?

Não para começar. Problemas iniciais usam principalmente raciocínio lógico e matemática básica. Assuntos avançados podem exigir conhecimentos matemáticos específicos.

Fluxograma é obrigatório?

Não. Ele é uma ferramenta de representação. Pseudocódigo, linguagem natural e exemplos também podem ajudar a planejar a solução.

Qual linguagem é melhor para aprender algoritmos?

A linguagem é secundária no início. O mais importante é conseguir separar o problema em dados, regras, decisões e passos verificáveis.

Conclusão

Aprender algoritmos significa aprender a pensar em soluções executáveis. Antes de perguntar “qual comando eu uso?”, procure responder “quais passos resolvem este problema?”. Quando entrada, processamento, decisões e saída estão claros, a programação deixa de ser uma coleção de comandos soltos e passa a ser a tradução de um raciocínio.

Referências bibliográficas

Livros reconhecidos utilizados como base para os conceitos deste artigo.

  1. CORMEN, Thomas H.; LEISERSON, Charles E.; RIVEST, Ronald L.; STEIN, Clifford. Introduction to Algorithms. 4. ed. The MIT Press, 2022.
  2. SEDGEWICK, Robert; WAYNE, Kevin. Algorithms. 4. ed. Addison-Wesley Professional, 2011.

Consulte a bibliografia completa do Código em Sala.