Ir ao conteúdo
  • Cadastre-se
KillerSkull_Mk

VisualG VisualG acusando erro bugado

Recommended Posts

  Estou com um código impecável e o visualG diz ter erro de não ter encontrado a palavra reservada "então" do condicional SE.

  A ideia é completar um exercício na qual preciso de 80 entradas de dados e comparar quantos destes estão entre 150 e 10.

C Ó D I G O:

Algoritmo ">=10 e <=150"
// Disciplina  :  [Linguagem e Lógica de Programação] 
// Professor   : Antonio Carlos Nicolodi 
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 05/04/2018
Var
// Seção de Declarações das variáveis 
x,q:inteiro
numeros:vetor[1..80] de inteiro
Inicio
// Seção de Comandos, procedimento, funções, operadores, etc... 
para x de 1 ate 80 faca
   escreval("escreva o º",x," número")
   leia(numeros[x])
   se (numero[x]>=10) e (numeros[x]<=150) então
      q<-q+1
   fimse
fimpara
escreval(q,"estão entre 150 e 10")
Fimalgoritmo

A linha com erro seria a linha 15 " se (numeros[x]>=10)  e  (numeros{x}<=150) então" o visualg acusa de não encontrar o "então " sendo que ele esta na linha :mad::atirador: 

  Não é a primeira vez que isso acontece outra vez aconteceu o mesmo e eu coloquei a palavra reservada em maiúsculo e foi mas desta vez não esta indo de jeito nenhum já tentei varias coisas mas não vai eu já estou enloquecendo com  esse bug pois eu confiro o manual do visualg e da linguagem portugol e a sintaxe esta correta.Me ajudem a entender definitivamente a natureza disso pois eu to quase desistindo do visualg já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @KillerSkull_Mk.

 

2 horas atrás, KillerSkull_Mk disse:

A linha com erro seria a linha 15 " se (numeros[x]>=10)  e  (numeros{x}<=150) então" o visualg acusa de não encontrar o "então " sendo que ele esta na linha :mad::atirador:

 

Primeiramente vamos analisar o contexto. Apenas peguei o seu código e executei, ao inserir um valor deu erro:

 

tela_visualg.jpg

 

No caso, o "compilador/executador" do Visualg não é muito eficiente no quesito de "informar o erro encontrado"... mas aos poucos vamos se acostumando com ele (ou tentamos). Veja, ele diz que "Esperava encontrar então", mas não diz em que coluna que ele esperava encontrar... ou seja, aponta apenas a linha onde supostamente está o erro. A primeira a coisa a analisar, é ir direto no tal "então". Já é sabido que o Visualg não reconhece o "então" (com ~ no "a")... Por que não aceita? não sei! Mas sei que tem pelo menos duas opções que aceita:

- usar o então (sem o ~)
- usar ENTÃO (ou então - tudo em maiusculo) //eu particularmente uso ENTÃO

//obs.: se um texto não tiver na tag CODE, o corretor automático aqui do Fórum pode trocar os "então" por "então"

 

Pronto, trocando por ENTÃO, continua dando o mesmo erro? e agora?

Resposta: reanalisa a linha com mais cuidado... verás que você está utilizado numero, em vez de numeros (com o "s" no final). Por que deu esse erro nada a ver, em vez dizer algo como "A variável numero não foi encontrada"? Não sei também!!! Como você mesmo sugere: deve ser bug!

 

RESUMINDO:

Use ENTÃO em vez de então;

Use numeros[] em vez de numero[].

 

 

 

No aguardo.

 

 

No aguardo.

 

adicionado 7 minutos depois

ADENDO:

Para facilitar os testes, é possível utilizar o comando ALEATORIO. Acho bastante útil! Ele simula um usuário digitando valores aleatórios toda vez que encontra uma leia() no caminho. É possível definir a faixa de números, no exemplo abaixo utilizei entre 0 e 200. Veja:

