aula 52

Estrutura de repetição FAÇA ENQUANTO em PORTUGOL

A estrutura ENQUANTO é muito útil quando precisamos fazer um teste e não sabemos quantas vezes exatamente esse teste precisa ser feito. Contudo, você deve ter percebido que nós repetimos a leitura da nota em nosso exemplo anterior. Lemos a nota uma vez para então testar se ela era válida ou não. Caso fosse uma nota inválida, então fizemos a leitura da nota novamente dentro da repetição, como a seguir:

escreva("\nDigite uma nota: ")
leia(nota)
enquanto(nota < 0 ou nota > 10){
  escreva("Nota inválida!\nDigite uma nota entre 0 e 10: ")
  leia(nota)
}

Perceba que nós repetimos exatamente a mesma leitura feita antes da estrutura ENQUANTO. Não há nenhum problema e está correto, porém, há uma forma mais eficiente de fazer isso.

A estrutura ENQUANTO inicia testando para só depois realizar uma ação. Na lógica do nosso exemplo é exatamente o contrário, perceba que primeiro queremos tomar uma ação (pedir e ler uma nota) para só depois testar se ela é válida ou não.

Nestes casos podemos lançar mão da estrutura de repetição FAÇA ENQUANTO e nosso exemplo fica assim:

faca{
  escreva("Digite uma nota: ")
  leia(nota)
enquanto(nota < 0 ou nota > 10)

Dessa forma, primeiro será executado o que está entre o par de chaves, pedindo e lendo uma nota, para só depois testar se é válida ou não. Se o teste for verdadeiro, ou seja, se a nota for inválida, será feito novamente o que está dentro do par de chaves, até que seja digitada uma nota válida, quebrando assim a repetição.

programa{
	// calcular a média de 20 notas válidas
	
	funcao inicio(){
		real nota, media, somaNotas = 0.0
		inteiro contador

		// primeira versão ***************************************
		para(contador = 1; contador <= 20; contador += 1){
			escreva("\nDigite uma nota: ")
			leia(nota)
			enquanto(nota < 0 ou nota > 10){
				escreva("Nota inválida!\nDigite uma nota: ")
				leia(nota)
			}
			somaNotas = somaNotas + nota
		}
		media = somaNotas / 5
		escreva("Média: ", media)

		// segunda versão ***************************************
		para(contador = 1; contador <= 20; contador += 1){
			faca{
				escreva("\nDigite a nota ", contador, ": ")
				leia(nota)
			}enquanto(nota < 0 ou nota > 10)
			somaNotas = somaNotas + nota
		}
		media = somaNotas / 5
		escreva("Média: ", media)
	}
}


Deixe um comentário

três × um =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.