Ciklai yra viena iš pag­rin­di­nių prog­ra­ma­vi­mo sąvokų. Jie užtikrina, kad tam tikros kodo dalys būtų vykdomos pa­kar­to­ti­nai tam tikromis sąlygomis. Naudojant ciklus „while“ kalboje R, tam tikra dalis kartojama tol, kol anksčiau nurodyta sąlyga tampa ne­tei­sin­ga.

Kam naudojami ciklai „while“ kalboje R?

While ciklai naudojami tam, kad pa­kar­to­ti­nai vykdytų kodo bloką, pri­klau­so­mai nuo sąlygos. Kol ši sąlyga yra teisinga, while ciklo kodas yra vykdomas.

Ciklai dažnai naudojami R prog­ra­ma­vi­me, norint sužinoti apie R sąrašo elementus ir atlikti konk­re­čius veiksmus su jais atskirai. Pa­vyz­džiui, galite išvesti bet kurią eilutę ekrane iš R eilutės sąrašo. Be to, R ciklai naudojami są­ly­gi­niam kodo vykdymui. Ciklai, tokie kaip while ciklas, yra daugelio žinomų rūšiavimo algoritmų, kurie or­ga­ni­zuo­ja duomenų bazę pagal tam tikrus kri­te­ri­jus, pagrindas.

R kalbos while ciklų struktūra ir sintaksė

R kalbos while ciklų sintaksė yra panaši į daugumos kitų prog­ra­ma­vi­mo kalbų while ciklų sintaksę. Ciklo ant­raš­tė­je, kuri pradedama raktiniu žodžiu while, sąlyga nurodyta skliaus­tuo­se. Kad ciklo korpusas būtų vykdomas, ši sąlyga turi būti teisinga. Šis korpusas yra ne kas kita, kaip jo paties kodas po ciklo antraštės, įrašytas į skliaus­te­lius.

Norėdami tai iliust­ruo­ti, sukūrėme pavyzdį. Šis R kilpos pavyzdys rodo kilpą „while“, kuri išveda reikšmes nuo 1 iki 10:

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

Bubb­le­sort R pavyzdyje

Bubb­le­sort yra kla­si­ki­nis rūšiavimo al­go­rit­mas, nau­do­ja­mas R vek­to­riaus arba masyvo ele­men­tams R rūšiuoti di­dė­jan­čia tvarka. Šiame rūšiavimo algoritme, kol visi vek­to­riaus elementai yra su­rū­šiuo­ti, rūšiavimo kodas vykdomas naudojant while ciklą:

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

Pirmiau pa­teik­ta­me kode sukurta R funkcija, vadinama bubb­le­sort. Ji užtikrina, kad skait­me­ni­nis vektorius būtų su­rū­šiuo­tas di­dė­jan­čia tvarka. Ciklas while nau­do­ja­mas keitimo procesui, kuris yra būtinas Bubb­le­sort, atlikti, kol rū­šia­vi­mas bus baigtas.

Pertrauka cikle „while“ kalboje R

Norėdami iš anksto išeiti iš ciklo „while“ esant tam tikroms sąlygoms, galite naudoti raktinį žodį „break“. Tai užtikrina, kad ciklas bus paliktas ir į jį nebus grįžtama. Štai pavyzdys, pa­aiš­ki­nan­tis „break“ teiginį:

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

Pirmiau pateikta kilpa ekrane išveda skaičius nuo 10 iki 5. Kai kin­ta­ma­sis „x“ pasiekia vertę 5, vykdoma R „if“ sąlyga ir kilpa nu­trau­kia­ma anksčiau laiko, iš­kvies­da­ma „break“.

Kitos kilpos R

R kalboje „while“ ciklas nėra vie­nin­te­lis ciklo tipas. Taip pat yra „for“ ciklas, kuris dažnai laikomas skai­čia­vi­mo ciklu, ir „repeat“ ciklas, kuris nau­do­ja­mas kodui vykdyti keletą kartų, ne­pri­klau­so­mai nuo sąlygos. „Repeat“ ciklai turi būti nutraukti naudojant raktinį žodį „break“, kitaip jie tampa be­ga­li­niais ciklais.

For ciklas R kalboje

For ciklai naudojami, kai kartojimų skaičius yra žinomas iš anksto. Kartojimų skaičius yra aiškiai nurodytas ciklo ant­raš­tė­je. For ciklas, kuris išveda skaičius nuo 1 iki 5, atrodo taip:

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

Pa­kar­to­ki­te kilpą R

Pa­kar­to­ji­mo ciklai R kalboje naudojami kodui vykdyti keletą kartų, ne­pri­klau­so­mai nuo sąlygos. Jei jau turite prog­ra­ma­vi­mo patirties, tik­riau­siai esate su­si­pa­ži­nę su do-while ciklais iš kitų prog­ra­ma­vi­mo kalbų, pvz., Java. R kalboje nėra aiškaus do-while ciklo, kur kodas būtų vykdomas bent vieną kartą. Tačiau šią funkciją galima lengvai įgy­ven­din­ti naudojant pa­kar­to­ji­mo ciklus:

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

Pa­teik­ta­me kodo pavyzdyje išvedami skaičiai nuo 1 iki 10. Kodas vykdomas bent vieną kartą (kla­si­ki­nė­je „do-while“ kilpoje „do“ kodų bloke) prieš „if“ teiginį, kuris užbaigia kilpą, jei nurodyta sąlyga yra teisinga. be736e550b1141b116c6745223aecfd7

d1d76d85f27f41c7f98c49bcb7641848

37b614e8ff1142c9025056cc2b26f936

f73edeee674565a3ba93d621869650b4

Go to Main Menu