Projeto de Algoritmos e Estrutura de Dados Programação em RStudio

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

Olá!

Neste Projeto, nós iremos criar um arquivo em HTML no RPubs

  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 <- 10
b <- 20
c <- 30

print(a + b)
## [1] 30
print(a + c)
## [1] 40
print(b + c)
## [1] 50
  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 <- 86

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

print(C)
## [1] 30
  1. Escrever um algoritmo que defina um número X e calcule:
  1. X3 - 4
  2. O resto da divisão de X / 3
  3. X(x/3) + 2
  4. Raiz quadrada de X2
X <- 10

# - (a) X^3 - 4
# 10^3 = 1000; 1000 - 4 = 996
resultado_a <- X^3 - 4
print(resultado_a)
## [1] 996
# - (b) Resto da divisão de X por 3
# O operador %% devolve o resto: 10 = 3*3 + 1, logo o resto é 1
resultado_b <- X %% 3
print(resultado_b)
## [1] 1
# - (c) X / ((X / 3) + 2)
# 10 / (3,333 + 2) = 10 / 5,333 = 1,875
resultado_c <- X / ((X / 3) + 2)
print(resultado_c)
## [1] 1.875
# - (d) Raiz quadrada de X
# sqrt(10) = 3,162278
resultado_d <- sqrt(X)
print(resultado_d)
## [1] 3.162278
  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(
  "segunda-feira",
  "terça-feira",
  "quarta-feira",
  "quinta-feira",
  "sexta-feira",
  "sábado",
  "domingo"
)

print(dias)
## [1] "segunda-feira" "terça-feira"   "quarta-feira"  "quinta-feira" 
## [5] "sexta-feira"   "sábado"        "domingo"
  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(
  data = 1:9,
  nrow = 3,
  ncol = 3,
  byrow = TRUE
)

print(matriz)
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    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 imprima-o.
pessoas <- data.frame(
  nome = c("Luzileide", "valentina", "Leda"),
  idade = c(44, 12, 63),
  cidade_natal = c("Rio de Janeiro", "Engenho de Dentro", "Rua Camarista Meier")
)

print(pessoas)
##        nome idade        cidade_natal
## 1 Luzileide    44      Rio de Janeiro
## 2 valentina    12   Engenho de Dentro
## 3      Leda    63 Rua Camarista Meier
  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 <- 10

# Menor: 10 < 20 -> TRUE
print(x < y)
## [1] TRUE
# Maior: 10 > 20 -> FALSE
print(x > y)
## [1] FALSE
# Maior ou igual: 10 >= 10 -> TRUE
print(x >= z)
## [1] TRUE
# Menor ou igual: 10 <= 20 -> TRUE
print(x <= y)
## [1] TRUE
# Igual: 10 == 10 -> TRUE
print(x == z)
## [1] TRUE
# Diferente: 10 != 20 -> TRUE
print(x != y)
## [1] 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 Ribalta"
numero <- "42"
bairro <- "Vila Medeiros_Belford Roxo_RJ"
cep <- "26.112-2315"

endereco <- paste(rua, numero, bairro, sep = ", ")

print(endereco)
## [1] "Rua Ribalta, 42, Vila Medeiros_Belford Roxo_RJ"

B. ALGORITMOS – 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.
  1. Utilize o comando “for( i in 1:10) { …comandos}” para realizar a soma.
  2. Referencie os valores do vetor com o comando: “vetor[i]”, onde “i” é o índice referência (número)
vetor <- c(1:10)

soma <- 0

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

print(soma)
## [1] 55
  1. A partir do exercício anterior, faça a média dos valores contidos no vetor.
vetor <- c(1:10)

soma <- 0

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

media <- soma / length(vetor)

print(media)
## [1] 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.
x <- 20
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 “13)” realizando os seguintes ajustes:
  1. Substitua o sinal de maior (“>”) pelo de menor ou igual (“<=”) e ajuste dos dizeres da resposta.
x <- 10
y <- 20

