Exercício de Programação - Lista 1

Exercício 1.1.1

a <- 2
b <- 3
c <- 4

a+b
## [1] 5
a+c
## [1] 6
b+c
## [1] 7

Exercício 1.1.2

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

Exercício 1.1.3

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

Exercício 1.1.4

# 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

Exercício 1.1.5

# 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

Exercício 1.1.6

# 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

Exercício 1.1.7

# 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"

Exercício 1.1.8

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"

Exercício 1.1.9

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

Exercício 1.1.10

# 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

Exercício 1.1.11

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
##      [,1] [,2] [,3] [,4]
## [1,]    1    1    1    1
## [2,]    1    1    1    1
## [3,]    1    1    1    1
## [4,]    1    1    1    1

Exercício 1.1.12

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

Exercício 1.1.13

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

Exercício 1.1.14

# 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
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

Exercício 1.1.15

# 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) 
# 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
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
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
## Exercício 1.1.15

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

Exercícios Lista 2

Exercício 1.2.1

#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
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

Exercício 1.2.2

Criando os dados

df <- data.frame(
  NOME = paste("VENDEDOR", 1:7),
  Salario_Base = c(1800, 2500, 2500, 3000, 3500, 4000, 5000),
  Vendas = c(20000, 30000, 25000, 15000, 27000, 30000, 32000)
)
# Adicionando coluna da alíquota IRPF
df$Aliq_IRPF <- 0
for(linha in 1:nrow(df)) {
  salario <- df$Salario_Base[linha]
  
   if (salario > 4664.68) {
    df$Aliq_IRPF[linha] <- 0.275
  } else if (salario > 3751.05) {
    df$Aliq_IRPF[linha] <- 0.225
  } else if (salario > 2826.65) {
    df$Aliq_IRPF[linha] <- 0.15
  } else if (salario > 1903.98) {
    df$Aliq_IRPF[linha] <- 0.075
  } else {
    df$Aliq_IRPF[linha] <- 0
  }
}
# Calculando o IRPF
df$IRPF <- df$Aliq_IRPF * df$Salario_Base
# Calculando o INSS (11%)
df$INSS <- df$Salario_Base * 0.11
# Calculando a comissão (5% sobre as vendas)
df$Comissao <- df$Vendas * 0.05
# Calculando o salário líquido
df$Sal_Liquido <- df$Salario_Base + df$Comissao - df$INSS - df$IRPF
# Mostrando resultado final
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
##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 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
##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 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
##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

Exercício 1.2.3

lucro <- function(receitas, despesas){
  return (receitas - despesas)
}
# 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
## a)Ele compre as garrafas avulsas e venda cada garrafa a R$ 15,00.

# 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"
## 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).

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"
## c)Ele venda o copo de 500 ml a R$ 15,00 – cada copo plástico sai a R$ 0,20

# 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"

Exercício 1.2.4

Criando dados

# Criação do data frame com notas dos alunos
dados <- data.frame(
  Nome_Aluno = c("Aluno 1", "Aluno 2", "Aluno 3", "Aluno 4", "Aluno 5", "Aluno 6", "Aluno 7"),
  Disciplina_1 = c(3, 4, 5, 6, 7, 8, 9),
  Disciplina_2 = c(10, 9, 8, 7, 6, 5, 4),
  Disciplina_3 = c(7, 8, 9, 10, 7, 8, 9)
)
# Criação do data frame
dados <- data.frame(
  Nome_Aluno = c("Aluno 1", "Aluno 2", "Aluno 3", "Aluno 4", "Aluno 5", "Aluno 6", "Aluno 7"),
  Disciplina_1 = c(3, 4, 5, 6, 7, 8, 9),
  Disciplina_2 = c(10, 9, 8, 7, 6, 5, 4),
  Disciplina_3 = c(7, 8, 9, 10, 7, 8, 9)
)

# Cálculo da média (CR) de cada aluno
dados$CR <- rowMeans(dados[, 2:4])

# Exibindo o resultado
dados
##   Nome_Aluno Disciplina_1 Disciplina_2 Disciplina_3       CR
## 1    Aluno 1            3           10            7 6.666667
## 2    Aluno 2            4            9            8 7.000000
## 3    Aluno 3            5            8            9 7.333333
## 4    Aluno 4            6            7           10 7.666667
## 5    Aluno 5            7            6            7 6.666667
## 6    Aluno 6            8            5            8 7.000000
## 7    Aluno 7            9            4            9 7.333333
# b)A média de cada disciplina.
media_disciplinas <- colMeans(dados[, 2:4])

