NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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 8 - Cyklus for v JavaScriptu

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
Lubor Pešek
Člen
Avatar
Odpovídá na Stanislav Krajči
Lubor Pešek:29.7.2022 9:14

Zkus vydržet. Toto jsou základní konstrukce, které bohužel nejdou nijak záživněji podávat. Příklady si samozřejmě můžeš vymyslet (já to třeba tak dělám, že když někoho učím Javu, tak jedeme od základu, který potom rozšiřujeme právě probíranou funkcí, ale ani to nemusí každému vyhovovat).

Postupně tu jsou i příklady, kdy několik lekcí vyvíjíš projekty, ale záměrem každé jednotlivé lekce je to, že tu není jeden velký projekt, na kterém se to všechno naučíš, ale dílčí části.
Zřejmě proto, když bys rychle potřeboval zjistit, jak fungují cykly - zvolíš si potřebnou kapitolu.

Kdyby to bylo postaveno tak, že bys musel od začátku vyvíjet nějaký projekt, aby ti to potom v další kapitole mohlo fungovat, bylo by to právě otravné a mnoho lidí by to zdržovalo.

Když zůstanu v tvoji metafoře - tady se neučíš stavět složitější stavby, ale učíš se používat ty nástroje (učíš se zapojovat součástky lega do sebe).
Trošku záživnější v tomhle ohledu mohou být cvičné příklady.

Ale přece nikdo ti nebrání (já jsem to tak třeba dělal), aby sis už od HTMLka dělal vlastní separátní projekt a do něj vždy vkládal nové věci (poznatky z lekcí) :)
Naopak takový přístup ti nejvíc pomůže, že správně pochopíš, na co se to či ono používá.
Případně jako třeba teď - dřív sis třeba v HTMLku vytvářel například tabulku ručně (musel sis definovat sloupce ( <tr>) a pak řádky ( <td>) a a to sis všechno kopíroval.
Konkrétně v této lekci ses naučil používání for-cyklu díky JS. Tak to ve svém separátním projektu nahradíš.

Odpovědět
29.7.2022 9:14
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Odpovídá na Stanislav Krajči
Tereza Vašková:17.1.2023 21:43

souhlasím .. je to taková matematika.. musím si k tomu pouštět tutoriály z Udemy které funkce lépe přibližují a vysvětlují k čemu to je dobré apod...

 
Odpovědět
17.1.2023 21:43
Avatar
Dawid Lebeda
Člen
Avatar
Dawid Lebeda:7.2.2023 11:07

pro začatečníka poněkud složitě a nedostatečně vysvětlen for cyklus

 
Odpovědět
7.2.2023 11:07
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Dawid Lebeda
DarkCoder:7.2.2023 17:18

Do sekce o JS takřka nechodím, nejsem jeho expertem. Když však vidím, že opakovaně se zde objevují rozpačité dojmy nad základními konstrukcemi, navštívil jsem článek. Po přečtení musím říci, že vaše rozpačité dojmy jsou zcela oprávněné.

Důvodem je to, odstavec cyklu for naprosto postrádá vysvětlení jak tento cyklus funguje. Dost zásadních věcí chybí, něco je dokonce i špatně.

Jak s takovým cyklem nakládat se naučíte postupně, jak se Vaše znalosti budou zvětšovat. Nicméně vysvětlení cyklu for by mělo být podstatně lepší.

Odpovědět
7.2.2023 17:18
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Ondřej Minks:31.5.2023 19:40

Hezké příklady i vysvětlení, začíná toho všeho ale přibývat. :-D

 
Odpovědět
31.5.2023 19:40
Avatar
Odpovídá na Dawid Lebeda
Natálie Růžičková:26.9.2023 14:09

Ahoj Dawide, díky za tvůj postřeh, zkusíme s tím něco udělat :-) Můžeš být třeba konkrétnější?

 
Odpovědět
26.9.2023 14:09
Avatar
Odpovídá na DarkCoder
Natálie Růžičková:26.9.2023 14:16

Ahoj DarkCodere, díky za tvou zpětnou vazbu, právě se věnujeme další aktualizaci a zlepšení kurzu, mohlo by nám pomoci, kdybys byl konkrétnější, co třeba podle tebe chybí nebo je dokonce špatně? Podíváme se na to. Díky!

 
Odpovědět
26.9.2023 14:16
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Natálie Růžičková
DarkCoder:27.9.2023 1:22

Zde je pár připomínek a námětů ke zlepšení k tématu cyklu for.

"Tento cyklus má stanovený pevný počet opakování"

Není pravda, že cyklus for má stanovený počet opakování. Varianta s pevným počtem opakování je pouze jedna z mnoha kterou cyklus for
umožňuje a pro kterou se hodí nejlépe.

"a hlavně obsahuje tzv. řídící proměnnou (celočíselnou)"

