Vnorený cyklus for – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vnorený cyklus for – Java – Fórum – Programujte.comVnorený cyklus for – Java – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
wicked0
Newbie
4. 8. 2013   #1
-
0
-

Zdravím:)

Narazil som na problém ktorý pochoval všetky moje predstavy o cyklení.Hladal som na internete nejaké vysvetlenie ale nikde to nie je nejak popisané takže to skúsim tu.

jedná sa napr. o takýto kód

for(int n = 0; n<2; n++){
for(int m = 0; m<2; m++){
					
					
System.out.println(n + "-" + m + " ");
					
				
				
				
}
 }
		


ktorý vyzerá jednoducho ale zložito píše:)

Vypíše niečo takéto

0-0
0-1
1-0
1-1

moc tomu nerozumiem že prečo zrovna takto.Tie prvé dve nuly sú mi jasné ale prečo nasleduje zase potom nula?

Nahlásit jako SPAM
IP: 78.99.245.–
wicked0
Newbie
4. 8. 2013   #2
-
0
-

A tiež by som bol rád ak by ste vedeli niečo napísať ešte k tomuto kódu. 

	System.out.println("zaciatok");
	navesti:
			
		
	for(int n = 0; n<4; n++){
	for(int m = 0; m<2; m++){
	
        if(n==2 && m ==0)
	continue navesti;
					
					
						
						
System.out.println(n + "-" + m + " ");
					
				
				
				
}
  }


Tiež niečo podobné ale + to tam komplikuje ten príkaz continue

Nahlásit jako SPAM
IP: 78.99.245.–
KIIV
~ Moderátor
+43
God of flame
4. 8. 2013   #3
-
0
-

   

for(int n = 0; n<2; n++){
  for(int m = 0; m<2; m++){
    System.out.println(n + "-" + m + " ");
  }
}


Nevim jake predstavy mas o cykleni, ale chova se to naprosto korektne. Cyklus proste spousti obsah sveho bloku dokud plati podminka. A pokud je uvnitr dalsi cyklus tak se spousti opakovane ten...
Mozna nahodit trosku "vhodnejsi" odsazovani abys to videl

A popis? Vstoupi se do vnejsiho cyklu s 0 v n, pak se spusti vnitrni ktery ma postupne 0 a 1

vyskoci se z vnitrniho cyklu a ted prekvapive zacne cyklit zase vnejsi... ted si uvnitr s 1 v n

a jelikoz je uvnitr porad ten vnitrni cyklus, tak zase 0 a 1

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
wicked0
Newbie
4. 8. 2013   #4
-
0
-

Diki za odpoved, uz som pochopil ten algorytmus a mozno to je zbytocne ale napisem to sem s tym ze snad sa to raz niekomu hodi.

Najprv sa n priradi hodnota 0, skontroluje sa podmienka ci n<2 ak to plati, ide sa dalej na vnutorny cyklus.Tam sa spravi to iste.Priradi sa premennej m hodnota 0, skontroluje sa ci m<2 ak to plati, vypise sa n a m cize 0-0.

Teraz sa pokracuje od vnutorneho cyklu pokial plati podmienka m < 2.Ak to plati tak sa m zvacsi o 1 cize teraz sa m=1 a n=0, vypise sa teda 0-1.Zase sa snazi program pokracovat od vnutorneho cyklu, ale kedze m = 1 a plati podmienka ze  m<2, tak m sa o hodnotu 1 uz nenavysi a vnutorny cyklus konci.Pokracuje sa od zaciatku(od vonkajsieho cyklu) a kedze premennej n uz nula priradena bola a plati podmienka n<2 tak n uz zvysi svoju hodnotu na 1.Ide sa na vnutorny cyklus kde sa zacina zase odznova cize premennej  m sa priradi 0 a ak plati m<2 tak program vypise 1-0.Zase sa zacina od vnutorneho cyklu.Skontroluje sa podmienka ci m<2  a ak je tak m zvysi svoju hodnotu o 1.Kedze n uz ma od predchazajuceho vypisu hodnotu 1 a teraz ma aj m hodnotu 1, program vypise 1-1.Kedze m musi byt mensie ako 2, o dalsiu hodnotu sa uz nenavysi a vnutorny cyklus konci.Pokracuje sa vonkajsim cyklom, ale kedze n ma tiez podmienku ze ma byt mensie ako 2, tak sa tiez uz nenavysi a vonkajsi cyklus konci a tym padom aj cely program.

Nahlásit jako SPAM
IP: 78.99.245.–
KIIV
~ Moderátor
+43
God of flame
4. 8. 2013   #5
-
0
-

#4 wicked
neprocital sem uplne do podrobna ale:

Teraz sa pokracuje od vnutorneho cyklu pokial plati podmienka m < 2.Ak to plati tak sa m zvacsi o 1

nejprve se pricte jedna, pak se teprve kontroluje... 

tj. kdyz se do cyklu vejde, tak se provede prvni cast foru (inicializace) a pak zkontroluje podminka...

ve vsech dalsich kolech se vykona treti cast foru (inkrementace/dekrementace (ci presneji "zmena" ridici promenne)) a pak se zkontroluje podminka - pokud stale plati tak se provede blok {  } (pripadne jeden jediny prikaz pokud nemas blok)

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

Vnořený cyklus — založil Felix

Vnořený dotaz — založil RePRO

Cyklus — založil Jan Burant

Cyklus For — založil nergaldiabolus

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý