Fluxogramas em problemas de lógica de programação
Digamos que eu necessito criar um programa que permita fornecer duas notas de provas e calcular a média final de um aluno com base nessas duas notas . Como seria o fluxograma para representar as instruções necessárias para esse programa?
Com o que temos de conteúdo até aqui podemos facilmente entender que necessitamos entrar com as duas notas de provas para que seja calculada a média, mas como essas notas são armazenadas? Como é escrito tecnicamente o cálculo da média? Para abordamos isso devemos aprofundar em alguns conceitos que serão usados na confecção dos fluxogramas e algoritmos em pseudocódigo.
Variáveis
Em programação, as variáveis são entidades que servem para armazenar provisoriamente uma informação em memória. No nosso problema as notas de prova e a média final seriam exemplos de variáveis.
Para utilizá-las em muitas linguagens elas precisam ser declaradas no início de um programa, através de uma instrução que especifique o tipo de dados que ela conterá e o seu nome de identificação.
A maioria das linguagens de programação determinam regras para a nomenclatura de variáveis, mas para facilitar a compreensão do estudante iniciante, iremos generalizar que:
- Nomes de variáveis devem iniciar com letras;
- Não devem conter símbolos ou espaços em branco
- Também não devem conter acentos ou cedilhas (ç)
- Devem ser nomes objetivos que indiquem a natureza da sua informação
- Podem conter números, letras maiúsculas e underline (_).
Cabe esclarecer que existem detalhes e convenções que estamos omitindo, mas retornaremos ao assunto em momento mais oportuno.
Sendo assim, no nosso problema de cálculo de média, poderíamos utilizar como nomes de variáveis Nota1, Nota2 e MediaFinal. No entanto também poderíamos utilizar N1, N2 e MF, que também seriam nomes válidos, pois respeitam as regras passadas.
Profissionais de desenvolvimento costumam ser econômicos e utilizam nomes de variáveis curtos, mas como a finalidade desse blog é facilitar o entendimento, utilizaremos os nomes mais óbvios possíveis. Como as notas das provas são entradas de informação, precisam ser representadas com paralelogramos.
Tipos de dados
Outra questão a ser vista é o tipo do dado a ser armazenado pela variável, isto é, se informação será numérica, alfanumérica ou lógica. Para o Pseudocódigo uma variável numérica poderá ser do tipo inteiro ou real quando aceita números decimais.
Se a informação for textual poderá ser do tipo caracter para armazenar uma letra ou cadeia se armazenar uma sequência de caracteres. Se o dado for do tipo Booleano será chamado de logico e poderá armazenar verdadeiro ou falso.
Ai surge uma dúvida: Como diferenciar o conteúdo booleano verdadeiro da cadeia de caracteres com a palavra verdadeiro? Simples, para o pseudocódigo a informações do tipo cadeia deverão ser especificadas entre aspas. Assim verdadeiro sem aspas é o dado booleano e "verdadeiro" entre aspas é o dado do tipo cadeia.
Um detalhe importante é que ao especificar o valor de uma variável do tipo caracter, devemos utilizar o 'apóstrofe' no lugar das "aspas".
Com relação aos números reais, ao invés de vírgulas a maioria das linguagens especifica os decimais através de pontos, por exemplo, escrevemos 7.5 no lugar de 7,5 ou 2.0 no lugar de 2,0. Usamos o zero a esquerda do ponto para diferenciar o 2.0 do tipo real do 2 do tipo inteiro.
Operadores
Para executar cálculos e processamento matemático, a maioria das linguagens de programação e o pseudocódigo utilizam os operadores já conhecidos das operações aritméticas e comparativas da matemática, porém temos algumas pequenas adaptações e introdução de operadores novos. Assim para o Pseudocódigo em Portugol utilizaremos nesse momento a seguinte tabela de operadores:
 |
Em tempo: O operador diferente é representado por != |
Sendo assim, para o cálculo do nosso problema podemos dizer que a variável para média tem a seguinte atribuição: MediaFinal = (Nota1+Nota2)/2
Como se trata de um processamento matemático, essa instrução é passada no fluxograma com a figura do retângulo. No entanto, o resultado do cálculo de média é uma saída de informação que precisa ser mostrada, por isso o uso da figura de saída de dados ou documento. Assim teremos no final o seguinte fluxograma:
 |
Fluxograma para Cálculo da Média de duas notas |
Melhorando o programa
Imagine que agora você queira mostrar como saída a cadeia "aprovado" se a Média for maior ou igual a 5 e "reprovado" se a média for menor que 5. Como ficaria o fluxograma?
Nesse caso bastaria colocar uma figura de decisão onde seria analisada uma condição: Se a média final for maior ou igual a 5, segue o fluxo para a saída "aprovado". Caso contrário, segue o fluxo para a saída "reprovado". Assim temos o seguinte fluxograma:
 |
Fluxograma melhorado para o cálculo da média |
Validação de dados
Nesse problema do cálculo da média não especificamos qual seria o intervalo válido de uma nota de prova porque o senso comum diz que uma nota é válida se está no intervalo entre 0 e 10, mas o que aconteceria no fluxograma se o usuário entrasse com uma nota de prova igual a 20? Ou ainda, se o usuário digitasse a palavra "Dez" como nota? Provavelmente teríamos um erro.
Para evitar esse tipo de situação as entradas de dados devem ser validadas para que o dado possa ser processado ou ter uma estratégia para o chamado tratamento de erros que veremos em linguagens de programação.
Operadores Lógicos
No nosso problema de média, para uma nota ser válida precisa satisfazer duas condições: Ser maior ou igual a 0 e menor ou igual a 10. Nessa frase utilizamos a conjunção "e" para amarrar as duas condições. Em pseudocódigo, quando duas condições precisam ser válidas utilizamos o operador lógico e, sem aspas. Também temos o operador lógico ou e o operador lógico nao.
Inserindo a validação no fluxograma
Uma forma de aprimorar o fluxograma seria validar a nota 1, testando se está dentro do intervalo válido e só então pedir a nota 2 que também deveria ser validada. Assim poderíamos ter o seguinte fluxograma:
 |
Fluxograma para cálculo de média com validação da nota |
Cabe esclarecer que esse fluxograma só contempla a validação do intervalo da nota e não valida se os dados são numéricos ou em cadeia, coisa que veremos durante os cursos de programação.
Repare também que o processo de entrada de notas e validação tornou o fluxograma repetitivo aumentando o tamanho do desenho. Com esse raciocínio o fluxograma ficaria cada vez maior conforme aumentasse o número de notas.
Felizmente existem outras estratégias que permitem tornar o processo mais eficiente, mas prefiro explicar isso na próxima aula para não estender o texto.
Próxima Aula Aula Anterior
Referências
MANZANO, J. A. N. G. Portugol Studio: Programação de Computadores em Português. São Paulo: Propes Vivens, 2017. 86p
NOSCHANG, LUIZ et all. Portugol Studio: Uma IDE para Iniciantes em Programação. In: XXXIV Congresso da Sociedade Brasileira de Computação - CSBC, 34º, 2014, Brasília, Anais Eletrônicos do Congresso da Sociedade Brasileira de Computação, Brasília, 2014. p. 1287 - 1296. Disponível em: <https://sol.sbc.org.br/index.php/wei/article/view/10954/10824>. Acesso em: 4 ago. 2024.
PORTUGOL WEBSTUDIO. Ajuda. Disponível em: <https://portugol.dev/> Acesso em 05 ago. 2024.
PORTUGOL WEBSTUDIO. Dúvidas e Perguntas. Disponível em: <https://portugol.dev/> Acesso em 05 ago. 2024.