Jakie są różnice między pętlą while a pętlą for?
On 17 lutego, 2021 by adminJakie są różnice między pętlą while a pętlą for? Wydaje mi się, że są takie same.
Komentarze
Odpowiedź
Pętla while
jest zwykle używana, gdy trzeba coś powtórzyć, aż dany warunek stanie się prawdziwy :
inputInvalid = true; while(inputInvalid) { //ask user for input invalidInput = checkValidInput(); }
Z drugiej strony pętla for
jest zwykle używana, gdy trzeba powtórzyć podaną liczbę razy:
for(var i = 0; i < 100; i++) { ...//do something for a 100 times. }
Możesz ich używać zamiennie, jeśli chcesz:
inputInvalid = true; for(;;) { if(!inputInvalid) { break; } //ask user for input invalidInput = checkValidInput(); }
Lub
inputInvalid = true; for(;inputInvalid;) { //ask user for input invalidInput = checkValidInput(); }
Oraz:
var i = 0; while(i < 100) { //do your logic here i++; }
Komentarze
- Jak widać jednak, te niestandardowe zastosowania dają mniej elegancki, trudniejszy do odczytania kod. W gruncie rzeczy różne typy pętli to te same warunkowe goto, więc spróbuj użyć tego, który składniowo najlepiej pasuje do tego, co próbujesz osiągnąć.
- W poniższym kodzie mogę również powiedzieć, zrób coś 10 razy. (Wypełnia argument jak pętla @npinti) var count = 0; while (liczba < 10) {document.writeln (" zapętlenie! ") ; liczyć ++; }
- Zauważ, że w C możesz przepisać swój trzeci przykład na
for(invalidInput = checkValidInput();inputInvalid;invalidInput = checkValidInput()){}
. Ale tak, twój podstawowy punkt jest całkowicie poprawny, a pętlafor
to tak naprawdę cukier składniowy. W niektórych językach nie ma go całkowicie. Pętla Cfor
to dziwna bestia, bardziej zepsutawhile
w przeciwieństwie do języków takich jak Pascal, gdzie może być używana tylko do przechodzenia przez dyskretne liczby całkowite. - co to oznacza dla (;;). Nie mogę znaleźć wyjaśnienia for (;;) it.
- @mistichor C / C ++ pętla for przyjmuje 3 instrukcje for (;;) jest pętlą for z 3 pustymi instrukcjami, średnik oddziela puste instrukcje .
Odpowiedź
Istnieje fundamentalna różnica między nimi: z for
pętli, musisz wcześniej wiedzieć, jak często będzie wykonywana treść pętli. Jest to poważne ograniczenie, ponieważ istnieje wiele problemów, w których po prostu o tym nie wiesz. Czasami nawet nie wiesz, czy ta liczba jest skończona w ogóle !
Rozważmy na przykład program proszący użytkownika o wprowadzenie serii nazw. Powiedzmy, system zarządzania pacjentami dla dentysty. Skąd możesz wiedzieć, ilu pacjentów przyjmie dentysta? Nie „t! Nie możesz” napisać for
pętli w tym celu.
Komentarze
- Istnieje kilka sposobów wcześniejszego zakończenia pętli for, więc wystarczy znać maksymalne czasy, w których zamierzasz wykonać iterację wokół pętli. Ponadto, jeśli ' chcesz niewłaściwie użyć warunkowej części pętli for, możesz sprawić, że zrobi wszystko, co może zrobić pętla while.
- Co język o którym mówisz?W pascalu twój argument ma pewną zaletę (zakodowanie dużej liczby na stałe, ponieważ limit jest brzydki), ale w C możesz użyć dowolnych warunków z
for
. Brak różnicy międzyfor(;xxx;)
awhile(xxx)
. - strzałka w dół. Chaos jest dokładnie poprawny.
initializer;
, po którym następujewhile(condition){ ... increment;}
, to to samo, cofor(initializer; condition; increment){ ... }
.
for
to po prostu cukier składni obsługujący podzbiór przypadków użycia obsługiwanych przezwhile
. Czasami " cukier składniowy " jest lekceważony, ale naprawdę należy go traktować jako sposób na stworzenie czystszego i łatwiejszego do zrozumienia kodu .for
jest w rzeczywistościwhile
pętlą w fantazyjnym ubraniu.