Ir ao conteúdo
  • Cadastre-se

VisualG Procedimentos no VisualG... Mensagem de sintaxe incorreta


Ir à solução Resolvido por JoãoPe230,

Posts recomendados

Var
// Seção de Declarações das variáveis 
  categoria: caractere
   tipoc: caractere
   diarias: inteiro
   vlr_diaria: real
   vlr_total: real
   desconto: real

Inicio

// Seção de Comandos, procedimento, funções, operadores, etc... 

   escreval("Escolha a categoria do veículo (1, 2 ou 3): ")
   leia(categoria)
   escreval("Digite a qtd de diárias: ")
   leia(diarias)

   se categoria = "1" então
      vlr_diaria <- 299.99
      escreval("Categoria: Popular")
   senao se categoria = "2" então
      vlr_diaria <- 399.99
      escreval("Categoria: Hatch ou Sedan Intermediário")
   senao se categoria = "3" então
      vlr_diaria <- 499.99
      escreval("Categoria: SUV ou Sedan Luxo")

   escreval("Tipo Categoria: ", tipoc)
   escreval("Qtd de diárias: ", diarias)
   escreval("Vlr da diária: R$ ", vlr_diaria)

   se diarias <= 6 então
      desconto <- 0
   senão se diarias <= 14 então
      desconto <- 0.05
   senão se diarias <= 30 então
      desconto <- 0.1

   vlr_total <- diarias * vlr_diaria * (1 - desconto)
   escreval("Valor total do aluguel: R$ ", vlr_total)

Fimalgoritmo

 

image.thumb.png.ac70837a19a8677a9cbcab0bae2ebbfd.png

image.png

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

  • Solução

 

Algoritmo "Sem nome"
Var
   categoria: caractere
   tipoc: caractere
   diarias: inteiro
   vlr_diaria: real
   vlr_total: real
   desconto: real
Inicio
   escreva("Escolha a categoria do veículo (1, 2 ou 3): ")
   leia(categoria)
   escreva("Digite a qtd de diárias: ")
   leia(diarias)

   se categoria = "1" então
      vlr_diaria <- 299.99
      escreval("Categoria: Popular")
   fimse
   se categoria = "2" então
      vlr_diaria <- 399.99
      escreval("Categoria: Hatch ou Sedan Intermediário")
   fimse
   se categoria = "3" então
      vlr_diaria <- 499.99
      escreval("Categoria: SUV ou Sedan Luxo")
   fimse

   escreval("Tipo Categoria: ", tipoc)
   escreval("Qtd de diárias: ", diarias)
   escreval("Vlr da diária: R$ ", vlr_diaria)

   se diarias <= 6 então
      desconto <- 0
   fimse
   se (diarias <= 14) e (diarias >= 7) então
      desconto <- 0.05
   fimse
   se (diarias >=15) então
      desconto <- 0.1
   fimse

   vlr_total <- diarias * vlr_diaria * (1 - desconto)
   escreval("Valor total do aluguel: R$ ", vlr_total)

Fimalgoritmo

Não mudei muita coisa, só apaguei os "Senao Se" e iniciei outro comando "Se" e finalizei todos com "FimSe"
Além disso, mudei levemente a parte de baixo para funcionar melhor e novamente tirando os "Senao Se" e iniciando novos "Se"
Aqui funcionou, mas não sei se é isso que você quer (sou iniciante) 

 

Também daria pra você mudar a primeira parte por "Escolha (categoria)
         Caso 1

vlr_diaria <- 299.99
Escreval (etc etc)
        Caso 2
vlr_diaria <- 399.99
Escreval (etc etc)

e por ai vai 

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

Você errou na sintaxe do se..então

38 minutos atrás, dmoret disse:
   se categoria = "1" então
      vlr_diaria <- 299.99
      escreval("Categoria: Popular")
   senao se categoria = "2" então
      vlr_diaria <- 399.99
      escreval("Categoria: Hatch ou Sedan Intermediário")
   senao se categoria = "3" então
      vlr_diaria <- 499.99
      escreval("Categoria: SUV ou Sedan Luxo")

No final teria que ter um fimSe, e eu recomendo não usar acentos nas palavras no visualG. Ele tem a tendência de buggar até com as próprias palavras reservadas.

 

Outra melhoria seria usar a estrutura de decisão escolha ao invés do se...então.