if (x <= y) {
  print("x é menor ou igual a y")
} else {
  print("x é maior que y")
}
## [1] "x é menor ou igual a y"
  1. A partir do exercício “11)”, 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 (o resto é zero) ou ímpar (o resto é 1).
  3. Crie uma variável auxiliara para guardar o resultado da soma.
vetor <- c(1:10)

soma_pares <- 0

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

print(soma_pares)
## [1] 30
  1. Faça um algoritmo que calcule e imprima o fatorial de um número inteiro.
numero <- 8

if (numero < 0) {
  print("Fatorial não definido para números negativos")
} else {
  fat <- 1
  if (numero > 1) {
    for (i in 2:numero) {
      fat <- fat * i
    }
  }
  cat("Fatorial de", numero, "=", fat, "\n")
}
## 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)”
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.
matriz <- matrix(data = 1:16, nrow = 4, ncol = 4, byrow = TRUE)

print(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
  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)”
df <- as.data.frame(matriz)

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, calcule:
  1. a média de uma coluna da matriz do exercício “18)”.
soma <- 0

for (i in 1:4) {
  soma <- soma + matriz[i, 4]
}

media <- soma / 4

cat("A média da coluna 4 é:", media, "\n")
## A média da coluna 4 é: 10
  1. A média de todas as colunas da matriz do exercício “18)”.
for (j in 1:4) {
  
  soma <- 0
  
  for (i in 1:4) {
    soma <- soma + matriz[i, j]
  }
  
  media <- soma / 4
  
  cat("A média da coluna", j, "é:", media, "\n")
}
## A média da coluna 1 é: 7 
## A média da coluna 2 é: 8 
## A média da coluna 3 é: 9 
## A média da coluna 4 é: 10
  1. A média de todas as linhas da matriz do exercício “18)”.
for (i in 1:4) {
  
  soma <- 0
  
  for (j in 1:4) {
    soma <- soma + matriz[i, j]
  }
  
  media <- soma / 4
  
  cat("A média da linha", i, "é:", media, "\n")
}
## A média da linha 1 é: 2.5 
## A média da linha 2 é: 6.5 
## A média da linha 3 é: 10.5 
## A média da linha 4 é: 14.5
  1. A média dos números pares de todas as colunas da matriz do exercício “18)”.
for (j in 1:4) {
  
  soma <- 0
  quantidade <- 0
  
  for (i in 1:4) {
    
    if (matriz[i, j] %% 2 == 0) {
      soma <- soma + matriz[i, j]
      quantidade <- quantidade + 1
    }
  }
  
  if (quantidade > 0) {
    media <- soma / quantidade
    cat("Média dos pares da coluna", j, "é:", media, "\n")
  } else {
    cat("A coluna", j, "não tem números pares\n")
  }
}
## A coluna 1 não tem números pares
## Média dos pares da coluna 2 é: 8 
## A coluna 3 não tem números pares
## Média dos pares da coluna 4 é: 10
  1. A média dos números ímpares de todas as linhas da matriz do exercício “18)”.
for (i in 1:4) {
  
  soma <- 0
  quantidade <- 0
  
  for (j in 1:4) {
    
    if (matriz[i, j] %% 2 != 0) {
      soma <- soma + matriz[i, j]
      quantidade <- quantidade + 1
    }
  }
  
  if (quantidade > 0) {
    media <- soma / quantidade
    cat("Média dos ímpares da linha", i, "é:", media, "\n")
  } else {
    cat("A linha", i, "não tem números ímpares\n")
  }
}
## Média dos ímpares da linha 1 é: 2 
## Média dos ímpares da linha 2 é: 6 
## Média dos ímpares da linha 3 é: 10 
## Média dos ímpares da linha 4 é: 14
  1. A soma da diagonal principal da matriz.
soma <- 0

for (i in 1:4) {
  soma <- soma + matriz[i, i]
}

cat("Soma da diagonal principal:", soma, "\n")
## Soma da diagonal principal: 34
# Resposta 20g - Soma da diagonal secundária.
# Como cheguei: posições [i, 5 - i]: 4 + 7 + 10 + 13 = 34.

soma <- 0

