Ir ao conteúdo

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


Ir à solução Resolvido por kgin,

Posts recomendados

Postado

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
  • Solução
Postado
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
Postado

@kgin aaaah sim, como pude deixar um detalhe tão bobo passar, agradeço pela ajuda.

inclusive seu método parece mais clean e prático que o meu, vou tentar coisas por fora da aula porque parece que o professor gosta de ficar enfeitando sem necessidade

  • Obrigado 1

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...