Slučky v jazyku Java. Používanie funkcií operátora for:. pre každú štýlovú slučku

  • 28.06.2019

Keď potrebujete vykonať rovnakú akciu niekoľkokrát alebo do určitej podmienky, na záchranu prídu slučky.

Jazyk Java má niekoľko spôsobov, ako vytvárať slučky. Ako ste mohli uhádnuť, zvážime ich všetky.

Prvý spôsob, ako deklarovať slučku, je použiť nasledujúcu konštrukciu: for (podmienka začiatku slučky; koncová podmienka; krok, ktorým slučka prejde) ( telo slučky )

Poďme rovno na príklady. Povedzme, že máme za úlohu 10-krát zobraziť frázu „ahoj svet“. Ak nepoužívate slučky, môžete napísať System.out.println("Ahoj svet"); desaťkrát a problém vyriešiť. Na tento účel použijeme slučky. Vytvorte novú triedu a pomenujte ju napríklad CuclesInJava. Teraz deklarujte podmienku cyklu (nech je 0), koncovú podmienku 10 a krok. Pôjdeme krok za krokom. Do tela cyklu vložte riadok System.out.println("Ahoj svet");

Tu je príklad kódu:

Výsledkom tohto kódu bude 10 po sebe idúcich riadkov frázy „Ahoj svet!“.

Čo tak napísať niečo zložitejšie. Tie základné sme sa už naučili. Využime ich.

Napíšme si jednoduchú aplikáciu, ktorá pri každom kroku zobrazí riadok s upozornením + nejaká premenná sa rovná 5. Mám veľmi zlú predstavivosť))

Najprv napíšme kód, ktorý bude akceptovať premennú zadanú z konzoly ako vstup. V predchádzajúcom článku som uviedol príklad tohto kódu a dohodli sme sa, že neskôr vysvetlím, ako to funguje a odkiaľ pochádza. Zatiaľ to budeme používať iba:

Ďalej musíte napísať slučku, ktorá bude začínať od nuly a bude počítať do desať (ako v predchádzajúcom príklade). Do tela cyklu napíšeme podmienený príkaz, ktorý skontroluje, či sa táto premenná rovná 5 a ak áno, zobrazíme reťazec „OK“. To som urobil:

    import java.util.Scanner ;

    verejná trieda CuclesInJava(

    int premenna = scanner.nextInt(); //postupne sa k tomu dostaneme a potom bude jasne ako to funguje

    pre (int i = 1; i< 10 ; i++ ) {

    int novaPremenna = i + premenna;

    if (nováPremenná== 5) (

Nedopadlo to veľmi dobre. Týmto príkladom som chcel ukázať, ako môžete použiť slučky s vetvami v spojení.

Ďalším spôsobom, ako deklarovať slučky, je while (podmienka je pravdivá) (blok kódu, ktorý sa má vykonať). Tento dizajn má inú formu:

do (blok kódu na vykonanie) while (podmienka je pravdivá). Rozdiel medzi prvým a druhým je v tom, že druhý vykoná jeden cyklus bez ohľadu na to, či je podmienka pravdivá alebo nie. Môžete si myslieť sami: najprv spustíme kód a potom skontrolujeme podmienku. A aj keď podmienka nie je pravdivá, kód sa aj tak raz vykoná, v čase, keď sa podmienka prvýkrát skontroluje v prvej forme konštrukcie, a kým nie je pravdivá, kód sa nevykoná.

Kód by mal byť intuitívny. Myslím, že stojí za zmienku, že pomocou konštruktov while a do-while môžete "slučka" program, ak nezaregistrujete alebo nesprávne zaregistrujete podmienku ukončenia zo slučky. Pozrite sa na príklad vyššie a premýšľajte o tom, čo by sa stalo, keby som napísal i++ namiesto i-; alebo namiesto i>0, t.j<0. Моя программа никогда не вышла бы из цикла и продолжала бы выводить строку Hello world! до тех пор, пока не завис компьютер. Поэтому, будьте очень осторожными с циклами и всегда следите, чтобы из них Ваша программа могла выйти или закончить работу.

No, príklad s do-while:

Myslím, že týmto by sme mohli dokončiť článok o slučky v jazyku Java. Ako vidíte, návrhy nie sú príliš zložité, ale veľmi užitočné. Budú užitočné najmä vtedy, keď sa zoznámime s poliami a reťazcami.

Slučka je časť programu, ktorá sa mnohokrát opakuje.

V jave existujú dva typy slučiek: typ „pričom“ a typ „n-krát“.

Prvý typ „až“ je určený na opakovanie nejakej akcie, kým nie je splnená nejaká podmienka. Príklad: zväčšujte číslo o 5, kým sa nestane trojciferným.

Druhý typ „n-krát“ je navrhnutý tak, aby opakoval niektoré akcie vopred určený počet krát. Príklad: vynásobte číslo 4-krát.

Kým slučka (príkazy while a do...while)

Príkaz while opakuje zadané akcie, pokiaľ je jeho parameter pravdivý.

Takáto slučka sa napríklad vykoná 4-krát a na obrazovke sa zobrazí „1 2 3 4“:

Int i = 1; kým< 5) { System.out.print(i + " "); i++; }

Takáto slučka sa nikdy nevykoná a na obrazovke sa nič nezobrazí:

Int i = 1; kým< 0) { System.out.print(i + " "); i++; }

Takáto slučka sa bude vykonávať donekonečna a na obrazovke sa zobrazí „1 2 3 4 5 6 7 ...“:

Int i = 1; while (true) (Systém.out.print(i + " "); i++; )

Podmienka, ktorá určuje, či sa bude slučka opakovať, sa kontroluje pred každým krokom slučky, vrátane pred prvým krokom. Hovoria, čo sa deje predbežná kontrola podmienky.

Existuje slučka while s po overení podmienky. Na jeho napísanie sa používa konštrukcia príkazov do ... while.

Takáto slučka sa vykoná 4-krát a na obrazovke sa zobrazí „2 3 4 5“:

< 5);

