Ir ao conteúdo

Posts recomendados

Postado

Olá, fórum.

Preciso de ajuda para criar procedimento que seja chamado no final do Quiz no VisualG, para este código.

 

  se (des = 100) então
     escreval("        Seu desempenho no Quiz foi *Excelente*")
  senao
        se (des <= 99) e (des >= 75) então
            escreval("     Seu desempenho no Quiz foi *Ótimo*")
        senao
             se (des <= 74) e (des >= 50) então
                escreval("   Seu desempenho no Quiz foi *Bom*")
             senao
                  se (des <= 49) e (des >= 25) então
                     escreval("   Seu desempenho no Quiz foi *Regular*")
                       senao
                          escreval("   Seu desempenho no Quiz foi *Péssimo*")
                  fimse
             fimse
        fimse
  fimse

 

Ele está funcionando, mas gostaria de melhora-lo.

 

Desde já agradeço.

Postado

@Deivid Bittencourt

Qual seria sua dificuldade? Já pesquisou sobre procedimentos em visualg?

Sem o código todo fica um pouco difícil sugerir alguma coisa, por isso é sempre bom que poste todo o código usando o botão Code (colocar <> antes e depois do código não vai funcionar).

image.png.3182f6fb483fe786c43fce54207a3d8b.png

De qualquer forma, não tem segredo. Veja esse código que usa um procedimento para somar dois números:

Algoritmo "Soma"

Var
   a, b: inteiro
   res: inteiro

procedimento soma (A, B: inteiro)
Var

Inicio
   res <- A + B
fimprocedimento

Inicio
   escreval("Insira o valor 1: ")
   leia(a)
   escreval("Insira o valor 2: ")
   leia(b)

   soma(a,b)

   escreval("Resultado da soma:", res)
Fimalgoritmo

Agora tente implementar um procedimento no seu código e pergunte se tiver dúvidas 😉

  • Curtir 1
Postado

Este é meu código teste

Já tenho procedimento para perguntar, pontuar, erros e acertos, mas não consigo criar um para desempenho.

Deixei o que preciso mudar abaixo do código.

Esta funcionando, mas gostaria de melhorar este código e deixa-lo igual aos outros como procedimento.

 

algoritmo "QUIZ_TESTE"
var
   resposta: caractere
   pontos, c, acerto, erro, des : inteiro
   pergunta : vetor [1..2] de caractere
   respostas: vetor [1..6] de caractere
   correta : vetor [1..2] de caractere

procedimento perguntar (p, r1 : inteiro)
var i, r2 : inteiro
inicio
   escreval ("QUESTÃO ", p)
   escreval (pergunta[p])
   escreval ("")

   r2 <- r1 + 2

   para i de r1 ate r2 passo 1 faca
      escreval (respostas[i])
   fimpara

   escreva("QUAL A LETRA DE SUA RESPOSTA? ")
   leia (resposta)
fimprocedimento

procedimento pontuar(q: inteiro)
inicio
   se resposta = correta [q] então
      escreval("")
      escreval("[ Parabéns, você Acertou! ]")
      escreval("")
      pontos <- pontos + 50
      des <- des + 10
   senao resposta <> correta[q] então
      escreval("")
      escreval("[ tente novamente ! ]")
      escreval("digite sua resposta")
      leia(resposta)
      se resposta = correta [q] então
         escreval("")
         escreval("[ Parabéns, você Acertou! ]")
         escreval("")
         pontos <- pontos + 25
         des <- des + 5
      senao
         escreval("")
         escreval("[ Que pena, você Errou! ]")
         escreval("")
      fimse
   fimse
fimprocedimento

procedimento contar(k : inteiro)
inicio
   se resposta = correta[k] então
      acerto <- acerto + 1
   senao
      erro <- erro + 1
   fimse
fimprocedimento

inicio
   des <- 0
   erro <- 0
   pontos <- 0
   acerto <- 0

   escreval("==========================  QUIZ  ==========================")
   escreval("")
   escreval(" LEIA A QUESTÃO E RESPONDA COM A LETRA DA ALTERNATIVA CORRETA.")
   escreval("")
   escreval(" PARA SAIR ANTES DE FINALIZAR O JOGO, PRESSIONE A TECLA [ESC].")
   escreval("")
   escreval("==============================================================")

   // perguntas e respostas
   pergunta[1] <- "O que significa a sigla RAM?"
   respostas[1] <- "(A) M A R"
   respostas[2] <- "(B) M A Ran"
   respostas[3] <- "(C) M A Res"
   correta[1] <- "B"

   pergunta[2] <- "O que significa a sigla R8M?"
   respostas[4] <- "(A) M A R"
   respostas[5] <- "(B) M A Ran"
   respostas[6] <- "(C) M A Res"
   correta[2] <- "C"

   // game play
   perguntar(1,1)
   pontuar(1)
   contar(1)

   perguntar(2,4)
   pontuar(2)
   contar(2)

   //pontuação
   escreval("================ PONTUAÇÃO FINAL ================")
   escreval("")
   escreval("     Você conquistou ", pontos," pontos!  ")
   escreval(" Você teve ", acerto," acertos e ", erro," erros.")

   // criar procedimento do desempenho
   se (pontos = 100) então
      escreval(" Seu desempenho no quiz foi *Excelente*")
   senao
      se (pontos <= 99) e (pontos >= 75) então
         escreval(" Seu desempenho no quiz foi *Ótimo*")
      senao
         se (pontos <= 74) e (pontos >= 50) então
            escreval(" Seu desempenho no quiz foi *Bom*")
         senao
            se (pontos <= 49) e (pontos >= 25) então
               escreval(" Seu desempenho no quiz foi *Regular*")
            senao
               escreval(" Seu desempenho no quiz foi *Péssimo*")
            fimse
         fimse
      fimse
   fimse
   // fimprocedimento
   escreval("=================================================")
fimalgoritmo

 

 // criar procedimento do desempenho
   se (pontos = 100) então
      escreval(" Seu desempenho no quiz foi *Excelente*")
   senao
      se (pontos <= 99) e (pontos >= 75) então
         escreval(" Seu desempenho no quiz foi *Ótimo*")
      senao
         se (pontos <= 74) e (pontos >= 50) então
            escreval(" Seu desempenho no quiz foi *Bom*")
         senao
            se (pontos <= 49) e (pontos >= 25) então
               escreval(" Seu desempenho no quiz foi *Regular*")
            senao
               escreval(" Seu desempenho no quiz foi *Péssimo*")
            fimse
         fimse
      fimse
   fimse
   // fimprocedimento

 

  • Curtir 1
  • Membro VIP
Postado

@Deivid Bittencourt, basicamente você poderia colocar dentro de um procedimento aquilo que você quer que fique no procedimento. Exemplo:

 

procedimento exibirResultadoDesempenho()
inicio
   se (pontos = 100) então
      escreval(" Seu desempenho no quiz foi *Excelente*")
   senao
      se (pontos <= 99) e (pontos >= 75) então
         escreval(" Seu desempenho no quiz foi *Ótimo*")
      senao
         se (pontos <= 74) e (pontos >= 50) então
            escreval(" Seu desempenho no quiz foi *Bom*")
         senao
            se (pontos <= 49) e (pontos >= 25) então
               escreval(" Seu desempenho no quiz foi *Regular*")
            senao
               escreval(" Seu desempenho no quiz foi *Péssimo*")
            fimse
         fimse
      fimse
   fimse
fimProcedimento

 

Só chamar o procedimento quando necessário:

 

image.png

 

Como conceitualmente as variáveis precisam ser enviadas por parâmetro (em vez de utilizar as variáveis globais), só ajustar. Exemplo:

 

procedimento exibirResultadoDesempenho(p : inteiro)
inicio
   se (p = 100) então
      escreval(" Seu desempenho no quiz foi *Excelente*")
   senao
      se (p <= 99) e (p >= 75) então
         escreval(" Seu desempenho no quiz foi *Ótimo*")
      senao
         se (p <= 74) e (p >= 50) então
            escreval(" Seu desempenho no quiz foi *Bom*")
         senao
            se (p <= 49) e (p >= 25) então
               escreval(" Seu desempenho no quiz foi *Regular*")
            senao
               escreval(" Seu desempenho no quiz foi *Péssimo*")
            fimse
         fimse
      fimse
   fimse
fimProcedimento

 

Daí, só chamar:

 

exibirResultadoDesempenho(pontos)

 

Ou seja, o valor da variável global pontos será enviada para o procedimento através da variável local p.

 

 

 

ADENDO: é possível utilizar a mesma nomenclatura para variável do parâmetro. Exemplo:

 

procedimento exibirResultadoDesempenho(pontos : inteiro)
inicio
   se (pontos = 100) então
      escreval(" Seu desempenho no quiz foi *Excelente*")
   senao
      se (pontos <= 99) e (pontos >= 75) então
         escreval(" Seu desempenho no quiz foi *Ótimo*")
      senao
         se (pontos <= 74) e (pontos >= 50) então
            escreval(" Seu desempenho no quiz foi *Bom*")
         senao
            se (pontos <= 49) e (pontos >= 25) então
               escreval(" Seu desempenho no quiz foi *Regular*")
            senao
               escreval(" Seu desempenho no quiz foi *Péssimo*")
            fimse
         fimse
      fimse
   fimse
fimProcedimento

 

Ou seja, o valor da variável global pontos será enviada para o procedimento através da variável local pontos. É isso mesmo: serão duas variáveis distintas, só que ambas com o mesmo nome.

 

 

ADENDO 2: você está repetindo a mesma frase em casa se. Para treinar, deixe as estruturas de seleções apenas para verificar a parte final ("Excelente", "Ótimo", "Bom" etc.), e monte a frase final no fim. Algo como:

 

escreval(" Seu desempenho no Quiz foi *", resultado, "*")

 


ADENDO 3: dá para simplificar as expressões. Veja: se não é igual a 100 (por sinal, mude para >= 100), SEMPRE será menor ou igual a 99 (por sinal, seria melhor utilizar menor que 100), ou seja, seria uma tautologia. Algo assim:

 

   se (pontos >= 100) então
      escreval(" Seu desempenho no quiz foi *Excelente*")
   senao
      se (pontos >= 75) então
         escreval(" Seu desempenho no quiz foi *Ótimo*")
   .
   .
   .

 

O senao é a negação da expressão anterior, "se não é maior ou igual a 100, então é menor que 100"... inserir na nova expressão seria uma redundância desnecessária.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!