Kým skutočný java nekonečný cyklus. Cyklov v Jave.

  • 29.07.2019

Premýšľali ste niekedy o tom, prečo sú vôbec programy? Ak zjednodušujete a sumarizujete odpoveď na túto otázku, ukáže sa, že programy sú potrebné na automatizáciu pracovného toku, zvýšenie rýchlosti práce vykonanej, prinášajúcu osobu z tisícov monotónnych akcií a tak ďalej. Zamerajte sa na opakujúce sa na seba, alebo hovoriť jednoduchými cyklami.

Cyklus je sekvenčná implementácia opakujúcich sa akcií založených na danej preradení. Napríklad, musíte zmeniť usporiadanie sto boxov z jedného rohu do druhého. Ak je to nejako napísané v jazyku Java (bohužiaľ, Java boxy nebudú môcť zmeniť pre vás), potom to bude záznam v sto riadkoch:

1. Vezmite box číslo 1 a dajte do iného uhla;
2. Urobte si box číslo 2 a vložte do iného uhla;
3. Urobte si box číslo 3 a vložte do iného uhla;

100. Vezmite box číslo 1 a vložte do iného uhla;

Jedna sto riadkov kódu je už veľa, ale tam je tisíc, dva, tri a tak ďalej. Na tieto účely, a to zjednodušiť záznam opakovaných akcií a slúžiť cyklom.

Existujú traja operátori zastupujúce cykly v jazyku Java - to je zatiaľ, robiť / biele a pre. Každý z prevádzkovateľov je potrebný vo svojej situácii, ale stále používa na vyhlásenie. Zvážiť, aby každý z prevádzkovateľov.

Operátor kolesa

Rekordér syntaxe Zatiaľ čo operátor vyzerá takto:

Kým (podmienka) (// akcie)

Tam je tiež určitá predpoklad podmienok, ale na rozdiel od vyhlásenia IF / ELS, tento dizajn je postavený na kontrolných cykloch podmienok. Keď sa program prichádza na položku, keď je navrhovaná podmienka pravdivá, vykonanie všetkých činností v bloku z kučeravých zátvoriek (...). Po vykonaní týchto akcií program opäť vykoná ďalšie testovanie stavu po ukončení prehľadu a ak je stav opäť pravdivý, akcia sa opätovne vykoná v bloku. Akcie v bloku sa vykonávajú, kým sa stav nestane nepravdivým a potom z toho vyplýva z tohto cyklu.
Na ukončenie cyklov sa najčastejšie používajú takzvané počítadlá. Zvážte veľký príklad:

Int i \u003d 0; Kým.< 10) { // действия i++; }

Po prvé, premenná I je priradená hodnota 0, potom sa kontrolujú podmienky I0)

