• Python
  • 10. Algoritmos
  • Introdução

Algoritmos#

Muitas vezes nos deparamos com problemas que parecem muito difíceis ou quase impossíveis de resolver, mas vou te contar um segredo. Grande parte dos problemas que vamos ver nesta disciplina podem ser resolvidos com if e while.

Alguns exercícios podem parecer complexos ao primeiro contato, mas se olharmos de outro "ângulo" o problema começa a ficar mais amigável. 😊

O que são algoritmos?#

Podemos definir um algoritmo como uma sequência finita de ações para alcançar um objetivo.

No dia a dia, fora do contexto computacional/tecnológico, nos deparamos com algoritmos e muitas vezes nem nos damos conta.

Alguns algoritmos do dia a dia.

Ao fazer um bolo precisamos seguir o passo a passo descrito na receita. Quando acordarmos de manhã, seguimos uma rotina para escovar os dentes. Pense na sua rotina.

Para chegar na sala de aula você também acaba traçando um caminho para chegar ao destino desejado.

  • Entrar no prédio 2 do Insper;
  • Pegar o celular e acessar o QR code;
  • Validar o QR Code na catraca.
  • Passar a catraca;
  • Escolher entre escada ou elevador; E assim, por diante.

Na programação isso não muda muito. Para resolver um problema escrevemos uma sequência de comandos para alcançar um objetivo. E já fazemos isso nos exercícios feitos durante as aulas.

Conforme vamos avançando no conteúdo da disciplina, vamos nos deparar com problemas maiores e muitas vezes esquecemos de definirmos os passos necessários para a resolução do problema. Então segue algumas dicas que podemos seguir para nos auxiliar na resolução dos exercícios.

Dividindo o problema#

Vamos começar com o enunciado do exercício abaixo.

Imposto de Renda Retido na Fonte#

Faça um programa que pergunta o salário bruto e o número de dependentes do usuário e imprime o seu Imposto de Renda Retido na Fonte (IRRF) simplificado. O cálculo do IRRF simplificado depende do valor da contribuição para o INSS e da base de cálculo. A contribuição para o INSS é dada pela tabela:

Faixa salarial Alíquota
Até R$ 1.045,00 7,5%
De R$ 1.045,01 até R$ 2.089,60 9%
De R$ 2.089,61 até R$ 3.134,40 12%
De R$ 3.134,41 até R$ 6.101,06 14%
Acima de R$ 6.101,06 R$ 671,12 (valor fixo)

Por exemplo, se o salário bruto for R$ 2.000,00 a contribuição para o INSS será: \(2000\times 0.09 = 180\).

A base de cálculo do IRRF simplificado é dada por:

Base de cálculo =

    salário bruto - contribuição para o INSS - número de dependentes X 189,59

Finalmente, o IRRF simplificado é dado por:

IRRF = Base de cálculo X alíquota - dedução

A alíquota e dedução podem ser obtidas na tabela a seguir, que depende da base de cálculo:

Base de cálculo Alíquota Dedução
Até R$ 1.903,98 0.0% R$ 0,00
De R$ 1.903,99 até R$ 2.826,65 7,5% R$ 142,80
De R$ 2.826,66 até R$ 3.751,05 15% R$ 354,80
De R$ 3.751,06 até R$ 4.664,68 22,5% R$ 636,13
Acima de R$ 4.664,68 27,5% R$ 869,36

Acessar exercício "Imposto de Renda Retido na Fonte"

Problemas menores#

Releia o enunciado do exercício e pense como você poderia quebrar o exercício em problemas menores.

Exercise 1

Pense quais subproblemas você poderia criar para esse exercício? Liste-os abaixo.

Answer

Não existe resposta certa ou errada para quantas ou quais subproblemas você conseguiu identificar.

Ao ler o enunciado deste exercício, podemos perceber que temos bastante trabalho para fazer. Porém, aos poucos vamos ver que a dificuldade do exercício está muito mais ligada a organização que vamos escolher utilizar.

Exercise 2

Ao ler o enunciado do exercício Imposto de Renda (IRRF) simplificado, qual recurso do Python é desnecessário para resolver o exercício?

Answer

Para o exercício IRRF simplificado, o operador while não será necessário, pois não lidamos com nenhuma situação de repetição.

Talvez você tenha pensado que as funções não serão necessárias, mas neste caso as funções vão nos ajudar a organizar a nossa solução.

Você consegue pensar como? 🤔 💭

Utilizando funções#

