Nejste přihlášen/a.

Přihlásit se do poradny

 

Rozdíl mezi cyklem while a for v javascriptu

Od: asdf odpovědí: 2 změna:

Dobrý den,

při studiu a trénování javascriptu, jsem narazil, že mezi cyklem for a cyklem while není praktický rozdíl.

Hledal jsem tedy různé reference a ukázkové příklady využítí while v praxi, nejčastěji bylo uváděno, že hlavním rozdílem je, že u while nemusíme znát počet opakování a že se nemusí vykonat ani jednou. Nicméně, když jsem se na tyto ukázkové příklady podíval, zjistil jsem, že přestože, neznáme počet opakování, můžeme je napsat více jak jednou.

Typicky je to vysvětlováno tímto způsobem: máme nějakého výchozí číslo celé číslo a neměnného dělitele. snažíme se cyklicky dělit podíl do té doby, než výsledné číslo bude větší než 0. Chceme aby číslo bylo vždy bez desetinného rozvoje => využijeme metody číslo = parseInt (číslo/dělitel). Zbytek a nový podíl si necháme při každém cyklu vypsat do konzole

=>


#18 While vs For Loop | Which to use and When? - YouTube typický příklad toho, jak je dokazován rozdíl mezi for a while. autor v čase 4:20 sdělí že na tento příklad musíme použít jen while loop, protože neznáme počet opakování. Tento příklad jsem si přepsal, a zkoušel jsem ho vyřešit přes for cyklus. Světe div se, funguje.

POSTUP PŘES WHILE

var i \\ i je výchozí číslo, dělitel je 10.
i= 123456
while(i>0) {console.log(i%10), i=parseInt(i/10);console.log(i)}

MŮJ POSTUP PŘES FOR

for (i =123456; i>0;console.log(i%10)){i=parseInt(i/10),console.log(i)}

konzole nám vypíše stejný výsledek jako při užití cyklu while a for. Stále mě tedy irituje kde tedy je ten rozdíl mezi while a for,

JAKO DŮKAZ JSEM SI SVŮJ POSTUP I VYSCREENOVAL .

příkládám také foto postupu, kde jsem si pro kontrolu ručně vypočítal hodnoty zbytku a podílu (v nedesetinném rozvoji)

Stále přemýšlím nad tím proč by záleželo nad tím že známe počet opakování, když podmínka jakéhokoli cyklu si počet opakování odvodí podle výchozí proměnné a podmínky.

Děkuji a velmi si vážím vašeho času, a jakékoli rady, která by alespoň trochu vedla na kloub tohoto pro mě nevysvětlitelného problému.


Rozdíl mezi cyklem while a for v javascriptu
Rozdíl mezi cyklem while a for v javascriptu #2
Rozdíl mezi cyklem while a for v javascriptu #3

 

 

2 odpovědi na otázku
Řazeno dle hodnocení

 

 

runner2
hodnocení

1x
Nehledej v tom zadnou vedu. Smycku while muzes vzdy prepsat na for a obracene. Dulezita je citelnost kodu. Ve for smycce clovek vetsinou ocekava index + nejaky increment toho indexu, typicky pri prochazeni kolekci. Pro tvoji ulohu se jasne hodi while, pouziti for fungovat bude, ale kod je hur citelny, hodnotu promenne i menis v tele for cyklu ..

 

hodnocení

0x
avatar herd

Pochopíš to na tomto příkladu:

for(console.log("start"),i=0;console.log(" cond %d %s",i, i<3),i<3;console.log(" step %s->%s",i++,i),i){console.log(" body %s",i)}

povšimni si čárek. to je zváštní operátor javascriptu. věci spojené čárkou se berou jako jeden výraz, provedou se všechny, ale hodnota se vezme poslední části (samozřejmě to neplatí pro argumenty funkce)

Rozdíl je především v zápisu a v sémantickém významu. Obě konstrukce jsou zaměnitelné:

init(); while( cond() ) { body() ; step() ]

for(init() ; cond() ; step() ) { body() ]

omlouvám se nešla mi zapsat pravá { - háže to nějakou nápovědu.

Pak je ještě vyšší dívčí cyklů. Když se používají vnořené cykly a věci jako break, break N, next, retry, restart (rozhodně ne ve svšech jazycích), tak například slovo next je skok do další iterace cyklu a (takže zbytek BODY seneprovede), ale STEP se musí provést. Nebo RETRY je analogie skoku na začátek BODY bez provádění STEP (ale jestli testuje COND, nevím...)

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]