Pular para o conteúdo

Algoritmo: o que é, representação e exemplo resolvido

Entenda o que é algoritmo, como definir entradas e saídas e como verificar uma solução com um exemplo de busca do maior valor.

Autoria
Study Mais
Publicado em
Tempo de leitura
4 min de leitura
Estudante de matemática investiga divisibilidade com hastes de madeira e um caderno.
Estudante de matemática investiga divisibilidade com hastes de madeira e um caderno. Study Mais — imagem ilustrativa gerada com IA.

Em poucas palavras

  • O contrato define quais entradas e resultados o algoritmo precisa tratar.
  • Um teste que funciona não substitui uma justificativa geral de correção.
  • A análise de custo depende do tamanho da entrada e do modelo utilizado.

Um algoritmo é um procedimento organizado de passos para resolver uma classe de problemas. Na computação, ele descreve como transformar entradas válidas em resultados esperados. A ideia precisa ser suficientemente precisa para permitir execução e análise. Um programa implementa algoritmos em uma linguagem; o algoritmo pode ser discutido antes de escolher essa linguagem.

A definição do NIST destaca o conjunto de passos computáveis para alcançar um resultado. Na graduação, vale acrescentar perguntas operacionais: quais entradas são aceitas, o que conta como resposta correta, por que o procedimento termina e quanto trabalho ele exige conforme a entrada cresce?

Comece por entradas e saídas

Antes de escrever passos, descreva o problema. “Encontrar o maior número” ainda deixa dúvidas: a lista pode estar vazia? Os valores podem ser negativos? É necessário devolver o valor ou sua posição? Essas decisões formam o contrato da solução. Um algoritmo só pode ser avaliado corretamente quando suas condições de uso estão claras.

Exemplo: encontrar o maior valor

Algoritmo em linguagem estruturada

  1. Guarde o primeiro elemento como maior encontrado.
  2. Percorra os elementos restantes, um de cada vez.
  3. Se o elemento atual for maior que o valor guardado, substitua o valor guardado.
  4. Depois de percorrer a lista, devolva o valor guardado.
Execução com a entrada −7, −2, −9, −2
MomentoValor examinadoMaior guardado
Inicialização−7−7
Primeira comparação−2−2
Segunda comparação−9−2
Terceira comparação−2−2
ResultadoPercurso concluído−2
Momento
Inicialização
Valor examinado
−7
Maior guardado
−7
Momento
Primeira comparação
Valor examinado
−2
Maior guardado
−2
Momento
Segunda comparação
Valor examinado
−9
Maior guardado
−2
Momento
Terceira comparação
Valor examinado
−2
Maior guardado
−2
Momento
Resultado
Valor examinado
Percurso concluído
Maior guardado
−2
Execução com a entrada −7, −2, −9, −2

Inicializar o maior com zero produziria uma resposta errada para essa entrada, pois zero não pertence à lista e todos os valores são negativos. Começar pelo primeiro elemento resolve o problema dentro do contrato não vazio. A escolha da inicialização faz parte da correção, não é apenas um detalhe de implementação.

Como explicar por que funciona

Depois de cada passo, o valor guardado é o maior entre os elementos já examinados. Essa propriedade vale no início, quando apenas o primeiro foi considerado. Em cada comparação, ela é preservada: o valor atual substitui o guardado somente se for maior. Ao final, todos os elementos foram examinados, logo o guardado é o maior da lista inteira.

Esse raciocínio usa uma propriedade que se mantém durante o percurso, frequentemente chamada de invariante. O curso de algoritmos do MIT situa correção e eficiência como partes do estudo. Testar exemplos encontra falhas, mas uma explicação geral precisa considerar todas as entradas admitidas.

Como analisar o trabalho realizado

Para uma lista com n elementos, o procedimento realiza n − 1 comparações. Seu crescimento é linear, expresso por O(n) no modelo usual. A memória adicional usada para o valor guardado é constante. Essa análise descreve o procedimento e o modelo de custo; não fornece, sozinha, uma duração em segundos para qualquer máquina.

A forma de armazenar os dados também importa. Uma estrutura de dados define operações disponíveis e seus custos. O mesmo objetivo pode ter soluções diferentes quando os dados já estão ordenados, quando chegam em fluxo ou quando não cabem na memória. Declare as condições antes de comparar eficiência.

Pseudocódigo, fluxograma e programa

Linguagem estruturada e pseudocódigo tornam o raciocínio legível sem exigir todos os detalhes de uma linguagem. Um fluxograma destaca decisões e caminhos. Um programa precisa obedecer à sintaxe e ao comportamento da linguagem escolhida. A documentação de controle de fluxo do Python exemplifica decisões e repetições em uma implementação real.

Como revisar um algoritmo

Casos de conferência

  1. Uma lista com apenas um elemento.
  2. Uma lista formada somente por valores negativos.
  3. Maior valor no início e, em outro teste, no fim.
  4. Valores repetidos, inclusive repetição do maior.
  5. Entrada fora do contrato, para verificar como o programa a rejeita ou trata.

O estudo de pensamento computacional ajuda a decompor o problema. Para praticar a passagem do raciocínio ao código, siga algoritmos e lógica de programação. Definir, justificar e testar os passos permite ir além de copiar uma sequência que funciona apenas em um exemplo.

Aula da UNIVESP sobre noção de algoritmos. Compare a definição de entradas e saídas com o exemplo desenvolvido no artigo. Algoritmos e Programação de Computadores I - Noção de Algoritmos (UNIVESP)

Referências

  1. NIST. Dictionary of Algorithms and Data Structures. Algorithm. https://xlinux.nist.gov/dads/HTML/algorithm.html
  2. MIT OPENCOURSEWARE. Introduction to Algorithms, 6.006. Spring 2020. https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020/
  3. PYTHON SOFTWARE FOUNDATION. Tutorial: mais ferramentas de controle de fluxo. https://docs.python.org/pt-br/3/tutorial/controlflow.html

Autoria

Study Mais