Capítulo 12 Loop for

O loop for em R é uma estrutura de controlo de fluxo que permite executar repetidamente um bloco de código para cada elemento de uma sequência. Ele é particularmente útil quando o número de iterações é conhecido de antecipadamente. O loop for é amplamente utilizado em R para iterar sobre vetores, listas, data frames, e outras estruturas de dados.

# Sintaxe
for (variável in sequência) {
  # Bloco de código a ser executado
}
  • variável: Uma variável de controlo que, em cada iteração, assume o valor do próximo elemento da sequência.

  • sequência: Uma estrutura de dados como um vetor, lista, ou outro objeto sobre o qual se deseja iterar.

  • bloco de código: As instruções a serem executadas a cada iteração do loop.

Funcionamento do Loop for

  • Inicialização: Antes de iniciar o loop, a variável de controlo é definida com o primeiro elemento da sequência.

  • Iteração: Para cada iteração, a variável de controlo é atualizada com o próximo valor da sequência.

  • Execução do Bloco de Código: O bloco de código dentro do loop é executado para cada valor da variável de controlo.

  • Finalização: O loop termina quando todos os elementos da sequência tiverem sido processados.

Exemplo 1: Imprima os números de 0 a 10 no ecrã.

for (i in 0:10) {
  print(i)
}
## [1] 0
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10

Exemplo 2: Soma dos elementos de um vetor.

numeros <- c(1, 2, 3, 4, 5)
soma <- 0

for (num in numeros) {
  soma <- soma + num
}

print(paste("A soma dos números é:", soma))
## [1] "A soma dos números é: 15"

Exemplo 3: Uso do for com índices. Também pode usar o loop for para iterar sobre índices de vetores ou listas, o que pode ser útil quando se deseja aceder ou modificar elementos em posições específicas.

numeros <- c(10, 20, 30, 40, 50)

for (i in 1:length(numeros)) {
  numeros[i] <- numeros[i] * 2
}

print("Elementos do vetor multiplicados por 2:")
print(numeros)
## [1]  20  40  60  80 100

Exemplo 4: Iterar sobre matrizes. O loop for também pode ser utilizado para percorrer elementos de uma matriz, seja por linha ou por coluna. No exemplo abaixo, calculamos a soma dos elementos de cada linha de uma matriz.

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

for (i in 1:nrow(matriz)) {
  soma_linhas[i] <- sum(matriz[i, ])
}

print("Soma dos elementos de cada linha:")
print(soma_linhas)
## [1] 12 15 18

Exemplo 5: Cálculo de Médias de Colunas num Data Frame. Neste exemplo, calculamos a média de cada coluna de um data frame usando um loop for.

dados <- data.frame(
A = c(1, 2, 3),
B = c(4, 5, 6),
C = c(7, 8, 9)
)

medias <- numeric(ncol(dados))

for (col in 1:ncol(dados)) {
  medias[col] <- mean(dados[, col])
}

print("Médias das colunas do data frame:")
print(medias)
## [1] 2 5 8

12.1 Exercícios

1. Escreva um programa em R que use um loop for para imprimir todos os números de 1 a 10.

2. Escreva um programa em R que use um loop for para imprimir o quadrado de cada número de 1 a 5.

3. Escreva um programa em R que some todos os elementos do vetor numeros <- c(2, 4, 6, 8, 10) usando um loop for.

4. Escreva um programa em R que calcule a média das notas no vetor notas <- c(85, 90, 78, 92, 88) usando um loop for.

5. Escreva um programa em R que imprima todos os números ímpares do vetor valores <- c(1, 3, 4, 6, 9, 11, 14). Utilize um loop for.

6. Escreva um programa em R que leia um número inteiro e use um loop for para imprimir sua a tabuada de 1 a 10.

7. Escreva um programa em R que leia um número inteiro e use um loop for para criar o vetor c(1,2,...,n-1,n).

8. Escreva um programa em R que leia um número inteiro e use um loop for para determinar se o número é perfeito ou não. Um número perfeito é aquele cuja soma de seus divisores próprios é igual ao próprio número (por exemplo, 6 tem divisores próprios 1, 2 e 3, e 1+2+3 = 6).

9. Escreva um programa em R que use um loop for para encontrar e imprimir todos os números perfeitos entre 1 e 1000.

10. Escreva um programa em R que leia dois inteiros \(n\) e \(m\) e imprima os números entre \(0\) e \(n\), inclusive, com um intervalo de \(m\) entre eles. Utilize um loop for para o efeito.

11. Escreva um programa que calcule a média de um conjunto de notas fornecidas pelo utilizador. O número de notas a serem inseridas é indicado pelo utilizador antes da entrada das notas. Utilize um loop for para recolher as notas e calcular a média. Segue-se um exemplo da interação com o computador:

Digite o número de notas que serão inseridas: 4

Digite a nota: 12

Digite a nota: 13

Digite a nota: 15.5

Digite a nota: 16

A média das notas é 14.125

12. Crie uma matriz \(4\times4\) com números de 1 a 16. Utilizando o comando de repetição for calcule:

  1. a média da terceira coluna da matriz.

  2. a média da terceira linha da matriz.

  3. a média de cada coluna da matriz.

  4. a média de cada linha da matriz.

  5. a média dos números pares de cada coluna da matriz.

  6. a média dos números ímpares de cada linha da matriz.

Obs: Use estruturas de decisão (ifelse…) sempre que necessário para condicionar a lógica dentro dos loops.