Simulado de Prova (P1)

Este é um simulado de P1 para a disciplina Algoritmos e Técnicas de Programação:


Comece pensando:

-Que variáveis precisarei?

-Que tipo de dado será guardado ali?

-Precisarei tomar decisões?

-Precisarei repetir algo? Quantos passos terá a repetição?


1) Faça um algoritmo em Python que calcule o fatorial de um digitado:


0! = 1
1! = 1
2! = 1*2 = 2
3! = 1*2*3 = 6
4! = 1*2*3*4 = 24
5! = 1*2*3*4*5 = 120
n! = 1*2*3*4*5*6*7*8*9* .....*(n-2)*(n-1)*n


Possível solução


2) Crie um algoritmo em Python  que peça o valor do salário bruto e que calcule os descontos devidos, juntamente com o salário líquido, de acordo com as regras:

a) todos têm desconto de 8% do sal. bruto, referente ao INSS;

b) salários brutos acima de 7000,00 pagam 22% de imposto de renda; entre 4000,00 e 7000,00 pagam 15%; entre 2000,00 e 3999,99 pagam 7%; abaixo de 2000,00 estão isentos.


Casos de teste:

-Alguém que ganhe 1500,00 brutos:
INSS = 0.08*1500 = 120
Sal. Líq = 1500 - 120  = 1380
-Alguém que ganhe 3000,00 brutos:
INSS = 0.08*3000 = 240
IR = 0.07*3000 = 210
Sal. Líq = 3000 - 240 - 210  = 2550
-Alguém que ganhe 10000,00 brutos:
INSS = 0.08*10000 = 800
IR = 0.22*10000 = 2200
Sal. Líq = 10000 - 800 - 2200  = 7000


Possível solução


3) Faça um algoritmo em Python que leia um número inteiro e mostre todos os seus divisores. Exs.:


-10:
1   -> 10%1==0 ?? Sim
2   -> 10%2==0 ?? Sim
3   -> 10%3==0 ?? Não
4   -> 10%4==0 ?? Não
5   -> 10%5==0 ?? Sim
6   -> 10%6==0 ?? Não
7   -> 10%7==0 ?? Não
8   -> 10%8==0 ?? Não
9   -> 10%9==0 ?? Não
10   -> 10%10==0 ?? Sim
Assim,
-10: 1, 2, 5, 10
-100: 1, 2, 4, 5, 10, 20, 50, 100
-49: 1, 7, 49
-121: 1, 11, 121
-45: 1, 3, 5, 15, 45
-400: 1, 2, 4, 5, 8, 10, 20, 40, 50, 100, 200, 400
-7: 1, 7
-11: 1, 11
-13: 1, 13
-1: 1


Uma solução


4) Faça um algoritmo em Python que descubra se um número é ou não é PRIMO. Um número primo é definido como tendo exatamente 2 divisores; assim, use o exercício anterior para lhe ajudar!! Exs.:


-100: Não é primo
-49: Não é primo
-121: Não é primo
-45: Não é primo
-400: Não é primo
-7: É primo
-11: É primo
-13: É primo
-1: Não é primo (só tem 1 divisor, e não 2!!!)


Uma solução


5) Crie um algoritmo em Python que mostre quantas vezes o menor valor de uma lista aparece nela. Ex.:

L = [4, 6, 2, 8, 9, 1, 4, 1, 5, 7, 2, 1] -> o menor elemento (1) aparece 3 vezes

L = [4, 6, 2, 8, 9, 2, 4, 3, 2, 5, 7, 2, 7] -> o menor elemento (2) aparece 4 vezes


6) Crie um algolritmo em Python que diga se uma lista é ou não uma palíndrome, ou seja, se ela lida da esquerda para direita é idêntica se lida da direita para a esquerda. Ex.:

L = [1, 2, 3] -> NÃO é palíndrome porque 1, 2, 3 é diferente de 3, 2, 1

L = ['A', 'R', 'A', 'R', 'A'] -> É palíndrome porque 'A', 'R', 'A', 'R', 'A' é igual a 'A', 'R', 'A', 'R', 'A'

L = [2, 1, 2] -> É palíndrome porque 2, 1, 2 é igual a 2, 1, 2


7) O departamento de meteorologia da prefeitura monitora a quantidade de chuvas todo dia e uma lista é gerada com os valores destas quantidades. Emita um alerta se houver algum valor maior que 3 vezes a média (o que indicaria um desastre!!). Exs.:

L = [10, 15, 20] - > sem alerta

L = [0, 0, 0, 0, 100] -> Alerta!!


