Eu sempre tive a impressão de que aprender programação seria uma forma de mudar a percepção de mundo e como tomamos nossas decisões de maneira lógica e coerente. O que nunca havia passado pela minha cabeça era que a programação influenciaria na criatividade. Até que o Jober me propôs que começássemos a estudar programação. (Abençoado seja o Jober!)
Foi então que, fazendo o curso de Python com o professor Gustavo Guanabara, deparei-me com um exercício que simplesmente explodiu a minha cabeça.
A tarefa não era difícil. Consistia em criar um programa que indicasse quantas cédulas de cada valor seriam entregues num caixa eletrônico mediante a indicação de uma determinada quantia pelo usuário.
Eu cheguei à resposta, mas da forma mais arcaica e sem criatividade que poderia haver.
Quando fui checar a resolução do Guanabara… (pausa dramática)
BUMMM!!! 💥
Ele chegou à solução de uma maneira que me fez olhar os códigos a partir de uma nova perspectiva. Não somente com lógica, mas com enorme criatividade.
E aquilo, imediatamente me fez lembrar do raciocínio complexo e lógico que meu roteirista favorito cria. “Isso aqui é maravilhoso. É digno de roteiros de Christopher Nolan! Isso é ‘Inception’ puro!”
A partir de camadas e inter-relações recheadas de sentido e ‘fora da casinha’, foi criada ali uma estrutura única.
Depois daquela solução para o problema, fui dormir tão animada, mas tão animada… Estava empolgada, entusiasmada, feliz de verdade por algo tão simples como um código ter me despertado tamanho interesse…
Acordei pensando nele, quis ver de novo. Tirei um print para guardar.
(Porque eu sou a maluca que quando gosta de uma coisa, gosta muuuito. Eu pesquiso, eu fuço, eu quero ver e saber muito mais daquilo. Eu sou apaixonada pelo Christopher Nolan, apaixonei-me por este código (sim, pelo código). Sou a louca fã alucinada que quero saber tudo. Claro que não sou capaz de escrever 8 mil cartas e enviar ao meu ídolo em um mês. Porque eu sou doida, mas não sou pirada.)
Enfim…
Aquele código mudou completamente a minha forma de ver tudo, de criar e de escrever. Mas, um detalhe… Eu não sei disso ainda.
Certamente esses pontos vão se unir, em algum momento. Seja por destino, carma, qualquer coisa na qual eu acredite.
O tal código:
valor = int(input(‘Que valor você quer sacar? R$ ‘))
total = valor
ced = 50
totced = 0
while True:
if total >= ced:
total -= ced
totced += 1
else:
if totced > 0:
print(f’Total de {totced} cédulas de R$ {ced}.’)
if ced == 50:
ced = 20
elif ced == 20:
ced = 10
elif ced == 10:
ced = 1
totced = 0
if total == 0:
break
print(‘Obrigado. Volte sempre.’)
Mas afinal, o que fez com que eu ficasse tão louca com essa solução?
O professor, simplesmente, criou uma regra que, a partir do momento em que acabam as cédulas maiores possíveis para o valor, ele muda a referência para que sempre esta primeira regra passe a ser verdadeira. Eu achei um raciocínio fascinante com um alto nível de abstração (Aprendi este termo ‘alto nível de abstração’ há pouco tempo e estou usando sempre que tenho oportunidade).
Claro que eu estou apenas no início dos meus estudos e muitas pessoas experientes podem achar o que eu acabei de compartilhar uma coisa boba. É por isso que imagino que deve haver diversos outros códigos assim, e outros ainda muito melhores, com tamanha criatividade que eu nunca vi. Mal vejo a hora de conhecer mais deles.