Pętle while

Na koniec przyjrzymy się pętlom while, które wykorzystują inny sposób zapętlania niż pętle for. W przypadku pętli for znamy liczbę elementów w obiekcie, których używamy do iteracji, więc z góry znamy liczbę iteracji, które zostaną wykonane. Jednak są chwile, w których nie znamy tej liczby przed rozpoczęciem iteracji, a zamiast tego będziemy iterować w oparciu o spełnienie pewnego warunku po każdej iteracji. Wtedy przydatne są pętle while Sposób działania pętli while polega na tym, że określamy warunek, tak jak w przypadku warunków if …else i jeśli warunek jest spełniony, przechodzimy do iteracji. Po zakończeniu iteracji ponownie sprawdzamy warunek i jeśli nadal jest prawdziwy, powtarzamy iterację i tak dalej. Zauważ, że w tym przypadku, jeśli chcemy zatrzymać się w pewnym momencie, musimy zmodyfikować elementy użyte w warunku tak, aby w pewnym momencie wyniósł FALSE. Możesz także użyć break i next wewnątrz pętli while. Poniższy przykład pokazuje, jak wydrukować wszystkie liczby całkowite od 1 do 10. Zauważ, że jeśli zaczynamy od 1 tak jak robimy, ale zamiast dodawać 1 po każdej iteracji, odejmujemy 1 lub nie zmieniamy didn’t nigdy nie przestanie iterować. Dlatego musisz być bardzo ostrożny podczas używania pętli while, ponieważ liczba iteracji może być nieskończona:

x <- 1

while (x <= 10) {

prit(x)

x<- x + 1

}

#> [1] 1

#> [1] 2

#> [1] 3

#> [1] 4

#> [1] 5

#> [1] 6

#> [1] 7

#> [1] 8

#> [1] 9

#> [1] 10

Jeśli chcesz wykonać nieskończoną pętlę, możesz użyć pętli while z wartością TRUE zamiast warunku. Jeśli nie dołączysz polecenia break, kod skutecznie zapewni nieskończoną pętlę i będzie się powtarzał, dopóki nie zostanie zatrzymany za pomocą polecenia klawiaturowego CTRL + C lub innego mechanizmu zatrzymywania w używanym IDE. Jednak w takich przypadkach czystsze jest użycie konstrukcji powtarzania, jak pokazano poniżej. Może się to wydawać sprzeczne z intuicją, ale są chwile, kiedy użycie nieskończonych pętli jest przydatne. W takich przypadkach masz zewnętrzny mechanizm używany do zatrzymania programu na podstawie warunku zewnętrznego względem R. następujący przykład spowoduje awarię sesji R:

# DO NOT ExECUTE THIS IT’s AN INFIITE LOOP

x <- 1

repeat {

print(x)

x <- x +1

}

#> [1] 1

#> [1] 2

#> [1] 3

#> [1] 4

#> [1] 5

#> [1] 5

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *