0% acharam este documento útil (0 voto)
7 visualizações13 páginas

Desenvolvimento de Aplicação Flask Python

trabalho de analise

Enviado por

simone
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
7 visualizações13 páginas

Desenvolvimento de Aplicação Flask Python

trabalho de analise

Enviado por

simone
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

UNIVERSIDADE PITÁGORAS UNOPAR AN

ANÁLISE E DESENVOLVIMENTO DE
SISTEMAS

NOME DA DISCIPLINA: FRAMEWORK PARA


DESENVOLVIMENTO DE SOFTWARE Unidade:
U4 - FRAMEWORKS PARA
DESENVOLVIMENTO DESTINADO PARA
SERVIDORES Aula: A4 - FRAMEWORK
PYTHON

Simone Pereira Mattos


Matrícula: 2024029895
Sumário

1. Software

2. Estrutura do projeto

3. Passo a passo detalhado (com comandos)

4. Código-fonte completo ([Link], templates)

5. Explicação linha a linha do código

6. Como testar

7. Tratamento de erros e validações

8. Respostas às perguntas de reflexão

9. Checklist

10. Sugestões de melhorias

1. Requisitos
 Python 3.8+ (recomendo 3.10 ou 3.11).
Verifique com python --version.

 VS Code (ou outro editor: Sublime,


PyCharm, Notepad++). Vou usar VS Code
nas instruções.

 Navegador (Chrome, Edge, Firefox) para


testar a aplicação.

2. Estrutura do projeto

 Criei uma pasta chamada


calculadora_salario_flask com a seguinte
estrutura:
 calculadora_salario_flask/
 ├─ venv/ # ambiente virtual
 ├─ [Link] # aplicação Flask
 ├─ templates/
 │ ├─ [Link]
 │ └─ [Link]

3. Passo a passo bem detalhado com os


comandos utilizados
1. Criar pasta e entrar nela
No terminal / PowerShell / Bash:

mkdir calculadora_salario_flask
cd calculadora_salario_flask
2. Criar e ativar o ambiente virtual

Windows (PowerShell):

python -m venv venv


venv\Scripts\Activate.ps1

3. Instalar o Flask

pip install Flask

4. Criar arquivos

Criei [Link] na raiz do projeto e a pasta templates/ com


[Link] e [Link].

5. Executar a aplicação

python [Link]

4. Código-fonte completo

Observação: o código abaixo já implementa validações


básicas (número inválido, negativo), aceita casas decimais
usando vírgula ou ponto e mostra um resultado com
discriminação dos valores.

[Link]

from flask import Flask, render_template, request

app = Flask(__name__)
# Função auxiliar para formatar em real (ex.: 1.234,56)
def format_currency(value):
return f"R$ {value:,.2f}".replace(',', 'X').replace('.',
',').replace('X', '.')

@[Link]('/')
def index():
return render_template('[Link]')

@[Link]('/resultado', methods=['POST'])
def resultado():
# Recebe os valores do formulário
salario_raw = [Link]('salario', '').strip()
dependentes_raw = [Link]('dependentes', '').strip()

# Permitir que usuário use vírgula como separador decimal


salario_raw = salario_raw.replace(',', '.')