algoritmo ">=10 e <=150"
// Disciplina  :  [Linguagem e Lógica de Programação]
// Professor   : Antonio Carlos Nicolodi
// Descrição   : Aqui você descreve o que o programa faz! (função)
// Autor(a)    : Nome do(a) aluno(a)
// Data atual  : 05/04/2018
var
   x,q:inteiro
   numeros:vetor[1..80] de inteiro
inicio
ALEATORIO 0,200 //como serve para "autodigitar" números nos leia().
para x de 1 ate 80 faca
   escreval("Escreva o",x,"º número")
   leia(numeros[x])
   se (numeros[x]>=10) e (numeros[x]<=150) ENTÃO
      q<-q+1
   fimse
fimPara
ALEATORIO OFF
escreval(q," números estão entre 150 e 10")
fimAlgoritmo

Alguns outra sugestões implementadas:

- Iniciar o texto na tela com letra maiúscula; ("Escreva o..." em vez de "escreva...");

- Colocar o "º" depois do número, você colocou antes;

- Um espaço após o valor do resultado final, pois estava colado;

etc

 

No aguardo.

Editado por Simon Viegas
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

C O M E N T Á R I O :

:D   Estou um pouco envergonhado  por agora ver que era uma letra que escapa do nome da variável kk.Muito obrigado  @Simon Viegas

  Tive a oportunidade também de conhecer a bugada natureza do Visualg e como analisar melhor erros.

D U V I D A S  

1-  Eu queria saber mais sobre este comando  ALEATORIO queria saber em relativo ao escopo do comando, ele ai esta no inicio e no final da aria Inicio.Mas precisamente como funciona o escopo dele ?

 ALEATORIO 0,200

//Bloco de entrada de dados preenchidos 

ALEATORIO OFF

2-Seria isso?

3- Se for assim se como ele comportaria com vários leias dentro e fora deste meio ai entre o inicio do aleatorio e a sua desativação?

4-Quanto a recomendação de usar maiúsculo para os comandos vale para todos ?

  

Editado por KillerSkull_Mk
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 horas atrás, KillerSkull_Mk disse:

C O M E N T Á R I O :

:D   Estou um pouco envergonhado  por agora ver que era uma letra que escapa do nome da variável kk.Muito obrigado  @Simon Viegas

Não tem porque ter vergonha, no caso, "qualquer" outro compilador já identificaria... ou seja, é um bug do Visualg mesmo.

 

 

 

6 horas atrás, KillerSkull_Mk disse:

D U V I D A S  

1-  Eu queria saber mais sobre este comando  ALEATORIO queria saber em relativo ao escopo do comando, ele ai esta no inicio e no final da aria Inicio.Mas precisamente como funciona o escopo dele ?

 ALEATORIO 0,200

//Bloco de entrada de dados preenchidos 

ALEATORIO OFF

2-Seria isso?

Sim... seria isso. É uma estrutura que basicamente simula um usuário preenchendo os leia().

adadasd d

 

 

6 horas atrás, KillerSkull_Mk disse:

3- Se for assim se como ele comportaria com vários leias dentro e fora deste meio ai entre o inicio do aleatorio e a sua desativação?

Pesquise sobre o comando. Faça testes.

 

 

 

6 horas atrás, KillerSkull_Mk disse:

4-Quanto a recomendação de usar maiúsculo para os comandos vale para todos ?

 

O Visualg não é Case-sensitive, mas uso e tento estimular o uso de um único padrão... além do mais, ao "iniciar com maiúsculo", a exibição do código fica diferente aqui no Fórum, ou seja, mais um motivo para usar "tudo minúsculo".

 

Não existe uma regra fixa... vai adequando a medida que vai experimentando... eu particularmente tb gosto de iniciar a segunda palavra com maiúsculo.. fica mais fácil de ler.

 

As CONSTANTES tb gosto de deixar toda em maiúsculo... etc

  • 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

×