# Exibindo as médias das disciplinas
media_disciplinas
## Disciplina_1 Disciplina_2 Disciplina_3 
##     6.000000     7.000000     8.285714
# c) Cálculo da média final da turma (média dos CRs)
media_final_turma <- mean(dados$CR)

# Exibindo resultados
dados
##   Nome_Aluno Disciplina_1 Disciplina_2 Disciplina_3       CR
## 1    Aluno 1            3           10            7 6.666667
## 2    Aluno 2            4            9            8 7.000000
## 3    Aluno 3            5            8            9 7.333333
## 4    Aluno 4            6            7           10 7.666667
## 5    Aluno 5            7            6            7 6.666667
## 6    Aluno 6            8            5            8 7.000000
## 7    Aluno 7            9            4            9 7.333333
media_disciplinas
## Disciplina_1 Disciplina_2 Disciplina_3 
##     6.000000     7.000000     8.285714
media_final_turma
## [1] 7.095238
# d) O aluno com média mais alta.
indice_melhor <- which.max(dados$CR)
aluno_top <- dados[indice_melhor, ]

# Exibindo resultados
dados
##   Nome_Aluno Disciplina_1 Disciplina_2 Disciplina_3       CR
## 1    Aluno 1            3           10            7 6.666667
## 2    Aluno 2            4            9            8 7.000000
## 3    Aluno 3            5            8            9 7.333333
## 4    Aluno 4            6            7           10 7.666667
## 5    Aluno 5            7            6            7 6.666667
## 6    Aluno 6            8            5            8 7.000000
## 7    Aluno 7            9            4            9 7.333333
cat("\nMédia final da turma:", round(media_final_turma, 2), "\n")
## 
## Média final da turma: 7.1
cat("Aluno com maior CR:", aluno_top$Nome_Aluno, "com média", round(aluno_top$CR, 2), "\n")
## Aluno com maior CR: Aluno 4 com média 7.67
# e) A lista de alunos reprovados, por disciplina.
adiciona_situacao <- function(df, nota_minima = 5) {
  df$Sit_D1 <- ifelse(df$Disciplina_1 < nota_minima, "Reprovado", "Aprovado")
  df$Sit_D2 <- ifelse(df$Disciplina_2 < nota_minima, "Reprovado", "Aprovado")
  df$Sit_D3 <- ifelse(df$Disciplina_3 < nota_minima, "Reprovado", "Aprovado")
  return(df)
}

# Aplicando a função
dados <- adiciona_situacao(dados)


# Exibindo a lista final com situação por disciplina

dados
##   Nome_Aluno Disciplina_1 Disciplina_2 Disciplina_3       CR    Sit_D1
## 1    Aluno 1            3           10            7 6.666667 Reprovado
## 2    Aluno 2            4            9            8 7.000000 Reprovado
## 3    Aluno 3            5            8            9 7.333333  Aprovado
## 4    Aluno 4            6            7           10 7.666667  Aprovado
## 5    Aluno 5            7            6            7 6.666667  Aprovado
## 6    Aluno 6            8            5            8 7.000000  Aprovado
## 7    Aluno 7            9            4            9 7.333333  Aprovado
##      Sit_D2   Sit_D3
## 1  Aprovado Aprovado
## 2  Aprovado Aprovado
## 3  Aprovado Aprovado
## 4  Aprovado Aprovado
## 5  Aprovado Aprovado
## 6  Aprovado Aprovado
## 7 Reprovado Aprovado

Lista 3

Exercício 1.3.1

#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

Exercício 1.3.2

#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

Exercício 1.3.3

#Converter uma temperatura de Fahrenheit para Centígrados. C = (F - 32) * ( 5 / 9 ).

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

Exercício 1.3.4

#Escrever um algoritmo que defina um número X e calcule:
# a)X3 - 4
# b)O resto da divisão de X / 3
# c)X(x/3) + 2
# d)Raiz quadrada de X2

# 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

Exercício 1.3.5

#Elabore um algoritmo que:
# a)Crie um vetor com uma sequência de 10 números.
# b)Faça um loop para calcular a soma dos números do vetor.
# c)Utilize o comando “vetor <- c(1:10)” para criar o vetor.
# d)Utilize o comando “for( i in 1:10) { …comandos}” para realizar a soma.
# e)Referencie os valores do vetor com o comando: “vetor[i]”, onde “i” é o índice referência (número) Ex. vetor: 1,2,3,4,5,6,7,8,9,10 | Soma dos números = 55.


# 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

Exercício 1.3.6

#A partir do exercício anterior, faça a média dos valores contidos no vetor.

# 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

Exercício 1.3.7

#Crie duas variáveis, x e y. Compare se x é maior que y. Se for, imprima “x é maior que y”, se não for, imprima “y é maior que x”.