Exemplo:

algoritmo "_"

Var
   // Seção de Declarações das variáveis
   categoria: caractere
   tipoc: caractere
   diarias: inteiro
   vlr_diaria: real
   vlr_total: real
   desconto: real

Inicio

   // Seção de Comandos, procedimento, funções, operadores, etc...

   escreval("Escolha a categoria do veículo (1, 2 ou 3): ")
   leia(categoria)
   escreval("Digite a qtd de diárias: ")
   leia(diarias)

   escolha categoria
   caso "1"
      vlr_diaria <- 299.99
      escreval("Categoria: Popular")
   caso "2"
      vlr_diaria <- 399.99
      escreval("Categoria: Hatch ou Sedan Intermediário")
   caso "3"
      vlr_diaria <- 499.99
      escreval("Categoria: SUV ou Sedan Luxo")
   fimEscolha


   escreval("Tipo Categoria: ", tipoc)
   escreval("Qtd de diárias: ", diarias)
   escreval("Vlr da diária: R$ ", vlr_diaria)

   se diarias <= 6 então
      desconto <- 0
   senao se diarias <= 14 então
      desconto <- 0.05
   senao se diarias <= 30 então
      desconto <- 0.1
   fimSe

   vlr_total <- diarias * vlr_diaria * (1 - desconto)
   escreval("Valor total do aluguel: R$ ", vlr_total)
Fimalgoritmo

 

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

3 minutos atrás, kgin disse:

Você errou na sintaxe do se..então

No final teria que ter um fimSe, e eu recomendo não usar acentos nas palavras no visualG. Ele tem a tendência de buggar até com as próprias palavras reservadas.

 

Outra melhoria seria usar a estrutura de decisão escolha ao invés do se...então.

Exemplo:

algoritmo "_"

Var
   // Seção de Declarações das variáveis
   categoria: caractere
   tipoc: caractere
   diarias: inteiro
   vlr_diaria: real
   vlr_total: real
   desconto: real

Inicio

   // Seção de Comandos, procedimento, funções, operadores, etc...

   escreval("Escolha a categoria do veículo (1, 2 ou 3): ")
   leia(categoria)
   escreval("Digite a qtd de diárias: ")
   leia(diarias)

   escolha categoria
   caso "1"
      vlr_diaria <- 299.99
      escreval("Categoria: Popular")
   caso "2"
      vlr_diaria <- 399.99
      escreval("Categoria: Hatch ou Sedan Intermediário")
   caso "3"
      vlr_diaria <- 499.99
      escreval("Categoria: SUV ou Sedan Luxo")
   fimEscolha


   escreval("Tipo Categoria: ", tipoc)
   escreval("Qtd de diárias: ", diarias)
   escreval("Vlr da diária: R$ ", vlr_diaria)

   se diarias <= 6 então
      desconto <- 0
   senao se diarias <= 14 então
      desconto <- 0.05
   senao se diarias <= 30 então
      desconto <- 0.1
   fimSe

   vlr_total <- diarias * vlr_diaria * (1 - desconto)
   escreval("Valor total do aluguel: R$ ", vlr_total)
Fimalgoritmo

 

Aqui "Escolha" é melhor mesmo, funciona com "Se", mas fica mais otimazado e correto com "Escolha", tudo que for com algarismo e não tiver ">, < e etc" "escolha" é melhor

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

  • Membro VIP

@dmoret, entre usar se, ou se/senao ou escolha, conceitualmente falando, você meio que deve utilizar aquilo que está sendo estudado no momento, ou seja, se foi um exercício de se/senão, utilize ele mesmo! Não faria sentido utilizar outra coisa, mesmo que eventualmente fique até melhor... Se já estudou os 3 e está em aberto, na ordem do "mais adequado para o menos adequado", seria: escolha, depois se/senao e em último caso um conjunto de se

 

A ideia seria justamente essa... entende-se bem o se/senão.. Daí, quando estudar escolha, vai entender melhor quando utilizar um ou outro... É como uma evolução.. 

 

 

Sobre o erro apresentado, existem basicamente dois probleminhas:

