Ir ao conteúdo
  • Cadastre-se

Portugol Erro na Execução do código - Portugol Studio


Posts recomendados

Uma companhia de teatro deseja dar uma série de espetáculos. A direção calcula que a R$5,00 o ingresso serão vendidos 120 ingressos, e que as despesas serão de R$200,00. Diminuindo-se R$ 0,50 o preço dos ingressos espera-se que as vendas aumentem em 26 ingressos. a) Faça um programa que escreva uma tabela de valores de lucros esperados em função do preço do ingresso, fazendo-se variar esse preço de R$5,00 a R$1,00 de R$0,50 em R$0,50. Escreva , ainda o lucro máximo esperado, o preço do ingresso e a quantidade de ingressos vendidos para a obtenção desse lucro.
 

programa
{
    funcao inicio()
    {
        inteiro lucro_maximo = 0, lucro = 600, valor_ingresso = 5, numero_ingressos = 120, numero_ingressos_max
        real ingresso, x_ingresso

        para (valor_ingresso = 5; valor_ingresso <= 8; valor_ingresso++)
        {
            ingresso = 5 - (valor_ingresso * 0.5)
            numero_ingressos = numero_ingressos + (valor_ingresso * 26)
            lucro = (valor_ingresso * numero_ingressos) - 200

            escreva("\nSe o valor do ingresso for: ", ingresso)
            escreva("\nO lucro será de: ", lucro)

            se (lucro > lucro_maximo)
            {
                lucro_maximo = lucro
                x_ingresso = ingresso
                numero_ingressos_max = numero_ingressos
            }
        }

        escreva("\nCom o ingresso no valor de: ", x_ingresso)
        escreva("\nVendendo ", numero_ingressos_max, " ingressos")
        escreva("\nO valor do lucro máximo será de: ", lucro_maximo)
    }
}


 

Está dando erro na compilação! Queria saber se conseguir preencher todos requisitos apresentados na questão.

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

Em 15/05/2023 às 14:57, Jackson Vanutty disse:
inteiro lucro_maximo = 0, lucro = 600, valor_ingresso = 5, numero_ingressos = 120, numero_ingressos_max
        real ingresso, x_ingresso

inicialize as variáveis

inteiro  lucro_maximo         = 0  ,   lucro            = 600 
inteiro  valor_ingresso       = 5  ,   numero_ingressos = 120
inteiro  numero_ingressos_max = 0
real     ingresso             = 0.0,   x_ingresso       = 0.0

 

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

  • Membro VIP
Em 15/05/2023 às 14:57, Jackson Vanutty disse:

Está dando erro na compilação! Queria saber se conseguir preencher todos requisitos apresentados na questão.

 

São duas coisas distintas. [1] erro de compilação; [2] atender aos requisitos.

Vou tentar detalhar cada uma delas.

 

 

 

Sobre o erro: qual erro está dando?

A partir do erro verificado, tenta entendê-lo:

 

image.png

 

Ou seja, o esperado seria que visse esse erro, tentasse entender e depois tentar solucionar. Caso não, aí citaria o tal erro no fórum. 🙂

 

O que quero dizer: é menos didático os colegas pegarem o código, testar, descobrir qual o suposto erro que está enfrentando, e depois dar uma sugestão de solução. Melhor já entender do que se trata e ser específico (tanto para tentar resolver sozinho, tanto para pedir auxílio). 😉

 

 

O erro fala sobre algo relacionado à inicialização da variável x_ingresso. Como sugerido pelo @devair1010, eventualmente esta variável precisa ter um valor inicial, mas você "não inicializou ou ela pode não ser inicializa no percurso", ou seja, ali na linha 25, essa variável está sendo usada para ser impressa, correto? Mas, tecnicamente, a execução poderia chegar lá sem ter um valor para essa variável... Como assim? O compilador entende algo assim: "vixe, pode ser que o computador tente imprimir uma variável sem que ela tenha tido um valor inicial. Não vou deixar compilar". Variáveis seriam apenas "espaços de memória". Se a variável não for inicializada, ela estaria com o lixo de memória antes do espaço ser reservado, aí podendo bugar o programa.

 

O segredo do problema está nesse trecho:

 

            se (lucro > lucro_maximo)
            {
                lucro_maximo = lucro
                x_ingresso = ingresso
                numero_ingressos_max = numero_ingressos
            }

 

Observe que a variável x_ingresso estaria para receber um valor, ou seja, seria inicializada (e não daria erro de compilação). Entretanto, o comando está dentro de um se, que por definição é uma estrutura de seleção, logo, podendo ser executado o que está dentro do se ou não. O compilador protege de uma má execução do programa!!! Além disso, esse se está dentro de um para, que tecnicamente pode ser que sequer inicie o loop... Esses são os motivos para o compilador te forçar que a variável x_ingresso tenha algum valor inicial antes de ser utilizada o valor. 

 

Adendo: para deixar claro, sempre em algum momento as variáveis precisam primeiro receber um valor qualquer antes de ser usado para cálculo ou exibição. Se ela já recebe durante o fluxo, não precisa "inicializar" na declaração. Veja por exemplo a variável ingresso. Não precisa!

 

 

RESUMINDO:

Em relação à sintaxe, só é preciso inicializar as 3 variáveis que estão sendo impressas:

 

Em 15/05/2023 às 14:57, Jackson Vanutty disse:
        escreva("\nCom o ingresso no valor de: ", x_ingresso)
        escreva("\nVendendo ", numero_ingressos_max, " ingressos")
        escreva("\nO valor do lucro máximo será de: ", lucro_maximo)

 

E a variável que está sendo utilizada no cálculo:

Em 15/05/2023 às 14:57, Jackson Vanutty disse:
numero_ingressos = numero_ingressos + (valor_ingresso * 26)

 

 

O restante NÃO precisa. Não precisa nem preocupar quando deve inicializar ou não.. se não compilar, vai lá e inicializa. Isso é bom que vai acostumando com os erros!!!

 

Observe que a variável valor_ingresso é inicializada no para, logo, inicializar na declaração ficou redundante.

Em 15/05/2023 às 14:57, Jackson Vanutty disse:
para (valor_ingresso = 5; valor_ingresso <= 8; valor_ingresso++)

 

 

 

RESUMO DO RESUMO

Se atente ao erro informado. Geralmente é um bom indicativo do que exatamente está ocorrendo. Daí, aplica o sugerido, mesmo que eventualmente não entenda o motivo do erro, mas já saberia que por algum motivo está precisando que inicialize, daí, só inicializar.

 

DICA:

Não inicialize as variáveis por inicializar (nada de "vou inicializar logo aqui para evitar erro"). Deixe o compilador dar erro mesmo e tente entender o motivo. Com o tempo se acostuma e aí inicializaria sabendo do que está fazendo.

 

 

 

Sobre os requisitos: quais requisitos faltam?

 

Oras! provavelmente, se não estava compilando, você meio que não conseguiu testar muita coisa. Mete mão aí. Testa, tenta entender o que ocorre e daí busca uma solução caso necessário. Mas sempre tente primeiro entender o problema!!!

 

Tendo dificuldades, informa qual é... (tipo, não funcionaria muito bem um só "não consegui resolver" ou algo do tipo, saca?)

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