# a)A sintaxe do comando de comparação é: if (x > y) {comandos…} else {comandos}
# b)O comando print(“texto ou variável”) imprime a resposta na tela.

# 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"

Exercício 1.3.8

# Repita o exercício “7)” realizando os seguintes ajustes:
# Substitua o sinal de maior (“>”) pelo de menor ou igual (“<=”) e ajuste dos dizeres da resposta.

# 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"

Exercício 1.3.9

#A partir do exercício “5)”, faça a soma somente dos números pares.

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

Exercício 1.3.10

#Faça um algoritmo que calcule e imprima o fatorial de um número inteiro.

# Utilizar a função "factorial"
factorial(5)
## [1] 120

Exercício 1.3.11

#Crie uma matriz 4x4.
#Uma matriz no R comporta somente um tipo de dado (número, texto ou boleano).
#O comando para criar a matriz é “x <- matrix(data = 1, nrow = 4, ncol = 4, byrow = TRUE)”

# 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

Exercício 1.3.12

#Agora, crie uma matriz com a sequência de 1 a 16.

# 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

Exercício 1.3.13

#Transforme essa matriz em um data.frame
# 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

Exercício 1.3.14

#Utilizando os comandos de repetição e decisão (se for necessário), calcule:
#a média de uma coluna da matriz do exercício “12)”.
#A média de todas as colunas da matriz do exercício “12)”.
#A média de todas as linhas da matriz do exercício “12)”.
#A média dos números pares de todas as colunas da matriz do exercício “12)”.
#A média dos números ímpares de todas as linhas da matriz do exercício “12)”.
#A soma da diagonal principal da matriz.
#A soma da diagonal secundária da matriz (desafio).


# A matriz do ex 12
matriz <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)
# a)a média de uma coluna da matriz do exercício “12)”.
# média da coluna 2
mean(matriz[,2])
## [1] 8
# b)A média de todas as colunas da matriz do exercício “12)”.
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  "
# c) A média de todas as linhas da matriz do exercício “12)”.
# 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  "
# d) A média dos números pares de todas as colunas da matriz do exercício “12)”.
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
# e) A média dos números ímpares de todas as linhas da matriz do exercício “12)”.
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
# f) A soma da diagonal principal da matriz.
# O comando diag extrai a diagonal da matriz em um vetor
diag(matriz)
## [1]  1  6 11 16
sum(diag(matriz))
## [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.
# 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

Exercício 1.3.15

#Repita o exercício “14)” com os dados do data.frame do exercício “13)”.
df <- as.data.frame(matriz)
# a) a média de uma coluna da matriz do exercício “12)”.
# média da coluna 2
mean(df[,2])
## [1] 8
#b)A média de todas as colunas da matriz do exercício “12)”.

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  "
# c) A média de todas as linhas da matriz do exercício “12)”.
# 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  "
# d) A média dos números pares de todas as colunas da matriz do exercício “12)”. vt_npares_col_media <- rep(0,dim(matriz)[2])

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
# e) A média dos números ímpares de todas as linhas da matriz do exercício “12)”.

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
# f) A soma da diagonal principal da matriz.
# 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
# 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.
# 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

Exercício 1.4.1

#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

Exercício 1.4.2

df <- data.frame(
  NOME = paste("VENDEDOR", 1:7),
  Salario_Base = c(1800, 2500, 2500, 3000, 3500, 4000, 5000),
  Vendas = c(20000, 30000, 25000, 15000, 27000, 30000, 32000)
)
# Adicionando coluna da alíquota IRPF
df$Aliq_IRPF <- 0

for(linha in 1:nrow(df)) {
  salario <- df$Salario_Base[linha]
  
  if (salario > 4664.68) {
    df$Aliq_IRPF[linha] <- 0.275
  } else if (salario > 3751.05) {
    df$Aliq_IRPF[linha] <- 0.225
  } else if (salario > 2826.65) {
    df$Aliq_IRPF[linha] <- 0.15
  } else if (salario > 1903.98) {
    df$Aliq_IRPF[linha] <- 0.075
  } else {
    df$Aliq_IRPF[linha] <- 0
  }
}
# Calculando o IRPF
df$IRPF <- df$Aliq_IRPF * df$Salario_Base
# Calculando o INSS (11%)
df$INSS <- df$Salario_Base * 0.11
# Calculando a comissão (5% sobre as vendas)
df$Comissao <- df$Vendas * 0.05
# Calculando o salário líquido
df$Sal_Liquido <- df$Salario_Base + df$Comissao - df$INSS - df$IRPF
# Mostrando resultado final
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

Exercício 1.4.3

