(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 \mathrm{R} \ 50,00 para ser produzido e ele tem expectativa de vender 10.000 cópias, então ele tem uma expectativa de gasto deóã\mathrm{R} $500.000,00 . Mas se o preço dele fosseç\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:
\text { custoProdução }=\text { custoFixo }+ \text { nroCopias } *(\text { nroPaginas } * 0.0305)çã
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$ 7.500,00 e tenha sido planejado para ter 365 páginas. Para este livro, o custo de produção ficaria em:
\frac{\mathrm{R} \$63.162 .50}{5000}=R \$ 12.63

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: 2.53 * R \ 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.

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:
\text{custoProdução} = \text{custoFixo} + \text{nroCopias} \times (\text{nroPaginas} \times 0{,}0305)çã
  • Fórmula dada para o preço sugerido:
\text{preçoSugerido} = 2{,}53 \times \text{custoPorCópia}çó
  • Observações / dados fornecidos no exemplo do enunciado:
    • \text{nroCopias} = 5000
    • \text{custoFixo} = \mathrm{R}\$\,7500{,}00
    • \text{nroPaginas} = 365
    • O enunciado mostra o cálculo final: custo total =\mathrm{R}\$\,63.162{,}50, custo por cópia =\mathrm{R}\$\,12{,}63 e preço sugerido =\mathrm{R}\$\,31{,}95.

Passo 2

Entendendo o que cada termo significa (aula rápida e didática).
  • \text{custoFixo}: despesas que não dependem do número de cópias (formatação, edição, arte, etc.). É um valor total.
  • \text{custoVariável por cópia}áó: 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 é
\text{custoVariável por cópia} = \text{nroPaginas} \times 0{,}0305.áó
Isso significa: cada página “custa” R$ 0{,}0305 por cópia.
  • \text{custoProdução}çã é o soma do custo fixo mais todos os custos variáveis:
\text{custoProdução} = \text{custoFixo} + \text{nroCopias} \times (\text{nroPaginas} \times 0{,}0305).çã
  • \text{custoPorCópia}ó é o custo médio por exemplar:
\text{custoPorCópia} = \frac{\text{custoProdução}}{\text{nroCopias}}.óçã
  • Podemos simplificar a expressão para \text{custoPorCópia}ó fazendo a divisão:
\text{custoPorCópia} = \frac{\text{custoFixo}}{\text{nroCopias}} + \text{nroPaginas} \times 0{,}0305.ó
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:
\text{preçoSugerido} = 2{,}53 \times \text{custoPorCópia}.çó
  • 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,95 em vez de R\) 31.95. Uma forma prática em Python é formatar com :.2f e depois substituir o ponto por vírgula na string exibida.
  • Sempre tenha cuidado com divisão por zero: o programa deve tratar o caso \text{nroCopias}=0 (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:
    1. Recebe uma lista de livros, onde cada livro tem: título, \text{nroCopias}, \text{custoFixo}, \text{nroPaginas}.
    2. Para cada livro calcula:
      • \text{custoVariável por cópia} = \text{nroPaginas} \times 0{,}0305áó
      • \text{custoProdução} = \text{custoFixo} + \text{nroCopias} \times \text{custoVariável por cópia}çãáó
      • \text{custoPorCópia} = \text{custoProdução} / \text{nroCopias}óçã
      • \text{preçoSugerido} = 2{,}53 \times \text{custoPorCópia}çó
    3. Exibe o título e o preço sugerido formatado como R$ xx,yy.
  • 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):
    • \text{titulo}: nome do livro (string).
    • \text{nroCopias}: inteiro, número de cópias previstas.
    • \text{custoFixo}: float, custo fixo total em reais.
    • \text{nroPaginas}: inteiro, número de páginas do livro.
  • Fórmulas implementadas no código (em notação que você aplicaria na prova):
    • \text{custoVariavelPorCopia} = \text{nroPaginas} \times 0{,}0305
    • \text{custoProducao} = \text{custoFixo} + \text{nroCopias} \times \text{custoVariavelPorCopia}
    • \text{custoPorCopia} = \dfrac{\text{custoProducao}}{\text{nroCopias}} (protegendo contra \text{nroCopias}=0)
    • \text{precoSugerido} = 2{,}53 \times \text{custoPorCopia}
  • 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 \text{custoVariável por cópia}áó:
\text{nroPaginas} \times 0{,}0305 = 365 \times 0{,}0305 = 11{,}1325.
  • Custo de produção total:
\text{custoProdução} = 7500 + 5000 \times 11{,}1325 = 7500 + 55.662{,}5 = 63.162{,}5.çã
  • Custo por cópia:
\frac{63.162{,}5}{5000} = 12{,}6325 \approx 12{,}63.
  • Preço sugerido:
2{,}53 \times 12{,}6325 = 31{,}953725 \approx 31{,}95.
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)

Exercícios relacionados