2009-10-03 9 views
6

Je sais qu'une boucle while peut faire n'importe quoi pour une boucle for, mais une boucle for peut-elle faire quoi que ce soit d'une boucle while?Exemple d'une boucle While qui ne peut pas être une boucle For

Veuillez fournir un exemple.

+2

Totalement dépend du langage de programmation. Un vrai pour-boucle ne peut pas. – jpfollenius

+1

En supposant un langage avec des entiers non bornés et une "boucle for-réelle", comme Smasher le dit, et comme tous ceux qui ont cité C mal compris - pire, je pense qu'ils sont sérieux -, considérer le premier premier plus grand qu'un entier donné . Je sais comment le faire avec des boucles de temps. Pouvez-vous le faire uniquement avec des boucles for-loops? –

+0

En utilisant l'expression "real for loop" vous construisez une tautologie. Une "boucle réelle" est une boucle infirme, et est donc moins capable, mais vous n'avez rien appris de l'exercice. – dmckee

Répondre

16

Oui, facilement. Dans les langues C comme

while (cond) S; 

for(;cond;) S; 
+2

Je peux aussi ajouter que cela s'applique en C, C++, Java, C# et probablement beaucoup d'autres langages qui empruntent beaucoup de C, mais qui ne s'appliquent pas, par exemple. Pascal. – Steve314

+1

Ce que j'aime de cette réponse, c'est qu'elle démontre simultanément que cela peut être fait, et pourquoi c'est une chose inutile à faire. –

0

, vous pouvez déclarer pour les boucles telles que celle-ci:

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

Dans les langues où for est plus stricte, des boucles infinies serait un cas nécessitant une boucle while.

3

La boucle while et la boucle for classique sont interchangeables:

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

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

Si vous avez un fixe lié et l'étape et ne permettent pas la modification de la variable de la boucle dans le corps de la boucle, puis pour les boucles correspondent à primitive fonctions récursives. D'un point de vue théorique, elles sont plus faibles que les boucles générales, par exemple vous ne pouvez pas calculer la fonction Ackermann uniquement avec de telles boucles.

Si vous pouvez fournir une limite supérieure pour que la condition dans une boucle while devienne vraie, vous pouvez la convertir en boucle for. Cela montre que dans un sens pratique il n'y a pas de différence, car vous pouvez facilement fournir une limite astronomiquement haute, disons plus long que la vie de l'univers.

0

While loop n'a pas autant de flexibilité qu'un for loop a et pour les boucles sont plus lisibles que pendant les boucles. Je montrerais mon point avec un exemple. Une boucle peut avoir la forme comme:

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

Une boucle while ne peut pas être utilisé comme ci-dessus pour la boucle et aujourd'hui la plupart des langues modernes permettent une for each loop aussi bien. À mon avis, je pourrais être partial s'il vous plaît pardonnez pour cela, il ne faut pas utiliser while loop tant qu'il est possible d'écrire le même code avec for loop.

Questions connexes