# 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.

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
# a) Ele compre as garrafas avulsas e venda cada garrafa a R$ 15,00.

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"
# 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).

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"
# c) Ele venda o copo de 500 ml a R$ 15,00 – cada copo plástico sai a R$ 0,20.
# 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"

Exercício 1.4.4

# Criação do data frame com notas dos alunos
dados <- data.frame(
  Nome_Aluno = c("Aluno 1", "Aluno 2", "Aluno 3", "Aluno 4", "Aluno 5", "Aluno 6", "Aluno 7"),
  Disciplina_1 = c(3, 4, 5, 6, 7, 8, 9),
  Disciplina_2 = c(10, 9, 8, 7, 6, 5, 4),
  Disciplina_3 = c(7, 8, 9, 10, 7, 8, 9)
)

# Exibindo o data frame
dados
##   Nome_Aluno Disciplina_1 Disciplina_2 Disciplina_3
## 1    Aluno 1            3           10            7
## 2    Aluno 2            4            9            8
## 3    Aluno 3            5            8            9
## 4    Aluno 4            6            7           10
## 5    Aluno 5            7            6            7
## 6    Aluno 6            8            5            8
## 7    Aluno 7            9            4            9
# a)A média de cada aluno (CR)

dados$CR <- rowMeans(dados[, 2:4])
# b)A média de cada disciplina.
media_disciplinas <- colMeans(dados[, 2:4])
# c)A média final da turma.
media_final_turma <- mean(dados$CR)

# Exibindo resultados
dados
##   Nome_Aluno Disciplina_1 Disciplina_2 Disciplina_3       CR
## 1    Aluno 1            3           10            7 6.666667
## 2    Aluno 2            4            9            8 7.000000
## 3    Aluno 3            5            8            9 7.333333
## 4    Aluno 4            6            7           10 7.666667
## 5    Aluno 5            7            6            7 6.666667
## 6    Aluno 6            8            5            8 7.000000
## 7    Aluno 7            9            4            9 7.333333
media_disciplinas
## Disciplina_1 Disciplina_2 Disciplina_3 
##     6.000000     7.000000     8.285714
media_final_turma
## [1] 7.095238
# d) O aluno com média mais alta.

indice_melhor <- which.max(dados$CR)
aluno_top <- dados[indice_melhor, ]

# Exibindo resultados
dados
##   Nome_Aluno Disciplina_1 Disciplina_2 Disciplina_3       CR
## 1    Aluno 1            3           10            7 6.666667
## 2    Aluno 2            4            9            8 7.000000
## 3    Aluno 3            5            8            9 7.333333
## 4    Aluno 4            6            7           10 7.666667
## 5    Aluno 5            7            6            7 6.666667
## 6    Aluno 6            8            5            8 7.000000
## 7    Aluno 7            9            4            9 7.333333
cat("\nMédia final da turma:", round(media_final_turma, 2), "\n")
## 
## Média final da turma: 7.1
cat("Aluno com maior CR:", aluno_top$Nome_Aluno, "com média", round(aluno_top$CR, 2), "\n")
## Aluno com maior CR: Aluno 4 com média 7.67
# e) A lista de alunos reprovados, por disciplina
adiciona_situacao <- function(df, nota_minima = 5) {
  df$Sit_D1 <- ifelse(df$Disciplina_1 < nota_minima, "Reprovado", "Aprovado")
  df$Sit_D2 <- ifelse(df$Disciplina_2 < nota_minima, "Reprovado", "Aprovado")
  df$Sit_D3 <- ifelse(df$Disciplina_3 < nota_minima, "Reprovado", "Aprovado")
  return(df)
}

# Aplicando a função
dados <- adiciona_situacao(dados)

#-----------------------------------------------
# Exibindo a lista final com situação por disciplina
#-----------------------------------------------
dados
##   Nome_Aluno Disciplina_1 Disciplina_2 Disciplina_3       CR    Sit_D1
## 1    Aluno 1            3           10            7 6.666667 Reprovado
## 2    Aluno 2            4            9            8 7.000000 Reprovado
## 3    Aluno 3            5            8            9 7.333333  Aprovado
## 4    Aluno 4            6            7           10 7.666667  Aprovado
## 5    Aluno 5            7            6            7 6.666667  Aprovado
## 6    Aluno 6            8            5            8 7.000000  Aprovado
## 7    Aluno 7            9            4            9 7.333333  Aprovado
##      Sit_D2   Sit_D3
## 1  Aprovado Aprovado
## 2  Aprovado Aprovado
## 3  Aprovado Aprovado
## 4  Aprovado Aprovado
## 5  Aprovado Aprovado
## 6  Aprovado Aprovado
## 7 Reprovado Aprovado