Trabalho de Lógica de Programação: Desenvolvendo Soluções Empresariais em Python
Published: 2024-01-06 18:39:12


_Análise e Desenvolvimento de Sistemas - Uninter_

## Introdução

Esse é um trabalho acadêmico, onde tive a oportunidade de utilizar os conhecimentos adquiridos em lógica de programação na linguagem Python. Nesse trabalho, quatro projetos se destacam, cada um oferecendo uma perspectiva única sobre como a linguagem pode ser empregada para atender às demandas empresariais. Vamos explorar esses projetos que abordam desde cálculos de descontos até o controle de estoque de uma bicicletaria.

## 1. Sistema de Cálculo de Descontos em Vendas Atacadistas

No primeiro exercício, mergulhamos no desenvolvimento de um programa Python projetado para facilitar o cálculo de descontos em vendas atacadistas. A estratégia progressiva adotada pela empresa X se torna automatizada, proporcionando eficiência e precisão no processo. Este projeto destaca a aplicação prática dos conceitos de lógica de programação e manipulação de variáveis em Python.

## 2. Sistema de Pedidos para Lanchonete

Direcionando nosso foco para a interação cliente-negócio, o segundo exercício propõe a implementação de um aplicativo de vendas para uma lanchonete. Com uma interface amigável, o programa permite a fácil escolha de produtos, acumulação de pedidos e apresenta o valor total a ser pago. Esse projeto destaca a importância da usabilidade e experiência do usuário na construção de sistemas práticos.

## 3. Sistema de Cálculo de Frete para Companhia de Logística

Em um contexto logístico, o terceiro exercício aborda o desenvolvimento de um sistema para uma empresa recém-criada especializada em encomendas. O programa calcula o valor do frete considerando dimensões, peso e rota do objeto, seguindo as regras da empresa. Este projeto destaca a aplicação prática de algoritmos de cálculo em Python para resolver desafios específicos do setor.

## 4. Sistema de Controle de Estoque para Bicicletaria

Finalizando nossa jornada, o quarto exercício propõe a criação de um sistema de controle de estoque para uma bicicletaria. Com funcionalidades como cadastro, consulta e remoção de peças, o programa fornece uma visão clara do status do estoque. Esse projeto destaca a importância da organização e gestão eficiente de recursos em ambientes de negócios.

# 1 - Resolução: Sistema de Cálculo de Descontos em Vendas Atacadistas

## - Contexto
Imagine-se como um dos programadores responsáveis pela construção de um aplicativo de vendas para a empresa X, especializada em vendas no atacado. O objetivo é calcular o valor total da compra antes e após a aplicação dos descontos, de acordo com a tabela estabelecida.

## - Estratégia de Descontos
A empresa X adota a seguinte tabela de descontos:
- Até 9 unidades: 0% de desconto na unidade.
- Entre 10 e 99 unidades: 5% de desconto na unidade.
- Entre 100 e 999 unidades: 10% de desconto na unidade.
- 1000 unidades ou mais: 15% de desconto na unidade.

## - Implementação em Python
O programa em Python foi desenvolvido para interagir com o usuário e realizar os cálculos necessários. Utilizou-se estruturas condicionais if, elif e else para determinar o desconto apropriado com base na quantidade de produtos adquiridos.

```python
print('Bem Vindo a Loja')

# Entrada de dados
valor_uni = float(input('Entre com o valor do produto: R$ '))
quant = int(input('Entre com a quantidade do produto: '))

# Cálculo do desconto
if 0 <= quant <= 9:
    desconto = 0
    porcento = '0%'
elif 10 <= quant <= 99:
    desconto = 0.05
    porcento = '5%'
else:
    desconto = 0.15
    porcento = '15%'

# Cálculos de valores
semdesconto = valor_uni * quant
calc_descon = semdesconto * desconto
comdesconto = semdesconto - calc_descon

# Saída de resultados
print('O valor sem desconto é de: R${:.2f}'.format(semdesconto))
print('O valor com desconto é de: R${:.2f} (Desconto de {})'.format(comdesconto, porcento))
```

# 2 - Resolução: Sistema de Pedidos para Lanchonete

## - Contexto
Como parte de uma equipe de programadores, a responsabilidade foi assumida para criar a interface do cliente no aplicativo de vendas da lanchonete. O sistema conta com uma tabela de produtos, cada um identificado por um código único, descrição e valor correspondente.

## - Estratégia de Implementação
O programa utiliza estruturas de controle, como if, elif, else, while, break, e continue, para oferecer uma experiência interativa ao cliente. Além disso, verificações são realizadas para garantir que o cliente insira códigos válidos de produtos.

## - Implementação em Python
O código foi elaborado para receber o código do produto desejado, acumular o valor correspondente ao pedido e permitir que o cliente adicione mais itens ou encerre a compra. Mensagens informativas são exibidas de acordo com a escolha do cliente.

