Ir ao conteúdo
  • Cadastre-se
Alfredo Braz

Sobre visualg: variás ações e respostas

Recommended Posts

Boa noite, estou estudando um pouco do visualg e me veio uma duvida, teria como eu fazer um código onde existem duas alternativas de resposta para uma pergunta e dependendo da resposta o código seguiria um caminho diferente?

 

No código abaixo tem um exemplo do que eu queria mais ou menos, se caso o usuário responda a pergunta com "exatas" então viriam perguntas de matérias exatas, caso ele respondesse "humanas" então viriam perguntas sobre matérias de humanas, no caso o código teria que seguir a função "escolha" ou "se"?

 

Var
// Seção de Declarações das variáveis 
exatas,humanas:caractere

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 
escreval ("Seja bem vindo!")
escreval ("Escolha uma matéria.")
leia (exatas,humanas)
escolha exatas,humanas
caso "exatas"
     escreval ("Quanto é 5x7?")
outrocaso
     escreval ("Quando o brasil foi descoberto?")
fimescolha



Fimalgoritmo

Se puderem me ajudar na questão da execução do código eu agradeceria, pois não faço a mínima ideia de como continuar.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Alfredo Braz Olá!

 

Basicamente podes fazer tanto com escolha ou SE.

O que está errado no seu código é ter duas variáveis, tentar lê-las juntas e tentar testar juntas.

Tente assim:

Var
// Seção de Declarações das variáveis 
opcao:inteiro

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 
escreval ("Seja bem vindo!")
escreval ("Escolha uma matéria.")
escreval ("1 - para Exatas  2- para humanas .")  
leia (opcao)
escolha opcao
caso 1 faca
     escreval ("Quanto é 5x7?")
caso 2 faca
     escreval ("Quando o brasil foi descoberto?")
fimescolha



Fimalgoritmo

Pode fazer com a opção seja em caractere:

Var
// Seção de Declarações das variáveis 
opcao:caractere

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 
escreval ("Seja bem vindo!")
escreval ("Escolha uma matéria.")
escreval ("Aperte a letra E para Exatas ou H para humanas .")  
leia (opcao)
escolha opcao
caso "e" faca
     escreval ("Quanto é 5x7?")
caso "h" faca
     escreval ("Quando o brasil foi descoberto?")
fimescolha



Fimalgoritmo

Ainda podes usar o SE se preferir:

Var
// Seção de Declarações das variáveis 
opcao:caractere

Inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 
escreval ("Seja bem vindo!")
escreval ("Escolha uma matéria.")
escreval ("e - para Exatas  h - para humanas .")  
leia (opcao)
  
se (opcao == "e") então
  escreval ("Quanto é 5x7?")
  senao se (opcao == "h") então
    escreval ("Quando o brasil foi descoberto?")
  fimse
fimse  
  
Fimalgoritmo

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Alfredo Braz    sim, tem como ter duas resposta para uma pergunta, e você pode

usar o comando escolha.    então fiz uma pequena modificação no seu algoritmo,

se escolher  um ele segue por um caminho, e se escolher dois ele vai por outro caminho.                              veja como ficou o algoritmo

Algoritmo "acao e resposta"
Var
exatas,humanas:caractere
materia:inteiro
Inicio
escreval ("Seja bem vindo!")
escreval ("Escolha uma matéria. ")
escreval("Digite 1 - para humanas")
escreval("Digite 2 - para exatas")
leia (materia)
escolha materia
caso  2
     escreval ("Quanto é 5x7?")
caso  1
     escreval ("Quando o brasil foi descoberto?")
outrocaso
     escreva("opção invalida")
fimescolha
Fimalgoritmo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, devair1010 disse:

mas o comando escolha só funciona com números

Esta afirmação não está correta!

É possível usar o escolha usando caractere. 

http://www.dicasdeprogramacao.com.br/estrutura-de-selecao-multipla-escolha-caso/

 

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Alfredo Braz        para o programa aceitar a resposta, você precisa colocar os

códigos do que você quer fazer, ali no caso 1 ou no caso 2. por exemplo se esco-

lher humanas que como coloquei é caso 1, então ele vai fazer o que estiver na
linha abaixo do caso 1, ali você já colocou para ele escrever na tela a frase

Quando O Brasil Foi Descoberto? então você colocaria mais alguma coisa para

que o programa armazene a informação por exemplo.:

leia(data)

para isso precisaria de mais uma variável, no caso, data do tipo inteiro.  Aí então

o usuário digitaria 1500 informando a data;  E  depois  desta  questão você pode

colocar mais questões ou qualquer outro comando que você queira que o progra-

ma faça, e enquanto tiver comandos para ele fazer ele vai fazendo e aí depois

que ele fizer todos esses comandos, então aí sim, ele finaliza a execução do pro-

grama.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Alfredo Braz é mais ou menos como o colega falou ali em cima, mas não com variável inteiro.

basicamente você precisa ter uma variável do tipo caractere para receber as respostas e outra para selecionar a correta.

Por exemplo:

 

var
  opcao, alternativa, certo,errado:caractere
inicio
// Seção de Comandos 

escreval ("Seja bem vindo!")
escreval ("Escolha uma matéria.")
escreval ("Aperte a letra E para Exatas ou H para humanas .")
leia (opcao)

certo <- "Resposta certa!"
errado <- "Resposta errada :("

escolha opcao
caso "e" faca
     escreval ("Quanto é 5x7?")
     escreval ("a)35")
     escreval ("b)12")
     escreval ("c)49")
     escreva  ("Resposta: ")
     leia(alternativa)
     se (alternativa = "a") então
        escreval(certo)
     senao se (alternativa = "b") então
        escreval(errado)
     senao
        escreval(errado)
     fimse
    interrompa
caso "h" faca
     escreval ("Quando o brasil foi descoberto?")
     escreval ("a)1235")
     escreval ("b)1450")
     escreval ("c)1500")
     escreva  ("Resposta: ")
     leia(alternativa)
     se (alternativa = "a") então
        escreval(errado)
     senao se (alternativa = "b") então
        escreval(errado)
     senao
        escreval(certo)
     fimse
    interrompa
fimescolha

Mais ou menos isso.

O que fiz foi:

Criar 3 variáveis alternativa, certo e errado.

O certo e errado recebem um valor string ou seja em texto.

A alternativa fica para testar qual alternativa você escolheu e sua resposta.

Veja que faço um teste de alternativa.. perceba que tem 3 alternativas a, b e c. 

Usa-se a condicional SE-senão para testar as alternativas.

A lógica é esta.

Só que fica muito inviável fazer um questionário assim... pois teria muitas opções de caso.

O ideal seria usar vetores, para armazenar as perguntas e respostas... e aí depois iterar este vetor. ou seja percorre-lo e separar as perguntas e etc... mas esta linguagem visualG é extremamente limitada. por isso use só para aprender a lógica.. depois disso procure estudar uma linguagem mais robusta. como java, c, php.. e etc...

 

PS: SE o caso não funcionar com caractere(creio que seja por causa da versão do visualG) Altere a variável opcao para o tipo inteiro e aí substitua  o "H" e o "E"  por números 1 e 2.. e por ai vai.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×