Os loops são um dos conceitos básicos da pro­gra­ma­ção. Eles garantem que certas passagens de código sejam exe­cu­ta­das re­pe­ti­da­mente sob uma de­ter­mi­nada condição. Com os loops while em R, uma secção é repetida até que a condição es­pe­ci­fi­cada an­te­ri­or­mente se torne falsa.

Para que servem os loops while em R?

Os loops while são uti­li­za­dos para executar re­pe­ti­da­mente um bloco de código em função de uma condição. Enquanto essa condição for ver­da­deira, o código do loop while é executado.

Os loops são fre­quen­te­mente uti­li­za­dos na pro­gra­ma­ção R para conhecer os elementos de uma lista R e para realizar ações es­pe­cí­fi­cas sobre eles in­di­vi­du­al­mente. Por exemplo, pode mostrar no ecrã qualquer cadeia de uma lista de cadeias R. Além disso, os loops while em R são uti­li­za­dos para a execução con­di­ci­o­nal de código. Os loops como o loop while são a base de muitos al­go­rit­mos de ordenação co­nhe­ci­dos que organizam uma base de dados de acordo com de­ter­mi­na­dos critérios.

Estrutura e sintaxe dos loops while em R

A sintaxe dos loops while em R é se­me­lhante à dos loops while na maioria das outras lin­gua­gens de pro­gra­ma­ção. No cabeçalho do loop, que é in­tro­du­zido com a palavra-chave while, a condição é es­pe­ci­fi­cada entre pa­rên­te­ses. Esta deve ser ver­da­deira para que o núcleo do loop seja executado. Este núcleo não é mais do que o seu próprio bloco de código após o cabeçalho do loop, encerrado entre chaves.

Para ilustrar isso, criámos um exemplo. Este exemplo de loop em R mostra um loop while que retorna valores de 1 a 10:

x <- 1
while (x <= 10) {
    print(x)
    x <- x + 1
}
R

Exemplo: Bubble Sort em R

Bubble Sort é um algoritmo de ordenação clássico usado para ordenar os elementos de um vetor em R ou de uma matriz em R em ordem crescente. Neste algoritmo de ordenação, usa-se um loop while para executar o código de ordenação até que todos os elementos do vetor estejam ordenados:

bubblesort <- function(x) {
    swapped <- TRUE
    n <- length(x) - 1
    while (swapped) {
        swapped <- FALSE
        for (i in 1:n) {
            if (x[i] > x[i+1]) {
                tmp <- x[i]
                x[i] <- x[i+1]
                x[i+1] <- tmp
                swapped <-TRUE
                }
        }
    }
    return(x)
}
R

No código anterior, é criada uma função R chamada bub­ble­sort. Isso garante que um vetor numérico seja ordenado em ordem crescente. O loop while é usado para realizar o processo de troca, que é essencial para o Bubble Sort, até que a ordenação seja concluída.

In­ter­rup­ção do loop while em R

Para sair pre­ma­tu­ra­mente de um loop while sob uma de­ter­mi­nada condição, pode utilizar a palavra-chave «break». Isso garante que sai do loop e não volta a entrar nele. Aqui está um exemplo da instrução «break» para explicar:

x <- 10
while (x >= 0) {
    print(x)
    if (x == 5) {
        break
        }
        x <- x - 1
}
R

O loop anterior mostra os números de 10 a 5 no ecrã. Quando a variável «x» atinge o valor 5, a condição R «if» é executada e o loop termina pre­ma­tu­ra­mente chamando «break».

Outros loops em R

O while loop em R não é o único tipo de loop em R. Existe também o for loop, que é fre­quen­te­mente con­si­de­rado um tipo de loop de contagem, e o repeat loop, que é usado para executar código várias vezes, in­de­pen­den­te­mente de uma condição. Os loops de repetição devem ser fi­na­li­za­dos com a palavra-chave “break”, caso contrário, são loops infinitos.

Loop for em R

Os loops for são uti­li­za­dos quando o número de iterações é conhecido an­te­ci­pa­da­mente. O número de iterações é es­pe­ci­fi­cado ex­pli­ci­ta­mente no cabeçalho do loop. Um loop for que produz números de 1 a 5 tem a seguinte aparência:

for (z in 1:5) {
print(i)
}
R

Repetir loop em R

Os loops de repetição em R são usados para executar código várias vezes, in­de­pen­den­te­mente de uma condição. Se já tem ex­pe­ri­ên­cia em pro­gra­ma­ção, pro­va­vel­mente está fa­mi­li­a­ri­zado com os loops do-while de outras lin­gua­gens de pro­gra­ma­ção, como Java. Em R, não existe um loop do-while explícito em que um bloco de código seja executado pelo menos uma vez. No entanto, a fun­ci­o­na­li­dade pode ser fa­cil­mente im­ple­men­tada com loops de repetição:

x <- 1
repeat {
    print(x)
    if (x >= 10) {
        break
        }
x <- x + 1
}
R

O exemplo de código acima produz números de 1 a 10. O código é executado pelo menos uma vez (num clássico loop do-while no «do codeblock») antes da instrução «if», que termina o loop se a condição es­pe­ci­fi­cada for ver­da­deira.

Ir para o menu principal