hoje, saí do exame de português

e a minha stora pergunta-me:
“então, acertaste alguma coisa na gramática?”

auch.

alguém que me ajude. a tirar esta. faca. das costas.
(e fique registado que sim, acertei alguma coisa na gramática.)

(acertei uma.)

A minha primeira experiência de programação

Na semana passada, a professora de matemática mandou-nos uns trabalhos de casa. Uns exercícios sobre probabilidades, um dos temas da Matemática que eu até gosto.

Na aula estivemos a estudar uma coisa chamada Lei dos Grandes Números. Basicamente, diz que se lançares uma moeda ao muitas vezes (mesmo muitas vezes) o número de vezes que a face que tem cara fica para cima vai ser muito próximo do número de vezes que a face que a coroa fica para cima. E que quanto maior foi o número de vezes que a moeda é lançada ao ar, mais próximo os números serão.

O problema é que se não tiveres um computador (ou, como é o nosso caso, uma calculadora) que lance dados virtuais muitas vezes muito depressa, o processo de lançar 200 vezes um dado e anotar o resultado vai tornar-se uma seca muito rapidamente.

Mas o nosso trabalho de casa não era lançar um dado 200 vezes. Nós tínhamos de lançar dois dados 100 vezes (que apesar de parecer a mesma coisa, não é). E tínhamos que anotar a diferença entre o número de pintas das faces dos dados. E contar os resultados e apenas aí fazer as tabelas de frequência. Estes tpcs iam demorar um bocado.

“Mas espera aí” pensei “Eu posso escrever um programa em Python que o faça por mim!”

Comecei a ler um livro, Invent Your Own Games With Python no Verão e, apesar de não o ter acabado de ler, sabia o suficiente para escrever um programa simples.

Eu sei que devia ter pensado nessa altura na ética de mandar um computador fazer os teus trabalhos de casa mas na altura estava tão entusiasmada que isso não me passou pela cabeça. Claro que agora posso dizer que, para realizar a tarefa não era preciso saber alguma coisa sobre probabilidades (eu podia ter simplesmente pago ao meu irmão para faze-lo por mim) e visto que eu escrevi o programa, o que eu fiz não foi exactamente batota. Que não me impediu de omitir a parte do programa no dia seguinte na aula. Nunca ninguém saberá. (excepto a internet, excelente maneira de manter um segredo.)

O meu plano mental do programa era este: -escolhe aleatoriamente um número de 1 a 6 -escolhe aleatoriamente outro número de 1 a 6 -calcula a “número 1 menos número 2” -mostra isso no écran

Tive que ir ver ao livro alguns dos comandos, mas acabei a versão 0.1 rapidamente. E funcionou. Das primeiras três vezes.

A diferença é -3

Oh, não tinha pensado nisso. É para isso que servem as versões beta! Era um pequeno problema com uma solução simples.

if:

número1 > número2

diferença = número1 - número2

else:

diferença = número2 - número1

Vocês são inteligentes, sabem o que aconteceu. Quando o primeiro número foi 2 e o segundo 5, o computador subtraiu os números e o resultado foi um número negativo. Aquelas cinco linhas de código impediam isso de acontecer, analisando qual dos números era o maior e apenas depois fazendo a subtração.

Estava muito orgulhosa de mim própria. Tinha um problema, criei uma solução e até lidei com um percalço. A minha irmã, que estava do outro lado do quarto a fazer qualquer coisa, não conseguia perceber porque é que eu estava tão feliz por estar a fazer tpcs de matemática.

É aquela sensação de tentar criar algo pela primeira vez, de descobrir a solução de um puzzle. É altamente a maneira como algo tão complexo como um computador consegue perceber instruções que um humano normal também consegue ler e como segue as instruções tantas vezes como eu mandar.

Tive de escrever os resultados e conta-los e fazer a tabela e responder à pergunta de qualquer das maneiras. E sim, demorou um bocado, talvez mais do que resolvendo o exercício da maneira “normal”. Definitivamente demorou mais tempo do que a maioria da turma demorou, porque resolveram todos os exercício excepto esse, que demorava um bocadinho mais a fazer.

Mas no final foi esta foi uma experiência fantástica. Estive a olhar para o écran do meu iPod Touch durante uns momentos, a deixar assentar a ideia de que algo que eu programei estava a correr naquele aparelho. Fazer com que corresse, só por si, foi uma aventura 1, mas valeu a pena. Todo o tempo extra e todas as explicações extra que tive que dar à minha mãe, para que elas percebesse porque estava tão feliz, e para explicar porque é que não estava a estudar Geometria Descritiva como era suposto.

Porque estava ocupada a fazer algo que me permitisse poupar um bocadinho de tempo. Que é o que o software é suposto fazer. Tornar as coisas mais fáceis.


  1. Foi por isso que eu tive de instalar o Python no meu iPod Touch. O relato detalhado de como o fiz está, em inglês, aqui