Olá, vamos continuar os nossos estudos? Nesta lição, destacaremos dois aspectos muito importantes para a compreensão da estrutura de algoritmos: fluxogramas e linguagem algorítmica estrutural.
Você pode me questionar os motivos de esses pontos serem tão relevantes. Respondo da seguinte forma: o estudo da representação de algoritmos é importante porque permite compreender e apresentar a abstração dos dados e as ideias de forma simples e direta. Quando você começar a desenvolver as suas aplicações, esses conhecimentos serão indispensáveis.
Então, vamos iniciar a nossa jornada?
Na lição passada, estudamos a definição de algoritmos e como ele está presente no nosso dia a dia. Como vimos, o simples ato de fazer um café pode ser representado como um algoritmo, basta seguir algumas regras. Porém, até agora, só trabalhamos com a representação de algoritmos de forma narrativa, mas esta não é a melhor forma que temos para descrever códigos, pois essa forma não possui nenhum tipo de regra mais formal.
Quando trabalhamos com programação, é necessário apresentar as ideias de uma forma formal que facilitará a compreensão do algoritmo para outros programadores. Para isso, podemos utilizar o fluxograma e o pseudocódigo. Fluxograma é uma forma visual de representar um algoritmo, utilizamos símbolos ligados entre si, que ilustram de forma sequencial as diferentes etapas do algoritmo. Esta abordagem é muito útil quando queremos apresentar um algoritmo de forma rápida e simples, sem entrar em muitos detalhes da implementação. Sabe aquele momento em que você está tentando explicar algo e fala “quer que eu desenhe?” Então, o fluxograma pode ser encarado como a materialização disso.
Por outro lado, quando queremos representar um algoritmo de uma forma mais próxima da programação, utilizamos o pseudocódigo. No Brasil, o pseudocódigo mais conhecido é o “portugol”. Esta representação tem como objetivo descrever um código utilizando palavras em português, mas que se aproxime da estrutura vista nas linguagens de programação.
Você pode pensar: “Poxa, mas se estas técnicas são só para representar isso, é inútil”, porém, na sua jornada como programador(a) e/ou desenvolvedor(a), você se deparará com estas representações em diversas situações.
Imagine o seguinte cenário: você é um(a) analista de sistemas de uma empresa de desenvolvimento de software, e você é chamado(a) para atender um cliente do mercado financeiro. Você começa a atender o cliente, e ele lhe descreve todas as funcionalidades que ele deseja que a aplicação tenha. Após ouvir o cliente, você precisa transmitir para ele que você compreendeu o projeto e ver se ficou alguma coisa de fora.
Para isso, você desenha um fluxograma com tudo que o cliente passou. Dessa forma, é possível apresentar, de forma clara, todos os requisitos necessários para o sistema, além de abrir a possibilidade para que, uma vez observado o passo a passo para o desenvolvimento do sistema, os requisitos sejam aperfeiçoados e otimizados.
Neste exemplo, apresentei para você apenas o uso do fluxograma na área de TI, mas esta ferramenta é utilizada em diversas outras áreas, como no mercado administrativo, na educação entre outros, pois o fluxograma consegue simplificar o processo e racionalizar etapas. Na mesma linha, entra a utilização de pseudocódigo. Essa representação estruturada de código permite que qualquer programador consiga reproduzir o algoritmo em qualquer linguagem de programação.
Fluxograma é uma representação gráfica, por meio de símbolos geométricos mais concisa que a representação narrativa e com regras de estruturação. Conforme aponta Aditya (2017), com simples formas geométricas, é possível representar desde simples ideias a sistemas complexos. Deste modo, exploraremos os símbolos que devemos utilizar para montar os nossos primeiros fluxogramas.
Início/fim - como o próprio nome diz, este símbolo é utilizado para representar o início e o fim dos nossos algoritmos.
Figura 1 - Símbolo Entrada/Saída / Fonte: o autor.
#PraCegoVer: A figura ilustra um retângulo laranja com as bordas arredondadas.
Seta - indica o fluxo de execução do algoritmo, é utilizada para fazer a conexão entre dois símbolos.
Figura 2 - Símbolo de conexão / Fonte: o autor.
#PraCegoVer: A figura ilustra uma seta preta.
Processamento - indica qualquer operação de processamento. É o símbolo mais utilizado nos fluxogramas.
Figura 3 - Símbolo de processamento / Fonte: o autor.
#PraCegoVer: a figura apresenta um retângulo laranja.
Entrada/Saída - este símbolo é utilizado para representar os dados de entrada do algoritmo, como também a saída dos dados após o processamento. Pode também ser utilizado para representar outros tipos de dados no fluxograma.
Figura 4 - Símbolo Entrada/Saída / Fonte: o autor.
#PraCegoVer: a figura apresenta um paralelogramo laranja.
Condicional - indica uma questão que altera o fluxo do algoritmo. Geralmente, as condições são de verdadeiro ou falso, e, dependendo da resposta, o algoritmo segue um caminho diferente.
Figura 5 - Símbolo condicional / Fonte: o autor.
#PraCegoVer: a figura apresenta um losango laranja.
Existem diversos outros símbolos que podem ser utilizados em fluxogramas, porém esses cinco apresentados anteriormente são os mais comuns e os que utilizaremos nesta etapa inicial do nosso curso.
Agora que você já conhece alguns símbolos, vamos à prática. Vamos primeiro relembrar o algoritmo de somar dois números, que vimos na lição passada. O algoritmo de forma narrativa é descrito da seguinte forma:
1 - Receba o primeiro número.
2- Recebe o segundo número.
3- Some os dois valores.
4- Exiba o resultado.
Agora, representaremos este algoritmo com um fluxograma, utilizando os símbolos que já apresentamos. O fluxograma fica da seguinte forma:
Figura 6 - Fluxograma algoritmo de soma / Fonte: o autor.
#PraCegoVer: a figura ilustra um fluxograma na horizontal do algoritmo de somar dois números. A imagem inicia com um retângulo com as bordas arredondadas, que indica o início do algoritmo, uma seta logo abaixo conecta o retângulo a um paralelogramo que indica a entrada dos dados, dentro do paralelogramo temos os números 5 e 2. O símbolo anterior é ligado por uma seta a um retângulo que indica o símbolo de processamento de dados, no caso, a soma das entradas 5+2. Logo abaixo, ligado pela seta, temos outro paralelogramo indicando o resultado da soma 7. Por fim, temos um retângulo arredondado indicando o fim do algoritmo.
Note, iniciamos o fluxograma com o símbolo de início do algoritmo, e todo algoritmo que a gente for desenvolver deve começar e finalizar com esse símbolo. Após o símbolo do início, utilizamos a seta para indicar o próximo passo da execução, indicando o símbolo de entrada de dados, aqui colocamos os números que queremos somar. Então, ligamos o símbolo anterior com o de processamento, que será responsável por somar os dois números. Após o processamento dos dados, temos a saída, e, por fim, o algoritmo é finalizado.
Pseudocódigo é uma forma de representação e organização de algoritmos por comandos escritos. Ele consiste em uma forma intermediária entre a forma narrativa e as linguagens de programação, e consiste em um conjunto restrito de palavras-chave utilizadas para a descrição dos algoritmos.
“Pseudocódigo é uma descrição informal de alto nível de um programa de computador ou algoritmo. Ele é escrito em código simbólico, que deve ser traduzido para uma linguagem de programação antes de ser executado” (OLSEN, 2005). O pseudocódigo sempre se inicia com a declaração das variáveis que indicam os tipos de dados que a nossa aplicação receberá e processará. Existem diferentes tipos de variáveis e formas de declará-las, e estudaremos essas particularidades na próxima lição. Para este primeiro momento, entenda as variáveis apenas como um espaço onde armazenamos um valor que será utilizado no algoritmo. As variáveis são declaradas com um nome e o tipo de dado que ela armazenará.
O primeiro conceito que você precisa entender para trabalhar com pseudocódigo é o de blocos. Nossos algoritmos são divididos por blocos que são porções de códigos que realizam determinada tarefa. O primeiro bloco que aprenderemos a utilizar é o de início/fim, ou bloco principal. Assim como no fluxograma, aqui, precisamos indicar onde começa e onde termina o algoritmo, e esse é o bloco principal. No “portugol”, que é a linguagem de pseudocódigo que utilizaremos, as palavras-chave de início e fim são escritas em letras maiúsculas.
Sendo assim, nosso algoritmo deve ter a seguinte cara:
VARIÁVEIS
INÍCIO
.
.
.
FIM
Iniciamos com a palavra-chave variáveis, que indica que declararemos todas as entradas que utilizaremos no algoritmo. Seguido pelo bloco principal de início e fim, entre, essas palavras-chave, descrevemos as instruções do algoritmo. Para ficar mais claro, veremos como fica o nosso algoritmo de somar dois números em pseudocódigo:
VARIÁVEIS
a, b, resultado: inteiro
INÍCIO
a <- 5
b <- 2
resultado <- a + b
escreva (resultado)
FIM
Vamos entender este código linha a linha:
LINHA 1 - iniciamos o algoritmo com a palavra-chave VARIÁVEIS, indicando o início do bloco de declaração de variáveis.
LINHA 2 - declaramos três variáveis do tipo inteiro, “a”, “b”, “resultado”. Nesta linha, estamos falando que cada uma das variáveis pode armazenar um número do tipo inteiro. As variáveis “a” e “b” serão utilizadas para armazenar os números que queremos somar, enquanto “resultado” receberá o resultado da soma dos dois números.
LINHA 3 - indicamos o início do bloco principal do algoritmo.
LINHAS 4 e 5 - armazenamos os valores que queremos somar nas variáveis. Para atribuir um valor a uma variável, utilizamos o símbolo “<-”. Desta forma, na linha 4, estamos dizendo que o valor 5 está armazenado na variável “a”, e, na linha 5, que o valor 2 está armazenado na variável “b”.
LINHA 6 - realizamos a soma dos dois números armazenados nas variáveis “a” e “b”, e depositamos o resultado da conta na variável “resultado”.
LINHA 7 - para finalizar, utilizamos o verbo escreva, seguido da variável resultado entre parênteses. Nesta linha, estamos dizendo que queremos que o computador apresente na tela o que está armazenado na variável. No caso, o valor 7, que é o resultado da soma.
LINHA 8 - indica o fim do bloco principal e o fim do algoritmo.
Eu sei que tudo isso que vimos nesta lição parece um pouco assustador, mas logo você se acostuma, e tudo passa a ser intuitivo. Observe que, diferente da forma narrativa, no pseudocódigo, utilizamos uma estrutura de palavras reservadas para indicar cada componente do algoritmo. Esta representação é muito próxima à utilizada na maior parte das linguagens de programação, sendo assim, utilizaremos ela no decorrer de todo o nosso estudo.
Também seguiremos utilizando os fluxogramas, que podem ser um grande aliado para a representação inicial de uma ideia. Algumas vezes, pode acontecer de você precisar escrever um algoritmo, mas não saber exatamente como fazer um pseudocódigo diretamente. Nesses casos, você pode primeiro tentar representar em um fluxograma e, a partir dele, seguir com o desenvolvimento do código.
Que tal colocar os conhecimentos da aula de hoje em prática? Construa um fluxograma e o pseudocódigo de um algoritmo que receba um número e retorne o dobro dele.
ADITYA, B. Entendendo Algoritmos: um guia ilustrado para programadores e outros curiosos. São Paulo: Novatec Editora, 2017.
OLSEN, A. L. Using pseudocode to teach problem solving. Journal of Computing Sciences in Colleges, v. 21, n. 2, p. 231-236, 2005.