Quali sono le differenze tra un ciclo while e un ciclo for?
Su Febbraio 17, 2021 da adminQuali sono le differenze tra un ciclo while e un ciclo for? Mi sembra che siano la stessa cosa.
Commenti
Risposta
Il ciclo while
viene solitamente utilizzato quando è necessario ripetere qualcosa finché una determinata condizione non è vera :
inputInvalid = true; while(inputInvalid) { //ask user for input invalidInput = checkValidInput(); }
Daltra parte, il ciclo for
viene solitamente utilizzato quando è necessario iterare un dato numero di volte:
for(var i = 0; i < 100; i++) { ...//do something for a 100 times. }
Puoi usarli in modo intercambiabile se lo desideri:
inputInvalid = true; for(;;) { if(!inputInvalid) { break; } //ask user for input invalidInput = checkValidInput(); }
Oppure
inputInvalid = true; for(;inputInvalid;) { //ask user for input invalidInput = checkValidInput(); }
e:
var i = 0; while(i < 100) { //do your logic here i++; }
Commenti
- Come puoi vedere, però, questi usi non standard producono codice meno elegante e più difficile da leggere. Sotto il cofano, i diversi tipi di loop sono tutti lo stesso goto condizionale, quindi prova a utilizzare quello che sintatticamente si adatta meglio a ciò che stai cercando di ottenere.
- Nel codice seguente, posso anche dire di fare qualcosa 10 volte. (Riempie il tuo argomento come per il ciclo @npinti) var count = 0; while (count < 10) {document.writeln (" looping away! ") ; count ++; }
- Nota che in C puoi riscrivere il tuo terzo esempio come
for(invalidInput = checkValidInput();inputInvalid;invalidInput = checkValidInput()){}
. Ma sì, il tuo punto fondamentale è del tutto corretto e un ciclofor
è in realtà solo zucchero di sintassi. Alcune lingue ne fanno completamente a meno. Il ciclo Cfor
è una strana bestia, molto più di unwhile
imbastardito a differenza di lingue come Pascal, dovefor
loop può essere utilizzato solo per scorrere interi discreti. - cosa significa (;;). Non riesco a trovare la spiegazione di for (;;).
- @mistichor il ciclo C / C ++ for accetta 3 istruzioni per (;;) è un ciclo for con 3 istruzioni vuote, il punto e virgola separa le istruzioni vuote .
Risposta
Cè una differenza fondamentale tra i due: con un for
loop, devi sapere in anticipo quanto spesso verrà eseguito il corpo del loop. Questa è una limitazione importante, poiché ci sono molti problemi in cui semplicemente non lo sai. A volte non sai nemmeno se quel numero è finito per niente !
Si consideri, ad esempio, un programma che chiede allutente di inserire una serie di nomi. Diciamo, un sistema di gestione del paziente per un dentista. Come sapreste in anticipo quanti pazienti entrerà il dentista? Non “t! Non puoi” scrivere un for
loop per questo.
Commenti
- Esistono diversi modi per terminare anticipatamente un ciclo for, quindi è necessario conoscere solo il numero massimo di volte che si intende iterare attorno al ciclo. Inoltre, se ' sei disposto a utilizzare in modo improprio la parte condizionale del ciclo for, puoi fargli fare tutto ciò che potrebbe fare un ciclo while.
- Quale lingua di cui parli?In pascal il tuo argomento ha qualche merito (codificare un numero elevato come limite è brutto), ma in C puoi usare condizioni arbitrarie con
for
. Nessuna differenza trafor(;xxx;)
ewhile(xxx)
. - freccia giù. Il caos è esattamente corretto.
initializer;
seguito dawhile(condition){ ... increment;}
è uguale afor(initializer; condition; increment){ ... }
.
for
è solo zucchero di sintassi, che supporta un sottoinsieme di casi duso supportati dawhile
. A volte la " sintassi sugar " è guardata dallalto in basso, ma dovrebbe essere considerata come un modo per creare codice più pulito e più facile da capire .for
è in realtà unwhile
loop in abiti eleganti.