Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Recenzije
  • Petlja s Javom. Beskonačna for (Java) petlja

Petlja s Javom. Beskonačna for (Java) petlja

U ovom vodiču naučit ćemo kako ponovno izvršiti dijelove našeg koda na kontroliran način gledajući različite vrste petlji u Java... Pogledajmo pobliže petlje: dok, čini-dok, za... Pokušat ćemo utvrditi u kojim slučajevima, koji je od ciklusa najprikladniji za korištenje.

Zatim ćemo na brzinu pogledati temu slučajnih brojeva ( nasumičnobrojevima). Pogledajmo Java-Razred Slučajno i kako nam može pomoći u našoj igri.

Petlja je, kao što ime sugerira, način izvršavanja istog dijela koda onoliko puta koliko je potrebno (dok se rezultat izvršavanja koda u petlji neće nužno ponavljati). Broj ponavljanja izvođenja petlje može biti unaprijed određen ili nepoznat samom programeru. Pogledat ćemo glavne vrste petlji koje nam jezik predlaže za korištenje. Java. A onda ćemo neke od njih uvesti u našu igru ​​i time je poboljšati.

Dok petlja

Ciklus dok ima najjednostavniju sintaksu. Zapamtiti ako-nastava koju smo malo ranije učili. Na uvjetni izraz operatora ako(ono što je u zagradama iza riječi ako) možete staviti gotovo bilo koju kombinaciju operatora i varijabli. Ako je izraz istinit ( pravi), zatim kod zatvoren u tijelu bloka ako bit će izvršena. Slično u petlji dok stavljamo izraz koji može procijeniti na pravi ili lažno kao što je prikazano u ovom kodu:

