Hva er forskjellene mellom en while-loop og en for loop?
On februar 17, 2021 by adminHva er forskjellene mellom en while-loop og en for-loop? Det ser ut til at de er de samme.
Kommentarer
Svar
while
sløyfen brukes vanligvis når du trenger å gjenta noe til en gitt tilstand er oppfylt :
inputInvalid = true; while(inputInvalid) { //ask user for input invalidInput = checkValidInput(); }
På den annen side brukes for
-sløyfen vanligvis når du trenger å gjenta et gitt nummer ganger:
for(var i = 0; i < 100; i++) { ...//do something for a 100 times. }
Du kan bruke 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 skjønner, produserer disse ikke-standardiserte bruken mindre elegant, vanskeligere å lese kode. Under panseret er de forskjellige sløyfetypene like betinget, så prøv å bruke den som syntaktisk passer best til det du prøver å oppnå.
- I koden under kan jeg også si gjør noe 10 ganger. (Det fyller argumentet ditt som for loop @npinti) var count = 0; mens (tell < 10) {document.writeln (" sløyfe bort! ") ; telle ++; }
- Merk at i C kan du omskrive det tredje eksemplet ditt som
for(invalidInput = checkValidInput();inputInvalid;invalidInput = checkValidInput()){}
. Men ja, ditt grunnleggende poeng er helt riktig, og enfor
sløyfe er egentlig bare syntaks sukker. Noen språk gjør det helt uten. Cfor
sløyfen er et underlig dyr, egentlig mer av en bastardisertwhile
i motsetning til språk som Pascal, derfor
loop kan bare brukes til å gå gjennom diskrete heltall. - hva betyr det for (;;). Jeg finner ikke forklaring på for (;;) det.
- @mistichor C / C ++ for loop tar 3 setninger for (;;) er en for loop med 3 tomme setninger, semikolonet skiller de tomme setningene .
Svar
Det er en grunnleggende forskjell mellom de to: med en for
loop, du må vite på forhånd hvor ofte loop-kroppen vil bli utført. Dette er en stor begrensning, siden det er mange problemer der du ikke bare vet det. Noen ganger vet du ikke engang om tallet er endelig i det hele tatt !
Tenk for eksempel på et program som ber brukeren om å legge inn en serie med navn. Si et pasienthåndteringssystem for en tannlege. Hvordan vil du vite på forhånd hvor mange pasienter tannlegen skal inn? Du trenger ikke! Du kan ikke skrive en for
løkke for det.
Kommentarer
- Det er flere måter å avslutte en for loop tidlig, så du trenger bare å vite de maksimale tidene du har tenkt å gjenta rundt loop. Videre, hvis du ' er villig til å misbruke den betingede delen av for-sløyfen, kan du få den til å gjøre alt som en stund-sløyfe kan.
- Hvilken språk snakker du om?I pascal har argumentet ditt noen fortjeneste (hardkoding av et stort antall da grensen er stygg), men i C kan du bruke vilkårlige forhold med
for
. Ingen forskjell mellomfor(;xxx;)
ogwhile(xxx)
. - pil ned. Kaos er nøyaktig riktig.
initializer;
etterfulgt avwhile(condition){ ... increment;}
er det samme somfor(initializer; condition; increment){ ... }
.
for
loop er bare syntaks sukker, og støtter en delmengde av brukstilfeller somwhile
støtter. Noen ganger blir " syntaks sukker " sett ned på, men det bør virkelig sees på som en måte å skape renere, lettere å forstå kode .for
loop er faktisk enwhile
loop i fancy klær.