Ir ao conteúdo
  • Cadastre-se

Portugol Não consigo encerrar repita-ate no Visualg, estou tendo dificuldades em aprender


Ir à solução Resolvido por kgin,

Posts recomendados

Perdão, realmente tenho dificuldade as vezes, por mais que me concentre, fui montando o código de acordo com as instruções da aula, mas ao fim não consigo concluir um loop, no ultimo bloco o programa acusa ATE sem REPITA na linha 60 "ate opcaoMenu = "3""
 

algoritmo "Exercicios"

var
   gabarito: vetor [1..10] de literal
   opcaoMenu: literal
   notaFinal: inteiro

procedimento mostrarMenu()
inicio
   Escreval("1 - cadastrar gabarito")
   escreval("2 - cadastrar prova")
   escreval("3 - sair")
fimprocedimento

procedimento cadastrarGabarito ()
var
   i: inteiro
inicio
   para i de 1 ate 10 faca
       escreval ("informe a reposta da questão ",i)
       leia(gabarito[i])
   fimpara
fimprocedimento

procedimento verificarSituacao(nota: inteiro): literal
inicio
   se nota >= 7
      retorne "Aprovado"
   senao
      retorna "Reprovado"
   fimse
fimse
fimprocedimento

procedimento notaFinal
inicio
   para i de 1 ate 10 faca
      escreval ("informe a resposta da questão ", i)
      leia(resposta)
      se resposta = gabarito[i] então
         nota <-nota +1
      fimse
      retorne nota
fimprocedimento

inicio
   repita
      mostrarMenu()
       escolha OpcaoMenu
        caso "1"
         cadastrarGabarito()
        caso "2"
         notaFinal <- cadastrarProva()
         escreval (verificarSituacao(notaFinal))
        outrocaso
         escreval("opção invalida")
   ate opcaoMenu = "3"
fimalgoritmo

 

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Solução
1 hora atrás, jo12345 disse:

perdão, realmente tenho dificuldade as vezes, por mais que me concentre, fui montando o codigo de acordo com as instruções da aula, mas ao fim não consigo concluir um loop, no ultimo bloco o programa acusa ATE sem REPITA na linha 60 "ate opcaoMenu = "3""

Está faltando o fimEscolha na linha 69

algoritmo "Exercicios"

var
   gabarito: vetor [1..10] de caractere
   opcaoMenu: caractere
   notaFinal: inteiro

procedimento mostrarMenu()
inicio
   Escreval("1 - cadastrar gabarito")
   escreval("2 - cadastrar prova")
   escreval("3 - sair")
fimprocedimento



procedimento cadastrarGabarito ()

var
   i: inteiro
inicio

   para i de 1 ate 10 faca
      escreval ("informe a reposta da questão ",i)
      leia(gabarito[i])
   fimpara
fimprocedimento



funcao verificarSituacao(nota: inteiro): caractere
inicio
   se nota >= 7
      retorne "Aprovado"
   senao
      retorna "Reprovado"
   fimse
fimse
fimfuncao



procedimento notaFinal
inicio

   para i de 1 ate 10 faca
      escreval ("informe a resposta da questão ", i)
      leia(resposta)
      se resposta = gabarito[i] então
         nota <-nota +1
      fimse
      retorne nota
fimprocedimento



inicio

   repita
      mostrarMenu()
      escolha OpcaoMenu
      caso "1"
         cadastrarGabarito()
      caso "2"
         notaFinal <- cadastrarProva()
         escreval (verificarSituacao(notaFinal))
      outrocaso
         escreval("opção invalida")
      fimescolha
   ate opcaoMenu = "3"

fimalgoritmo

 

no procedimento verificarSituacao você deveria usar uma função

Exemplo

funcao verificarSituacao(nota: inteiro): caractere
inicio
   se nota >= 7
      retorne "Aprovado"
   senao
      retorna "Reprovado"
   fimse
fimfuncao

 

e até onde eu usei o visualG, na minha versão não existe o tipo literal. você deveria usar o tipo caractere.

Uma melhoria interessante seria no menu

Exemplo

funcao menuPrincipal:inteiro
var
   opcao:inteiro
inicio
   repita
      escreval("1-Cadastra gabarito")
      escreval("2-Cadastra prova")
      escreval("3-Sair")
      leia(opcao)
      se ((opcao < 1) ou (opcao > 3)) então
         escreval("Opcao Invalida")
      fimSe
   ate não ((opcao < 1) ou (opcao > 3))
   retorne opcao
fimFuncao

 

Exemplo funcional do menu

Algoritmo "exemplo"

var
   opcao:inteiro

funcao menuPrincipal:inteiro
var
   opcao:inteiro
inicio
   repita
      escreval("1-Cadastra gabarito")
      escreval("2-Cadastra prova")
      escreval("3-Sair")
      leia(opcao)
      se ((opcao < 1) ou (opcao > 3)) então
         escreval("Opcao Invalida")
      fimSe
   ate não ((opcao < 1) ou (opcao > 3))
   retorne opcao
fimFuncao

inicio
   repita
      opcao <- menuPrincipal
      escolha opcao
      caso 1
           escreval("Cadastro de gabarito")
      caso 2
           escreval("Cadastro de prova")
      caso 3
           escreval("Estamos saindo do programa!")
      fimEscolha
   ate opcao = 3
fimAlgoritmo

 

  • Obrigado 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...