Int x = 10; dok (x> 0) (x--; // x se smanjuje za jedan svaki prolaz petlje)

Što se ovdje događa? Prva stvar izvan petlje dok deklarirali smo varijablu x tip int i ovoj varijabli dodijelio vrijednost “10”. 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 varijabla x više 0 a uvjet neće dostići vrijednost lažno... Stoga će se kod izvršiti 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, već u drugom 9 , u trećem 8 itd. I kada x bit će jednaki 0 , tada uvjet ulaska u petlju neće biti ispunjen, a program će se nastaviti iz sljedećeg retka nakon završetka petlje.

Baš kao u operateru ako, moguća je situacija u kojoj se ciklus neće izvršiti niti jednom. Pogledajte sljedeći primjer:

Int x = 10; dok (x> 10) (// neki kod // ali nikada se neće izvršiti dok x nije veći od 10)

Osim toga, nema ograničenja na složenost izraza uvjeta ili količinu koda koji se može napisati u tijelu petlje:

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

Ova petlja će se izvoditi sve do varijable playerLives ili vanzemaljski brodovi neće biti jednak ili manji od nule. Čim se ispuni jedan od ovih uvjeta, izraz u uvjetu će poprimiti vrijednost lažno a program će se nastaviti u sljedećem retku nakon završetka petlje.

Treba napomenuti da čim program uđe u tijelo petlje, on će se izvršiti čak i ako uvjet petlje postane lažno, negdje u tijelu ciklusa, jer uvjet se provjerava samo pri ulasku:

Int x = 1; dok (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 takav uvjet da će petlja trajati zauvijek - to se zove beskrajni ciklus. Evo primjera:

Int x = 0; dok (točno) (x ++; // Postat ću jako velik!)

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

Što ako stvarno 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č pauza... Možemo koristiti pauza kada trebamo "izaći" iz petlje:

Int x = 0; dok (true) (x ++; // Postat ću jako velik! break; // Ne, nećeš! // kod ovdje neće biti dosegnut)

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

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

Možete napisati još mnogo različitih varijacija, ali praktična primjena tog znanja nam je važnija, pa nećemo sada dublje. Pogledajmo još jedan koncept kojim se može upravljati u petlji.

Ključna riječ nastaviti

nastaviti djeluje gotovo isto kao pauza... Ključna riječ nastaviti izbacit će vas iz tijela petlje, ali tada provjerite uvjetni izraz umjesto da nastavi nakon zatvaranja vitičaste zagrade petlje, kao što bi bio slučaj sa pauza... Sljedeći primjer pokazuje upotrebu nastaviti:

Int x = 0; int prevelik = 10; int previšeBigToPrint = 5; dok (true) (x ++; // Postat ću jako velik! if (x == prevelik) (prekid;) // Ne, nećete. // Ovdje će kod biti dostupan samo dok ne bude x 10 if (x> = tooBigToPrint) (// više se neće ispisivati ​​na zaslon, ali će se petlja nastaviti nastaviti;) // ovdje će kod biti dostupan dok x ne bude jednak 5 // kod za ispis x na zaslon)

Objašnjenje: deklariramo i inicijaliziramo varijable. Ulazimo u petlju - dodajmo vrijednosti varijable x jedinica (sada x= 1). Provjera "1 je 10?" - lažno- prvi operater ako nije izvršeno. Sljedeća provjera je "Je li 1 veće ili jednako 5?" - lažno- drugi operater ako nije izvršeno. Zaključujemo x na ekranu.

Razmotrite opciju kada x poprimit će vrijednost 5 pri ulasku u petlju. Ulazimo u petlju - dodajmo vrijednosti varijable x jedinica (sada x= 6). Provjera "6 je 10?" - lažno- prvi operater ako nije izvršeno. Sljedeća provjera je "Je li 6 veće ili jednako 5?" - pravi- ulazimo u tijelo akonastaviti, izađite iz petlje i provjerite uvjet za ulazak u petlju.

Sada je opcija kada x poprimit će vrijednost 9 pri ulasku u petlju. Ulazimo u petlju - dodajmo vrijednosti varijable x jedinica (sada x= 10). Provjera "je li 10 jednako 10?" - pravi- ulazimo u tijelo akopauza, izađite iz petlje i kod će se nastaviti iza zatvarajuće vitičaste zagrade petlje dok.

Do-while petlja

Gotovo isto kao i prethodna petlja, s izuzetkom jedne osobitosti - provjera izvršenja uvjetnog izraza dogodit će se nakon tijela petlje. To znači da ciklus čini-dok uvijek će se pokrenuti barem jednom. Pogledajte primjer:

Int x = 0; učiniti (x ++;) dok (x< 10); //x теперь = 10

Ključne riječi pauza,nastaviti

Za petlju

Ciklus za ima složeniju sintaksu od dok i čini-dok jer je potrebno malo više manipulacije da se inicijalizira. Pogledajmo ga prvo, a zatim ga razdvojimo na dijelove:

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

Kako to vidi prevodilac? Kao ovo:

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

  • Deklaracija i inicijalizacija- kreirali smo novu varijablu tipa int S imenom i i dodijelio mu vrijednost 0 ;
  • Stanje- slično drugim petljama koje smo ranije razmatrali, ovdje provjeravamo uvjet ulaska u petlju. Ako se vrijednost izračuna kao pravi, tada ulazimo u tijelo ciklusa;
  • Promijeniti nakon svakog ciklusa- u gornjem primjeru i++ znači da smo nakon sljedećeg prolaska petlje na vrijednost varijable i dodajte jedan (1). Štoviše, u promjeni varijable možemo napisati i i oduzeti jedan, na primjer:
for (int i = 10; i> 0; i -) (// odbrojavanje) // tipka za pokretanje, i = 0

Ključne riječi pauza,nastaviti također se može koristiti u ovoj petlji.

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.

Jeste li se ikada zapitali zašto programi uopće postoje? Ako pojednostavimo i generaliziramo odgovor na ovo pitanje, ispada da su programi potrebni za automatizaciju tijeka rada, povećanje brzine obavljenog posla, oslobađanje osobe od tisuća monotonih radnji i tako dalje. Usredotočimo se na ponavljanje radnji jedne za drugom, ili, jednostavnije rečeno, ciklusa.

Petlja je uzastopno izvođenje ponavljajućih radnji na temelju zadanog preduvjeta. Na primjer, trebate preurediti sto kutija iz jednog kuta u drugi. Ako to nekako zapišete u jeziku Java (nažalost, Java ne može preurediti okvire umjesto vas), onda ćete dobiti stotinu redaka:

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

100. uzmite kutiju br. 100 i stavite je u drugi kut;

Stotinu redaka koda je već puno, ali ima tisuću, dvije, tri i tako dalje. U te svrhe, naime, da bi se pojednostavilo snimanje radnji koje se ponavljaju, koriste se ciklusi.

Postoje tri izjave koje predstavljaju petlje u jeziku Java - while, do / white i for. Svaki od operatora je neophodan u svojoj situaciji, ali se i dalje najčešće koristi operator for. Razmotrimo svaki od operatora redom.

Dok izjava

Sintaksa za iskaz while je sljedeća:

Dok (uvjet) (// radnje)

Događa se i ispunjenje određenog preduvjeta, ali za razliku od if/els operatora, ova konstrukcija je izgrađena na petljama za provjeru uvjeta. Kada program dođe do naredbe while, ako je predloženi uvjet istinit, izvršavaju se sve akcije u bloku vitičastih zagrada (...). Nakon dovršetka ovih radnji, program ponovno vrši provjeru uvjeta nakon iskaza while, a ako je uvjet ponovno istinit, radnje u bloku se ponavljaju. Akcije u bloku se izvode sve dok uvjet ne postane lažan i tek tada izlazi iz petlje while.
Za izlazak iz petlji najčešće se koriste takozvani brojači. Razmotrimo mali primjer:

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

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

(// radnje i--;)

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

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

Varijabla i je istinita, dodijeljena joj je vrijednost true, tako da se while petlja izvršava sve dok se varijabli i ne dodijeli vrijednost false. Stoga morate voditi računa o izlasku iz takve petlje, inače će se while petlja izvoditi neograničeno i takve petlje se nazivaju beskonačne petlje.

Na kraju, želio bih vam skrenuti pozornost na operator jednakosti ==. Ako napišete petlju ovako:

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

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

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

U preduvjetu je varijabli i dodijeljena vrijednost 5, ali ta radnja nije zabranjena i što na kraju dobivamo? Izvršenje ovog bloka petlje će započeti na čijem će se kraju vrijednost i povećati za jedan, ali u preduvjetu nakon iskaza while varijabli i će se ponovno dodijeliti vrijednost pet i petlja će nastaviti svoj rad neodređeno. Ovo je primjer jednostavne beskonačne petlje i, kao posljedica toga, klasične pogreške koja se vrlo često događa kod programera početnika.

Do / while petlja

Dok petlja koju smo upravo razmotrili, pod određenim uvjetima, možda neće raditi. Na primjer, ako je uvjet u početku netočan, tada se petlja nikada neće izvršiti. Program će, nakon što dođe do retka koda s iskazom while, provjeriti uvjet i ako je netačan, zanemarit će cijelu petlju i prijeći na kod koji odmah slijedi nakon petlje while. Ali ponekad postaje potrebno pokrenuti petlju barem jednom. U ove svrhe, Java ima do / while petlju. Do / while petlja je napisana i kreirana na sljedeći način:

Učini (// radnje) dok (uvjet)

Između izraza do i while postoji tijelo petlje, koje će se izvršavati sve dok postuvjet 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 se pokaže da je neophodna.

Za petlju

Ovo je najčešća petlja u programiranju. Petlja for temelji se na manipulaciji brojačem. Značenje ove petlje slično je petljama while i do / while o kojima smo gore raspravljali. Provjerite kako izgleda sintaksa za petlju for:

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

Nakon ključne riječi for slijedi uvjet za izvođenje petlje. Samo stanje kombinira tri stupnja. Prvo slijedi inicijalizacija brojača i = 0, a zatim se provjerava uvjet i< 10 и в конце увеличение переменной i на единицу.

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

U Javi, kao iu gotovo svakom programskom jeziku, postoje alati za višestruko ponavljanje određenog dijela koda, ili, kako se oni nazivaju, petlje. Petlje u Javi su predstavljene naredbama kao što su for i while te njihovim varijantama. U pravilu, petlje se koriste za ponavljanje jednodimenzionalnih i višedimenzionalnih nizova i iterativnih struktura podataka (uključujući zbirke) kako bi se pronašli određeni elementi i daljnje operacije s njima. Međutim, ovo nije jedini način korištenja alata kao što je Java Loop. Slučajevi korištenja bit će navedeni kako se budu razmatrali.

Java: opis i primjeri

Osnovni operator petlje u Javi je while. Fragment koda zatvoren u svom tijelu će se ponavljati sve dok uvjet izraza zatvorenog u zagrade nakon što zadovolji logičku vrijednost istine. Opći oblik izjave while je sljedeći:

dok (uvjet) (

// tijelo ciklusa

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

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

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

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

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

Vrijedi napomenuti da Java sintaksa omogućuje korištenje naredbe while bez tijela. Navedimo primjer. Pretpostavimo 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 "šuplju" dok:

dok (++ i< --j);

Kao rezultat toga, vrijednost bilo koje od dvije varijable bit će jednaka prosjeku njihovih izvornih vrijednosti. Kao što vidite, petlja je dobro radila bez tijela i izvela je sve potrebne radnje u uvjetnom izrazu.

Do-while petlja

U prethodnim primjerima, ako je uvjetni izraz u početku vratio false, tada bi izvođenje programa zanemarilo tijelo petlje i nastavilo bi se 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, događa se da je potrebno provjeriti istinitost uvjetnog izraza ne na početku, već na kraju ciklusa. Varijacija while petlje nazvana do-while može pružiti ovu funkcionalnost. Ima sljedeći oblik:

čini (
// tijelo ciklusa

) dok (uvjet);

Kao što vidimo, prvo tijelo petlje ide u izvršenje, a tek onda se provjerava istinitost uvjeta - i tako na svakoj iteraciji.

Gornji kod radit će na isti način kao i kod običnog while. Međutim, da smo varijabli count dodijelili vrijednost 11, tijelo petlje bi se i dalje izvršilo jednom prije nego što bi operator mogao testirati da je izraz istinit.

Opis i primjeri za - Java petlju

To je svestran i učinkovit oblik jezika u Javi. Prije pete verzije Java SDK-a, postojao je samo jedan tradicionalni oblik for naredbe, a zatim se pojavio novi - za svaki. U ovom dijelu ćemo se upoznati s tradicionalnim oblikom operatora. za Javu petlja izgleda ovako:

Prije nego se kontrola prenese na kod u tijelu petlje, varijabla i se inicijalizira da djeluje kao brojač. Zatim se provjerava uvjetni izraz u kojem se brojač uspoređuje s određenom vrijednošću, a ako vrati true, izvršava se tijelo petlje. Zatim se vrijednost brojača mijenja unaprijed određenim korakom i uvjetni izraz se ponovno provjerava, i tako sve dok uvjet ne postane lažan. Donji dijagram toka ilustrira sve faze ciklusa.

Za bolje razumijevanje, evo primjera kako radi Java petlja:

Možemo vidjeti da se varijabla loopVal koristi kao brojač. Nakon svake iteracije petlje, njezina vrijednost će se povećati za 1, a to će se nastaviti sve dok ne dosegne 11. Imajte na umu da se kontrolna varijabla može deklarirati izvan izraza for, ali ako ovu varijablu nećete koristiti nigdje osim u petlju, preporuča se deklarirati je izravno u izjavi. Imajte na umu da je varijabla deklarirana u samom izrazu obuhvaćena unutar te petlje.

Postoje situacije kada trebate deklarirati nekoliko varijabli koje kontroliraju petlju. Za Javu, petlja vam omogućuje da navedete dvije ili više varijabli odvojenih zarezima, a to se može učiniti i tijekom njihove inicijalizacije i tijekom iteracije. Takav operator će izgledati ovako:

za (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 bude veće ili jednako j.

Specifičnosti korištenja operatora for

Petlja for je prilično fleksibilna jer se sva tri njezina dijela (inicijalizacija, uvjet i povećanje/dekrement) mogu koristiti izvan oznake. Na primjer, umjesto uvjetnog izraza s kontrolnom varijablom, možete zamijeniti bilo koju logičku varijablu.

boolean izlaz = lažno;

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

U gornjem primjeru možemo uočiti kako je rad petlje apsolutno neovisan o kontrolnoj varijable i, a broj iteracija ovisi isključivo o trenutku u kojem izlaz varijable postaje istinit. Štoviše, kontrolna varijabla može se potpuno ukloniti iz petlje i to neće utjecati na njezin rad ni na koji način: for (;! Exit;) (). Iako nije najpametniji način programiranja, ponekad može biti koristan. Glavna stvar je predvidjeti situaciju u kojoj će varijabla uzeti vrijednost potrebnu za izlazak iz petlje, kako je ne bi pretvorila u beskonačnu.

Za Javu, petlja se može deklarirati na ovaj način: for (;;) (). Ovo je tipičan primjer beskonačne petlje s posebnim prekidnim uvjetima. O tome kako prekinuti takve cikluse ćemo govoriti malo kasnije.

Za svaku petlju

Java foreach petlja se uvijek koristi za ponavljanje elemenata niza ili nešto slično i izvođenje određenih ponavljajućih operacija na njima. Primjer ovog oblika izjave for prikazan je u nastavku:

Ime je deklarirano kao varijabla iteracije, a niz imena nizova deklariranih ranije je drugi argument operatora. Ime varijable uzimat će vrijednosti svakog elementa niza redom dok se svi njegovi elementi ne dohvate. Treba napomenuti da tip varijable mora biti kompatibilan s tipom elemenata koji su pohranjeni u nizu. Također, varijabla name dostupna je isključivo za čitanje i pokušaj njezine promjene neće promijeniti sam element u nizu.

Operatori prekidne petlje

Postoje tri naredbe prekida petlje: break, return i continue. Prva dva mogu u potpunosti prekinuti rad petlje, dok nastavak prekida samo rad tekuće iteracije. Ako namjerno koristite beskonačnu Java petlju u svom kodu, ovi operatori moraju biti prisutni u njoj. Pogledajmo jednostavan primjer korištenja break:

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

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

Korištenje break kao goto

Treba imati na umu da prekid prekida rad samo petlje u čijem se tijelu izravno nalazi, t.j. ako ga koristite u ugniježđenoj petlji, vanjska petlja neće prestati raditi. Za to se izjava break može koristiti kao civilizirani oblik goto.

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

Kod deklarira tri bloka s nazivima oznaka Jedan, Dva i Tri, redom. 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. Oni. vidjet ćemo dvije poruke u konzoli: Three i One.

Zaključak

Upoznali smo se s konceptom petlji u Javi, glavnim while i for naredbama, te njihovim do-while i for each formama. Za bolje razumijevanje preporučamo izvođenje vježbi koristeći ove operatore u različitim oblicima, kao i različite načine njihovog prekidanja i prelaska iz jednog bloka u drugi.

Posljednje ažuriranje: 31.10.2018

Petlje su još jedna vrsta kontrolne strukture. Petlje omogućuju, ovisno o određenim uvjetima, izvođenje određene radnje više puta. Jezik Java ima sljedeće vrste petlji:

Za petlju

Petlja for ima sljedeću formalnu definiciju:

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

Razmotrimo 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 koja druga numerička vrsta, na primjer, float. Prije nego što se petlja izvrši, brojač će biti 1. U ovom slučaju, ovo je isto kao deklariranje 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.

A treći dio je povećanje brojača za jedan. Opet, ne trebamo povećavati za jedan. Može se 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.

Prilikom deklariranja petlje ne moramo specificirati sve uvjete. Na primjer, možemo napisati ovako:

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

Definicija petlje ostaje ista, samo su sada blokovi u definiciji prazni: for (;;). Sada nema inicijalizirane varijable brojača, nema uvjeta, tako da će petlja trajati zauvijek - beskonačna petlja.

Alternativno, 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: također imamo brojač, samo što je kreiran izvan petlje. Imamo uvjet za izvođenje petlje. I tu je povećanje brojača već u samom bloku for.

Petlja for može definirati i manipulirati s nekoliko varijabli odjednom:

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

Napravite petlju

Petlja do najprije izvršava kod petlje, a zatim provjerava uvjet u naredbi while. I sve dok je ovaj uvjet istinit, ciklus se ponavlja. Na primjer:

Int j = 7; učiniti (System.out.println (j); j--;) while (j> 0);

U ovom slučaju, kod petlje će se pokrenuti 7 puta dok j ne bude jednak nuli. Važno je napomenuti da do petlja jamči barem jedno izvršenje akcije, čak i ako uvjet u naredbi while nije istinit. Dakle, možemo napisati:

Int j = -1; učiniti (System.out.println (j); j--;) while (j> 0);

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

Dok petlja

Dok petlja odmah provjerava istinitost nekog uvjeta, a ako je uvjet istinit, tada se izvršava kod petlje:

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

Izjave nastavljanja i prekida

Naredba break vam omogućuje 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 (brojevi [i]); )

Budući da petlja provjerava je li 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 se pokrenuti i petlja će završiti.

Istina, također nećemo vidjeti zadnji element, koji je manji od 10. Sada ćemo napraviti tako da ako je broj veći od 10, ciklus ne završava, već jednostavno prelazi na sljedeći element. Da biste to učinili, koristite operator nastavak:

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 (brojevi [i]); )

U ovom slučaju, kada izvođenje petlje dosegne broj 12, koji ne zadovoljava testni uvjet, program će jednostavno preskočiti ovaj broj i prijeći na sljedeći element niza.

Petlja je blok instrukcija koji se izvršava iznova i iznova sve dok je ispunjen određeni uvjet. Ponovljeni dio koda naziva se "tijelo petlje". Jedno izvođenje tijela petlje naziva se iteracija.

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

dok- ciklus s preduvjet- prvo provjeravamo uvjet, zatim izvršavamo tijelo ciklusa;

učiniti ... dok- ciklus s postuvjet- prvo jednom izvršimo tijelo ciklusa, zatim provjeravamo uvjet i, ako je ispunjen, nastavljamo;

za- petlja s brojačem - izvršava se i pri svakoj iteraciji ažurira brojač sve dok je uvjet u deklaraciji petlje ispunjen (tj. provjera uvjeta vraća true);

stenografija za(na drugim jezicima poznat kao foreach) - ponavlja niz od prvog do posljednjeg elementa i izvršava tijelo petlje pri svakoj iteraciji.

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

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

int a = 1;

dok (a< 11) {

System.out.println (a);

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

}

Ako varijabla radi kao brojač petlje i ne koristi se izvan njega, inicijalizira se izravno u uvjetu. A onda na kraju svake iteracije napišu što učiniti s tim. Sve to u jednom retku - koristeći za:

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

System.out.println (a);

}

Dobivamo isti rezultat. Popis bi se mogao započeti od nule ili od negativne vrijednosti - raspon definiramo sami.

Skraćenica for petlje ne označava broj ponavljanja ili radnje na kraju koraka. Foreach petlja se koristi za ponavljanje nizova. Od prvog elementa trebate ići na sljedeći - dok se niz ne završi.

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

int s = 0;

for (int i: ms) (// naznači što treba ponoviti

s * = i; // množimo elemente uzastopno

}

System.out.println (s);

Java ugniježđene petlje

Ciklusi se mogu ugniježditi jedan u drugom. U ovom slučaju, broj ponavljanja vanjske i ugniježđene petlje se množi. Ako se vanjska treba izvesti 5 puta, a unutarnja 5 puta, cijela petlja će se izvesti 25 puta.

Prikažimo 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);

}

}

Stvaranje objekata u Java petlji

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

Nešto niz = novo Nešto [n]; // kreirati niz tipa "nešto" od n elemenata

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

niz [i] = novo Nešto (); // stvoriti "nešto" i staviti to u niz

}

Kako izaći iz Java petlje

Za izlazak iz petlje postoje ključne riječi break - "prekid", nastavak - "nastavak" i return - "povratak". Naredba break prebacuje program da izvrši naredbe koje slijede nakon petlje. Uvjeti prekida petlje u Javi su formalizirani kroz if-grananje. Glavna stvar je da se provjera izvodi prije glavnog tijela petlje.

// nakon kreiranja niza m, napiši:

za (a: m) (

ako (a == 5) prekid;

System.out.println (a);

}

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

Ako koristite break u ugniježđenoj petlji, samo će se ona prekinuti, a vanjska će se nastaviti izvršavati.

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

U konstrukcijama while isti nastavak funkcionira drugačije: vraća nas na provjeru uvjeta nastavka petlje. Druga naredba - return - vraća program na mjesto gdje 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 s goto:

break Mark1; // pod uvjetom da postoji oznaka1 negdje više:

Java beskonačna petlja

Lako je stvoriti beskonačnu petlju - samo trebate izostaviti parametre za:

za (;;) ()

Što je teže imati koristi od toga. Obično je beskonačna petlja fatalna pogreška koja ometa 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 uvjete prekida u tijelu petlje,
  • pobrinite se da varijabla u uvjetu prekida može poprimiti vrijednost na kojoj će se petlja zaustaviti.

Vrhunski povezani članci