Exercícios

A) MANIPULANDO VARIÁVEIS E ESTRUTURAS DE DADOS BÁSICAS

  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.
A <- 2
B <- 3 
C <- 4 


A + B 
## [1] 5
  1. 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.
A <- 6
B <- 8


Aux <- A   
A <- B     
B <- Aux   

print(A)
## [1] 8
print(B)
## [1] 6
  1. Converter uma temperatura de Fahrenheit para Centígrados. C = (F - 32) * ( 5 / 9 ).
F <- 100

C <- (F - 32) * (5 / 9)

print(C)
## [1] 37.77778
cat("A temperatura de", F, "°F equivale a", C, "°C\n")
## A temperatura de 100 °F equivale a 37.77778 °C
  1. Escrever um algoritmo que defina um número X e calcule:
  1. X^3 - 4
  2. O resto da divisão de X / 3
  3. X^(x/3) + 2
  4. Raiz quadrada de X^2
X <- 6  

resultado_a <- X^3 - 4
print(resultado_a)
## [1] 212
resultado_b <- X %% 3
print(resultado_b)
## [1] 0
resultado_c <- X ^ ((X/3) + 2)
print(resultado_c)
## [1] 1296
resultado_d <- sqrt(X^2)
print(resultado_d)
## [1] 6
  1. Crie um vetor numérico com os números de 1 a 10 e armazene-o em uma variável chamada “numeros”. Em seguida, imprima o vetor.
numeros <- 1:10

print(numeros)
##  [1]  1  2  3  4  5  6  7  8  9 10
  1. Crie um vetor de caracteres com os nomes dos dias da semana e armazene-o em uma variável chamada “dias”. Em seguida, imprima o vetor.
dias <- c("Domingo", "Segunda-feira", "Terça-feira", 
          "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado")

print(dias)
## [1] "Domingo"       "Segunda-feira" "Terça-feira"   "Quarta-feira" 
## [5] "Quinta-feira"  "Sexta-feira"   "Sábado"
  1. Crie uma matriz 3x3 com os números de 1 a 9 e armazene-a em uma variável chamada “matriz”. Em seguida, imprima a matriz.
matriz <- matrix(1:9, nrow = 3, ncol = 3)

print(matriz)
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
  1. Crie um data-frame com as informações de 3 pessoas: nome (caracter), idade (numérico) e cidade natal (caracter). Armazene o data-frame em uma variável chamada “pessoas” e imprimao.
nomes <- c("Raphael", "Ana", "Carlos")
idades <- c(37, 30, 22)
cidades <- c("Rio de Janeiro", "São Paulo", "Curitiba")

pessoas <- data.frame(
  Nome = nomes,
  Idade = idades,
  Cidade_Natal = cidades
)

print(pessoas)
##      Nome Idade   Cidade_Natal
## 1 Raphael    37 Rio de Janeiro
## 2     Ana    30      São Paulo
## 3  Carlos    22       Curitiba
  1. Limpe as variáveis que estão no sistema e em seguida crie 3 variáveis, x, y e z e atribua valores numéricos para elas. Em seguida realize comparações entre elas (utilize TODOS os operadores de comparação (<. <. >=, <=, ==, !=).
rm(list = ls())

x <- 10
y <- 20
z <- 40

cat("Comparações entre x (10), y (20) e z (10):\n\n")
## Comparações entre x (10), y (20) e z (10):
cat("x é menor que y (x < y)? .......", x < y, "\n")
## x é menor que y (x < y)? ....... TRUE
cat("x é maior que y (x > y)? .......", x > y, "\n")
## x é maior que y (x > y)? ....... FALSE
cat("x é maior ou igual a z (x >= z)?", x >= z, "\n")
## x é maior ou igual a z (x >= z)? FALSE
cat("y é menor ou igual a x (y <= x)?", y <= x, "\n")
## y é menor ou igual a x (y <= x)? FALSE
cat("x é igual a z (x == z)? ........", x == z, "\n")
## x é igual a z (x == z)? ........ FALSE
cat("x é diferente de y (x != y)? ...", x != y, "\n")
## x é diferente de y (x != y)? ... TRUE
  1. Limpe as variáveis que estão no sistema e em seguida crie 3 variáveis, “rua”, “numero” e “bairro” e atribua valores (texto) para elas. Em seguida concatene essas variáveis em uma terceira chamada “endereco”.
rm(list = ls())

rua <- "Rua Major Daemon"
numero <- "81"
bairro <- "Saude"

endereco <- paste(rua, numero, bairro, sep = ", ")
print(endereco)
## [1] "Rua Major Daemon, 81, Saude"

B) Estruturas de Decisão e Repetição

  1. Elabore um algoritmo que:
  1. Crie um vetor com uma sequência de 10 números.
  2. Faça um loop para calcular a soma dos números do vetor.
  3. Utilize o comando “vetor <- c(1:10)” para criar o vetor.
  4. Utilize o comando “for( i in 1:10) { …comandos}” para realizar a soma.
  5. 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.
