2009-10-03 13 views
6

So che un ciclo while può fare qualsiasi cosa a un ciclo for, ma può un ciclo for fare qualcosa in un ciclo while?Esempio di un ciclo While che non può essere un ciclo For

Si prega di fornire un esempio.

+2

Dipende totalmente dal linguaggio di programmazione. Un vero ciclo for non può. – jpfollenius

+1

Supponendo che una lingua con numeri interi illimitati e un "vero per-loop", come dice Smasher, e come tutti quelli che hanno citato C erroneamente - peggio, penso che siano seri -, considera il primo primo più grande di un intero dato n . So come farlo con while-loops. Puoi farlo solo con for-loops? –

+0

Usando la frase "real for loop" costruisci una tautologia. Un "ciclo vero e proprio" è un ciclo chiuso storpio, ed è quindi meno capace, ma non hai imparato nulla dall'esercizio. – dmckee

risposta

16

Sì, facilmente.

while (cond) S; 

for(;cond;) S; 
+2

Posso anche aggiungere che ciò si applica in C, C++, Java, C# e probabilmente in molti altri linguaggi che prendono in prestito pesantemente da C, ma non si applica ad es. Pascal. – Steve314

+1

Quello che mi piace di questa risposta è che dimostra simultaneamente che si può fare, e perché è una cosa inutile da fare. –

0

Nei linguaggi C-like, è possibile dichiarare per i cicli di questo tipo:

for(; true;) 
{ 
    if(someCondition) 
     break; 
} 

Nelle lingue in cui for è più rigorosa, cicli infiniti sarebbe un caso che richiede un ciclo while.

3

Il while ciclo e la classica for ciclo sono intercambiabili:

for (initializer; loop-test; counting-expression) { 
    … 
} 

initializer 
while (loop-test) { 
    … 
    counting-expression 
} 
1

Se avete un fisso vincolato e scatto e non consentire la modifica della variabile di ciclo nel corpo del ciclo, poi per cicli corrispondono alla primitiva funzioni ricorsive.

Da un punto di vista teorico questi sono più deboli dei cicli generali mentre, ad esempio, non è possibile calcolare la funzione Ackermann solo con tali cicli.

Se è possibile fornire un limite superiore per la condizione in un ciclo while per diventare vero, è possibile convertirlo in ciclo for. Ciò dimostra che, in senso pratico, non vi è alcuna differenza, dal momento che si può facilmente fornire un limite astronomicamente elevato, per esempio più lungo della vita dell'universo.

0

While loop non ha la stessa flessibilità di uno for loop e per i loop sono più leggibili rispetto ai cicli while. Vorrei dimostrare il mio punto con un esempio. Un ciclo for può avere forma come:

for(int i = 0, j = 0; i <= 10; i++, j++){ 
// Perform your operations here. 
} 

Un ciclo while non può essere utilizzato come il precedente ciclo for e oggi la maggior parte delle lingue moderne consentire a un for each loop pure.

A mio parere, potrei essere prevenuto per favore perdonare per quello, non si dovrebbe usare while loop finchè è possibile scrivere lo stesso codice con for loop.