As listas 1 e 2 irão apresentar exercícios resolvidos de programação
básica, com atenção à utilização dos comandos de repetição (loops) e
decisão (if). Esses problemas podem ser resolvidos de formas muito mais
simples utilizando os recursos do R, mas como dito, a finalidade é a
prática de comandos de repetição e decisão.
As listas 3 e 4 conterão os exercícios das listas 1 e 2 resolvidos com
os recursos do R, de forma muito mais simples.
Esta lista de exercíos foi planejada para a prática dos comandos de
operações básicas, de loop, e de decisão.
Existem outras formas mais simples de realizar os mesmos procedimentos
que não serão abordadas nesta lista.
Dadas 3 variáveis com valores numéricos, apresentar o resultado da soma das combinações dois a dois destes três números. Por exemplo, variáveis A, B e C, mostrar A + B, A + C, B + C. Atribuindo valores às variáveis:
a <- 2
b <- 3
c <- 4
Verificando os valores das variáveis:
a
## [1] 2
b
## [1] 3
c
## [1] 4
Fazendo as combinações
a + b
## [1] 5
a + c
## [1] 6
b + c
## [1] 7
Definir duas variáveis A e B e trocar seus valores. Ex: Entrada: A=6 e B=8 Saída: A=8 e B=6.
rm(list=ls())
A <- 6
B <- 8
cat("A e B são ", A, " e " , B)
## A e B são 6 e 8
Aux <- 0
Aux <- A
A <- B
B <- Aux
cat("A e B são ", A, " e " , B)
## A e B são 8 e 6
rm(list=ls())
temperatura <- 38
graus_celsius <- (temperatura - 32) * (5/9)
cat("A temperatura equivalente é ", graus_celsius)
## A temperatura equivalente é 3.333333
cat("A temperatura equivalente é ", (temperatura - 32) * (5/9))
## A temperatura equivalente é 3.333333
# O valor da variável x é 2:
x <- 2
# a) X3 - 4
x^3 -4
## [1] 4
# cat("a) X3 - 4 = ", x^3 - 4)
cat("a) X3 - 4 = ", x^3 -4)
## a) X3 - 4 = 4
# b) O resto da divisão de X / 3
x %% 3
## [1] 2
#cat("O resto da divisão de X / 3 = ", x % 3)
cat("O resto da divisão de X / 3 = ", x %% 3)
## O resto da divisão de X / 3 = 2
# c) X(x/3) + 2
x^3 -4
## [1] 4
# cat("X3 - 4 = ", x^3 -4)
cat("X3 - 4 = ", x^3 -4)
## X3 - 4 = 4
# d) Raiz quadrada de X2
sqrt(x^2)
## [1] 2
# cat("X3 - 4 = ", sqrt(x^2))
cat("X3 - 4 = ", sqrt(x^2))
## X3 - 4 = 2
# a) Crie um vetor com uma sequência de 10 números.
# Estes comandos são similares:
# vetor <- 1:10, ou vetor <- c(1:10), ou vetor <- seq(1,10), ou
# vetor <- c(1,2,3,4,5,6,7,8,9,10)
vetor <- c(1:10)
cat("vetor = ",vetor)
## vetor = 1 2 3 4 5 6 7 8 9 10
# b) Faça um loop para calcular a soma dos números do vetor.
# crio uma variável para guardar a soma o coloco o valor zero nela
soma <- 0
cat("soma = ", soma)
## soma = 0
# criando o loop
for(i in 1:10){
soma <- soma + vetor[i]
}
# apresento o valor da soma
soma
## [1] 55
cat("O valor da soma é: ", soma)
## O valor da soma é: 55
# Média é a soma dividido pela quantidade de observações, ou seja, 10.
# O "i" utilizado no comando "for" guarda a quantidade de observações
# Veja o valor de i:
cat("i = ",i, "\n")
## i = 10
# Logo a média é igual a soma/i
cat("A média é: ", soma/i)
## A média é: 5.5
# Criando as variáveis x e y
x <- 3
y <- 5
if(x > y){
print("x é maior que y")
}else{
print("x é menor que y")
}
## [1] "x é menor que y"
x <- 3
y <- 5
if(x <= y){
print("x é menor ou igual a y")
}else{
print("x é maior ou igual a y")
}
## [1] "x é menor ou igual a y"
vetor <- c(1:10)
# crio uma variável para guardar a soma e coloco o valor zero nela
soma_pares <- 0
# criando o loop
for(i in 1:10){
if(i%%2 == 0){ # somo somente se o resto da divisão de i/2 for zero
soma_pares <- soma_pares + vetor[i]}
}
# apresento o valor da soma
cat("O valor da soma dos pares é: ", soma_pares)
## O valor da soma dos pares é: 30
# crio uma variável para armazenar o valor do fatorial, e atribuo o valor 1 a ela.
mult <- 1
# Defino o numéro que você quer calcular o fatorial
x <- 5
for(i in 1:5){
mult <- mult * i
}
cat("O valor do fatorial é: ", mult)
## O valor do fatorial é: 120
matriz <- matrix(data = 1, nrow = 4, ncol = 4, byrow = TRUE)
matriz
## [,1] [,2] [,3] [,4]
## [1,] 1 1 1 1
## [2,] 1 1 1 1
## [3,] 1 1 1 1
## [4,] 1 1 1 1
matriz <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)
matriz
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [3,] 9 10 11 12
## [4,] 13 14 15 16
df <- as.data.frame(matriz)
df
## V1 V2 V3 V4
## 1 1 2 3 4
## 2 5 6 7 8
## 3 9 10 11 12
## 4 13 14 15 16
# Introdução:
# A matriz do ex 12
matriz <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)
# Para visitarmos todos os valores de uma matriz, precisamos fazer 2 loops, um dentro do outro. Para isso, utilizaremos 2 comandos "for"
# Veja o exemplo para uma matriz 4 x 4
for(linha in 1:4){
for(coluna in 1:4){
cat(matriz[linha, coluna], " ")
}
}
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# Repare que para a primeira linha, visitamos as 4 colunas, por isso os números estão ordenados
# Esse comando pode ser modificado, iniciando-se pelas colunas e percorrendo todas as linhas, basta mudar as posições dos comandos "for". Veja:
for(coluna in 1:4){
for(linha in 1:4){
cat(matriz[linha, coluna], " ")
}
}
## 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
# a) a média de uma coluna da matriz do exercício “12)”.
# média da coluna 2
soma_coluna <- 0
for(linha in 1:4){
for(coluna in 1:4){
if(coluna == 2){ # serão somados somente os valores da coluna 2
soma_coluna <- soma_coluna + matriz[linha, coluna]
}
}
}
# A média da coluna é a soma da coluna dividido pela quantidade de linhas dessa coluna
media_coluna <- soma_coluna/linha
media_coluna
## [1] 8
# b) A média de todas as colunas da matriz do exercício “12)”.
# vamos criar um vetor do tamanho da quantidade de colunas, 4
v_soma_colunas <- rep(0,4) # repete 4 vezes o valor 0
for(linha in 1:4){
for(coluna in 1:4){
v_soma_colunas[coluna] <- v_soma_colunas[coluna] + matriz[linha, coluna]
}
}
v_soma_colunas
## [1] 28 32 36 40
media_colunas <- v_soma_colunas/linha
media_colunas
## [1] 7 8 9 10
# c) A média de todas as linhas da matriz do exercício “12)”.
# Neste caso, é só dividir o vetor anterior pelo quantidade de linhas
v_soma_linhas <- rep(0,4) # repete 4 vezes o valor 0
for(linha in 1:4){
for(coluna in 1:4){
v_soma_linhas[linha] <- v_soma_linhas[linha] + matriz[linha, coluna]
}
}
v_soma_linhas
## [1] 10 26 42 58
media_linhas <- v_soma_linhas/coluna
media_linhas
## [1] 2.5 6.5 10.5 14.5
# d) A média dos números pares de todas as colunas da matriz do exercício “12)”.
v_soma_npar_colunas <- rep(0,4) # repete 4 vezes o valor 0
for(linha in 1:4){
for(coluna in 1:4){
if(matriz[linha, coluna]%%2 == 0){
v_soma_npar_colunas[coluna] <- v_soma_npar_colunas[coluna] + matriz[linha, coluna]}
}
}
v_soma_npar_colunas
## [1] 0 32 0 40
media_npar_colunas <- v_soma_npar_colunas/linha
media_npar_colunas
## [1] 0 8 0 10
# e) A média dos números ímpares de todas as linhas da matriz do exercício “12)”.
v_soma_nimpar_linhas <- rep(0,4) # repete 4 vezes o valor 0
cont <- rep(0,4)
for(linha in 1:4){
for(coluna in 1:4){
if(matriz[linha, coluna]%%2 != 0){
v_soma_nimpar_linhas[linha] <- v_soma_nimpar_linhas[linha] + matriz[linha, coluna]
cont[linha] <- cont[linha] +1}
}
}
v_soma_nimpar_linhas
## [1] 4 12 20 28
cont
## [1] 2 2 2 2
media_nimpar_linhas <- rep(0,4)
for(linha in 1:dim(matriz)[1]){
if(cont[linha] != 0){
media_nimpar_linhas[linha] <- v_soma_nimpar_linhas[linha]/cont[linha]}
else{
media_nimpar_linhas[linha] <- 0
}
}
media_nimpar_linhas
## [1] 2 6 10 14
# f) A soma da diagonal principal da matriz.
soma_diagonal <- 0
for(linha in 1:4){
for(coluna in 1:4){
if(linha == coluna){
soma_diagonal <- soma_diagonal + matriz[linha, coluna]}
}
}
soma_diagonal
## [1] 34
# g) A soma da diagonal secundária da matriz (desafio).
# Uma dica: a soma dos índices da diagonal secundária de uma matriz é a sua dimensão mais 1.
soma_diagonal_secundaria <- 0
for(linha in 1:4){
for(coluna in 1:4){
if((linha + coluna) == 5){
soma_diagonal_secundaria <- soma_diagonal_secundaria + matriz[linha, coluna]}
}
}
soma_diagonal_secundaria
## [1] 34
Este exercício pode ser refeito de forma genérica alterando-se as
dimensões da matriz .
veja.
# As dimensões de uma matriz podem ser vistas com o comando dim(matriz)
dim(matriz)
## [1] 4 4
# O resultado deste comando é um vetor de 2 posições, onde a primeira posição é a quantidade de linhas da matriz e a segunda posição é a quantidade de colunas da matriz. Por isso, para saber a quantidade de linhas, utilizamos o comando dim(matriz)[1]
dim(matriz)[1]
## [1] 4
# Para quantidade de coluna utilizamos o dim(matiz)[2]
dim(matriz)[2]
## [1] 4
# Para entendermos melhor, vamos mudar as dimensões da matriz para 6x6
matriz <- matrix(data = 1:36, nrow = 6, ncol = 6, byrow = TRUE)
Refazendo
# a) a média de uma coluna da matriz do exercício “12)”.
# média da coluna 2
soma_coluna <- 0
for(linha in 1:dim(matriz)[1]){
for(coluna in 1:dim(matriz)[2]){
if(coluna == 2){ # serão somados somente os valores da coluna 2
soma_coluna <- soma_coluna + matriz[linha, coluna]
}
}
}
# A média da coluna é a soma da coluna dividido pela quantidade de linhas dessa coluna
media_coluna <- soma_coluna/dim(matriz)[1]
media_coluna
## [1] 17
# b) A média de todas as colunas da matriz do exercício “12)”.
# vamos criar um vetor do tamanho da quantidade de colunas, 4
v_soma_colunas <- rep(0,dim(matriz)[1]) # repete 4 vezes o valor 0
for(linha in 1:dim(matriz)[1]){
for(coluna in 1:dim(matriz)[2]){
v_soma_colunas[coluna] <- v_soma_colunas[coluna] + matriz[linha, coluna]
}
}
v_soma_colunas
## [1] 96 102 108 114 120 126
# c) A média de todas as linhas da matriz do exercício “12)”.
# Neste caso, é só dividir o vetor anterior pelo quantidade de linhas
# d) A média dos números pares de todas as colunas da matriz do exercício “12)”.
v_soma_npar_colunas <- rep(0,dim(matriz)[2]) # repete 4 vezes o valor 0
cont <- rep(0,dim(matriz)[2]) # contador para quantidade de vezer que surge o número par
for(linha in 1:dim(matriz)[1]){
for(coluna in 1:dim(matriz)[2]){
if(matriz[linha, coluna]%%2 == 0){
v_soma_npar_colunas[coluna] <- v_soma_npar_colunas[coluna] + matriz[linha, coluna]
cont[coluna] <- cont[coluna] + 1}
}
}
v_soma_npar_colunas
## [1] 0 102 0 114 0 126
cont
## [1] 0 6 0 6 0 6
for(coluna in 1:dim(matriz)[2]){
if(cont[coluna] != 0){
media_npar_colunas[coluna] <- v_soma_npar_colunas[coluna]/cont[coluna]}
else{
media_npar_colunas[coluna] <- 0
}
}
media_npar_colunas
## [1] 0 17 0 19 0 21
# e) A média dos números ímpares de todas as linhas da matriz do exercício “12)”.
v_soma_nimpar_linhas <- rep(0,dim(matriz)[1]) # repete 4 vezes o valor 0
cont <- rep(0,dim(matriz)[1])
for(linha in 1:dim(matriz)[1]){
for(coluna in 1:dim(matriz)[2]){
if(matriz[linha, coluna]%%2 != 0){
v_soma_nimpar_linhas[linha] <- v_soma_nimpar_linhas[linha] + matriz[linha, coluna]
cont[linha] <- cont[linha] +1}
}
}
v_soma_nimpar_linhas
## [1] 9 27 45 63 81 99
cont
## [1] 3 3 3 3 3 3
media_nimpar_linhas <- rep(0,dim(matriz)[1])
for(linha in 1:dim(matriz)[1]){
if(cont[linha] != 0){
media_nimpar_linhas[linha] <- v_soma_nimpar_linhas[linha]/cont[linha]}
else{
media_nimpar_linhas[linha] <- 0
}
}
media_nimpar_linhas
## [1] 3 9 15 21 27 33
# f) A soma da diagonal principal da matriz.
soma_diagonal <- 0
for(linha in 1:dim(matriz)[1]){
for(coluna in 1:dim(matriz)[2]){
if(linha == coluna){
soma_diagonal <- soma_diagonal + matriz[linha, coluna]}
}
}
soma_diagonal
## [1] 111
# g) A soma da diagonal secundária da matriz (desafio).
# Uma dica: a soma dos índices da diagonal secundária de uma matriz é a sua dimensão mais 1.
soma_diagonal_secundaria <- 0
for(linha in 1:dim(matriz)[1]){
for(coluna in 1:dim(matriz)[2]){
if((linha + coluna) == 1+dim(matriz)[1]){
soma_diagonal_secundaria <- soma_diagonal_secundaria + matriz[linha, coluna]}
}
}
soma_diagonal_secundaria
## [1] 111
df <- as.data.frame(matriz)
soma_coluna <- 0
for(linha in 1:dim(df)[1]){
for(coluna in 1:dim(df)[2]){
if(coluna == 2){ # serão somados somente os valores da coluna 2
soma_coluna <- soma_coluna + df[linha, coluna]
}
}
}
# A média da coluna é a soma da coluna dividido pela quantidade de linhas dessa coluna
media_coluna <- soma_coluna/dim(df)[1]
media_coluna
## [1] 17
# b) A média de todas as colunas da matriz do exercício “12)”.
# vamos criar um vetor do tamanho da quantidade de colunas, 4
v_soma_colunas <- rep(0,dim(df)[1]) # repete 4 vezes o valor 0
for(linha in 1:dim(df)[1]){
for(coluna in 1:dim(df)[2]){
v_soma_colunas[coluna] <- v_soma_colunas[coluna] + df[linha, coluna]
}
}
v_soma_colunas
## [1] 96 102 108 114 120 126
# c) A média de todas as linhas da matriz do exercício “12)”.
# Neste caso, é só dividir o vetor anterior pelo quantidade de linhas
media_colunas <- v_soma_colunas/dim(df)[1]
media_colunas
## [1] 16 17 18 19 20 21
# d) A média dos números pares de todas as colunas da matriz do exercício “12)”.
v_soma_npar_colunas <- rep(0,dim(df)[2]) # repete 4 vezes o valor 0
for(linha in 1:dim(df)[1]){
for(coluna in 1:dim(df)[2]){
if(df[linha, coluna]%%2 == 0){
v_soma_npar_colunas[coluna] <- v_soma_npar_colunas[coluna] + df[linha, coluna]}
}
}
v_soma_npar_colunas
## [1] 0 102 0 114 0 126
media_npar_colunas <- v_soma_npar_colunas/dim(df)[1]
media_npar_colunas
## [1] 0 17 0 19 0 21
# e) A média dos números ímpares de todas as linhas da matriz do exercício “12)”.
v_soma_nimpar_linhas <- rep(0,dim(df)[2]) # repete 4 vezes o valor 0
for(linha in 1:dim(df)[1]){
for(coluna in 1:dim(df)[2]){
if(matriz[linha, coluna]%%2 != 0){
v_soma_nimpar_linhas[linha] <- v_soma_nimpar_linhas[linha] + df[linha, coluna]}
}
}
v_soma_nimpar_linhas
## [1] 9 27 45 63 81 99
media_nimpar_linha <- v_soma_nimpar_linhas[linha]/dim(df)[2]
media_nimpar_linha
## [1] 16.5
# f) A soma da diagonal principal da matriz.
soma_diagonal <- 0
for(linha in 1:dim(df)[1]){
for(coluna in 1:dim(df)[2]){
if(linha == coluna){
soma_diagonal <- soma_diagonal + df[linha, coluna]}
}
}
soma_diagonal
## [1] 111
# g) A soma da diagonal secundária da matriz (desafio).
# Uma dica: a soma dos índices da diagonal secundária de uma matriz é a sua dimensão mais 1.
soma_diagonal_secundaria <- 0
for(linha in 1:dim(df)[1]){
for(coluna in 1:dim(df)[2]){
if((linha + coluna) == 1+dim(df)[1]){
soma_diagonal_secundaria <- soma_diagonal_secundaria + df[linha, coluna]}
}
}
soma_diagonal_secundaria
## [1] 111
Calcular o salário mensal final de um vendedor. As seguintes informações determinam esse valor: a) salário fixo – R$ 5000,00 b) total de vendas por ele efetuadas – R$ 20.000,00 c) percentual que ele recebe sobre o total de vendas – 5% d) INSS de 11% sobre o salário fixo. e) IR de 27% sobre o total de rendimentos.
#Ex 1 - Rev2
sal_fixo <- 5000
tot_vendas <- 20000
perc_vendas <- 0.05
perc_inss <- 0.11
perc_irpf <- 0.27
comissao <- perc_vendas * tot_vendas
comissao
## [1] 1000
val_inss <- perc_inss * sal_fixo
val_inss
## [1] 550
tot_rend <- sal_fixo + comissao - val_inss
tot_rend
## [1] 5450
val_irpf <- tot_rend * perc_irpf
val_irpf
## [1] 1471.5
sal <- tot_rend - val_irpf
sal
## [1] 3978.5
Imprimindo um Bilhete de pagamento
cat("\n\n Bilhete de Pagamento", "\n")
##
##
## Bilhete de Pagamento
cat("Salario fixo ", sal_fixo, "\n",
"Comissão ", comissao, "\n",
"___________________________", "\n",
"Desconto INSS ", val_inss, "\n",
"Desconto IRPF ", val_irpf, "\n",
"___________________________", "\n",
"Líquido a receber", sal, "\n")
## Salario fixo 5000
## Comissão 1000
## ___________________________
## Desconto INSS 550
## Desconto IRPF 1471.5
## ___________________________
## Líquido a receber 3978.5
NOME | Salario_Base | Vendas |
---|---|---|
VENDEDOR 1 | 1800 | 20000 |
VENDEDOR 2 | 2500 | 30000 |
VENDEDOR 3 | 2500 | 25000 |
VENDEDOR 4 | 3000 | 15000 |
VENDEDOR 5 | 3500 | 27000 |
VENDEDOR 6 | 4000 | 30000 |
VENDEDOR 7 | 5000 | 32000 |
O valor da alíquota do IR deve ser calculado sobre o salário base, conforme os dados abaixo:
Base de cálculo | Alíquota |
---|---|
Até 1.903,98 | Isento |
De 1.903,99 até 2.826,65 | 7,50% |
De 2.826,66 até 3.751,05 | 15% |
De 3.751,06 até 4.664,68 | 22,50% |
Acima de 4.664,68 | 27,50% |
# Incluindo a alíquota de IR na tabela
df$Aliq_IRPF <- 0 # incluo uma nova coluna no df
for(linha in 1:dim(df)[1]){
if(df$Salario_Base[linha] > 4664.68){df$Aliq_IRPF[linha] <- 0.275}
if(df$Salario_Base[linha] < 4664.68){df$Aliq_IRPF[linha] <- 0.225}
if(df$Salario_Base[linha] < 3751.05){df$Aliq_IRPF[linha] <- 0.15}
if(df$Salario_Base[linha] < 2826.65){df$Aliq_IRPF[linha] <- 0.075}
if(df$Salario_Base[linha] < 1903.98){df$Aliq_IRPF[linha] <- 0}
}
Calculando o valor do IRPF
for(i in 1:dim(df)[1]){
df$IRPF[i] <- df$Aliq_IRPF[i] * df$Salario_Base[i]}
df
## NOME Salario_Base Vendas Aliq_IRPF IRPF
## 1 VENDEDOR 1 1800 20000 0.000 0.0
## 2 VENDEDOR 2 2500 30000 0.075 187.5
## 3 VENDEDOR 3 2500 25000 0.075 187.5
## 4 VENDEDOR 4 3000 15000 0.150 450.0
## 5 VENDEDOR 5 3500 27000 0.150 525.0
## 6 VENDEDOR 6 4000 30000 0.225 900.0
## 7 VENDEDOR 7 5000 32000 0.275 1375.0
Calculando o valor do INSS
perc_inss <- 0.11
for(i in 1:dim(df)[1]){
df$INSS[i] <- df$Salario_Base[i] * perc_inss}
df
## NOME Salario_Base Vendas Aliq_IRPF IRPF INSS
## 1 VENDEDOR 1 1800 20000 0.000 0.0 198
## 2 VENDEDOR 2 2500 30000 0.075 187.5 275
## 3 VENDEDOR 3 2500 25000 0.075 187.5 275
## 4 VENDEDOR 4 3000 15000 0.150 450.0 330
## 5 VENDEDOR 5 3500 27000 0.150 525.0 385
## 6 VENDEDOR 6 4000 30000 0.225 900.0 440
## 7 VENDEDOR 7 5000 32000 0.275 1375.0 550
Calculando o valor do comissão
perc_comissao <- 0.05
for(i in 1:dim(df)[1]){
df$Comissao[i] <- df$Vendas[i] * perc_comissao}
df
## NOME Salario_Base Vendas Aliq_IRPF IRPF INSS Comissao
## 1 VENDEDOR 1 1800 20000 0.000 0.0 198 1000
## 2 VENDEDOR 2 2500 30000 0.075 187.5 275 1500
## 3 VENDEDOR 3 2500 25000 0.075 187.5 275 1250
## 4 VENDEDOR 4 3000 15000 0.150 450.0 330 750
## 5 VENDEDOR 5 3500 27000 0.150 525.0 385 1350
## 6 VENDEDOR 6 4000 30000 0.225 900.0 440 1500
## 7 VENDEDOR 7 5000 32000 0.275 1375.0 550 1600
Calculando o valor líquido a receber
for(i in 1:dim(df)[1]){
df$Sal_Liquido[i] <- df$Salario_Base[i] + df$Comissao[i] - df$INSS[i] - df$IRPF[i]
}
df
## NOME Salario_Base Vendas Aliq_IRPF IRPF INSS Comissao Sal_Liquido
## 1 VENDEDOR 1 1800 20000 0.000 0.0 198 1000 2602.0
## 2 VENDEDOR 2 2500 30000 0.075 187.5 275 1500 3537.5
## 3 VENDEDOR 3 2500 25000 0.075 187.5 275 1250 3287.5
## 4 VENDEDOR 4 3000 15000 0.150 450.0 330 750 2970.0
## 5 VENDEDOR 5 3500 27000 0.150 525.0 385 1350 3940.0
## 6 VENDEDOR 6 4000 30000 0.225 900.0 440 1500 4160.0
## 7 VENDEDOR 7 5000 32000 0.275 1375.0 550 1600 4675.0
Elabore um programa para efetuar o cálculo da quantidade de garrafas e de engradados de cerveja consumida por um determinado bloco durante o carnaval, considerando que 5000 foliões bebem cerca de 2 litros durante o desfile do bloco.
Outras informações:
• considerar que um engradado de cerveja tem 24 garrafas de 600
ml.
• Cada garrafa custa R$ 8,00, e que o engradado custa R$ 180,00.
Qual será o lucro do comerciante considerando que:
a) Ele compre as garrafas avulsas e venda cada garrafa a R$ 15,00.
b) Ele compre o engradado e venda cada garrafa a R$ 15,00 (ele não pode
comprar fração do engradado – arredonde para menos).
c) Ele venda o copo de 500 ml a R$ 15,00 – cada copo plástico sai a R$
0,20.
Faça uma função para o lucro.
Resolvendo a função para o lucro.
lucro <- function(receitas, despesas){
return (receitas - despesas)
}
Definindo as variáveis básicas.
# Custo da garrafa avulsa
custo_garrrafa_avulsa <- 8
custo_garrrafa_avulsa
## [1] 8
# Valor da garrafa vendida
valor_garrafa_vendida <- 15
valor_garrafa_vendida
## [1] 15
# Garrafas do engradado
garrafas_engradado <- 24
# Engradado - 24*600= 14400 ml <- 144 L
vol_engradado <- 24 * 600
vol_engradado
## [1] 14400
# Foliões - 5000 cada um 2L;
total_consumido_ml <- 5000 * 2000
total_consumido_ml
## [1] 1e+07
# Letra A
garrafas_vendidas <- total_consumido_ml/600
garrafas_vendidas
## [1] 16666.67
receita_venda_garrafa <- garrafas_vendidas * 15
despesa_garrafa <- garrafas_vendidas * 8
lucro_a <-lucro(receita_venda_garrafa, despesa_garrafa)
print(paste("Se comprar as garrafas avulsas e vender cada garrafa a R$ 15,00, o lucro será de:", lucro_a))
## [1] "Se comprar as garrafas avulsas e vender cada garrafa a R$ 15,00, o lucro será de: 116666.666666667"
receita_por_engradado <- garrafas_engradado * 15
receita_por_engradado
## [1] 360
engradados_vendidos <-total_consumido_ml / vol_engradado
engradados_vendidos
## [1] 694.4444
# Arredondando para baixo
engradados_vendidos <- round(engradados_vendidos,0)
engradados_vendidos
## [1] 694
receita_total_engradados <- engradados_vendidos * receita_por_engradado
receita_total_engradados
## [1] 249840
despesa_por_engradado <- 180
despesa_por_engradado
## [1] 180
despesa_total_engradado <- engradados_vendidos * despesa_por_engradado
despesa_total_engradado
## [1] 124920
lucro_b <- lucro(receita_total_engradados, despesa_total_engradado)
print(paste("Ao comprar o engradado e vender cada garrafa a R$ 15,00, o lucro será de:", lucro_b))
## [1] "Ao comprar o engradado e vender cada garrafa a R$ 15,00, o lucro será de: 124920"
# Valor do copo vendido
valor_copo_vendido <- 15
valor_copo_vendido
## [1] 15
total_copos_vendidos <- total_consumido_ml / 500 # cada copo tem 500ml
total_copos_vendidos
## [1] 20000
receita_copos_vendidos <- total_copos_vendidos * valor_copo_vendido
receita_copos_vendidos
## [1] 3e+05
# Valor da cerveja do copo considerando a garrafa R$ 8,00
custo_cerveja_do_copo <- 500 * 8 /600
custo_cerveja_do_copo
## [1] 6.666667
custo_copo_plastico <- 0.2
custo_copo_plastico
## [1] 0.2
custo_copo_vendido <- custo_cerveja_do_copo + custo_copo_plastico
custo_copo_vendido
## [1] 6.866667
lucro_c <- lucro(receita_copos_vendidos, custo_copo_vendido)
lucro_c
## [1] 299993.1
paste("Ao vender o copo de 500 ml a R$ 15,00, o lucro será de:", lucro_c)
## [1] "Ao vender o copo de 500 ml a R$ 15,00, o lucro será de: 299993.133333333"
Nome_Aluno | Diciplina_1 | Diciplina_2 | Diciplina_3 |
---|---|---|---|
Aluno 1 | 3 | 10 | 7 |
Aluno 2 | 4 | 9 | 8 |
Aluno 3 | 5 | 8 | 9 |
Aluno 4 | 6 | 7 | 10 |
Aluno 5 | 7 | 6 | 7 |
Aluno 6 | 8 | 5 | 8 |
Aluno 7 | 9 | 4 | 9 |
Faça funções para calcular: a) A média de cada aluno (CR) b) A média de cada disciplina. c) A média final da turma. d) O aluno com média mais alta. e) A lista de alunos reprovados, por disciplina.
Respostas a) A média de cada aluno (CR)
Media_Aluno <- function(n1,n2,n3){
return(round((n1+n2+n3)/3,2))
}
for(i in 1:dim(df)[1]){
df$Media_Aluno[i] <- Media_Aluno(df$Diciplina_1[i],df$Diciplina_2[i], df$Diciplina_3[i])
}
df
## Nome_Aluno Diciplina_1 Diciplina_2 Diciplina_3 Media_Aluno
## 1 Aluno 1 3 10 7 6.67
## 2 Aluno 2 4 9 8 7.00
## 3 Aluno 3 5 8 9 7.33
## 4 Aluno 4 6 7 10 7.67
## 5 Aluno 5 7 6 7 6.67
## 6 Aluno 6 8 5 8 7.00
## 7 Aluno 7 9 4 9 7.33
Media_Disciplina <- function(dados, disc){
return(mean(dados[,(disc+1)]))
}
m1 <- Media_Disciplina(df,1)
m2 <- Media_Disciplina(df,2)
m3 <- Media_Disciplina(df,3)
A média da disciplina 1 é 6.
A média da disciplina 2 é 7.
A média da disciplina 3 é 8.29.
Ou A média da disciplina 1 é 6.
A média da disciplina 1 é 7.
A média da disciplina 1 é 8.2857143.
soma <- 0
Media_Turma <- function(df){
for(i in 1:dim(df)[1]){
soma <- soma + df$Media_Aluno[i]
}
return(soma/i)
}
A média da turma é 7.1
maior_media_aluno <- 0
aluno_maior_media <- 0
Maior_Media <- function(df){
for(i in 1:dim(df)[1]){
if(df$Media_Aluno[i] >= maior_media_aluno){
maior_media_aluno <- df$Media_Aluno[i]
aluno_maior_media <- i
}
}
return(aluno_maior_media)
}
aluno_maior_med <- Maior_Media(df)
aluno_maior_med
## [1] 4
O aluno com maior média é o Aluno 4, cuja média é 7.67.
# Vamos criar uma função que irá adicionar uma coluna na tabela de alunos
# Consideraremos o aluno com uma média abaixo de 5 como reprovado
Reprovados <- function(df){
for(i in 1:dim(df)[1]){
if(df[i,2]<5 | df[i,3]<5 | df[i,4]< 5) {df$Condicao[i] <- "Reprovado"}
else df$Condicao[i] <- "Aprovado"
}
return(df)
}
df <- Reprovados(df)
Quadro final dos alunos é:Nome_Aluno | Diciplina_1 | Diciplina_2 | Diciplina_3 | Media_Aluno | Condicao |
---|---|---|---|---|---|
Aluno 1 | 3 | 10 | 7 | 6.67 | Reprovado |
Aluno 2 | 4 | 9 | 8 | 7.00 | Reprovado |
Aluno 3 | 5 | 8 | 9 | 7.33 | Aprovado |
Aluno 4 | 6 | 7 | 10 | 7.67 | Aprovado |
Aluno 5 | 7 | 6 | 7 | 6.67 | Aprovado |
Aluno 6 | 8 | 5 | 8 | 7.00 | Aprovado |
Aluno 7 | 9 | 4 | 9 | 7.33 | Reprovado |
Dadas 3 variáveis com valores numéricos, apresentar o resultado da soma das combinações dois a dois destes três números. Por exemplo, variáveis A, B e C, mostrar A + B, A + C, B + C. Atribuindo valores às variáveis:
# Não há alteração na solução da lista 1
a <- 2
b <- 3
c <- 4
(a + b) # o parêntesis faz com que o valor da operação seja apresentado
## [1] 5
(a + c)
## [1] 6
(b + c)
## [1] 7
Definir duas variáveis A e B e trocar seus valores. Ex: Entrada: A=6 e B=8 Saída: A=8 e B=6.
rm(list=ls())
# Não há alteração na solução da lista 1
A <- 6
B <- 8
Aux <- 0
Aux <- A
A <- B
B <- Aux
cat("A e B são ", A, " e " , B)
## A e B são 8 e 6
rm(list=ls())
# Não há alteração na solução da lista 1
temperatura <- 38
graus_celsius <- (temperatura - 32) * (5/9)
cat("A temperatura equivalente é ", graus_celsius)
## A temperatura equivalente é 3.333333
cat("A temperatura equivalente é ", (temperatura - 32) * (5/9))
## A temperatura equivalente é 3.333333
# Não há alteração na solução da lista 1
# O valor da variável x é 2:
x <- 2
# a) X3 - 4
(x^3 -4)
## [1] 4
# b) O resto da divisão de X / 3
(x %% 3)
## [1] 2
# c) X(x/3) + 2
(x^3 -4)
## [1] 4
# d) Raiz quadrada de X2
(sqrt(x^2))
## [1] 2
# a) Crie um vetor com uma sequência de 10 números.
# Estes comandos são similares:
# vetor <- 1:10, ou vetor <- c(1:10), ou vetor <- seq(1,10), ou
# vetor <- c(1,2,3,4,5,6,7,8,9,10)
vetor <- c(1:10)
# Calcular a soma dos números do vetor.
# utilizar o comando "sum"
soma <- sum(vetor)
soma
## [1] 55
# Para média utilizar o comando mean
# Outros comandos estatísticos:
# desvio-padrão - comando sd()
# mediana - comando median()
# máximo - comando max()
# mínimo - comando min()
media <- mean(vetor)
media
## [1] 5.5
# Não há alteração na solução da lista 1
# Criando as variáveis x e y
x <- 3
y <- 5
if(x > y){
print("x é maior que y")
}else{
print("x é menor que y")
}
## [1] "x é menor que y"
# Não há alteração na solução da lista 1
x <- 3
y <- 5
if(x <= y){
print("x é menor ou igual a y")
}else{
print("x é maior ou igual a y")
}
## [1] "x é menor ou igual a y"
vetor <- c(1:10)
# Crio uma condição na chamada dos indices. No caso abaixo, o valor de cada posição do vetor é comparada e só retorna aqueles valores cujas divisões por 2 é 0.
vetor[vetor[]%%2 == 0]
## [1] 2 4 6 8 10
# realizo a soma
sum(vetor[vetor[]%%2 == 0])
## [1] 30
# Utilizar a função "factorial"
factorial(5)
## [1] 120
# Não há alteração na solução da lista 1
matriz <- matrix(data = 1, nrow = 4, ncol = 4, byrow = TRUE)
matriz
## [,1] [,2] [,3] [,4]
## [1,] 1 1 1 1
## [2,] 1 1 1 1
## [3,] 1 1 1 1
## [4,] 1 1 1 1
# Não há alteração na solução da lista 1
matriz <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)
matriz
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [3,] 9 10 11 12
## [4,] 13 14 15 16
# Não há alteração na solução da lista 1
df <- as.data.frame(matriz)
df
## V1 V2 V3 V4
## 1 1 2 3 4
## 2 5 6 7 8
## 3 9 10 11 12
## 4 13 14 15 16
# Introdução:
# A matriz do ex 12
matriz <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)
# média da coluna 2
mean(matriz[,2])
## [1] 8
summary(matriz) # O comando summary calcula as estatísticas básicas de cada coluna
## V1 V2 V3 V4
## Min. : 1 Min. : 2 Min. : 3 Min. : 4
## 1st Qu.: 4 1st Qu.: 5 1st Qu.: 6 1st Qu.: 7
## Median : 7 Median : 8 Median : 9 Median :10
## Mean : 7 Mean : 8 Mean : 9 Mean :10
## 3rd Qu.:10 3rd Qu.:11 3rd Qu.:12 3rd Qu.:13
## Max. :13 Max. :14 Max. :15 Max. :16
summary(matriz)[4,] # retorno somente as médias
## V1 V2 V3 V4
## "Mean : 7 " "Mean : 8 " "Mean : 9 " "Mean :10 "
# calculo a média das coluna da matriz transposta
summary(t(matriz[,]))
## V1 V2 V3 V4
## Min. :1.00 Min. :5.00 Min. : 9.00 Min. :13.00
## 1st Qu.:1.75 1st Qu.:5.75 1st Qu.: 9.75 1st Qu.:13.75
## Median :2.50 Median :6.50 Median :10.50 Median :14.50
## Mean :2.50 Mean :6.50 Mean :10.50 Mean :14.50
## 3rd Qu.:3.25 3rd Qu.:7.25 3rd Qu.:11.25 3rd Qu.:15.25
## Max. :4.00 Max. :8.00 Max. :12.00 Max. :16.00
summary(t(matriz[,]))[4,]
## V1 V2 V3 V4
## "Mean :2.50 " "Mean :6.50 " "Mean :10.50 " "Mean :14.50 "
vt_npares_col_media <- rep(0,dim(matriz)[2])
vt_npares_col_media[c(1:dim(matriz)[2])] <- 0
for(coluna in 1:dim(matriz)[2]){
vt <- matriz[,coluna]
vt_npares_col_media[coluna] <- ifelse(!is.na(mean(vt[vt%%2 == 0])),mean(vt[vt%%2 == 0]),0)
}
vt_npares_col_media
## [1] 0 8 0 10
vt_nimpares_linha_media <- rep(0,dim(matriz)[1])
for(linha in 1:dim(matriz)[1]){
vt <- matriz[linha,]
vt_nimpares_linha_media[linha] <- ifelse(!is.na(mean(vt[vt%%2 != 0])),mean(vt[vt%%2 != 0]),0)
}
vt_nimpares_linha_media
## [1] 2 6 10 14
# O comando diag extrai a diagonal da matriz em um vetor
diag(matriz)
## [1] 1 6 11 16
sum(diag(matriz))
## [1] 34
# Uma dica: a soma dos índices da diagonal secundária de uma matriz é a sua dimensão mais 1.
# Não há alteração na solução da lista 1
soma_diagonal_secundaria <- 0
for(linha in 1:4){
for(coluna in 1:4){
if((linha + coluna) == 5){
soma_diagonal_secundaria <- soma_diagonal_secundaria + matriz[linha, coluna]}
}
}
soma_diagonal_secundaria
## [1] 34
df <- as.data.frame(matriz)
# média da coluna 2
mean(df[,2])
## [1] 8
summary(df) # O comando summary calcula as estatísticas básicas de cada coluna
## V1 V2 V3 V4
## Min. : 1 Min. : 2 Min. : 3 Min. : 4
## 1st Qu.: 4 1st Qu.: 5 1st Qu.: 6 1st Qu.: 7
## Median : 7 Median : 8 Median : 9 Median :10
## Mean : 7 Mean : 8 Mean : 9 Mean :10
## 3rd Qu.:10 3rd Qu.:11 3rd Qu.:12 3rd Qu.:13
## Max. :13 Max. :14 Max. :15 Max. :16
summary(df)[4,] # retorno somente as médias
## V1 V2 V3 V4
## "Mean : 7 " "Mean : 8 " "Mean : 9 " "Mean :10 "
# calculo a média das coluna da matriz transposta
summary(t(df[,]))
## V1 V2 V3 V4
## Min. :1.00 Min. :5.00 Min. : 9.00 Min. :13.00
## 1st Qu.:1.75 1st Qu.:5.75 1st Qu.: 9.75 1st Qu.:13.75
## Median :2.50 Median :6.50 Median :10.50 Median :14.50
## Mean :2.50 Mean :6.50 Mean :10.50 Mean :14.50
## 3rd Qu.:3.25 3rd Qu.:7.25 3rd Qu.:11.25 3rd Qu.:15.25
## Max. :4.00 Max. :8.00 Max. :12.00 Max. :16.00
summary(t(df[,]))[4,]
## V1 V2 V3 V4
## "Mean :2.50 " "Mean :6.50 " "Mean :10.50 " "Mean :14.50 "
for(coluna in 1:dim(df)[2]){
vt <- df[,coluna]
vt_npares_col_media[coluna] <- ifelse(!is.na(mean(vt[vt%%2 == 0])),mean(vt[vt%%2 == 0]),0)
}
vt_npares_col_media
## [1] 0 8 0 10
vt_nimpares_linha_media <- rep(0,dim(df)[1])
for(linha in 1:dim(df)[1]){
vt <- df[linha,]
vt_nimpares_linha_media[linha] <- ifelse(!is.na(mean(vt[vt%%2 != 0])),mean(vt[vt%%2 != 0]),0)
}
vt_nimpares_linha_media
## [1] 2 6 10 14
# O comando diag extrai a diagonal da matriz em um vetor
#diag(df)
#sum(diag(df))
diag(as.matrix(df))
## [1] 1 6 11 16
sum(diag(as.matrix(df)))
## [1] 34
# Uma dica: a soma dos índices da diagonal secundária de uma matriz é a sua dimensão mais 1.
# Não há alteração na solução da lista 1
soma_diagonal_secundaria <- 0
for(linha in 1:4){
for(coluna in 1:4){
if((linha + coluna) == 5){
soma_diagonal_secundaria <- soma_diagonal_secundaria + df[linha, coluna]}
}
}
soma_diagonal_secundaria
## [1] 34
Calcular o salário mensal final de um vendedor. As seguintes
informações determinam esse valor: a) salário fixo – R$ 5000,00 b) total
de vendas por ele efetuadas – R$ 20.000,00 c) percentual que ele recebe
sobre o total de vendas – 5% d) INSS de 11% sobre o salário fixo. e) IR
de 27% sobre o total de rendimentos.
Não há alteração na solução da lista 2
#Ex 1 - Rev2
sal_fixo <- 5000
tot_vendas <- 20000
perc_vendas <- 0.05
perc_inss <- 0.11
perc_irpf <- 0.27
comissao <- perc_vendas * tot_vendas
comissao
## [1] 1000
val_inss <- perc_inss * sal_fixo
val_inss
## [1] 550
tot_rend <- sal_fixo + comissao - val_inss
tot_rend
## [1] 5450
val_irpf <- tot_rend * perc_irpf
val_irpf
## [1] 1471.5
sal <- tot_rend - val_irpf
sal
## [1] 3978.5
Imprimindo um Bilhete de pagamento
cat("\n\n Bilhete de Pagamento", "\n")
##
##
## Bilhete de Pagamento
cat("Salario fixo ", sal_fixo, "\n",
"Comissão ", comissao, "\n",
"___________________________", "\n",
"Desconto INSS ", val_inss, "\n",
"Desconto IRPF ", val_irpf, "\n",
"___________________________", "\n",
"Líquido a receber", sal, "\n")
## Salario fixo 5000
## Comissão 1000
## ___________________________
## Desconto INSS 550
## Desconto IRPF 1471.5
## ___________________________
## Líquido a receber 3978.5
NOME | Salario_Base | Vendas |
---|---|---|
VENDEDOR 1 | 1800 | 20000 |
VENDEDOR 2 | 2500 | 30000 |
VENDEDOR 3 | 2500 | 25000 |
VENDEDOR 4 | 3000 | 15000 |
VENDEDOR 5 | 3500 | 27000 |
VENDEDOR 6 | 4000 | 30000 |
VENDEDOR 7 | 5000 | 32000 |
O valor da alíquota do IR deve ser calculado sobre o salário base, conforme os dados abaixo:
Base de cálculo | Alíquota |
---|---|
Até 1.903,98 | Isento |
De 1.903,99 até 2.826,65 | 7,50% |
De 2.826,66 até 3.751,05 | 15% |
De 3.751,06 até 4.664,68 | 22,50% |
Acima de 4.664,68 | 27,50% |
# Incluindo a alíquota de IR na tabela
df$Aliq_IRPF <- 0 # incluo uma nova coluna no df
df[df$Salario_Base>4664.68,4] <- 0.275 # nas linhas em que o salário base é superior a 4664.68, atualizo a coluna 4 (df$Aliq_IRPF)
df[df$Salario_Base<=4664.68 & df$Salario_Base>3751.05,4] <- 0.225
df[df$Salario_Base<=3751.05 & df$Salario_Base>2826.65,4] <- 0.15
df[df$Salario_Base<=2826.65 & df$Salario_Base>1903.98,4] <- 0.075
df[df$Salario_Base<1903.98,4] <- 0.0
df
## NOME Salario_Base Vendas Aliq_IRPF
## 1 VENDEDOR 1 1800 20000 0.000
## 2 VENDEDOR 2 2500 30000 0.075
## 3 VENDEDOR 3 2500 25000 0.075
## 4 VENDEDOR 4 3000 15000 0.150
## 5 VENDEDOR 5 3500 27000 0.150
## 6 VENDEDOR 6 4000 30000 0.225
## 7 VENDEDOR 7 5000 32000 0.275
Calculando o valor do IRPF
# Crio uma coluna do IRPF
df$IRPF <- 0
df$IRPF <- df$Aliq_IRPF * df$Salario_Base
df
## NOME Salario_Base Vendas Aliq_IRPF IRPF
## 1 VENDEDOR 1 1800 20000 0.000 0.0
## 2 VENDEDOR 2 2500 30000 0.075 187.5
## 3 VENDEDOR 3 2500 25000 0.075 187.5
## 4 VENDEDOR 4 3000 15000 0.150 450.0
## 5 VENDEDOR 5 3500 27000 0.150 525.0
## 6 VENDEDOR 6 4000 30000 0.225 900.0
## 7 VENDEDOR 7 5000 32000 0.275 1375.0
Calculando o valor do INSS
perc_inss <- 0.11
# Crio uma coluna INSS
df$INSS <- df$Salario_Base * perc_inss
df
## NOME Salario_Base Vendas Aliq_IRPF IRPF INSS
## 1 VENDEDOR 1 1800 20000 0.000 0.0 198
## 2 VENDEDOR 2 2500 30000 0.075 187.5 275
## 3 VENDEDOR 3 2500 25000 0.075 187.5 275
## 4 VENDEDOR 4 3000 15000 0.150 450.0 330
## 5 VENDEDOR 5 3500 27000 0.150 525.0 385
## 6 VENDEDOR 6 4000 30000 0.225 900.0 440
## 7 VENDEDOR 7 5000 32000 0.275 1375.0 550
Calculando o valor do comissão
perc_comissao <- 0.05
df$Comissao <- df$Vendas * perc_comissao
df
## NOME Salario_Base Vendas Aliq_IRPF IRPF INSS Comissao
## 1 VENDEDOR 1 1800 20000 0.000 0.0 198 1000
## 2 VENDEDOR 2 2500 30000 0.075 187.5 275 1500
## 3 VENDEDOR 3 2500 25000 0.075 187.5 275 1250
## 4 VENDEDOR 4 3000 15000 0.150 450.0 330 750
## 5 VENDEDOR 5 3500 27000 0.150 525.0 385 1350
## 6 VENDEDOR 6 4000 30000 0.225 900.0 440 1500
## 7 VENDEDOR 7 5000 32000 0.275 1375.0 550 1600
Calculando o valor líquido a receber
df$Sal_Liquido <- df$Salario_Base + df$Comissao - df$INSS - df$IRPF
df
## NOME Salario_Base Vendas Aliq_IRPF IRPF INSS Comissao Sal_Liquido
## 1 VENDEDOR 1 1800 20000 0.000 0.0 198 1000 2602.0
## 2 VENDEDOR 2 2500 30000 0.075 187.5 275 1500 3537.5
## 3 VENDEDOR 3 2500 25000 0.075 187.5 275 1250 3287.5
## 4 VENDEDOR 4 3000 15000 0.150 450.0 330 750 2970.0
## 5 VENDEDOR 5 3500 27000 0.150 525.0 385 1350 3940.0
## 6 VENDEDOR 6 4000 30000 0.225 900.0 440 1500 4160.0
## 7 VENDEDOR 7 5000 32000 0.275 1375.0 550 1600 4675.0
Elabore um programa para efetuar o cálculo da quantidade de garrafas e de engradados de cerveja consumida por um determinado bloco durante o carnaval, considerando que 5000 foliões bebem cerca de 2 litros durante o desfile do bloco.
Outras informações:
• considerar que um engradado de cerveja tem 24 garrafas de 600
ml.
• Cada garrafa custa R$ 8,00, e que o engradado custa R$ 180,00.
Qual será o lucro do comerciante considerando que:
a) Ele compre as garrafas avulsas e venda cada garrafa a R$ 15,00.
b) Ele compre o engradado e venda cada garrafa a R$ 15,00 (ele não pode
comprar fração do engradado – arredonde para menos).
c) Ele venda o copo de 500 ml a R$ 15,00 – cada copo plástico sai a R$
0,20.
Faça uma função para o lucro.
Resolvendo a função para o lucro.
Não há alteração na solução da lista 2
lucro <- function(receitas, despesas){
return (receitas - despesas)
}
Definindo as variáveis básicas.
# Custo da garrafa avulsa
custo_garrrafa_avulsa <- 8
custo_garrrafa_avulsa
## [1] 8
# Valor da garrafa vendida
valor_garrafa_vendida <- 15
valor_garrafa_vendida
## [1] 15
# Garrafas do engradado
garrafas_engradado <- 24
# Engradado - 24*600= 14400 ml <- 144 L
vol_engradado <- 24 * 600
vol_engradado
## [1] 14400
# Foliões - 5000 cada um 2L;
total_consumido_ml <- 5000 * 2000
total_consumido_ml
## [1] 1e+07
# Letra A
garrafas_vendidas <- total_consumido_ml/600
garrafas_vendidas
## [1] 16666.67
receita_venda_garrafa <- garrafas_vendidas * 15
despesa_garrafa <- garrafas_vendidas * 8
lucro_a <-lucro(receita_venda_garrafa, despesa_garrafa)
print(paste("Se comprar as garrafas avulsas e vender cada garrafa a R$ 15,00, o lucro será de:", lucro_a))
## [1] "Se comprar as garrafas avulsas e vender cada garrafa a R$ 15,00, o lucro será de: 116666.666666667"
receita_por_engradado <- garrafas_engradado * 15
receita_por_engradado
## [1] 360
engradados_vendidos <-total_consumido_ml / vol_engradado
engradados_vendidos
## [1] 694.4444
# Arredondando para baixo
engradados_vendidos <- round(engradados_vendidos,0)
engradados_vendidos
## [1] 694
receita_total_engradados <- engradados_vendidos * receita_por_engradado
receita_total_engradados
## [1] 249840
despesa_por_engradado <- 180
despesa_por_engradado
## [1] 180
despesa_total_engradado <- engradados_vendidos * despesa_por_engradado
despesa_total_engradado
## [1] 124920
lucro_b <- lucro(receita_total_engradados, despesa_total_engradado)
print(paste("Ao comprar o engradado e vender cada garrafa a R$ 15,00, o lucro será de:", lucro_b))
## [1] "Ao comprar o engradado e vender cada garrafa a R$ 15,00, o lucro será de: 124920"
# Valor do copo vendido
valor_copo_vendido <- 15
valor_copo_vendido
## [1] 15
total_copos_vendidos <- total_consumido_ml / 500 # cada copo tem 500ml
total_copos_vendidos
## [1] 20000
receita_copos_vendidos <- total_copos_vendidos * valor_copo_vendido
receita_copos_vendidos
## [1] 3e+05
# Valor da cerveja do copo considerando a garrafa R$ 8,00
custo_cerveja_do_copo <- 500 * 8 /600
custo_cerveja_do_copo
## [1] 6.666667
custo_copo_plastico <- 0.2
custo_copo_plastico
## [1] 0.2
custo_copo_vendido <- custo_cerveja_do_copo + custo_copo_plastico
custo_copo_vendido
## [1] 6.866667
lucro_c <- lucro(receita_copos_vendidos, custo_copo_vendido)
lucro_c
## [1] 299993.1
paste("Ao vender o copo de 500 ml a R$ 15,00, o lucro será de:", lucro_c)
## [1] "Ao vender o copo de 500 ml a R$ 15,00, o lucro será de: 299993.133333333"
Nome_Aluno | Diciplina_1 | Diciplina_2 | Diciplina_3 |
---|---|---|---|
Aluno 1 | 3 | 10 | 7 |
Aluno 2 | 4 | 9 | 8 |
Aluno 3 | 5 | 8 | 9 |
Aluno 4 | 6 | 7 | 10 |
Aluno 5 | 7 | 6 | 7 |
Aluno 6 | 8 | 5 | 8 |
Aluno 7 | 9 | 4 | 9 |
Faça funções para calcular: a) A média de cada aluno (CR) b) A média de cada disciplina. c) A média final da turma. d) O aluno com média mais alta. e) A lista de alunos reprovados, por disciplina.
Respostas a) A média de cada aluno (CR)
df$media_aluno <- (df[,2]+df[,3]+df[,4])/3
media <- summary(df[,c(2,3,4)])[4,]
A média da disciplina 1 é Mean :6.0 .
A média da disciplina 2 é Mean : 7.0 .
A média da disciplina 3 é Mean : 8.286 .
mean(df[,5])
## [1] 7.095238
A média da turma é 7.1
maior_media <- max(df$media_aluno)
aluno_maior_med <- df[df$media_aluno == maior_media,]
aluno_maior_med
## Nome_Aluno Diciplina_1 Diciplina_2 Diciplina_3 media_aluno
## 4 Aluno 4 6 7 10 7.666667
O aluno com maior média é o Aluno 4, cuja média é 7.67.
df$reprovado1 <- ""
df[df$Diciplina_1<6,6] <- "Reprovado"
df[df$Diciplina_1>=6,6] <- "Aprovado"
df$reprovado2 <- ""
df[df$Diciplina_2<6,7] <- "Reprovado"
df[df$Diciplina_2>=6,7] <- "Aprovado"
df$reprovado3 <- ""
df[df$Diciplina_2<6,8] <- "Reprovado"
df[df$Diciplina_2>=6,8] <- "Aprovado"
Quadro final dos alunos é:Nome_Aluno | Diciplina_1 | Diciplina_2 | Diciplina_3 | media_aluno | reprovado1 | reprovado2 | reprovado3 |
---|---|---|---|---|---|---|---|
Aluno 1 | 3 | 10 | 7 | 6.666667 | Reprovado | Aprovado | Aprovado |
Aluno 2 | 4 | 9 | 8 | 7.000000 | Reprovado | Aprovado | Aprovado |
Aluno 3 | 5 | 8 | 9 | 7.333333 | Reprovado | Aprovado | Aprovado |
Aluno 4 | 6 | 7 | 10 | 7.666667 | Aprovado | Aprovado | Aprovado |
Aluno 5 | 7 | 6 | 7 | 6.666667 | Aprovado | Aprovado | Aprovado |
Aluno 6 | 8 | 5 | 8 | 7.000000 | Aprovado | Reprovado | Reprovado |
Aluno 7 | 9 | 4 | 9 | 7.333333 | Aprovado | Reprovado | Reprovado |