Skip to content
Tiantan
Articles

Mitä eroja while-silmukan ja for for -silmukan välillä on?

On helmikuu 17, 2021 by admin

Mitkä ovat erot while-silmukan ja for -silmukan välillä? Minusta tuntuu, että ne ovat samat.

Kommentit

  • Yritä käyttää molempia monille " haastaa ". ' Näet nopeasti, että yksi silmukkarakenne sopii paremmin johonkin tilanteeseen kuin muut silmukkarakenteet. Ja oikeastaan joillakin kielillä (kuten Javascriptissa) on kahdenlaisia silmukoita, joilla on omat (erityiset) käyttötapauksensa. Itse asiassa molempia / kaikkia kolmea voidaan käyttää tavoitteen saavuttamiseen, mutta vain yksi saattaa tehdä työn ilman liikaa semanttista " yleiskustannusta " (helpottaa esimerkiksi ymmärtämistä).
  • Ne ovat periaatteessa samoja. for -silmukka on vain syntaksisokeri, joka tukee sellaisten käyttötapausten osajoukkoa, joita while tukee. Joskus " syntaksisokeria " katsotaan halvalla, mutta sitä pitäisi todella tarkastella keinona luoda puhtaampi, helpommin ymmärrettävä koodi .
  • Äänestetty! Mikään kysymys ei ole liian typerä, kun opit.
  • @StevenBurnap: ne eivät ole periaatteessa samanlaisia. Kieli, jolla on vain silmukoita ja ehdollisia, on Turing-täydellinen, kieli, jolla on vain silmukoita, ei ole ' t. Kieli, jossa on silmukoita, voi laskea minkä tahansa µ -rekursiivisen funktion, kieli, jolla on silmukoita, voi laskea vain primitiivisiä-rekursiivisia toimintoja. Kieli, jolla on silmukoita, voi ilmaista vain ohjelmia, jotka päättyvät aina, se ei voi ilmaista lopetusta.
  • @J ö rgWMittag No, se riippuu for-silmukasta , nyt, ' ei sitä. Vaikka voitaisiin väittää, että C for -silmukka on todella while -silmukka hienoissa vaatteissa.

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, ja for -silmukka on oikeastaan vain syntaksisokeri. Jotkut kielet tekevät ilman sitä kokonaan. C for -silmukka on outo peto, oikeastaan pikemminkin paskiainen while, toisin kuin Pascalin kaltaiset kielet, joissa for -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;) ja while(xxx) välillä ei ole eroa.
  • alanuoli. Kaaos on täsmälleen oikea. initializer; ja sen jälkeen while(condition){ ... increment;} on sama kuin for(initializer; condition; increment){ ... }.

Written by admin

Vastaa Peruuta vastaus

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Viimeisimmät artikkelit

  • Balunin käyttäminen resonanssidipolin kanssa
  • Mitä eroa on “ ei voi ” ja “ ei voi ”? [kaksoiskappale]
  • JFK: ssä voitko liikkua terminaalien lentokentän välillä kotimaan lennoilla?
  • “ Syvästi arvostettu ” tai “ arvostettu rakkaasti / div>
  • Mitä ' abstraktit ideat ' tarkoittaa? [suljettu]

Arkistot

  • helmikuu 2021
  • tammikuu 2021
  • joulukuu 2020
  • marraskuu 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