```python
acumulador = 0

print('Seja bem-vindo à lanchonete')
print('******************Cardápio**********************')
print('| Código | Descrição              | Valor(R$) |')
print('| 100    | Cachorro-Quente        | R$ 9,00    |')
# ... (Outros produtos listados)

while True:
    codigo = input('Entre com o código desejado: ')

    if codigo == '100':
        acumulador += 9
        print('Você pediu um Cachorro-Quente no valor de R$9,00!')
    elif codigo == '101':
        acumulador += 11
        print('Você pediu um Cachorro-Quente Duplo no valor de R$11,00!')
    # ... (Outras condições para diferentes códigos)
    elif codigo == '201':
        acumulador += 4
        print('Você pediu um Chá Gelado no valor de R

$4,00!')
    else:
        print('Opção inválida!')
        continue

    resposta = input('Deseja pedir mais alguma coisa? \n 1 - Sim \n 0 - Não ')

    if resposta == '1':
        continue
    else:
        print('O total a ser pago é: R$ {:.2f}'.format(acumulador))  # total a pagar
        break
```

# 3 - Resolução: Sistema de Cálculo de Frete para Companhia de Logística

## - Contexto

A empresa de logística opera entre três cidades, oferecendo serviços de transporte para encomendas. O valor do frete é calculado por meio de uma equação que leva em consideração as dimensões do objeto, seu peso e a rota escolhida.

## - Implementação em Python

O código foi estruturado em funções para tratar diferentes aspectos do cálculo do frete, como dimensões do objeto, peso e rota. Foi implementada a lógica para lidar com possíveis erros de entrada do usuário.

```python
# -------FUNÇÃO DIMENSOESOBJETO--------------
def dimensoesObjeto():
    while True:
        try:
            altura = float(input('Digite a altura do objeto (em cm): '))
            largura = float(input('Digite a largura do objeto (em cm): '))
            comprimento = float(input('Digite o comprimento do objeto (em cm): '))
            
            volume = altura * largura * comprimento
            print('O volume do objeto é (em cm³): {}'.format(volume))
            
            if volume < 1000:
                return 10.00
            elif 1000 <= volume < 10000:
                return 20.00
            elif 10000 <= volume < 30000:
                return 30.00
            elif 30000 <= volume < 100000:
                return 50.00
            else:
                print('Não aceitamos objetos com dimensões tão grandes. \n Entre com as dimensões desejadas novamente.')
        except ValueError:
            print('Você digitou alguma dimensão do objeto com valor não numérico. \n Entre com as dimensões desejadas novamente.')

# -------FUNÇÃO PESOOBJETO--------------
def pesoObjeto():
    while True:
        try:
            peso = float(input('Digite o peso do objeto (em Kg): '))
            
            if peso <= 0.1:
                return 1
            elif 0.1 < peso <= 1:
                return 1.5
            elif 1 < peso <= 10:
                return 2
            elif 10 < peso <= 30:
                return 3
            else:
                print('Não aceitamos objetos tão pesados.\n Entre com o peso desejado novamente.')
        except ValueError:
            print('Você digitou o peso do objeto com valor não numérico. \n Por favor, entre com o peso desejado novamente.')

# -------FUNÇÃO ROTAOBJETO--------------
def rotaObjeto():
    while True:
        rota1 = input ('Selecione a rota:\nRS - De Rio de Janeiro até São Paulo\nSR - De São Paulo até Rio de Janeiro\nBS - De Brasília até São Paulo\nSB - De São Paulo até Brasília\nBR - De Brasília até Rio de Janeiro\nRB - Rio de Janeiro até Brasília ')
        
        if rota1 in ['RS', 'SR', 'BS', 'SB', 'BR', 'RB']:
            if rota1 in ['RS', 'SR']:
                return 1
            elif rota1 in ['BS', 'SB']:
                return 1.2
            elif rota1 in ['BR', 'RB']:
                return 1.5
        else:
            print('Você digitou uma rota que não existe.\n Por favor, entre com a rota desejada novamente.')

# -----------MAIN---------------
print('Bem-vindo à companhia de logística')
dimensoes = dimensoesObjeto()
peso = pesoObjeto()
rota = rotaObjeto()
total = dimensoes * peso * rota
print('Total a pagar (R$): {} (Dimensões: {} * Peso: {} * Rota: {})'.format(total, dimensoes, peso, rota))
```
# **4 - Resolução: Sistema de Controle de Estoque para Bicicletaria**

**- Contexto:**
   O projeto visa criar um software de controle de estoque para uma bicicletaria. O sistema oferece funcionalidades como cadastrar peças, consultar peças por diferentes critérios e remover peças do estoque.

**- Implementação em Python:**
   O código foi estruturado em funções para cada uma das opções do menu, facilitando a manutenção e compreensão do programa.

**- Função cadastrarPeca:**
   - Recebe como parâmetro um código exclusivo para cada peça cadastrada.
   - Pergunta o nome, fabricante e valor da peça.
   - Armazena os dados de cada peça em um dicionário.
   - Adiciona o dicionário à lista de peças.

