![]() |
Exemplo de código repetitivo |
Laços do tipo para()
Problema:
Reparou que para cada nota de prova que foi inserida no programa de médias eu precisei de duas linhas de código? Uma com um escreva() e outra com um leia(). Veja a figura acima. Já pensou o que aconteceria se cada aluno tivesse dez notas de provas? Pelo raciocínio atual seriam vinte linhas de código? Não? Não pode ser assim. Deve ter um jeito mais prático de fazer isso. Vamos a ele.
Utilizando a instrução PARA()
O laço do tipo enquanto() até permite um número de repetições determinadas, porém temos que criar contadores, nos preocupar com seu valor iniciar, entrar com incrementos e tomar um cuidado extremo em onde colocar esse incremento, etc.
Felizmente no Portugol e nas outras linguagens temos uma alternativa para isso que o uso da instrução para(). Ela permite estabelecer um número determinado de repetições através de uma condição para um contador que automaticamente sofre um incremento ou decremento a cada repetição.
Estrutura da instrução PARA():
para (contador = valor_inicial; condição para terminar; variação do contador) {
instruções em uma ou mais linhas
}
Para compreender melhor vamos dar um exemplo. Digamos que eu queira fazer um programa simples para contar até 100. Poderíamos ter um código assim:
- programa
- {
- funcao inicio()
- {
- inteiro contador
- para (contador = 1; contador <= 100; contador++)
- {
- escreva (" "+contador)
- }
- }
- }
A novidade aqui foi o uso de um operador de incremento ++ que produz o mesmo resultado de contador=contador+1
Dito isso vamos a nossa modificação do programa de média. Digamos que cada aluno realiza três provas, portanto eu preciso pegar três notas. Além disso para calcular a média eu vou precisar somar as três provas e depois dividir por três. Se eu vou somar as três provas, provavelmente precisarei de uma variável para essa somatória. Analise o seguinte fluxograma:
Nesse fluxograma que representa só as instruções responsáveis pelo cálculo da média, vimos que precisamos iniciar a variável somatória com zero, utilizar uma única variável para nota e a cada laço fazer somatoria=somatoria+nota.
No caso do laço para(), precisamos estabelecer que o valor inicial será contador=1, sua condição para encerrar será contador<=3 e seu incremento será contador=contador+1 ou contador++. Por último vemos que o cálculo da média será MediaFinal=somatoria/contador.
No entanto temos um problema: já havia uma variável contador! Façamos assim, vou chamar esse contador do laco para() de contador2. Ok? Vou aproveitar e dar a solução do desafio da aula passada repare nas alterações em verde que mostram o contador iniciando com 1 e o novo posicionamento do incremento.
Assim ficaremos com o seguinte código:
- programa {
- funcao inicio () {
- caracter resposta
- inteiro frequencia, contador, contador2
- contador=1
- cadeia nome
- real nota,somatoria,MediaFinal
- enquanto(verdadeiro){
- escreva("\nDigite a nome: ")
- leia(nome)
- somatoria=0
- para(contador2=1;contador2<=3;contador2++){
- escreva("Digite a nota"+contador2+": ")
- leia(nota)
- somatoria=somatoria+nota
- MediaFinal=somatoria/contador2
- }
- escreva("Digite a Frequência: ")
- leia(frequencia)
- escreva("A média final: "+MediaFinal)
- se (MediaFinal>=5 e frequencia>=75){
- escreva("\n"+nome+" foi Aprovado")
- }
- senao{
- escreva("\n"+nome+" foi Reprovado")
- }
- escreva("\nDigite s para sair ou apenas ENTER para continuar: ")
- leia(resposta)
- se(resposta=='s' ou resposta=='S'){
- pare
- }
- contador=contador+1
- }
- escreva("\nNúmero total de alunos: "+contador)
- }
- }
Com isso vimos os dois tipos principais de laço do Portugol: o enquanto() e o para(). Seus equivalentes nas linguagens de programação geralmente recebem o nome de While e de For.
O While ou Do While, dependendo da linguagem pode ser traduzido para "Enquanto" ou "Faça enquanto". Eles são geralmente é utilizado em laços cujo número de repetições é indefinido, com instruções equivalentes a frase "faça enquanto for verdadeiro".
Em algumas linguagens seu loop pode ser interrompido, por exemplo, por uma tecla como ESC. Não vamos chegar a esse nível de detalhe com o Portugol, uma vez que ele NÃO é visto como uma linguagem comercial, apesar de ter recursos poderosos.
Já o For que pode ser entendido como "Para" é utilizado para laços cujo número de repetições será definido ou determinado por um contador. Veremos a utilidade disso quanto tratarmos de vetores e matrizes.
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.