Ir ao conteúdo
  • Cadastre-se

VisualG Função escolha não está dando certo


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

Prezados, boa tarde!

 

Fiz um algoritmo com a função escolha e não deu certo. Segue abaixo o código e um print do valor esperado não retornado.

 

Algoritmo "Estação do ano"
Var
   estacao: caractere
Inicio
   escreval ("Estamos em qual estação do ano? ")
   leia (estacao)
   escolha estacao
   caso "verao"
         escreval ("Passe protetor solar!!!")
   caso "inverno"
      escreval ("Agasalhe-se bem!!!")
   caso "primavera"
      escreval ("Aprecie as flores!!!")
   caso "outono"
      escreval ("Vá ao shopping!!!")
   outrocaso
      escreval ("Estação inexistente!!!")
   fimescolha
fimalgoritmo

 

image.thumb.png.2aceecd75e0a564109fe9c8bd3993007.png

 

 

 

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

  • Membro VIP
  • Solução
2 horas atrás, Ricardo Régis disse:

Fiz um algoritmo com a função escolha e não deu certo. Segue abaixo o código e um print do valor esperado não retornado

 

@Ricardo Régis, insira as resposta em maiúsculo, por exemplo: "INVERNO".

 

ou

 

Tornar as respostas em maiúsculo resolve também:

   leia (estacao)
   estacao <- Maiusc(estacao)

No escolha/caso não precisa mexer.

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

  • Membro VIP
2 horas atrás, Luís Roberto C. da Silva disse:

No lugar de colocar uma string como resposta coloque um caractere ou inteiro.

 

@Luís Roberto C. da Silva, no Pascal, que é meio que a base para o VisuAlg, de fato só aceita char ("um caractere"), integer (inteiro) ou boolean (logico) lá no case/of (escolha/caso), ou seja, não aceita string ("cadeia de caractere"). Vale ressaltar que no Pascal uma string é meio que uma array de char.

 

Então, já no Visualg, não existe o tipo char. Lá usam-se o equivalente a string mesmo, que é o tipo caractere... Esse tipo funciona no escolha/caso do jeito que está no código. Provavelmente não está funcionando devido a um bug do VisuAlg, que só compara corretamente se o dado estiver todo em maiúsculo. Veja um exemplo extraído dum próprio site "oficial" do VisuAlg:

algoritmo "Times"
var time: caractere
inicio
escreva ("Entre com o nome de um time de futebol: ")
leia (time)
escolha time
caso "Flamengo", "Fluminense", "Vasco", "Botafogo"
   escreval ("É um time carioca.")
caso "São Paulo", "Palmeiras", "Santos", "Corínthians"
   escreval ("É um time paulista.")
outrocaso
   escreval ("É de outro estado.")
fimescolha
fimalgoritmo

Fonte: http://www.apoioinformatica.inf.br/produtos/item/13-comando-de-selecao-multipla

 

No VisuAlg 2.0 funciona normalmente, mas 3.0.7.0 dá esse bug... Testem aí. Só funciona se estiver tudo em maiúsculo.

 

RESUMINDO:

Funciona, mas o dado do tipo caractere ("string") a ser verificado precisa fica tudo em maiúsculo. Uma solução de contorno prática é utilizar o Maiusc(), como citado na minha postagem anterior.

 

 

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

  • 3 anos depois...
  • Membro VIP

Complementando um pouco:

 

Existem basicamente três versões: a 2.5, a 3.0.6.5 e a 3.0.7.0. A versão que seria a mais recomendada é a 3.0.6.5. Caso já estejam utilizando ela, sugeriria baixar novamente. (Fazer o backup da pasta original.)

 

Fontes para versão 3.0.6.5

https://sourceforge.net/projects/visualg30/files/VISUALG3_REV60.rar/download

http://visualg3.com.br/download/2090/

 

Fontes para versão 3.0.7.0

https://sourceforge.net/projects/visualg30/files/visualg3.0.7.rar/download

http://visualg3.com.br/download/2086/

 

Fonte para versão 2.5

https://dicasdeprogramacao.com.br/download/visualg-2-5.zip

 

 

Caso queiram teimar em continuar usando a versão 3.0.7.0:chicote:, teriam 3 formas para contornar:

 

1) digitando a resposta toda em maiúsculo;

2) transformando a resposta em maiúsculo;

3) comparando com o valor maiúsculo.

 

Exemplo para o 1:

image.png

 

 

 

Exemplo para o 2:

Em 23/03/2019 às 20:28, Simon Viegas disse:
   leia (estacao)
   estacao <- Maiusc(estacao)

 

ou no caso específico para os times:

   escreva ("Entre com o nome de um time de futebol: ")
   leia(time)
   time <- Maiusc(time)

 

Ou seja: a própria variável passariaa ficar com o correspondente todo em maiúsculo. Se digitasse "BoTaFogo", ficaria "BOTAFOGO".

 

 

 

Exemplo para o 3:

escolha Maiusc(time)
caso "Flamengo", "Fluminense", "Vasco", "Botafogo"
   escreval ("É um time carioca.")
caso "São Paulo", "Palmeiras", "Santos", "Corínthians"
   escreval ("É um time paulista.")
outroCaso
   escreval ("É de outro estado.")
fimEscolha

 

Dessa forma, o conteúdo da variável fica intacto. Permanecendo da mesma forma que foi digitado.

 

 

***


Caso opção tem as suas vantagens e desvantagens..

 

 

 

Adendo 1: lembrando que se utilizar a 3.0.6.5 não precisaria nada disso.

Adendo 2: por que ocorre esse erro na versão 3.0.7.0? Então, entendo que ao comparar os caracteres, o VisualG meio pega uma cópia em maiúsculo tanto da variável que está no escolha, tanto as opções que estão em cada caso. Daí, por algum motivo, essa versão 3.0.7.0 não está fazendo isso para a variável, ou por erro, ou porque esqueceram 😄. Como maiúsculo e minúsculo são tecnicamente coisas diferentes (as letras possuem código diferentes), as palavras não combinam.

Adendo 3: para ser mais didático, entendo que o VisualG não deveria fazer nada disso de comparar em maiúsculo, ou seja, só deveria ser igual quando fosse digitado exatamente igual. Seria mais natural e prático entender que "Botafogo" é realmente diferente de "botafogo" ou "BOTAFOGO".

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!