# Validação e conversão
try:
salario = float(salario_raw)
except ValueError:
return render_template('[Link]', error='Salário
inválido. Use apenas números (ex.: 2500 ou 2.500,00).')

try:
dependentes = int(dependentes_raw)
except ValueError:
return render_template('[Link]', error='Número de
dependentes inválido. Use um número inteiro.')

if salario < 0:
return render_template('[Link]', error='Salário não
pode ser negativo.')
if dependentes < 0:
return render_template('[Link]', error='Número de
dependentes não pode ser negativo.')

# Regras de negócio (fixas conforme enunciado)


inss = salario * 0.08
ir = salario * 0.15 if salario > 2500.0 else 0.0
desconto_dependentes = dependentes * 200.0

salario_liquido = salario - inss - ir + desconto_dependentes

return render_template('[Link]',
salario=salario,
dependentes=dependentes,
inss=inss,
ir=ir,
desconto_dependentes=desconto_dependentes,
salario_liquido=salario_liquido,
format_currency=format_currency)

if __name__ == '__main__':
[Link](debug=True)

templates/[Link]

<!doctype html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<title>Resultado</title>
</head>
<body>
<h2>Resultado</h2>
{% if error %}
<p style="color:red">{{ error }}</p>
<a href="/">Voltar</a>
{% else %}
<ul>
<li>Salário bruto: {{ format_currency(salario) }}</li>
<li>INSS (8%): {{ format_currency(inss) }}</li>
<li>IR (15% se > 2.500,00): {{ format_currency(ir) }}</li>
<li>Desconto por dependentes (R$200 x {{ dependentes }}):
{{ format_currency(desconto_dependentes) }}</li>
<li><strong>Salário líquido:
{{ format_currency(salario_liquido) }}</strong></li>
</ul>
<a href="/">Calcular outro</a>
{% endif %}
</body>
</html>

5. Explicação linha a linha

 app = Flask(__name__) — cria a aplicação Flask.


 format_currency — converte número float para
formato brasileiro (milhares com ponto, decimais com
vírgula).
 @[Link]('/') — rota para o formulário (GET).
 @[Link]('/resultado', methods=['POST']) —
rota que processa o formulário.
 Conversão de entrada: salario_raw.replace(',', '.')
permite que o usuário use vírgula.
 Validações: irá checar se o salário e dependentes são
números e não-negativos.
 Regras de cálculo: INSS = 8% * salário; IR = 15% *
salário somente se salário > 2500.0; desconto por
dependente = 200 * número de dependentes.
 Resultado: salario_liquido = salario - inss - ir +
desconto_dependentes.

6. Testes e resultados observados


Abaixo deixo a tabela com os testes requeridos,
com os cálculos detalhados.
Tabela de Testes

Salário Bruto Dependentes Resultado

3000,00 2 2710,00

2000,00 1 2040,00

1000,00 0 920,00

-500,00 1 Erro

abc 2 Erro

2500 -1 Erro

Cálculos (passo a passo)


 Teste 1 — 3000,00; 2 dependentes

o INSS = 0,08 * 3000,00 = 240,00

o IR = 0,15 * 3000,00 = 450,00


(porque > 2.500,00)

o Desconto dependentes = 2 * 200,00


= 400,00

o Salário líquido = 3000,00 - 240,00 -


450,00 + 400,00 = 2.710,00

 Teste 2 — 2000,00; 1 dependente

o INSS = 0,08 * 2000,00 = 160,00

o IR = 0,00 (salário <= 2.500,00)

o Desconto dependentes = 1 * 200,00


= 200,00

 Salário líquido = 2000,00 - 160,00 -


0,00 + 200,00 = 2.040,00

 Teste 3 — 1000,00; 0 dependente

 INSS = 0,08 * 1000,00 = 80,00

 IR = 0,00

 Desconto dependentes = 0

 Salário líquido = 1000,00 - 80,00 - 0 + 0 =


920,00

 Teste 4 — -500,00; 1 dependente


 Salário negativo -> Erro (deve ser tratado
no backend)

 Teste 5 — 'abc'; 2 dependentes

 Salário não numérico -> Erro (entrada


inválida)

 Teste 6 — 2500; -1 dependentes

 Dependentes negativo -> Erro


7. Tratamento de erros e validações
 Por que validar no backend?

o Cliente (JavaScript) pode ser


facilmente burlado; validação
apenas no front-end não é segura.

o Backend garante consistência dos


dados e evita exceções e estados
inválidos na lógica de negócio.

o Facilita o logging e auditoria


(registrar entradas inválidas para
posterior correção).

 Validações implementadas no
exemplo:

o Salário deve ser float numérico.

o Dependentes devem ser inteiro.

o Ambos devem ser >= 0.

o Permitir vírgula como separador


decimal para usabilidade.

8. Respostas às perguntas propostas

 1. Com base nos seus conhecimentos, qual a


vantagem de validar os dados do formulário no
backend? Justifique.
 A validação de dados no backend garante segurança e
integridade da aplicação. Embora validações no
cliente melhorem a experiência do usuário evitando
envios óbvios, apenas a validação no frontend deixa a
aplicação vulnerável a entradas maliciosas (ex.:
requests forjados) e erros que podem quebrar a lógica
de negócio. No backend podemos aplicar regras
centrais, registrar tentativas de entrada inválida,
uniformizar mensagens de erro e prevenir exceções
não tratadas. Em resumo: o backend é a última linha
de defesa e garante que os dados armazenados e
processados sejam sempre válidos.

 2. Considerando que o salário líquido depende de


várias variáveis (IR, INSS, dependentes), o que
seria mais indicado para facilitar futuras
atualizações da regra de cálculo? Reflita sobre sua
resposta.

 Para facilitar mudanças futuras, é recomendável


separar a regra de negócio (cálculo do salário) da
camada de apresentação (templates) e das rotas.
Criar um módulo ou função dedicada — por exemplo,
salario_calculos.py com
calcular_salario_liquido(salario,
dependentes, regras) — torna a manutenção mais
simples e testável. Além disso, centralizar as
constantes (alíquotas, valores por dependente, limites)
em um arquivo de configuração ou em variáveis de
ambiente facilita alterar valores sem tocar várias
partes do código.
Conclusão
Com este experimento, foi possível construir uma aplicação
web funcional utilizando o Flask em Python. Foram aplicadas
regras de negócio simplificadas, criadas interfaces com
HTML e tratados erros de entrada. A prática reforçou a
importância de separar a lógica de negócio da apresentação e
mostrou como frameworks podem agilizar o
desenvolvimento de aplicações robustas e organizadas.

Referências
Pallets Projects. Flask Documentation. Disponível em:
[Link]

Você também pode gostar