begin process at 2012 05 29 02:47:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

La différence entre for et while ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

La différence entre for et while ?

mardi 25 février 2003 à 10:21:05 | La différence entre for et while ?

Krox68

J'aimerais savoir la différence entre les boucles for et while,
leurs avantages, leurs inconvénients...
Merci
Krox68
mardi 25 février 2003 à 11:24:51 | Re : La différence entre for et while ?

crocejf2000

Salut,

Il y a quelque temps, je me posait la meme question que toi, voici une réponse que l'on m'a renvoyé :

De mémoire, du temps ou l'optimisation était un coucours permament de potache le while est plus
rapide, si et seulement si tu décrément en dernier instruction.

Le plus lent

for (int i=0; i<50; i++)
{
}


Vitesse moyenne
int i=50;
do
{
i--;
}
while (i!=0)

Le plus rapide
int i=50;
while (i)
{
.. code ..
i--;
}

Mais bon, c'est sur des compilateurs de 1990, depuis le temps les optimisations ont certainement
évolué.
Le mieux est de comparer le code assembleur générer.

; 9 : int total=0;
00005 33 c0 xor eax, eax
$L9625:

; 10 : while(i)
; 11 : {
; 12 : total+=i;

00007 03 c1 add eax, ecx

; 13 : i--;

00009 49 dec ecx
0000a 75 fb jne SHORT $L9625

; 14 : }

Le while est normal

; 17 : int total2=0;
0001a 33 c9 xor ecx, ecx
; 18 : for (int i2=50;i2;i2--)
0001c b8 32 00 00 00 mov eax, 50 ; 00000032H
$L9630:
; 19 : total2+=i2;
00021 03 c8 add ecx, eax
00023 48 dec eax
00024 75 fb jne SHORT $L9630

Et bien le for génére le même code.
Les optimisateurs font bien leur travail.
Par contre si tu fais une boucle
for (int i2=0;i2<50;i2++) tu vas moins vite

Bon amusement,
Rémi


--
Rémi Thomas
MVP Visual Studio .NET - http://www.pixel-technology.com/rthomas/


Voila tout, Hart


mercredi 26 février 2003 à 04:03:13 | Re : La différence entre for et while ?

jonathanmcdougall

> J'aimerais savoir la différence entre les boucles for et while,
> leurs avantages, leurs inconvénients...

Les différences ne sont pas au niveau de la vitesse, mais plutôt de l'efficacité et de la simplicité. Comparons :

int i = 0;
while (i < 10 )
{
std::cout << "êêêêllo";
++i;
}


for (int j = 0; j<10; ++j)
{
std::cout << "êêêêllo";
}

Le for est définitivement plus clair et plus concis. Plus efficace? Pas du côté de la vitesse, mais un peu du côté 'organisation'. Dans le for, la variable 'j' est locale à la boucle, c'est-à-dire qu'elle n'existe qu'entre les deux accolades, contrairement au while.

Mais à part ça, on peut habituellement faire la même chose avec les deux, mais de façon différente. Lequel choisir dépend du contexte et de ce que tu veux faire. Pour une simple variable compteur, tu préféreras le for au while (comme on a vu). Pour une boucle sans fin, le while(true) à la place de for(;;). Pour une condition simple, le while(condition) au for(;condition), et ainsi de suite.

Mais souviens toi, il n'y a, en général, pas de différence de vitesse entre les deux.

D'après moi, même, il n'y en a aucune, car les optimiseurs font du très bon travail, mais je garde le 'en général' comme porte de sortie :)

--
Jonathan Mcdougal
Montréal, Québec
mcdougalljonathan@hotmail.com
http://www.multimania.com/utopiasoftware


Cette discussion est classée dans : while, différence, for


Répondre à ce message

Sujets en rapport avec ce message

La boucle FOR [ par C++ ] Ou est l erreur svp :for (int i=0;i MessageBox (i); Lire toutes les chaines d'un fichier [ par JMGR ] Salut,J'ai fait un programme qui charge toutes les chaines séparées par des espaces, et la boucle for ne se termine jamais, car la dèrnière chaine se Code QBasic à convertir Cpp [ par SneakGuy ] Salut, j'ai besoin d'aide pour convertir ce code QBasic en Cpp...*Désoler, tous les signes"plus" sont remplacés par la lettre p. Merci.CLSFOR x = 1 Problème avec une boucle while [ par arconius ] voilà j'ai fait un prog où l'on tire des dés mais j'ai un problème avec ma boucle while car au lieu de me donner un chiffre aléatoire à chaque fois il Probleme rand() et for [ par vanpet ] je suis nouveau en C++ (je migre de VB6) et il y a quelques petites choses que l'aide de Microsoft ne parvient pas a me faire comprendre... (pourquoi Tableau [ par druggedsephiroth ] Je comprends vraiment pas, j'ai un tableau:#define taille 8int cache[taille][taille];ensuite au début du soft, dans la procédure main je mets ca: for question sur le DO et WHILE fonction [ par Enishi ] Bonjour!J'ai commencer à utiliser Borland C++ Builder 6 et je n'arrive pas à faire fonctionner la fonction DO - WHILE.... D'après moi, j'utilise la ma Besoin d'aide en C - Fonction [ par bugs2600 ] Voici mon programme quelqu'un pourrait-il m'aider je dois faire une fonction et je ne vois pas comment la faire le non de ma fonction doit etre PRODMA Probleme iteration [ par alanbraxe31 ] http://membres.lycos.fr/alanbraxe31http://membres.lycos.fr/alanbraxe31bonjour tt le monde,j'ai écris le


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,668 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales