Care sunt diferențele dintre bucla while și bucla for?
On februarie 17, 2021 by adminCare sunt diferențele dintre o buclă while și o buclă for? Mi se pare că sunt la fel.
Comentarii
Răspuns
Bucla while
este de obicei utilizată atunci când trebuie să repetați ceva până când o condiție dată este adevărată :
inputInvalid = true; while(inputInvalid) { //ask user for input invalidInput = checkValidInput(); }
Pe de altă parte, bucla for
este de obicei utilizată atunci când trebuie să iterați un număr dat de ori:
for(var i = 0; i < 100; i++) { ...//do something for a 100 times. }
Le puteți folosi în mod interschimbabil dacă doriți:
inputInvalid = true; for(;;) { if(!inputInvalid) { break; } //ask user for input invalidInput = checkValidInput(); }
Sau
inputInvalid = true; for(;inputInvalid;) { //ask user for input invalidInput = checkValidInput(); }
Și:
var i = 0; while(i < 100) { //do your logic here i++; }
Comentarii
- După cum puteți vedea, aceste utilizări non-standard produc cod mai puțin elegant, mai greu de citit. Sub capotă, diferitele tipuri de bucle sunt la fel condiționate, așa că încercați să o utilizați pe cea care se potrivește cel mai bine din punct de vedere sintactic cu ceea ce încercați să realizați.
- În codul de mai jos, pot spune, de asemenea, să faceți ceva 10 ori. (Îți umple argumentul pentru bucla @npinti) var count = 0; while (count < 10) {document.writeln (" buclând! ") ; conta ++; }
- Rețineți că în C, puteți rescrie al treilea exemplu ca
for(invalidInput = checkValidInput();inputInvalid;invalidInput = checkValidInput()){}
. Dar da, punctul tău de bază este complet corect și o buclăfor
este într-adevăr doar sintaxă zahăr. Unele limbi se lipsesc în totalitate. Bucla Cfor
este o fiară ciudată, într-adevăr mai degrabă owhile
bastardizată spre deosebire de limbi precum Pascal, undefor
bucla poate fi utilizată numai pentru a parcurge numere întregi discrete. - ce înseamnă aceasta (;;). Nu găsesc explicația pentru (;;) it.
- @mistichor bucla C / C ++ pentru ia 3 instrucțiuni pentru (;;) este o buclă for cu 3 instrucțiuni goale, punctul și virgula separă instrucțiunile goale .
Răspuns
Există o diferență fundamentală între cele două: cu o for
buclă, trebuie să știți în prealabil cât de des corpul buclei va fi executat. Aceasta este o restricție majoră, deoarece există multe probleme în care pur și simplu nu știi asta. Uneori nici măcar nu știi dacă acel număr este sau nu finit deloc !
Luați în considerare, de exemplu, un program care solicită utilizatorului să introducă o serie de nume. Să zicem, un sistem de management al pacientului pentru un dentist. Cum ați ști în prealabil câți pacienți urmează să intre medicul dentist? Nu poți scrie o buclă for
pentru asta.
Comentarii
- Există mai multe moduri de a termina o buclă for timpuriu, deci trebuie doar să cunoașteți numărul maxim de ori pe care intenționați să o iterați în jurul buclei. Mai mult, dacă ' sunteți dispus să folosiți greșit partea condițională a buclei for, o puteți face să facă orice ar putea face o buclă while.
- Care limba despre care vorbești?În pascal argumentul dvs. are un anumit merit (codarea dură a unui număr mare, deoarece limita este urâtă), dar în C puteți utiliza condiții arbitrare cu
for
. Nicio diferență întrefor(;xxx;)
șiwhile(xxx)
. - săgeata în jos. Haosul este exact corect.
initializer;
urmat dewhile(condition){ ... increment;}
este același lucru cufor(initializer; condition; increment){ ... }
.
for
este doar sintaxă zahăr, acceptând un subset de cazuri de utilizare acceptate dewhile
. Uneori, " sintaxă zahăr " nu este privită, dar ar trebui privită într-adevăr ca o modalitate de a crea un cod mai curat și mai ușor de înțeles .for
este de fapt o buclăwhile
în îmbrăcăminte fantezie.