Hvad er forskellen mellem en while-loop og en for-loop?
On februar 17, 2021 by adminHvad er forskellen mellem en while-loop og en for-loop? Det ser ud til, at de er de samme.
Kommentarer
Svar
while
loop bruges normalt, når du skal gentage noget, indtil en given betingelse er sand :
inputInvalid = true; while(inputInvalid) { //ask user for input invalidInput = checkValidInput(); }
På den anden side bruges for
-sløjfen normalt, når du skal gentage et givet nummer gange:
for(var i = 0; i < 100; i++) { ...//do something for a 100 times. }
Du kan bruge dem om hverandre, hvis du vil:
inputInvalid = true; for(;;) { if(!inputInvalid) { break; } //ask user for input invalidInput = checkValidInput(); }
Eller
inputInvalid = true; for(;inputInvalid;) { //ask user for input invalidInput = checkValidInput(); }
Og:
var i = 0; while(i < 100) { //do your logic here i++; }
Kommentarer
- Som du kan se, producerer disse ikke-standardiserede anvendelser mindre elegant, sværere at læse kode. Under hætten er de forskellige sløjfetyper alle de samme betingede, så prøv at bruge den, der syntaktisk passer bedst til det, du prøver at opnå.
- I nedenstående kode kan jeg også sige, gør noget 10 gange. (Det udfylder dit argument som for loop @npinti) var count = 0; mens (tæl < 10) {document.writeln (" løber væk! ") ; tælle ++; }
- Bemærk, at i C kan du omskrive dit tredje eksempel som
for(invalidInput = checkValidInput();inputInvalid;invalidInput = checkValidInput()){}
. Men ja, dit grundlæggende punkt er helt korrekt, og enfor
loop er egentlig bare syntaks sukker. Nogle sprog undgår det helt. Cfor
-sløjfen er et underligt dyr, virkelig mere af en bastardiseretwhile
i modsætning til sprog som Pascal, hvorfor
loop kan kun bruges til at gå gennem diskrete heltal. - hvad betyder det for (;;)? Jeg kan ikke finde forklaring på for (;;) det.
- @mistichor C / C ++ for loop tager 3 udsagn for (;;) er en for loop med 3 tomme udsagn, semikolon adskiller de tomme udsagn .
Svar
Der er en grundlæggende forskel mellem de to: med en for
sløjfe, du skal vide på forhånd hvor ofte sløjfekroppen udføres. Dette er en vigtig begrænsning, da der er mange problemer, hvor du simpelthen ikke ved det. Nogle gange ved du ikke engang, om antallet er endeligt overhovedet !
Overvej f.eks. Et program, der beder brugeren om at indtaste en række navne. Sig, et patientstyringssystem til en tandlæge. Hvordan ville du på forhånd vide, hvor mange patienter tandlægen skal ind? Du don t! Du kan ikke skrive en for
loop til det.
Kommentarer
- Der er flere måder at afslutte en for-sløjfe tidligt, så du behøver kun at kende de maksimale tidspunkter, du har til hensigt at gentage rundt om sløjfen. Hvis du ' er villig til at misbruge den betingede del af for-løkken, kan du få den til at gøre alt, hvad en stund-løkke kan.
- Hvilket sprog taler du om?I pascal har dit argument en vis fortjeneste (hårdkodning af et stort antal, da grænsen er grim), men i C kan du bruge vilkårlige betingelser med
for
. Ingen forskel mellemfor(;xxx;)
ogwhile(xxx)
. - pil ned. Kaos er nøjagtigt korrekt.
initializer;
efterfulgt afwhile(condition){ ... increment;}
er det samme somfor(initializer; condition; increment){ ... }
.
for
loop er bare syntaks sukker, der understøtter en delmængde af brugssager, somwhile
understøtter. Nogle gange ses " syntaks sukker ", men det skal virkelig ses på som en måde at skabe renere, lettere at forstå kode .for
loop faktisk er enwhile
loop i fancy tøj.