Questão 1

  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 <- 5
C <- 7
for (i in 1:3) {
  if (i == 1) {
    resultado <- A + B
    mensagem <- paste("A + B = ", resultado)
  } else if (i == 2) {
    resultado <- A + C
    mensagem <- paste("A + C = ", resultado)
  } else if (i == 3 ){
    resultado <- B + C
    mensagem <- paste("B + C = ", resultado)
  }
  cat(mensagem, "\n")
}
## A + B =  7 
## A + C =  9 
## B + C =  12

Questão 2

  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
for (i in 1:2) {
  if (i == 1) {
    temp <- A
    A <- B
  } else {
    B <- temp
  }
}
cat("A =", A, "\n")
## A = 8
cat("B =", B, "\n")
## B = 6

Questão 3

  1. Converter uma temperatura de Fahrenheit para Centígrados. C = (F - 32) * ( 5 / 9 )
F <- 75
C <- 0
for (i in 1:2) {
  if (i == 1) {
    C <- (F - 32) * (5 / 9)
  } else {
    C <- (F - 30) / 2
  }
}
cat("A temperatura em Celsius é:", C, "\n")
## A temperatura em Celsius é: 22.5

Questão 4

  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
# a) 
X <- 7
result <- 0
for (i in 1:2) {
  if (i == 1) {
    result <- X^3
  } else {
    result <- result - 4
  }
}
cat("O resultado de (X^3) - 4 é:", result, "\n")
## O resultado de (X^3) - 4 é: 339
# b) 
X <- 10
resto <- 0
if (X >= 3) {
  for (i in 3:X) {
    resto <- i %% 3
  }
} else {
  resto <- X
}
cat("O resto da divisão de", X, "por 3 é", resto)
## O resto da divisão de 10 por 3 é 1
# c)
X <- 5
resultado <- 0
if (X >= 3) {
  for (i in 3:X) {
    resultado <- X^(X/3) + 2
  }
} else {
  resultado <- X^(X/3) + 2
}
cat("O resultado de X^(X/3)) + 2 é", resultado)
## O resultado de X^(X/3)) + 2 é 16.62009
# d)
a <- 1
b <- 2
tolerancia <- 1e-6
while (abs(b - a) > tolerancia) {
  c <- (a + b) / 2
  fc <- c^2 - 2
  if (fc == 0 || abs(fc) < tolerancia) {
    break
  } else if (fc > 0) {
    b <- c
  } else {
    a <- c
  }
}
cat("Raiz quadrada de 2 =", c, "\n")
## Raiz quadrada de 2 = 1.414214

Questão 5

  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.
# a) Crie um vetor com uma sequência de 10 números.
vetor <- numeric(10)
for(i in 1:10){
  if(i <= 5){
    vetor[i] <- i * 2
  }
  else{
    vetor[i] <- (i - 5) * 2 - 1
  }
}
print(sort(vetor))
##  [1]  1  2  3  4  5  6  7  8  9 10
# b) Faça um loop para calcular a soma dos números do vetor
vetor <- 1:10
soma <- 0
for (i in 1:length(vetor)) {
  soma <- soma + vetor[i]
}
print(soma)
## [1] 55
# c) Utilize o comando “vetor <- c(1:10)” para criar o vetor.
vetor <- c(1:10)
i <- length(vetor)
while (i >= 1) {
  print(vetor[i])
  i <- i - 1
}
## [1] 10
## [1] 9
## [1] 8
## [1] 7
## [1] 6
## [1] 5
## [1] 4
## [1] 3
## [1] 2
## [1] 1
# d) Utilize o comando “for( i in 1:10) { ...comandos}” para realizar a soma.
soma <- 0
for (i in 1:10) {
  soma <- soma + i
}
print(soma)
## [1] 55
# e) Referencie os valores do vetor com o comando: “vetor[i]”, onde “i” é o índice referência 
# (número)
vetor <- c(2, 4, 6, 8, 10)
for (i in 1:length(vetor)) {
  print(paste("O elemento de índice", i, "é", vetor[i]))
}
## [1] "O elemento de índice 1 é 2"
## [1] "O elemento de índice 2 é 4"
## [1] "O elemento de índice 3 é 6"
## [1] "O elemento de índice 4 é 8"
## [1] "O elemento de índice 5 é 10"

Questão 6

  1. A partir do exercício anterior, faça a média dos valores contidos no vetor.
mean(vetor)
## [1] 6

Questão 7

  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.
x <- 10
y <- 5
if (x > y) {
  print("x é maior que y")
} else {
  print("y é maior que x")
}
## [1] "x é maior que y"

Questão 8

  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.
x <- 10
y <- 5
if (x <= y) {
  print("x é menor ou igual a y")
} else {
  print("y é menor que x")
}
## [1] "y é menor que x"

Questão 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
# a) 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”
sequencia <- c(1:10)
soma <- 0
for (i in sequencia) {
  if (i %% 2 == 0) {
    soma <- soma + i
  }
}
print(paste("A soma dos números pares na sequência", soma))
## [1] "A soma dos números pares na sequência 30"
# b) Utilize o comando de decisão “if” para saber se o número é par ou ímpar.
if (soma %% 2 == 0) {
  print(paste("O número", soma, "é par"))
} else {
  print(paste("O número", soma, "é ímpar"))
}
## [1] "O número 30 é par"

