![]() |
Opção para abrir arquivos destacada em vermelho |
Como o Portugol controla o fluxo dos dados
Na aula passada vimos como salvar um arquivo no Portugol Webstudio. Agora eu quero recuperá-lo e continuar com modificações. Para isso vou clicar na opção Abrir Arquivo da tela inicial do Portugol WebStudio, clicar na opção ABRIR ARQUIVO (foto acima) e recuperar o arquivo media.por da aula passada disponível na pasta Downloads.
Estruturas de Controle de Fluxo
Em programação Estruturas de Controle de Fluxo são elementos que permite alteram o fluxo de dados de um programa com base em uma condição, sugerindo caminhos alternativos ao fluxo ou fazendo com que o fluxo retorne a algum ponto. Começaremos a ver como o Portugol lida com isso.
Condicionais
Nesse arquivo vimos um algoritmo simples para o cálculo da média final com base em duas notas de provas. No entanto já tínhamos visto nas aulas de fluxogramas que era possível introduzir no algoritmo um controle de fluxo condicional que é um ponto do programa para tomar uma decisão com base em uma condição (figura abaixo).
![]() |
Fluxograma com exemplo de condição |
Nesse fluxograma, após o cálculo da média, aplicávamos a condição de que se a Média Final for maior ou igual a 5, a saída na tela será a palavra "Aprovado", senão será a palavra "Reprovado".
Repare que na frase que destaquei no parágrafo anterior temos três partes distintas na cor rosa: uma condição, depois o resultado caso a condição seja satisfeita e por último o resultado caso a condição não seja satisfeita.
Esse mesmo raciocínio pode ser aplicado em linguagens de programação e também no Portugol através de um comando chamado se e o senao. Esses comandos possuem a seguinte estrutura básica:
instruções caso a condição seja verdadeira ou satisfeita
}
senao{
instruções caso a condição seja falsa ou NÃO satisfeita
}
A condição será uma expressão lógica escrita entre parenteses () que no nosso caso foi definida nas aulas anteriores como sendo a variável MediaFinal>=5
Já as instruções podem conter uma ou mais linhas, mas no nosso caso, a saída na tela obtida apenas com a função escreva("\nAprovado") ou escreva("\nReprovado"), atende aos nossos requisitos. Assim podemos usar o seguinte programa:
- programa {
- funcao inicio () {
- real nota1,nota2,MediaFinal
- escreva("Digite a nota1: ")
- leia(nota1)
- escreva("Digite a nota2: ")
- leia(nota2)
- MediaFinal=(nota1+nota2)/2
- escreva("A média final: "+MediaFinal)
- se (MediaFinal>=5){
- escreva("\nAprovado")
- }
- senao{
- escreva("\nReprovado")
- }
- }
- }
Em relação ao programa original da aula passada temos as seguintes alterações:
- Incluímos uma nova variável do tipo real chamada MediaFinal para encurtar o código evitando repetições desnecessárias e deixá-lo mais legível
- Incluímos a condição com os comandos se... senao... conforme já explicamos sobre a sua estrutura e
- utilizamos uma indentação entre as linhas 10 e 15, afastando as instruções da margem com a finalidade de deixar o código mais legível representando o possível fluxo dos dados.
- programa {
- funcao inicio () {
- real nota1,nota2,MediaFinal
- enquanto(verdadeiro){
- escreva("\nDigite a nota1: ")
- leia(nota1)
- escreva("Digite a nota2: ")
- leia(nota2)
- MediaFinal=(nota1+nota2)/2
- escreva("A média final: "+MediaFinal)
- se (MediaFinal>=5){
- escreva("\nAprovado")
- }
- senao{
- escreva("\nReprovado")
- }
- }
- }
- }