Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Recenzije
  • Petlja s preduvjetom java. Beskonačna for (Java) petlja

Petlja s preduvjetom java. Beskonačna for (Java) petlja

U ovom vodiču ćemo naučiti kako ponovo izvršiti dijelove našeg koda na kontroliran način gledajući različite vrste petlji u Java. Saznajte više o ciklusima: dok, učiniti-dok, za. Pokušat ćemo utvrditi u kojim slučajevima je koji od ciklusa najprikladniji za upotrebu.

Zatim ćemo se ukratko osvrnuti na temu slučajnih brojeva ( nasumičnobrojevi). Hajde da pogledamo Java-Klasa Slučajno i kako nam može pomoći u našoj igri.

Petlja, kao što ime kaže, je način izvršavanja istog dijela koda potreban broj puta (dok se rezultat izvršavanja koda u petlji neće nužno ponoviti). Broj ponavljanja izvođenja petlje može biti određen unaprijed ili biti nepoznat samom programeru. Razmotrit ćemo glavne vrste petlji koje nam jezik nudi da koristimo. Java. A onda ćemo neke od njih uvesti u našu igru ​​i time je poboljšati.

while petlja

Ciklus dok ima najjednostavniju sintaksu. Zapamti ako- upute, koje smo proučili malo ranije. U izrazu uslovnog operatora ako(ono što je u zagradama iza riječi ako) možete staviti gotovo bilo koju kombinaciju operatora i varijabli. Ako je izraz tačan ( istinito), zatim kod zatvoren u tijelu bloka akoće biti izvršeno. Slično, u ciklusu dok stavljamo izraz koji se može procijeniti istinito ili false, kao što je prikazano u ovom kodu:

