Ir ao conteúdo
  • Cadastre-se

VisualG algoritmo no visualg de restaurante


Posts recomendados

Comecei esse algoritmo como um exemplo, mas na hora que vi estava grande demais para tal proposito.

 

Deixo como exercício para quem está começando.

algoritmo "Restaurante"

const
   // Constantes do programa
   CATEGORIA_LANCHES = 1
   CATEGORIA_BEBIDAS = 2
   CATEGORIA_ACOMPANHAMENTOS = 3
   CATEGORIA_QUANTIDADE_MAXIMA = 3

   QUANTIDADE_MAXIMA_PRODUTOS = 20

   QUANTIDADE_MAXIMA_PEDIDOS = 50

tipo
   informacao_produto=registro
      nome:caractere
      preco:real
   fimRegistro

   informacao_pedido=registro
      categoria:inteiro
      produto:inteiro
      quantidade:inteiro
   fimRegistro

var
   contador:inteiro

   // Vetor que vai guardar todos os produtos do restaurante
   NOMES_CATEGORIAS: vetor[1..CATEGORIA_QUANTIDADE_MAXIMA] de caractere
   PRODUTOS: vetor[1..CATEGORIA_QUANTIDADE_MAXIMA, 1..QUANTIDADE_MAXIMA_PRODUTOS] de informacao_produto
   QUANTIDADE_PRODUTOS: vetor[1..CATEGORIA_QUANTIDADE_MAXIMA] de inteiro

   pedidos_usuario: vetor[1..QUANTIDADE_MAXIMA_PEDIDOS] de informacao_pedido
   total_pedidos:inteiro

   opcao:inteiro

procedimento p_programa
var
   tmp:caractere
inicio
   escreval("Pressione enter para continuar...")
   leia(tmp)
fimProcedimento

procedimento barra_simples(laterais, meio:caractere; tamanho:inteiro)
var
   contador:inteiro

inicio
   escreva(laterais)
   para contador de 1 ate tamanho-2 faca
      escreva(meio)
   fimPara
   escreva(laterais)
fimProcedimento

procedimento banner(str, laterais, meio:caractere; tamanho:inteiro)
var
   tamanho_restante:inteiro
   contador:inteiro

inicio
   tamanho_restante <- int(((tamanho-2)-compr(str))/2)
   escreva(laterais)
   para contador de 1 ate tamanho_restante faca
      escreva(meio)
   fimPara
   escreva(str)
   para contador de 1 ate tamanho_restante faca
      escreva(meio)
   fimPara
   escreva(laterais)
fimProcedimento

procedimento mostra_produto(categoria, produto:inteiro)
var
   tamanho_restante:inteiro
   contador:inteiro

inicio
   tamanho_restante <- 30-compr(PRODUTOS[categoria, produto].nome)
   escreva(PRODUTOS[categoria, produto].nome)
   barra_simples(".", ".", tamanho_restante)
   escreva(":", PRODUTOS[categoria, produto].preco:2:2)
fimProcedimento

procedimento menu_produtos(categoria:inteiro)
var
   contador:inteiro
   opcao:inteiro
   quantidade_pedido:inteiro
   decisao_pedido:caractere
   achou_pedido:logico

