Mitä eroja while-silmukan ja for for -silmukan välillä on?
On helmikuu 17, 2021 by adminMitkä ovat erot while-silmukan ja for -silmukan välillä? Minusta tuntuu, että ne ovat samat.
Kommentit
vastaus
while
-silmukkaa käytetään yleensä, kun sinun on toistettava jotain, kunnes tietty ehto on totta :
inputInvalid = true; while(inputInvalid) { //ask user for input invalidInput = checkValidInput(); }
Toisaalta for
-silmukkaa käytetään yleensä, kun joudut toistamaan tietyn numeron kertaa:
for(var i = 0; i < 100; i++) { ...//do something for a 100 times. }
Voit käyttää niitä keskenään, jos haluat:
inputInvalid = true; for(;;) { if(!inputInvalid) { break; } //ask user for input invalidInput = checkValidInput(); }
Tai
inputInvalid = true; for(;inputInvalid;) { //ask user for input invalidInput = checkValidInput(); }
Ja:
var i = 0; while(i < 100) { //do your logic here i++; }
kommentit
- Kuten huomaatkin, nämä epätyypilliset käyttötavat tuottavat vähemmän tyylikästä, vaikeampaa lukea koodia. Hupun alla eri silmukatyypit ovat kaikki samat ehdolliset, joten yritä käyttää sitä, joka syntaktisesti sopii parhaiten siihen, mitä yrität saavuttaa.
- Seuraavassa koodissa voin myös sanoa tee jotain 10 kertaa. (Se täyttää argumenttisi kuten silmukalle @npinti) var count = 0; kun taas (count < 10) {document.writeln (" silmukoita! ") ; laskea ++; }
- Huomaa, että C: ssä voit kirjoittaa kolmannen esimerkkisi uudelleen nimellä
for(invalidInput = checkValidInput();inputInvalid;invalidInput = checkValidInput()){}
. Mutta kyllä, peruskysymyksesi on täysin oikea, jafor
-silmukka on oikeastaan vain syntaksisokeri. Jotkut kielet tekevät ilman sitä kokonaan. Cfor
-silmukka on outo peto, oikeastaan pikemminkin paskiainenwhile
, toisin kuin Pascalin kaltaiset kielet, joissafor
-silmukkaa voidaan käyttää vain erillisten kokonaislukujen selaamiseen. - mitä se tarkoittaa (;;). En löydä selitystä sille (;;).
- @mistichor -silmukan C / C ++ -signaali vie 3 lausetta ((;;) on for-silmukalle, jossa on 3 tyhjää lausetta, puolipiste erottaa tyhjät lauseet .
vastaus
Näiden kahden välillä on perustavanlaatuinen ero: for
-silmukka, sinun on tiedettävä etukäteen kuinka usein silmukan runko suoritetaan. Tämä on merkittävä rajoitus, koska on monia ongelmia, joissa et yksinkertaisesti tiedä sitä. Joskus et edes tiedä onko luku lopullinen ollenkaan !
Harkitse esimerkiksi ohjelmaa, joka pyytää käyttäjää syöttämään sarjan nimiä. Sanotaan, potilaan hallintajärjestelmä hammaslääkärille. Mistä tiedät etukäteen, kuinka monta potilasta hammaslääkäri tulee sisään? Et voi kirjoittaa t for
-silmukkaa.
Kommentit
- On useita tapoja lopettaa for for -silmukka aikaisin, joten sinun tarvitsee tietää vain enimmäisajat, jotka aiot iteroida silmukan ympäri. Lisäksi, jos ' olet valmis käyttämään väärin for-silmukan ehdollista osaa, voit saada sen tekemään kaiken, mitä jonkun silmukka voisi.
- kielestä, josta puhut?Pascalissa argumentillasi on jonkin verran etuja (kovan koodaaminen suureksi määräksi, koska raja on ruma), mutta C: ssä voit käyttää mielivaltaisia ehtoja
for
: n kanssa.for(;xxx;)
jawhile(xxx)
välillä ei ole eroa. - alanuoli. Kaaos on täsmälleen oikea.
initializer;
ja sen jälkeenwhile(condition){ ... increment;}
on sama kuinfor(initializer; condition; increment){ ... }
.
for
-silmukka on vain syntaksisokeri, joka tukee sellaisten käyttötapausten osajoukkoa, joitawhile
tukee. Joskus " syntaksisokeria " katsotaan halvalla, mutta sitä pitäisi todella tarkastella keinona luoda puhtaampi, helpommin ymmärrettävä koodi .for
-silmukka on todellawhile
-silmukka hienoissa vaatteissa.