int x = 10; while(x > 0)( x--; //x se smanjuje za jedan pri svakoj iteraciji petlje)

sta se desava ovde? Prva stvar izvan petlje dok deklarisali smo varijablu x tip int i dodijelio vrijednost "10" ovoj varijabli. Tada počinje ciklus dok, u kakvom je stanju napisan x > 0”- to znači da je kod napisan u tijelu petlje dokće se izvršavati sve dok je varijabla x više 0 i uslov neće dostići vrednost false. Prema tome, kod će biti izvršen 10 puta (x=10,x>0 ; x=9,x>0 ; x=8,x>0 ; x=7,x>0 ; x=6,x>0 ; x=5,x>0; x=4,x>0; x=3,x>0; x=2,x>0; x=1,x>0). U prvom prolazu petlje x=10, u drugom 9 , u trećem 8 itd. I kada xće biti jednako 0 , tada uslov za ulazak u petlju neće biti ispunjen, a program će se nastaviti iz sljedećeg reda nakon završetka petlje.

Isto kao i kod operatera ako, moguća je situacija u kojoj se petlja neće izvršiti niti jednom. Pogledajte sljedeći primjer:

int x = 10; while(x > 10)( //neki kod //ali se nikada neće pokrenuti dok x nije veći od 10)

Osim toga, nema ograničenja u pogledu složenosti izraza uvjeta ili količine koda koji se može napisati u tijelu petlje:

int playerLives = 3; int alienShips = 10; while(playerLives >0 && alienShips >0)( //Svi kod igre ovdje //... //... // itd. ) //program će se nastaviti ovdje kada playerLives ili alienShips = 0

Ova petlja će se nastaviti sve do varijable playerLives, ili alienShips neće biti jednak ili manji od nule. Čim se pojavi jedan od ovih uslova, izraz u uslovu će poprimiti vrednost false a program će nastaviti sa sljedećim redom nakon završetka petlje.

Vrijedi napomenuti da kada program uđe u tijelo petlje, on će se izvršiti čak i ako uvjet petlje postane false, negdje u tijelu petlje, jer uslov se provjerava samo pri ulasku:

int x = 1; while(x > 0)( x--; //x je sada 0 i uvjet će sljedeći put biti netačan //Ali ovaj red će se izvršiti //I ovaj //Pa čak i ovaj )

U gornjem primjeru, tijelo petlje će se izvršiti jednom. Osim toga, možete postaviti uvjet tako da će petlja trajati zauvijek - to se zove beskrajni ciklus. Evo primjera:

int x = 0; while(true)( x++; //Postat ću stvarno veliki!)

Izađite iz njihovog ciklusa. Ključna riječ break

Šta ako zaista trebamo koristiti beskonačnu petlju, ali tako da možemo odlučiti u kojem trenutku ćemo izaći iz nje. U tu svrhu u Java postoji ključna riječ break. Možemo koristiti break kada trebamo "izaći" iz petlje:

int x = 0; while(true)( x++; //Postat ću stvarno veliki! break; //Ne, nećeš! //kod neće doći ovdje)

Sigurno ste već pogodili da je moguće kombinovati različite alate za donošenje odluka, kao npr ako,drugo,prekidač unutar naše petlje dok i drugi ciklusi, koje ćemo razmotriti u nastavku. Na primjer:

int x = 0; int prevelik = 10; while(true)( x++; //Postat ću jako velik! if(x == previšeBig)( break; //Ne, nećete. ) //kod ovdje će biti dostupan dok x ne bude 10)

Mnogo više varijacija se može zapisati, ali nama je važnija praktična primjena ovog znanja, pa nećemo sada dublje. Pogledajmo još jedan koncept kojim se može upravljati u petlji.

Ključna riječ nastaviti

nastaviti radi skoro isto kao break. Ključna riječ nastavitiće vas izbaciti iz tijela petlje, ali tada provjerite uslovni izraz, umjesto da nastavi odakle je stao nakon zatvaranja vitičaste zagrade petlje, kao što bi se dogodilo sa break. Sljedeći primjer pokazuje upotrebu nastaviti:

int x = 0; int prevelik = 10; int tooBigToPrint = 5; while(true)( x++; //Postat ću jako velik! if(x == tooBig)( break; ) //Ne, nećete. //kod ovdje će biti dostupan samo dok x ne bude 10 if(x > = tooBigToPrint)( //više se neće ispisivati ​​na ekran, ali će se petlja nastaviti nastaviti; ) //ovdje će kod biti dostupan sve dok x ne postane 5 //kod za ispis x na ekran )

Objašnjenje: deklariramo i inicijaliziramo varijable. Ulazimo u petlju - dodajmo vrijednosti varijable x jedinica (sada x= 1). Provjera "1 je 10?" — false- prvi operater ako se ne izvodi. Sljedeća provjera je "1 je veće ili jednako 5?" — false- drugi operater ako se ne izvodi. Izlaz x na ekran.

Razmotrimo slučaj kada xće uzeti vrijednost 5 pri ulasku u petlju. Ulazimo u petlju - dodajmo vrijednosti varijable x jedinica (sada x= 6). Provjera "6 je 10?" — false- prvi operater ako se ne izvodi. Sljedeća provjera je "6 je veće ili jednako 5?" — istinito- ući u telo akonastaviti, izađite iz petlje i provjerite uvjet ulaska u petlju.

Sada je opcija kada xće uzeti vrijednost 9 kada uđe u petlju. Ulazimo u petlju - dodajmo vrijednosti varijable x jedinica (sada x= 10). Provjera "10 je 10?" — istinito- ući u telo akobreak, izađite iz petlje i kod će se nastaviti iza zatvarajuće vitičaste zagrade petlje dok.

uradi-while petlja

Gotovo isto kao i prethodna petlja, osim jedne karakteristike - uslovni izraz će biti provjeren nakon tijela petlje. To znači da ciklus učiniti-dok uvijek će se izvršiti barem jednom. Pogledajte primjer:

int x = 0; do ( x++; ) while(x< 10); //x теперь = 10

Ključne riječi slomiti,nastaviti

za petlju

Ciklus za ima složeniju sintaksu od dok i učiniti-dok, jer zahtijeva malo više manipulacije da bi se inicijalizirao. Hajde da ga prvo pogledamo, a zatim da ga rastavljamo deo po deo:

For(int i = 0; i< 10; i++){ //Что-то, что должно произойти 10 раз будет записано здесь }

Kako to vidi kompajler? Volim ovo:

For(deklaracija i inicijalizacija; stanje; promjena nakon svake iteracije petlje)( // tijelo petlje)

  • Deklaracija i inicijalizacija- kreirali smo novu varijablu tipa int Sa imenom i i dodijelio mu vrijednost 0 ;
  • Stanje– kao i drugi ciklusi o kojima smo ranije govorili, ovdje provjeravamo uvjet za ulazak u ciklus. Ako se vrijednost izračuna kao istinito, tada ulazimo u tijelo petlje;
  • Promjena nakon svakog ciklusa- u gornjem primjeru i++ znači da nakon sljedećeg prolaska petlje dolazimo do vrijednosti varijable i dodajte jedan (1). Štaviše, možemo upisati promjenljivu promjenu i i oduzeti jedan, na primjer:
for(int i = 10; i > 0; i--)( //odbrojavanje ) //ključ za početak, i = 0

Ključne riječi slomiti,nastaviti može se koristiti iu ovom ciklusu.

Ciklus za preuzima kontrolu nad inicijalizacijom, provjerom stanja i promjenom varijable. Isprobajmo ovaj ciklus u praksi u našoj aplikaciji odmah nakon što se upoznamo slučajni brojevi i metode.

Da li ste se ikada zapitali zašto programi uopšte postoje? Ako pojednostavimo i generaliziramo odgovor na ovo pitanje, ispada da su programi potrebni za automatizaciju tijeka posla, povećanje brzine obavljenog posla, oslobađanje osobe od hiljada monotonih radnji itd. Fokusirajmo se na radnje koje se ponavljaju jedna za drugom, ili jednostavnim riječima, ciklusi.

Ciklus je sekvencijalno izvršavanje ponovljenih radnji na osnovu datog preduslova. Na primjer, trebate preurediti sto kutija iz jednog ugla u drugi. Ako je ovo nekako napisano u jeziku Java (nažalost, Java ne može preurediti kutije umjesto vas), onda dobijamo zapis od stotinu redova:

1. uzeti kutiju broj 1 i staviti je u drugi ugao;
2. uzeti kutiju broj 2 i staviti je u drugi ugao;
3. uzeti kutiju broj 3 i staviti je u drugi ugao;

100. uzeti kutiju br. 100 i staviti je u drugi ugao;

Stotinu linija koda je već puno, ali ima hiljadu, dvije, tri i tako dalje. U te svrhe, naime, da bi se pojednostavilo snimanje radnji koje se ponavljaju, služe ciklusi.

Postoje tri operatora koji predstavljaju petlje u jeziku Java, to su while, do/white i for. Svaki operator je potreban u svojoj situaciji, ali najčešće se koristi operator for. Razmotrimo redom svaki od operatora.

while izjava

Sintaksa iskaza while izgleda ovako:

Dok(uvjet) ( // radnje)

Određeni preduvjet je također ispunjen, ali za razliku od if/else naredbe, ova konstrukcija se zasniva na ciklusima provjere uvjeta. Kada program dođe do naredbe while, ako je predloženi uslov istinit, izvršavaju se sve akcije u bloku vitičastih zagrada (...). Nakon izvođenja ovih radnji, program ponovo provjerava uvjet nakon iskaza while, a ako je uvjet ponovo istinit, radnje u bloku se ponavljaju. Radnje u bloku se izvršavaju sve dok uslov ne postane lažan, a tek tada izlazi iz petlje while.
Za izlaz iz petlje najčešće se koriste tzv. brojači. Razmotrite mali primjer:

Int i = 0; dok (i< 10) { // действия i++; }

Prvo, varijabli i dodjeljuje se vrijednost 0, zatim se provjerava uslov i0)

( // akcije i--; )

Isti postupci, ali u suprotnom smjeru. Dodatno, u while petlji (i zaista drugim petljama) moguće je koristiti logičke varijable koje sadrže lažne ili istinite vrijednosti. U tom slučaju se provjerava određeni preduslov.

Boolean i = istina; dok (i) ( // akcije)

Varijabla i je istinita, postavljena je na true, tako da se while petlja izvršava sve dok se varijabla i ne postavi na false. Stoga se mora voditi računa o izlasku iz takve petlje, inače će while petlja raditi neograničeno i takve petlje se nazivaju beskonačne petlje.

Na kraju, želio bih da vam skrenem pažnju na operator ==. Ako je petlja napisana ovako:

Int i = 0 while (i == 5) ( // akcije i++; )

To će se pokazati kao potpuno izvodljiva petlja, ali ako pogriješite ili iz navike koristite klasičnu verziju operatora jednako = koji se koristi u matematici, tada ćete imati problem u obliku beskonačne petlje.

Int i = 0 while (i = 5) ( // akcije i++; )

U preduslovu, varijabli i je dodijeljena vrijednost 5, a ova radnja nije zabranjena, a šta imamo kao rezultat? Izvršenje ovog bloka petlje će početi na čijem kraju će se vrijednost i povećati za jedan, ali u preduvjetu nakon iskaza while varijabli i će ponovo biti dodijeljena vrijednost pet i petlja će nastaviti svoj raditi do beskonačnosti. Ovo je primjer jednostavne beskonačne petlje i, kao rezultat, klasične greške koja se vrlo često događa kod programera početnika.

do/while petlja

Dok petlja koju smo upravo pregledali možda neće raditi pod određenim uslovima. Na primjer, ako je uvjet u početku netačan, tada se petlja nikada neće izvršiti. Program će, nakon što dođe do linije koda sa iskazom while, provjeriti uvjet i ako je jednak false, zanemarit će cijelu petlju i otići na kod koji odmah slijedi nakon petlje while. Ali ponekad postaje neophodno izvršiti petlju barem jednom. Java ima do/while petlju za ovu svrhu. Snimanje i kreiranje do/while petlje se radi na sljedeći način:

Uradi ( // radnje ) dok (uvjet)

Između do i while naredbi postoji tijelo petlje koje će se izvršavati sve dok postuslov koji slijedi nakon naredbe while ne bude lažan. Tijelo petlje će se izvršiti najmanje jednom, nakon čega će se provjeriti uvjet. Do/while petlja se ne koristi često, ali ponekad je neophodna.

za petlju

Ovo je najčešća petlja u programiranju. Rad for petlje zasniva se na upravljanju brojačem. Značenje ove petlje je slično petljama while i do/hio o kojima smo gore govorili. Pogledajte kako izgleda sintaksa za petlju for:

Za (int i = 0; i< 10; i++) { // действие }

Nakon ključne riječi for slijedi uvjet izvršenja petlje. Samo stanje kombinuje tri faze. Prvo se inicijalizira brojač i = 0, a zatim se provjerava uslov i< 10 и в конце увеличение переменной i на единицу.

Petlja for funkcionira ovako. Kada program dođe do petlje, brojač i = 0 se inicijalizira i uvjet i se provjerava< 10. Далее программа переходит в тело цикла. По окончанию всех действий в цикле for, происходит обращение к третьему этапу цикла: i++, увеличивая счетчик на единицу. После чего сразу же происходит переход ко второму этапу – проверке переменной i < 10 и повторный выход в тело цикла. Весь цикл продолжается до тех пор, пока условие i < 10 не станет ложным. Цикл for используется постоянно при инициализации массива данных, где без него очень сложно, а порой и не возможно обойтись. Так же как и в цикле while возможно использование оператора декремента, например.

U Javi, kao iu gotovo svakom programskom jeziku, postoje alati koji osiguravaju da se određeni dio koda ponavlja mnogo puta, ili, kako se obično naziva, petlje. Petlje u Javi su predstavljene operatorima kao što su for i while, kao i njihovim varijantama. Po pravilu, petlje se koriste za prolaz kroz jednodimenzionalne i višedimenzionalne nizove i iterativne strukture podataka (uključujući kolekcije) kako bi se pronašli određeni elementi i dalje operacije s njima. Međutim, ovo nije jedini način da se koristi alat kao što je Java petlja. Primjeri upotrebe će biti dati kako se o njima raspravlja.

Java: opis i primjeri

Osnovni operator petlje u Javi je while. Fragment koda zatvoren u njegovo tijelo će se ponavljati sve dok uvjet izraza zatvorenog u zagrade nakon što zadovolji vrijednost logičke istinitosti. Opšti oblik iskaza while je sljedeći:

dok (uslov) (

// tijelo petlje

Čim vrijednost logičkog uvjeta prestane biti istinita, kod zatvoren u tijelu petlje će prestati da se izvršava i kontrola će se prenijeti na red koji neposredno slijedi.

Ako postoji samo jedan izraz u tijelu petlje, vitičaste zagrade se mogu izostaviti, ali se smatra dobrim ako su uvijek tu. Gornja slika prikazuje blok dijagram rada ovog operatora.

Radi jasnoće, pogledajmo primjer prikazan na donjoj slici:

Deklarisana varijabla count inicijalno ima vrijednost 1. Zatim vidimo logički izraz zatvoren u zagradama iza imena operatora. Biće istina, tj. vrati true sve dok je vrijednost varijable count manja ili jednaka 10. U tijelu petlje, sa svakim prolazom (iteracijom), vrijednost varijable se povećava za 1 i prikazuje na ekranu konzole. Imajte na umu da kada je vrijednost varijable dosegla 11, petlja je prestala raditi.

Ako je vrijednost varijable count inicijalno jednaka 11, tada bi uvjet petlje bio netačan, a program ne bi ni ušao u njegovo tijelo.

Vrijedi napomenuti da Java sintaksa omogućava korištenje while naredbe bez tijela. Uzmimo primjer. Recimo da imamo dvije varijable i = 100 i j = 200, suočeni smo sa zadatkom da programski izračunamo njihovu aritmetičku sredinu - za to možete koristiti "prazno" dok:

while(++i< --j);

Kao rezultat, vrijednost bilo koje od dvije varijable će biti jednaka prosjeku njihovih početnih vrijednosti. Kao što vidite, petlja je dobro radila bez tijela i izvršila je sve potrebne radnje u uslovnom izrazu.

uradi-while petlja

U prethodnim primjerima, ako je uvjetni izraz inicijalno vratio false, tada bi izvršenje programa zanemarilo tijelo petlje i nastavilo bi dalje. Međutim, često se javljaju situacije u kojima je izvršenje koda sadržanog u tijelu petlje obavezno barem jednom, bez obzira na istinitost uvjetnog izraza. Drugim riječima, dešava se da je provjera istinitosti uvjetnog izraza potrebna ne na početku, već na kraju ciklusa. Ovu funkcionalnost može pružiti vrsta while petlje koja se zove do-while. Ima sljedeći oblik:

uraditi(
// tijelo petlje

) while(uvjet);

Kao što vidimo, prvo se izvršava tijelo petlje, a tek onda se provjerava istinitost uslova - i tako na svakoj iteraciji.

Gornji kod će raditi na isti način kao iu slučaju običnog vremena. Međutim, ako bismo postavili varijablu brojanja na 11, tijelo petlje bi se i dalje izvršilo jednom prije nego što bi izjava mogla testirati istinitost izraza.

Opis i primjeri za - Java petlju

Predstavlja generički i efikasan jezički oblik u Javi. Prije verzije 5 Java SDK-a, postojao je samo jedan tradicionalni oblik for naredbe, a nakon toga se pojavio novi - za svaki. U ovom odeljku ćemo pogledati tradicionalni oblik operatora. for Java petlja izgleda ovako:

Prije nego što se kontrola prenese na kod u tijelu petlje, prvo se inicijalizira varijabla i, koja djeluje kao brojač. Zatim se provjerava uvjetni izraz u kojem se brojač upoređuje sa određenom vrijednošću, a ako vrati true, izvršava se tijelo petlje. Zatim se vrijednost brojača mijenja unaprijed određenim korakom i ponovo se provjerava uvjetni izraz, i tako dalje dok uvjet ne postane lažan. Dijagram toka ispod ilustruje sve korake ciklusa.

Za bolje razumijevanje, evo primjera kako Java for petlja funkcionira:

Vidimo da se varijabla loopVal koristi kao brojač. Nakon svake iteracije petlje, njena vrijednost će se povećati za 1, a to će se nastaviti sve dok ne dostigne 11. Imajte na umu da možete deklarirati kontrolnu varijablu izvan for izraza, ali ako ovu varijablu nećete koristiti nigdje osim u petlju, preporučuje se da je deklarišete direktno u naredbi. Imajte na umu da varijabla deklarirana u samom izrazu ima opseg unutar te iste petlje.

Postoje situacije kada trebate deklarirati nekoliko kontrolnih varijabli petlje. For Java petlja vam omogućava da navedete dve ili više varijabli razdvojenih zarezima, i da to uradite i tokom njihove inicijalizacije i tokom iteracije. Takav operator bi izgledao ovako:

for(int i = 1, int j = 10; i< j; ++i, --j) {}

Sa svakom iteracijom, vrijednost varijable i će se povećati za 1, a vrijednost varijable j će se smanjiti za 1. Iteracije će se izvoditi sve dok i ne postane veće ili jednako j.

Karakteristike korištenja operatora for

Petlja for je prilično fleksibilna jer se sva tri dijela (inicijalizacija, stanje i inkrement/dekrement) mogu koristiti u druge svrhe. Na primjer, umjesto uvjetnog izraza s kontrolnom varijablom, možete zamijeniti bilo koju logičku varijablu.

boolean izlaz = lažno;

za (int i = 0; !exit; ++i) (

U gornjem primjeru možemo vidjeti kako je operacija petlje apsolutno nezavisna od kontrolne varijable i i da broj iteracija ovisi isključivo o trenutku u kojem izlaz varijable postaje istinit. Štaviše, kontrolna varijabla se može potpuno ukloniti iz petlje i to ni na koji način neće uticati na njen rad: for(; !exit;) (). Iako nije najpametniji način programiranja, ponekad može biti koristan. Glavna stvar je osigurati situaciju u kojoj će varijabla uzeti vrijednost potrebnu za izlazak iz petlje, kako je ne bi pretvorila u beskonačnu.

Za Java petlja se takođe može deklarisati na ovaj način: for(; ;) (). Ovo je tipičan primjer beskonačne petlje sa posebnim prekidnim uvjetima. O tome kako prekinuti takve cikluse ćemo govoriti nešto kasnije.

za svaku petlju stila

Java foreach petlja se uvijek koristi za sekvencijalno ponavljanje elemenata niza ili neke vrste i izvođenje određenih ponavljajućih operacija nad njima. Primjer ovog oblika for izjave je prikazan u nastavku:

name je deklarisano kao iterativna varijabla, a niz imena nizova koji su ranije deklarisani deluje kao drugi argument operatora. Varijabla name će zauzvrat preuzimati vrijednosti svakog elementa niza dok se svi njegovi elementi ne dohvate. Imajte na umu da tip varijable mora biti kompatibilan sa tipom elemenata koji su pohranjeni u nizu. Takođe, varijabla name je samo za čitanje i pokušaj promjene neće promijeniti sam element u nizu.

Izjave o prekidu petlje

Postoje tri naredbe prekida petlje: break, return i continue. Prva dva mogu u potpunosti prekinuti petlju, a nastavak prekida samo trenutnu iteraciju. Ako koristite namjerno beskonačnu Java petlju u svom kodu, ovi operatori moraju biti prisutni u vašem kodu. Pogledajmo jednostavan primjer upotrebe pauze:

Iako ova for naredba ima 11 iteracija, samo 8 će se izvršiti, jer kada je brojač i jednak 7, aktiviraće se uslov u čijem tijelu se nalazi break naredba.

Naredba return radi na sličan način, s tom razlikom što ne izlazi samo iz Java petlje, već i iz metode u koju je petlja postavljena.

Korištenje break kao goto

Treba imati na umu da prekid samo prekida rad petlje u čijem se tijelu direktno nalazi, tj. ako ga koristite u ugniježđenoj petlji, vanjska petlja se neće završiti. Da biste to učinili, naredba break se može koristiti kao civilizirani oblik goto.

U ovoj verziji, ovaj operator se koristi zajedno s oznakom, što vam omogućava da organizirate izlaz ne samo iz petlji, već i iz bilo kojeg bloka koda. Oznaka je identifikator odgovarajućeg imena iza kojeg slijedi dvotočka. Oznaka je deklarirana na početku kodnog bloka koji će biti označen. Da biste prekinuli izvršenje označenog bloka, deklarirajte na pravom mjestu: break label_name. Razmotrite primjer na donjoj slici:

Kod deklarira tri bloka sa nazivima oznaka Jedan, Dva i Tri, respektivno. Naredba break s oznakom Two je ugniježđena u sva tri bloka, ali kada se pokrene, program će izaći iz bloka Three i Two i nastaviti izvršavanje u bloku One. One. u konzoli ćemo vidjeti dvije poruke: Three i One.

Zaključak

Videli smo Javin koncept petlji, glavne while i for naredbe, i njihove do-while i za svaki oblik, respektivno. Radi boljeg razumijevanja, preporučujemo da radite vježbe koristeći ove iskaze u različitim oblicima, kao i na različite načine da ih prekidate i prelazite iz jednog bloka u drugi.

Posljednje ažuriranje: 31.10.2018

Druga vrsta kontrolnih struktura su petlje. Ciklusi omogućavaju, ovisno o određenim uvjetima, da se određena radnja izvrši više puta. Java jezik ima sljedeće tipove petlji:

za petlju

Petlja for ima sljedeću formalnu definiciju:

Za ([inicijalizacija brojača]; [uvjet]; [promjena brojača]) ( // akcije)

Razmotrite standard za petlju:

Za (int i = 1; i< 9; i++){ System.out.printf("Квадрат числа %d равен %d \n", i, i * i); }

Prvi dio deklaracije petlje, int i = 1, kreira i inicijalizira brojač i. Brojač ne mora biti tipa int. Može biti bilo koji drugi numerički tip, kao što je float. Prije nego što se petlja izvrši, vrijednost brojača će biti jednaka 1. U ovom slučaju, ovo je isto kao i deklaracija varijable.

Drugi dio je uvjet pod kojim će se petlja izvršiti. U ovom slučaju, petlja će se izvoditi dok i ne dođe do 9.

I treći dio je povećanje brojača za jedan. Opet, ne treba da povećavamo za jedan. Možete smanjiti: i-- .

Kao rezultat toga, blok petlje će se pokrenuti 8 puta dok vrijednost i ne postane jednaka 9. I svaki put će se ova vrijednost povećati za 1.

Ne moramo specificirati sve uslove kada deklarišemo petlju. Na primjer, možemo napisati ovako:

Int i = 1; for (; ;)( System.out.printf("Kvadrat od %d je %d \n", i, i * i); )

Definicija ciklusa ostaje ista, samo što su sada blokovi u definiciji prazni: za (; ;) . Sada ne postoji inicijalizovana promenljiva brojača, nema uslova, tako da će petlja trajati zauvek - beskonačna petlja.

Ili možete izostaviti nekoliko blokova:

Int i = 1; za (;i<9;){ System.out.printf("Квадрат числа %d равен %d \n", i, i * i); i++; }

Ovaj primjer je ekvivalentan prvom primjeru: imamo i brojač, samo što je kreiran izvan petlje. Imamo uslov izvršenja petlje. I tu je povećanje brojača već u samom bloku for.

Petlja for može definirati i upravljati s više varijabli odjednom:

int n = 10; for(int i=0, j = n - 1; i< j; i++, j--){ System.out.println(i * j); }

do petlje

Do petlja prvo izvršava kod petlje, a zatim provjerava uvjet u naredbi while. I dok je ovaj uslov tačan, ciklus se ponavlja. Na primjer:

int j = 7; do( System.out.println(j); j--; ) while (j > 0);

U ovom slučaju, kod petlje će se pokrenuti 7 puta dok j ne bude nula. Važno je napomenuti da do petlja garantuje da će akcije biti izvršene barem jednom, čak i ako uslov u naredbi while nije tačan. Dakle, možemo napisati:

int j = -1; do( System.out.println(j); j--; ) while (j > 0);

Iako je j u početku manje od 0, petlja će se i dalje izvršiti jednom.

while petlja

Dok petlja odmah provjerava istinitost nekog uslova, a ako je uslov tačan, tada se izvršava kod petlje:

int j = 6; dok (j > 0)( System.out.println(j); j--; )

nastavak i prekid izjava

Naredba break vam omogućava da izađete iz petlje u bilo kojem trenutku, čak i ako petlja nije završila svoj rad:

Na primjer:

< nums.length; i++){ if (nums[i] >10) prekid; System.out.println(nums[i]); )

Pošto petlja provjerava da li je element niza veći od 10, nećemo vidjeti posljednja dva elementa na konzoli, jer kada je nums[i] veći od 10 (tj. jednak 12), naredba break će raditi i petlja će se završiti.

Istina, nećemo vidjeti ni posljednji element, koji je manji od 10. Sada ćemo napraviti tako da ako je broj veći od 10, petlja se ne završava, već jednostavno ide na sljedeći element. Da bismo to učinili, koristimo naredbu continue:

int brojevi = novi int (1, 2, 3, 4, 12, 9); za (int i = 0; i< nums.length; i++){ if (nums[i] >10) nastaviti; System.out.println(nums[i]); )

U ovom slučaju, kada petlja dostigne broj 12, koji ne zadovoljava testni uslov, program će jednostavno preskočiti ovaj broj i preći na sljedeći element niza.

Petlja je blok instrukcija koji se izvršava iznova i iznova dok se ne ispuni određeni uslov. Ponavljani dio koda naziva se "tijelo petlje". Jedno izvođenje tijela petlje naziva se iteracija.

U Javi možete raditi s nekoliko vrsta petlji - za to postoje sljedeći operatori:

dok- ciklus sa preduslov- prvo provjeravamo uslov, zatim izvršavamo tijelo petlje;

uradi… dok- ciklus sa postuvjet- prvo izvršimo tijelo petlje jednom, zatim provjeravamo uslov i, ako je ispoštovan, nastavljamo;

za– petlja sa brojačem – se izvršava i pri svakoj iteraciji ažurira brojač dok je uslov u deklaraciji petlje ispunjen (tj. test uslova vraća true);

skraćeno za(poznato kao foreach na drugim jezicima) - petlja kroz niz od prvog do posljednjeg elementa i izvršava tijelo petlje pri svakoj iteraciji.

Suština uslova petlje je provjeriti izraz s jednom ili više varijabli: „Dok je<11, в каждой итерации выполняем тело цикла и увеличиваем "а" на 1». Но чему равно «а» при первом выполнении цикла?

Ako koristimo while konstrukcije, vrijednost mora biti specificirana prije početka petlje:

int a = 1;

dok (a< 11) {

System.out.println(a);

a++; //povećaj a za jedan

}

Ako varijabla radi kao brojač petlje, a ne koristi se izvan njega, inicijalizira se direktno u uvjetu. I onda pišu šta da rade s tim na kraju svake iteracije. Sve ovo - u jednom redu - koristeći za:

za (a=1, a<11, i++) {

System.out.println(a);

}

Dobijamo isti rezultat. Lista može početi od nule ili od negativne vrijednosti - raspon određujemo sami.

Skraćena verzija for petlje ne označava broj ponavljanja, niti radnje na kraju koraka. Foreach petlja se koristi za ponavljanje nizova. Od prvog elementa morate prijeći na sljedeći - dok se niz ne završi.

int ms = ( 1, 2, 3, 4); //kreirajte niz

int s = 0;

for(int i: ms) ( //odredi šta treba ponoviti

s *= i; //sukcesivno množenje elemenata

}

System.out.println(s);

Java ugniježđene petlje

Petlje mogu biti ugniježđene jedna u drugu. U ovom slučaju, broj ponavljanja vanjske i ugniježđene petlje se množi. Ako se vanjska treba izvršiti 5 puta, a unutrašnja 5 puta, petlja će se izvršiti ukupno 25 puta.

Izvodimo tablicu množenja koristeći dva niza:

int a, b, rezultat = 0;

za (a = 2; a< 10; a++) {

za (b = 2; b< 10; b++) {

rezultat = a*b;

System.out.println(a+"x"+b+" = "+rezultat);

}

}

Kreiranje objekata u Java petlji

Petlje su korisne kada trebate kreirati i numerirati mnogo objekata. Njihov broj je unaprijed nepoznat: objekti se mogu kreirati na zahtjev korisnika. Pa smo pitali koliko je nešto potrebno i upisali broj u varijablu n. Sada kreirajmo objekte u pravoj količini:

Somethingarray = novo Nešto[n]; //kreirajte niz tipa "nešto" sa n elemenata

for(int i = 0; i< n; i++){

array[i] = newSomething(); // kreiramo "nešto" i stavimo to u niz

}

Kako izaći iz Java petlje

Za izlazak iz petlje postoje ključne riječi break - "prekid", nastavak - "nastavi" i return - "povratak". Komanda break prebacuje program da izvrši naredbe koje slijede nakon petlje. Uslovi za prekid petlje u Javi se utvrđuju kroz if-grananje. Glavna stvar je da se provjera izvodi prije glavnog dijela tijela petlje.

//nakon kreiranja niza m pišemo:

za(a:m)(

if (a==5) break;

System.out.println(a);

}

Operatori grananja i petlje u Javi često rade zajedno: pokrećemo petlju, a unutar nje provjeravamo da li je još uvijek ispunjen uvjet pod kojim moramo prekinuti petlju ili učiniti nešto drugo.

Ako koristite prekid u ugniježđenoj petlji, samo će ugniježđena petlja prekinuti, dok će vanjska nastaviti da radi.

Da biste prekinuli iteraciju for petlje u Javi, koristi se nastavak. Kada ga program stigne, on preskače nedovršeni dio iteracije, ažurira brojač i prelazi na sljedeću iteraciju.

U konstrukcijama while, isti nastavak radi drugačije: vraća nas na provjeru uvjeta za nastavak petlje. Druga naredba - return - vraća program na mjesto odakle je metoda pozvana, u kojem se nalazi petlja.

I nastavak i prekid mogu se koristiti s oznakom - za skok na željeni dio koda - po analogiji sa goto:

breakMark1; //pod pretpostavkom da je Mark1 negdje viši:

Java beskonačna petlja

Kreiranje beskonačne petlje je jednostavno - samo izostavite parametre za:

za (; ;) ()

Teže je to iskoristiti. Obično je beskonačnost petlje kritična greška koja sprečava izvršavanje programa. Stoga, svaki ciklus treba provjeriti da li se može ispravno završiti u pravo vrijeme. Za ovo vam je potrebno:

  • specificirati uslove prekida u tijelu petlje,
  • pobrinite se da varijabla u stanju prekida može uzeti vrijednost na kojoj će petlja biti zaustavljena.

Top Related Articles