IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Boucle for paresseuse


Sujet :

C++

  1. #1
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut Boucle for paresseuse
    Salut à toutes et à tous !

    Honte à moi, je ne comprends pas ce qui se passe dans la boucle for suivante : la boucle n'effectue que la première itération (le reste, mystère) et la suite du code s'exécute normalement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
             unsigned int time = 1;
             unsigned id = 0;
             int x =1;
     
             for(int y = 1; y < 4; y++){
                    auto coords = make_pair(x, y);
    		std::cout << "in loop :" << environment(id, coords, time) << std::endl;
    	}
     
    	std::cout << "in main : " << environment(id, std::make_pair(x, 1), time) << std::endl;
    	std::cout << "in main : " << environment(id, std::make_pair(x, 2), time) << std::endl;
    	std::cout << "in main : " << environment(id, std::make_pair(x, 3), time) << std::endl;
    Qu'est ce qui peut faire que l'itération "manuelle" réussisse quand la boucle for plante (sans vraiment planter d'ailleurs...) ?

    environnement est un objet qui implémente l'opérateur () : il trouve un jeu de donnée dans une map et délègue la lecture au jeu de donnée en question qui implémente l'opérateur () suivant (implémentation suspicieuse : forcément, visez qui l'a écrit ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	value_type operator()(coord_type p, time_type t) const {
    		GDALRasterBand  *poBand = resource->GetRasterBand( int(t) );
    		if(!poBand)
    			throw std::string("unable to access band");
     
    		float *val;
    		int x = p.first;
    		int y = p.second;
    		poBand->RasterIO( GF_Read, x, y, 1, 1, val, 1, 1, GDT_Float32, 0, 0 );
    		if(!val)
    			throw std::string("unable to read data");
     
    		return double(*val);
    	}
    J'essaie de mon mieux, mais oui c'est crado, l'utilisation de l'API de GDAL ne m'aidant malheureusement pas !
    Merci !
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Que fait la fonction environment()?
    Edit: Le message a été édité.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    environnement est un foncteur qui va chercher dans une map d'ID un jeu de donnée qui utilise l'API d'une bibliothèque spatiale pour renvoyer la valeur de l'environnement aux coordonnées (x,y) au temps t Je modifie le code pour que ce soit plus lisible. As-tu besoin du code des fonctions ?
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ta bibliothèque, est-elle possiblement asynchrone?
    Peux-tu poster exactement la sortie?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    Asynchrone... Je vais googliser.
    Par contre, quelques bidouilles m'ammènent à penser qu'il y a modification d'un élément de la paire là où on n'en veut pas. Voyez plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	for(int j = 1; j < 4;){
    		int temp = j;
    		std::cout << "temp before : " << temp << std::endl;
    		std::cout << "value =" << environment(0, std::make_pair(1, temp), 1) << std::endl;
    		std::cout << "temp after :" << temp << std::endl;
    		j = j+1;
    	}
    renvoie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    temp before : 1
    value =99
    temp after :1120272384
    temp before : 2
    value =101
    temp after :1120534528
    temp before : 3
    value =-inf
    temp after :-8388608
    Donc y'a bien un endroit où la paire de coordonnées est modifiée n'est-ce pas ? J'imagine que c'est à l'intérieur de la fonction RasterIO. Ce qui m'étonne c'est que la paire de coordonnées est déclarée constante...
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Pourtant d'après la documentation de std::make_pair, les paramètres sont passés par valeur en C++98

    À moins que tu utilises le C++11, qui, dans ce cas, "déplace, transfert - move" les 2 paramètres

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Et en plus, make_pair n'est pas censé contenir une référence vers les éléments qu'on passe à make_pair()!

    Tu peux essayer en spécifiant explicitement makepair<int, int>(), mais ça me parait vraiment bizarre qu'il y ait même besoin de le faire...

    D'autant plus que ton operator() ne fait que lire les valeurs de la paire...

    Edit: Doublé par foetus
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par foetus Voir le message
    À moins que tu utilises le C++11, qui, dans ce cas, "déplace, transfert - move" les 2 paramètres
    Mais quel genre de constructeur int(int&&) ferait un swap (avec une valeur non-initialisée, en plus) plutôt qu'une copie? La copie est moins coûteuse ici...

    Edit: Et en plus, il faudrait un move() sur temp pour autoriser le &&, non?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            unsigned int time = 1;
    	unsigned id = 0;
    	int x = 1;
     
    	for(int y = 1; y < 4;){
    		int temp = y;
    		std::cout << "temp before : " << temp << std::endl;
    		//const std::pair<int, int> coords = {1, temp};
    		std::cout << "value =" << environment(id, std::make_pair<int, int>(x, std::move(temp)), time) << std::endl;
    		std::cout << "temp after :" << temp << std::endl;
    		y = y+1;
    	}
    	}
    Quand j'essaie de compiler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     g++ -o env Env.cpp -std=c++1y -Wall -I/usr/include/gdal  -L/usr/lib/ -lgdal
    Env.cpp: In function ‘int main()’:
    Env.cpp:203:88: error: no matching function for call to ‘make_pair(int&, std::remove_reference<int&>::type)’
       std::cout << "value =" << environment(id, std::make_pair<int, int>(x, std::move(temp)), time) << std::endl;
                                                                                            ^
    Env.cpp:203:88: note: candidate is:
    In file included from /usr/include/c++/4.8/bits/stl_algobase.h:64:0,
                     from /usr/include/c++/4.8/bits/stl_tree.h:61,
                     from /usr/include/c++/4.8/map:60,
                     from Env.cpp:3:
    /usr/include/c++/4.8/bits/stl_pair.h:276:5: note: template<class _T1, class _T2> constexpr std::pair<typename std::__decay_and_strip<_Tp>::__type, typename std::__decay_and_strip<_T2>::__type> std::make_pair(_T1&&, _T2&&)
         make_pair(_T1&& __x, _T2&& __y)
         ^
    /usr/include/c++/4.8/bits/stl_pair.h:276:5: note:   template argument deduction/substitution failed:
    Env.cpp:203:88: note:   cannot convert ‘x’ (type ‘int) to type ‘int&&’
       std::cout << "value =" << environment(id, std::make_pair<int, int>(x, std::move(temp)), time) << std::endl;
    J'ai encore du mal à comprendre notre poteau le compilateur...

    Edit: modifié pour mettre le move
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  10. #10
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    std::make_pair<int, int>(x, std::move(temp)) -> std::make_pair(x, std::move(temp)). Mais cela ne changera rien, make_pair supprime les références.

    J'ai l'impression qu'il y a corruption de mémoire, alors je te conseille d'utiliser un vérifieur de mémoire comme valgrind ou asan (option -fsanitize=address pour gcc/clang).

  11. #11
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    On ne t'a pas demandé de mettre un move(), on cherchait à s'expliquer comment le (mauvais) comportement observé avait pu être possible sans...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    On ne t'a pas demandé de mettre un move(), on cherchait à s'expliquer comment le (mauvais) comportement observé avait pu être possible sans...
    Ah.
    Bon j'ai utilisé valgrind, c'était un peu le bazar avec std::pair.

    Du coup j'ai remplacé std::pair par une classe maison de coordonnées, et là plus de problèmes. Je n'ai toujours pas compris ce qui clochait avec std::pair.
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  13. #13
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    La signature de l'opérateur de fonction prend deux arguments d'après la signature que tu nous as donnée, et tu l'appelles avec trois arguments. C'est donc la signature du "délégué" dont tu parles que tu nous a donnée. Mais quelle est la signature et la définition de l'opérateur de fonction de la classe dont "environment" est une instance? C'est peut-être là que la difficulté se trouve.

  14. #14
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    Aïe aîe oui tu as raison, j'ai encore des progrès à faire pour définir le code que je dois montrer et celui que je dois cacher.
    environnement(id, coords, time) cherche dans une map d'identifiant un objet, à qui on va pouvoir demander objet(coord, time)
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

  15. #15
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Oui mais encore? Arguments par valeur, par référence, constante/non constante, rvalue/lvalue?
    Fais voir le code

  16. #16
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Pour information, son code est compilé avec un g++ 4.8.*, en -std=c++1y, donc en préversion de C++14.
    je le sais, je travaille dessus avec lui, quand j'ai du temps
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  17. #17
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    J'en serai d'ailleurs leternellement reconnaissant

    Comme je disais, j'ai remplacé la paire de coordonnées par une classe coordonnées, ce qui a réglé le problème.
    Je vous donnerais bien le code, mais comme ça a changé je ne suis pas sûr de pouvoir recréer le problème assez rapidement Dès que j'ai du temps, je rebricole le code pour regénérer l'erreur, promis (7 ans de damnation compilatoire si je ne tiens pas cette promesse) !

    Je mets le sujet en résolu, je le dé-résoluerai bientôt pour revenir dessus.

    Merci encore à vous tous pour vos réponses !
    Le débutant, lui, ignore qu'il ignore à ce point, il est fier de ses premiers succès, bien plus qu'il n'est conscient de l'étendue de ce qu'il ne sait pas, dès qu'il progresse en revanche, dès que s'accroît ce qu'il sait, il commence à saisir tout ce qui manque encore à son savoir. Qui sait peu ignore aussi très peu. [Roger Pol-Droit]
    Github
    Mon tout premier projet: une bibliothèque de simulation de génétique des populations

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Boucle for dans un script cmd
    Par nicolas.ganache dans le forum Développement
    Réponses: 4
    Dernier message: 19/07/2004, 16h07
  2. Réponses: 3
    Dernier message: 06/07/2004, 10h21
  3. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 19h21
  4. [Swing][boucles] for, do, if .....comment faire simple?
    Par chastel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/05/2004, 22h49
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo