Ir ao conteúdo

Posts recomendados

Postado
Algoritmo "Lanchonete"
Const
   max = 10
tipo
   rCadPedido = registro
      nome :caractere
      pedido :caractere
   fimregistro

funcao finserir (pos_lista : inteiro) : inteiro
inicio
   pos_lista := pos_lista + 1
   se pos_Lista > max entao
      pos_lista := pos_lista - 1
      escreval ("Lista Cheia!!!")
   senao
      escreva ("Informe o Nome do Cliente: ")
      leia (Vpedido[pos_lista].Nome)
      escreva ("Informe o pedido: ")
      leia (Vpedido[pos_lista].pedido)
      escreval ("- Pedido Confirmado -")
   fimse
   retorne pos_lista
fimfuncao

procedimento plistar (pos_lista : inteiro)
var
   ind : inteiro
inicio
   se pos_lista = 0 entao
      escreval ("Lista de Pedidos Vazia!!!")
   senao
      para ind de 1 ate pos_lista faca
         escreval (ind,"º Cliente:", Vpedido[ind].Nome," Pedido: ",Vpedido[ind].pedido)
      fimpara
   fimse
fimprocedimento

procedimento pbuscar (pos_lista : inteiro)
var
   j,k, vb : inteiro
   dados : vetor[1..max] de rCadPedido
   achou : logico

procedimento pbuscar
var j : inteiro
inicio
   para ind de 1 ate pos_lista faca
      dados[ind].nome
      dados[ind].pedido
   fimpara
fimprocedimento

inicio
   pbuscar
   escreva("Entre com o valor de busca (ESC termina) :")
   leia(vb)
   ind <- 1

   repita
      se dados[ind].ind = vb entao
         achou <- verdadeiro
      senao
         ind <- ind+1
      fimse
   ate (achou=verdadeiro) ou (ind>10)

   se achou entao
      escreval("Achei o cliente ", nome , " na posição ", ind, " o pedido é : ", dados[ind].pedido)
   senao
      escreval("não achei.")
   fimse

Var
   pause, pfim, opcao , NumPed :inteiro
   ValTotal :real
   Vpedido :vetor [1..max] de rCadPedido
Inicio

   pfim := 0
   Repita
      limpatela
      escreval ("#########################")
      escreval ("*******LANCHONETE********")
      escreval ("# 1 - INCLUIR PEDIDO  #")
      escreval ("# 2 – ATENDER PEDIDO  #")
      escreval ("# 3 – LISTAR PEDIDO   #")
      escreval ("# 4 – PESQUISAR PEDIDO #")
      escreval ("# 0 - ENCERRAR     #")
      escreval ("#########################")
      escreval ("")
      escreva ("Informe a opção desejada: ")
      leia (opcao)
      escolha opcao
      caso 0
         escreval ("")
         escreval ("Finalizando...")
         escreval ("")
      caso 1
         pfim := finserir(pfim)
         escreval("**************************")
         escreval ("Aperte ENTER para voltar")
         escreval("**************************")
         leia(pause)
      caso 2

         leia(pause)
      caso 3
         plistar(pfim)
         leia(pause)
      caso 4
         pbuscar(pfim)
         leia(pause)

      outrocaso
         escreval ("")
         escreval ("Opção inválida!!!")
         escreval ("")
         leia(pause)
      fimescolha
   ate opcao = 0
Fimalgoritmo

Captura de tela 2022-05-31 144655.png

  • Curtir 2
  • Membro VIP
Postado
30 minutos atrás, Lauro Viana disse:
procedimento pbuscar (pos_lista : inteiro)
var
   j,k, vb : inteiro
   dados : vetor[1..max] de rCadPedido
   achou : logico

procedimento pbuscar
var j : inteiro
inicio
   para ind de 1 ate pos_lista faca
      dados[ind].nome
      dados[ind].pedido
   fimpara
fimprocedimento


Você declarou o procedimento pbuscar duas vezes.

E tem várias estrutura montadas. Uma sugestão seria refazer o programa aos poucos e ir testando cada parte... 

Basicamente só deve aparecer erros em uma parte do programa: que no caso é justamente a que está tentando fazer. Ficou parecendo que você tentou fazer um monte de coisa ao mesmo tempo e depois tentou testar... não dá certo.

 

  • Curtir 1
  • Membro VIP
Postado
6 minutos atrás, Lauro Viana disse:

corrigi o "pbuscar" mas o erro continua


Um dos erros no código que você postou é que você declarou procedimento pbuscar duas vezes.

Você precisa corrigir isso.. se corrigiu, não tem como o código está igual...

Posta o código corrigido. Que daí reanaliso e aponto o próximo problema.

Mas adianto que basicamente o VisualG não está encontrando as variáveis globais... ou seja, como existe um TIPO declarado, necessariamente precisa ter o VAR também. (É bug/característica que acabei de descobrir.)


Adendo: a cadeia de estrutura deve está correta... não adiantar ter um "var lá em abaixo", sendo que tem coisa "quebrada" antes.

  • Curtir 2
Postado

Algoritmo "Lanchonete"
// Disciplina   : [Linguagem e Lógica de Programação] 
// Professor   : Antonio Carlos Nicolodi 
Const
   max = 10

tipo
   rCadPedido = registro

      nome :caractere
      pedido :caractere

   fimregistro


funcao finserir (pos_lista : inteiro) : inteiro
inicio
   pos_lista := pos_lista + 1
   se pos_Lista > max entao
      pos_lista := pos_lista - 1
      escreval ("Lista Cheia!!!")
   senao
      escreva ("Informe o Nome do Cliente: ")
      leia (Vpedido[pos_lista].Nome)
      escreva ("Informe o pedido: ")
      leia (Vpedido[pos_lista].pedido)
      escreval ("- Pedido Confirmado -")
   fimse
   retorne pos_lista
fimfuncao

procedimento plistar (pos_lista : inteiro)
var
   ind : inteiro
inicio
   se pos_lista = 0 entao
      escreval ("Lista de Pedidos Vazia!!!")
   senao
      para ind de 1 ate pos_lista faca
         escreval (ind,"º Cliente:", Vpedido[ind].Nome," Pedido: ",Vpedido[ind].pedido)
      fimpara
   fimse
fimprocedimento

procedimento pbuscar (pos_lista : inteiro)

 var
   j,k, vb : inteiro
   dados : vetor[1..max] de  rCadPedido
   achou : logico


var j : inteiro
inicio

 para ind de 1 ate pos_lista faca
   dados[ind].nome
   dados[ind].pedido
fimpara
fimprocedimento

inicio
pbuscar

escreva("Entre com o valor de busca (ESC termina) :")

leia(vb)


ind <- 1
repita
   se dados[ind].ind = vb entao
      achou <- verdadeiro
   senao
      ind <- ind+1
   fimse
ate (achou=verdadeiro) ou (ind>10)

se achou entao
   escreval("Achei o cliente ", nome , " na posição ", ind, " o pedido é : ", dados[ind].pedido)
senao
   escreval("não achei.")
fimse


Var
   pause, pfim, opcao , NumPed :inteiro
   ValTotal :real
   Vpedido  :vetor [1..max] de  rCadPedido
Inicio


   pfim := 0
   Repita
      limpatela
      escreval ("#########################")
      escreval ("*******LANCHONETE********")
      escreval ("# 1 - INCLUIR PEDIDO    #")
      escreval ("# 2 – ATENDER PEDIDO    #")
      escreval ("# 3 – LISTAR PEDIDO     #")
      escreval ("# 4 – PESQUISAR PEDIDO  #")
      escreval ("# 0 - ENCERRAR          #")
      escreval ("#########################")
      escreval ("")
      escreva  ("Informe a opção desejada: ")
      leia (opcao)
      escolha opcao
      caso 0
         escreval ("")
         escreval ("Finalizando...")
         escreval ("")
      caso 1
         pfim := finserir(pfim)
         escreval("**************************")
         escreval ("Aperte ENTER para voltar")
         escreval("**************************")
         leia(pause)
      caso 2

         leia(pause)
      caso 3
         plistar(pfim)
         leia(pause)
      caso 4
         pbuscar(pfim)
         leia(pause)
         
      outrocaso
         escreval ("")
         escreval ("Opção inválida!!!")
         escreval ("")
         leia(pause)
      fimescolha
   ate opcao = 0

Fimalgoritmo

Captura de tela 2022-05-31 144655.png

  • Curtir 1
  • Membro VIP
Postado

@Lauro Viana, ao postar o código, antes clique no botão code:

image.png

 

Vai abrir um caixa, aí você cola o código dentro. E mude o tipo para C, C++.....


image.png



Sobre o erro:
A origem é a mesma: o VisualG não está encontrando o var das variáveis globais.

Pronto... então, como o erro está dando na linha 62, seria algo acima desse ponto ou na própria linha. (Quase sempre é isso.)

E olha só:


image.png

Tem 2 var dentro do procedimento. Esse é o problema? NÃO, isso não é um erro de sintaxe, mas seria melhor deixar com um var mesmo. Ajuste isso!


Agora veja onde está o problema:


image.png

Tá, isso é o "inicio" de quê? Tá perdido aí no código, percebe?... Daí, o VisualG está entendendo que é o início do programa principal... (já que estaria associado ao algoritmo lá de cima). E como já disse, não tem o var das variáveis globais (pois eventualmente está mais baixo).

Resumindo: esse trecho da linha 62 em diante (até a linha 82) está fora do lugar... ou incompleta. Não era para ter um inicio ali.
 

ADENDO:

2 minutos atrás, Simon Viegas disse:

Tem 2 var dentro do procedimento. Esse é o problema? NÃO, isso não é um erro de sintaxe, mas seria melhor deixar com um var mesmo. Ajuste isso!

 

Agora que vi. Você declarou o j duas vezes. Aí não poderia. Simplesmente apague o segundo var.


>>>
Sobre:
 

1 hora atrás, Simon Viegas disse:

Uma sugestão seria refazer o programa aos poucos e ir testando cada parte... 


Você corrigir o código atual é um bom exercício para treinar. Mas a ideia é que "o erro que está enfrentando deva ser apenas no que está mexendo no momento"... ou seja, precisa ter uma noção de que o que já foi feito está certo. (Sem erro de sintaxe, no mínimo... e evitando ao máximo erro de lógica.)

Exemplo de base inicial:

 

algoritmo "Pedidos de Lanchonete"
const
   MAX = 10
   
tipo
   rCadPedido = registro
      nome : caractere
      pedido : caractere
   fimRegistro

var
   vPedido :vetor [1..MAX] de rCadPedido
   opcao : caractere
   pause : caractere
inicio
   repita
      limpaTela()
      escrevaL("#########################")
      escrevaL("*******LANCHONETE********")
      escrevaL("# 1 - INCLUIR PEDIDO    #")
      escrevaL("# 2 – ATENDER PEDIDO    #")
      escrevaL("# 3 – LISTAR PEDIDO     #")
      escrevaL("# 4 – PESQUISAR PEDIDO  #")
      escrevaL("# 0 - ENCERRAR          #")
      escrevaL("#########################")
      escrevaL("")
      escreva ("Informe a opção desejada: ")
      leia (opcao)

      escolha opcao
      caso "0"
         escrevaL("")
         escrevaL("Finalizando...")
         escrevaL("")
      caso "1"
         //pfim := fIncluir(pfim)
         escreval("**************************")
         escrevaL("Aperte ENTER para voltar")
         escreval("**************************")
         leia(pause)
      caso "2"
         //pAtender(pfim)
         escreval("**************************")
         escrevaL("Aperte ENTER para voltar")
         escreval("**************************")
         leia(pause)
      caso "3"
         //pListar(pfim)
         escreval("**************************")
         escrevaL("Aperte ENTER para voltar")
         escreval("**************************")
         leia(pause)
      caso "4"
         //pBuscar(pfim)
         escreval("**************************")
         escrevaL("Aperte ENTER para voltar")
         escreval("**************************")
         leia(pause)
         leia(pause)
      outroCaso
         escrevaL("")
         escrevaL("Opção inválida!!!")
         escrevaL("")
         escreval("**************************")
         escrevaL("Aperte ENTER para voltar")
         escreval("**************************")
         leia(pause)
      fimescolha
   ate (opcao = "0")
fimAlgoritmo



Entenda que para deixar assim, seriam feitos vários testes rápidos... daí já percebo que daria para tirar essa repetição do "pause". Exemplo:
 

algoritmo "Pedidos de Lanchonete"
const
   MAX = 10

tipo
   rCadPedido = registro
      nome : caractere
      pedido : caractere
   fimRegistro

var
   vPedido :vetor [1..MAX] de rCadPedido
   opcao : caractere
   pause : caractere
inicio
   repita
      limpaTela()
      escrevaL("#########################")
      escrevaL("*******LANCHONETE********")
      escrevaL("# 1 - INCLUIR PEDIDO    #")
      escrevaL("# 2 – ATENDER PEDIDO    #")
      escrevaL("# 3 – LISTAR PEDIDO     #")
      escrevaL("# 4 – PESQUISAR PEDIDO  #")
      escrevaL("# 0 - ENCERRAR          #")
      escrevaL("#########################")
      escrevaL("")
      escreva ("Informe a opção desejada: ")
      leia (opcao)

      escolha opcao
      caso "0"
         escrevaL("")
         escrevaL("Finalizando...")
         escrevaL("")
      caso "1"
         //pfim := fIncluir(pfim)
      caso "2"
         //pAtender(pfim)
      caso "3"
         //pListar(pfim)
      caso "4"
         //pBuscar(pfim)
      outroCaso
         escrevaL("")
         escrevaL("Opção inválida!!!")
         escrevaL("")
      fimescolha

      se (opcao <> "0") entao
         escreval("**************************")
         escrevaL("Aperte ENTER para voltar")
         escreval("**************************")
         leia(pause)
      fimSe
   ate (opcao = "0")
fimAlgoritmo


Veja que, nos testes, caso já não tenha imaginado, veria que continuaria aparecendo a mensagem de "voltar" mesmo pressionando "0". O que não faz sentido... daí lancei um se.

Não necessariamente ficou melhor... aí vai reanalisando. Poderia deixar como procedimento. Exemplo:
 

procedimento pause()
var
   aux : caractere
inicio
   escreval("**************************")
   escrevaL("Aperte ENTER para voltar")
   escreval("**************************")
   leia(aux)
fimProcedimento


Como que usando o procedimento fica mais reduzido.. poderia deixar os "pauses" em cada caso mesmo.. sei lá. Vai testando e vendo o que fica bom ou não... mas sempre o código deve ficar rodável. Vai sempre testando... e como sempre foi testando antes, a tendência que menos erros ocorram quando inserir uma coisa nova... mas o erro tende a ser apenas onde inserir o novo... 🙂


Tipo, eu deixe o nome do procedimento como pause. Daí "esqueci de inventar outro nome para variável" que vai ficar aguardando o enter... ao testar, já deu erro lá, já que não existia mais a variável pause. (Agora essa nomenclatura está só como nome de procedimento. Por aí vai. 




Agora implementaria uma dos itens do menu... eu começara pelo pListar(). Pois ao começar implementar o fIncluir(), eu já usaria o listar para ver se cadastrou certo ou não...  

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!