for (i in 1:4) {
  soma <- soma + matriz[i, 5 - i]
}

cat("Soma da diagonal secundária:", soma, "\n")
## Soma da diagonal secundária: 34
  1. A soma da diagonal secundária da matriz (desafio).
soma <- 0

for (i in 1:4) {
  soma <- soma + matriz[i, 5 - i]
}

cat("Soma da diagonal secundária:", soma, "\n")
## Soma da diagonal secundária: 34
  1. Repita o exercício “20)” com os dados do data.frame do exercício “18)”.

21a) Média de uma coluna (coluna 4)

soma <- 0

for (i in 1:4) {
  soma <- soma + df[i, 4]
}

media <- soma / 4

cat("A média da coluna 4 é:", media, "\n")
## A média da coluna 4 é: 10

21b) Média de todas as colunas.

for (j in 1:4) {
  
  soma <- 0
  
  for (i in 1:4) {
    soma <- soma + df[i, j]
  }
  
  media <- soma / 4
  
  cat("A média da coluna", j, "é:", media, "\n")
}
## A média da coluna 1 é: 7 
## A média da coluna 2 é: 8 
## A média da coluna 3 é: 9 
## A média da coluna 4 é: 10

21c) Média de todas as linhas.

for (i in 1:4) {
  
  soma <- 0
  
  for (j in 1:4) {
    soma <- soma + df[i, j]
  }
  
  media <- soma / 4
  
  cat("A média da linha", i, "é:", media, "\n")
}
## A média da linha 1 é: 2.5 
## A média da linha 2 é: 6.5 
## A média da linha 3 é: 10.5 
## A média da linha 4 é: 14.5

21d) Média dos números pares de todas as colunas.

for (j in 1:4) {
  
  soma <- 0
  quantidade <- 0
  
  for (i in 1:4) {
    
    if (df[i, j] %% 2 == 0) {
      soma <- soma + df[i, j]
      quantidade <- quantidade + 1
    }
  }
  
  if (quantidade > 0) {
    media <- soma / quantidade
    cat("Média dos pares da coluna", j, "é:", media, "\n")
  } else {
    cat("A coluna", j, "não tem números pares\n")
  }
}
## A coluna 1 não tem números pares
## Média dos pares da coluna 2 é: 8 
## A coluna 3 não tem números pares
## Média dos pares da coluna 4 é: 10

21e) Média dos números ímpares de todas as linhas.

for (i in 1:4) {
  
  soma <- 0
  quantidade <- 0
  
  for (j in 1:4) {
    
    if (df[i, j] %% 2 != 0) {
      soma <- soma + df[i, j]
      quantidade <- quantidade + 1
    }
  }
  
  if (quantidade > 0) {
    media <- soma / quantidade
    cat("Média dos ímpares da linha", i, "é:", media, "\n")
  } else {
    cat("A linha", i, "não tem números ímpares\n")
  }
}
## Média dos ímpares da linha 1 é: 2 
## Média dos ímpares da linha 2 é: 6 
## Média dos ímpares da linha 3 é: 10 
## Média dos ímpares da linha 4 é: 14

21f) Soma da diagonal principal.

soma <- 0

for (i in 1:4) {
  soma <- soma + df[i, i]
}

cat("Soma da diagonal principal:", soma, "\n")
## Soma da diagonal principal: 34
# 21g) Soma da diagonal secundária

soma <- 0

for (i in 1:4) {
  soma <- soma + df[i, 5 - i]
}

cat("Soma da diagonal secundária:", soma, "\n")
## Soma da diagonal secundária: 34
  1. Crie um loop for que imprime os números de 1 a 10.
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.
vetor <- 1:100

pares <- c()

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

print(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).
maior_elemento <- function(vetor) {
  maior <- vetor[1]
  for (i in 2:length(vetor)) {
    if (vetor[i] > maior) {
      maior <- vetor[i]
    }
  }
  return(maior)
}

# Teste da função
v <- c(10, 5, 8, 2, 20, 15)
resultado <- maior_elemento(v)
cat("O maior elemento é:", resultado, "\n")
## O maior elemento é: 20