Noções básicas de algoritmo: por onde começar?

Escrito em 09 de Agosto de 2022 por Redação iugu

Atualizado em 24 de Agosto de 2023

Se você utiliza a internet e computadores regularmente, é praticamente impossível que não tenha ouvido a palavra “algoritmo” antes. Estes processos computacionais permeiam nossas interações com os mais diversos sistemas.

Eles nos ajudam a escolher que filme assistir, calcular novas rotas até um destino e até mesmo prever catástrofes naturais, dentre outras coisas.

Para programadores iniciantes e até os mais experientes, pensar no desenvolvimento de algoritmos pode ser assustador.

Logo vêm à cabeça pensamentos sobre operações matemáticas altamente complexas, indecifráveis e exaustivas.

Mas na verdade o conceito de algoritmo é relativamente simples, tendo uma lógica que guia o processo com naturalidade.

Neste artigo explicaremos alguns conceitos básicos de algoritmo para que você possa entender como eles funcionam na prática.

História dos algoritmos

Os mais antigos algoritmos foram desenvolvidos ainda durante a Antiguidade, tendo registros de uso pelos babilônios, egípcios e gregos séculos antes de Cristo.

A origem da palavra algoritmo é o nome de um importante matemático e polímata Persa, Muḥammad ibn Mūsā al-Khwārizmī.

Tendo feito significativas contribuições bibliográficas para a matemática e aritmética, seu nome também é a origem da palavra “algarismo”.

Sendo um conceito matemático amplamente utilizado, o algoritmo evoluiu junto com essa ciência, de modo que seu conceito e formalização recebiam contribuições significativas em tempos tão recentes quanto o século passado.

Hoje, à medida que é aplicado a novas áreas, o conceito de algoritmo continua enriquecendo e adquirindo novos sentidos.

O que são algoritmos?

Os algoritmos são, essencialmente, uma sequência ou conjunto de operações sequenciais destinadas à realização de uma tarefa, resolução de um problema ou geração de dados.

O algoritmo é, primariamente, um conceito lógico, e não está intrinsecamente ligado a computadores como muitos podem pensar.

Isso significa que, pela definição mais ampla, uma receita culinária é um bom exemplo de algoritmo: uma sequência de instruções que visa guiar a realização de uma tarefa (neste caso, o preparo de um alimento).

Dentro da receita, temos inputs (ingredientes, insumos), operações (as etapas de preparação) e um output (o alimento pronto). 

Ou seja: os algoritmos utilizam um sistema fechado de regras e realizam um número finito de operações para transformar um insumo (input) em um produto final (output).

Algoritmos como conceito matemático

Em matemática, os algoritmos estão mais próximos à definição ampla “sequência finita de operações para atingir um resultado”. Estas sequências de operações normalmente visam encontrar o valor de uma variável, 

Processos formais para calcular divisão e subtração passo a passo, por exemplo, são exemplos de algoritmos.

Na subtração, por exemplo, utilizamos um processo formal em que se subtrai os valores de uma casa por vez, repetindo o loop até que se tenha subtraído todo o valor.

Algoritmos em sistemas computacionais

Em computadores, os algoritmos também são uma sequência de operações, mas estas operações podem estar estruturadas através de diferentes sistemas, linguagens e frameworks.

Em vez de descrever necessariamente uma sequência de operações matemáticas, o algoritmo de computador instrui uma cadeia de operações computacionais, que podem ou não ser utilizadas para cálculos.

Como funcionam os algoritmos de computador?

Os algoritmos computacionais  podem processar muitos tipos diferentes de dados, executando com eles diferentes operações. Tudo dependerá da necessidade da aplicação e da criatividade ou talento do desenvolvedor.

Os algoritmos computacionais funcionam em um sistema input > output.

Entre o input e o output, o executa diferentes processos (operações) para transformar um valor em outro.

Além disso, os algoritmos sempre são determinísticos (isto é, você sempre sabe qual o próximo passo) e também finitos (eles precisam ter um início e um fim, mesmo que seja repetido em loops).

Complexidade vs. Eficiência

Eles podem ser mais complexos ou mais simples dependendo do número de passos, e sua complexidade pode ser medida com notações especiais, como Big O Notation.

Diferentes algoritmos podem transformar um mesmo input em um output idêntico com sequências de passos diferentes.

O algoritmo capaz de executar uma operação no menor número de passos será considerado o mais ágil, mas nem sempre será o mais eficiente.

Complexidade não é inversamente proporcional a eficiência.

Isso pois um algoritmo com mais passos simples pode utilizar menos recursos (no caso de computadores, memória e processamento) do que um de menor complexidade com passos mais elaborados ou de maior magnitude.

Quando se necessita economizar recursos, mas não tempo, o algoritmo de maior complexidade, com mais etapas fracionando tarefas, é preferível a um que consuma recursos limitados e/ou preciosos para executar uma ação de baixa prioridade.

Como aprender a desenvolver algoritmos computacionais?

Se você deseja aprender a desenvolver algoritmos e não sabe por onde começar, talvez seja inteligente adquirir outros conhecimentos básicos e necessários à compreensão da lógica algorítimica.

Um bom ponto de partida é um curso técnico, livre ou superior em Ciência da Computação.

Ao estudar ciência da computação, você aprenderá conceitos em Lógica, Matemática e funcionamento de computadores a nível de registrador.

Com uma boa compreensão sobre o funcionamento de sistemas computacionais, você poderá começar a estudar maneiras de utilizá-los, junto com suas ferramentas, para construir algoritmos e outros produtos de código.

Se você já possui conhecimentos básicos em Ciência da Computação, pode começar a estudar algoritmos até mesmo por conta própria.

Encontre um livro, curso ou outra fonte de conhecimento formal que discorra sobre lógica algorítmica, faça exercícios em pseudocódigo e domine os conceitos básicos.

Após isso, você poderá começar a experimentar com o desenvolvimento de algoritmos simples na sua linguagem de programação preferida.

Python é uma boa recomendação para iniciantes, pela sua versatilidade de usos e alto nível de abstração.

Aprenda mais sobre Python e outras linguagens de programação no blog iugu4devs.

Posts relacionados