Ir ao conteúdo

VisualG "Esperava um argumento do tipo lógico" função escolha no VisualG


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Olá pessoal, eu gostaria de entender o porque de acontecer o seguinte erro ao utilizar a função escolha no VisualG, por acaso não se pode utilizar o ESCOLHA assim?

 

algoritmo "natacao"

//2) Faça um procedimento que recebe a idade de um nadador por parâmetro e
//retorna, também por parâmetro, a categoria desse nadador de acordo com a
//tabela abaixo:  

// Idade              Categoria
// 5 a 7  anos        Infantil A
// 8 a 10 anos        Infantil B
// 11-13  anos        Juvenil A
// 14-17  anos        Juvenil B
// Maiores de 18 anos Adulto

funcao catfuncao(idade:inteiro; categoria:caracter):caracter

var
cat:caracter

inicio

      escolha idade
         caso idade>=5 e idade<=7
            cat<-"Infantil A"
         caso idade>=8 e idade<=10
            cat<-"Infantil B"
         caso idade>=11 e idade<=13
            cat<-"Juvenil A"
         caso idade>=14 e idade<=17
            cat<-"Juvenil B"
         caso idade>=18
            cat<-"Adulto"
      fimescolha
      
      retorne cat

fimfuncao

var
idade:inteiro
categoria:caracter
inicio

      escreval("Digite a idade do nadador: ")
      leia(idade)
      
      categoria <- catfuncao(idade,categoria)
      
      escreval("A categoria é ",categoria)
      
fimalgoritmo

 

print escolha.JPG

  • Obrigado 1
  • Solução
Postado

@qwerty78987    os compiladores foram criados do jeito de cada um quem os criou , e sendo assim cada hum tem uma ideia do gostaria que ele fizesse ,  e esse visualG  é uma replica do pascal  substituindo os símbolos de adição de valores às variáveis ,  pois no Pascal usa se

  variaveL  :=   valor

para isso e no visualG usa se

   variaveL  <-  valor 

,  e outras coisas são típicas de cada um , e assim n visualG o comando escolha funciona com valores fixos , e podem ser tanto números inteiro ou caracteres , desde que colocados entre aspas Duplas ,  e creio que você saiba como consertar seu código , pois você nem pediu ajuda para isso , mas em todo caso aqui está hum modo que seu código com algumas modificações poderia ser  :

algoritmo "natacao"

//2) Faça um procedimento que recebe a idade de um nadador por parâmetro e
//retorna, também por parâmetro, a categoria desse nadador de acordo com a
//tabela abaixo:

// Idade              Categoria
// 5 a 7  anos        Infantil A
// 8 a 10 anos        Infantil B
// 11-13  anos        Juvenil A
// 14-17  anos        Juvenil B
// Maiores de 18 anos Adulto

funcao catfuncao(idade:inteiro; categoria:caracter):caracter
var
cat : caracter
inicio
      se idade > 4 entao
          escolha idade
             caso 5 ,6 ,7
                cat <- "Infantil A"
             caso 8, 9, 10
                cat <- "Infantil B"
             caso 11, 12, 13
                cat <-  "Juvenil A"
             caso 14, 15, 16, 17
                cat <-  "Juvenil B"
             outrocaso
                cat <-    "Adulto"
          fimescolha
      senao
          cat <- "Fora Da Faixa !"
      fimse
      retorne cat
fimfuncao
var
idade     : inteiro
categoria : caracter
inicio
      escreval("Digite a idade do nadador: ")
      leia(idade)
      categoria <- catfuncao(idade,categoria)
      escreval("A categoria é ",categoria)
fimalgoritmo

 

  • Obrigado 1
  • Membro VIP
Postado

Sobre:

Em 07/11/2020 às 13:15, qwerty78987 disse:


funcao catfuncao(idade:inteiro; categoria:caracter):caracter

 

@qwerty78987,  para que passou categoria por parâmetro? Para corrigir, só retirar (e chamar corretamente a função lá na programa principal). Ex.:

 

funcao catFuncao (idade: inteiro): caracter

 

Obs.: o código do @devair1010 também está com o mesmo "problema".

 

 

 

Sobre:

Em 07/11/2020 às 21:04, devair1010 disse:

[...] no Pascal usa se



  variaveL  :=   valor
data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

para isso e no visualG usa se



   variaveL  <-  valor 
data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

,  e outras coisas são típicas de cada um , e

 

Então, no VisualG funciona as duas formas... tanto faz. Eu particularmente prefiro "<-". Vai do gosto.  Apenas sugiro não utilizar as duas formas num mesmo código... escolhe um ou outro.

 

 

 

Sobre:

Em 07/11/2020 às 21:04, devair1010 disse:

n visualG o comando escolha funciona com valores fixos , e podem ser tanto números inteiro ou caracteres

 

Só complementando: no caso, é que os casos precisam ser valores (não necessariamente fixos, pode utilizar variáveis ou constantes, por exemplo)... dos quais serão comparados com o valor que está na variável definida lá no escolha. Veja o exemplo inicial:

 

Em 07/11/2020 às 13:15, qwerty78987 disse:

escolha idade
   caso idade >= 5 e idade <= 7

 

Se fossemos traduzir, você estaria pedindo para o computador verificar se "o valor de idade é igual a (idade > 5 e idade <= 7). Daí, isso que está em parênteses é uma expressão lógica, ela resultaria em VERDADEIRO ou FALSE (true ou false).. logo, seria como pedir para verificar se idade estaria com desses valores.

 

 

Já por desta forma (correta):

 

Em 07/11/2020 às 21:04, devair1010 disse:

escolha idade
   caso 5, 6, 7

 

As "," funcionam como um "ou", ou seja: traduziria como se tivesse verificando "caso  idade = 5" ou "caso idade = 6" ou "caso idade = 7".

 

 

Por fim, sobre:

Em 07/11/2020 às 21:04, devair1010 disse:

números inteiro ou caracteres

 

Sobre os tipos que funcionam, vi que além desses 2, também funciona com o tipo LOGICO.

 

 

 

ADENDO

Eu tenho quase certeza que dá para inserir uma faixa, mas não consegui lembrar e nem achar... :(. No Pascal eu sei que é possível... mas deixa pra lá. Essa forma que @devair1010 sugeriu é mais que suficiente.

 

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