Questão 10

  1. Faça um algoritmo que calcule e imprima o fatorial de um número inteiro.
numero <- 5
fatorial <- 1
for (i in 1:numero) {
  fatorial <- fatorial * i
}
print(paste("O fatorial de", numero, "é", fatorial))
## [1] "O fatorial de 5 é 120"

Questão 11

  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)”
# a) Uma matriz no R comporta somente um tipo de dado (número, texto ou boleano).
matriz <- matrix(rnorm(16,0,1), nrow=4, ncol=4, byrow=TRUE)
print(matriz)
##            [,1]        [,2]       [,3]       [,4]
## [1,]  1.3320725 -0.59212615 -0.2529824  0.7945406
## [2,]  0.1637761  0.10240212 -0.2558734  0.1890320
## [3,] -1.8764792  0.01482538 -0.1072513 -0.1791396
## [4,]  0.8343729  1.33149133  0.4271713 -0.2538644
# b) O comando para criar a matriz é “x <- matrix(data = 1, nrow = 4, ncol = 4, byrow = TRUE)”
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

Questão 12

  1. Agora, crie uma matriz com a sequência de 1 a 16.
matriz <- matrix(c(1:12), nrow=4, ncol=4, byrow=TRUE)
## Warning in matrix(c(1:12), nrow = 4, ncol = 4, byrow = TRUE): data length
## differs from size of matrix: [12 != 4 x 4]
print(matriz)
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
## [4,]    1    2    3    4

Questão 13

  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)”
# a) Um data.frame é uma estrutura de dados similar a matriz que pode conter dados 
# diferentes em suas variáveis.
df <- data.frame(matriz)
df
##   X1 X2 X3 X4
## 1  1  2  3  4
## 2  5  6  7  8
## 3  9 10 11 12
## 4  1  2  3  4
# b) Lembre-se que também chamamos as colunas de variáveis e as linhas de registros.
(df)
##   X1 X2 X3 X4
## 1  1  2  3  4
## 2  5  6  7  8
## 3  9 10 11 12
## 4  1  2  3  4
# c) 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.
str(df)
## 'data.frame':    4 obs. of  4 variables:
##  $ X1: int  1 5 9 1
##  $ X2: int  2 6 10 2
##  $ X3: int  3 7 11 3
##  $ X4: int  4 8 12 4
# d) Utilize o comando “df <- as.data.frame(x)”
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  1  2  3  4

Questão 14

  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).
# a) a média de uma coluna da matriz do exercício “12)”.
matriz <- matrix(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16), nrow=4, ncol=4, byrow=TRUE)
coluna <- 2
for (i in 1:ncol(matriz)) {
  if (!is.na(matriz[i,coluna])) {
    media = mean(matriz[,coluna])
  }
}
cat("A média da coluna", coluna, "é", media, "\n")
## A média da coluna 2 é 8
# b) A média de todas as colunas da matriz do exercício “12)”.
# criando uma matriz de exemplo
matriz <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16), nrow = 4, ncol = 4)
media_colunas <- numeric(length = ncol(matriz))

for (j in 1:ncol(matriz)) {
  soma_coluna <- 0
  
  for (i in 1:nrow(matriz)) {
    soma_coluna <- soma_coluna + matriz[i, j]
  }
  
  media_colunas[j] <- soma_coluna/nrow(matriz)
}

print(media_colunas)
## [1]  2.5  6.5 10.5 14.5
# c) A média de todas as linhas da matriz do exercício “12)”.
media_linhas <- numeric(length = nrow(matriz))
for (i in 1:nrow(matriz)) {
  soma_linha <- 0
  
  for (j in 1:ncol(matriz)) {
    soma_linha <- soma_linha + matriz[i, j]
  }
  
  media_linhas[i] <- soma_linha/ncol(matriz)
}
print(media_linhas)
## [1]  7  8  9 10
# d) A média dos números pares de todas as colunas
# Criar uma matriz 4x4 com números aleatórios
matriz <- matrix(sample(1:20, 16, replace = TRUE), nrow = 4, ncol = 4)
medias <- c()
for (j in 1:ncol(matriz)) {
  soma_pares <- 0
  n_pares <- 0
  for (i in 1:nrow(matriz)) {
    if (matriz[i,j] %% 2 == 0) {
      soma_pares <- soma_pares + matriz[i,j]
      n_pares <- n_pares + 1
    }
  }
  if (n_pares > 0) {
    media_pares <- soma_pares / n_pares
  } else {
    media_pares <- 0
  }
  medias <- c(medias, media_pares)
}
print(medias)
## [1] 13.33333  8.00000 16.00000  4.00000

Questão 15

  1. Repita o exercício “14)” com os dados do data.frame do exercício “13)”.
df
##   V1 V2 V3 V4
## 1  1  2  3  4
## 2  5  6  7  8
## 3  9 10 11 12
## 4  1  2  3  4
medias <- c()
for (j in 1:ncol(df)) {
  soma_pares <- 0
  n_pares <- 0
  for (i in 1:nrow(df)) {
    if (matriz[i,j] %% 2 == 0) {
      soma_pares <- soma_pares + df[i,j]
      n_pares <- n_pares + 1
    }
  }
  if (n_pares > 0) {
    media_pares <- soma_pares / n_pares
  } else {
    media_pares <- 0
  }
  medias <- c(medias, media_pares)
}
print(medias)
## [1] 3.666667 4.000000 3.000000 4.000000