Skip to content
Tiantan
Articles

Hva er forskjellene mellom en while-loop og en for loop?

On februar 17, 2021 by admin

Hva er forskjellene mellom en while-loop og en for-loop? Det ser ut til at de er de samme.

Kommentarer

  • Prøv å bruke begge deler til flere " utfordrer ". Du ' vil raskt se at en sløyfekonstruksjon er bedre egnet for en situasjon enn andre sløyfekonstruksjoner. Og faktisk er det to typer mens sløyfer på noen språk (som i Javascript) med sine egne (spesielle) brukstilfeller. Faktisk kan begge / alle tre brukes til å oppnå et mål, men bare en kan gjøre jobben uten for mye semantisk " overhead " (gjør det lettere å forstå f.eks.).
  • De er i utgangspunktet de samme. En for loop er bare syntaks sukker, og støtter en delmengde av brukstilfeller som while 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 .
  • Oppstemt! Ingen spørsmål er for dumme når du lærer.
  • @StevenBurnap: de er i utgangspunktet ikke de samme. Et språk med bare mens sløyfer og betingelser er Turing-komplett, et språk med bare for sløyfer er ikke ' t. Et språk med mens sløyfer kan beregne hvilken som helst µ -rekursiv funksjon, et språk med for sløyfer kan bare beregne primitive-rekursive funksjoner. Et språk med for loops kan bare uttrykke programmer som alltid avsluttes, det kan ikke uttrykke ikke-avslutning.
  • @J ö rgWMittag Vel, det avhenger av for-loop , nå, gjør ikke ' det. Selv om man kan hevde at en C for loop er faktisk en while loop i fancy klær.

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 en for sløyfe er egentlig bare syntaks sukker. Noen språk gjør det helt uten. C for sløyfen er et underlig dyr, egentlig mer av en bastardisert while i motsetning til språk som Pascal, der for 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 mellom for(;xxx;) og while(xxx).
  • pil ned. Kaos er nøyaktig riktig. initializer; etterfulgt av while(condition){ ... increment;} er det samme som for(initializer; condition; increment){ ... }.

Written by admin

Legg igjen en kommentar Avbryt svar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

Siste innlegg

  • Ved å bruke en balun med en resonansdipol
  • Hva er forskjellen mellom “ kan ikke ” og “ kan ikke ”? [duplikat]
  • På JFK, kan du bevege deg mellom terminalene på flyplassen på innenlandsflyvninger?
  • “ Dypt verdsatt ” eller “ setter stor pris på ”
  • Hva betyr ' abstrakte ideer '? [lukket]

Arkiv

  • februar 2021
  • januar 2021
  • desember 2020
  • november 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Copyright Tiantan 2021 | Theme by Theme in Progress | Proudly powered by WordPress

Back to top