Olá, caro(a) aluno(a), até aqui, estudamos diferentes conceitos de lógica matemática e computacional. À primeira vista, toda aquela teoria assusta um pouco, mas, depois, começa a ficar intuitivo, não é mesmo? Agora, você descobrirá como aplicar todos esses conceitos vistos anteriormente para criar sistemas computacionais, como: aplicativos, jogos, sistemas web etc.
Nesta lição, criaremos os nossos primeiros algoritmos. Você aprenderá o que é um algoritmo e como ele é estruturado. Algoritmos nada mais são que uma sequência de instruções que passamos para o computador para que ele seja capaz de realizar as tarefas de que precisamos. Essas instruções devem seguir algumas regras e também uma estrutura definida, e tudo isso veremos no decorrer da nossa aula. Espero que esteja animado!
Diariamente, utilizamos diferentes dispositivos digitais, como nosso computador ou o celular, e podemos dividir esses dispositivos em duas partes: Hardware e software. O hardware é a parte física do dispositivo, que é composta pela carcaça, placa mãe, memórias, câmeras, tela etc. Por outro lado, o software são os sistemas que utilizamos, como o sistema operacional, aplicativos, jogos etc.
O hardware depende do software para realizar suas tarefas, assim como o software precisa do hardware para poder ser executado. O hardware é projetado por engenheiros eletrônicos e mecatrônicos, utilizando circuitos digitais, enquanto o software é projetado por programadores e engenheiros de software, utilizando linguagens de programação para escrever os algoritmos que descrevem como o programa deve funcionar.
Provavelmente, em algum momento você já ouviu ou leu em algum lugar comentários que o algoritmo de algum site ou de uma rede social mudou, e isso alterou, por exemplo, o modo que as fotos de uma rede social aparecem. Você já parou para pensar o que é esse algoritmo? Ou como ele é feito? Quando você pensa em algoritmos, qual imagem vem na sua mente?
A lógica de programação é uma habilidade que todo programador deve ter, e é nesse ponto que entra o conceito de algoritmos. Conforme define Cormen (2012), no mundo da ciência da computação, algoritmos são processos computacionais bem definidos que podem receber uma entrada, processá-la e produzir um ou mais valores como saída. Porém algoritmos vão muito além da programação e podem ser encontrados no nosso dia a dia.
Anteriormente, vimos que um algoritmo é uma sequência de instruções para realizar uma tarefa. Pensando nesta definição, você consegue imaginar algum algoritmo que você realiza todos os dias?
Eu sou um amante de café, tomo café quase o dia todo. Sendo assim, realizo o algoritmo de fazer café todos os dias. E, para fazer um café, quais são as instruções? Aqui, vamos considerar que eu não tenho uma cafeteira, então, os passos são os seguintes:
1 - Pegar um caneco.
2- Encher de água.
3- Esquentar água até ferver.
4 - Adicionar o café no coador.
5- Passar a água pelo coador.
6 - Colocar em uma garrafa térmica.
7 - Tomar o café.
Seguindo estes passos, somos capazes de fazer um café, e isso é um algoritmo. Qualquer coisa do nosso dia a dia que podemos definir como uma série de passos, pode ser descrito como um algoritmo. Da mesma forma funcionam os algoritmos computacionais, definimos vários passos que o computador precisa seguir para concluir uma tarefa.
Agora é a sua vez! Pense em uma tarefa qualquer, como se preparar para ir para o colégio, ou para fazer alguma receita e descreva todos os passos para chegar no resultado.
Algoritmos são uma sequência lógica de instruções utilizadas para cumprir uma tarefa em que não podemos executar uma instrução antes de completar a anterior. Observe a Figura 1, só podemos executar a instrução 2, após concluir a instrução 1.
Figura 1 - Ordem das instruções / Fonte: o autor.
#PraCegoVer: a imagem ilustra a sequência de execução das instruções. É composta por três retângulos na vertical. O primeiro, na cor rosa, representa a primeira instrução, seguido pelo retângulo da segunda instrução logo abaixo, na cor lilás, e, por fim, a terceira instrução no retângulo na cor azul.
Voltando para o nosso exemplo do algoritmo de fazer café, não podemos executar o passo de colocar a água para ferver antes de concluir o primeiro passo que é encher o caneco de água. Como vamos esquentar a água, se ainda não a temos, não é mesmo?
Agora, você pode estar pensando: “Certo, mas eu posso primeiro colocar o café no coador e depois colocar a água para ferver”. E isso é verdade, com a prática na programação você notará que é possível resolver o mesmo problema de várias formas, porém há algumas regras que devemos seguir.
Regras para montar algoritmos
1- Usar um verbo para definir a ação da instrução.
2- Utilizar frases curtas.
3- Ser objetivo.
4- Não utilizar palavras de sentido dúbio.
Observe que muitos dos algoritmos reais que desenvolveremos como programadores serão mais complexos do que fazer um café. Um exemplo clássico e simples de algoritmo na computação é o da soma de dois números, que pode ser descrita da seguinte maneira:
1 - Receba o primeiro número.
2 - Receba o segundo número.
3 - Some os dois valores.
4 - Exiba o resultado.
Este algoritmo segue as mesmas regras do algoritmo de fazer um café, mas, nesse caso, ele soma dois números. Estou mostrando este exemplo para que fique claro que, apesar de existirem algumas diferenças, a lógica que utilizamos em nosso dia a dia e a lógica da computação são muito parecidas. Note que o exemplo anterior contém três elementos: a sequência de instruções, os dados de entrada e os de saída. E, aqui, somos apresentados a uma nova definição de algoritmos.
Além da definição apresentada anteriormente, podemos definir um algoritmo como um procedimento que recebe algum dado de entrada e produz dados de saída. Sendo assim, a nossa sequência lógica receberá algum dado para ser processado e retornará alguma saída.
Figura 2 - Algoritmos / Fonte: o autor.
#PraCegoVer: a imagem ilustra a definição de algoritmos, composta por três retângulos na horizontal. O primeiro retângulo, na cor rosa, indica as entradas do algoritmo, seguido por uma flecha que aponta para o segundo retângulo na cor lilás, que indica o processamento de dados, seguido por uma flecha que aponta para o último retângulo na cor azul, indicando a saída do algoritmo.
Vamos analisar o nosso algoritmo de somar os números: temos as entradas de dados que são os números que desejamos somar, consideraremos os números 5 e 2. Após receber os números, o algoritmo realizará o processamento desses dados, no caso, somará 2 + 5. Por fim, temos o dado de saída que é o resultado da soma 7.
Figura 3 - Algoritmo de soma / Fonte: o autor.
#PraCegoVer: a imagem ilustra a representação da entrada, processamento e saída dos dados do algoritmo de somar dois números. A imagem contém três retângulos na horizontal, onde o primeiro, na cor rosa, indica a entrada no caso do algoritmo dos números 5 e 2. Seguido do retângulo na cor lilás, que indica o processamento dos dados, que é representado pela soma 2 + 5. Por fim, o retângulo azul indica a saída, que é o resultado da conta 7.
Agora que você já tem uma noção de algoritmos, veremos como ele é aplicado em nosso dia a dia? Normalmente, utilizamos diversos algoritmos quando acessamos um mecanismo de busca para fazer uma pesquisa na internet, ou para ver as postagens dos nossos amigos nas redes sociais. Se você tem o costume de utilizar bastante as redes sociais, provavelmente, em algum momento se deparou com a frase: “O algoritmo mudou, e o engajamento das postagens estão diferentes”. Mas como isso é definido? Se você considerar que a relevância de uma postagem é determinada pelo número de interações com elas, então, o algoritmo de engajamento pode ser representado da seguinte forma:
Figura 4 - Algoritmo de engajamento / Fonte: o autor.
#PraCegoVer: a imagem ilustra a representação da entrada, do processamento e da saída dos dados do algoritmo de engajamento nas redes sociais. A imagem é composta por três retângulos na vertical indicando as entradas do algoritmo composto por curtidas, comentários e compartilhamentos. Uma flecha na horizontal indica o próximo passo apresentado em um retângulo lilás, que indica o processamento do algoritmo de engajamento, seguido de uma flecha na horizontal indicando o último retângulo que representa o engajamento da publicação.
De forma intuitiva, percebemos que as entradas do algoritmo de relevância das redes sociais são as curtidas, os comentários, os compartilhamentos etc., e a saída é a relevância da postagem. Quanto maior for a entrada, neste caso, maior a relevância do post.
Muito bem, caro(a) aluno(a), agora, você já tem uma visão geral sobre o que é um algoritmo e como os algoritmos podem funcionar, mas isso é só o início da nossa jornada. Nesta lição, vimos os algoritmos como uma série de passos aplicados a uma entrada que gera uma saída e que podem ser representados de diversas formas. Aqui, vimos ele com uma representação narrativa.
De forma geral, como descreve Aditya (2017), podemos pensar em algoritmos como uma ferramenta para resolver um problema bem definido. A definição de um problema se baseia em um conjunto de dados que se deseja processar, com suas especificidades, e o resultado que é desejado alcançar.
Na próxima aula veremos como representar algoritmos por fluxogramas e por linguagem estrutural.
Estes três tipos de representação são bastante utilizados. Quando queremos apresentar um algoritmo geral sem muitos detalhes, utilizamos a forma de narrativa. Para uma representação visual, utilizamos os fluxogramas, e, por fim, quando descrevemos o algoritmo formalmente, utilizamos as linguagens estruturadas.
Quando você iniciar o desenvolvimento dos seus aplicativos, aplicará todos estes conceitos que estamos explorando, utilizando uma linguagem de programação. As linguagens de programação são a forma que utilizamos para comunicar as instruções que queremos que o computador execute. Veremos que existem diversas linguagens para diferentes tipos de objetivos, como: desenvolver sites, jogos, aplicativos etc. Porém não se assuste, pois a lógica para criar as aplicações é a mesma em todas as linguagens, e com os conhecimentos que está adquirindo aqui você será capaz de aprender rapidamente todas as linguagens de programação que desejar.
CORMEN, T. H. et al. Algoritmos: teoria e prática. Vol. 2. Rio de Janeiro: Editora Campus, 2002.
ADITYA, B. Entendendo Algoritmos: um guia ilustrado para programadores e outros curiosos. São Paulo: Novatec Editora, 2017.