Jaké jsou rozdíly mezi smyčkou while a smyčkou for?
On 17 února, 2021 by adminJaké jsou rozdíly mezi smyčkou while a smyčkou for? Zdá se mi, že jsou stejné.
Komentáře
Odpověď
Smyčka while
se obvykle používá, když potřebujete něco opakovat, dokud není daná podmínka pravdivá :
inputInvalid = true; while(inputInvalid) { //ask user for input invalidInput = checkValidInput(); }
Na druhou stranu se smyčka for
obvykle používá, když potřebujete iterovat dané číslo časů:
for(var i = 0; i < 100; i++) { ...//do something for a 100 times. }
Můžete je použít zaměnitelně, pokud chcete:
inputInvalid = true; for(;;) { if(!inputInvalid) { break; } //ask user for input invalidInput = checkValidInput(); }
Nebo
inputInvalid = true; for(;inputInvalid;) { //ask user for input invalidInput = checkValidInput(); }
A:
var i = 0; while(i < 100) { //do your logic here i++; }
Komentáře
- Jak však vidíte, tato nestandardní použití vytvářejí méně elegantní a těžší čitelný kód. Pod kapotou jsou různé typy smyček všechny stejné podmíněné goto, takže zkuste použít ten, který syntakticky nejlépe vyhovuje tomu, čeho se snažíte dosáhnout.
- V níže uvedeném kódu mohu také říci něco udělat 10 krát. (Vyplní váš argument jako pro smyčku @npinti) var count = 0; while (count < 10) {document.writeln (" ve smyčce! ") ; count ++; }
- Pamatujte, že v jazyce C můžete svůj třetí příklad přepsat jako
for(invalidInput = checkValidInput();inputInvalid;invalidInput = checkValidInput()){}
. Ale ano, váš základní bod je zcela správný a smyčkafor
je ve skutečnosti jen syntaxe cukru. Některé jazyky to zcela obejdou. Smyčka Cfor
je zvláštní zvíře, ve skutečnosti spíše sprostáwhile
na rozdíl od jazyků jako Pascal, kde lze použít pouze k procházení diskrétních celých čísel. - k čemu to slouží (;;). Nemohu najít vysvětlení pro (;;).
- @mistichor smyčka C / C ++ pro trvá 3 příkazy pro (;;) je smyčka for se 3 prázdnými příkazy, středník odděluje prázdné příkazy .
Odpověď
Mezi nimi je základní rozdíl: s for
smyčky, musíte předem vědět jak často bude tělo smyčky provedeno. Toto je hlavní omezení, protože existuje mnoho problémů, kdy o tom jednoduše nevíte. Někdy dokonce nevíte, zda je toto číslo konečné vůbec !
Zvažte například program, který uživatele požádá o zadání řady jmen. Řekněme, systém řízení pacientů pro zubaře. Jak byste předem věděli, kolik pacientů se zubař chystá navštívit? Nemůžete za to napsat for
smyčku.
Komentáře
- Existuje několik způsobů, jak ukončit smyčku for předčasně, takže potřebujete znát pouze maximální časy, které chcete po smyčce iterovat. Dále, pokud jste ' ochotni nesprávně použít podmíněnou část smyčky for, můžete to udělat cokoli, co by while while mohla.
- jazyk, o kterém mluvíš?V pascalu má váš argument nějakou výhodu (naprogramovat velké množství, protože limit je ošklivý), ale v C můžete použít libovolné podmínky s
for
. Mezifor(;xxx;)
awhile(xxx)
. - šipkou dolů není žádný rozdíl. Chaos je přesně správný.
initializer;
následovanýwhile(condition){ ... increment;}
je stejný jakofor(initializer; condition; increment){ ... }
.
for
je pouze syntaxe cukru podporující podmnožinu případů použití, kteréwhile
podporuje. Někdy se " syntaxe cukru " dívá dolů, ale mělo by se na ni skutečně dívat jako na způsob, jak vytvořit čistší a srozumitelnější kód .for
je ve skutečnostiwhile
smyčka v efektním oblečení.