```python
def cadastrarPeca(cdg):
    print('Você selecionou a opção de cadastrar peça.')
    print('Código da peça: {}'.format(cdg))
    nome = input('Por favor, entre com o NOME da peça: ')
    fabricante = input('Por favor, entre com o FABRICANTE da peça: ')
    valor = float(input('Por favor, entre com o VALOR(R$) da peça: '))
    dicionarioPeca = {'código': cdg, 'nome': nome, 'fabricante': fabricante, 'valor': valor}
    listaPeca.append(dicionarioPeca.copy())
```

**Função consultarPeca:**

Exibe um menu com opções para consultar todas as peças, peças por código, peças por fabricante ou retornar ao menu principal. Mostra as informações das peças de acordo com a opção escolhida.

```python
def consultarPeca():
    while True:
        try:
            print('Você selecionou a opção de consultar peças')
            opConsultar = int(input('Entre com a opção desejada:\n1- Consultar todas as peças\n2- Consultar peças por código\n3- Consultar peças por fabricante\n4- Retornar\n>>'))
            if opConsultar == 1:
                for peca in listaPeca:
                    for key, value in peca.items():
                        print('{} : {}'.format(key, value))
            elif opConsultar == 2:
                entrada = int(input('Digite o CÓDIGO da peça: '))
                for peca in listaPeca:
                    if peca['código'] == entrada:
                        for key, value in peca.items():
                            print('{} : {}'.format(key, value))
            elif opConsultar == 3:
                entrada = input('Digite o FABRICANTE da peça: ')
                for peca in listaPeca:
                    if peca['fabricante'] == entrada:
                        for key, value in peca.items():
                            print('{} : {}'.format(key, value))
            elif opConsultar == 4:
                return
            else:
                print('Essa opção não existe')
        except ValueError:
            print('Pare de digitar valores não inteiros')
```

**Função removerPeca:**

Pergunta qual o código do produto que se deseja remover do cadastro. Remove a peça da lista de peças.

```python
def removerPeca():
    print('Você selecionou a opção de remover peça.')
    entrada = int(input('Digite o CÓDIGO desejado: '))
    for peca in listaPeca:
        if peca['código'] == entrada:
            listaPeca.remove(peca)
```

**Função Principal:**

Implementa os comandos de entrada e as iterações do menu principal. Oferece as opções de cadastrar peças, consultar peças, remover peças ou sair do programa.

```python
print('Bem-vindo ao Controle de Estoque da Bicicletaria')
codigo = 0
while True:
    try:
        opcao = int(input('Escolha a opção desejada:\n'
                          '1- Cadastrar Peças\n'
                          '2- Consultar Peças\n'
                          '3- Remover Peças\n'
                          '4- Sair\n>>'))
        if opcao == 1:
            codigo = codigo + 1
            cadastrarPeca(codigo)
        elif opcao == 2:
            consultarPeca()
        elif opcao == 3:
            removerPeca()
        elif opcao == 4:
            break
        else:
            print('Essa opção não existe')
            continue
    except ValueError:
        print('Pare de digitar valores não inteiros')
```

## Conclusão

Ao longo deste trabalho, exploramos a aplicação prática dos conceitos de lógica de programação e algoritmos na linguagem Python, por meio de quatro projetos distintos. Cada projeto apresentou desafios específicos, proporcionando uma visão abrangente das capacidades da linguagem no contexto do desenvolvimento de soluções para problemas do mundo real.

O primeiro projeto concentrou-se no desenvolvimento de um sistema eficiente de cálculo de descontos em vendas atacadistas, destacando a importância da lógica condicional na aplicação de descontos escalonados. A segunda abordagem trouxe à tona a interação cliente-negócio, implementando um aplicativo de vendas para uma lanchonete, evidenciando a relevância da usabilidade e experiência do usuário.

O terceiro projeto explorou a área logística, apresentando um sistema de cálculo de frete para uma companhia de transporte de encomendas. Aqui, a ênfase recaiu sobre a modularidade do código e o tratamento de entradas do usuário, ressaltando a importância da organização e eficiência algorítmica.

Finalmente, o quarto projeto concentrou-se no desenvolvimento de um sistema de controle de estoque para uma bicicletaria. A estrutura modular e a implementação de funções específicas para cada funcionalidade do sistema destacaram a importância da gestão eficiente de recursos em ambientes de negócios.

Em síntese, este trabalho não apenas proporcionou a oportunidade de aplicar os conhecimentos teóricos de lógica de programação e algoritmos, mas também demonstrou a versatilidade e poder da linguagem Python na resolução de desafios do mundo real em diversos setores. O desenvolvimento desses projetos contribuiu significativamente para o aprimoramento das habilidades práticas dos programadores envolvidos, preparando-os para enfrentar futuros desafios no vasto campo da programação.