inicio
   repita
      limpaTela
      banner(NOMES_CATEGORIAS[categoria], "+", "=", 40)
      escreval
      para contador de 1 ate QUANTIDADE_PRODUTOS[categoria] faca
         escreva(contador, "-")
         mostra_produto(categoria, contador)
         escreval
      fimPara
      escreval(" 0-Para retornar ao menu anterior")
      escreval
      escreval("Digite uma das opções a cima")
      escreval("para incluir no pedido")
      barra_simples("+", "-", 40)
      escreval
      leia(opcao)
      se opcao <> 0 então
         se (opcao > 0) e (opcao <= QUANTIDADE_PRODUTOS[categoria]) então
            repita
               escreva("Informe a quantidade desejada:")
               leia(quantidade_pedido)
               se quantidade_pedido <= 0 então
                  escreval("Informe uma quantidade valida!")
               fimSe
            ate não (quantidade_pedido <= 0)

            achou_pedido <- falso
            para contador de 1 ate total_pedidos faca

               se (pedidos_usuario[contador].categoria = categoria) e (pedidos_usuario[contador].produto = opcao) então
                  escreval("voce ja fez esse pedido anteriormente!")
                  escreval("Deseja acrecentar no pedido anterior?")
                  escreva("[S/N]:")
                  leia(decisao_pedido)
                  se maiusc(decisao_pedido) = "S" então
                     pedidos_usuario[contador].quantidade <- pedidos_usuario[contador].quantidade+quantidade_pedido
                  fimSe
                  achou_pedido <- verdadeiro
                  interrompa
               fimSe
            fimPara
            se (achou_pedido = falso) e (total_pedidos < QUANTIDADE_MAXIMA_PEDIDOS) então
               total_pedidos <- total_pedidos+1
               pedidos_usuario[total_pedidos].categoria <- categoria
               pedidos_usuario[total_pedidos].produto <- opcao
               pedidos_usuario[total_pedidos].quantidade <- quantidade_pedido
            fimSe
         seNao
            escreval("Opcao invalida!")
            p_programa
         fimSe
      fimSe
   ate opcao = 0
fimProcedimento

procedimento mostra_pedidos
var
   contador:inteiro
   valor_total:real
inicio
   limpaTela
   banner("Registro De Pedidos", "!", "+", 40)
   escreval
   para contador de 1 ate total_pedidos faca
      mostra_produto(pedidos_usuario[contador].categoria, pedidos_usuario[contador].produto)
      escreval("X", pedidos_usuario[contador].quantidade, "=", pedidos_usuario[contador].quantidade*PRODUTOS[pedidos_usuario[contador].categoria, pedidos_usuario[contador].produto].preco:2:2)
      valor_total <- valor_total+pedidos_usuario[contador].quantidade*PRODUTOS[pedidos_usuario[contador].categoria, pedidos_usuario[contador].produto].preco
   fimPara
   escreval("Valor total da conta:", valor_total:2:2)
   escreval("Total de pedidos:", total_pedidos)
fimProcedimento

procedimento inicia_produtos_lanches
inicio
   NOMES_CATEGORIAS[CATEGORIA_LANCHES] <- "Lanches"
   PRODUTOS[CATEGORIA_LANCHES, 1].nome <- "X EGG"
   PRODUTOS[CATEGORIA_LANCHES, 1].preco <- 10.00

   PRODUTOS[CATEGORIA_LANCHES, 2].nome <- "X EGG Especial"
   PRODUTOS[CATEGORIA_LANCHES, 2].preco <- 12.00

   PRODUTOS[CATEGORIA_LANCHES, 3].nome <- "X Bacon"
   PRODUTOS[CATEGORIA_LANCHES, 3].preco <- 14.00

   PRODUTOS[CATEGORIA_LANCHES, 4].nome <- "X Bacon Especial"
   PRODUTOS[CATEGORIA_LANCHES, 4].preco <- 18.00

   PRODUTOS[CATEGORIA_LANCHES, 5].nome <- "X Dog"
   PRODUTOS[CATEGORIA_LANCHES, 5].preco <- 10.00

   PRODUTOS[CATEGORIA_LANCHES, 6].nome <- "X Dog Especial"
   PRODUTOS[CATEGORIA_LANCHES, 6].preco <- 14.00

   PRODUTOS[CATEGORIA_LANCHES, 7].nome <- "Fantasminha"
   PRODUTOS[CATEGORIA_LANCHES, 7].preco <- 11.00
   QUANTIDADE_PRODUTOS[CATEGORIA_LANCHES] <- 7
fimProcedimento