Není pravda, že cyklus for musí obsahovat řídící proměnnou. Může obsahovat jednu, vícero nebo také žádnou.
Není pravda, že řídící proměnná musí být celočíselná. Může být libovolného platného typu.

"Syntaxe (zápis) cyklu for je následující:

for (promenna; podminka; prikaz)"

Pojmenování částí cyklu je nevýstižné a vymyšlené. Za prvé všechno jsou to výrazy, nemůže tam figurovat příkaz. Za druhé jejich popis nevystihuje podstatu činnosti dané části.

První část je: Inicializační část
Druhá část je: část Testu podmínky
Třetí část je: Modifikační část

"nejčastěji 0, protože v programování vše začíná od nuly"
Šílená definice. Naprosto nesmyslná.

"Jakmile nebude platit, cyklus se ukončí."
Ne že se cyklus ukončí, ale on se vůbec neprovede. Ukončení cyklu je úplně jiný pojem.

"K tomu využijeme speciálních příkazů ++ a --
To nejsou žádné příkazy, ale operátory. A rozhodně nejsou jedinými, které se používají v modifikační části.

for (let i = 0; i < 3; i++) {
    document.write("Knock<br />");
}
document.write("Penny!");

"Cyklus proběhne 3x, zpočátku je v proměnné i nula, cyklus
vypíše "Knock" a zvýší proměnnou i o jedna. Poté běží
stejně s jedničkou a dvojkou. Jakmile je v i trojka, již
nesouhlasí podmínka i < 3 a cyklus končí."

To je naprosto nedostačující vysvětlení, ve kterém chybí detailní popis řízení chodu programu cyklem. Chybí zde popis všech částí cyklu (inicializace, test podmínky, modifikace) a jejich chování. To je důvod, proč v diskuzi je spousta příspěvků o nepochopení funkčnosti cyklu for.

"O vynechávání složených závorek platí to samé, co u podmínek."
Žádné odkazy někam, zde přesně podat o co se jedná (vícero příkazů jako jedna logická jednotka).

V programování je ovšem zvykem začínat od nuly, později zjistíme proč.
Proč to jednoduše neříci zde, že to má souvislosti s Poli, o kterých se čtenář dozví více v článku a odkaz.

Když už jste nakousli vložené cykly, bylo by dobré popsat jak to funguje. Jak se mění hodnoty iteračních proměnných. Jak probíhá řízení chodu programu. Ke kterému for se vztahují příkazy uvnitř cyklů apod.

Aplikace na libovolnou mocninu libovolného čísla:

let a = 2; // Základ mocniny
let n = 3; // Exponent

let vysledek = a;
for (let i = 0; i < (n - 1); i++) {
    vysledek = vysledek * a;
}

document.write("Výsledek: " + vysledek);

To je chybný kód který např. postrádá funkčnost pro 0 a záporný exponent.

Už tušíme, k čemu se for cyklus využívá.
Zde není prostor pro věštění, ale je třeba zde jasně sdělit čtenáři jeho využití, kde jej použít, na co si dát pozor apod.

"Zapamatujme si, že je počet opakování pevně daný. Do proměnné cyklu bychom neměli nijak zasahovat ani dosazovat"

Není pravda. Jsou situace, kde to může být velmi užitečné měnit hodnotu řídící proměnné uvnitř cyklu. Je však třeba být velmi opatrný.

To jsou pouze připomínky k textu v článku.

Dále co třeba v článku chybí a bylo by vhodné doplnit:

  • jak vypadá nekonečný cyklus a jeho popis
  • jak lze ukončit nekonečný cyklus
  • jak lze předčasně ukončit jednoduchý for cyklus
  • jak lze vyskočit z hluboce zanořených for cyklů
  • jak lze ukočit aktuální iteraci cyklu a přejít na další
  • jak se provádí inicializace vícero řídících proměných
  • jak se zapisuje test podmínky prostým výrazem bez operátoru
  • jak vytáhnout hodnoty řídících proměnných mimo cyklus
  • detailní popis toho jak probíhá řízení chodu programu cyklem a zanořenými cykly
  • pro každé subtéma ukázkový příklad, úvaha, provedení, vysvětlení
Odpovědět
27.9.2023 1:22
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Robert Domasta:11.10.2023 16:26

Zde mi naprosto chybí informace nebo nějaký úvod k tomu, jak zapisovat html do js. Už v několika předchoyích lekcích jsem byl zaskočen, že po jendoduchém vysvětlení základního principu se hned přejde k poněkud komplikované nadstavbe bez nějakého vysvětlení mezikroků.

 
Odpovědět
11.10.2023 16:26
Avatar
Radim Štross
Tvůrce
Avatar
Radim Štross:22.1.2024 18:51

Děkujeme za vaše podněty. Lekci jsme aktualizovali :-)

 
Odpovědět
22.1.2024 18:51
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 45.