Algoritmos Aula 04: Fluxograma, controles de fluxo condicionais e laços de repetição

Fluxograma com laço de repetição

 

Fluxogramas com Laços de repetição

    Examine o fluxograma acima. O que temos de diferente? Nele vemos que, após a entrada de dados é feito um processamento e depois disso é analisada uma condição. Se houver a necessidade de entrar com mais dados, ele volta ao ponto de entrada de dados e repete o processamento. 

    Novamente é analisada a condição e se ainda houver a necessidade de entrar com mais dados, ele mais uma vez, repete o ponto de entrada de dados, depois novamente o processamento e assim INDEFINIDAMENTE enquanto a condição for satisfeita.

    O que estamos vendo é um exemplo de laço de repetição, isto é, um conjunto de instruções que são executadas repetidamente enquanto uma dada condição for válida. Neste caso, o número de repetições é indefinido porque não sabemos quantas vezes deverá ser repetido.

Limitando o número de repetições

    Examine agora o fluxograma abaixo e tente estabelecer diferenças entre o primeiro:

Fluxograma com laço de repetição definidos ou determinados

    Repare que desta vez o número de repetições já é algo pré-estabelecido, pois especificamos o número de entrada de dados que serão necessárias. Pelo fluxograma, após o processamento teremos que estabelecer uma forma de contar o número de vezes que o laço foi repetido e, se o número de repetições for menor que o número de entradas de dados, ele retornará ao ponto para solicitar uma nova entrada.

Contadores

    Contador é o nome técnico do artifício para contar o número de vezes que o laço é repetido. Ele pode ser feito através de uma variável que pode começar com o valor 0, por exemplo, e a cada iteração do laço sofre um incremento, isto é, seu valor é aumentado em uma unidade. Isso ficará mais claro adiante com um exemplo.

Fluxograma da média com laço de repetição

    Digamos que eu queira refazer o fluxograma para cálculo de média de forma que ele seja válido não importa o número de notas que o aluno tenha. Eu devo utilizar um fluxograma com um laço de repetição de maneira que o número de repetições seja indefinido, como o primeiro exemplo dessa página.

    Porém, como será o cálculo da média aritmética? De forma genérica, uma média aritmética é a somatória dos elementos dividida pelo número de elementos, isto é:

Média = (x1+x2+x3+ ... + xn) / n

Onde n é número de elementos que no nosso caso é o número de notas

Isso nos traz dois problemas para o fluxograma: Eu vou precisar contar o número de elementos através de um contador e também armazenar a somatória da notas cada vez que uma nota é acrescentada.

Como já dissemos, um contador é uma variável que começa geralmente com um valor e cada laço, deverá ser aumentada. Para isso podemos usar uma fórmula como:

contador = contador + 1

Essa fórmula está dizendo que o contador será o seu valor anterior aumentado em uma unidade.

    Já a somatória também precisa ser uma variável que geralmente começa com o valor zero e a cada laço será aumentada com a entrada a nota. Para isso podemos usar uma fórmula como:

somatoria = somatoria + nota

Essa fórmula está dizendo que a somatória será o seu valor anterior acrescentada do valor da nota.

    Então, o algoritmo seria começar com os valores iniciais da somatória e do contador, solicitar uma nota, agregar o valor da nota na somatória, incrementar o contador, testar a condição se devemos ou não acrescentar outra nota e, em caso afirmativo, voltar ao ponto de entrada de notas.

    Esse laço se repetiria indefinidamente até que ao testar a condição, diga-se ao programa que ele NÃO deve acrescentar outra nota, para então processarmos o valor da média com a seguinte fórmula:

MediaFinal=somatoria/contador

    Só então haveria a saída da média. Assim teremos o seguinte fluxograma:

Fluxograma para média aritmética com laço indefinido ou indeterminado


    Cabe esclarecer que essa não é a única solução possível. Alguns vão preferir inciar o contador com o valor 1 e posicionar o seu incremento após o teste da condição. Assim teríamos:

Fluxograma para cálculo de média com outra opção de laço

Devo dizer também que optei por não incluir uma validação das notas, nem uma saída de resultados como "aprovado" ou "reprovado" para não complicar mais. O que não impede o aluno de tentar incluí-las como exercício.


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.