1 hora atrás, dmoret disse:
senao se categoria = "2" então
  1. todo se tem o seu respectivo fimse, daí faltou usá-los. O VisualG leu todos linhas até chegar no fim do código e não encontrou... e acusa o erro.
  2. devido a uma limitação técnica, o se e senao não podem ficar na mesma linha aqui no VisualG (na maioria das outras linguagem principais podem... Inclusive no Pascal, pai do VisualG). Mesmo que venha a funciona e aparentar está funcionando, estará com a sintaxe errada!!! (Tem que colocar em linhas separadas.) 

 

Dica 1: ao iniciar um se, já insere o respectivo fimSe abaixo. Depois preenche o conteúdo. Isso ajuda a não esquecer ou se perder quando o código começar a ficar grande.

 

Exemplo:

 

Implementa a base:

   se categoria = "1" então

   fimSe

 

Observe que já deixa uma linha em branco no meio...

 

Depois vai preenchendo:

   se categoria = "1" então
      vlr_diaria <- 299.99
      escreval("Categoria: Popular")
   fimSe

 

Insere o senao.. Depois o conteúdo do senao, que nesse caso eventualmente é outro se:

   se categoria = "1" então
      vlr_diaria <- 299.99
      escreval("Categoria: Popular")
   senao
      se categoria = "2" então

      fimSe
   fimSe
    

 

Preenche o novo se.

se categoria = "1" então
   vlr_diaria <- 299.99
   escreval("Categoria: Popular")
senao
   se categoria = "2" então
      vlr_diaria <- 399.99
      escreval("Categoria: Hatch ou Sedan Intermediário")
   fimSe
fimSe

 

Por aí vai.

 

 

Dica 2: quando tiver implementando, pressione Ctrl+G para indentar o código. Se tiver faltando um fimse, o código ficará todo desalinhado.   

 

 

 

 

Corrigindo ficaria algo assim:

var
   categoria: caractere
   tipoc: caractere
   diarias: inteiro
   vlr_diaria: real
   vlr_total: real
   desconto: real
inicio
   escreval("Escolha a categoria do veículo (1, 2 ou 3): ")
   leia(categoria)
   escreval("Digite a qtd de diárias: ")
   leia(diarias)

   se categoria = "1" então
      vlr_diaria <- 299.99
      escreval("Categoria: Popular")
   senao
      se categoria = "2" então
         vlr_diaria <- 399.99
         escreval("Categoria: Hatch ou Sedan Intermediário")
      senao
         se categoria = "3" então
            vlr_diaria <- 499.99
            escreval("Categoria: SUV ou Sedan Luxo")
         fimse
      fimse
   fimse

   escreval("Tipo Categoria: ", tipoc)
   escreval("Qtd de diárias: ", diarias)
   escreval("Vlr da diária: R$ ", vlr_diaria)

   se diarias <= 6 então
      desconto <- 0
   senao
      se diarias <= 14 então
         desconto <- 0.05
      senao
         se diarias <= 30 então
            desconto <- 0.1
         fimse
      fimse
   fimse

   vlr_total <- diarias * vlr_diaria * (1 - desconto)
   escreval("Valor total do aluguel: R$ ", vlr_total)
fimalgoritmo

 

 

Adendo: provavelmente dentro lá de cada se, seria para definir o valor de tipoc, em vez já escrever a resposta... O que deve fazer ou não vai depender do enunciado...

 

Pode ser que seria algo como:

   se categoria = "1" então
      vlr_diaria <- 299.99
      tipoc <- "Popular"
   senao
      se categoria = "2" então
         vlr_diaria <- 399.99
         tipoc <- "Hatch ou Sedan Intermediário"
      senao
         se categoria = "3" então
            vlr_diaria <- 499.99
            tipoc <- "SUV ou Sedan Luxo"
         fimse
      fimse
   fimse

Adendo 2:

1 hora atrás, JoãoPe230 disse:

Aqui "Escolha" é melhor mesmo, funciona com "Se", mas fica mais otimazado e correto com "Escolha", tudo que for com algarismo e não tiver ">, < e etc" "escolha" é melhor

 

 

O escolha funciona como um se/senao, no caso eles são específicos para condições mutuamente excludentes, ou seja, aqueles casos em que "se for uma coisa, não pode ser outra"... A ideia é que neles, se uma condição for verdadeira, o programa já pula para o fim da estrutura... não perdendo tempo verificando se outra coisa. Já no caso de um conjunto de se, independente da categoria escolhida, sempre vai verificar todas as condições (opção menos adequada para o contexto).

  • Curtir 3
  • Obrigado 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!