Erinevus silmuse vahel ja selle vahel

Autor: Laura McKinney
Loomise Kuupäev: 2 Aprill 2021
Värskenduse Kuupäev: 10 Mai 2024
Anonim
My job is to observe the forest and something strange is happening here.
Videot: My job is to observe the forest and something strange is happening here.

Sisu


C ++ ja Java puhul võimaldavad silmuse, samas kui silmuse ja katkematu silmuse iteratsioonilaused käskude komplekti korduvalt täita, kuni tingimus on tõene ja lõpeb kohe, kui tingimus muutub valeks. Tingimused iteratsiooniväljaannetes võivad olla eelnevalt määratletud nagu silmuse jaoks või avatud, nagu samas kui silmus.

Selle rakendatavuse, jõu ja paindlikkuse suurendamiseks on C ++-s mitmeid silmuseid variatsioone. Näiteks for for loop võimaldab meil selle kontrollimiseks kasutada silmuse sees rohkem kui ühte muutujat ja konvergeerimisfunktsiooni kasutamist silmuse jaoks for. Vastupidi, kuigi loop-ga ei saa me kasutada paljusid variatsioone, mida tuleb kasutada tavalise süntaksi korral.

Silmuste vahel ja vahel on mõned suured erinevused, mida selgitatakse lähemalt võrdlusdiagrammi abil.

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Järeldus

Võrdlusdiagramm

Võrdluse alusjaoks samas
Deklaratsioonjaoks (lähtestamine; tingimus; iteratsioon) {
// silmuse korpus
}
kuigi (tingimus) {
avaldused; // silmuse keha
}
VormingInitsialiseerimine, tingimuste kontrollimine, iteratsiooniavaldus kirjutatakse ahela ülaossa.Ainult initsialiseerimine ja tingimuste kontrollimine toimub ahela ülaosas.
KasutageFor for loop kasutati ainult siis, kui iteratsioonide arvu juba teada saime.Samas kui silmust kasutatakse ainult siis, kui iteratsiooni arv pole täpselt teada.
SeisundKui tingimust pole silmuse jaoks paika pandud, itereerib silmus lõpmatu arv kordi.Kui tingimust pole silmuse ajal üles seatud, pakub see kompileerimise tõrke.
InitsialiseerimineSilmuse jaoks ei korrata tehtud initsialiseerimist kunagi.Kui silmuses initsialiseerimine toimub seisundi kontrollimise ajal, siis initsialiseerimine toimub iga kord, kui silmus itereerub.
Iteratsiooni avaldusKuna silmuse iteratsioon kirjutatakse ülaosas, käivitub see alles siis, kui kõik silmuse avaldused on täidetud.Samal ajal kui silmus, saab iteratsiooniavalduse kirjutada kõikjal silmus.


Silmuse määratlus

Java-keeles on kahte tüüpi jaoks silmuseid. Esimene vorm on “traditsiooniline” vorm ja teine ​​on “igaühe jaoks”.

Süntaks

Silmusavalduse traditsiooniline üldvorm.