(// akcie I--;)

Rovnaké akcie, ale v opačnom smere. Okrem toho, v priebehu cyklu (a na všetkých ostatných cykloch) je možné použiť booleovské premenné obsahujúce falošné alebo skutočné hodnoty. V tomto prípade je overená určitá predpoklad.

Boolean i \u003d true; Zatiaľ čo (i) (// akcie)

Premenná I je pravdivá, je priradená k TRUE, takže zatiaľ čo cyklus sa vyskytuje, až kým sa variabivá bude priradená k false. Preto je potrebné starať sa o výstup takéhoto cyklu, inak sa počas cyklu uskutoční nekonečne a takéto cykly sa nazývajú nekonečné cykly.

Nakoniec chcem tiež upriamiť vašu pozornosť na operátora rovnú \u003d\u003d. Ak takto napíšete cyklus týmto spôsobom:

Int i \u003d 0, zatiaľ čo (i \u003d\u003d 5) (// akcie I ++;)

Učníva celkom funkčný cyklus, ale ak urobíte chybu alebo v zvyku, používame klasickú verziu operátora, ktorá sa rovná \u003d používaná v matematike, potom budete mať problém vo forme nekonečného cyklu.

Int i \u003d 0, zatiaľ čo (i \u003d 5) (// akcie I ++;)

V predpokladu, hodnota premennej I je priradená k hodnote 5 a táto akcia nie je zakázaná a čo skončíme? Vykonanie tohto cyklického bloku začne na konci toho, ktorá hodnota budem zvýšiť po jednom, ale v predpokladu po tom, čo počas operátora, bude premenná V pridelená na päť a cyklus bude pokračovať v práci do nekonečna. Toto je príklad jednoduchého nekonečného cyklu a ako výsledok, klasická chyba, ktorá sa deje veľmi často s programami začiatočníkov.

Do / počas cyklu

Celý cyklus sa práve uvažoval, za určitých podmienok nemusí zarobiť. Napríklad, ak je stav spočiatku false, cyklus nebude dokončený. Program, ktorý dosiahne kód kódu s týmto operátorom, skontroluje stav a ak sa rovná false, ignoruje celý cyklus a ihneď kódu ihneď za tým, zatiaľ čo cyklus. Ale niekedy je potrebné vykonať cyklus aspoň raz. Na tieto účely v JAVA je to / zatiaľ čo cyklus. Nahrávanie a vytvorenie a vytvorenie cyklu je nasledovné:

Urobte (// akcie), zatiaľ čo (stav)

Medzi cyklotrasom je cyklický orgán medzi a zatiaľ čo prevádzkovatelia, ktoré budú vykonané až do post-the, zatiaľ čo je falošne. Cyklistické teleso sa vykoná aspoň raz, potom sa bude podmienka skontrolovať. DO / ZAHRNUTÝ CYKLÁ sa nepoužíva často, ale niekedy sa ukázalo byť nevyhnutné.

Cyklus

Toto je najbežnejší cyklus v programovaní. Prevádzka pre cyklus je založený na riadení počítadla. Význam práce tohto cyklu je podobný, zatiaľ čo a robiť / zatiaľ čo cykly diskutované vyššie. Pozrite sa, čo je syntaxe záznam cyklu pre:

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

Po pre kľúčové slovo sa nasleduje stav cyklu. Rovnaký stav kombinuje tri stupne. Najprv postupujte podľa inicializácie metra I \u003d 0, potom overenie stavu i< 10 и в конце увеличение переменной i на единицу.

Funguje pre cyklus nasledovne. Keď sa program príde na cyklus, merač je inicializovaný I \u003d 0 a stav I je skontrolovaný< 10. Далее программа переходит в тело цикла. По окончанию всех действий в цикле for, происходит обращение к третьему этапу цикла: i++, увеличивая счетчик на единицу. После чего сразу же происходит переход ко второму этапу – проверке переменной i < 10 и повторный выход в тело цикла. Весь цикл продолжается до тех пор, пока условие i < 10 не станет ложным. Цикл for используется постоянно при инициализации массива данных, где без него очень сложно, а порой и не возможно обойтись. Так же как и в цикле while возможно использование оператора декремента, например.

Cyklus je násobne opakovaný fragment programu.

V jazyku Java, existujú dva typy cyklov: napríklad "zatiaľ čo" a zadajte "n-time".

Prvý typ "Kým" je navrhnutý tak, aby zopakoval nejakú akciu, kým sa nevykonáva určitá podmienka. Príklad: Ak chcete zvýšiť číslo 5, kým sa nestane trojmiestnym.

Druhý typ "n-time" je určený na opakovanie niektorých opatrení vopred určitý počet časov. Príklad: Vynásobte samotné číslo 4-krát.

Typ "Kým" (zatiaľ čo ... zatiaľ čo prevádzkovatelia)

Zatiaľ čo vyhlásenie opakuje zadané akcie, kým jeho parameter nie je pravdivý.

Takýto cyklus sa napríklad vykoná 4-krát a na obrazovke sa zobrazí "1 2 3 4":

Int i \u003d 1; Kým.< 5) { System.out.print(i + " "); i++; }

Takýto cyklus nie je nikdy dokončený a obrazovka nebude čokoľvek,

Int i \u003d 1; Kým.< 0) { System.out.print(i + " "); i++; }

Takýto cyklus bude vykonaný nekonečne, a "1 2 3 4 5 6 7 ..." sa zobrazí na obrazovke:

Int i \u003d 1; Zatiaľ čo (true) (System.out.Print (I + "); i ++;)

Stav určujúci, či sa cyklus opäť opakuje, skontroluje sa pred každým krokom cyklu, vrátane pred prvým. Povedz, čo sa stane prepracovaný Podmienky.

Sa stane cyklom typu "zatiaľ čo" post-výborný Podmienky. Používa dizajn od operátorov do ... zatiaľ čo.

Takýto cyklus bude vykonaný 4-krát a na obrazovke sa zobrazí "2 3 4 5":

< 5);

Tento cyklus bude vykonaný 1 čas a na obrazovke sa zobrazí "2":

Int i \u003d 1; DO (I ++; System.out.Print (I + ");) Kým (I< 0);

Telo cyklu ... zatiaľ čo sa vykonáva aspoň raz. Tento prevádzkovateľ je vhodný na použitie, keď sa musí vykonať nejaká akcia v programe aspoň raz, ale za určitých podmienok to bude musieť opakovane opakovať.

Pozrite sa na nasledujúci program (to robí náhodné celé číslo zo segmentu a požiada ho používateľa, aby ho uhádol, zadaním možností z klávesnice, kým užívateľ odhaduje číslo, program ho navrhne, rozpráva viac či menej ako počet tajomstiev Ako zadaný používateľ):

Dovoz java.util.Scanner; Trieda Trieda Trieda (String Static Void Main (String Args) (// PROG - číslo vytvorené programom // Užívateľ - číslo int PROG zadané užívateľ, používateľ; // generovať náhodné celé číslo od 1 do 10 PROG \u003d (INT) ( Matematika. Náhodné () * 10) + 1; System.out.printLN ("Myslím, že číslo od 1 do 10, hádajte to."); System.out.Print ("Zadajte svoje číslo:"); vstup skenera \u003d Nový skener (System.in); // Skontrolujte, či sa nachádza celé číslo, ak (Input.Hasnextint ()) v vstupnom toku (do (// Prečítajte si z vstupného toku Integer Užívateľ \u003d Input.Nextint (); ak ( Užívateľ \u003d\u003d PROG) (System.out.PrintLN ("uhádol ste!");) inak (// kontrolu, či číslo v rezu (používateľ\u003e 0 && user<= 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("До свиданья!"); } }

Zadajte nasledujúce zdokonalenie programu:

    Program by mal urobiť niekoľko non-segment, ale celé číslo zo segmentu od [-10; 10], s výnimkou nuly. Zároveň sa snažte distribúciu náhodných čísel programu generovaného uniformom (tj v prípade nula, nie je možné ho jednoducho nahradiť nejakým iným číslom, napríklad, pretože potom 1 bude vypadnúť s dvojnásobným časom, ako sa počet odpočinku).

    Program by mal vyzvať používateľa, že sa mýli v označení, ak program poskytol kladný počet a používateľ predstavil negatívny. A naopak.

Zadajte typ "N-raz" (operátor pre)

Vyhlásenie o vyhlásení obsahuje tri parametre. Prvá sa nazýva inicializácia, druhá - podmienka opakovania, tretieho iterácie.

Pre (inicializácia; stav; iterácia) (// telesného cyklu, t.j. akcie opakovateľné cyklické)

V prvom parametri sa zvyčajne zvolí nejakú premennú, s ktorou sa vypočíta počet opakovaní cyklov. Nazýva sa pult. Počítadlo Nastavenie počiatočnej hodnoty (uveďte, počnúc akou hodnotou sa zmení).

V druhom parametri určitý limit na počítadle označuje (uveďte, akú hodnotu sa zmení).

V treťom parametri uveďte výraz, ktorý mení merač po každom kroku cyklu. To je zvyčajne prírastok alebo zníženie, ale môžete použiť ľubovoľný výraz, kde merač bude pridelený nový význam.

Pred prvým krokom cyklu je merač priradený počiatočná hodnota (inicializácia sa vykonáva). To sa deje len raz.

Pred každým krokom cyklu (ale po inicializácii) sa kontroluje stav opakovania, ak je to pravda, cyklus sa opäť vykonáva. Zároveň sa cyklický orgán nemusí vykonať, ak je stav nepravdivý v čase prvej kontroly.

Po dokončení každého kroku cyklu a pred nasledujúcim štartom (a to znamená, že iterácia sa vykonáva pred kontrolou podmienok opakovania).

Predložený program zobrazuje číslo od 1 do 100:

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

Predložený program zobrazuje číslo od 10 do -10:

Pre (int s \u003d 10; s\u003e -11; s--) (systém.out.Out.print (S + ");)

Predložený program zobrazuje nepárne čísla od 1 do 33:

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

Predložený program vypočíta množstvo prvkov fragmentu sekvencie 2, 4, 6, 8, ... 98, 100. Takže:

Int suma \u003d 0; // tu budeme hromadiť výsledok (int j \u003d 2; j

Prezentovaný program zvýši počet z premennej a. Prirodzeným stupňom z premennej n.:

Dvojitý a \u003d 2; int n \u003d 10; Double Res \u003d 1; // tu budeme hromadiť výsledok (int i \u003d 1; i<= n; i++) { res = res * a; } System.out.println(res);

Predložený program sa zobrazí 10 prvých prvkov prvkov sekvencií 2N + 2, kde n \u003d 1, 2, 3 ...:

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

Predložený program zobrazí 10 prvé prvky sekvencie 2a n-1 +3, kde A 1 \u003d 3:

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

V jednom cykle môžete nastaviť niekoľko metrov naraz. V tomto prípade je niekoľko výrazov v iteráciách a inicializácii oddelené čiarkami. Stav opakovania môže byť definovaný len jeden, ale môže to byť expresia obsahujúca niekoľko metrov naraz.

Predložený program zobrazí 10 prvé prvky prvkov sekvencií 2A N-1-2, kde 1 \u003d 3:

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

Predložený program zobrazí túto sekvenciu "0 -1 -4 -9 -16 -25":

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

Dokončenie včasného cyklu (Prestávka)

Ako cyklus typu ", zatiaľ čo" a cyklus typu "n-time" možno dokončiť skoro, ak obsluha volať do tela cyklu prestávka. Zároveň dôjde k okamžitému výstupu z cyklu, aj aktuálny krok nebude dokončený (t.j., ak po prestávke, boli vykonaní niektorí iní operátori, nie sú popravení).

V dôsledku ďalšieho príkladu sa na obrazovke zobrazia iba čísla "1 2 3 4 koncové":

Pre (int a \u003d 1;

Keď program vykoná cyklus na piatykrát (vstúpi do cyklu s pultom rovným 5), okamžite sa skontroluje a bude to pravda, pre ktorú bude prevádzkovateľ prerušenia vykonaný. Zostávajúca časť telesa cyklu (výstup na obrazovku) sa nebude vyrábať: program sa okamžite presunie na prevádzku operácií špecifikovaných po cykle a nižšie.

Pomocou operátora prestávky môžete prerušiť zjavne nekonečný cyklus. Príklad ("100 50 25 12 6 3 1 0" sa zobrazí na obrazovke a potom, čo sa cyklus zastaví):

Int s \u003d 100; Zatiaľ čo (true) (systém.out.Ort (S + "); S \u003d S / 2; ak (s \u003d\u003d 0) (prestávka;))

Prevádzkovateľ prestávky má zmysel volať len vtedy, keď existuje nejaká podmienka, inak bude cyklus dokončený pred harmonogramom v prvom kroku.

Int a; Pre (A \u003d 25; A\u003e 0; A-) (Break; System.out.Print (A + ");) System.out.Print (" A \u003d "+ A);

Vo vyššie uvedenom príklade sa výstup v cykle nikdy nestane, a keď je premenná a. Po cykle sa zobrazí na obrazovke po cykle, ukáže sa, že jeho hodnota sa nikdy nezmenilo, t.j. Bude odvodený "A \u003d 25" (a nič viac).

Venujte pozornosť tiež skutočnosti, že premenná bola vyhlásená pred začiatkom cyklu. Keď je premenná deklarovaná v parametroch cyklu, ukázalo sa, že je neprístupné pre svoje pokroky, av tomto prípade to bolo iné - aby sa zistilo, akú hodnotu by bola na pult po ukončení.

Úlohy

    Vytvorte program, ktorý sa zobrazí na obrazovke všetky štvormiestne čísla sekvencií 1000 1003 1006 1009 1012 1015 ....

    Vytvorte program, ktorý zobrazuje prvých 55 prvkov sekvencie 1 3 5 7 9 11 13 15 17.

    Vytvorte program, ktorý zobrazuje všetky negatívne prvky sekvencie 90 85 80 75 70 65 60 ....

    Vytvorte program zobrazujúci prvé 20 sekvenčných prvkov 2 4 8 16 32 64 128.

    Zobrazte všetkých členov 2A N-1-1 sekvencie, kde A 1 \u003d 2, ktorý je menší ako 10 000.

    Výstup všetkých dvojciferných členov 2A N-1 + 200 sekvencie, kde A1 \u003d -166.

    Vytvorte program, ktorý vypočíta faktoriál prirodzeného čísla n, ktorý používateľ zadá klávesnicu.

    Zobrazenie všetkých pozitívnych rozdielov prirodzeného čísla zadané užívateľom z klávesnice.

    Skontrolujte, či je prirodzené číslo zadané z klávesnice jednoduché. Snažte sa nerobiť zbytočné akcie (napríklad potom, čo ste našli aspoň jeden netriviálny delič, je už jasné, že počet kompozitných a šek nemusí pokračovať). Tiež si všimnite, že najmenší prirodzený delič n, ak je všeobecne k dispozícii, sa určite nachádza v segmente.

    Vytvorte program, ktorý sa zobrazí na obrazovke 12 prvého prvku 2A N-2-2 sekvencie, kde A1 \u003d 3 a A2 \u003d 2.

    Zobrazte prvých 11 členov sekvencie Fibonacci. Pripomíname vám, že prvý a druhý člen sekvencie sa rovná jednotkám a každý druhý - súčet dvoch predchádzajúcich.

    Pre užívateľa zadané z klávesnice zvážte súčet všetkých svojich čísel (vopred nie je známy, koľko číslic bude medzi).

    V meste N, cestovanie v električke sa vykonáva na papieri odtrhávacích lístkov. KAŽDÝ TÝŽDEŇ JE KAŽDÝ TÝŽDEŇ OBJEDNÁVKA V MIESTNOM TYPOŽSTVO TYPOŽNOSTI LISTSTROVSTUJÚCICH VSTUPENÍCH TÝKAJÚCE SA ČÍSLAMI ZAPOJENÝCH VSTUPUTOKU NA 999999 Posledné tri číslice, ako napríklad v vstupeniek s číslami 003102 alebo 567576. TRAM Depot sa rozhodol prezentovať suvenír s vlastníkom každého šťastného lístka a teraz váha, koľko suvenírov bude potrebovať. Používanie programu, vypočítajte, koľko šťastných lístkov v jednom role?

    V meste n je veľký sklad, na ktorom je 50 000 rôznych políc. Pre pohodlie pracovníkov sa vedenie skladu rozhodlo objednať pre každú poličku tanier s číslom od 00001 na 50 000 v miestnom tlačiarni, ale keď boli známky vytlačené, ukázalo sa, že tlačový lis nevytlačil číslo 2 Kvôli poruche, takže všetky príznaky, ktoré obsahovali jeden alebo viac dvoch (napríklad 00002 alebo 20202) - je potrebné vytlačiť. Napíšte program, ktorý vypočíta, koľko takýchto chybných tabliet sa ukázali byť v chybnej strane.

    Elektronické hodiny ukazujú čas vo formáte od 00:00 do 23:59. Vypočítajte, koľkokrát denne sa stáva, že symetrická kombinácia je zobrazená na ľavej strane hrubého čreva pre ten, ktorý prst hrubého čreva (napríklad 02:20, 11:11 alebo 15:51).

    V americkej armáde sa považuje za nešťastné číslo 13 av japončine - 4. Pred medzinárodnými učenia sa ústredie ruskej armády rozhodla odstrániť počet vojenských zariadení obsahujúcich čísel 4 alebo 13 (napríklad 40123, 13313, 12345 alebo 13040 ) tak, aby nestabilizovali zahraničných kolegov. Ak má armáda 100 tisíc jednotiek vojenského vybavenia a každý bojový stroj má číslo od 00001 do 99999, koľko otázok bude musieť byť vylúčené?

2010, Alexey Nikolayevich Kostin. Katedra TIDM matematickej fakulty MPGU.

V Java, rovnako ako v takmer akomkoľvek programovacom jazyku, existujú nástroje na zabezpečenie viacnásobného opakovania určitého kódu fragmentu, alebo ako sú obvyklé, cykly. Java cykly sú reprezentované takýmito operátormi a zatiaľ čo ich odrody. Cykly sa spravidla používajú na prechádzanie jednorozmerných a multidimenzionálnych polí a štruktúr USing dát (vrátane zbierok) s cieľom nájsť určité prvky a ďalšie operácie s nimi. Toto však nie je jediný spôsob, ako použiť takýto nástroj ako java cyklus. Príklady použitia budú rešpektované, keďže sú zvážené.

Java: Popis a príklady

Základný cyklus prevádzkovateľom v Jave je. Kód fragment uzavretý v jeho tele bude opakovaný, kým stav expresie uzavretého v držiaku uspokojí logickú hodnotu pravdy. Spoločná forma, zatiaľ čo prevádzkovateľ má nasledujúci formulár:

kým (stav) (

// Body Cycla

Akonáhle hodnota logického stavu prestane byť pravdivá, kód zadaný do tela sa zastaví a kontrolu bude prenesené ihneď po ňom.

Ak je len jeden operátor uzavretý v telesnom cykle, potom sa nedajú dať kučeravé konzoly, ale je to považované za dobrý tón, ak to vždy stojí za to. Obrázok vyššie zobrazuje blokovú schému prevádzky tohto operátora.

Pre jasnosť, poďme analyzovať príklad zobrazený na obrázku nižšie:

Deklarovaná premenná počítadla má pôvodne hodnotu 1. Ďalej, vidíme logický výraz uzavretý v zátvorkách po názve operátora. Bude to pravda, t.j. Vrátiť skutočnú hodnotu, kým hodnota premennej počítania nebude menšia alebo rovná 10. V telesnom telese s každým prevodom (iterácia) sa premenná hodnota zvýši o 1 a zobrazí sa na obrazovke konzoly. Upozorňujeme, že keď hodnota premennej dosiahla 11, cyklus sa zastavil.

Ak bola hodnota premennej počítania spočiatku 11, stav cyklu by bol falošný a program by ani nešiel do svojho tela.

Stojí za zmienku, že Java Syntax vám umožňuje používať operátor bez tela. Uveďte príklad. Predpokladajme, že máme dve premenné I \u003d 100 a J \u003d 200, čelíme úlohu programovatkom počítajúcom ich aritmetickému priemeru - pre to môžete použiť "Hollow", zatiaľ čo:

zatiaľ čo (++ i< --j);

V dôsledku toho sa hodnota niektorého z dvoch premenných bude rovná priemeru ich počiatočných hodnôt. Ako vidíte, cyklus fungoval perfektne bez tela a vykonal všetky potrebné opatrenia v konvenčných podmienkach.

Cyklus

V predchádzajúcich príkladoch, ak podmienený výraz pôvodne vrátil hodnotu falošného, \u200b\u200bprogram by ignoroval telo cyklu a ďalej. Avšak, tam sú často situácie, v ktorých bude vykonávanie kódexu obsiahnutého v tele cyklu nevyhnutne aspoň raz bez ohľadu na pravdu podmieneného výrazu. Inými slovami, stane sa, že kontrola pravdy podmieneného výrazu sa nevyžaduje na začiatku, ale na konci cyklu. Takáto funkčnosť môže poskytnúť typ, zatiaľ čo cyklus nazývaný. Má nasledujúci formulár:

robiť (
// Body Cycla

) Zatiaľ čo (stav);

Ako vidíme, telo cyklu je najprv pre vykonanie, a len potom pravda o stave je kontrolovaná - a tak každá iterácia.

Vyššie uvedený kód bude fungovať v približne rovnakom ako v prípade konvenčného miesta. Avšak, ak sme priradili hodnotu premennej počítania 11, telo cyklu by sa ešte raz skontrolovalo, predtým, ako bol prevádzkovateľ skontrolovať pravdu výrazu.

Popis a príklady pre - Java cyklus

Je to univerzálna a efektívna jazyková forma v Java. Pred piate verziou Java SDK bola len jedna tradičná forma pre operátora pre operátora, a po tom, čo sa objavil nový. V tejto časti sa oboznámeme s tradičnou formou operátora. Pre cyklus Java má nasledujúci formulár:

Pred odoslaním ovládania do kódu v telesnom tele, premenná I inicializácia vykonáva ako počítadlo. Ďalej je podmienený výraz skontrolovaný, v ktorom sa počítadlo porovnáva s určitou hodnotou, a ak sa vráti TRUE, cyklus sa vykonáva. Potom sa počítadlo zmení na vopred určený krok a opäť skontroluje podmienená expresia, a tak, kým sa stav nestane nepravdivým. Nižšie uvedený blokový diagram ilustruje všetky stupne cyklu.

Pre lepšie porozumenie uvádzame príklad, ako funguje pre Java cyklus práce:

Vidíme, že ako počítadlo sa používa variabilný loopval. Po každej iterácii cyklu bude jeho hodnota rásť o 1, a to sa uskutoční, kým nedosiahne 11. Upozorňujeme, že kontrolná premenná môže byť oznámená a mimo bývalého operátora, ale ak nebudete túto premennú používať kdekoľvek S výnimkou cyklu sa odporúča ho priamo vyhlásiť do prevádzkovateľa. Majte na pamäti, že premenná deklarovaná v samotnom prevádzkovateľoch má rozsah pôsobnosti v tomto cykle.

Existujú situácie, keď potrebujete deklarovať niekoľko variabilných kontroly cyklu. Pre cyklus Java vám umožní zadať dve alebo viac premenných cez čiarku a urobiť to v ich inicializácii aj vterácii. Takáto prevádzkovateľ bude mať nasledujúci formulár:

pre (int i \u003d 1, int j \u003d 10; i< j; ++i, --j) {}

V každej iterácii sa hodnota premennej zvýšila o 1 a hodnota premennej J znížená o 1. iterácie sa bude vykonávať, kým sa nedostane väčší alebo rovný j.

Vlastnosti aplikácie prevádzkovateľa

Pre cyklus je pomerne flexibilnú štruktúru, pretože všetky tri časti (inicializácia, stav a prírastok / znižovanie) nie je možné použiť priamo. Napríklad namiesto podmieneného výrazu s riadiacou premennou môžete nahradiť akúkoľvek logickú premennú.

boolean exit \u003d false;

pre (int i \u003d 0 ;! exit; ++ i) (

Na uvedenom príklade môžeme pozorovať, ako je prevádzka cyklu úplne nezávislá od kontrolnej premennej I a počet iterácií závisí výlučne na akom momente premenná výstupu bude akceptovať pravdivý. Okrem toho môže byť kontrolná premenná odstrániť vôbec z cyklu a to neovplyvní jeho prevádzku: pre (;! Výstup;) (). Aj keď to nie je najodôvodnejším spôsobom programovania, niekedy to môže byť užitočné. Hlavnou vecou je poskytnúť situáciu, v ktorej premenná bude mať hodnotu potrebnú na opustenie hodnoty, aby ste ju nekonečnili na nekonečnú.

Pre cyklus Java môže byť takýmto spôsobom vyhlásený: pre (;) (). Ide o typický príklad nekonečného cyklu so špeciálnymi podmienkami prerušenia. O tom, ako prerušiť tento druh cyklov, budeme hovoriť o niečo neskôr.

Cyklus pre každého

Cyklus Foreach Java sa vždy používa na konzistentné bustovanie prvkov poľa alebo akéhokoľvek a vykonávať určité opakované operácie nad nimi. Príklad tejto formy pre operátora pre operátora je uvedený nižšie:

Názov je vyhlásený za iteratívnu premennú a predtým deklarované pole riadkov názvov pôsobí ako druhý argument prevádzkovateľa. Názov premenná striedavo vyberie hodnoty každého prvku poľa, kým nie sú extrahované všetky jeho prvky. Treba poznamenať, že typ premennej musí byť kompatibilný s typom prvkov, ktoré sú uložené v poli. Názov premennej je tiež k dispozícii výlučne na čítanie a pokus o jeho zmenu nevedie k zmene samotného prvku v poli.

Prevádzkovatelia prerušenia cyklu

Existujú traja operátori prerušenia cyklu: Prestávka, návrat a pokračovať. Prvé dvaja sú schopné úplne prerušiť prevádzku cyklu a pokračujte v prerušení len prevádzky aktuálnej iterácie. Ak používate vo svojom kódexe zámerne nekonečným java cyklu, títo operátori musia byť prítomní v ňom. Zvážte jednoduchý príklad použitia prestávky:

Aj keď v tomto prípade pre vyhlásenie, 11 iterácií sa poskytne, bude vykonaná len 8, pretože keď je meter I rovný 7, stav bude fungovať, v ktorom je prestávka prevádzkovateľa.

Operátor návratu pôsobí podobným spôsobom, s tým rozdielom, že nielenže poskytne cestu von z java cyklu, ale aj z metódy, na ktorú je tento cyklus umiestnený.

Pomocou prestávky ako goto

Treba mať na pamäti, že zlom prerušuje prácu len cyklu, v tele, ktorých je priamo umiestnený, t.j. Ak ho používate v pripojenom cykle, externý cyklus neprestane fungovať. Na tento účel môže byť operátor break použitý ako civilizovaný goto.

V tomto uskutočnení sa tento operátor používa v balíku so štítkom, ktorý vám umožní usporiadať výstup nielen z cyklov, ale aj z akéhokoľvek kódu bloku. Štítok je zodpovedajúci identifikátor pomenovaný s kolóniou po ňom. Štítok je vyhlásený na začiatku uzavretého kódu. Prerušiť vykonanie označeného bloku, na správnom mieste, ktoré potrebujete na deklarovanie: Break Name_Name. Zvážte príklad na obrázku nižšie:

Tri bloky sú vyhlásené v kóde s názvami jedného, \u200b\u200bdvoch a troch. Prerušovací operátor s dvomi štítkami je investovaný do všetkých troch blokov, ale keď sa spustí, program vyjde z troch a dvoch blokov a bude pokračovať v vykonávaní v jednom bloku. Tí. V konzole uvidíme dve správy: tri a jedno.

Záver

Zoznámili sme sa s koncepciou cyklov v Java, hlavných prevádzkovateľoch whele a pre, ako aj ich formy a pre každého. Pre lepšie porozumenie odporúčame vykonávať cvičenia s využitím údajov prevádzkovateľov v rôznych formách, ako aj rôzne metódy ich prerušenia a prechod z jedného bloku do druhého.

Cyklus je blok príkazov, ktoré sa vykonávajú znova a znova, keď sa nasleduje určitá podmienka. Opakovaný fragment kódu sa nazýva "telo cyklu". Jednorazové cyklistické telo sa nazýva iterácia.

V Yave môžete pracovať s niekoľkými typmi cyklov - na to existujú nasledujúce operátori:

zatiaľ čo- Cyklus S. provotovať - Najprv skontrolujte stav, potom vykonajte telo cyklu;

robiť ... zatiaľ čo - Cyklus S. postcondition - Najprv vykonáme telo cyklu raz, potom skontrolujeme stav a ak je pozorovaný, pokračujte;

pre - Cyklus s pultom sa vykonáva a pri každej aktualizácii iterácie počítadlo, až kým sa nepozoruje stav vyhlásenia cyklu (t.j. stav kontroly vrátenia pravdu);

skrátený (V iných jazykoch, známej ako Foreach) - prechádza poľa z prvého prvku, až kým druhá a na každú iteraciu vykonáva telo cyklu.

Podstatou podmienok cyklu - kontrola výrazu s jedným alebo viacerými premennými: "zatiaľ<11, в каждой итерации выполняем тело цикла и увеличиваем "а" на 1». Но чему равно «а» при первом выполнении цикла?

Ak používame konštrukcie, zatiaľ čo hodnota musí byť špecifikovaná pred začiatkom cyklu:

int a \u003d 1;

Kým (A.< 11) {

System.out.PrintLN (A);

A ++; // Zvýšte jednotku

}

Ak premenná funguje ako cyklický pult, a nepoužíva sa mimo nej, inicializuje sa priamo v stave. A okamžite napíšte, čo s ním robiť na konci každej iterácie. To všetko je jedno riadok - s:

pre (A \u003d 1, A<11, i++) {

System.out.PrintLN (A);

}

Získať rovnaký výsledok. Zoznam bol spustený od nuly alebo z negatívnej hodnoty - rozsah je určený samotnými.

Skrátená verzia cyklu neobsahuje žiadne opakovanie alebo akcie na konci kroku. Cyklus foreachového typu sa používa na vymenovanie polí. Z prvého prvku sa musíte presunúť na nasledujúce - až kým pole skončí.

ints \u003d (1, 2, 3, 4); // Vytvorte pole

int s \u003d 0;

pre (INT I: MS) (// špecifikujeme tento druh

s * \u003d i; // dôsledne meniť prvky

}

System.OUT.TRINTLN (y);

Vnorené java cykly

Cykly môžu byť vložené jeden do druhého. Zároveň sa vynásobí počet opakovaní vonkajších a vnorených cyklov. Ak sa musí externe vykonať 5-krát a vnútorný - 5, celý cyklus bude vykonaný 25-krát.

Vyberte multiplikačnú tabuľku pomocou dvoch polí:

Int a, b, výsledok \u003d 0;

pre (a \u003d 2;< 10; a++) {

Pre (b \u003d 2; b< 10; b++) {

Výsledok \u003d A * B;

System.out.PrintLN (A + "X" + B + "\u003d" + výsledok);

}

}

Vytvorenie objektov v cykle Java

Cykly sú vhodné, keď potrebujete vytvoriť a znecitliviť veľa objektov. Ich číslo nie je vopred neznáme: Objekty môžu byť vytvorené na požiadanie používateľa. Spýtali sme sa, koľko je potrebné niečo, a číslo bolo zaznamenané v Nervoske N Teraz vytvorte objekty v požadovanom čísle:

Niečo pole \u003d nové [n]; // Vytvorte pole typu "niečo" z n prvkov

pre (int i \u003d 0; ja< n; i++){

Pole [i] \u003d nové () niečo (); // vytvoriť "niečo" a dať ho do poľa

}

Ako sa dostať z cyklu Java

Ak chcete ukončiť cyklus Tam sú kľúčové slová prestávky - "prerušenie", pokračujte - "návrat" a návrat - "návrat". Príkaz zlomu prepne program na vykonanie nasledujúceho cyklu operátora. Podmienky prerušenia cyklu v jazyku Java sú vypracované prostredníctvom IF-vetvenia. Hlavnou vecou je, že kontrola sa vykonáva pred hlavnou časťou cyklického tela.

// Po vytvorení poľa m sme písali:

Pre (a: m) (

ak (a \u003d\u003d 5) prestávka;

System.out.PrintLN (A);

}

Prevádzkovatelia pobočiek a cyklov v Jave často pracujú spoločne: Spustite cyklus, a vo vnútri Skontrolujte, či stav nie je splnená, na ktorej je potrebné prerušiť cyklus alebo urobiť niečo iné.

Ak používate prestávku v pripojenom cykle, bude len prerušiť a externá bude pokračovať.

Pre skoré prerušenie iterácie pokračuje pre cyklus v jazyku Java. Keď príde program, zmešká nenaplnenú časť iterácie, aktualizuje pult a pokračuje na ďalšiu iteráciu.

V konštrukciách, zatiaľ čo rovnaké funguje inak: vráti nás, aby sme skontrolovali podmienky na pokračovanie cyklu. Ďalším príkazom sa vráti - vráti program na miesto, kde sa nazýva metóda, v ktorej sa cyklus nachádza.

A pokračovať a prestávka môže byť použitá so štítkom - ísť na požadovanú časť kódu - analógiou s GOTO:

Break Mark1; // za predpokladu, že niekde nad značkou MARK1:

Nekonečný java cyklus

Vytvorenie nekonečného cyklu je jednoduché - nestačí na určenie parametrov pre:

pre (;;) ()

Z toho je ťažšie extrahovať výhody. Zvyčajne nekonečno cyklu je kritická chyba, ktorá interferuje s vykonávaním programu. Preto každý cyklus stojí za to skontrolovať schopnosť správne ukončiť v správny čas. Na to potrebujete:

  • uveďte v podmienkach prerušenia tela cyklu
  • uistite sa, že premenná v stave prerušenia môže mať hodnotu, v ktorej bude cyklus zastavený.

Potrebujete spracovať mnoho rovnakých typov údajov? Potrebujete vypočítať číslo? Potrebujete znásobiť maticu? To všetko a oveľa viac pomôže urobiť cyklus! 🙂 Všetky počítačové systémy boli pôvodne považované za uľahčenie spracovania údajov. A spracovanie veľkého množstva údajov sa nedá predstaviť bez cyklov.

Všeobecne platí, že cykly v programovaní sa vyrábajú na rozdelenie do troch skupín. Prvá skupina je cykly s metrom. V nich sa cyklus cyklus vykonáva niekoľkokrát pôvodne špecifikovaný programátorom. Takýto cyklus je nevyhnutne vykonaný počet krát. Druhá skupina je cykly s predpokladom. Cyklistické teleso sa vykonáva len po kontrole určitého stavu a bude vykonaná, kým tento stav nie je pravdivý. Takéto cykly nesmú byť splnené (ak je stav pôvodne nepravdivý). A tretia skupina cyklov - cykly s postbandom. Najprv vykonali teleso cyklu, potom sa stav skontroluje. Takýto cyklus bude splnený aspoň raz.

Začnime, možno s cyklom s metrom. Java je cyklus tor; Vo všeobecnosti to môže byť napísané:

Pre (primárny stav; konečná podmienka; zmena) (cyklus;)

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

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

takýto program bude postupne zobrazovať číslo od nuly na deväť. Ak trochu viac podrobností, potom jednoducho vytvoríme novú premennú I a priradíme ju počiatočnú hodnotu 0 (int i \u003d 0;). Potom uvádzame, že cyklus musí byť vykonaný až do< 10 и указываем каким образом должно изменяться i после каждой итерации цикла (i++).

Tí, ktorí naprogramovaní v Pascal, potešia takúto príležitosť:

Int k \u003d 15; pre (plavák i \u003d 0; ja

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

Nasledujúci cyklus v riadku - zatiaľ čo. Tento cyklus s predpokladom av všeobecnej forme môže byť napísaný takto:

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

Ak budete mať pracovný príklad, bude to vyzerať takto:

Kým (A.<10) { System.Out.Print(a); a++; }

Takže je jasné, že tento cyklus dáva zmysel používať, ak určite neviete, koľko iterácií je potrebných na dosiahnutie cieľa, ale presne poznáte stav, v ktorom bude váš cieľ dosiahnuť. Takýto dizajn nesmie byť splnený (koniec koncov, je to cyklus s predpokladom)! Koľkokrát sa akcie vykonávajú v cykle, závisí od hodnoty, ktorá bola spočiatku v premennej a..

A tretí typ cyklov sú cykly s pošta. Je veľmi podobný kým ... robia. Iba ak B. kým ... robia. Podmienka sa kontroluje pred vykonaním cyklov cyklu, potom sa stav skontroluje po vykonaní cyklu. To znamená, že cyklus bude vykonaný aspoň raz pred testovaním stavu.