В Java, как и практически в любом языке Ohjelmoinnissa on työkaluja, jotka varmistavat tietyn koodin tai, kuten niitä kutsutaan, jakson toistuvan toistamisen. Java-silmukoita edustavat operaattorit kuten ja varten, sekä niiden muunnelmat. Silmukoita käytetään pääsääntöisesti yhden ulottuvuuden ja moniulotteisten matriisien ja toistettavien tietorakenteiden (mukaan lukien kokoelmat) läpi tiettyjen elementtien löytämiseksi ja niiden kanssa tehtävien lisätoimintojen suorittamiseksi. Tämä ei kuitenkaan ole ainoa tapa käyttää Java-silmukan kaltaista työkalua. Käyttötapaukset toimitetaan, kun ne tarkistetaan.
Основополагающим оператором цикла в Java является aikaa. Runkoonsa suljettu koodifragmentti toistetaan, kunnes suluissa oleva lausekkeen ehto täyttää totuuden loogisen arvon. While-lausunnon yleinen muoto on seuraava:
kun taas (ehto) {
// silmukka runko
}
Heti kun loogisen ehdon arvo lakkaa olemasta totta, silmukan runkoon suljettu koodi lakkaa suorittamasta ja ohjaus siirretään linjalle välittömästi sen jälkeen.
Selvyyden vuoksi tarkastellaan alla olevan kuvan esimerkkiä:
Ilmoitettu muuttujien lukumäärä on alun perinarvo 1. Seuraavaksi näemme loogisen lausekkeen sulkeissa operaattorin nimen jälkeen. Se on totta, so. return true, kunhan laskentamuuttujan arvo on pienempi tai yhtä suuri kuin 10. Silmukan rungossa muuttujan arvoa lisätään jokaisella kierroksella (iteraatiolla) yhdellä ja se näytetään konsolin näytöllä. Huomaa, että kun muuttuja oli 11, silmukka lakkasi toimimasta.
Jos muuttujien lukumäärän arvo oli alun perin yhtä suuri kuin 11, silmukan ehto olisi väärä, eikä ohjelma edes menisi runkoonsa.
On syytä huomata, että Java-syntaksin avullakäytä while-lausetta ilman runkoa. Annetaan esimerkki. Oletetaan, että meillä on kaksi muuttujaa i = 100 ja j = 200, meillä on edessämme tehtävä laskea niiden aritmeettinen keskiarvo ohjelmallisesti - tähän voidaan käyttää "onttoa", kun taas:
kun (++ i <- j);
Tämän seurauksena jommankumman muuttujan arvo on yhtä suuri kuin niiden alkuperäisten arvojen keskiarvo. Kuten näette, silmukka toimi hyvin ilman runkoa ja suoritti kaikki tarvittavat toimet ehdollisessa lausekkeessa.
Edellisissä esimerkeissä, jos ehdollinen lausekepalautti alun perin väärän, sitten ohjelman suoritus sivuutti silmukan rungon ja siirtyi eteenpäin. Usein kuitenkin syntyy tilanteita, joissa silmukan rungossa olevan koodin suorittaminen on pakollista ainakin kerran ehdollisen lausekkeen totuudesta riippumatta. Toisin sanoen sattuu, että ehdollisen lausekkeen totuus on tarkistettava ei syklin alussa, vaan lopussa. Muunnos while-silmukasta, jota kutsutaan do-while, voi tarjota tämän toiminnallisuuden. Sillä on seuraava muoto:
tee {
// silmukka runko
} while (ehto);
Kuten voimme nähdä, ensin silmukan runko menee suoritukseen, ja vasta sitten tarkistetaan ehdon totuus - ja niin edelleen jokaisella iteraatiolla.
Yllä oleva koodi toimii jotain tällaistasama kuin tavallisella. Jos olisimme kuitenkin määrittäneet arvon 11 muuttujien lukumäärälle, silmukan runko suoritetaan silti kerran, ennen kuin operaattori voi tarkistaa lausekkeen totta.
For -silmukka on monipuolinen jatehokas kielimuoto Java-kielellä. Ennen Java SDK: n viidentettä versiota lauseelle oli vain yksi perinteinen muoto, ja sen jälkeen ilmestyi uusi - kullekin. Tässä osiossa tutustumme perinteiseen operaattorilomakkeeseen. Java: lle silmukka näyttää tältä:
Ennen kuin ohjaus siirretään rungon koodiinsilmukka, ensin muuttuja i alustetaan toimimaan laskurina. Seuraavaksi tarkistetaan ehdollinen lauseke, jossa laskuria verrataan tiettyyn arvoon, ja jos se palauttaa tosi, silmukan runko suoritetaan. Sitten laskurin arvoa muutetaan ennalta määrätyllä askeleella ja ehdollinen lauseke tarkistetaan uudelleen ja niin edelleen, kunnes ehto muuttuu vääräksi. Alla oleva vuokaavio kuvaa syklin kaikkia vaiheita.
Paremman käsityksen saamiseksi tässä on esimerkki Java-silmukan toiminnasta:
Näemme, että laskuria käytetäänmuuttuja loopVal. Jokaisen silmukan iteroinnin jälkeen sen arvo kasvaa yhdellä, ja tämä jatkuu, kunnes se saavuttaa 11. Huomaa, että ohjausmuuttuja voidaan ilmoittaa for-lauseen ulkopuolella, mutta jos et aio käyttää tätä muuttujaa missään muualla silmukassa on suositeltavaa ilmoittaa se suoraan lauseessa. Pidä mielessä, että itse lauseessa ilmoitettu muuttuja kuuluu itse silmukkaan.
On tilanteita, joissa sinun on ilmoitettavauseita muuttujia, jotka ohjaavat silmukkaa. Java-käyttöjärjestelmässä silmukka antaa sinun määrittää kaksi tai useampia muuttujia pilkuilla erotettuna, ja tämä voidaan tehdä sekä niiden alustuksen että iteroinnin aikana. Tällainen operaattori näyttää tältä:
(int i = 1, int j = 10; i <j; ++ i, --j) {}
Jokaisella iteraatiolla muuttujan i arvo kasvaa yhdellä ja muuttujan j arvo pienenee 1. Iteraatiot suoritetaan, kunnes i on suurempi tai yhtä suuri kuin j.
For-silmukka on melko joustavakonstruktiota, koska kaikkia kolmea sen osaa (alustus, kunto ja lisäys / vähennys) voidaan käyttää merkintöjen ulkopuolella. Esimerkiksi ehdollisen lausekkeen sijaan kontrollimuuttujalla voit korvata minkä tahansa loogisen muuttujan.
totuusarvo = väärä;
for (int i = 0 ;! exit; ++ i) {
exit = tosi;
}
Yllä olevassa esimerkissä voimme tarkkailla, miten työ toimiisilmukka on ehdottomasti riippumaton ohjausmuuttujasta i ja iteraatioiden määrä riippuu yksinomaan hetkestä, jolloin muuttujan poistuminen tulee totta. Lisäksi ohjausmuuttuja voidaan poistaa kokonaan silmukasta, mikä ei vaikuta millään tavalla sen toimintaan: for (;! Exit;) {}. Vaikka se ei ole älykkäin tapa ohjelmoida, se voi olla hyödyllistä ajoittain. Tärkeintä on ennakoida tilanne, jossa muuttuja ottaa tarvittavan arvon silmukasta poistumiseksi, jotta sitä ei muutettaisi loputtomaksi.
Java: lle silmukka voidaan julistaa näintapa: for (;;) {}. Tämä on tyypillinen esimerkki äärettömästä silmukasta, jolla on erityiset keskeytysolosuhteet. Puhumme siitä, kuinka tällaiset jaksot keskeytetään hieman myöhemmin.
Java foreach -silmukka koskee ainaiterointi matriisin tai jonkin tietorakenteen elementtien yli ja tiettyjen toistuvien operaatioiden suorittaminen niille. Alla on esimerkki tästä for-lauseen muodosta:
Iteraatiomuuttuja ilmoitetaannimi, ja aiemmin ilmoitettu merkkijonojen joukko toimii operaattorin toisena argumenttina. Muuttujan nimi ottaa matriisin jokaisen elementin arvot vuorotellen, kunnes kaikki sen elementit on haettu. On huomattava, että muuttujan tyypin on oltava yhteensopiva matriisiin tallennettujen elementtien tyypin kanssa. Nimimuuttuja on myös saatavana yksinomaan lukemista varten, ja yritys muuttaa sitä ei muuta itse elementtiä taulukossa.
Silmukan keskeytyslausekkeita on kolme:tauko, palaa ja jatka. Kaksi ensimmäistä pystyvät keskeyttämään silmukan työn kokonaan, kun taas jatkaminen keskeyttää vain nykyisen iteraation työn. Jos käytät tietoisesti loputtomia Java-silmukoita koodissasi, näiden operaattorien on oltava läsnä siinä. Katsotaanpa yksinkertaista esimerkkiä taukojen käytöstä:
Vaikka tämä lausekkeelle antaa 11 iteraatiota, vain 8 suoritetaan, koska kun i-laskuri on 7, ehto, jonka kappaleessa on katkoslauseke, laukaistaan.
Return-lause toimii samalla tavalla, sillä erolla, että se paitsi poistuu Java-silmukasta, myös menetelmän, johon silmukka sijoitetaan.
Pidä mielessä, että tauko keskeyttäävain sykli kehossa, jossa se on suoraan, ts. jos käytät sitä sisäkkäisessä silmukassa, uloin silmukka ei pääty. Tätä varten lauseketta voidaan käyttää sivistyneenä muotona goto.
Tässä muunnoksessa tätä operaattoria käytetäänyhdessä tarran kanssa, jonka avulla voit järjestää poistumisen paitsi silmukoista myös mistä tahansa koodilohkosta. Tunniste on asianmukaisesti nimetty tunniste, jota seuraa kaksoispiste. Tarra ilmoitetaan merkittävän koodilohkon alussa. Jos haluat keskeyttää merkityn lohkon suorittamisen, sinun on ilmoitettava oikeassa paikassa: break tag_name. Harkitse esimerkkiä alla olevassa kuvassa:
Koodi ilmoittaa kolme lohkoa One-tarrojen nimillä,Kaksi ja kolme. Kaksi-merkkinen katkoslauseke on sisäkkäin kaikissa kolmessa lohkossa, mutta kun se käynnistetään, ohjelma poistuu kolmesta ja kahdesta lohkosta ja jatkaa suoritusta Yhdessä-lohkossa. Nuo. näemme konsolissa kaksi viestiä: Kolme ja Yksi.
Olemme tutustuneet Java-silmukoiden käsitteeseen,tärkeimmät while- ja lausekkeet sekä niiden do-while ja kunkin lomakkeen osalta. Paremman ymmärtämisen vuoksi suosittelemme suorittamaan harjoituksia käyttämällä näitä operaattoreita eri muodoissa sekä erilaisia tapoja keskeyttää ne ja siirtyä lohkosta toiseen.