for (initsialiseerimine; tingimus; iteratsioon) {// loop of for loop}

  • Initsialiseerimine - Silmuse ahelat juhtiva muutuja initsialiseerimist teostatakse ainult üks kord, ahela esimese iteratsiooni ajal. Siin lähtestatakse silmust kontrolliv muutuja, mõnikord kui silmuse muutujat ei kasutata enam kuskil programmis ja seda kasutatakse ainult silmuse kontrollmuutujana, siis see deklareeritakse ja initsialiseeritakse "jaoks" silmus.
  • Seisund - Silmuse "jaoks" tingimust täidetakse iga kord, kui silmust korratakse.
  • Suurendamine ja iteratsioon- iteratsiooniavaldus on avaldis, mis suurendab või vähendab ahelat juhtivat muutujat.

Kui ahel käivitatakse, täidetakse kõigepealt selle initsialiseerimise tingimus; siis kontrollitakse seisukorda. Kui tingimus on täidetud, käivitatakse silmuse keha, siis teostatakse iteratsiooniavaldus. Seejärel kontrollitakse uuesti seisukorda, et teada saada, kas silmus itereerub veelgi või lõpeb.


Java keeles võivad initsialiseerimisavaldus ja iteratsiooniavaldus sisaldada rohkem kui ühte avaldust. Iga lauset eraldab komaga Java, koma on eraldaja, C ++ puhul on „koma” operaator, mida saab kasutada mis tahes kehtivas avaldises.

iga silmuse jaoks ja selle süntaks

Vorm „igaühe jaoks“ on täiustatud silmuse jaoks. Iga silmuse üldine vorm on järgmine.

for (type iter_variable: collection) avaldusplokk

Siin määrab tüüp tüüp iteratsioonimuutuja tüübi, millele järgneb iteratsioonimuutuja. Iteratsioonimuutuja saab elemendi kogumismuutujalt. Tüüp peab olema sama, mis kogumismuutujasse salvestatud elementide tüüp. Silmuse iga vorm automatiseerib silmuse iteratsiooni algusest lõpuni väärtustele juurdepääsu saamiseks järjestikuses järjekorras.

Näide

Silmuse jaoks kasutatakse erinevat tüüpi kollektsioone. Arutleme selle koos massiiviga kollektsioonina.

public class Main {public static void main (String args) {int array = {10, 20, 30, 40, 50, 60}; int lisa = 0; for (int c: array) {System.out.ln ("väärtus c-s" + c); lisa = lisa + c; } System.out.ln ("massiivi elementide lisandmoodul on" + lisa); }} // väljundväärtus c 10 väärtuses c 20 väärtuses c 30 väärtus c 30 väärtuses c 40 väärtus c 50 väärtuses c 60 massiivi elementide lisandväärtus on 210

C on iteratsioonimuutuja; see võtab väärtused massiivist ükshaaval, alates massiivi madalaimast indeksist kuni kõrgeima indeksini. Siin kordub silmus seni, kuni kõiki massiivi elemente uuritakse. Silmuse saab vahepeal katkestada, kasutades katkestust. Kuid iteratsioonimuutuja muutus ei mõjuta massiivi, kuna see on ainult kirjutuskaitstud muutuja.

Mõninga silmuse määratlus

samas loop on kõige põhilisem silmus, mis on saadaval C ++ ja Java. Mõne aja silmuse tööpõhimõte on sarnane nii C ++ kui ka Java puhul.

Süntaks

Mõne aja silmuse deklareerimine on järgmine

while (tingimus) {avaldused; // silmuse korpus}

Samas kui silmus kontrollib algul tingimust ja täidab seejärel avaldusi, kuni tingimus on sees, kuni silmus osutub tõeseks. Kuna silmuse tingimus võib olla mis tahes tõeväärtus. Kui avaldis tagastab mis tahes väärtuse, mis ei ole null, siis on tingimus tõene ja kui avaldis tagastab nullini väärtuse, muutub tingimus valeks.

Kui tingimus tõeks osutub, siis itereerub silmus ise ja kui seisund muutub valeks, siis läheb kontroll juhtseadme järgmisele reale, millele järgneb silmus. Laused või kehasilm võivad olla kas tühjad avaldused või üksikud avaldused või lausete plokk.

Näide

Arutleme mõne aja töötamise üle. Allpool toodud näites on kood vahemikus 1 kuni 10.

// näide on Java. avalik klass Main {avalik staatiline tühine pea (keelpillid) {int n = 0; samas (n <10) {n ++; System.out.ln ("n =" + n); }}} // väljund n = 1 n = 2 n = 3 n = 4 n = 5 n = 6 n = 7 n = 8 n = 9 n = 10

Siin on n-i algväärtus 0, mis muudab in situ silmuse tõeseks. Juhtimisseade siseneb seejärel aeg-ahela kehasse ja n-i väärtust suurendatakse vastavalt mõne aja ahela esimesele väitele. Väärtust 'n' redigeeritakse, siis naaseb juhtseadis mõne aja silmuse juurde tagasi olekusse, nüüd on väärtuseks 'n' 1, mis jällegi vastab tingimusele, ja silmuse keha teostatakse uuesti. See kestab seni, kuni tingimus on tõene, niipea, kui tingimus muutub valeks, silmus lõpetatakse.

Nagu "jaoks" silmus, võib ka "loop" ahel juhtimismuutuja lähtestada silmuse ülaosas, st seisundi kontrollimise ajal.

// näiteks while ((ch = getchar ()) = = A) {System.out.ln ("Sisestustähestik" + ch); }

Siin lähtestatakse juhtmuutuja 'ch' ja silmuse seisundit kontrollitakse silmuse ülaosas.

Märge:

Kas see võib olla silmuse jaoks mõeldud või mõneks ajaks, kui silmuse kehas on ainult üks lause, siis pole lokkis traksid selles olukorras vajalikud.

  1. Sisse jaoks silmus, initsialiseerimine, tingimuste kontrollimine ja iteratsioonimuutuja suurendamine või vähendamine toimub selgesõnaliselt ainult ahela süntaksis. Vastupidiselt - samas silmust saame ainult silmuse süntaksis lähtestada ja seisundit kontrollida.
  2. Kui oleme teadlikud iteratsioonide arvust, mis peavad silmuse täitmisel aset leidma, siis kasutame jaoks silmus. Teisest küljest, kui me pole teadlikud ahelas esineva iteratsiooni arvust, siis kasutame samas silmus.
  3. Kui jätate tingimuse avalduse sisestamata jaoks silmus, viib see silmuse lõpmatu iteratsioonini. Vastupidiselt, kui te ei lisa tingimuse avaldust samas silmus viib see kompileerimisveani.
  4. Initsialiseerimisavaldus süntaksis jaoks loop käivitub ainult üks kord silmuse alguses. Ja vastupidi, kui samas silmus kannab süntaasis initsialiseerimisavaldust, siis käivitab samas silmuse initsialiseerimisavaldus iga kord, kui silmus iteratsioonil on.
  5. Iteratsiooni avaldus jaoks loop käivitub pärast seda, kui keha käivitab silmuse. Vastupidi, iteratsiooniavalduse saab kirjutada ükskõik kuhu samas silmus, nii et seal võib olla mõningaid avaldusi, mis käivituvad pärast iteratsiooniavalduse täitmist while loop-i kehas.

Järeldus:

Nii silmus for kui ka silmus on mõlemad iteratsiooniavaldused, kuid mõlemal on oma eripära. For silmuse jaoks on kogu deklaratsioon (initsialiseerimine, seisund, iteratsioon) silmuse põhiosas. Vastupidiselt, samal ajal kui silmuse korpuse ülaosas on ainult silmuse alustamine ja seisukord, võib iteratsiooni kirjutada kõikjal silmuse kehas.