Nejste přihlášen/a.
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
=>
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.
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...)
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.