procedimento inicia_produtos_bebidas
inicio
   NOMES_CATEGORIAS[CATEGORIA_BEBIDAS] <- "Bebidas"
   PRODUTOS[CATEGORIA_BEBIDAS, 1].nome <- "Guarana jesus"
   PRODUTOS[CATEGORIA_BEBIDAS, 1].preco <- 9.99

   PRODUTOS[CATEGORIA_BEBIDAS, 2].nome <- "Mineirinho"
   PRODUTOS[CATEGORIA_BEBIDAS, 2].preco <- 4.65

   PRODUTOS[CATEGORIA_BEBIDAS, 3].nome <- "Korona extra"
   PRODUTOS[CATEGORIA_BEBIDAS, 3].preco <- 6.99

   PRODUTOS[CATEGORIA_BEBIDAS, 4].nome <- "Agua minelau com gas"
   PRODUTOS[CATEGORIA_BEBIDAS, 4].preco <- 3.50

   PRODUTOS[CATEGORIA_BEBIDAS, 5].nome <- "Agua minelau sem gas"
   PRODUTOS[CATEGORIA_BEBIDAS, 5].preco <- 1.99

   PRODUTOS[CATEGORIA_BEBIDAS, 6].nome <- "Vinho tinto"
   PRODUTOS[CATEGORIA_BEBIDAS, 6].preco <- 19.90

   PRODUTOS[CATEGORIA_BEBIDAS, 7].nome <- "Suco de laranja natural"
   PRODUTOS[CATEGORIA_BEBIDAS, 7].preco <- 4.99
   QUANTIDADE_PRODUTOS[CATEGORIA_BEBIDAS] <- 7
fimProcedimento

procedimento inicia_produtos_acompanhamentos
inicio
   NOMES_CATEGORIAS[CATEGORIA_ACOMPANHAMENTOS] <- "Acompanhamentos"
   PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 1].nome <- "Batata Rustica"
   PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 1].preco <- 8.00

   PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 2].nome <- "Onion Rings"
   PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 2].preco <- 12.50

   PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 3].nome <- "Bacon Em Tiras"
   PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 3].preco <- 14.00

   PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 4].nome <- "Frango Frito"
   PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 4].preco <- 9.00

   PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 5].nome <- "Batata Frita"
   PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 5].preco <- 10.00

   PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 6].nome <- "Bolinho De Arroz"
   PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 6].preco <- 5.00

   PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 7].nome <- "Almondegas Ao Molho"
   PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 7].preco <- 13.00
   QUANTIDADE_PRODUTOS[CATEGORIA_ACOMPANHAMENTOS] <- 7
fimProcedimento

inicio
   // Inicia os produtos dos menus
   inicia_produtos_lanches
   inicia_produtos_bebidas
   inicia_produtos_acompanhamentos

   repita
      limpaTela
      barra_simples("+", "=", 70)
      escreval
      escreval(" ______   __  __     ______   ______   ______   ______   ______    ")
      escreval("/\  __ \ /\ \_\ \   /\  ___\ /\  __ \ /\  == \ /\  __ \ /\  == \   ")
      escreval("\ \ \/\ \\ \  __ \  \ \___  \\ \  __ \\ \  __< \ \ \/\ \\ \  __<   ")
      escreval(" \ \_____\\ \_\ \_\  \/\_____\\ \_\ \_\\ \_____\\ \_____\\ \_\ \_\ ")
      escreval("  \/_____/ \/_/\/_/   \/_____/ \/_/\/_/ \/_____/ \/_____/ \/_/ /_/ ")
      barra_simples("+", "=", 70)
      escreval
      para contador de 1 ate CATEGORIA_QUANTIDADE_MAXIMA faca
         escreval(contador, "-", NOMES_CATEGORIAS[contador])
      fimPara
      escreval("0-Para encerrar o programa")
      escreval("Digite uma das opções a cima")
      banner("Monte o seu pedido!", "+", "=", 40)
      escreval
      leia(opcao)
      se (opcao <> 0) então
         se (opcao > 0) e (opcao <= CATEGORIA_QUANTIDADE_MAXIMA) então
            menu_produtos(opcao)
         seNao
            escreval("Opcao invalida!")
            p_programa
         fimSe
      fimSe
   ate opcao = 0
   mostra_pedidos

fimAlgoritmo

 

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