Caleidoscópio
02/06/2018

Algumas tarefas rotineiras podem parecer muito simples quando já estamos acostumados a realizá-las, mas e se nós tivéssemos que ensinar alguém que nunca teve contato com nenhuma dessas atividades, será que conseguiríamos? Fazer um programa de computador é basicamente isso, você tem que dizer de forma muito clara, objetiva e específica todas as ações a serem realizadas.

Algoritmos

Programas de computadores funcionam baseados em algoritmos, ou seja, uma sequência de regras e procedimentos que, quando realizados de maneira correta, nos permitem resolver um problema. Pense, por exemplo, em um problema simples de matemática, como achar a solução da equação

x + 7 = 2,5x - 2.

Para resolver essa equação, devemos primeiro isolar todos os termos que multiplicam x e todos os termos que estão sozinhos. Para isso, subtraímos x e somamos 2 dos dois lados da equação, obtendo 2,5x - x = 7 + 2, ou seja, 1,5x = 9, e achamos x = 6. Essa sequência de ações é um algoritmo para resolver esse tipo de equação.

Mas como isso se relaciona a fritar um ovo?

Agora imagine que você queira escrever um algoritmo ensinando alguém a fritar um ovo, mas imagine que essa pessoa nunca nem entrou em uma cozinha na vida, você precisa ensinar todos os passos. Você pode pensar, pegue um ovo, quebre-o na panela e ligue o fogo, mas não é tão simples. Você precisará dizer para a pessoa aonde está o ovo, aonde está a panela e todas as outras coisas que nós fazemos automaticamente. Se escrevermos uma ordem por linha, poderíamos ter o seguinte algoritmo:

1.     Vá até a geladeira.
2.     Abra a geladeira e pegue um dos ovos que está na porta.
3.     Abra o armário embaixo da pia e pegue uma frigideira.
4.     Coloque a frigideira sobre uma boca do fogão.
5.     Abra o armário do lado do fogão e pegue o óleo.
6.     Coloque um fio de óleo na frigideira.
7.     Quebre o ovo na frigideira.
8.     Ligue o fogo.
9.     Deixe o ovo fritar por 5 minutos.
10.   Desligue o fogo.

Não é tão simples quanto parece, não é mesmo? Acontece que a maior parte desses passos nós fazemos sem nem nos darmos conta.

Complicando um pouco mais…

Além das ordens diretas que são dadas ao se escrever um algoritmo, podemos fazer perguntas. Elas são importantes para verificarmos algumas condições, considere o exemplo do ovo. No oitavo passo, mandamos alguém quebrar o ovo na frigideira e, então, já mandamos fritar, mas seria interessante ter certeza de que o ovo está bom. Poderíamos melhorar o algoritmo colocando as seguintes ordens:

7.     Quebre o ovo na frigideira.
    7.1.     Veja se o ovo está podre.
    7.2.     Se o ovo estiver podre:
        7.2.1.     Jogue o ovo podre na lixeira.
        7.2.2.     Pegue outro ovo na geladeira.
        7.2.3.     Quebre o ovo na frigideira.
    7.3.     Se o ovo não estiver podre, continue.
8.     Ligue o fogo.

Uma ida ao supermercado

No caso de um computador, é preciso ser muito claro nos direcionamentos dados, porque, diferente de nós, ele não interpreta textos, e entende tudo ao pé da letra. Por exemplo, se você diz a alguém para ir ao supermercado e comprar 3 caixas de leite, e, caso tenha ovos, comprar 6, a pessoa entenderá que você quer 3 leites e 6 ovos caso estejam vendendo ovos. Se você diz isso a um computador, ele verificará se estão vendendo ovos, e, caso estejam, comprará 6 leites, se não tiver ovos à venda ele comprará 3 leites.

Seria necessário dizer ao computador que fosse ao supermercado e comprasse 3 caixas de leites e, caso estivessem vendendo ovos, comprasse 6 ovos, percebe a diferença? Nós só entendemos corretamente a primeira ordem porque conseguimos deduzir, com interpretação de texto, que o número 6 se refere aos ovos, que foi a última coisa citada, mas o computador entende que se refere ao leite, uma vez que leite é a única coisa que foi dita para ser comprada.

Indo um pouco mais além

Voltemos ao problema do ovo. Imagine que a pessoa que está fritando o ovo escolhe um primeiro ovo que está podre e escolhe um segundo ovo, precisamos garantir que ela também vai verificar se o segundo ovo está podre. Veja que, do modo que melhoramos o algoritmo, a pessoa verifica se o primeiro ovo está podre, pega o segundo e não verifica a qualidade dele. É importante dizer para a pessoa que, enquanto ela não escolher um ovo bom, ela tem que repetir o procedimento de buscar um ovo, quebrá-lo e verificar a qualidade. Poderíamos escrever, então, algo do tipo:

7.     Quebre o ovo na frigideira.
    7.1.     Verifique se o ovo está podre.
    7.2.     Enquanto o ovo estiver podre:
        7.2.1.     Jogue o ovo podre na lixeira.
        7.2.2.     Pegue outro ovo na geladeira.
        7.2.3.     Volte ao passo 7.
    7.3     Quando o ovo não estiver podre, continue.
8.     Ligue o fogo.

Desse modo, garantimos que o ovo que será frito está em bom estado, porque mandamos a pessoa repetir o procedimento enquanto não escolher um ovo bom.

E na prática?

É óbvio que um computador não vai ao supermercado comprar leite nem vai fritar um ovo na sua casa, então como podemos usar essas regras para escrever um programa de verdade? Bom, essa pergunta é fácil de responder. Pode-se escrever um programa de computador para realizar desde cálculos fáceis, como a soma ou a multiplicação de dois números, até cálculos muito complexos, como alguns feitos pela NASA para saber posições de satélites. Além da aplicação na matemática, são programas de computador que permitem que existam os aplicativos de smartphones e os jogos eletrônicos. Alguns programas são extremamente complexos, com algoritmos que possuem milhares de linhas, mas, no fim, as coisas se resumem, basicamente, aos tipos de comando utilizados para se fritar um ovo.

Davi Arrais


Categorias
Ciência e cotidiano
Como descobrimos coisas?
Mulheres na ciência
A arte de ensinar
Por que tudo acontece?
Do que tudo é feito?
O mundo dos números
O que nos faz vivos?
Um pouco de fantasia
Sobre
Um veículo de transmissão do conhecimento científico onde o principal foco é tentar expor esse conhecimento de maneira simples, acessível ao grande público, e com ênfase no que há de belo e interessante. Não deixemos morrer a nossa curiosidade!