Nesta aula vamos ver como garantir que uma nota digitada pelo usuário é valida.
Na aula anterior resolvemos um exercício lendo 10 notas e salvando em um vetor e, na sequência, descobrimos a menor, a maior e a média das notas, assim:
Contudo, quem nos garante que serão digitadas apenas notas válidas entre 0 e 10?
É nossa responsabilidade enquanto programadores garantir a validade dos dados digitados pelo usuário. Isso pode ser feito envolvendo a leitura de cada nota dentro de uma estrutura de repetição do tipo faça enquanto.
FAÇA (pedir e ler uma nota) ENQUANRO a nota digitada for menor que zero ou maior que 10.
Assim:
real notas[10] inteiro i para(i = 0; i < 10; i++){ faca{ escreva("Digite a nota da posição ", i, ": ") leia(notas[i]) }enquanto(notas[i] < 0 ou notas[i] > 10) }
Este exercício é interessante porque ele mostra de forma muito clara como que cada tópico estudado vai se encaixando para formar programas mais completos e consistentes, evitando e prevenindo erros.
Caso queira informar ao usuário que a no é inválida podemos ler a nota e, dentro de uma repetição do tipo enquanto, verificar se ela é inválida, informando ao usuário e pedindo novamente a nota, assim:
para(i = 0; i < 10; i++){ escreva("Digite a nota da posição ", i, ": ") leia(notas[i]) enquanto(notas[i] < 0 ou notas[i] > 10){ escreva("A nota digitada é inválida!\nDigite outra nota! ") leia(notas[i]) } }
Programa completo em Portugol
programa{ funcao inicio(){ real maior = 0, menor = 11, media, somaNotas = 0.0, notas[10] inteiro i para(i = 0; i < 10; i++){ escreva("Digite a nota da posição ", i, ": ") leia(notas[i]) enquanto(notas[i] < 0 ou notas[i] > 10){ escreva("A nota digitada é inválida!\nDigite outra nota! ") leia(notas[i]) } } escreva("\n") para(i = 0; i < 10; i++) escreva(notas[i], ", ") escreva("\n") para(i = 0; i < 10; i++){ se(notas[i] < menor){ menor = notas[i] } se(notas[i] > maior){ maior = notas[i] } somaNotas += notas[i] } media = somaNotas / 10 escreva("\nMenor nota: ", menor) escreva("\nMaior nota: ", maior) escreva("\nA média da turma foi: ", media, "\n\n") } }