(0.5) Uma editora precisa melhorar seu processo de precificação dos livros que possivelmente que irá publicar. Para tanto, ela precisa de um programa para calcular o preço de equilíbrio (onde despesas e receitas se anulam). Se, por exemplo, um livro custa
50,00
\mathrm{R} $500.000,00
\mathrm{R} $ 50.00$ para o consumidor, então a receita líquida seria zero (ponto de equilíbrio). Os custos de produção consistem em custos fixos (formatação, composição, edição, arte, etc) + custos variáveis (papel para cada cópia, encadernação, embalagem, etc) e outras despesas (transporte, por exemplo). Assim, a fórmula do custo de produção pode ser simplificada da seguinte maneira:
Suponha que o livro “A arte de calcular o preço de equilíbrio de um livro” tenha previsão de vender 5000 cópias, uma projeção de custo fixo de produção de R$
e tenha sido planejado para ter 365 páginas. Para este livro, o custo de produção ficaria em:
Lista de Exercícios
Programação e Algoritmos-I Prof. Dr. Ednaldo B. Pizzolato
A partir do custo de produção, chegou-se a uma fórmula para o preço sugerido de venda ao consumidor de 2.53 * custoProdução. Portanto, para este livro, especificamente, o preço sugerido de venda seria:
12.63 \rightarrow R $31,95$. Faça um programa em Python para apresentar ao setor de Marketing da empresa o título e o preço sugerido de venda de cada um deles, para os funcionários do setor decidirem se é viável ou não dar prosseguimento ao processo de produção do livro.
Programação e Algoritmos-I Prof. Dr. Ednaldo B. Pizzolato
Passo 1
O que o enunciado pede e quais informações temos.
- Pedido: criar um programa em Python que apresente ao setor de Marketing o título e o preço sugerido de venda de cada livro (para que decidam se é viável produzir o livro).
- Fórmula dada para o custo de produção:
- Fórmula dada para o preço sugerido:
- Observações / dados fornecidos no exemplo do enunciado:
-
-
-
- O enunciado mostra o cálculo final: custo total
, custo por cópia e preço sugerido .
-
Passo 2
Entendendo o que cada termo significa (aula rápida e didática).
-
: despesas que não dependem do número de cópias (formatação, edição, arte, etc.). É um valor total. -
: depende do número de páginas, pois papel, encadernação etc. crescem com cada cópia. No modelo dado, o custo variável por cópia é
Isso significa: cada página “custa” R$
por cópia.
-
é o soma do custo fixo mais todos os custos variáveis:
-
é o custo médio por exemplar:
- Podemos simplificar a expressão para
fazendo a divisão:
Isto é útil porque mostra duas parcelas no custo por cópia: a parcela do custo fixo diluída por exemplar e a parcela variável por cópia.
Passo 3
Como calcular o preço sugerido e a formatação do resultado para a prova (ou para o programa).
- Para achar o preço sugerido:
- Em provas / relatórios, normalmente arredondamos para 2 casas decimais (centavos). Em Python usamos formatação com duas casas:
f"{valor:.2f}". - No Brasil, usa-se vírgula como separador decimal: exibiremos
R\(31,95em vez deR\) 31.95. Uma forma prática em Python é formatar com:.2fe depois substituir o ponto por vírgula na string exibida. - Sempre tenha cuidado com divisão por zero: o programa deve tratar o caso
(não faz sentido vender zero cópias, mas defensivamente podemos evitar erro).
Passo 4
Decidindo o formato do programa (estratégia que você pode usar na prova e no trabalho).
- Vamos fazer um programa simples e reusável que:
- Recebe uma lista de livros, onde cada livro tem: título,
, , . - Para cada livro calcula:
-
- Exibe o título e o preço sugerido formatado como
R$ xx,yy.
- Recebe uma lista de livros, onde cada livro tem: título,
- Por que esse método? Porque é direto, fácil de implementar em prova e em produção, e permite variar dados rapidamente. Ele usa apenas operações aritméticas básicas.
Passo 5
Explicando cada pedaço do programa Python (como você resolveria na prova, linha a linha - para você entender e reproduzir).
- Variáveis principais que usaremos (em termos matemáticos):
-
: nome do livro (string). -
: inteiro, número de cópias previstas. -
: float, custo fixo total em reais. -
: inteiro, número de páginas do livro.
-
- Fórmulas implementadas no código (em notação que você aplicaria na prova):
-
-
-
(protegendo contra ) -
-
- Exibição:
print(f"{titulo}: R$ {precoSugerido:.2f}".replace('.', ','))— formata com duas casas e troca ponto por vírgula.
Passo 6
Um exemplo numérico (confirmação com os números do enunciado) — a conta manual que deve bater com o programa.
- Calcule
:
- Custo de produção total:
- Custo por cópia:
- Preço sugerido:
Esse resultado confirma o exemplo do enunciado.
Resposta
# Programa: calcula e exibe o título e o preço sugerido de venda de cada livro.
# Autor: solução didática
# Observação: substitua ou acrescente livros na lista 'livros' conforme necessário.
def calcular_preco_sugerido(nro_copias, custo_fixo, nro_paginas, fator_preco=2.53, custo_pagina=0.0305):
"""
Calcula o preço sugerido por exemplar.
Retorna o preço sugerido (float). Se nro_copias == 0 retorna None.
"""
if nro_copias <= 0:
return None # proteção contra divisão por zero ou entradas inválidas
custo_variavel_por_copia = nro_paginas * custo_pagina
custo_producao = custo_fixo + nro_copias * custo_variavel_por_copia
custo_por_copia = custo_producao / nro_copias
preco_sugerido = fator_preco * custo_por_copia
return preco_sugerido
def formatar_reais(valor):
"""
Formata um float para o formato brasileiro de moeda: 'R$ xx,yy'
"""
return "R$ " + f"{valor:.2f}".replace(".", ",")
def apresentar_precos(livros):
"""
Recebe uma lista de dicionários com chaves:
'titulo', 'nro_copias', 'custo_fixo', 'nro_paginas'
E imprime o título e o preço sugerido formatado.
"""
for livro in livros:
titulo = livro.get('titulo', 'Título sem nome')
nro_copias = livro.get('nro_copias', 0)
custo_fixo = livro.get('custo_fixo', 0.0)
nro_paginas = livro.get('nro_paginas', 0)
preco = calcular_preco_sugerido(nro_copias, custo_fixo, nro_paginas)
if preco is None:
print(f"{titulo}: Dados inválidos (número de cópias deve ser > 0).")
else:
print(f"{titulo}: {formatar_reais(preco)}")
if __name__ == "__main__":
# Exemplo com o livro citado no enunciado:
livros = [
{
'titulo': "A arte de calcular o preço de equilíbrio de um livro",
'nro_copias': 5000,
'custo_fixo': 7500.00,
'nro_paginas': 365
},
# Você pode adicionar mais livros aqui, por exemplo:
# {
# 'titulo': "Outro título",
# 'nro_copias': 2000,
# 'custo_fixo': 5000.00,
# 'nro_paginas': 220
# },
]
apresentar_precos(livros)