rm(list = ls())

vetor <- c(1:10)
soma <- 0

for (i in 1:10) {
 
  soma <- soma + vetor[i]
}

cat("Vetor:", vetor, "\n")
## Vetor: 1 2 3 4 5 6 7 8 9 10
cat("Soma dos números =", soma, "\n")
## Soma dos números = 55
  1. A partir do exercício anterior, faça a média dos valores contidos no vetor.
rm(list = ls())

vetor <- c(1:10)
soma <- 0

for (i in 1:10) {
  soma <- soma + vetor[i]
}

media <- soma / 10

cat("Vetor:", vetor, "\n")
## Vetor: 1 2 3 4 5 6 7 8 9 10
cat("Soma acumulada =", soma, "\n")
## Soma acumulada = 55
cat("Média dos valores =", media, "\n")
## Média dos valores = 5.5
  1. 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”.
  1. A sintaxe do comando de comparação é: if (x > y) {comandos…} else {comandos}
  2. O comando print(“texto ou variável”) imprime a resposta na tela.
rm(list = ls())

x <- 15
y <- 10

if (x > y) {
  print("x é maior que y")
} else {

  print("y é maior que x")
}
## [1] "x é maior que y"
  1. Repita o exercício “7)” realizando os seguintes ajustes:
  1. Substitua o sinal de maior (“>”) pelo de menor ou igual (“<=”) e ajuste dos dizeres da resposta.
rm(list = ls())

matriz <- matrix(1:9, nrow = 3, ncol = 3)

x <- matriz[1,1] 
y <- matriz[3,3]

if (x <= y) {
  print("x é menor ou igual a y")
} else {
  print("x é maior que y")
}
## [1] "x é menor ou igual a y"
cat("Valor de x:", x, "\n")
## Valor de x: 1
cat("Valor de y:", y, "\n")
## Valor de y: 9
  1. A partir do exercício “5)”, faça a soma somente dos números pares.
  1. Utilize o comando “%%” para identificar o resto da divisão. Ex: “5%%2”, cinco dividido por dois terá como resto “1”. Ou seja, o resultado dessa operação será “1”.
  2. Utilize o comando de decisão “if” para saber se o número é par ou ímpar.
rm(list = ls())

numeros <- 1:10

soma_pares <- 0

for (i in 1:10) {
  
  
  if (numeros[i] %% 2 == 0) {
    
    soma_pares <- soma_pares + numeros[i]
    
  }
}

cat("Vetor completo:", numeros, "\n")
## Vetor completo: 1 2 3 4 5 6 7 8 9 10
cat("A soma apenas dos números pares é:", soma_pares, "\n")
## A soma apenas dos números pares é: 30
  1. Faça um algoritmo que calcule e imprima o fatorial de um número inteiro.
rm(list = ls())


n <- 8


fatorial <- 1

for (i in 1:n) {
  fatorial <- fatorial * i
}

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


x <- matrix(data = 1, nrow = 4, ncol = 4, byrow = TRUE)

print(x)
##      [,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. Agora, crie uma matriz com a sequência de 1 a 16.
rm(list = ls())

matriz_sequencia <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)

print(matriz_sequencia)
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
## [4,]   13   14   15   16
  1. Transforme essa matriz em um data.frame
  1. Um data.frame é uma estrutura de dados similar a matriz que pode conter dados diferentes em suas variáveis.
  2. Lembre-se que também chamamos as colunas de variáveis e as linhas de registros.
  3. Uma variável (coluna) não pode conter dados diferentes. Ou todas as linhas dessa variável são números, ou todas são texto, ou ainda, boleanos.
  4. Utilize o comando “df <- as.data.frame(x)”
rm(list = ls())

x <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)

df <- as.data.frame(x)

print(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
  1. Utilizando os comandos de repetição e decisão (se for necessário), calcule:
  1. a média de uma coluna da matriz do exercício “12)”.
  2. A média de todas as colunas da matriz do exercício “12)”.
  3. A média de todas as linhas da matriz do exercício “12)”.
  4. A média dos números pares de todas as colunas da matriz do exercício “12)”.
  5. A média dos números ímpares de todas as linhas da matriz do exercício “12)”.
  6. A soma da diagonal principal da matriz.
  7. A soma da diagonal secundária da matriz (desafio).
rm(list = ls())

m <- matrix(1:16, nrow = 4, ncol = 4, byrow = TRUE)

soma_col1 <- 0
for(i in 1:4) { soma_col1 <- soma_col1 + m[i, 1] }
media_a <- soma_col1 / 4

medias_colunas <- c()
for(j in 1:4) {
  soma_temp <- 0
  for(i in 1:4) { soma_temp <- soma_temp + m[i, j] }
  medias_colunas[j] <- soma_temp / 4
}

medias_linhas <- c()
for(i in 1:4) {
  soma_temp <- 0
  for(j in 1:4) { soma_temp <- soma_temp + m[i, j] }
  medias_linhas[i] <- soma_temp / 4
}

soma_pares <- 0
cont_pares <- 0
for(i in 1:16) {
  if(m[i] %% 2 == 0) {
    soma_pares <- soma_pares + m[i]
    cont_pares <- cont_pares + 1
  }
}
media_d <- soma_pares / cont_pares

soma_impares <- 0
cont_impares <- 0
for(i in 1:16) {
  if(m[i] %% 2 != 0) {
    soma_impares <- soma_impares + m[i]
    cont_impares <- cont_impares + 1
  }
}
media_e <- soma_impares / cont_impares

soma_diag_prin <- 0
for(i in 1:4) { soma_diag_prin <- soma_diag_prin + m[i, i] }

soma_diag_sec <- 0
for(i in 1:4) { soma_diag_sec <- soma_diag_sec + m[i, 5 - i] }

cat("Matriz Original:\n")
## Matriz Original:
print(m)
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
## [4,]   13   14   15   16
cat("\na) Média Coluna 1:", media_a)
## 
## a) Média Coluna 1: 7
cat("\nb) Médias das Colunas:", medias_colunas)
## 
## b) Médias das Colunas: 7 8 9 10
cat("\nc) Médias das Linhas:", medias_linhas)
## 
## c) Médias das Linhas: 2.5 6.5 10.5 14.5
cat("\nd) Média dos Pares (Geral):", media_d)
## 
## d) Média dos Pares (Geral): 9
cat("\ne) Média dos Ímpares (Geral):", media_e)
## 
## e) Média dos Ímpares (Geral): 8
cat("\nf) Soma Diagonal Principal:", soma_diag_prin)
## 
## f) Soma Diagonal Principal: 34
cat("\ng) Soma Diagonal Secundária:", soma_diag_sec, "\n")
## 
## g) Soma Diagonal Secundária: 34
  1. Repita o exercício “14)” com os dados do data.frame do exercício “13)”.
rm(list = ls())

x_matriz <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)

df <- as.data.frame(x_matriz)

x <- df[1, 1]
y <- df[4, 4]

if (x <= y) {

  print("x é menor ou igual a y")
} else {
  
  print("x é maior que y")
}
## [1] "x é menor ou igual a y"
cat("Valor extraído de x (Linha 1, Col 1):", x, "\n")
## Valor extraído de x (Linha 1, Col 1): 1
cat("Valor extraído de y (Linha 4, Col 4):", y, "\n")
## Valor extraído de y (Linha 4, Col 4): 16
  1. Crie um loop for que imprime os números de 1 a 10.
rm(list = ls())

for (i in 1:10) {

  print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
  1. Crie um vetor numérico com os números de 1 a 100. Em seguida, crie um novo vetor que contenha apenas os números pares do vetor original.
rm(list = ls())

vetor_original <- 1:100
vetor_pares <- c() 

for (i in 1:100) {
  
  if (vetor_original[i] %% 2 == 0) {
    
    vetor_pares <- c(vetor_pares, vetor_original[i])
    
  }
}


cat("Vetor Original (1 a 100) criado.\n")
## Vetor Original (1 a 100) criado.
cat("Novo vetor com números pares:\n")
## Novo vetor com números pares:
print(vetor_pares)
##  [1]   2   4   6   8  10  12  14  16  18  20  22  24  26  28  30  32  34  36  38
## [20]  40  42  44  46  48  50  52  54  56  58  60  62  64  66  68  70  72  74  76
## [39]  78  80  82  84  86  88  90  92  94  96  98 100
  1. Crie uma função chamada “maior_elemento” que recebe um vetor numérico como argumento e retorna o maior elemento do vetor. Em seguida, teste a função com o vetor c(10, 5, 8, 2, 20, 15).
rm(list = ls())


maior_elemento <- function(vetor_entrada) {
  
 
  maior_atual <- vetor_entrada[1]
  

  for (i in 2:length(vetor_entrada)) {

    if (vetor_entrada[i] > maior_atual) {
    
      maior_atual <- vetor_entrada[i]
    }
    
  }
  
  return(maior_atual)
}

Z_vetor <- c(10, 5, 8, 2, 20, 15)

resultado <- maior_elemento(Z_vetor)

cat("Vetor testado:", Z_vetor, "\n")
## Vetor testado: 10 5 8 2 20 15
cat("O maior elemento encontrado foi:", resultado, "\n")
## O maior elemento encontrado foi: 20