Podemos criar uma função para cada subproblema. É possível resolver o exercício IRRF simplificado sem utilizar funções. Mas te garanto que as funções nos ajudarão na organização do código. Além disso, a solução deste exercício pode utilizar algumas linhas de código, e se cometermos algum erro, será muito mais fácil encontrá-lo.

Contribuição para o INSS#

O cálculo da contribuição para o INSS é a primeira informação dada pelo enunciado e parece ser um bom candidato a virar subproblema. Desta forma, a primeira função que podemos criar é calcula_contribuicao_inss.

Exercise 3

Quais argumentos a função calcula_contribuicao_inss precisa receber?

Answer

Para o cálculo da contribuição para o INSS precisamos somente do valor do salário bruto.

Exercise 4

Faça a função calcula_contribuicao_inss no arquivo funcoes.py que recebe como argumento o salário bruto do usuário e retorna a contribuição para o INSS.

A contribuição para o INSS é dada pela tabela:

Faixa salarial Alíquota
Até R$ 1.045,00 7,5%
De R$ 1.045,01 até R$ 2.089,60 9%
De R$ 2.089,61 até R$ 3.134,40 12%
De R$ 3.134,41 até R$ 6.101,06 14%
Acima de R$ 6.101,06 R$ 671,12 (valor fixo)

Por exemplo, se o salário bruto for R$ 2.000,00 a contribuição para o INSS será: \(2000\times 0.09 = 180\).

Ao resolver este exercício, os testes com o nome Contribuição para o INSS devem passar com sucesso.

Base de cálculo#

Ao continuarmos lendo o enunciado do exercício, nos deparamos com a explicação da Base de cálculo do IRRF simplificado. O cálculo da Base de cálculo do IRRF simplificado parece ser um bom candidato a subproblema.

Então nosso próximo passo, será criar a função calcula_base_de_calculo.

Exercise 5

Quais argumentos a função calcula_base_de_calculo precisa?

Answer

Para o cálculo da base de cálculo precisamos do valor do salário bruto e o número de dependentes.

Além disso, a base de cálculo precisa do valor da contribuição do INSS, mas esse valor não será passado por argumento. O valor da contribuição será adquirida através da função calcula_contribuicao_inss.

Exercise 6

Faça a função calcula_base_de_calculo no arquivo funcoes.py que recebe como argumento o salário bruto e o número de dependentes do usuário e retorna o valor da base de cálculo.

A base de cálculo do IRRF simplificado é dada por:

Base de cálculo = salário bruto - contribuição para o INSS - número de dependentes X 189,59

Ao resolver este exercício, os testes com o nome Base de cálculo devem passar com sucesso.

IRRF simplificado#

Agora podemos fazer a função para calcular o IRRF.

Exercise 7

Faça a função calcula_irrf no arquivo funcoes.py que recebe como argumento o salário bruto e o número de dependentes do usuário e retorna o IRRF simplificado.

O IRRF simplificado é dado por:

IRRF = Base de cálculo X alíquota - dedução

A alíquota e dedução podem ser obtidas na tabela a seguir, que depende da base de cálculo:

Base de cálculo Alíquota Dedução
Até R$ 1.903,98 0.0% R$ 0,00
De R$ 1.903,99 até R$ 2.826,65 7,5% R$ 142,80
De R$ 2.826,66 até R$ 3.751,05 15% R$ 354,80
De R$ 3.751,06 até R$ 4.664,68 22,5% R$ 636,13
Acima de R$ 4.664,68 27,5% R$ 869,36

Ao resolver este exercício, os testes com o nome Irrf simplificado devem passar com sucesso.

Finalizando#

Agora precisamos finalizar o exercício. Não podemos esquecer que o exercício pede a utilização de input para pedir as informações do usuário. E além disso, precisamos imprimir o valor do IRRF do usuário.

Exercise 8

Agora finalize o exercício juntando tudo o que fizemos até aqui. Esta versão final deve ser implementada dentro do arquivo solution.py. Além disso, você deve importar e utilizar as funções implementadas nas etapas anteriores.

Faça um programa que pergunta o salário bruto e o número de dependentes do usuário e imprime o seu Imposto de Renda Retido na Fonte (IRRF) simplificado com exatamente duas casas decimais.

Ao resolver este exercício, os testes com o nome Versão final do irrf simplificado devem passar com sucesso.

Algoritmos com repetição#

Vamos agora ver algumas dicas para facilitar a construção de algoritmos com repetição. 👉 Clique aqui.