NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 7 - Cykly v C# .NET - for a while

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Kit
samo007:7.2.2013 23:24

Ale veď to by malo byť pred while, nie? Veď podľa návodu sa telo cyklu vymaže až po jeho ukončení. Žeby to fungovalo tak, že sa to nevymaze, iba resetuje na pôvodnú premennú? Ak áno, potom môže byť znalosť o vymazaní premenných trochu mylná (pre začiatočníkov) a bolo by dobre spomenúť, že sa to netýka opakovania u premenných, pretože v tom pripade sa premenná iba akoby obnovila na svoju pôvodnú hodnotu (už bez toho aby pc riešil ukladanie jeho názvu, či ako sa to volá :D ). Je tak?

Editováno 7.2.2013 23:28
 
Odpovědět
7.2.2013 23:24
Avatar
samo007
Tvůrce
Avatar
samo007:7.2.2013 23:31

*...znalosť o novo vzniknutých premenných...

 
Odpovědět
7.2.2013 23:31
Avatar
lcet.m
Člen
Avatar
Odpovídá na samo007
lcet.m:8.2.2013 10:10

VELMI zjednodušeně řečeno - to, co je mezi složenými závorkami, tj. {...} se jmenuje scope. Je to jaksi oddělený prostor, který vidí proměnné z nadřazených scopes, ale v nadřazených scopes nejsou viditelné proměnné z podřízených. Vždy, když program dojde na konec scope, končí životnost proměnných v tomto deklarovných. Jakož i na konci každé iterace cyklu.

 
Odpovědět
8.2.2013 10:10
Avatar
Kit
Tvůrce
Avatar
Odpovídá na samo007
Kit:8.2.2013 10:20

Pokud potřebuješ, aby byla proměnná uvnitř cyklu lokální, tedy aby nebyla vidět vně cyklu, musíš ji deklarovat uvnitř cyklu.

Před while má smysl deklarovat vnitřní proměnnou jen v případě, že výsledek budeš potřebovat i po opuštění cyklu. Typicky proměnná typu suma.

Moderní programovací jazyky pracuji s větvením, cykly a ostatními bloky jako s anonymními podprogramy, které mohou pracovat s "globálními" proměnnými metody, ale lokální proměnné se po ukončení bloku likvidují. Proměnné uvnitř cyklu jsou jakýmsi hybridem. Při dalším průchodu jsou deklarovány podmíněně, pokud při tomto průchodu ještě nebyla použita hodnota z předchozího průchodu. Uvnitř bloku tedy nelze napsat

int suma += i;

ale

int suma = i;

v pohodě projde. Po opuštění bloku bude samozřejmě zrušena.

Editováno 8.2.2013 10:22
Odpovědět
8.2.2013 10:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Kit
samo007:8.2.2013 10:45

Aha, jasné. Ďakujem za info. Je to presne ako s tými premennými v Game maker, čo sme riešili tie globálne premenné (ak si spomínaš). Nejako som zabudol na to, že to znovu vzniká z dôvodu, že to súčasne aj zaniká.

Ale prečo tam musí byť = 0 ? Bez toho to nejde?

 
Odpovědět
8.2.2013 10:45
Avatar
Kit
Tvůrce
Avatar
Odpovídá na samo007
Kit:8.2.2013 10:54

Pokud by ten cyklus nebo jiný blok neproběhl ani jednou, nebyla by hodnota proměnné definována. Pokud výsledek po opuštění bloku nepotřebuješ, tak tam definice počáteční hodnoty být nemusí.

Odpovědět
8.2.2013 10:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
lcet.m
Člen
Avatar
Odpovídá na Kit
lcet.m:8.2.2013 11:03

Při dalším průchodu jsou deklarovány podmíněně, pokud při tomto průchodu ještě nebyla použita hodnota z předchozího průchodu.

Myslím si, že to není pravda, nebo jen nějak nechápu jak jsi to myslel?

 
Odpovědět
8.2.2013 11:03
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Kit
samo007:8.2.2013 13:02

Ďakujem za odpoveď. Ešte by som potreboval vedieť, ako si nastavím to, aby sa program spúšťal v Release, pretože na začiatku mi to nešlo, potom sa mi podarilo vytvoriť v Release a teraz to zase nejde. Ako sa to dá nastaviť?

 
Odpovědět
8.2.2013 13:02
Avatar
Kit
Tvůrce
Avatar
Odpovídá na lcet.m
Kit:8.2.2013 14:31

Jenom nechápeš, jak jsem to myslel.

Odpovědět
8.2.2013 14:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
lcet.m
Člen
Avatar
Odpovídá na Kit
lcet.m:8.2.2013 16:27

Ok. Takže tam nebylo nic o tom, že se proměnná deklaruje jen poprvé, příště už má nějakou hodnotu, že ne?

 
Odpovědět
8.2.2013 16:27
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 208.