Takáto slučka sa vykoná 1-krát a na obrazovke sa zobrazí „2“:

Int i = 1; do ( i++; System.out.print(i + " "); ) zatiaľ čo (i< 0);

Telo cyklu do...while sa vykoná aspoň raz. Tento operátor je vhodné použiť, keď je potrebné vykonať nejakú činnosť v programe aspoň raz, ale za určitých podmienok ju bude potrebné opakovať mnohokrát.

Vyskúšajte nasledujúci program (uhádne náhodné celé číslo zo segmentu a požiada používateľa, aby ho uhádol zadaním možností z klávesnice, kým používateľ neuhádne číslo, program ho vyzve a povie mu viac alebo menej ako uhádnuté číslo ako používateľ zadal):

Importovať java.util.Scanner; public class Main ( public static void main(String args) ( // prog - číslo vytvorené programom // user - číslo zadané používateľom int prog, user; // Generovanie náhodného celého čísla od 1 do 10 prog = (int)(Math. random() * 10) + 1; System.out.println("Uhádol som číslo od 1 do 10, hádajte."); System.out.print("Zadajte svoje číslo: ") ; Vstup skenera = new Scanner( System.in); // Skontrolujte, či je vo vstupnom toku celé číslo if(input.hasNextInt()) ( do ( // Čítanie celého čísla zo vstupného toku user = input.nextInt( ); if(user == prog) ( System.out.println("Uhádli ste!"); ) else ( // Skontrolujte, či je číslo v rozsahu if (používateľ > 0 && používateľ<= 10) { System.out.print("Вы не угадали! "); // Если число загаданное программой меньше... if(prog < user) { System.out.println("Моё число меньше."); } else { System.out.println("Моё число больше."); } } else { System.out.println("Ваше число вообще не из нужного отрезка!"); } } } while(user != prog); } else { System.out.println("Ошибка. Вы не ввели целое число!"); } System.out.println("До свиданья!"); } }

Vykonajte v programe nasledujúce zmeny:

    Program by mal myslieť na číslo nie zo segmentu , ale celé číslo zo segmentu od [−10;10] s výnimkou nuly. Zároveň sa snažte zabezpečiť, aby rozloženie náhodných čísel generovaných programom bolo rovnomerné (t. j. v prípade vypadnutia nuly ju nemožno jednoducho nahradiť nejakým iným číslom, napr. 1, pretože potom 1 vypadnú s dvojnásobnou pravdepodobnosťou ako ostatné čísla).

    Program by mal upozorniť používateľa, že urobil chybu v znamienku, ak program uhádol kladné číslo a používateľ zadal záporné číslo. A naopak.

Typ slučky „n-krát“ (príkaz pre)

Príkaz for obsahuje tri parametre. Prvá sa nazýva inicializácia, druhá je podmienka opakovania a tretia je iterácia.

For (inicializácia; podmienka; iterácia) ( // telo cyklu, t. j. akcie sa cyklicky opakujú )

V prvom parametri sa zvyčajne zvolí nejaká premenná, pomocou ktorej sa bude počítať počet opakovaní slučky. Volá sa to počítadlo. Počítadlo dostane nejakú počiatočnú hodnotu (udávajú, od akej hodnoty sa bude meniť).

V druhom parametri je uvedené nejaké obmedzenie na počítadle (udávajú na akú hodnotu sa zmení).

Tretí parameter určuje výraz, ktorý zmení počítadlo po každom kroku cyklu. Zvyčajne ide o zvýšenie alebo zníženie, ale môžete použiť akýkoľvek výraz, v ktorom bude počítadlu priradená nová hodnota.

Pred prvým krokom cyklu je počítadlu priradená počiatočná hodnota (vykoná sa inicializácia). Toto sa stane len raz.

Pred každým krokom cyklu (ale po inicializácii) sa kontroluje podmienka opakovania, ak je pravdivá, telo cyklu sa vykoná ešte raz. Zároveň sa telo slučky nesmie vykonať ani raz, ak je podmienka v čase prvej kontroly nepravdivá.

Po dokončení každého kroku cyklu a pred začiatkom nasledujúceho (a teda pred kontrolou podmienky opakovania) sa vykoná iterácia.

Nasledujúci program vytlačí na obrazovku čísla od 1 do 100:

Pre (int i = 1; i<= 100; i++) { System.out.print(i + " "); }

Nasledujúci program vytlačí na obrazovku čísla od 10 do -10:

Pre (int s = 10; s > -11; s--) ( System.out.print(s + " "); )

Prezentovaný program zobrazuje nepárne čísla od 1 do 33:

Pre (int i = 1; i<= 33; i = i + 2) { System.out.print(i + " "); }

Prezentovaný program vypočíta súčet prvkov sekvenčného fragmentu 2, 4, 6, 8, ... 98, 100. Takže:

int súčet = 0; // Tu zhromažďujeme výsledok pre (int j = 2; j

Prezentovaný program zdvihne číslo z premennej a na prirodzenú silu z premenných n:

dvojité a = 2; int n = 10; dvojitá res = 1; // Tu zhromažďujeme výsledok pre (int i = 1; i<= n; i++) { res = res * a; } System.out.println(res);

Prezentovaný program zobrazí prvých 10 prvkov sekvencie 2n+2, kde n=1, 2, 3…:

Pre (int i = 1; i< 11; i++) { System.out.print(2*i + 2 + " "); }

Prezentovaný program zobrazí prvých 10 prvkov sekvencie 2a n−1 +3, kde a 1 = 3:

Int a = 3; pre (i=1; i<=10;i++) { System.out.print(a + " "); a = 2*a + 3; }

V jednom cykle môžete nastaviť niekoľko počítadiel naraz. V tomto prípade je niekoľko výrazov v iterácii a inicializácii oddelených čiarkami. Môžete zadať iba jednu podmienku opakovania, ale môže to byť výraz obsahujúci niekoľko počítadiel naraz.

Prezentovaný program zobrazí prvých 10 prvkov sekvencie 2a n−1 -2, kde a 1 = 3:

Pre (int a=3, i=1; i<=10; a=2*a-2, i++) { System.out.print(a + " "); }

Prezentovaný program zobrazí nasledujúcu postupnosť "0 -1 -4 -9 -16 -25":

Pre (int a=0, b=0; a-b<=10; a++, b--) { System.out.print(a*b + " "); }

Predčasné ukončenie slučky (príkaz break)

Cyklus typu „while“ aj cyklus typu „n-krát“ je možné dokončiť pred plánovaním, ak zavoláte operátora v tele cyklu prestávka. V tomto prípade dôjde k okamžitému opusteniu cyklu, dokonca ani aktuálny krok nebude dokončený (t. j. ak po prestávke boli nejaké ďalšie príkazy, nevykonajú sa).

V dôsledku nasledujúceho príkladu sa na obrazovke zobrazia iba čísla „1 2 3 4 Koniec“:

Pre (int a=1; a

Keď program vykoná cyklus piatykrát (do cyklu vstúpi s počítadlom rovným 5), okamžite sa skontroluje a podmienka, za ktorej sa vykoná príkaz break, bude pravdivá. Zvyšok tela cyklu (výstup na obrazovku) už nebude produkovaný: program okamžite pristúpi k vykonávaniu operácií špecifikovaných po slučke a po nej.

Pomocou príkazu break môžete prerušiť zámerne nekonečný cyklus. Príklad (na obrazovke sa zobrazí „100 50 25 12 6 3 1 0“ a potom sa slučka zastaví):

int s = 100; while (true) ( ​​​​System.out.print(s + " "); s = s / 2; if(s == 0) ( break; ) )

Príkaz break má zmysel volať len vtedy, keď nastane nejaká podmienka, inak sa cyklus ukončí pred plánovaním v jeho prvom kroku.

int a; for (a=25; a>0; a--) ( break; System.out.print(a + " "); ) System.out.print("a=" + a);

Vo vyššie uvedenom príklade sa výstup v slučke na obrazovku nestane ani raz a keď premenná a sa po slučke zobrazí na obrazovke, ukáže sa, že jeho hodnota sa nikdy nezmenila, t.j. zobrazí sa „a=25“ (a nič iné).

Všimnite si tiež, že premenná bola deklarovaná pred spustením cyklu. Keď je premenná deklarovaná v parametroch cyklu, ukazuje sa, že je mimo neho nedostupná a v tomto prípade bolo potrebné inak - zistiť, akú hodnotu bude mať počítadlo po skončení cyklu.

Úlohy

    Napíšte program, ktorý zobrazí všetky štvorciferné čísla v poradí 1000 1003 1006 1009 1012 1015 ….

    Napíšte program, ktorý zobrazí prvých 55 prvkov sekvencie 1 3 5 7 9 11 13 15 17 ….

    Napíšte program, ktorý zobrazí všetky nezáporné prvky sekvencie 90 85 80 75 70 65 60 ….

    Napíšte program, ktorý zobrazí prvých 20 prvkov sekvencie 2 4 8 16 32 64 128 ….

    Vytlačte všetky členy postupnosti 2a n-1 -1, kde a 1 = 2, ktoré sú menšie ako 10 000.

    Vytlačte všetky dvojciferné členy postupnosti 2a n-1 +200, kde a 1 = -166.

    Napíšte program, ktorý vypočíta faktoriál prirodzeného čísla n, ktoré používateľ zadá z klávesnice.

    Zobrazenie všetkých kladných deliteľov prirodzeného čísla zadaných používateľom z klávesnice.

    Skontrolujte, či je prirodzené číslo zadané používateľom z klávesnice prvočíslo. Pokúste sa nevykonávať zbytočné akcie (napríklad po nájdení aspoň jedného netriviálneho deliteľa je už jasné, že číslo je zložené a nemusíte pokračovať v kontrole). Všimnite si tiež, že najmenší deliteľ prirodzeného čísla n, ak existuje, sa nevyhnutne nachádza v segmente.

    Napíšte program, ktorý zobrazí prvých 12 prvkov postupnosti 2a n-2 -2, kde a 1 = 3 a a 2 = 2.

    Zobrazte prvých 11 členov Fibonacciho postupnosti. Pripomíname, že prvý a druhý člen postupnosti sa rovnajú jednotkám a každý ďalší je súčtom dvoch predchádzajúcich.

    Pre prirodzené číslo zadané používateľom z klávesnice vypočítajte súčet všetkých jeho číslic (vopred nie je známe, koľko číslic v čísle bude).

    V meste N sa cestuje električkou na papierové trhacie lístky. Depo električiek si každý týždeň objednáva z miestnej tlačiarne rolku lístkov s číslami od 000001 do 999999. „Šťastný“ lístok je taký, v ktorom sa súčet prvých troch číslic čísla rovná súčtu posledného tri číslice, ako napríklad na lístkoch s číslami 003102 alebo 567576. Električkové depo sa rozhodlo venovať majiteľovi každého šťastného lístka suvenír a teraz je zvedavé, koľko suvenírov bude potrebných. Pomocou programu spočítajte, koľko šťastných lístkov je v jednom hode?

    City N má veľký sklad s 50 000 rôznymi regálmi. Pre pohodlie pracovníkov sa vedenie skladu rozhodlo objednať doštičku s číslom od 00001 do 50000 pre každý regál v miestnej tlačiarni, ale pri tlači platní sa ukázalo, že tlačiareň číslo 2 nevytlačila. z dôvodu poruchy, takže všetky štítky, ktoré obsahovali jeden alebo viac dvoch (napríklad 00002 alebo 20202) - musia byť pretypované. Napíšte program, ktorý spočíta, koľko z týchto chybných štítkov bolo v chybnej sérii.

    Elektronické hodiny ukazujú čas vo formáte od 00:00 do 23:59. Vypočítajte, koľkokrát za deň sa stane, že naľavo od hrubého čreva sa zobrazí symetrická kombinácia pre kombináciu napravo od hrubého čreva (napríklad 02:20, 11:11 alebo 15:51).

    V americkej armáde je číslo 13 považované za nešťastné a v japonskej - 4. Pred medzinárodnými cvičeniami sa veliteľstvo ruskej armády rozhodlo vylúčiť čísla vojenskej techniky obsahujúce čísla 4 alebo 13 (napríklad 40123, 13313, 12345 alebo 13040), aby som nerobil hanbu zahraničným kolegom. Ak má armáda k dispozícii 100 000 jednotiek vojenskej techniky a každé bojové vozidlo má číslo od 00001 do 99999, tak koľko čísel bude treba vylúčiť?

2010, Alexej Nikolajevič Kostin. Katedra TIDM Matematickej fakulty Moskovskej štátnej pedagogickej univerzity.

Potrebujete spracovať veľa údajov rovnakého typu? Potrebujete vypočítať riadok? Potrebujete násobiť matice? To všetko a ešte oveľa viac pomôže vytvoriť kolobeh! 🙂 Všetky výpočtové systémy boli pôvodne koncipované za účelom uľahčenia spracovania dát. A spracovanie veľkého množstva údajov si bez cyklov nemožno ani predstaviť.

Vo všeobecnosti sa slučky v programovaní zvyčajne delia do troch skupín. Prvou skupinou sú cykly s počítadlom. V nich sa telo slučky vykoná určitý počet krát, pôvodne určený programátorom. Takáto slučka sa musí vykonať stanovený počet krát. Druhou skupinou sú cykly s predpokladom. V nich sa telo slučky vykoná až po skontrolovaní nejakej podmienky a bude sa vykonávať dovtedy, kým je táto podmienka pravdivá. Takéto cykly sa nemusia vykonať ani raz (ak je podmienka pôvodne nepravdivá). A treťou skupinou cyklov sú cykly s postpodmienkou. V nich sa najskôr vykoná telo slučky, potom sa skontroluje podmienka. Tento cyklus sa vykoná aspoň raz.

Začnime s cyklom s počítadlom. V jazyku Java je to cyklus for; Vo všeobecnosti sa to dá napísať takto:

For (začiatočná podmienka; koncová podmienka; zmena) ( telo slučky; )

Ak teda chceme vykonať nejakú akciu 10-krát, musíme napísať nasledovné:

Pre (int i = 0; i<10; i++) { System.out.println(i); }

takýto program bude postupne zobrazovať čísla od nuly po deväť. Trochu podrobnejšie jednoducho vytvoríme novú premennú i a priradíme jej počiatočnú hodnotu 0 (int i = 0;). Potom určíme, že cyklus sa má vykonať až do i< 10 и указываем каким образом должно изменяться i после каждой итерации цикла (i++).

Tí, ktorí programovali v Pascale, ocenia túto príležitosť:

int k = 15; pre (float i = 0; i

V tomto príklade sa hodnota premennej i zvýši o 1,5 pri každej iterácii. Môžete skontrolovať :).

Ďalší cyklus v poradí je zatiaľ čo. Toto je cyklus s podmienkou a vo všeobecnosti sa dá napísať takto:

Kým (logický výraz) ( akcie )

No, ak si vezmeme pracovný príklad, bude to vyzerať asi takto:

Zatiaľ čo (a<10) { System.Out.Print(a); a++; }

Je teda jasné, že tento cyklus má zmysel používať, ak presne neviete, koľko iterácií je potrebných na dosiahnutie cieľa, no presne viete, za akých podmienok bude váš cieľ dosiahnutý. Takáto konštrukcia nemôže byť nikdy vykonaná (veď ide o slučku s podmienkou)! Koľkokrát sa akcie v slučke vykonajú, závisí od hodnoty, ktorá bola pôvodne v premennej a.

A tretím druhom cyklov sú cykly s dodatočnou podmienkou. Je veľmi podobný zatiaľ čo... robiť iba ak v zatiaľ čo... robiť podmienka sa kontroluje pred vykonaním tela cyklu, tu sa podmienka kontroluje po vykonaní tela cyklu. A to znamená, že cyklus sa vykoná aspoň raz pred kontrolou podmienky.

Zamysleli ste sa niekedy nad tým, prečo programy vôbec existujú? Ak odpoveď na túto otázku zjednodušíme a zovšeobecníme, ukáže sa, že programy sú potrebné na automatizáciu pracovného toku, zvýšenie rýchlosti vykonávanej práce, zbavenie človeka tisícok monotónnych úkonov atď. Zamerajme sa na akcie, ktoré sa opakujú jedna po druhej, alebo zjednodušene povedané, cykly.

Cyklus je postupné vykonávanie opakovaných akcií na základe daného predpokladu. Napríklad musíte preskupiť sto políčok z jedného rohu do druhého. Ak je to nejakým spôsobom napísané v jazyku Java (bohužiaľ, Java vám nemôže zmeniť usporiadanie polí), získame záznam o sto riadkoch:

1. vezmite krabicu číslo 1 a vložte ju do iného rohu;
2. vezmite krabicu číslo 2 a vložte ju do iného rohu;
3. vezmite krabicu číslo 3 a vložte ju do iného rohu;

100. vezmite krabicu č. 100 a položte ju do iného rohu;

Sto riadkov kódu je už veľa, ale je ich tisíc, dva, tri atď. Na tieto účely, konkrétne na zjednodušenie zaznamenávania opakujúcich sa akcií, slúžia cykly.

Existujú tri operátory reprezentujúce slučky v jazyku Java, sú to while, do/white a for. Každý operátor je potrebný vo svojej vlastnej situácii, ale operátor for je najčastejšie používaný. Pozrime sa postupne na každého z operátorov.

zatiaľ čo vyhlásenie

Syntax príkazu while vyzerá takto:

Kým(podmienka) ( // akcie )

Určitý predpoklad je tiež splnený, ale na rozdiel od príkazu if/else je táto konštrukcia založená na cykloch kontroly stavu. Keď program dosiahne príkaz while, ak je navrhovaná podmienka pravdivá, vykonajú sa všetky akcie v bloku zložených zátvoriek (...). Po vykonaní týchto akcií program opäť skontroluje podmienku po príkaze while a ak je podmienka opäť pravdivá, akcie v bloku sa zopakujú. Akcie v bloku sa vykonávajú, kým sa podmienka nestane falošnou, a až potom sa slučka while ukončí.
Na výstup zo slučiek sa najčastejšie používajú takzvané počítadlá. Zvážte malý príklad:

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

Najprv sa premennej i priradí hodnota 0, potom sa skontroluje podmienka i0)

( // akcie i--; )

Rovnaké akcie, ale v opačnom smere. Okrem toho v slučke while (a samozrejme aj v iných cykloch) je možné použiť boolovské premenné obsahujúce nepravdivé alebo pravdivé hodnoty. V tomto prípade sa kontroluje určitý predpoklad.

Boolean i = true; zatiaľ čo (i) ( // akcie )

Premenná i má hodnotu true, je nastavená na hodnotu true, takže cyklus while sa vykonáva, kým sa premenná i nenastaví na hodnotu false. Preto treba dávať pozor na ukončenie takejto slučky, inak bude slučka while prebiehať donekonečna a takéto slučky sa nazývajú nekonečné slučky.

Na záver by som chcel upozorniť na operátor ==. Ak je cyklus napísaný takto:

Int i = 0, zatiaľ čo (i == 5) ( // akcie i++; )

To sa ukáže ako úplne fungujúca slučka, ale ak sa pomýlite alebo zo zvyku použijete klasickú verziu operátora rovná sa = používanú v matematike, budete mať problém v podobe nekonečnej slučky.

Int i = 0, zatiaľ čo (i = 5) ( // akcie i++; )

V predpoklade je premennej i priradená hodnota 5 a táto akcia nie je zakázaná a čo z toho máme? Vykonávanie tohto bloku cyklu sa začne, na konci ktorého sa hodnota i zvýši o jeden, ale v predpoklade po príkaze while bude premennej i opäť priradená hodnota päť a cyklus bude pokračovať vo svojom pracovať do nekonečna. Toto je príklad jednoduchej nekonečnej slučky a v dôsledku toho klasickej chyby, ktorá sa začínajúcim programátorom stáva veľmi často.

slučka do/while

Slučka while, ktorú sme práve preskúmali, nemusí za určitých podmienok fungovať. Napríklad, ak je podmienka na začiatku nepravdivá, potom sa cyklus nikdy nevykoná. Program po dosiahnutí riadku kódu s príkazom while skontroluje podmienku a ak sa rovná false, bude ignorovať celý cyklus a prejde na kód bezprostredne nasledujúci za slučkou while. Ale niekedy je potrebné vykonať slučku aspoň raz. Java má na tento účel slučku do/while. Nahrávanie a vytváranie slučky do/while sa vykonáva takto:

Urobiť ( // akcie )pri (podmienka)

Medzi príkazmi do a while je telo cyklu, ktoré sa bude vykonávať dovtedy, kým postpodmienka po príkaze while nebude nepravdivá. Telo cyklu sa vykoná aspoň raz, potom sa skontroluje podmienka. Slučka do/while sa často nepoužíva, ale niekedy je nevyhnutná.

pre slučku

Toto je najbežnejšia slučka v programovaní. Práca cyklu for je založená na riadení počítadla. Význam tejto slučky je podobný slučkám while a do / while diskutovaným vyššie. Pozrite sa, ako vyzerá syntax cyklu for:

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

Za kľúčovým slovom for nasleduje podmienka vykonania cyklu. Samotný stav kombinuje tri štádiá. Najprv sa inicializuje počítadlo i = 0, potom sa skontroluje podmienka i< 10 и в конце увеличение переменной i на единицу.

Cyklus for funguje takto. Keď program dosiahne slučku, inicializuje sa počítadlo i = 0 a skontroluje sa podmienka i< 10. Далее программа переходит в тело цикла. По окончанию всех действий в цикле for, происходит обращение к третьему этапу цикла: i++, увеличивая счетчик на единицу. После чего сразу же происходит переход ко второму этапу – проверке переменной i < 10 и повторный выход в тело цикла. Весь цикл продолжается до тех пор, пока условие i < 10 не станет ложным. Цикл for используется постоянно при инициализации массива данных, где без него очень сложно, а порой и не возможно обойтись. Так же как и в цикле while возможно использование оператора декремента, например.

12.08.2017 1,9 tis

Cyklus Java While Do je príkaz, ktorý vám umožňuje spustiť rovnakú časť kódu viackrát. Túto slučku možno použiť na opakovanie akcií, keď sú splnené podmienky.

pričom slučka

Cyklus while je najjednoduchšie zostaviť v jazyku Java. Pozostáva z klávesu while, podmienky cyklu a tela cyklu:

while (podmienka) ( // telo cyklu )

Každý samostatný priebeh tela slučky sa považuje za iteráciu. Pred každou iteráciou sa vyhodnotia podmienky cyklu. Jeho telo sa vykoná iba vtedy, ak je podmienka cyklu pri vyhodnocovaní pravdivá.

Iterácie cyklu niečo zmenia a v určitom bode sa podmienka vyhodnotí ako false , po čom sa cyklus skončí. Cyklus, ktorého podmienka nikdy nevráti hodnotu false, sa vykoná nekonečne veľakrát. Takéto cykly sa nazývajú nekonečné.

Príklad

int num = 0; zatiaľ čo (č< 10) { System.out.println(num); num++; }

Tento príklad zobrazuje čísla od 0 do 9. Prejdime si kód krok za krokom. Najprv inicializujeme premennú num s hodnotou 0 . Toto bude počítadlo slučiek. Keď program dosiahne while, vyhodnotí sa stav cyklu. V našom prípade 0< 10 возвращает значение true и исполняется тело цикла. Внутри цикла выводится переменная num , а затем увеличивается на 1 . На этом завершается первая итерация.

Po prvom "spustení" sa podmienka Java While Loop vyhodnotí druhýkrát. jeden< 10 по-прежнему возвращает true , после чего запускается следующая итерация цикла. Один и тот же процесс повторяется несколько раз.

Konečná iterácia začína, keď je hodnota num 9 . Počítadlo slučiek sa vytlačí naposledy a hodnota sa zvýši na 10 . Tentoraz nie je možné spustiť novú iteráciu, pretože podmienka cyklu sa vyhodnotí ako false . Pretože 10 nie je menej ako 10.

Slučka teda beží dovtedy, kým je splnená podmienka slučky. Vyzbrojení týmito znalosťami môžete vytvárať zložitejšie a funkčné cykly. Iterujme pole:

Názvy reťazcov = ("Doc", "Dopey", "Hanlivý", "Nevrlý", "Kýchavý", "Ospalý", "Happy"); int index = 0; zatiaľ čo (index< names.length) { System.out.println(names); index++; }

Koncept tohto príkladu je podobný predchádzajúcemu. Inicializujeme počítadlo slučiek a začneme iterovať pole, kým sa nezobrazia všetky prvky. Výsledkom je, že iterovanie cez polia je celkom bežné a Java má na to vhodnejšiu konštrukciu, cyklus For.

slučka do-while

Cyklus while do Java je podobný cyklu while, ale má dôležitý rozdiel: na rozdiel od while sa tu podmienka kontroluje na konci každej iterácie. To znamená, že cyklus do-while sa vždy vykoná aspoň raz:

do ( // telo cyklu ) while (podmienka);

Príklad

do-while najskôr vykoná telo cyklu a potom vyhodnotí jeho podmienky. V závislosti od výsledku sa slučka zastaví alebo začne ďalšia iterácia. Pozrime sa na jednoduchú hru na uhádnutie názvu:

Scanner scanner = new Scanner(System.in); String hádanie; do ( System.out.print("Uhádni názov: "); uhádni = scanner.nextLine(); ) while (!"Daffy Duck".equals(uhádni)); System.out.println("Gratulujem! Uhádli ste moje meno!");

Tento príklad Java používa skener na analýzu vstupu z system.ini . Toto je štandardný vstupný kanál, ktorý vo väčšine prípadov spolupracuje s klávesnicou. Jednoducho povedané, len čítame text, ktorý hráč zadá.

Hra vyžaduje, aby ste sa používateľa spýtali aspoň raz, a to tak dlho, kým hráč zadá správne odpovede. Pre takéto prípady je ideálna slučka do-while. V tele cyklu dostaneme užívateľskú hodnotu a následne sa kontroluje správnosť odpovede. Slučka by mala bežať, kým sa vstup používateľa nebude rovnať Daffy Duck . Ak dostanete správnu odpoveď, slučka sa zastaví a my gratulujeme hráčovi k víťazstvu.

Na záver

Java a skutočné slučky vám umožňujú použiť útržky kódu viackrát. Dnes sme sa zoznámili so slučkami while a do-while v jazyku Java. Sú podobné v tom, že testujú podmienky a vykonávajú telo cyklu, ak sa podmienka vyhodnotí ako pravdivá. Ale zároveň majú významný rozdiel: podmienka cyklu while sa kontroluje pred iteráciou a podmienka cyklu do-while sa kontroluje na konci každej iterácie. To znamená, že cyklus do-while sa vždy vykoná aspoň raz.

Táto publikácia je prekladom článku " Cyklus počas a do-While v jazyku Java za päť minút» pripravil priateľský projektový tím