Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Diskusia – 7. diel - Cyklus for v JavaScripte

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Lubor Pešek
Člen
Avatar
Odpovedá 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íš.

Odpovedať
+2
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
Odpovedá 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...

 
Odpovedať
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

 
Odpovedať
+1
7.2.2023 11:07
Avatar
DarkCoder
Člen
Avatar
Odpovedá 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ší.

Odpovedať
+3
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

 
Odpovedať
31.5.2023 19:40
Avatar
Odpovedá 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ší?

 
Odpovedať
26.9.2023 14:09
Avatar
Odpovedá 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!

 
Odpovedať
26.9.2023 14:16
Avatar
DarkCoder
Člen
Avatar
Odpovedá 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í
Odpovedať
+5
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ů.

 
Odpovedať
+2
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 :-)

 
Odpovedať
22.1.2024 18:51
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 45.