8) Escreva um programa que calcule a redução de tempo de vida de um fumante a partir do número de cigarros. Pergunte quantos cigarros ele fuma por dia e há quantos anos fuma. Imprima o tempo de vida perdido em dias. Considere que um cigarro rouba 10 minutos de expectativa de vida.

Requerimento:

* Pergunte quantos cigarros ele fuma por dia;

* Pergunte há quantos anos fuma;

* Calcule o tempo de vida perdido em dias;

* O valor de saída deve ser definido com 1 casa decimal.

Exemplos de saída:

Exemplo 1:

`Digite quantos cigarros você fuma por dia: 10`

`Digite há quantos anos fuma: 20`

`O tempo de vida perdido em dias: 506.9`


Exemplo 2:

`Digite quantos cigarros você fuma por dia: 30`

`Digite há quantos anos fuma: 15`

`O tempo de vida perdido em dias: 1140.6`                                                                                                      


9) Escreva um programa que pergunta a distância que um passageiro deseja percorrer em km. Seu programa deve imprimir o preço da passagem, cobrando 50 centavos por quilômetro para viagens de até 200km e 45 centavos por quilômetro extra para viagens mais longas.

Requerimento:

* Pergunte a distância que um passageiro deseja percorrer em km;

* Calcule o preço da passagem;

* Os valores de saída devem ser definidos com 2 casas decimais.


Exemplos de saída:

Exemplo 1:

`Digite a distância que deseja percorrer: 100`

`O preço da passagem é: R$ 50.00`


Exemplo 2:

`Digite a distância que deseja percorrer: 300`

`O preço da passagem é: R$ 145.00`


10) Faça um programa que recebe 11 números (importante: são 11 variáveis diferentes), representando os dígitos de um CPF, e imprime **Válido** se o CPF for válido ou **Inválido** caso contrário. Por exemplo, se o CPF for 529.982.247-25, os argumentos da sua função serão os números 5, 2, 9, 9, 8, 2, 2, 4, 7, 2, 5, nesta ordem. Os dois últimos dígitos são chamados de dígitos verificadores. Para considerar um CPF como válido, é necessário considerar as regras a seguir:

- Se todos os dígitos forem iguais, o CPF é inválido.

- O primeiro dígito verificador (a penúltima variável) deve ser igual ao resultado da operação a seguir. Multiplique os 9 primeiros dígitos pela sequência decrescente de 10 até 2, some os resultados, multiplique por 10 e então calcule o resto da divisão desse número por 11 e depois o resto da divisão desse resultado por 10.

- O segundo dígito verificador (a última variável) deve ser igual ao resultado da operação a seguir. Multiplique os 10 primeiros dígitos pela sequência decrescente de 11 até 2, some os resultados, multiplique por 10 e então calcule o resto da divisão desse número por 11 e depois o resto da divisão desse resultado por 10.

Exemplos:

- Verificação do primeiro dígito do exemplo acima: 5 x 10 + 2 x 9 + 9 x 8 + 9 x 7 + 8 x 6 + 2 x 5 + 2 x 4 + 4 x 3 + 7 x 2 = 295. Multiplicando esse valor por 10, obtemos 2950. O resto da divisão de 2950 por 11 é 2 e o resto da divisão de 2 por 10 é 2. Portanto o primeiro dígito verificador está correto.

- Para o segundo dígito verificador do exemplo acima, temos: 5 x 11 + 2 x 10 + 9 x 9 + 9 x 8 + 8 x 7 + 2 x 6 + 2 x 5 + 4 x 4 + 7 x 3 + 2 x 2 = 347. Multiplicando por 10, obtemos 3470, o resto da divisão de 3470 por 11 é 5 e o resto da divisão de 5 por 10 é 5. Portanto o segundo dígito verificador também está correto.

A seguir apresentamos alguns outros exemplos:

- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1: inválido

- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2: inválido

- Todos os outros casos com todos os dígitos iguais: inválidos

- 5, 2, 9, 9, 8, 2, 2, 4, 7, 3, 5: inválido, pois vimos que o primeiro dígito verificador deveria ser 2

- 5, 2, 9, 9, 8, 2, 2, 4, 7, 2, 4: inválido, pois vimos que o primeiro dígito verificador deveria ser 5

- 5, 2, 9, 9, 8, 2, 2, 4, 7, 2, 5: válido

- Teste também com o seu próprio CPF


11) Faça um programa em Python que valide uma data no formato dia, mês e ano. Leve em consideração quantos dias tem cada mês e também anos bissextos.

Exemplos:

32/01/2024: inválida

29/02/2023: inválida

31/11/2024: inválida

29/02/2024: válida

21/03/2024: válida



Comentários

Postagens mais visitadas deste blog

Vídeos do Youtube sobre Ciência de Dados