Algoritmos em Python

Introdução

Bem-vindo ao Algoritmos em Python! Antes de mais nada, gostaríamos explicar brevemente como este curso é organizado e o que você pode esperar aprender com ele.

Existem várias estratégias para se resolver problemas computacionais, e a melhor estratégia para se resolver um problema pode não funcionar em outro. Por isso, é importante dominarmos várias dessas estratégias para termos as ferramentas necessárias para resolver os mais variados tipos de problemas.

O aprendizado dessas estratégias fará com que você desenvolva uma abordagem sistemática para resolver problemas computacionais. Ao longo do curso, você aprenderá tanto as estratégias quanto os tipos de problemas aos quais elas se aplicam. E você aprenderá tudo isso em uma linguagem de programação de verdade!

O aprendizado de algoritmos (“receitas” para solução de problemas) é um dos aspectos mais importantes para uma carreira de sucesso em Computação. Ao aprender e entender vários algoritmos, você irá aprender poderosas técnicas para resolver problemas computacionais, além de adquirir um conjunto de ferramentas que lhe permitirão enxergar certos problemas como versões modificadas de problemas conhecidos, para os quais já existem algoritmos ótimos.

Algoritmos podem ser estudados e entendidos de modo independete do hardware ou de uma linguagem de programação específica. Por isso, frequentemente, livros-texto de algoritmos trazem o pseudo-código dos algoritmos. Entretanto, quando tentamos de fato implementar os algoritmos, vemos que existem detalhes não especificados (ou de difícil compreensão) no pseudo-código, o que acaba tornando a implementação em uma linguagem de programação uma tarefa muito difícil.

Neste material, mostramos os algoritmos bem como implementações em Python de todos eles. Com essas implementações, você verá que os detalhes dos algoritmos ficarão mais claros, e se você quiser implementar os mesmos algoritmos em outra linguagem de programação de sua preferência, terá menos dificuldades do que se partisse somente do pseudo-código. Além disso, quando aplicável, explicaremos formas de usar os mesmos algoritmos por meio de bibliotecas da linguagem.

Nosso foco principal é em desenvolver o uso do raciocínio computacional para resolver problemas, mas o curso conta também com uma breve introdução ao Python. Os detalhes mais técnicos da linguagem serão apresentados ao longo do curso, quando se fizerem necessários.

Apesar de mostrarmos os algoritmos e suas implementações ao longo do curso, se você quiser desenvolver seu raciocínio computacional, a simples leitura do material não será o suficiente. Você precisará tentar implementar os algoritmos ensinados, modificá-los e testá-los para entender como eles funcionam. Cada capítulo contém exercícios direcionados (com as respectivas soluções) para ajudá-lo a praticar.