Skip to content
Tiantan
Articles

Jaké jsou rozdíly mezi smyčkou while a smyčkou for?

On 17 února, 2021 by admin

Jaké jsou rozdíly mezi smyčkou while a smyčkou for? Zdá se mi, že jsou stejné.

Komentáře

  • Zkuste použít obojí pro více " výzvy ". ' rychle zjistíte, že jeden konstrukt smyčky je pro určitou situaci vhodnější než jiné konstrukce smyčky. A ve skutečnosti existují dva typy while smyček v některých jazycích (jako v Javascript) s vlastními (speciálními) případy použití. Ve skutečnosti lze k dosažení cíle použít oba / všechny tři, ale pouze jeden by mohl dělat práci bez přílišného sémantického " režie " (což usnadňuje pochopení např.).
  • Jsou v zásadě stejné. Smyčka 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 .
  • Hlasovalo pro! Když se učíte, žádná otázka není příliš hloupá.
  • @StevenBurnap: nejsou v zásadě stejné. Jazyk, který má pouze smyčky a podmíněné výrazy, je Turing-complete, jazyk pouze pro smyčky není ' t. Jazyk se smyčkami while může vypočítat jakoukoli µ -rekurzivní funkci, jazyk se smyčkami for může počítat pouze primitivní rekurzivní funkce. Jazyk s smyčkami for může vyjadřovat pouze programy, které se vždy ukončují, nemůže vyjadřovat nekončení.
  • @J ö rgWMittag No, to záleží na smyčce for nyní to ' t. I když by se dalo namítnout, že smyčka C for je ve skutečnosti while smyčka v efektním oblečení.

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čka for je ve skutečnosti jen syntaxe cukru. Některé jazyky to zcela obejdou. Smyčka C for 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. Mezi for(;xxx;) a while(xxx).
  • šipkou dolů není žádný rozdíl. Chaos je přesně správný. initializer; následovaný while(condition){ ... increment;} je stejný jako for(initializer; condition; increment){ ... }.

Written by admin

Napsat komentář Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Nejnovější příspěvky

  • Pomocí balunu s rezonančním dipólem
  • Jaký je rozdíl mezi “ nelze ” a “ ”? [duplicate]
  • Můžete se na JFK pohybovat mezi terminály mimo letiště na vnitrostátních letech?
  • “ Hluboce ceněný ” nebo “ velmi ceněn ”
  • Co ' abstraktní myšlenky ' znamenají? [uzavřeno]

Archivy

  • Únor 2021
  • Leden 2021
  • Prosinec 2020
  • Listopad 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Copyright Tiantan 2021 | Theme by Theme in Progress | Proudly powered by WordPress

Back to top