DEV Community

Luiz Braga
Luiz Braga

Posted on

O que estudar Python me ensinou sobre lógica de programação

Quando comecei a estudar Python, pensei que aprender programação seria principalmente aprender comandos.

Variáveis, "if", "for", "while", funções, listas...

Com o tempo, percebi que essas coisas são apenas ferramentas.

O principal aprendizado estava acontecendo antes mesmo de escrever o código: eu estava começando a aprender como pensar em um problema de maneira lógica.

O código começa antes do código

Imagine que precisamos criar um programa simples que diga se um aluno foi aprovado.

Podemos escrever algo assim:

nota = 8

if nota >= 7:
print("Aprovado")
else:
print("Reprovado")

O código é pequeno.

Mas existe uma lógica por trás dele:

  1. Existe uma informação de entrada: a nota.
  2. Existe uma regra: notas maiores ou iguais a 7 representam aprovação.
  3. Existe uma decisão.
  4. Dependendo da decisão, o programa apresenta um resultado diferente.

Isso me fez perceber que o "if" não é apenas uma palavra reservada do Python.

Ele representa uma pergunta:

«Uma determinada condição é verdadeira?»

Se for, execute uma ação.

Caso contrário, execute outra.

Essa ideia aparece em praticamente qualquer sistema.

Programar é transformar regras em instruções

Outro exemplo:

idade = 20
tem_carteira = True

if idade >= 18 and tem_carteira:
print("Pode dirigir")
else:
print("Não pode dirigir")

Aqui existem duas condições.

Não basta ter 18 anos.

Também é necessário possuir uma carteira de habilitação.

Quando comecei a trabalhar com operadores como "and", "or" e "not", comecei também a perceber como regras do mundo real podem ser transformadas em expressões lógicas.

O computador não "entende" o que queremos.

Precisamos definir exatamente quais condições representam cada situação.

Loops me ensinaram a identificar padrões

Considere:

for numero in range(1, 6):
print(numero)

O resultado será:

1
2
3
4
5

É um exemplo simples, mas existe uma ideia importante nele.

Quando alguma tarefa precisa ser realizada várias vezes seguindo o mesmo padrão, provavelmente não precisamos escrever a mesma instrução repetidamente.

Podemos criar uma repetição.

Antes:

print(1)
print(2)
print(3)
print(4)
print(5)

Depois:

for numero in range(1, 6):
print(numero)

Python começou a me ensinar a procurar padrões dentro dos problemas.

Sempre que vejo algo se repetindo, começo a pensar:

"Será que isso pode virar um loop?"

Funções me ensinaram a dividir problemas

Outro aprendizado importante veio com funções.

def calcular_media(nota1, nota2):
return (nota1 + nota2) / 2

Em vez de colocar todo o comportamento do programa em um único lugar, podemos separar responsabilidades.

Uma função pode receber informações, executar uma tarefa específica e devolver um resultado.

Isso mudou bastante a maneira como comecei a enxergar problemas maiores.

Suponha que precisamos criar um sistema escolar.

Pensar no sistema inteiro de uma vez pode parecer complicado.

Mas podemos dividir:

  • cadastrar aluno;
  • cadastrar professor;
  • registrar notas;
  • calcular médias;
  • verificar aprovação;
  • exibir informações.

Cada problema menor pode virar uma parte do programa.

E várias partes menores podem formar um sistema maior.

Aprendi que resolver o problema vem antes de escolher a sintaxe

Às vezes sabemos a sintaxe de Python, mas mesmo assim ficamos olhando para a tela sem saber como começar.

Comecei a perceber que, nesses casos, o problema muitas vezes não é Python.

É a lógica.

Uma técnica que comecei a considerar útil é escrever o problema em português antes de programar.

Por exemplo:

«Quero descobrir o maior número de uma lista.»

Posso pensar:

  1. Pegar um número inicial como maior.
  2. Comparar os outros números com ele.
  3. Se encontrar um número maior, atualizar o valor.
  4. Continuar até terminar a lista.
  5. Mostrar o maior número encontrado.

Só depois podemos transformar isso em Python:

numeros = [4, 9, 2, 15, 7]

maior = numeros[0]

for numero in numeros:
if numero > maior:
maior = numero

print(maior)

A sintaxe apenas representa uma solução que já havia sido organizada logicamente.

Bugs também ensinam lógica

Uma parte inevitável de estudar programação é encontrar erros.

No começo, um erro parece simplesmente significar:

"Meu código não funciona."

Depois comecei a enxergar de outra forma.

Um bug geralmente significa que existe uma diferença entre:

  • aquilo que eu queria que acontecesse;
  • aquilo que minha lógica determinou;
  • e aquilo que o computador realmente executou.

Por isso, debugar também é um exercício de raciocínio.

Precisamos perguntar:

  • Qual valor essa variável possui agora?
  • Essa condição realmente será verdadeira?
  • Quantas vezes esse loop será executado?
  • Essa função está retornando aquilo que eu esperava?
  • Em que ponto o comportamento começa a ficar diferente do esperado?

Essas perguntas ajudam muito mais do que simplesmente modificar linhas aleatoriamente até o programa funcionar.

O maior aprendizado até agora

Python tem uma sintaxe relativamente simples, o que permite dedicar mais atenção ao raciocínio por trás do programa.

E talvez essa seja uma das coisas mais importantes que estudar Python está me ensinando.

Programação não é apenas escrever código.

É pegar um problema e transformá-lo em etapas suficientemente claras para que um computador consiga executá-las.

Hoje, quando encontro um exercício novo, tento não começar perguntando:

«"Qual código eu preciso escrever?"»

Primeiro tento perguntar:

«"Qual é a lógica necessária para resolver esse problema?"»

Porque, quando a lógica está clara, escrever o código geralmente se torna muito mais fácil.

Ainda estou no começo da minha jornada com programação, mas essa mudança na forma de pensar provavelmente será útil muito além de Python.

As linguagens podem mudar.

A lógica continua.

Top comments (0)